Skip to content

Update for Boost 1.93 - #279

Merged
jefftrull merged 10 commits into
masterfrom
develop
Oct 26, 2026
Merged

jefftrull merged 10 commits into
masterfrom
develop

Conversation

@jefftrull

Copy link
Copy Markdown
Collaborator

All changes to develop since 1.92
Still missing for release: ChangeLog update

martis42 and others added 10 commits October 26, 2026 10:39
Process these two keywords in the same manner expand_macro handles
object-like macros that expand to the name of a defined function-style
macro, i.e. defer processing until the scanner can catch up.

Also, add appropriate unit tests.

No tests are provided for function-like expansion to defined() because
it seems not to work in gcc and Clang, and is also UB.
Doing bitwise operations on enums of differing types was deprecated in
C++20 and forbidden in C++23; we are starting to encounter this in CI
Replace hacked `ci.yml` with a small configuration and a pointer to the reusable flow maintained by Boost.
Differences from the default file:

* b2_targets set to samples, test, tool and the library overall
* depinst instructed to search samples and tool subdirectories for dependencies
* MSVC jobs enabled (we will stop using Appveyor)
* windows+mingw/gcc disabled (due to a challenging filename in a test), along with early Clang versions
* Removed Appveyor build badges
Before this patch some language standards would set `__cplusplus`
properly and some not. Now all currently available C++ language standards
set `__cplusplus` correctly.
* Change variant setting for tests from debug to release

* Select the "release" variant for other targets (default is both debug and release)

This will speed CI and work around some PDB errors observed in Windows/MSVC builds
* Enable setting language standard C++14

We require an explicit C++14 mode so we can set `__cplusplus` correctly during
preprocessing of C++14 projects. Currently this switch is not used for other C++14
features, such as digit separators.

* Fix which tokens are use for lexer testing

- literal suffixes for `size_t` are a C++23 feature
- The `module` keyword is a C++20 feature

* Use C++14 flag when testing digit separators

- As noted above, however, the flag is not tested.
It's only used by the samples.
Boostdep scans the sources and possibly tests and will miss this if not
explicitely asked to include samples which may not be generally desired
and leads to uneccessary failures.
* Enable setting language standard C++26

boost.wave is not yet able to preprocess C++26 specific features like
`#embed`.
However, using the C++26 language mode allows preprocessing code which
requires `__cplusplus` to be set according to C++26. Also, adding the
boilerplate now makes it easier add later support for the C++26 specific
language features.

* Fix logic bug in macromap for C++23

While adding C++26 support we realized cpp_macromap has an existing bug
in C++23 mode. When using C++23 `BOOST_WAVE_SUPPORT_CPP2A` would be true,
but `need_cpp2a()` is false (also `need_cpp26` would be false now that we
added it). That means, we would not enter branches we are supposed to go
into. Adding an additional `need_cpp2b()` into the ro chains fixes this
bug.
@jefftrull

Copy link
Copy Markdown
Collaborator Author

Looking good. One CI failure associated with code coverage setup, not material.

@jefftrull
jefftrull merged commit f3806ef into master Oct 26, 2026
108 of 111 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants