[[b2.history]]
= History

== Version 5.4.2

Fix detection of Visual Studio 2026 to account for non-native tools being
installed by default and hence conflicting with the native tools.

== Version 5.4.1

Fix error in path environment variables not being properly processed to split
on path separator.

== Version 5.4.0

This is the end of year release. Biggest new items are the detection of
Visual Studio 2026 (aka msvc145).

* *New*: Add initial support for {CPP}-26 Contracts for GCC based toolsets
  (like clang).
  -- _René Ferdinand Rivera Morell_
* *New*: Allow explicit target `triple` for `clang-linux` and `clang-darwin`.
  -- _Dmitry Arkhipov_
* *New*: Change documentation style to support light/dark user preference.
  -- _René Ferdinand Rivera Morell_
* *New*: Added the ability to escape the '$' character before '(' as "$$" which
  will allow using the "$()" and "$(())" expressions of bash, sh, and other
  shells.
  -- _Ivan Kotov_
* *New*: Added integration for vcpkg with distinct roots.
  -- _Dmitry Arkhipov_
* *New*: Add support for detecting and building with VS-2026 (AKA vs-18.0,
  aka msvc 14.5).
  -- _Miuna_, _Zangetsu_, _René Ferdinand Rivera Morell_
* Fix invoking asciidoctor on Windows.
  -- _René Ferdinand Rivera Morell_
* Fix, propagate `dll-path` to shared libraries.
  -- _Dmitry Arkhipov_
* Fix mpi compiler detection to detect not just the first one (`mpi++`).
  -- _Samuel Debionne_
* Fix flag options, that are not registered as args, not being recognized.
  Fixes `--show-libraries` in Boost build files.
  -- _Dmitry Arkhipov_
* Fix discovery and building with Python free-threaded variant.
  -- _Zhang Wen_
* Fix build issues with QNX compiolers.
  -- _"fragarian"_
* Add `libstdc++` to `stdlib` feature as the current naming for that std
  library.
  -- _Dmitry Arkhipov_
* Fix building when targetting WASM64 with emscripten.
  -- _Uilian Ries_
* Fix resolution of subprojects of rooted projects.
  -- _Dmitry Arkhipov_
* Fix crash when using `-d9` to output module debug stats.
  -- _René Ferdinand Rivera Morell_

== Version 5.3.3

* Fix `stdlib=libc++` feature being applied to compiles other than {CPP}.
  -- _Dmitry Arkhipov_
* Fix silently ignored argument parsing errors.
  -- _Dmitry Arkhipov_
* Fix not allowing "/" in paths for msvc version detection.
  -- _chausner_

== Version 5.3.2

Fix regression for handling of the `--command-database` option. The new command
line arguments parsing made the output to be reset and cleared causing nothing
to get output for the commands. Thanks to _Dmitry Arkhipov_ for the fix.

== Version 5.3.1

Fix backward incompatibility of `option.get` if an argument is not added with
`args.add-arg`. When such an argument isn't registered we fail to check `ARGV`
directly as a backup, for backward compatibility. This fixes that problem by
checking if an argument is registered, and if not falling back on the direct
`ARGV` check.

== Version 5.3.0

Biggest changes for this release is the creation of two new toolsets: `ibmcxx`
and `cc`. The former covers all the IBM compilers, and the latter is a generic
C compiler toolset.

* *New*: Replace the old `vacpp` and `xlcpp` with a new `ibmcxx` toolset that
  supports the old compilers and the new "IBM XL" and  "IBM Open XL" compilers.
  -- _René Ferdinand Rivera Morell_ and _Chris Ward_
* *New*: Add generic `cc` toolset for simply, direct, configuration of unknown
  C compiler toolsets (for example `tcc`).
  -- _René Ferdinand Rivera Morell_
* *New*: Add `args` module for common handling of both native and Jam side
  command line arguments.
  -- _René Ferdinand Rivera Morell_
* Fix command database output file path when an output dir is not given.
  -- _René Ferdinand Rivera Morell_
* Fix asciidoctor ignoring relevant features when building which caused invalid
  reuse of the target.
  -- _René Ferdinand Rivera Morell_
* Add documentation for clang and emscripten toolsets.
  -- _Nikita Kniazev_
