[[b2.history]]
= History

== Version 4.3.0

There are many invidual fixes in this release. Many thanks for the
contributions. Special thanks to Nikita for the many improvements to msvc
and general plugging of support holes in all the compilers.

There are some notable new features from Dmitry, Edward, and Nkita:

* *New:* Add `force-include` feature to include headers before all sources.
  -- _Nikita Kniazev_
* *New:* Partial support for Embarcadero C++ compilers based on clang-5.
  -- _Edward Diener_
* *New:* Implement configurable installation prefixes that use features.
  -- _Dmitry Arkhipov_
* *New:* Add `translate-path` feature. The translate-path feature allows for
  custom path handling, with a provided rule, on a per target basis. This can
  be used to support custom path syntax.
  -- _René Ferdinand Rivera Morell_
* *New:* Add portable B2 system install option. This allows the b2 executable
  and the build system files to live side by side. And hence to be (re)located
  anywhere on disk. Soon to be used to supports Windows and other installers.
  This removes the need for the `boost-build.jam` file for bootstrap. Making
  it easier for users to get started.
  -- _René Ferdinand Rivera Morell_
* Unbreak building from VS Preview command prompt.
  -- _Marcel Raad_
* Fix compiler version check on macOS darwin toolset.
  -- _Bo Anderson_
* Remove pch target naming restriction on GCC.
  -- _Nikita Kniazev_
* Select appropriate QNX target platform.
  -- _Alexander Karzhenkov_
* Various space & performance improvements to the b2 engine build on Windows.
  -- _Nikita Kniazev_
* Fill extra and pedantic warning options for every compiler.
  -- _Nikita Kniazev_
* Include OS error reason for engine IO failures.
  -- _Nikita Kniazev_
* Use /Zc:inline and /Zc:throwingNew flags for better language conformance.
  -- _Nikita Kniazev_
* Add cxxstd value 20 for C++20.
  -- _Andrey Semashev_
* Parallel B2 engine compilation on MSVC.
  -- _Nikita Kniazev_
* Updated instruction-set feature with new x86 targets.
  -- _Andrey Semashev_
* Pass /nologo to rc on Windows compilers.
  -- _Nikita Kniazev_
* Fixed negation in conditional properties.
  -- _Nikita Kniazev_
* Remove leftover manifest generation early exiting.
  -- _Nikita Kniazev_
* Fix timestamp delta calculation.
  -- _Nikita Kniazev_
* Add missing assembler options to clang-win.jam, to enable Context to build.
  -- _Peter Dimov_
* Updated scarce `:chars` documentation with `:BS` example.
  -- _Nikita Kniazev_
* Fix link statically against boost-python on linux.
  -- _Joris Carrier_
* Ongoing cleanup of engine build warnings.
  -- _René Ferdinand Rivera Morell_
* Allow self-testing of toolsets that use response files.
  -- _René Ferdinand Rivera Morell_
* Port `Jambase` to native C++. Hence removing one of the oldest parts of the
  original Jam bootstrap process.
  -- _René Ferdinand Rivera Morell_

== 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.
  -- _René Ferdinand Rivera Morell_
* Check for C++11 support when building engine. Including an informative
  error message as to that fact.
  -- _René Ferdinand Rivera Morell_
* Update Jam grammar parser with latest `bison` version.
  -- _René Ferdinand Rivera Morell_
* Allow root `b2 b2` engine build to work even if `bison` grammar generator
  is not available.
  -- _René Ferdinand Rivera Morell_
* Warning free engine build on at least Windows, macOS, and Linux.
  -- _René Ferdinand Rivera Morell_
* 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.
  -- _René Ferdinand Rivera Morell_
* 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. -- _René Ferdinand Rivera Morell_
* 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.
