1.13.0

83 views
Skip to first unread message

Jan Niklas Hasse

unread,
Jun 13, 2025, 1:48:32 PMJun 13
to ninja-build
Hi,

I want to release 1.13.0 from current master. Have a look at https://github.com/ninja-build/ninja/compare/v1.12.1...1b52e21f4b0183ec5689da830b86300398dffc2a for changes. Any objections, last minute changes?

Brad King

unread,
Jun 13, 2025, 2:23:09 PMJun 13
to Jan Niklas Hasse, ninja-build
On Fri, Jun 13, 2025 at 1:48 PM Jan Niklas Hasse wrote:
> I want to release 1.13.0 from current master.
> Any objections, last minute changes?

PR 2200 for cl /sourceDependencies support was part of
the 1.13.0 milestone. It was closed in favor of PR 2600,
but the latter was never added to the milestone.

-Brad

Brad King

unread,
Jun 13, 2025, 4:14:19 PMJun 13
to Jan Niklas Hasse, ninja-build
On Fri, Jun 13, 2025 at 2:22 PM Brad King wrote:
> PR 2200 for cl /sourceDependencies support was part of
> the 1.13.0 milestone. It was closed in favor of PR 2600,
> but the latter was never added to the milestone.

Given the feedback that Nico just posted there, I think you
should proceed with 1.13.0 without waiting for that work.

Thanks,
-Brad

David Turner

unread,
Jun 16, 2025, 5:19:59 AMJun 16
to Brad King, Jan Niklas Hasse, ninja-build
I manually reviewed the changes locally, and everything looks good to me. Thank you!

It would be nice to add a note in the CONTRIBUTING.md file specifying that Ninja is targeting C++14 (not a release blocker in any way though).

Btw, I believe the reason we use an old version of GTest because we didn't switch to C++14 yet when the dependency was added.
Versions 1.13 to 1.16 require C++14, but the newest 1.17 requires C++17. Plus they have plans to depend on Abseil in the future.

- Digit

--
You received this message because you are subscribed to the Google Groups "ninja-build" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ninja-build...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/ninja-build/CA%2BgQCGF7%2BNBt4um6iNpMtX-9PYbPpVREJa-Zo9heh1_xz-kAZA%40mail.gmail.com.

Jan Niklas Hasse

unread,
Jun 18, 2025, 8:30:57 AMJun 18
to ninja-build
Thank you both! I've just released 1.13.0 on GitHub: https://github.com/ninja-build/ninja/releases/tag/v1.13.0

On Monday, 16 June 2025 at 11:19:59 UTC+2 David Turner wrote:
I manually reviewed the changes locally, and everything looks good to me. Thank you!

It would be nice to add a note in the CONTRIBUTING.md file specifying that Ninja is targeting C++14 (not a release blocker in any way though).

The Google C++ Styleguide somewhat implies C++14: "Consider portability to other environments before using features from C++17 and C++20 in your project."
This sounds like a good policy to me, so I didn't add anything explicit mentioning of the C++ standard in the CONTRIBUTING.md. But if people get confused or ask for it we can add it later.
 
Btw, I believe the reason we use an old version of GTest because we didn't switch to C++14 yet when the dependency was added.
Versions 1.13 to 1.16 require C++14, but the newest 1.17 requires C++17. Plus they have plans to depend on Abseil in the future.

Ah I see! Let's use 1.16 then - it's only the fallback if there's no system GTest anyway.

Abseil hm ... could we use some of their stuff instead of the current third party usage (i.e. hash map, command line parsing)?

-
Jan

David Turner

unread,
Jun 18, 2025, 3:29:35 PMJun 18
to Jan Niklas Hasse, ninja-build
On Wed, Jun 18, 2025 at 2:31 PM Jan Niklas Hasse <jha...@gmail.com> wrote:
Thank you both! I've just released 1.13.0 on GitHub: https://github.com/ninja-build/ninja/releases/tag/v1.13.0

On Monday, 16 June 2025 at 11:19:59 UTC+2 David Turner wrote:
I manually reviewed the changes locally, and everything looks good to me. Thank you!

It would be nice to add a note in the CONTRIBUTING.md file specifying that Ninja is targeting C++14 (not a release blocker in any way though).

The Google C++ Styleguide somewhat implies C++14: "Consider portability to other environments before using features from C++17 and C++20 in your project."
This sounds like a good policy to me, so I didn't add anything explicit mentioning of the C++ standard in the CONTRIBUTING.md. But if people get confused or ask for it we can add it later.
 
Btw, I believe the reason we use an old version of GTest because we didn't switch to C++14 yet when the dependency was added.
Versions 1.13 to 1.16 require C++14, but the newest 1.17 requires C++17. Plus they have plans to depend on Abseil in the future.

Ah I see! Let's use 1.16 then - it's only the fallback if there's no system GTest anyway.

Looks good to me!
 
Abseil hm ... could we use some of their stuff instead of the current third party usage (i.e. hash map, command line parsing)?

Unfortunately, I fear Abseil will be problematic for a project like Ninja that tries to be portable and keep its dependencies to a minimum: 

- It is now a massive library. In the past I tried to carve a usable subset of it (when I only needed less than 5% of its features) and that turned out to be impossible (due to lots of coupling between internal classes). So it's essentially all or nothing or maintain a fork.

- It is developed "at head", which means no ABI stability, source stability is not guaranteed everywhere, and pushing requirements for relatively recent compiler features, system versions, and language standards.

- Building it requires CMake or Bazel, so bootstrapping Ninja with configure.py would become difficult or impossible if Ninja depended on it.

- Upstream doesn't support BSDs at all, but BSD distributions usually come with their ports (applying custom patches). It's just annoying that you cannot download an upstream source archive and build it directly on these systems.

More info in their FAQ at: https://chromium.googlesource.com/chromium/src/+/HEAD/third_party/abseil-cpp/FAQ.md

-
Jan

--
You received this message because you are subscribed to the Google Groups "ninja-build" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ninja-build...@googlegroups.com.

David Turner

unread,
Jun 18, 2025, 3:32:34 PMJun 18
to Jan Niklas Hasse, ninja-build
On Wed, Jun 18, 2025 at 2:31 PM Jan Niklas Hasse <jha...@gmail.com> wrote:

The Google C++ Styleguide somewhat implies C++14: "Consider portability to other environments before using features from C++17 and C++20 in your project."
This sounds like a good policy to me, so I didn't add anything explicit mentioning of the C++ standard in the CONTRIBUTING.md. But if people get confused or ask for it we can add it later.
 
I forgot to mention that the Google C++ Style Guide is updated (slowly, conservatively, but surely) over time. So just referencing it doesn't guarantee clarity on things like C++ standard version to support and other subtle details :-)

Reply all
Reply to author
Forward
0 new messages