27 points par xguru 2024-10-05 | 4 commentaires | Partager sur WhatsApp
  • Tauri est un framework permettant de créer de petits binaires rapides pour toutes les principales plateformes desktop (macOS, Linux, Windows) et mobiles (iOS, Android)
  • Il peut intégrer n’importe quel framework frontend compilant vers HTML, JavaScript et CSS, et permet d’utiliser des langages comme Rust, Swift et Kotlin pour la logique backend lorsque nécessaire
  • Il fournit une vaste API JavaScript, ce qui fait que, dans la plupart des cas, il n’est pas nécessaire d’écrire du code en Rust, Swift ou Kotlin

Quand faut-il utiliser Tauri ?

  • Si vous voulez une base de code UI unique pour toutes les plateformes
  • Si vous souhaitez toucher le plus grand nombre d’utilisateurs possible sur leur plateforme (par ex. Windows, macOS, Linux, Android, iOS)
  • Si vous êtes développeur frontend web et que vous voulez écrire des applications natives
  • Si vous êtes développeur Rust et que vous voulez créer des applications avec une belle UI, avec aussi l’option d’écrire en Rust
  • Si vous avez une équipe de développeurs web et que vous voulez vous étendre au marché des applications natives avec un faible investissement initial
  • Si vous avez une équipe de développeurs Rust et que vous voulez tout écrire en Rust

Atouts et améliorations de la 2.0

Amélioration de l’expérience de démarrage

  • L’expérience développeur (DX) est une priorité, et l’objectif est de rendre ce processus initial aussi fluide que la création et le déploiement de l’application finale
  • Un projet appelé create-tauri-app (CTA) a été créé pour permettre aux développeurs de partir de zéro et d’obtenir une app Tauri fonctionnelle en quelques minutes au lieu de plusieurs heures

Hot-Module Replacement

  • Le hot module replacement (HMR), déjà envisagé en 1.x pour améliorer le processus de développement, est désormais étendu aux appareils mobiles et aux émulateurs
  • Tous les changements apportés au frontend de l’application peuvent être prévisualisés en temps réel sur l’appareil ou le système d’exploitation ciblé, sans avoir à reconstruire toute l’application

Plugins

  • Tauri 2.0 introduit un système de plugins plus avancé. Une grande partie des fonctionnalités précédentes a été déplacée vers des plugins officiels afin de permettre à la communauté de contribuer plus facilement à Tauri
  • Le système de plugins prend aussi en charge les plugins mobiles. Sur iOS, il est possible d’écrire ou de réutiliser du code natif en Swift, sur Android en Kotlin, et d’exposer directement des fonctions au frontend Tauri en utilisant des annotations (@Command sur Android), en implémentant des sous-classes (YourPluginClass: Plugin sur iOS), ou en appelant du code Swift ou Kotlin depuis des commandes Tauri basées sur Rust
  • Les plugins officiels fournis suivent les versions majeures de Tauri
    • Autostart : lancement automatique de l’application au démarrage du système
    • Barcode Scanner : scan de codes-barres comme les QR codes ou EAN-13 dans les applications mobiles
    • Biometric : invite d’authentification biométrique sur Android et iOS
    • Clipboard : lecture et écriture dans le presse-papiers système
    • Command Line Interface (CLI) : analyse des arguments en ligne de commande
    • Deep Linking : définir une application Tauri comme gestionnaire par défaut d’URL
    • Dialog : boîtes de dialogue système natives pour ouvrir et enregistrer des fichiers, ainsi que pour les messages
    • File System : accès au système de fichiers
    • Global Shortcut : enregistrement de raccourcis globaux
    • HTTP Client : accès à un client HTTP écrit en Rust
    • Localhost : utilisation d’un serveur localhost dans une application de production
    • Logging : journalisation configurable
    • NFC : lecture et écriture de tags NFC sur Android et iOS
    • Notifications : envoi de notifications natives à l’utilisateur
    • OS Information : lecture d’informations sur le système d’exploitation
    • Persisted Scope : conservation des modifications de portée runtime dans le système de fichiers
    • Positioner : déplacement des fenêtres vers des positions courantes
    • Process : accès au processus en cours
    • Shell : accès au shell système pour gérer des fichiers et des URL via les applications par défaut, et lancer des processus enfants
    • Single Instance : garantit qu’une seule instance d’une app Tauri s’exécute à la fois
    • SQL : plugin Tauri fournissant une interface permettant au frontend de communiquer avec des bases de données SQL via sqlx
    • Store : stockage persistant clé-valeur
    • Stronghold : base de données sécurisée et chiffrée
    • System Tray
    • Updater : mise à jour intégrée à l’application pour les applications Tauri
    • Upload : envoi de fichiers via HTTP
    • Websocket : ouverture de connexions WebSocket depuis JavaScript à l’aide d’un client Rust
    • Window Customization
    • Window State : conservation de la taille et de la position de la fenêtre

