Changes
This release includes some fixes for Sail to Lean/Rocq, fixing some internal rewrites to reduce memory usage.
For users of custom Sail plugins, the behaviour of SAIL_PLUGIN_DIR has changed slightly. It now takes a list of directories separated by :, allowing multiple directories to be used.
Sail model configuration files are in JSON with Javascript-style comments. This caused problems for consumers that couldn't handle these comments. There is now a small builtin utility to strip these comments.
sail --tool strip_json --compact file.json
There is now a builtin mechanism to provide subcommands with their own custom arguments using the --tool argument. The Sail formatter has been modified to use this mechanism so sail --fmt is equivalent to sail --tool format. This affects the order in which arguments must be passed to sail --fmt - all formatting arguments must be passed after --fmt.
where is now reserved as a keyword for potential future use. We did not find any uses of this in existing Sail models, but it is a breaking change.
Binary packages
This release includes binary packages of Sail 0.20.3 for Linux, for both x86_64 (Intel/AMD) platforms and AArch64 (Arm). They are built using a Rocky Linux container, so it should work on a wide variety of Linux distributions with more recent glibc versions. There is also a package for x86_64 Windows.
The tarballs can be verified using GitHub artifact attestations with the GitHub CLI client, which should produce output like:
$ gh attestation verify sail-Linux-x86_64.tar.gz --owner rems-project
Loaded digest sha256:26b59bcab2d66e9f220d317dfe45f8b09170ed70e59a824553d6f525134d1ff6 for file://sail-Linux-x86_64.tar.gz
Loaded 1 attestation from GitHub API
The following policy criteria will be enforced:
- Predicate type must match:................ https://slsa.dev/provenance/v1
- Source Repository Owner URI must match:... https://github.com/rems-project
- Subject Alternative Name must match regex: (?i)^https://github.com/rems-project/
- OIDC Issuer must match:................... https://token.actions.githubusercontent.com
✓ Verification succeeded!
The following 1 attestation matched the policy criteria
- Attestation #1
- Build repo:..... rems-project/sail
- Build workflow:. .github/workflows/release.yml@refs/heads/sail2
- Signer repo:.... rems-project/sail
- Signer workflow: .github/workflows/release.yml@refs/heads/sail2
To use the binary release, simply extract the correct tarball for your platform and add the included bin directory to your $PATH variable. By default it should know where to find the included Sail libraries and plugins relative to this directory. We include a pre-compiled version of z3, so no additional dependencies should be required. Note that the sail-0.20.1.tbz file on this release is a snapshot of the source tree, and does not contain any built binaries.
If you want to move the binaries you will need to set the $SAIL_DIR environment variable to the included share/sail folder, and the $SAIL_PLUGIN_DIR variable to the share/libsail/plugins folder.