# Install smlfmt with Homebrew, Nix

Custom parser and code formatter for Standard ML. Version 1.3.0 via Homebrew; verified 2026-06-14. Also installable with nix: nix profile install nixpkgs#smlfmt.

## Install

```sh
sudo av install brew:smlfmt
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install smlfmt
```

  Evidence: local Homebrew formula metadata

### Linux

- Nix (92%):

```sh
nix profile install nixpkgs#smlfmt
```

  Evidence: nixpkgs package indexes: pkgs/by-name/sm/smlfmt/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:smlfmt
- **Package manager:** Homebrew
- **Version:** 1.3.0
- **Source summary:** Custom parser and code formatter for Standard ML
- **Homepage:** <https://github.com/shwestrick/smlfmt>
- **Repository:** <https://github.com/shwestrick/smlfmt>
- **Last updated:** 2026-06-14T15:13:50+02:00
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- smlfmt (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 1.3.0
## Project history and usage

smlfmt is a command-line parser and formatter for Standard ML. It is a niche but package-manager-relevant developer tool because it brings modern formatter workflows, including check mode and whole-project formatting, to an older ML-family language ecosystem.

### Project history

The official README describes smlfmt as a custom parser and code formatter for Standard ML, fast enough for large projects and used to format its own source tree. The repository release list and README record v1.0.0 in January 2023, v1.2.0 in May 2025, and v1.3.0 in January 2026.

### Adoption history

The supplied package metadata shows smlfmt packaged in Homebrew and Nix, a typical adoption path for smaller language tooling. Its README targets command-line workflows rather than editor-only integration, including stdin/stdout use, CI-friendly checking, and `.mlb` whole-project formatting.

### How it is used

Users build it with MLton, format `.sml` files in place, pipe code through stdin/stdout, or pass an `.mlb` file to format many files. Options include `--preview`, `--preview-only`, `--read-only`, `--check`, width and indentation controls, and SuccessorML syntax toggles.

### Why package nerds care

Package maintainers care because smlfmt packages a language-specific formatter with MLton build requirements, command-line formatting semantics, and CI use through `--check`. It fills the same ergonomic role for Standard ML that formatter packages do for larger language ecosystems.

### Timeline

- 2023: v1.0.0 release published on GitHub.
- 2025: README records v1.2.0 release on May 2, 2025.
- 2026: README and release list record v1.3.0 on January 1, 2026.

### Related projects

- The README references MLton, MLBasis path maps, Emacs integration through `smlfmt.el`, SuccessorML syntax extensions, and hyperfine for timing measurements.

### Sources

- GitHub releases API for shwestrick/smlfmt: first listed release v1.0.0 on 2023-01-10.
- <https://github.com/shwestrick/smlfmt README: formatter purpose, features, release notes, build/run examples, options, performance notes.>
- input source_facts.package-manager: Homebrew and Nix package names.


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Other Package-Manager Records

- Nix - smlfmt: normalized package name match | nixpkgs package indexes: pkgs/by-name/sm/smlfmt/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1


## Combined YAML source

View the package source record on GitHub. [combined/smlfmt.yml](https://github.com/mxcl/pkgdb/blob/main/combined/smlfmt.yml)


## Sources

- pkg.so package database
- Geiger risk classifier
- curated package history
- pkgdb category and tag curation
- external package-manager database matches
- cross-ecosystem install command graph