* Fix doxygen tool to properly handle paths relative to the wording dir or
  absolute paths.
  -- _Dmitry Arkhipov_
* Fix staging path calculation when using install prefix's.
  -- _Dmitry Arkhipov_
* Make `toolset.using` preserve current project to allow for calling it in more
  contexts with minimal effort.
  -- _Dmitry Arkhipov_
* Updated cxxstd=latest for gcc and clang to account for {CPP} 26.
  -- _Andrey Semashev_
* Fix Building on Haiku OS which doesn't have `wait4`.
  -- _Fas Xmut_
* Rewrite the command like argument parsing to use the Lyra library. The result
  is that arguments from Jam and native are integrated and available with the
  built-in `-h` help.
  -- _René Ferdinand Rivera Morell_

WARNING: The `vacpp` and `xlcpp` have been removed in favor of `ibmcxx` as the
latter covers the same support.

== Version 5.2.1

This patch reverts the change to define `_HAS_EXCEPTIONS=0` for Dinkumware
std library. It has the undesired effect of changing the ABI. It's better for
user code to handle the combination of turning off exceptions while treating
warnings as errors, and getting warnings/errors from the std library by having
the users silence the warning themselves.

This patch also fixes the case of asking to initialize any msvc toolset
versions (`using msvc ;`) when there are already versions initialized. Instead
of erroring to say that a version is already in use, it considers the set
of already initialized msvc toolsets as satisfying the request to generally
initialize msvc.

== Version 5.2.0

Many fixes in this release from regular contributors Nikita and Dmitry. There
are a couple of new features.. First the ability to have `dll-path` in searched
libraries. Which makes it possible to better support system/external libraries.
The second new feature is the addition of generating `compile_commands.json`
for IDE and tool integration. That has a been a wish item for a long time.

* *New*: Add support for generating `compile_commands.json` command database
  for some IDE integration.
  -- _René Ferdinand Rivera Morell_
* *New*: Addition of a module (`db`) for structured data management. Has a
  `property-db` class that can write out as JSON data.
  -- _René Ferdinand Rivera Morell_
* *New*: Allow adding dll-path to usage requirements of searched libraries.
  Which makes it possible to adjust search paths for dynamic libs on the
  platform.
  -- _Dmitry Arkhipov_
* Fix incorrect recursive loading of modules when doing recursive importing of
  modules. The recursive loading would cause stack overflows.
  -- _René Ferdinand Rivera Morell_
* Default to building with Clang on FreeBSD and OpenBSD.
  -- _Nikita Kniazev_
* Fix Solaris/SunOS detection in engine for `OS=SUNOS` and `OS=SOLARIS`.
  -- _Nikita Kniazev_
* Allow some tools to be default initialized with `using` multiple times. The
  tools are `asciidoctor`, `fop`, `gettext`, `pkg-config`, `python`, `sass`,
  and `saxonhe`.
  -- _Dmitry Arkhipov_
* Fix using relevant features in ac module that would cause incorrect configure
  checks.
  -- _Dmitry Arkhipov_
* Fix application of -m31, -m32, -m64 for address model on certain hardware and
  avoid adding them when not supported, generally.
  -- _Nikita Kniazev_
* Fix incorrectly attaching manifest when not targeting Windows for engine
  bootstrap build.
  -- _Nikita Kniazev_
* Fix `embed-manifest-via=linker` for clang-win toolset.
  -- _Nikita Kniazev_
* Fix incorrect `unknown` OS name, to use correct `none`. Which is needed for
  correct emscripten toolset building.
  -- _Nikita Kniazev_
* Fix: For msvc toolset, register only the versions that have been asked to
  init.
  -- _Nikita Kniazev_
* Fix: Suppress spurious `1 file(s) copied.` message after every test.
  -- _Nikita Kniazev_
* Fix: Improve handling of install directories.
  -- _Dmitry Arkhipov_
* Fix: For msvc toolset, recognize Visual Studio 2022 v17.10.0, which uses
  toolchain version 14.40.33807.
  -- _Dmitry Andric_
* Fix: For msvc toolset, exception-handling=off should define
  `_HAS_EXCEPTIONS=0` for Dinkumware/MSSTL.
  -- _Nikita Kniazev_

== Version 5.1.0

This is mostly a bugfix release to account for issues impacting Boost Libraries.
There is one "big" change though. It can be rather difficult to find build
failures when running larger builds. To facilitate figuring out problems the
brief summary output at the end of a build is now less brief. It now includes
a *sorted* list of the targets that got skipped and failed. The output of those
lists mirrors the general skipped/failed items. Hence it's possible to search
for the same strings in the rest of the output quickly.

* *New*: Add listing of failed and skipped targets to end of build summary to
  make it easier to find what fails.
  -- _René Ferdinand Rivera Morell_
* *New*: Add `mpi.run-flags` to `mpi` toolset that allows for arbitrary flags
  applied to running mpi targets. This allows, for example, adding
  `--oversubscribe` flag to make it possible to run tests where the tasks are
  more than the nodes available.
  -- _René Ferdinand Rivera Morell_
* Fix spurious errors when the header scanning tries to scan empty file names.
  -- _René Ferdinand Rivera Morell_
* Make C/C++/ObjC include directive scanning pattern more strict to avoid
  trying to scan for empty file names.
  -- _Andrey Semashev_
* Fix mingw linker commands to always replace backslashes with forward slashes.
  -- _Christian Seiler_
* Fix QCC debug build flag. The QCC toolset was using an old, no longer
  supported, debug symbols option.
  -- _John McFarlane_

== Version 5.0.1

* Fix compile errors for older versions of GCC and Clang toolset for the engine.
  We now support building the engine with GCC 4.7 and Clang 3.6 onward.
  -- _René Ferdinand Rivera Morell_
* Fix `import-search` failing to find imports on Windows bacause of incorrect
  native vs. non-native path handling.
  -- _René Ferdinand Rivera Morell_
* Support cross-compile install of B2, using `target-os=xyz`.
  -- _René Ferdinand Rivera Morell_

== Version 5.0.0

This is a new era in B2. The drive of this new major version is to move the
core build system from being implemented in Jam to {CPP}. This initial release
is only a start in this move by having some minimal aspects implemented
in {CPP} using a new Jam/{CPP} native binding system. Even though this is a
major release, the goal is to still have backward compatibility for existing
project build files. But that backward compatibility is not guaranteed for
other Jam files.

* *New*: Support for Jam native variant values of string (original Jam value
  type), number (floating point numbers), and object (instances of classes).
  -- _René Ferdinand Rivera Morell_
* *New*: Port modules `class`, `errors`, `modules`, `regex`, `set`, `string`,
  and `sysinfo` to {CPP}.
  -- _René Ferdinand Rivera Morell_
* *New*: Port `bootstrap.jam` to {CPP} and instead use `build-system.jam` as
  key file to find build files.
  -- _René Ferdinand Rivera Morell_
* *New*: Add `require-b2` builtin rule to verify the B2 version a particular
  Jam file needs.
  -- _René Ferdinand Rivera Morell_
* *New*: Add `regex.grep` builtin that does parallel (where available) file
  content search with regex matching.
  -- _René Ferdinand Rivera Morell_
* *New*: Make parts of internals thread safe to support parallel built-ins.
  Currently includes Jam values, hash tables, and filesystem.
  -- _René Ferdinand Rivera Morell_
* *New*: Add `import-search` project rule to declare additional search paths
  for `import` that refer to searched project locations, or other directories.
  -- _René Ferdinand Rivera Morell_
* Fix consistent use of `OPT_SEMAPHORE` and documentation of `JAM_SEMAPHORE`.
  -- _Thomas Brown_
* Fix archive actions failing for mingw.
  -- _René Ferdinand Rivera Morell_

IMPORTANT: Building B2 with VisualStudio 2013, i.e. MSVC 12, is no longer
supported or tested. The effort to engineer workarounds for the missing {CPP}11
features became too much. And was taking away from other improvements.

== Version 4.10.1

* Silence warnings for using standard deprecated functions by Apple clang
  toolset in b2 build.
  -- _René Ferdinand Rivera Morell_

== Version 4.10.0

This release contains many bug fixes but along the way also cleanup and
refactoring of many toolsets, thanks to Nikita.

* *New*: Scan assembler files for C Preprocessor includes.
  -- _Nikita Kniazev_
* Fix: Inherit generator overrides from a base toolset.
  -- _Nikita Kniazev_