Fin de l’Allowlist, vive l’Allowlist

  • allowlist n’existe plus, car les limites de ce système ont été rapidement atteintes
  • Il avait été conçu exclusivement pour les fonctionnalités cœur de Tauri, mais ne couvrait pas l’ensemble de ses API
  • Le nouveau système couvre non seulement toute la surface des API cœur de Tauri, mais permet aussi aux développeurs d’apps et de plugins d’implémenter leurs propres contrôles d’accès et mécanismes de portée via une approche unifiée
  • Un système de contrôle d’accès flexible mais facile à utiliser a été conçu avec permissions« interrupteurs on/off pour les commandes Tauri », scopes« validation des paramètres des commandes Tauri », et capabilities« association des permissions et des portées à Windows et WebView »
  • Il est possible de créer des fichiers de permissions ou de portées nommés, puis de les réutiliser et les combiner avec d’autres permissions ou portées nommées
  • Cela permet de construire des ensembles descriptifs plus granulaires, composés de permissions et de portées simples ou complexes
  • Grâce à cette amélioration, le cœur de Tauri peut désormais déterminer si un message d’appel de commande issu du WebView frontend est autorisé à atteindre la fonction de commande

Réécriture de la communication inter-processus (IPC)

  • La couche IPC a été réécrite pour prendre en charge une fonctionnalité attendue de longue date, Raw Payload, tout en modifiant aussi son fonctionnement interne
  • Auparavant, toutes les charges utiles IPC étaient sérialisées et désérialisées en JSON, ce qui entraînait un surcoût. Cela devenait perceptible dès que plus de quelques kilo-octets étaient échangés entre le frontend et le backend
  • Le nouveau système prend en charge les Raw Request. Cela permet d’utiliser directement des octets bruts ou son propre processus de (dé)sérialisation (par ex. bson, protobuf, avro, etc.) afin d’accélérer les transferts de gros volumes de données du backend vers le frontend, ou inversement

Guide de déploiement

  • Avec Tauri 2.0, la diversité des déploiements a fortement augmenté grâce à l’écosystème mobile et aux contributions de la communauté
  • La documentation de déploiement inclut des guides officiels expliquant comment publier sur Apple Appstore, Google Play, Microsoft Store, CrabNebula Cloud, Flathub, Snapcraft, AUR et d’autres formats de distribution

4 commentaires

 
plumpmath 2024-10-10

https://github.com/DioxusLabs/dioxus

Si on développe uniquement en Rust, ça paraît meilleur. Je viens juste de découvrir ça. J’allais me concentrer sur Tauri, mais puisqu’on peut tout développer avec un seul langage, Rust, je vais partir là-dessus~* Apparemment, on peut accéder directement au natif, plus rapidement qu’avec l’IPC.

 
xguru 2024-10-10

Dioxus - bibliothèque d’UI pour Rust influencée par React
Quand je l’avais posté il y a quelque temps, comme c’était la version 0.3, il y avait des commentaires disant qu’il y avait encore quelques difficultés.

Dioxus 0.5 : applications web, desktop et mobiles développées en Rust
Maintenant que c’est la 0.5, les choses ont peut-être changé.

 
tsboard 2024-10-05

C’est vraiment une nouvelle incroyable. Cela semble aussi très utile pour le développement d’applications natives sous Windows, et cela devrait aussi être vraiment très utile sur mobile.

 
bus710 2024-10-05

Une réécriture de l’IPC… Ça devrait être pratique pour envoyer de grosses données comme des vidéos.