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 все еще остается экспериментальным инструментом, находящимся в стадии активной разработки.

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

Апдейт Windows 11 KB5124008 нарушает работу подключений Always On VPN

3 часа назад

Апдейт Windows 11 KB5124008 нарушает работу подключений Always On VPN

На этой неделе Microsoft выпустила очередное ежемесячное апдейт для Windows 11, и пользователи стартовали жаловаться на возникновение проблем. Одной из них стала неработоспособность VPN‑соединений тип

В McKinsey стартовали информировать сотрудников о перерасходе ИИ‑токенов

3 часа назад

В McKinsey стартовали информировать сотрудников о перерасходе ИИ‑токенов

В McKinsey решили бороться с перерасходом ИИ‑токенов не введением жёстких лимитов, а информирование сотрудников. Читать далее

WhatsApp Business программный оболочку: с 1 октября платим за всё? Разбираю по пунктам

4 часа назад

WhatsApp Business программный оболочку: с 1 октября платим за всё? Разбираю по пунктам

Вы долго и сложно подключали WhatsApp* Business программный интерфейс: проходили верификацию, регистрировали номер, подключали CRM и чат-бота. Всё ради нормальной работы: чтобы не держать телефон вклю

Biostar начала продвижение видеокарты на базе GeForce GT 730

5 часов назад

Biostar начала продвижение видеокарты на базе GeForce GT 730

Тайваньская Biostar начала продвижение видеокарты на базе GeForce GT 730, вышедшей летом 2014 года. Организация рекламирует новинку под названием Biostar VN7313TG46 для диспетчерских пунктов, промышле

Revolut по ошибке выдала мошенникам информация своих клиентов, включая селфи и историю криптовалютные транзакции

6 часов назад

Revolut по ошибке выдала мошенникам информация своих клиентов, включая селфи и историю криптовалютные транзакции

Британская финтех‑компания Revolut по ошибке раскрыла мошенникам данные своих клиентов, в том числе паспортные данные, селфи для подтверждения личности и историю криптовалютных транзакций. Злоумышленн