A modern, delicious implementation of the Nix package manager, focused on correctness, usability, and growth — and committed to doing right by its community
Find a file
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
.github
bench
contrib
doc libexpr: Replace regex engine with boost::regex 2024-08-22 03:17:55 +02:00
lix-doc
maintainers rl-next: fix incorrect CL list syntax 2024-08-09 19:03:08 -07:00
meson build: limit clang-tidy concurrency and respect NIX_BUILD_CORES 2024-08-18 15:39:05 -07:00
misc build: remove expect as a dependency 2024-08-10 16:10:16 -07:00
nix-support
perl Merge changes Ib7c80826,I636f8a71,I67669b98 into main 2024-08-09 19:24:29 +00:00
releng
scripts
src libexpr: Replace regex engine with boost::regex 2024-08-22 03:17:55 +02:00
subprojects clang-tidy: write a lint for charptr_cast 2024-08-08 14:53:17 -07:00
tests libexpr: Replace regex engine with boost::regex 2024-08-22 03:17:55 +02:00
.clang-format
.clang-tidy clang-tidy: write a lint for charptr_cast 2024-08-08 14:53:17 -07:00
.dir-locals.el
.editorconfig
.envrc
.gitignore
.this-is-lix
CONTRIBUTING.md
COPYING
default.nix
docker.nix
flake.lock
flake.nix build: integrate clang-tidy into CI 2024-08-08 14:53:17 -07:00
justfile
meson.build meson: Don't use target_machine 2024-08-16 14:24:03 +00:00
meson.options
package.nix build: remove expect as a dependency 2024-08-10 16:10:16 -07:00
README.md README: clarify license to match documentation 2024-08-10 16:11:58 -07:00
shell.nix
treefmt.toml
version.json Update version to 2.92 2024-08-12 18:06:08 -07:00

Lix

Lix is an implementation of Nix, a powerful package management system for Linux and other Unix systems that makes package management reliable and reproducible.

Read more about us at https://lix.systems.

Installation

On Linux and macOS the easiest way to install Lix is to run the following shell command (as a user other than root):

$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install

For systems that already have a Nix implementation installed, such as NixOS systems, read our install page

Building And Developing

See our Hacking guide in our manual for instruction on how to to set up a development environment and build Lix from source.

Additional Resources

License

Lix is released under LGPL-2.1-or-later.