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.
curl -fsSL https://iris-lang.com/install.sh | shmodule 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 --stdioQueryable build server
iris watchkeeps the project compiled in memory and answers queries for signatures, definitions, references and generated JavaScript.$ iris watch query search foldlSkills for agents
iris skillsprints guides for coding agents that match the installed version of Iris, starting with queryingiris watch.$ iris skills get watch
Builds in seconds, rebuilds in milliseconds.
Builds in seconds, rebuilds in milliseconds.
- iris build11.6× faster than purs compile4.25s
- purs compile49.3s
- 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:
Semantic highlighting
Names are coloured by their role, such as declarations, record labels, module qualifiers and bindings.