- Added gcc-12 and clang-13 through 15 jobs.
- Added C++23 testing for gcc and clang on Linux.
- Updated clang version for UBSAN job.
- Updated Ubuntu version for clang jobs to avoid having to use external APT
repository.
- Updated python package installation for compatibility with Ubuntu 22.04.
Apparently, std::codecvt::do_length in libstdc++ from gcc 11.2 accesses
input characters outside the input range if max is specified larger than
the input range. This causes buffer overflow and a crash. Use the input
range size as the max limit, which should have the same effect as the
previous hardcoded limit.
gcc bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105857
This removes one dependency on Boost.MPL and should resolve compiler warnings
coming from mpl::integral_c definition (integral_c defines typedefs for
previous and next values, which cannot be deduced for enums).
The manipulator allows to inject user's function into a stream output
expression. The manipulator will pass a reference to the stream to
the user's function as the first parameter, optionally followed by
additional arguments passed to the manipulator construction.
Previously, text_file_backend would generate a new file name when the file
name pattern contained a file counter placeholder, which prevented appending
to the file. Appending was only possible when the active file name was
stable across process restarts (effectively, this prohibited the file counter
to be used in the active file name).
This commit adds support for appending in such configuration. The file
collector has been updated to return the last found file counter during
filesystem scanning, and the sink backend doesn't increment it when the initial
file is opened, when appending is enabled, and when the file to be opened
exists and, if file collector is used, is in the target storage of the file
collector. In all other cases the file counter is incremented, which leaves
the behavior unchanged.
Closes https://github.com/boostorg/log/issues/179.
This prevents the file counter from being reset to zero if scan_for_files
is called multiple times, and subsequent calls don't find any new files.
Reported in https://github.com/boostorg/log/issues/179.
In Ubuntu 20.04 there appeared an updated version of the
software-properties-common package in focal-updates, which ships a newer
apt-add-repository version that doesn't support -P/-S/-U command line arguments.
Since we cannot rely on package version checks to determine apt-add-repository
capabilities, we have to parse its --help output instead.
Also, made source list processing more protected against spaces.
Boost.System and Boost.DateTime are header-only now. We used to include
Boost.System config header to auto-link with it (which it no longer does)
and manually auto-link Boost.DateTime. The latter caused a problem with
partial Boost checkout and build/install, when the enabled dependencies were
derived from the Boost.Log Jamfile, which does not contain a dependency on
DateTime.
Closes https://github.com/boostorg/log/issues/166.
C++20 removed argument type typedefs in standard function objects, which made
it impossible to deduce the attribute value type from the standard function
objects. This caused compilation errors with VS2022 in C++20 mode.
Use inline asm instead of _mm256_broadcastsi128_si256 to work around issues:
- gcc 4.7 is missing _mm256_broadcastsi128_si256 declaration in immintrin.h.
- gcc 4.8 generates vmovdqu+vinserti128 instead of a single vbroadcasti128.
- clang up until 4.0 generates vmovdqu+vinserti128 or worse.
Use byte shuffle instead of arithmetics and masking to convert half-bytes
to characters.
Since the new algorithm more heavilly relies on pshufb, and it is slow
on some older Intel Atom CPUs, retain the old implementation and use it
when we know pshufb is slow. We might drop it eventually.
When settings parsers were disabled by a config macro, boost_log_setup would
be empty, and MSVC linker would produce no library at all. This broke
installing Boost.Log, as Boost.Build would expect a library file to be present.
We're adding a dummy export from the library as a workaround, so that the
library is always created, even if empty. This workaround should be considered
temporary, until we can disable the library proper after a Boost.Build bug
is fixed:
https://github.com/bfgroup/b2/issues/104
Closes https://github.com/boostorg/log/issues/164.
Closes https://github.com/boostorg/log/pull/165.