Zebkit встраивает движок Chromium в приложение как обычную библиотеку

Zebkit – Chromium as an embeddable library

Zebkit встраивает движок Chromium в приложение как обычную библиотеку

Zebkit — это движок Chromium (Blink, V8, PDFium, FFmpeg) в виде одной библиотеки, которую программа подключает к себе, сохраняя свой main(), event loop и оконную систему. Проект обещает сборку на 34% меньше Electron, холодный старт за 2,3 с против 6,6 и на 29% меньше памяти на страницу. Доступны привязки для C, Rust, Python и JavaScript, встроенный PDF API и нативный Playwright без Node.js.

Electron — это основа: приложение строится внутри него, на его рантайме, его окнах и его упаковке. Zebkit — это часть: приложение добавляет его, как добавляет SQLite, и сохраняет свой процесс, свой тулкит и свой способ поставки.
  1. torginus

    Чем это отличается от CEF (Chromium Embedded Framework)?

    Это тоже довольно урезанная версия движка Chrome, предназначенная для встраивания и используемая кучей проектов, например, играми для внутриигровых лобби или OBS для их веб-оверлеев.

    Лично моя проблема с CEF в том, что он сохраняет Chrome довольно ванильным — и там есть много вещей, которые вы бы не хотели включать в своё пользовательское приложение.

    Но есть причина, по которой они сделали именно так — если бы они действительно взяли топор к кодовой базе Chrome, они бы в основном потеряли возможность переносить новые версии в upstream.

    Zebkit, с другой стороны, звучит так, будто он будет более гранулярным — посмотрим, справятся ли они с этим лучше, но я думаю, что рынок для гораздо более лёгкого браузерного движка с широкой совместимостью определённо есть — например, просто избавление от песочниц и изоляции процессов было бы огромным, но несовместимым изменением.

    То же самое касается отказа от больших модулей вроде WebRTC или воспроизведения видео, или webusb, или чего угодно ещё, что, я уверен, 99% приложений в итоге не используют.

  2. joahnn_s

    Я не понимаю. CEF существует; зачем загружать его как shared lib/cffi? Вы просто подвергаете процесс вашего приложения всем проблемам, которые могут быть у браузера, включая проблемы безопасности.

    В большинстве языков CFFI обрушивает весь процесс приложения, поскольку это один и тот же процесс. Может, для личных нужд это и подойдёт, но ничего серьёзного.

  3. saidnooneever

    почему 'zeb'? это вульгарное слово для обозначения пениса. можно было бы выбрать получше, поскольку это, похоже, не связано ни с чем другим в проекте... может, это намеренно, что заставило бы меня задуматься о качестве проекта. что, похоже, обсуждают и другие комментаторы.

  4. netshade

    Отлично. Я активный пользователь CEF в ZShot ( https://zshot-app.com , https://zshot-cli.com ), но полностью с вами в том, что такого рода вещи должны быть проще для интеграции.

    Также полностью с вами насчёт предоставления этих библиотек (например, PDFium и FFmpeg) потребителям — это значительно снижает нагрузку при поставке и просто открывает так много возможностей.

    Замечание для всех, кто пойдёт по этому пути, просто в качестве отступления: на самом деле поставка с Chromium (и особенно с FFmpeg) может усложниться. Если вы поставляете на Mac OS, вам нужно позаботиться о нотаризации всех ваших вспомогательных процессов вместе с основным процессом (я предполагаю, что Zebkit всё ещё работает с вспомогательными процессами). То же самое с FFmpeg, если вы линкуетесь с библиотеками FFmpeg. И с FFmpeg просто проверьте, что ваше соблюдение лицензии действительно соответствует тому, что вы хотите поставлять — у FFmpeg есть режимы GPL и LGPL, поэтому важно убедиться, что вы выбрали правильный. Насколько я помню, Blink тоже LGPL, так что убедиться, что вы соблюдаете требования там, имеет важные последствия для распространения.

  5. prologic

    Это довольно интересно! Я создал веб-браузер для GoNix (https://gonix.dev) с использованием CEF (Chromium Embedded Framework), который работает довольно хорошо, но требует разделяемой памяти и канала, а встраивание Chromium в качестве библиотеки звучит ещё более интригующе. Возможно, я попробую! Спасибо, что поделились!

Ещё за этот день

2026-11-09