Skip to main content

Чому Biome швидше за аналоги?

Чому Biome швидше?

1. Biome написаний на Rust

Головна причина - Rust.

  • Rust компілюється в нативний машинний код
  • Немає збирача сміття
  • Висока оптимізація обчислень
  • Відмінна робота з багатопоточністю

Порівняно з JavaScript (яким написані ESLint і Prettier), Rust працює:

  • швидше в CPU-інтенсивних завданнях
  • стабільніше при обробці великих обсягів коду
  • безпечніше з погляду витоків пам'яті

Лінтинг і форматування - якраз CPU-heavy завдання, тому Rust є ідеальним вибором.


2. Єдиний високопродуктивний парсер

Biome використовує один спільний парсер (для JS, TS, JSX, JSON тощо).

ESLint зазвичай працює так:

  • підключає зовнішній парсер (@typescript-eslint/parser)
  • цей парсер перетворює код на AST
  • потім плагіни ESLint читають AST
  • потім правила ESLint повторно обходять AST
  • потім окремий інструмент Prettier заново парсить файл
  • і знову обходить AST для форматування

Тобто код парситься кілька разів різними інструментами.

У Biome навпаки:

  • один універсальний парсер
  • одне AST
  • один прохід
  • мінімум додаткових шарів

Один прохід по дереву замість 2-4 у ESLint/Prettier.


3. Жодного динамічного завантаження плагінів

ESLint повільний, тому що:

  • вимагає десятки плагінів
  • кожен плагін - окрема JS-функція
  • усі вони завантажуються і інтерпретуються при старті

Biome:

  • майже все вбудовано
  • немає важкої плагінної системи (на цей момент)
  • правила оптимізовані на рівні компіляції

Менше JavaScript-коду → менше IO → менше інтерпретації.


4. Оптимізована архітектура обходу AST

ESLint:

  • кожне правило самостійно ходить по AST
  • правила часто повторюють роботу одне одного
  • підключення 50+ правил створює 50+ обходів

Biome:

  • робить централізований, оптимізований обхід дерева
  • використовує статичні перевірки на етапі компіляції
  • мінімізує повторні обходи

Один обхід замість безлічі - величезна економія часу.


5. Відсутність обмежень Node.js

Node.js:

  • повільний при важких обчисленнях
  • має обмеження однопоточності
  • страждає від високої вартості операцій GC

Biome:

  • використовує можливості Rust для паралелізму
  • працює з пам'яттю напряму
  • не залежить від V8 і його обмежень

Rust краще підходить для інтенсивних завдань парсингу і аналізу.


6. Мінімум конфігурації = мінімум роботи

ESLint:

  • навіть базова конфігурація використовує:
    • парсер
    • конфіг Airbnb/Next/React
    • лінтери для імпортів
    • лінтери для TS
    • інтеграцію з Prettier

Усе це завантажується і аналізується перед запуском.

Biome:

  • один конфіг
  • жодних сторонніх розширень, крім core rules
  • оптимізація на рівні бінарників

Швидший старт, менше коду, менше шарів.


7. Форматер вбудований, а не окремий процес

Prettier - окремий інструмент. ESLint - окремий інструмент. Вони ніяк не оптимізують роботу одне одного.

Biome:

  • форматер - частина одного рушія
  • немає зайвої роботи з повторного парсингу
  • немає конфліктів між форматером і лінтером

2 інструменти → 1 рушій → 1 прохід → швидше.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.