After even more years of development the landscape of build systems has changed
considerably, and so has the landscape of compilers. This version marks the
start of B2 transitioning to a C++ implementation. Initially this means that
the engine will be compiled as C++ source but that source is still the base
C implementation. Over time it will transform to a C++ code base in both the
engine and build system. Some changes in this start:
- Requires C++ 11 to build engine.
- Simplified build scripts to make it easier to maintain.
- Building with C++ optimizations gives an immediate performance improvement.
Other changes in this release:
- Add support for using prebuilt OpenSSL. -- Damian Jarek
- Define the riscv architecture feature. -- Andreas Schwab
- Add ARM64 as a valid architecture for MSVC. -- Marc Sweetgall
- Set coverage flags, from coverage feature, for gcc and clang. -- Damian Jarek
- Add s390x CPU and support in gcc/clang. -- Neale Ferguson
- Support importing pkg-config packages. -- Dmitry Arkhipov
- Support for leak sanitizer. -- Damian Jarek
- Fix missing /manifest option in clang-win to fix admin elevation for exes
- with "update" in the name. -- Peter Dimov
- Add freertos to os feature. -- tee3
- Default parallel jobs (-jX) to the available CPU threads. -- Rene Rivera
- Simpler coverage feature. -- Hans Dembinski
- Better stacks for sanitizers. -- James E. King III
WARNING: The default number of parallel jobs has changed in this release from
"1" to the number of cores. There are circumstances when that default can be
larger than the allocated cpu resources, for instance in some virtualized
container installs.
Continuously tested on:
- Linux Clang 3.5, 3.6, 3.7, 3.8, 3.9, 4, 5, 6, 7, 8
- Linux GCC 4.7, 4.8, 4.9, 5, 6, 7, 8, 9
- macOS Xcode 8.3.3, 9.0, 9.0.1, 9.1, 9.2, 9.3, 9.3.1, 9.4, 9.4.1, 10.0, 10.1, 10.2, 10.2.1
- Windows MinGW 8.1.0
- Windows VS 2013, 2015, 2017, 2019
--