Roadmap: what's shipped and what's next

alint is planned in versions with a fixed scope and no dates, because a missed date does more harm than none. Work that doesn't fit a version moves to a later one, and the plan changes in public commits to the alint repository.

Planned next

  1. v1.0

    Stability

    The config format will stop changing, the public API of the alint-core library will be frozen, and the docs will keep a version for each release.

  2. Later

    Plugins and duplicate code

    Plugins compiled to WebAssembly, run in a sandbox and installed from a signed registry, and a duplicate-code detector that works across languages. Neither has a version yet.

Recently shipped

  1. v0.22 7 November 2026

    Cross-file checks on one layer

    The cross-file rule that compares values between files now runs on the layer that key_parity brought in v0.21, and the old code is gone. Findings are unchanged on 106 real repositories, and checks run as fast as in v0.21. A finding whose path was read from the environment now gets a baseline fingerprint without the path, so a baseline file no longer gives the path away; v0.23 stops accepting the old form, so re-run alint baseline before upgrading to it. fix --dry-run predicts files created through a symlink that leads nowhere yet. For library users, three alint-core types are now built through constructors instead of struct literals.

  2. v0.21 1 November 2026

    Keys in step

    A new rule, key_parity, keeps locale and environment files in step: every peer must declare the same keys as a reference file, across JSON, YAML, TOML, .env, INI, Java properties, Android string resources and .NET .resx. It compares keys, never values, and can treat CLDR plural forms as one key. Underneath is a new internal layer that later cross-file rules will share, and a first draft of the contract that plugins will use once alint can load them. The v0.21.1 patch stops a .gitignore above the repository from hiding the tree and makes configuration errors readable again without showing values read from the environment. The v0.21.2 patch makes fix --dry-run and fix --diff agree with fix about creating files in more layouts, and keeps more values read from the environment out of reports and log lines.

  3. v0.20 21 October 2026

    Tests for your policies

    alint test runs your rules against small fixture repositories through the real engine, and every bundled ruleset ships with tests of its own. alint explain with --trace shows why one rule passed or failed without leaking sensitive values, and each config can name the config version and the minimum alint it needs. The v0.20.1 patch makes common checks faster and warns when a content pattern's ^ or $ anchors to the whole file instead of a line.

v0.1 to v0.19 are on the full roadmap, and every release's changes are in the changelog.

What alint won't do

alint checks the files in a repository and the values inside them. It doesn't parse the code in those files. For these jobs, use a tool built for them:

Out of scopeUse instead
Checks that parse your code: names, unused imports, typesYour language's linter: ESLint, Clippy, Ruff, golangci-lint, mypy
Security analysis of code: tainted data flow, injection, dangerous APIsSemgrep, CodeQL
Security policy for Terraform, Kubernetes and Docker resourcesCheckov, Conftest, Trivy
Secrets such as API keys and tokens in files and git historygitleaks, TruffleHog
Installing and running a set of other linters, each with its own toolchainMegaLinter, pre-commit, lintrunner
Running code generators to check what they produceYour build. alint runs one only if your own config adds a generated_file_fresh or command_idempotent rule
Dependencies between modules and packages: unused dependencies, version conflicts, package cyclescargo-deny, knip, madge, bazel mod

Two jobs near that line are in scope. The commit rules check every commit in a range: messages, sign-offs, fixups, authors and GPG signatures. And file_graph with require: acyclic finds cycles between files. Compare covers the tools whose job overlaps with alint's.

How versions are planned

Watch GitHub releases for new versions, or subscribe to the release feed.