Bez генерує браузерний рушій за вебспецифікаціями й тестами
Bez створює браузерний рушій за вебспецифікаціями, звіряючи результат із Chromium, Firefox і WebKit. Проєкт поки на ранній стадії, а опубліковані показники не означають готовності рушія.
Bez — проєкт зі створення браузерного рушія на основі вебспецифікацій із перевіркою результату тестами та порівнянням з наявними браузерами. Матеріал про нього опубліковано 1 жовтня 2026 року; наведена в ньому таблиця покриття відображає вимірювання від 4 жовтня, але коли її додали до матеріалу, не зазначено. Для сайтів і застосунків поки нічого змінювати не потрібно: проєкт на ранній стадії.
Як перевіряють код рушія
Модель отримує текст специфікації та пропонує варіанти реалізації правила. Кандидатів запускають усередині Bez і порівнюють розташування елементів із результатами Chromium, Firefox і WebKit. Якщо перевірку не пройдено, цикл повторюють. Прийнятий варіант зберігають як звичайний код на Rust. Для перевірок також використовують Web Platform Tests (WPT).
Три браузери потрібні проєкту як орієнтири поведінки, а не як джерела коду. Їхні результати звіряють між собою, щоб особливість одного рушія не стала зразком для нового. У дослідженні 235 документів результати збіглися у 699 із 705 попарних порівнянь. Усі шість розбіжностей стосувалися глибоко вкладених розмірів, заданих у відсотках; під час порівняння трьох браузерів відрізнявся Firefox.
Для WPT стійку більшість серед трьох рушіїв знайдено для 2 162 676 із 2 282 301 тестів і підтестів — 94,8%. Це частка перевірок, для яких є узгоджений орієнтир, а не частка тестів, пройдених Bez. Навіть більшість не усуває питання розбіжностей: Gecko округлює довжини до 1/60 пікселя, а Blink і WebKit — до 1/64. Через це flex-елемент може перенестися лише у Firefox або значення offsetWidth може відрізнятися на піксель.
Скільки вже реалізовано
У таблиці на основі browser-compat-data 8.0.4 за вимірюванням від 4 жовтня 2026 року 0,6% позицій позначено як згенеровані, 0,3% — як написані вручну; до 93,0% робота ще не дійшла. Для HTML, JavaScript, SVG, WebAssembly, HTTP і MathML зазначено по 100% позицій, до яких робота ще не дійшла. Таблиця описує покриття карти можливостей, а не частку сайтів, які Bez уміє відкривати.
DOM, стилі, дерева розкладки та фрагментів створено вручну, і вони проходять передбачені проєктом перевірки за браузерами. Із дев’яти правил розкладки CSS 2.1 вісім реалізацій, запропонованих моделями, прийняли після такого порівняння. Для висоти блокового елемента залишили ручну версію: жоден кандидат її не перевершив. Разом правила проходять 227 підготовлених випадків і 11 придатних сторінок WPT для звичайного потоку.
Проєкт передбачає повний рушій і варіант для вмісту окремого сайту чи застосунку. У другому випадку аналізатор визначає використовувані можливості, щоб решта не потрапляла до бінарного файлу. Аналізатор уже додано, але про готову до використання полегшену збірку в матеріалі не повідомляють.
Є обмеження і в самого методу. За оцінкою проєкту, приблизно для 55–60% позицій сумісності, що стосуються рушія, доступні і автоматична перевірка, і придатний для генерації текст специфікації. Приблизно для 8–18% немає ні того, ні іншого. Відкритими залишаються питання вартості ручної реалізації правил, розміру генерованих частин і обсягу WPT, доступного без JavaScript. Термін випуску повного рушія не названо.
Що це означає для сайтів і розробників
Власникам сайтів не потрібно переглядати вимоги до проєктів або закладати підтримку Bez. Практичний висновок поки в іншому: збіг поведінки браузерів можна вимірювати, але перевірка сторінки лише в одному з них не виявить усіх розбіжностей. Випадок з округленням показує, що різниця можлива і у звичній CSS-розмітці.
Для розробників застосунків і пристроїв, яким потрібно відображати вебконтент, збірка лише з використовуваними можливостями виглядає перспективним напрямом. Однак аналізатор вмісту — не те саме, що невеликий рушій, готовий до підтримки. Наведені результати підтверджують роботу окремих правил розкладки, але не повноту підтримки вебплатформи.
Моя думка
Мені близький підхід, за якого перевіряють не лише згенерований код, а й сам орієнтир: браузери справді можуть поводитися по-різному. Водночас 94,8% легко помилково сприйняти як показник готовності Bez. Таблиця покриття швидко повертає до реального масштабу роботи.
Я б стежив за тим, скільки правил вдасться довести до робочого коду і хто розбиратиметься із суперечностями між специфікаціями, тестами та браузерами. Поки вартість підтримки невідома, обіцянка дешево додавати нові частини рушія залишається гіпотезою.
Джерела
Звідки новина. Текст — переказ своїми словами, факти — з джерела, думка — автора.
старший full-stack-розробник
Проєктую й підтримую вебзастосунки; останніми роками частіше розбираю успадкований код, ніж починаю з чистого аркуша. Перед вибором технології запитую, хто її супроводжуватиме.
Усі публікації автораСхожі статті
ts-rust: експериментальне перенесення компілятора TypeScript 7 на Rust
Експериментальний ts-rust переносить компілятор, перевірку типів і мовний сервер TypeScript 7 на Rust. Тести показують прискорення, але проєкт ще потрібно перевіряти на конкретних застосунках.
У $mol додали підтримку Node.js для зберігання даних і нові інструменти інтерфейсу
В огляді змін $mol і Giper Dev за серпень та вересень — підтримка Node.js у $mol_storage, нові можливості редактора й інструменти інтерфейсу. Розповідаємо, що варто перевірити розробникам.
Chrome додає підтримку JPEG XL починаючи з версії 155
Починаючи з Chrome 155 браузер зможе відкривати зображення JPEG XL. Власникам сайтів радять порівняти формат з AVIF і врахувати підтримку в браузерах, перш ніж змінювати формат файлів.
Обговорення 4
Ернур Холматов
а як тут відрізняють реальну несумісність браузерів від помилки в самому тесті WPT?
Рауль Мартін Автор публікації
@yernur.khol У наведеному описі окремого способу виявляти помилки WPT не зазначено: порівняння з Chromium, Firefox і WebKit дає сигнал, але не доказ, бо браузери теж можуть мати спільну помилку. Потрібні звірка зі специфікацією та мінімальний відтворюваний тест; без цього розбіжність не можна впевнено приписати рушію чи самому тесту.
Олівер Лопеш
@yernur.khol Тут потрібна тріангуляція: звірити формулювання специфікації, результати Chromium, Firefox і WebKit та сам тест у WPT; якщо рушії розходяться, це ще не доказ, що помилковий тест. У наведеному описі деталей про процедуру оскарження чи валідації WPT немає, тож без ручного розбору конкретного кейсу тут не відрізнити баг браузера від багу тесту — автоматика, на жаль, не видає сертифікат істини.
Тимур Рискулов
@oliver.lopes ще корисно для кожного розбіжного кейсу фіксувати мінімальний відтворюваний приклад і перевіряти його в WPT окремо від решти набору: так легше зрозуміти, чи проблема в тесті, чи в поведінці рушія. Для нас як замовників це ще й сигнал не витрачати час на підлаштування сайту під ранній рушій, доки такі кейси не розібрані вручну.