lix/tests/unit/libexpr
sugar🍬🍭🏳️‍⚧️ 447212fa65 libexpr: Replace regex engine with boost::regex
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: Ieb0eb9e270a93e4c7eed412ba4f9f96cb00a5fa4
2024-08-22 03:17:55 +02:00
..
value libexpr/print: do not show elided nested items when there are none 2024-07-18 18:41:34 +02:00
derived-path.cc Move tests to separate directories, and document 2023-12-01 13:05:03 -05:00
error_traces.cc Merge pull request #9925 from 9999years/fmt-cleanup 2024-03-09 07:00:13 -07:00
expr-print.cc add an impl of Expr::show for ExprInheritFrom that doesn't crash 2024-07-04 15:55:38 -06:00
flakeref.cc Move tests to separate directories, and document 2023-12-01 13:05:03 -05:00
json.cc Move tests to separate directories, and document 2023-12-01 13:05:03 -05:00
primops.cc libexpr: Replace regex engine with boost::regex 2024-08-22 03:17:55 +02:00
search-path.cc Move tests to separate directories, and document 2023-12-01 13:05:03 -05:00
trivial.cc libexpr: Deprecate URL literals 2024-08-17 20:31:57 +02:00