Skip to content

0.1.0 - 2026-11-06

Choose a tag to compare

@github-actions github-actions released this 06 Nov 12:27

Release Notes

Library

  • Add the gecode-iris-gen crate, 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-wasm browser boundary for reading, checking and
    formatting, with exact integer table values and bounded output previews.

  • Add streaming Data::write_json; preserve to_json and its canonical bytes.

  • Add validated column constructors and views to gecode-iris-core: Value::from_ints,
    from_floats and from_strings, Value::leaves and levels, Entry::new,
    and Data::from_entries, which return ColumnError for malformed columns or
    duplicate names.

  • Add the unpublished iris-js crate, 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_error available 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
    the iris check text, and expands to a Spec. The new gecode-iris-macros crate
    implements it without depending on gecode-iris-core.

  • Add gecode_iris::build, the spec builder of the new gecode-iris-build crate. It
    builds any Iris 0.1 reader spec from typed handles, prints deterministic text
    and parses it with Spec::parse; pattern! writes line patterns.

  • Point builder errors at the caller's code. Every statement of
    gecode_iris::build records its call site with #[track_caller], and
    BuildError shows the language code and message, the line of emitted text and
    the call site. Error::call_site gives the call site of a failure while
    reading a built spec, through the new CallSites map; a spec parsed from text
    has none, and its errors are unchanged.

  • Add typed access: Data::get and Data::try_get read through a Handle, and
    ValueRef gains as_floats, as_strs, len, is_empty, get, row and
    rows. Spec::source returns the text of a spec, and Params::set accepts 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, and conformance, with summary, JSON, and
    dzn output, parameters, instance selection, and documented exit statuses.
  • Add iris fmt with EditorConfig line widths, recursive directory formatting,
    standard input, check mode, and unified diffs.
  • Add iris lsp with 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
    under rust-v tags. Homebrew publication remains disabled.
  • Prepare the ten gecode-iris crates for crates.io, with metadata, versioned
    internal dependencies and the license text. iris-driver, iris-wasm,
    iris-js and 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 | sh

Install 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/iris

Download 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