Vercel Labs представила каркас Zero-Native на основе Zig с открытым исходным кодом

3 мин
Vercel Labs представила каркас Zero-Native на основе Zig с открытым исходным кодом

Vercel Labs выпустила zero-native с открытым исходным кодом — кроссплатформенный каркас для создания нативных десктопных приложений (сопровождение мобильных приложений планируется в будущих релизах). Zero-native обходит стороной среду выполнения Electron в пользу встроенных в операционную систему движков WebView и, по заявлениям разработчиков, позволяет создавать более компактные и эффективные нативные приложения с минимальными системными издержками.

Архитектура и возможности

Zero-native написан на языке Zig, благодаря чему напрямую взаимодействует с нативными библиотеками на языке C, а равным образом отличается высокой скоростью инкрементальной компиляции. Цель проекта — обеспечить малый вес исполняемых файлов и низкое потребление оперативной памяти за счет отказа от огромных системных издержек, характерных для кроссплатформенных фреймворков, таких как Electron, которые поставляют полноценную среду браузера наряду с приложением.

Однако, для обеспечения резервного сценария разработчики могут настроить файл манифеста app.zon, чтобы включить Chromium в сборку через Chromium Embedded Framework.

По имеющимся данным, Zig отличается более высокой скоростью инкрементальной компиляции относительно Rust, что имеет ключевое значение для разработки приложений — процесса, который по своей природе является высокоитеративным. Ричард Фельдман, создатель языка программирования Roc, год назад объявил о полном переписывании их компилятора с Rust на Zig, назвав медленную компиляцию в Rust одной из главных «болевых точек».

Помимо этого, Zig напрямую взаимодействует с бинарным интерфейсом приложений языка C. Благодаря этому для повторного использования нативных локальных библиотек C не требуется интерфейс внешних функций, что значительно экономит время при сборке. Вместо описания структуры данных на промежуточных языках или генерации биндингов разработчики просто подключают системный заголовочный файл и напрямую вызывают платформенные SDK или аудиокодеки.

По мнению безопасности, Zero-native использует систему на основе полномочий (Capability-based system), тем самым запрещая фронтенду произвольно читать локальные файлы или напрямую вызывать нативные программный интерфейс платформы. Вместо этого исходник на Zig должен явно регистрировать нативные команды, которые он планирует применять, а манифест app.zon должен напрямую предоставлять соответствующие разрешения. 

Создайте веб-приложение и получите бонусы на его деплой в облачный сервис

В новом бесплатном курсе по JavaScript.

Подробнее →

Альтернативы

Zero-native выходит на крайне активный сегмент альтернатив Electron, преследующих цель уменьшить раздутый размер кроссплатформенных приложений. Так, его конкурентами становятся WebUI, LynxJS, Tauri

WebUI задействует уже установленные в операционной системе браузеры, которые выступают в роли графического интерфейса для языков бэкенда, таких как C/C++ или Nim, без необходимости упаковывать Chromium внутрь приложения. Tauri аналогичным образом использует нативный WebView операционной системы в связке с бэкендом на Rust, где межпроцессное взаимодействие (IPC) служит мостом между фронтендом и бэкендом. 

Lynx — это работающий на базе Rust фреймворк, который компилирует фронтенд (веб-разметку, CSS и JavaScript) в по-настоящему нативные элементы интерфейса с помощью двухпоточного движка, разделяющего рендеринг интерфейса и бизнес-логику. Он компилируется под операционную систему HarmonyOS от Huawei, отличительной чертой которой является Cangjie — новый язык с открытым исходным кодом, поддерживающий нативные обработчики эффектов и алгебраические типы данных.

Ограничения

Хотя использование встроенных в ОС движков WebView для рендеринга уменьшает размер поставляемого приложения, оно равным образом подвергает пользователя риску столкнуться с проблемами несовместимости и различиями в отображении интерфейса между разными операционными системами. Что еще более важно, приложения могут аварийно завершать работу или вообще не запускаться, если нативный WebView отсутствует в системе, не найден или имеет неподдерживаемую версию. 

Так что на данный момент Zero-native все еще остается экспериментальным инструментом, находящимся в стадии активной разработки.

Читают сейчас

Представлен публике публичный мультиплатформенный инициатива PUZZLE: 205 Free Brain Games & Logic Puzzles

28 минут назад

Представлен публике публичный мультиплатформенный инициатива PUZZLE: 205 Free Brain Games & Logic Puzzles

Представлен публичный мультиплатформенный проект под названием PUZZLE: 205 Free Brain Games & Logic Puzzles. Это набор офлайновых мини-игр, тестов и головоломок, собранных с целью повышения продуктивн

2 часа назад

«Гостех» станет технологической платформой по новому закону с 1 сентября 2027 года

Президент России подписал закон «О технологической платформе создания, развития и эксплуатации информационных систем». По этому закону единая цифровая платформа «Гостех» с 1 сентября 2027 года получае

Блокировка Fable 5 бьет по защитникам, а не по хакерам — эксперты по кибербезу требуют вернуть доступ

2 часа назад

Блокировка Fable 5 бьет по защитникам, а не по хакерам — эксперты по кибербезу требуют вернуть доступ

Более 40 известных специалистов по кибербезопасности во главе с бывшим директором по безопасности Facebook Алексом Стамосом подписали открытое письмо с требованием к администрации Трампа вернуть досту

Kimi K2.7 Code стала в 6 раз быстрее — до 260 токенов в секунду

4 часа назад

Kimi K2.7 Code стала в 6 раз быстрее — до 260 токенов в секунду

Китайская Moonshot AI представила Kimi K2.7 Code HighSpeed — скоростной режим своей открытой модели для программирования Kimi K2.7 Code. Это та же схема, но с ускоренным выводом: до 6 раз быстрее, око

ТОП-5 ИБ-событий недели по версии Jet CSIRT

4 часа назад

ТОП-5 ИБ-событий недели по версии Jet CSIRT

Сегодня в ТОП-5 — Hades атакует цепочки поставок ПО, новая 0-day-уязвимость RoguePlanet в Windows Defender, GitHub блокирует атаки на цепочки поставок через апдейт npm, атака FROST: отслеживание актив