Repository navigation
Releases
Iris C++ 0.1.0
- Add the C++23 library
iris, a native port of Gecode 6.5.0's reader that
does not depend on Gecode.iris::Specparses and loads reader specs and
reads and catalogs data files and text; each operation that throws
iris::Errorhas atry_variant that returnsstd::expected. - Add
iris::Data, whose accessors returnstd::spanrows and
std::string_viewstrings,iris::ValueReffor inspecting values without
misuse, andData::dzn()for MiniZinc data. Reading enforces the work
budgets of the Iris Language Specification. - Give
iris::Errorevery part of a diagnostic, from the code and locations
to the excerpt, context, record path and earlier rejection, as
iris::ErrorDetails, and render the diagnostic of the Specification from
what(). - Allocate from a
std::pmr::memory_resourcethat the caller supplies, so
that a host such as Gecode can give the library its heap. - Add typed handles,
iris::Field, whichdata.getandparams.settake,
and print them for any reader spec withiris gen --lang cpp. - Add the spec builder,
<iris/build.hpp>, which writes reader specs from C++
statements, checks pattern placeholders at compile time, and names the
std::source_locationof the statement in its errors and in the errors of
reading a built spec. - Install a CMake package that
find_package(iris)finds, with the target
iris::iris, and support FetchContent andadd_subdirectory. Each release
publishes a source archive,iris-cpp-VERSION.tar.gz, with its SHA-256
checksum. - Test with GCC 14, Clang 20, Apple Clang and MSVC, under ASan, UBSan and
TSan, with libFuzzer, and against the whole conformance suite.
0.1.0 - 2026-11-06
Release Notes
Library
-
Add the
gecode-iris-gencrate, which generates spec builder programs
from reader specs, with a Rust backend.iris gen builder --lang rust SPEC
prints one. -
Add
iris-conformance compare, which compares two reader specs as syntax
trees, and a test that round-trips every accepted reader spec of the
conformance cases and format library through the Rust builder. -
Add the unpublished
iris-wasmbrowser boundary for reading, checking and
formatting, with exact integer table values and bounded output previews. -
Add streaming
Data::write_json; preserveto_jsonand its canonical bytes. -
Add validated column constructors and views to gecode-iris-core:
Value::from_ints,
from_floatsandfrom_strings,Value::leavesandlevels,Entry::new,
andData::from_entries, which returnColumnErrorfor malformed columns or
duplicate names. -
Add the unpublished
iris-jscrate, the WebAssembly boundary of the
TypeScript package, with a parsed-spec handle and a binary data transfer. -
Share source diagnostic and formatter rendering through
gecode-iris-sema, keeping
gecode_iris_cli::render_erroravailable as a re-export. -
Add
gecode_iris::iris!, which checks an inline or file reader spec at
compile time, reports its first error as a compile error with the code and
theiris checktext, and expands to aSpec. The newgecode-iris-macroscrate
implements it without depending ongecode-iris-core. -
Add
gecode_iris::build, the spec builder of the newgecode-iris-buildcrate. It
builds any Iris 0.1 reader spec from typed handles, prints deterministic text
and parses it withSpec::parse;pattern!writes line patterns. -
Point builder errors at the caller's code. Every statement of
gecode_iris::buildrecords its call site with#[track_caller], and
BuildErrorshows the language code and message, the line of emitted text and
the call site.Error::call_sitegives the call site of a failure while
reading a built spec, through the newCallSitesmap; a spec parsed from text
has none, and its errors are unchanged. -
Add typed access:
Data::getandData::try_getread through aHandle, and
ValueRefgainsas_floats,as_strs,len,is_empty,get,rowand
rows.Spec::sourcereturns the text of a spec, andParams::setaccepts a
handle and a formatted value. -
Implement Iris 0.1 parsing, name resolution, type and shape analysis, reading,
and expression evaluation, including arrays, repeats, line patterns,
sections, checks over records, parameters, instances, and catalogs. -
Provide a lossless, error-tolerant syntax tree and source diagnostics with
stable error codes, input locations, and record paths for failed checks. -
Expose the reader through
gecode-iris, with columnar data, zero-copy row
slices, canonical JSON, and MiniZinc dzn output. -
Enforce language work budgets and support host limits and cancellation;
distinguish language diagnostics, host failures, and invalid data access.
CLI and language server
- Add
iris check,read,list, andconformance, with summary, JSON, and
dzn output, parameters, instance selection, and documented exit statuses. - Add
iris fmtwith EditorConfig line widths, recursive directory formatting,
standard input, check mode, and unified diffs. - Add
iris lspwith diagnostics, definition and reference navigation, rename,
hover, completion, inlay hints, symbols, folding, semantic tokens, document
and range formatting, and live reading of sample files.
Conformance, performance, and distribution
- Provide an independent conformance runner and the Rust
iris-driver; pass
the full Iris 0.1 suite and format cases, alongside pinned Gecode checks in CI. - Add parser and reader fuzzing, formatter equivalence checks, and benchmarks.
Meet the pinned Gecode reference's speed on the documented 100 MB DIMACS
comparison. - Prepare cargo-dist CLI archives and installers for Linux, macOS, and Windows
underrust-vtags. Homebrew publication remains disabled. - Prepare the ten
gecode-iriscrates for crates.io, with metadata, versioned
internal dependencies and the license text.iris-driver,iris-wasm,
iris-jsand the fuzz crate stay unpublished. Set the minimum supported Rust
version to 1.88 and document API stability.
Install Iris 0.1.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Gecode/iris/releases/download/rust-v0.1.0/rust-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/Gecode/iris/releases/download/rust-v0.1.0/rust-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install Gecode/tap/irisDownload Iris 0.1.0
| File | Platform | Checksum |
|---|---|---|
| rust-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| rust-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| rust-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rust-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| rust-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |