Zero Native : Le tueur d'Electron signé Vercel que personne n'a vu venir

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Voici Xero Native, un constructeur d'applications natives basé sur Zig par Vercel qui peut soit utiliser la vue web du système,
00:00:05soit intégrer l'intégralité de Chromium tout comme Electron pour les applications de bureau ou mobiles, offrant des binaires minuscules
00:00:12et des reconstructions instantanées pour le développement.
00:00:14Mais le fait de devoir connaître un peu de Zig pour l'utiliser correctement rebutera-t-il les développeurs JavaScript ?
00:00:18Abonnez-vous et découvrons-le ensemble.
00:00:20Bien que l'équipe de BUN s'éloigne de Zig pour Rust, cela reste un langage très cool
00:00:28sans vérificateur d'emprunts, sans durées de vie et capable d'appeler C directement, ce qui signifie que toute bibliothèque C est à un import près
00:00:35sans avoir besoin de code de liaison.
00:00:37Et il est assez lisible pour que les développeurs JavaScript l'apprennent.
00:00:39D'ailleurs, si vous voulez me voir apprendre à programmer en Zig à partir de zéro, dites-le moi dans les commentaires.
00:00:44Je pense que ce serait une chose assez amusante à faire.
00:00:46Mais essentiellement, Xero Native est une fine enveloppe Zig qui héberge une vue web affichant un front-end
00:00:51qui utilise des ponts JSON pour que le JavaScript de la vue web puisse communiquer avec la couche native Zig et vice versa,
00:00:58ce qui lui permet d'accéder aux API au niveau du système d'exploitation.
00:01:01Et si vous pensez que cela ressemble à ElectroBUN, eh bien, c'est un peu le cas.
00:01:04Mais avec une différence majeure, dont nous parlerons plus tard dans la vidéo.
00:01:07Pour l'instant, passons à une démo très simple.
00:01:10Pour commencer, vous devez d'abord avoir Zig installé, ce que j'ai fait avec Miez.
00:01:13Mais vous pouvez aussi utiliser Brew, puis installer Xero Native.
00:01:16Une fois ces deux étapes franchies, vous pouvez lancer la commande “xero-native init” pour échafauder un nouveau projet.
00:01:22C'est le nom de mon projet, mais il peut être tout ce que vous voulez.
00:01:25Je vais utiliser le drapeau front-end avec React, ce qui va installer un projet Vite React.
00:01:30Mais cela pourrait aussi être Svelte, Vue, Next ou même juste Vite.
00:01:34Si j'appuie sur Entrée, Xero Native ajoutera quelques répertoires.
00:01:37Si nous entrons dans le projet de démo, nous voyons le fichier app.zon, que je détaillerai plus tard.
00:01:43Nous avons des dossiers pour les icônes et autres ressources statiques, le fichier build.zig,
00:01:48qui sert au graphe de construction Zig, le pont JS, le moteur web et le répertoire front-end contenant notre code.
00:01:54En y entrant, on y retrouve des fichiers familiers pour un développeur JavaScript.
00:01:58À ce stade, si nous lançons “zig build run”, cela installera toutes les dépendances et ouvrira l'application.
00:02:04Notez que si vous voulez installer Xero Native sur un projet JavaScript existant,
00:02:08je recommande d'utiliser Vite, qui est une version minimale, puis de remplacer le contenu du dossier front-end par votre code.
00:02:15Xero Native possède aussi un serveur de dév très cool qui gère tout le cycle de vie du front-end.
00:02:19En lançant “zig build dev”, le binaire est compilé et le serveur de développement Xero Native démarre.
00:02:24Ainsi, si je modifie du code, l'application native se met à jour en temps réel.
00:02:28Je peux même lancer “zig build package”, ce qui construira l'application native pour la distribution.
00:02:33Et on peut la voir ici dans le répertoire “zig-out/package” à seulement 2,9 mégaoctets, ce qui est minuscule.
00:02:39Et certains ont même réussi à descendre sous la barre des 1 mégaoctet.
00:02:43Mais si je voulais changer l'icône de l'appli, le nom ou le moteur web ?
00:02:46C'est là qu'intervient le fichier app.zon, où je peux modifier l'icône, le nom du projet, le moteur utilisé et la taille de la fenêtre.
00:02:55Voilà pour ce tour d'horizon très rapide de Xero Native.
00:02:58Il y a tant de choses que je n'ai pas eu le temps d'aborder, comme les icônes de la barre système, la signature de code et les apps iOS et Android.
00:03:05En fait, je dois y passer plus de temps, ce qui pourrait donner lieu à une autre vidéo.
00:03:09Mais aussi génial que soit Xero Native, comment se compare-t-il à Electrobun, qui crée aussi des apps légères utilisant la vue web native ?
00:03:17Avec Electrobun, Bun est l'environnement d'exécution car vous devez écrire du TypeScript pour le processus principal.
00:03:24Bien qu'un binaire Zig lance l'app, le code tourne dans un web worker Bun qui communique avec les API natives via l'FFI de Bun, passant par C++ et Objective-C.
00:03:37Avec Xero Native, seul le binaire Zig suffit : pas de JavaScript, pas de Bun, juste du Zig qui communique avec les API système et les bibliothèques C via un simple import.
00:03:50Cela permet d'avoir l'enveloppe native la plus fine possible par rapport à Electrobun.
00:03:54Actuellement, vous devrez peut-être écrire un peu de Zig pour en tirer le maximum ou modifier des configurations dans un fichier .zon.
00:04:03De plus, Xero Native n'est pas encore aussi riche en fonctionnalités qu'Electrobun, qui permet de changer le style de la barre de titre ou d'ajouter des menus.
00:04:11Ces options ne sont malheureusement pas encore supportées dans le fichier app.zon.
00:04:15J'ai aussi dû signaler un problème car la création d'un paquet sur macOS n'a pas fonctionné du premier coup, mais c'était peut-être de ma faute.
00:04:22Quoi qu'il en soit, je suis sûr que l'équipe travaille dur pour ajouter des fonctionnalités, corriger les bugs et apporter un support mobile.
00:04:29Et si vous ne pouvez pas attendre ces fonctionnalités, sachez que c'est open source.
00:04:32Donnez simplement le code à Claude, dites-lui ce que vous voulez et je suis sûr qu'il pourra les ajouter pour vous, non ?

