Biome 2.5 liefert `@biomejs/js-api` v6.0.0: ein Major-Bump für die JS-API

Biome 2.5 liefert `@biomejs/js-api` v6.0.0: ein Major-Bump für die JS-API

lschvn

Biome hat am 12. Juni 2026 zwei koordinierte Releases veröffentlicht: Biome CLI v2.5.0 und @biomejs/js-api v6.0.0. Die Schlagzeile ist der erste Major-Bump der JavaScript-API seit der Trennung der WASM-Pakete von der CLI. Der CLI-Bump ist im Wesentlichen ein WASM-Sync, mit einer langen Liste kleiner Features obendrauf.

Die js-api v6.0.0-Schlagzeile

Der Major-Bump dreht sich um einen einzigen neuen Export: spanInBytesToSpanInCodeUnits(diagnostic.location.span, content). Biomes Diagnostik trägt UTF-8-Byte-Offsets, weil der Analyzer die Quellen intern so indexiert. JavaScript-Strings sind UTF-16, daher lieferte jeder Code, der eine Biome-Diagnostik nahm und content.slice(spanStart, spanEnd) auf dem Original-String aufrief, bei nicht-ASCII-Inhalt den falschen Text: Emojis, Akzente, CJK. Die Slice-Grenze landete mitten in einer Code-Unit, lieferte undefined für den abschließenden Surrogate und korrumpierte den extrahierten Ausschnitt stillschweigend.

Der neue Helper konvertiert byte-basierte Spans in UTF-16-Code-Unit-Spans, inklusive der Edge-Cases mit Surrogate-Paaren und ungepaarten Surrogaten. Es ist genau die Art Fix, die einen Major-Bump für sich genommen rechtfertigt, und Biome nutzte die Gelegenheit, die WASM-Pakete mitzubumpen: @biomejs/wasm-web, @biomejs/wasm-bundler und @biomejs/wasm-nodejs pinnen sich alle auf 2.5.0, um mit der CLI gleichzuziehen.

SCSS, JSON, Linter und CLI

Das 2.5.0-Release deckt eine lange Liste inkrementeller Features ab. Parser-seitig wird die SCSS-Unterstützung deutlich erweitert: qualifizierte Namen in Werten und Funktionsaufrufen, Unary-Expression-Parsing, verschachtelte Deklarationen in Deklarationslisten, Deklarationen in @page-Blöcken und Delimiter in eingeklammerten Wertelisten. JSON erhält eine neue useSortedPackageJson-Regel. Der Linter nimmt zwei neue Cross-Language-Regeln mit, eine neue includes-Option für Plugin-Datei-Scoping, eine ignore-Option für no-unused-variables und eine Änderung an noUndeclaredClasses, die nun lokale und globale Styles sammelt. organizeImports ergänzt eine sortBareImports-Option.

Die CLI erhält ein Biome-Logo im ANSI-Art-Stil beim Start und einen neuen kompakten Reporter. biome_service unterstützt nun GritQL-Plugin-Rewrites über das Standard---write-Flag, das fehlende Puzzleteil, um eine eigene Refactoring-Regel auszuliefern, die durch denselben Pipeline läuft wie Linter und Formatter.

Der HTML-Analyzer wächst weiter. Ab 2.5 enthält er noRedundantRoles, useKeyWithMouseEvents und useAriaActivedescendantWithTabindex (der noRedundantRoles-Port wurde zurückgenommen und nach einem Follow-up-Fix erneut gelandet, daher die doppelte Erwähnung im Changelog).

Warum der Major-Bump zählt

Für Nutzer:innen, die Biome als CLI oder über Editor-Integrationen konsumieren, ist 2.5.0 ein Routine-Upgrade. Die interessante Geschichte betrifft Projekte, die @biomejs/js-api direkt einbetten: der Helper ist das erste Stück einer breiteren Anstrengung, die API auf nicht-ASCII-Quellcode sicher zu machen, und der Major-Bump signalisiert, dass das Projekt die öffentliche Oberfläche als stabilen Vertrag behandelt.

Diese Positionierung rückt Biome näher an Oxc mit der Rust-Toolchain heran: eine von Rust gestützte JavaScript-Toolchain mit programmatischer API zur Einbettung. Die beiden Projekte nehmen unterschiedliche Positionen im Spektrum ein (Biome bündelt Linter, Formatter und Import-Organizer in einer Binärdatei, Oxc trennt dies in eigene Crates), aber beide sind nun reif genug, dass programmatische Einbettung ein First-Class-Anwendungsfall ist. Für Teams, die die vorherige API mit einem UTF-8-zu-UTF-16-Workaround umschifft haben, ist 6.0.0 das Upgrade, das den Workaround überflüssig macht.

