[[b2.history]]
= History

== Version 4.2.0

This release is predominantly minor fixes and cleanup of the engine. In
particular the bootstrap/build process now clearly communicates C++11
requirement.

* Add `saxonhe_dir` action.
  -- _Richard Hodges_
* Add CI testing for historical Boost versions on Windows MSVC.
  -- _Rene Rivera_
* Check for C++11 support when building engine. Including an informative
  error message as to that fact.
  -- _Rene Rivera_
* Update Jam grammar parser with latest `bison` version.
  -- _Rene Rivera_
* Allow root `b2 b2` engine build to work even if `bison` grammar generator
  is not available.
  -- _Rene Rivera_
* Warning free engine build on at least Windows, macOS, and Linux.
  -- _Rene Rivera_
* Sanitize Windows engine build to consistently use ANSI Win32 API.
  -- _Mateusz Loskot_
* Fix b2 engine not exiting, with error, early when it detects a Jam language
  error.
  -- _Mateusz Loskot_
* Print help for local modules, i.e. current dir.
  -- _Thomas Brown_

== Version 4.1.0

Many small bug fixes in this release. But there are some new features also.
There's now an `lto` feature to specify the use of LTO, and what kind. The
existing `stdlib` feature now has real values and corresponding options
for some toolsets. But most importantly there's new documentation for all
the features.

Thank to all the users that contributed to this release with these changes:

* Support for VS2019 for intel-vin 19.0. -- _Edward Diener_
* Fix compiler warnings about `-std=gnu11` when building `b2` on Cygwin. --
  _Andrey Semashev_
* Add example of creating multiple PCHs for individual headers.
  -- _Rene Rivera_
* Add QNX threading flags for GCC toolset. -- _Aurelien Chartier_
* Fix version option for IBM and Sun compilers when building b2 engine
  -- _Juan Alday_
* Rename `strings.h` to `jam_strings.h` in `b2` engine to avoid clash with
  POSIX `strings.h` header. -- _Andrey Semashev_
* Add options for `cxxstd` feature for IBM compiler. -- _Edward Diener_
* Many fixes to intel-win toolset. -- _Edwad Diener_
* Add z15 instruction set for gcc based toolsets. -- _Neale Ferguson_
* Improve using MSVC from a Cygwin shell. -- _Michael Haubenwallner_
* Add LTO feature and corresponding support for gcc and clang toolsets.
  -- _Dmitry Arkhipov_
* Fix errors when a source doesn't have a type. -- _Peter Dimov_
* Add documentation for features. -- _Dmitry Arkhipov_
* Enhance `stdlib` feature, and corresponding documentation, for clang, gcc,
  and sun toolsets. -- _Dmitry Arkhipov_
* Install rule now makes explicit only the immediate targets it creates.
  --  _Dmitry Arkhipov_
* Add armasm (32 and 64) support for msvc toolset. -- _Michał Janiszewski_
* Fix errors with custom un-versioned gcc toolset specifications.
  -- _Peter Dimov_
* Allow arflags override in gcc toolset specifications. -- _hyc_
* Fix founds libs not making it to the clang-win link command line.
  -- _Peter Dimov_
* Updated intel-win toolset to support for Intel C++ 19.1.
  -- _Edward Diener_
* Detect difference between MIPS32 and MIPS64 for OS in b2 engine.
  -- _YunQiang Su_

== Version 4.0.1

This patch release fixes a minor issue when trying to configure toolsets that
override the toolset version with a non-version tag. Currently this is only
known to be a problem if you: (a) configure a toolset version to something
like "`tot`" (b) in Boost 1.72.0 when it creates cmake install artifacts.
Fix for this was provided Peter Dimov.

== Version 4.0.0

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 {CPP} 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 {CPP} code base in both the
engine and build system. Some changes in this start:

* Requires {CPP} 11 to build engine.
* Simplified build scripts to make it easier to maintain.
* Building with {CPP} 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. -- _Thomas Brown_
* 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.