* *New*: Add linemarkers feature that on preprocessing targets changes behavior to
  emit/omit line directives like `+#line+` and `+#<linenum>+`.
  -- _Nikita Kniazev_
* Fix compiler name for QNX.
  -- _James Choi_
* Fix openssl name handling.
  -- _Dmitry Arkhipov_
* Fix clang-win assembler path deduction.
  -- _Nikita Kniazev_
* Fix toolset sub-feature requirements inheritance.
  -- _Nikita Kniazev_
* Unify compile and link of clang-linux toolset with gcc toolset.
  -- _Nikita Kniazev_
* Fix same directory pch header generation for msvc toolset.
  -- _Nikita Kniazev_
* Implement `--durations` which reports top targets by execution time.
  -- _Nikita Kniazev_
* Change clang-darwin to inherit from clang-linux and unify compile commands.
  -- _Nikita Kniazev_
* Fix clang-linux to not override RPATH_OPTION.
  -- _Nikita Kniazev_
* Fix inadvertently running configuration checks that shouldn't (as reported by
  Alexander Grund). By changing `<build>no` conditionals evaluation to short
  circuit.
  -- _Nikita Kniazev_
* Fix same toolset overrides (inherit-overrides).
  -- _Nikita Kniazev_
* *New*: Add using the C processors for assembly source files.
  -- _Nikita Kniazev_
* Many improvements and cleanup of internal testing.
  -- _Nikita Kniazev_
* Unify gcc and clang-linux soname option handling and disable it on Windows.
  -- _Nikita Kniazev_
* Unity gcc/mingw linking of shared and import libs.
  -- _Nikita Kniazev_
* Fix pdb generation ordering and naming issues.
  -- _Nikita Kniazev_
* Unify clang-darwin linking with gcc.
  -- _Nikita Kniazev_
* Fix mingw/msys/cygwin, winthreads/pthread inconsistencies to correct compiler
  flags.
  -- _Nikita Kniazev_
* Unify clang-vxworks by inheriting from clang-linux.
  -- _Nikita Kniazev_
* Don't store empty config cache and log.
  -- _Nikita Kniazev_
* Fix generator custom rule name inheritance. This affects cygwin/mingw linking.
  -- _Nikita Kniazev_
* Fix testing.execute=off to correct run-fail behavior.
  -- _Nikita Kniazev_
* Fix use-project with native paths.
  -- _René Ferdinand Rivera Morell_
* Fix msvc auto config version priority. Now msvc toolsets are configured in
  correct newest to oldest regardless of being found from the registry or not.
  -- _René Ferdinand Rivera Morell_
* *New*: Add support for automatic searching of external projects for global
  target and project references.
  -- _René Ferdinand Rivera Morell_

== Version 4.9.6

* Fix version check for winsdk on `clang-win` toolset.
  -- _Nikita Kniazev_

== Version 4.9.5

* Improve alternative match error message to include more context.
  -- _René Ferdinand Rivera Morell_
* Fix errors when doing `use-project` inside projects that get included from
  another `use-project`.
  -- _René Ferdinand Rivera Morell_
* Support native msvc compilers on ARM64.
  -- _Stephen Just_
* PCH fixes: fix msvc pch include dir; fix msvc pch header name; fix missing
  gcc `-ftemplate-depth` when building pch.
  -- _Nikita Kniazev_
* *New*: `clang-win` search for compiler executable in default install locations
  when it is not on found in `PATH`.
  -- _Nikita Kniazev_
* Fix `clang-win` to support versioned winsdk bin location.
  -- _Nikita Kniazev_

== Version 4.9.4

* Fix crash on some platforms/compilers from invalid garbage reads of varargs
  end marker being an `int` instead of a `nullptr`.
* Don't force Windows path separators for GCC when on Windows. As it confuses
  Cygwin GCC's relative include path handling.
  -- _René Ferdinand Rivera Morell_
* Added `common-requirements` to project declaration to shorthand as declaring
  the same for both `requirements` and `usage-requirements`.
  -- _René Ferdinand Rivera Morell_
* Add to pass in targets to project `explicit` rule to reduce duplication of
  `explicit` targets when there are many.
  -- _René Ferdinand Rivera Morell_
* Make coverage feature non-incidental and link-incompatible.
  -- _Thomas Brown_
