Pint is a Declarative constraint-based Domain Specific Language (DSL) for intent expression. An introduction to the Pint language can be found in The Book of Pint.
Pint is built in Rust. To begin, install the Rust toolchain following instructions at https://www.rust-lang.org/tools/install. Then configure your Rust toolchain to use Rust stable:
rustup default stableIf not already done, add the Cargo bin directory to your PATH by adding the following line to ~/.profile and restarting the shell session.
export PATH="${HOME}/.cargo/bin:${PATH}"Clone the repository and build the Pint compiler and tooling:
git clone git@github.com:essential-contributions/pint.git
cd pint
cargo buildConfirm that pint built successfully:
cargo run --bin pint -- --helpUnit tests can be run using cargo test in the pint directory. However, it is recommended that the tests are run using the cargo-nextest package instead. To install cargo-nextest:
cargo install cargo-nextestTo run all unit tests using cargo-nextest:
cargo nextest run
cargo nestest run --all-featuresMost unit tests are written with the help of the expect_test crate. The following command can be used to automatically update all unit tests that use the expect_test::expect! macro such that they all pass.
env UPDATE_EXPECT=1 cargo nextest run
env UPDATE_EXPECT=1 cargo nestest run --all-featuresFor compiler changes that affect many unit tests, the command above allows updating all affected tests in one go. The command also helps with writing new tests: simply write your test by passing an empty string argument to the expect! macro (i.e. expect![""]) and then run the command above.