Awesome
Millet
A language server for Standard ML (SML).
Install for: VS Code • Open VSX
Millet analyzes SML code without running it, and provides information like:
- Inline diagnostics
- Hover for type/documentation
- Inlay hints
- Jump to definition
- Code completions
- Code actions
- Document symbols
- Find all references
Millet also supports SML/NJ Compilation Manager (CM) and ML Basis (MLB), allowing for analysis of multi-file SML projects.
Note that Millet does not actually run SML code. To do that, you'll need an installation of SML, like SML/NJ or MLton.
- Check out the blog post introducing the project.
- Refer to the manual for information about setup, configuration, and features.
- See the full documentation for other information, like explanations for diagnostics and project policies.
Install
Official sources
- There is a VS Code extension on the marketplace.
- The same extension is also published on Open VSX.
- Pre-built binaries are on the releases page.
VS Code and compatible editors like VSCodium are the only editors for which we provide an "official" extension. However, because Millet is a language server, it should be able to be adapted to work with any editor that supports language servers.
Unofficial sources
Millet is also available in various other package managers and repositories. These are maintained by the community and are not official, so they may be out of date.
There is some support for Millet in various editors as well:
Community
Millet is affiliated with Project Savanna, a project whose goal is to improve tooling for Standard ML.
There is a Discord server for Project Savanna. The server has a channel for Millet support and discussion.
Contributing
We encourage contributions of all kinds. Please read the contributing guide.
Development
Dependencies
What | Version | Why | Required |
---|---|---|---|
Rust | Latest stable | Build Rust code | Yes |
Node.js | 20 | Build TypeScript code | No |
The project is mostly written in Rust, so you will need a Rust installation. It should include:
rustc
, a Rust compilercargo
, a Rust package manager and build systemrustfmt
, a Rust formatterclippy
, a Rust linter
The minimum supported Rust version (MSRV) is the latest stable.
If you want to build the VS Code extension in TypeScript as well, you should also install Node.js.
If your editor supports it, we also recommend installing Rust Analyzer, a language server for Rust.
Building/testing
This is a regular Rust project, so the usual Cargo commands will work:
$ cargo build
$ cargo test
We also use clippy and rustfmt, which can be run with cargo as well:
$ cargo fmt
$ cargo clippy
These can all be run together as they are in CI:
$ cargo xtask ci
VS Code
If you're using VS Code, you can try out the VS Code extension:
- Open the repository in VS Code.
- Open the Run panel from the activity bar (the play button with bug).
- Select "extension" in the drop down.
- Press the green play button.
Naming
- "Millet" has the letters M and L in it, in that order. So does "Standard ML".
- Birds eat millet. A bird named Polly Morphism is the mascot for 15-150, Carnegie Mellon's introductory functional programming course, which is taught in Standard ML.
Logo
The logo features Polly Morphism, wearing a 15-150 style T-shirt, writing SML on a Millet-branded laptop, encircled with millet. Yixin He drew the logo.
License
Like Rust itself and many other projects in the Rust community, Millet is licensed under either the MIT license or the Apache license v2.0, at your option.