Aller au contenu

Version History

Version 2.3.4 Latest

Patch Changes

  • #7989 4855c4a Thanks @alissonlauffer! - Fixed a regression in Astro frontmatter parsing where comments inside quoted strings were incorrectly detected as actual comments. This caused the parser to prematurely terminate frontmatter parsing when encountering strings like const test = "//";. For example, the following Astro frontmatter now parses correctly:

    ---
    const test = "// not a real comment";
    ---
  • #7968 0b28f5f Thanks @denbezrukov! - Refactored formatter to use strict Token element for better performance. The new Token variant is optimized for static, ASCII-only text (keywords, operators, punctuation) with the following constraints:

    • ASCII only (no Unicode characters)
    • No newlines (\n, \r)
    • No tab characters (\t)

    This enables faster printing and fitting logic by using bulk string operations (push_str, len()) instead of character-by-character iteration with Unicode width calculations.

  • #7941 19b8280 Thanks @Conaclos! - Fixed #7943. Rules’ options are now properly merged with the inherited options from a shared configuration.

    This means that you can now override a specific option from a rule without resetting the other options to their default.

    Given the following shared configuration:

    {
    "linter": {
    "rules": {
    "style": {
    "useNamingConvention": {
    "level": "on",
    "options": {
    "strictCase": false,
    "conventions": [
    {
    "selector": { "kind": "variable", "scope": "global" },
    "formats": ["CONSTANT_CASE"]
    }
    ]
    }
    }
    }
    }
    }
    }

    And the user configuration that extends this shared configuration:

    {
    "extends": ["shared.json"],
    "linter": {
    "rules": {
    "style": {
    "useNamingConvention": {
    "level": "on",
    "options": { "strictCase": true }
    }
    }
    }
    }
    }

    The obtained merged configuration is now as follows:

    {
    "extends": ["shared.json"],
    "linter": {
    "rules": {
    "style": {
    "useNamingConvention": {
    "level": "on",
    "options": {
    "strictCase": true,
    "conventions": [
    {
    "selector": { "kind": "variable", "scope": "global" },
    "formats": ["CONSTANT_CASE"]
    }
    ]
    }
    }
    }
    }
    }
    }
  • #7969 425963d Thanks @ematipico! - Added support for the Svelte syntax {@debug}. The Biome HTML parser is now able to parse and format the blocks:

    {@debug foo,bar, something}
    {@debug foo, bar, something}
  • #7986 3256f82 Thanks @lisiur! - Fixed #7981. Now Biome correctly detects and parses lang='tsx' and lang='jsx' languages when used inside in .vue files, when .experimentalFullSupportEnabled is enabled.

  • #7921 547c2da Thanks @dyc3! - Fixed #7854: The CSS parser, with tailwindDirectives enabled, will now parse @source inline("underline");.

  • #7856 c9e20c3 Thanks @Netail! - Added the nursery rule noContinue. Disallowing the usage of the continue statement, structured control flow statements such as if should be used instead.

    Invalid:

    let sum = 0,
    i;
    for (i = 0; i < 10; i++) {
    if (i >= 5) {
    continue;
    }
    sum += i;
    }

    Valid:

    let sum = 0,
    i;
    for (i = 0; i < 10; i++) {
    if (i < 5) {
    sum += i;
    }
    }