Häufig gestellte Fragen

Verwandte Artikel

Weitere Berichterstattung zu ähnlichen Themen und Tags.

Prettier 3.9 überholt fünf Parser: micromark für Markdown, yaml v2, GraphQL.js v17, ein Rust-basierter Flow-Parser und Angular
tooling

Prettier 3.9 überholt fünf Parser: micromark für Markdown, yaml v2, GraphQL.js v17, ein Rust-basierter Flow-Parser und Angular

Prettier 3.9.0, veröffentlicht am 27. Juni 2026 (prettier/prettier, Blogpost von Fisker Cheung), ist eine parserlastige Version, die Markdown von remark-parse v8 auf micromark v4 hebt (bessere CommonMark- und GFM-Konformität sowie eine Reihe lange bestehender Parsing-Bugs behoben), YAML auf yaml v2, GraphQL auf GraphQL.js v17 (Fragment-Argumente und Direktiven auf Direktivdefinitionen), Flow auf den neuen Rust-basierten oxidized-Parser des Flow-Teams (rund 37 % schneller bei Prettiers gültigen Flow-Fixtures und 43 % schneller bei flow_parser.js in lokalen Parser-only-Benchmarks) und Angular. Auch der JavaScript- und TypeScript-Printer wurde überarbeitet, insbesondere im --no-semi-Modus, wo Kommentare um break und continue jetzt über mehrere Durchläufe stabil sind (ein Idempotenz-Fix), sowie redundante Klammern in return, die Ausrichtung von eingebetteten Template-Interpolationen und das Inlining von logischen Negationen. Die Version entfernt die veraltete import ... assert {}-Syntax (Babel 8 hat das Parser-Plugin entfernt; migriert zu with), repariert eine stillschweigend defekte Option --cache-strategy content und verhindert, dass EditorConfig-Dateien oberhalb von Git-Worktrees einsickern. Das Team erinnert daran, die genaue Version in der package.json festzupinnen, da die Formatierungsänderungen Diffs erzeugen.
Vite+: Eine CLI zum Herrschen, Oder nur eine weitere Ebene des Hypes?
tooling

Vite+: Eine CLI zum Herrschen, Oder nur eine weitere Ebene des Hypes?

VoidZeros Vite+ verspricht, Runtime, Paketmanager, Bundler, Linter, Formatter und Test-Runner unter einem einzigen Befehl zu vereinen. Wir haben die Ankündigungen gelesen, die Behauptungen benchmarkt und mit Menschen gesprochen, die es in Produktion nutzen.
Turborepo 2.10.3 Erkennt nub und aube, Zwei Neue Rust-basierte Node.js-Paketmanager von Colin McDonnell (Zod) und Jeff Dickey (mise)
tooling

Turborepo 2.10.3 Erkennt nub und aube, Zwei Neue Rust-basierte Node.js-Paketmanager von Colin McDonnell (Zod) und Jeff Dickey (mise)

Turborepo [v2.10.3](https://github.com/vercel/turborepo/releases/tag/v2.10.3) wurde am 2026-07-03 mit First-Class-Support für [nub](https://github.com/nubjs/nub) und [aube](https://github.com/jdx/aube) veröffentlicht, zwei Rust-basierten Node.js-Paketmanagern, die im Frühjahr und Sommer 2026 entstanden sind. nub stammt von Colin McDonnell (Schöpfer von [Zod](https://github.com/colinhacks/zod), 43k Sternen) und aube von Jeff Dickey (Schöpfer von [mise](https://github.com/jdx/mise)); beide integrieren sich in Turborepo als `packageManager`-Werte in `package.json` und `devEngines.packageManager`. Die Release liefert außerdem einen neuen TUI/Streamed-Logs-Toggle, Click-to-Select für Tasks in der TUI-Taskliste, automatisches Kopieren von TUI-Selektionen in die Zwischenablage bei Maus-Release, ein `--production`-Flag auf `turbo prune`, TypeScript 7.0.1-rc als Workspace-Toolchain, Thin LTO + `codegen-units=1` für Release-Builds und eine lange Liste von Cache-Hashing-Performance-Fixes. Das Hauptsignal: Zwei der angesehensten Builder des JS-Toolchains liefern nun Paketmanager, die auf Stock-Node aufsetzen statt es zu ersetzen, und Turborepo ist das erste Mainstream-Monorepo-Tool, das beide formalisiert.

Kommentare

Anmelden Melden Sie sich an, um an der Diskussion teilzunehmen.

Noch keine Kommentare. Seien Sie der Erste, der seine Gedanken teilt.