forked from lix-project/lix
sugar🍬🍭🏳️⚧️
447212fa65
This avoids C++'s standard library regexes, which aren't the same
across platforms, and have many other issues, like using stack
so much that they stack overflow when processing a lot of data.
To avoid backwards and forward compatibility issues, regexes are
processed using a function converting libstdc++ regexes into Boost
regexes, escaping characters that Boost needs to have escaped, and
rejecting features that Boost has and libstdc++ doesn't.
Related context:
- Original failed attempt to use `boost::regex` in CppNix, failed due to
boost icu dependency being large (disabling ICU is no longer necessary
because linking ICU requires using a different header file,
`boost/regex/icu.hpp`): https://github.com/NixOS/nix/pull/3826
- An attempt to use PCRE, rejected due to providing less backwards
compatibility with `std::regex` than `boost::regex`:
https://github.com/NixOS/nix/pull/7336
- Second attempt to use `boost::regex`, failed due to `}` regex failing
to compile (dealt with by writing a wrapper that parses a regular
expression and escapes `}` characters):
https://github.com/NixOS/nix/pull/7762
Closes #34. Closes #476.
Change-Id:
|
||
---|---|---|
.. | ||
rl-next | ||
src | ||
theme | ||
anchors.jq | ||
book.toml | ||
change-authors.yml | ||
custom.css | ||
generate-builtin-constants.nix | ||
generate-builtins.nix | ||
generate-deps.py | ||
generate-features-shortlist.nix | ||
generate-features.nix | ||
generate-manpage.nix | ||
json-to-tree.py | ||
meson.build | ||
process-includes.sh | ||
quote-literals.xsl | ||
rclone.conf | ||
redirects.js | ||
render-manpage.sh | ||
substitute.py | ||
utils.nix |