Key Takeaway

Xero Native surpasse Electron et Electrobun en légèreté en utilisant une enveloppe Zig pure de moins de 3 Mo qui communique directement avec les API système sans couche d'exécution JavaScript intermédiaire.

Highlights

  • Xero Native produit des binaires d'application extrêmement compacts pesant seulement 2,9 mégaoctets.

  • Le framework utilise le langage Zig pour envelopper une vue web système ou intégrer Chromium sans nécessiter d'environnement d'exécution JavaScript comme Bun ou Node.js.

  • Le processus de développement bénéficie de reconstructions instantanées et d'un rechargement en temps réel via la commande zig build dev.

  • La configuration du projet, incluant l'icône, le nom et le moteur web, se gère centralement dans un fichier nommé app.zon.

  • L'accès aux API du système d'exploitation s'effectue par des ponts JSON permettant la communication bidirectionnelle entre le JavaScript du front-end et la couche native Zig.

  • Xero Native élimine le besoin de code de liaison complexe pour utiliser des bibliothèques C grâce à la capacité native de Zig d'importer directement du code C.

Timeline

Architecture et capacités de Xero Native

  • Xero Native s'appuie sur le langage Zig pour créer des applications de bureau et mobiles performantes.
  • Le système permet de choisir entre l'utilisation de la vue web native du système ou l'intégration complète de Chromium.
  • Le langage Zig facilite l'appel direct de bibliothèques C sans nécessiter de code de liaison (glue code).

Cette structure repose sur une enveloppe Zig fine qui héberge le front-end. La communication entre le JavaScript et la couche native passe par des ponts JSON pour accéder aux fonctionnalités système. L'absence de vérificateur d'emprunts ou de gestion complexe des durées de vie dans Zig rend le framework accessible aux développeurs venant du JavaScript.

Initialisation et flux de travail de développement

  • La commande xero-native init permet de générer instantanément un projet avec des frameworks populaires comme React, Svelte ou Vue.
  • Le serveur de développement intégré met à jour l'application native en temps réel dès que le code source est modifié.
  • La compilation finale génère un paquet de distribution optimisé dont la taille peut descendre sous la barre de 1 mégaoctet.

L'installation nécessite l'outil Miez ou Brew pour configurer Zig avant de déployer Xero Native. Le projet est structuré autour du fichier build.zig pour la gestion de la compilation et du dossier front-end pour le code applicatif. L'intégration dans des projets existants se fait efficacement en remplaçant le contenu du dossier front-end au sein d'une structure Vite minimale.

Configuration et comparaison avec Electrobun

  • Le fichier app.zon centralise les métadonnées de l'application telles que la taille de la fenêtre et les ressources visuelles.
  • Xero Native se distingue d'Electrobun par l'absence totale de processus JavaScript ou de Web Workers Bun dans sa couche principale.
  • L'infrastructure actuelle privilégie la minceur du binaire au détriment de certaines options de personnalisation de l'interface native comme les barres de titre.

Contrairement à Electrobun qui exécute du TypeScript dans un worker Bun via FFI, Xero Native utilise uniquement le binaire Zig pour dialoguer avec les API système. Cette approche garantit l'enveloppe native la plus fine possible. Bien que certaines fonctionnalités comme la signature de code ou le support mobile complet soient encore en développement, la nature open source du projet permet des extensions communautaires.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video