Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Changelog

All notable changes will be documented here. The format is based on Keep a Changelog. Lilo adheres to Semantic Versioning.

Unreleased

v0.5.1 - 2025-11-05

Added

  • New spec export format: RTAMT.
  • New documentation site: https://docs.imiron.io/.
  • You can now create animation gif animations.
  • Projects are setup with a lilo.toml file, see Project Configuration.
  • Registration of system falsifiers in lilo.toml.
  • VSCode spec status now lists analysis.
  • Spec analysis in VSCode.
  • Run falsification engines from the spec analysis pane.

Changed

  • Better type errors for conflicting record construction/update.
  • LLM explanations are localised according to user's VSCode settings.
  • Unbound variable errors now include a list of in-scope variables with similar spellings.
  • System globals (signals and params) can have attributes, including docstrings.
  • The command JSON format has changed significantly, as is expected to be stable (backwards compatible) going forwards. In particular this uses system names, not filenames.
  • One can specify a param as null (JSON) to remove the default param values.
  • LLM spec generation will fail for under-specified specifications.
  • CLI interface is updated to work with modules.

v0.5.0 - 2025-10-14

Added

  • Default params: param foo: Float = 42 sets 42 as the default value of parameter foo.
  • Timeout attributes:
    #[timeout = 3]
    spec foo = ...
    
    will set the timeout to 3 seconds for analysis tasks on spec foo.
  • Warning for mismatched server/client versions.
  • Spec stubs:
    spec no_overheat
    
    creates a "spec stub" (an unimplemented spec). There is also a code action to suggest an implementation using the docstring, using AI.
  • Retry analysis with longer timeout: if an analysis times out, there is a code action to retry with a longer timeout.
  • Record features:
    • Record update (including deep)
    • Field punning.
    • Path construction and path update.
  • Warnings for unused defs, signals and params.
  • Code hierarchy in VSCode.
  • Modules: User can create modules (containing only def and type declarations), and import them.

Changed

  • VSCode code lenses resolve one at a time, which results in a much more responsive experience.