* Use PATH-based lookup for `sh`. For things such as Gentoo Prefix, we want to
  use the Bourne shell from the prefix and not the potentially ancient version
  from the main system.
  -- _David Seifert_

== Version 4.9.3

* Updated cxxstd for 23 and 26 versions of recent gcc and clang. (#184)
  -- _Andrey Semashev_

== Version 4.9.2

* Fix too long msvc link actions.
  -- _René Ferdinand Rivera Morell_

== Version 4.9.1

* Fix bad calculation of initial dev-only path to bootstrap file within the
  b2 dev tree.
  -- _René Ferdinand Rivera Morell_
* Fix bad path calculation in final fallback for loading bootstrap file from
  path specified in boost-build rule.
  -- _René Ferdinand Rivera Morell_

== Version 4.9.0

This release has mostly internal cleanups and restructuring. The most
significant being: fixing all memory leaks, automatic build system
startup with the `boost-build` rule, the Jam Python interfaces, and
the unmaintained Python build system port.

* Add `minimal` and `debug` options for `optimization` feature.
  -- _René Ferdinand Rivera Morell_
* Add Rocket Lake, Alder Lake, Sapphire Rapids and Zen 3 instruction sets.
  -- _Andrey Semashev_
* Remove all, on-exit, memory leaks and fix all ASAN errors.
  -- _René Ferdinand Rivera Morell_
* Remove use of `boost-build.jam` as a initialization configuration file.
  -- _René Ferdinand Rivera Morell_
* Remove the incomplete build system port and Jam engine Python support
  extensions.
  -- _René Ferdinand Rivera Morell_
* Fix not being able to do combined arm+x86 builds on macOS with `darwin`
  and `clang` toolsets.
  -- _René Ferdinand Rivera Morell_
* Fix not being able to do cross-compiles on macOS with `clang` toolset.
  -- _René Ferdinand Rivera Morell_
* Fix errors when collecting a large number of object files with long names
  into a static archive for `gcc` and `clang` toolsets.
  -- _René Ferdinand Rivera Morell_
* Fix detection of QCC in `build.sh` engine build script.
  -- _René Ferdinand Rivera Morell_
* Fix missing assembly flags for intel-win toolset.
  -- _René Ferdinand Rivera Morell_
* Fix possible command line length limit exceeded error with msvc toolset for
  link actions.
  -- _René Ferdinand Rivera Morell_
* *New*: Add a "t" mode to `FILE_OPEN` built-in rule that gives one the
  contents of a file when evaluated.
  -- _René Ferdinand Rivera Morell_

WARNING: This release removes the use of `boost-build.jam` and the
`boost-build` rule for initialization. The `boost-build.jam` is still
searched for and loaded to not break existing operations. But is considered
deprecated and will be removed in a future release.

== Version 4.8.2

* Fix crash on exit cleanup of target lists caused by recursive destruction
  and incorrect target list pop unlinking.
  -- _René Ferdinand Rivera Morell_

== Version 4.8.1

* Fix build of engine on old macOS/XCode versions prior to 9.0 because of
  missing `EXIT_SUCCESS` and `EXIT_FAILURE` macros.
  -- _René Ferdinand Rivera Morell_

== Version 4.8.0

* *New:* Add support for LoongArch.
  -- _Zhang Na_
* Change engine build to use static Intel libs if available instead of C++
  runtime static libs to fix systems where the static {CPP} runtime is not
  available.
  -- _Alain Miniussi_
* Reorder msvc `cflags` and `cxxflags`, and add `compileflags`, to fix inability
  to override flags by users.
  -- _Peter Dimov_
* Don't quote `RPATH` on `clang-linux` to fix use of double-quotes to make it
  possible to use `$ORIGIN`.
  -- _Dimitry Andric_
* Fix `b2` executable detection on kFreeBSD.
  -- _Laurent Bigonville_
* Add `.ipp` extension to header scanning and a valid {CPP} file.
  -- _Jim King_
* Fix missing install targets when `build=no` is in source target usage
  requirements.
  -- _Dmitry Arkhipov_
* Add some future versions of {CPP} to `cxxstd` feature.
  -- _René Ferdinand Rivera Morell_
* Fix many memory leaks in engine.
  -- _René Ferdinand Rivera Morell_
* Change `abort`/`exit` calls to clean exception handling to allow for memory
  cleanup in engine.
  -- _René Ferdinand Rivera Morell_

== Version 4.7.2

* Fix errors configuring intel-linux toolset if icpx is not in the PATH but
  icpc is in the PATH.
  -- _Mark E. Hamilton_
* Add `cxxstd=20` to msvc toolset now that VS 2019 onward supports it.
  -- _Peter Dimov_

== Version 4.7.1

* Fix regression for linking with `clang-win` toolset.
  -- _Peter Dimov_

== Version 4.7.0

Many, many fixes and internal cleanups in this release. But also adding
auto-detection and bootstrap for VS 2022 preview toolset.

* *New:* Add vc143, aka VS2022, aka cl.exe 17.x toolset support. Includes
  building engine and automatic detection of the prerelease toolset.
  -- _Sergei Krivonos_
* Allow alias targets to continue even if `<build>no` is in the usage
  requirement. Which allows composition of alias targets that may contain
  optional targets, like tests.
  -- _Dmitry Arkhipov_
* Fix use of `JAMSHELL` in gcc toolset.
  -- _René Ferdinand Rivera Morell_
* Fix compiling b2 enging such that it works when run in cross-architecture
  emulation context. I.e. when running arm binaries in QEMU 64 bit host.
  -- _René Ferdinand Rivera Morell_
* Default to 64bit MSVC on 64 bit hosts.
  -- _Matt Chambers_
* Remove `/NOENTRY` option for resource only DLLs to allow correct linking.
  -- _gnaggnoyil_
* Fix redefinition error of `unix` when compiling engine on OpenBSD.
  -- _Brad Smith_
* Fix building with clang on iOS and AppleTV having extra unrecognized
  compiler options.
  -- _Konstantin Ivlev_
* Add missing Boost.JSON to `boost` support module.
  -- _Dmitry Arkhipov_
* Add arm/arm64 target support in clang-win toolset.
  -- _Volo Zyko_
* Avoid warnings about threading model for qt5.
  -- _psandana_
* Unify Clang and GCC PCH creation.
  -- _Nikita Kniazev_
* Move Objective-C support to GCC toolset.
  -- _Nikita Kniazev_
* Support values for instruction-set feature for Xilinx ZYNQ.
  -- _Thomas Brown_
* MIPS: add generic mips architecture.
  -- _YunQiang Su_
* Fix preprocessing on MSVC compiler.
  -- _Nikita Kniazev_

== Version 4.6.1

* Fix building b2 engine with cygwin64.
  -- _René Ferdinand Rivera Morell_
* Fix version detection of clang toolset from compiler exec.
  -- _Nikita Kniazev_

== Version 4.6.0

This release wraps up a few new features that make using some toolsets easier
(thanks to Nikita). It's now also possible to specify empty flags features on
the command line, like `cxxfalgs=`, and have those be ignored. This helps to
make CI scripts shorter as they don't need to handle those cases specially.
And as usual there are many bug fixes and adjustments. Thanks to everyone who
contributed to this release.

* *New:* Allow clang toolset to be auto-configured to a specific version by
  using `toolset=clang-xx` on the command line.
  -- _Nikita Kniazev_
* *New:* Include pch header automatically and on-demand on gcc and msvc toolset
  to mirror clang functionality.
  -- _Nikita Kniazev_
* *New:* Features that are narked as 'free' and 'optional' will now be ignored
  when the value specified on the command line is empty. Hence once can specify
  `cxxflags=` on the command line without errors.
  -- _René Ferdinand Rivera Morell_
* Preserve `bootstrap.sh` invoke arguments to forward to the `build.sh` script.
  -- _tkoecker_
* Remove use of `local` in `buils.sh` to be compatible with some, not fully
  capable, shells.
  -- _Tanzinul Islam_
* Workaround shell array ref error in `build.sh` on busybox shells.
  -- _tkoecker_
* Check for needing `-pthread` to build engine with gcc on some platforms.
  -- _tkoecker_
* Default to using clang on MacOS.
  -- _Stéphan Kochen_
* Add `/python//numpy` target to use as a dependency to communicate version
  specific properties.
  -- _Peter Dimov_
* Add default value for cxx and cxxflags from env vars `CXX` and `CXXFLAGS`
  when using the custom `cxx` toolset to build the engine.
  -- _Samuel Debionne_ and _René Ferdinand Rivera Morell_
* Fix detection of `intel-linux` toolset installation when only the compiler
  executable is in the `PATH`.
  -- _René Ferdinand Rivera Morell_
* Fix `b2` executable path determination for platforms that don't have a
  native method of getting the path to executables, like OpenBSD.
  -- _René Ferdinand Rivera Morell_
* Fix `property.find` error message.
  -- _Thomas Brown_

== Version 4.5.0

Some minor fixes to improve some old issues.

* Reenable ability of generators to return `property-set` as first item.
  -- _Andrew McCann_
* Fix examples to return 0 on success.
  -- _Mateusz Łoskot_
* Handle spaces in CXX path in `config_toolset.bat`.
* Fix Conan b2 generator link, and pkg-config doc build error.
  -- _René Ferdinand Rivera Morell_

== Version 4.4.2

This release is the first of the new home for B2 at Build Frameworks Group.

* Change references in documentation and sources of boost.org to point
  at equivalent bfgroup resources.
  -- _René Ferdinand Rivera Morell_
* New theme for B2 site and documentation.
  -- _René Ferdinand Rivera Morell_

== Version 4.4.1

Minor patch to correct missing fix for macOS default engine compiler.

* Fix engine build defaulting to gcc instead of clang on macOS/Xcode.
  -- _René Ferdinand Rivera Morell_

== Version 4.4.0

Along with a variety of fixes this version introduces "dynamic" response file
support for some toolsets. This means that under most circumstances, if
supported by the toolset, response files are not generated. Instead the
command is expanded to include the options directly.

* *New:* Add `response-file` feature to control the kind of response file usage
  in toolset action.
  -- _René Ferdinand Rivera Morell_
* *New:* Add `:O=value` variable modifier for `@()` expansion.
  -- _René Ferdinand Rivera Morell_
* *New:* Add `:<=value` and `:>=value` variable modifiers for prefix and postfix
  values *after* the complete expansion of variable references.
  -- _René Ferdinand Rivera Morell_
* *New:* Implement PCH on clang-win and clang-darwin.
  -- _Nikita Kniazev_
* *New:* Add support for Intel oneAPI release to intel-linux toolset.
  -- _René Ferdinand Rivera Morell_
* *New:* Add support for Intel oneAPI release to intel-windows toolset.
  -- _Edward Diener_
* Remove one at time linking limit. Once upon a time this was a performance
  tweak as hardware and software was not up to doing multiple links at once.
  Common setups are better equipped.
  -- _René Ferdinand Rivera Morell_
* Fix building engine with GCC on AIX.
  -- _René Ferdinand Rivera Morell_
* Support building engine as either 32 or 64 bit addressing model.
  -- _René Ferdinand Rivera Morell_
* Basic support for building b2 engine on GNU/Hurd.
  -- _Pino Toscano_
* Update "borland" toolset to bcc32c for building B2.
  -- _Tanzinul Islam_
* Ensure Embarcadero toolset name is only "embtc".
  -- _Tanzinul Islam_
* Adapt for Emscripten 2.0 change of default behavior for archives.
  -- _Basil Fierz_
* Fix path to bootstrap for back compat.
  -- _René Ferdinand Rivera Morell_
* Add missing BOOST_ROOT to boot strap search.
  -- _René Ferdinand Rivera Morell_
* Fix for engine compile on FreeBSD.
  -- _René Ferdinand Rivera Morell_
* Default MSVC to a native platform, and remove ambiguous implicit
  address-model ARM/ARM64 values.
  -- _Nikita Kniazev_
* Fix detection of MIPS32 for b2 engine build.
  -- _Ivan Melnikov_
* Enable building b2 engine with clang on Windows.
  -- _Gei0r_
* Fix building b2 engine with Intel Linux icpc.
  -- _Alain Miniussi_
* Rework `build.sh` to fix many bugs and to avoid use of common env vars.
  -- _René Ferdinand Rivera Morell_
* Remove limitation of relevant features for configure checks.
  -- _René Ferdinand Rivera Morell_
* Reformat configure check output to inform the variants of the checks in a
  reasonably brief form.
  -- _René Ferdinand Rivera Morell_
* Support building engine on Windows Bash with Mingw.
  -- _René Ferdinand Rivera Morell_

== 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.
