IRIS

a superset of PureScript

Iris is a superset of the PureScript programming language, written in Rust. Tooling is vertically integrated into a single binary, such as feature-rich language analysis, a queryable build server, and skills for agents.

Show source
curl -fsSL https://iris-lang.com/install.sh | sh
src/Main.purs
module Main where import Prelude import Effect (Effect)import Effect.Console (log) main :: Effect Unitmain = do  log "Hello World"  log "Hello Iris"

Vertically integrated tooling.

  • Language analysis

    Completion, hover, scope-aware rename, references and typed-hole suggestions, served to your editor by the language server.

    $ iris lsp --stdio
  • Queryable build server

    iris watch keeps the project compiled in memory and answers queries for signatures, definitions, references and generated JavaScript.

    $ iris watch query search foldl
  • Skills for agents

    iris skills prints guides for coding agents that match the installed version of Iris, starting with querying iris watch.

    $ iris skills get watch

Builds in seconds, rebuilds in milliseconds.

  1. iris build11.6× faster than purs compile4.25s
  2. purs compile49.3s
  3. spago build66.3s

Cold builds start from an empty output directory. Hot rebuilds follow an edit to one module, which Iris recompiles in iris watch; it is timed from saving the file to the finished rebuild. Each tool builds acme, which depends on all 648 packages in Registry package set 81.1.0 (7,540 modules). Medians of five runs, and of 20 edits for iris watch, on an Apple M3 Pro (12 cores, 36 GB) with Iris 0.1.2-dev, purs 0.15.16 and Spago 1.0.4. purs compile runs on Spago's sources directly, excluding Spago's overhead. Run the benchmark yourself.

Language analysis in the editor.

The IRIS language server provides completion, navigation, diagnostics and code actions via the Language Server Protocol. See the demo on Visual Studio Code:

0:00 / 0:00

Semantic highlighting

Names are coloured by their role, such as declarations, record labels, module qualifiers and bindings.

Reading code

Writing code