Biome 2.5.15 Speeds Up Type Inference by a Reported 2x to 240x, Restricts Its Daemon Socket to the Running User and Adds Nursery Rules
Biome 2.5.15, tagged September 30, lists faster type inference, HTML formatting up to 4x faster, a user-only daemon socket and several new nursery lint rules.
Overview
Biome, the Rust-based formatter and linter for web languages, published version 2.5.15 of its command-line tool on September 30, according to the GitHub release page. The release is filed entirely under “Patch Changes” and bundles performance work, a permissions fix for the background daemon and a batch of new rules that sit in Biome’s experimental nursery group.
What We Know
Performance
Three separate performance entries appear in the release notes:
- Type inference. The notes, credited to contributor dyc3, say: “Type inference performance has been significantly improved. Some popular libraries like Zod, Valibot, Arktype, Effect, Kysely, and Drizzle have gained a ~2-240x speedup in our benchmarks.” The same sentence appears in the changeset in pull request 12021.
- Large files. Credited to the codspeed account, the notes say: “Improved the performance of indexing and analysis of big files up to 2x. The improvements are mostly visible in projects that make use of project and types lint rules.”
- HTML formatting. Also credited to codspeed: “Improved the performance of the HTML formatter up to 4x.” The figures are Biome’s own benchmark claims; the release notes do not publish the underlying measurements.
Daemon socket permissions
The release restricts access to the Unix socket that Biome’s daemon uses. In the words of the release notes, credited to dyc3: “Restricted access to the Unix daemon socket to the user running Biome.” The notes add that the socket now lives in a biome-daemon directory inside Biome’s cache directory that only this user can access, and that the socket itself has mode 0600. The change was made in pull request 11928. The release notes do not describe a specific attack or assign a vulnerability identifier to the previous behavior.
New nursery rules
The release notes list several additions, all described as nursery rules:
noReactObjectTypeAsDefaultProp, which disallows array, object and function values as default props in React components.noSvelteExportLet, which disallows declaring Svelte component props with the legacyexport letsyntax and points to the$props()rune instead.useSvelteKitRuneImports, which reports imports from the deprecated$app/storesmodule and suggests$app/state.useLogicalProperties, a CSS rule that enforces logical properties and takes adirectionoption defaulting to"ltr", with"rtl"as the alternative.noTailwindRawColors, which targets JavaScript and HTML and disallows Tailwind palette colors such asbg-pink-500andtext-white, encouraging design-system color utilities such asbg-primary.useStrictBooleanExpressions, which reports ambiguous truthiness checks such asif (value)whenvaluehas typenumber | undefined.noAstroConflictingSetDirectives, which reports Astro elements with multiple content sources, such asset:html,set:text, and child content.
Other fixes
The notes also describe a fix, credited to ematipico, for “a regression where Biome would silently ignore errors in the configuration file.” Per the same entry, errors are now “correctly retained and checked before executing any command.” Another entry, credited to dyc3, says Biome “no longer crashes when its output is piped to a program that exits early, such as head.” Further entries cover Astro and Svelte formatting, including indentation of multiline Astro expressions when running biome check --write.
What We Don’t Know
- The release notes do not say how the 2x-to-240x type-inference range was measured beyond “our benchmarks,” or which versions or hardware were compared.
- Nursery rules are experimental, and the notes do not say when any of the new rules might move to a stable group.
- The notes do not state whether the daemon-socket change addresses a reported security issue.
Analysis
Biome’s type-aware linting is the area where the inference speedup applies. The Machine Herald previously reported on Biome v2, which introduced type-aware lint rules without requiring the TypeScript compiler. The release notes tie the large-file improvement to projects that use “project and types lint rules,” which suggests the performance work is aimed at users of those rules, though the notes do not say so directly.