Apprenez à utiliser Crux dans votre projet.
Suivez le ReadMe dans le référentiel du projet sur GitHub.
Lire la documentation de l'API
Regardez la conférence d'introduction lors de la récente conférence Rust Nation 2023 à Londres.
Vous pouvez également rejoindre la conversation amicale sur notre canal Zulip.
Notez que Crux est expérimental et actuellement en développement actif (probablement pas prêt à l'emploi dans les applications de production). Cependant, la branche principale doit toujours bien fonctionner, et nous essaierons de garder les exemples et la documentation à jour au fur et à mesure. Nous pensons que l'API s'est maintenant installée, alors faites un jeu! :-)
Le concept architectural fondamental est la stricte séparation des tâches de calcul pures des tâches qui provoquent des effets secondaires. Ceci est similaire à la façon dont Elm fonctionne.
Dans le diagramme ci-dessus, le "noyau" intérieur est compilé et lié au "shell" extérieur sur chaque plate-forme en tant que bibliothèque:
En fait, comme WebAssembly (WASM) est l'une des cibles de compilation, le noyau doit rester sans effet secondaire, en raison de la nature en bacs à sable de l'environnement d'exécution WASM.
En tant que tel, le noyau est complètement isolé et sécurisé contre les attaques de chaîne d'approvisionnement logiciels, car elle n'a accès aux API externes. Tout ce qu'il peut faire est d'effectuer des calculs purs et de conserver l'état interne.
Suivant l'architecture ELM, le noyau définit les types de composants clés dans l'application:
Event - une enum décrivant les événements que le noyau peut gérerModel - décrit l'état interne de l'applicationViewModel - représente des informations qui doivent être affichées à l'utilisateur Les deux premiers sont liés par la fonction update , familière à partir des architectures de l'approvisionnement ELM, Redux ou d'autres événements, qui a actuellement ce type de signature:
fn update (
& self ,
event : Event ,
model : & mut Model ,
capabilities : & Capabilities ,
) Le travail de la fonction update consiste à traiter un Event , à mettre à jour le modèle en conséquence et à demander potentiellement certains effets secondaires à l'aide de capacités.
Le "Shell" natif de la plate-forme entourée est écrit en utilisant la langue appropriée pour la plate-forme et agit comme l'environnement d'exécution dans lequel toutes les tâches non pure sont effectuées. Du point de vue du noyau, le shell est la plate-forme sur laquelle le noyau fonctionne.
Après l'architecture ELM, l'interface avec le noyau est basée sur un message. Cela signifie que le noyau n'est pas en mesure d'effectuer autre chose que des calculs purs. Pour effectuer une tâche qui crée un effet secondaire (comme un appel HTTP ou une génération de nombres aléatoires), le noyau doit le demander à la coquille.
Le noyau a un concept de capacités - interfaces réutilisables pour les effets secondaires courants - soutenant le feu et l'ouvrir, la demande / réponse et la sémantique en streaming.
La seule capacité intégrée est Render . Mais ce référentiel contient quelques capacités à différentes étapes de la maturité, et vous pouvez facilement écrire le vôtre si vous voulez:
Render (demander à l'interface utilisateur de rendre le ViewModel) - Source, intégrée à crux_core , demande uniquementHttp (implémentation HTTP complète basée sur l'API de surf) - source, caisse, demande / réponseKeyValue (API de base du magasin de valeurs clés de base) - source, caisse, demande / réponseTime (obtenir l'heure actuelle, notifier après durée, notifier à instant) - source, caisse, demande / réponsePlatform (obtenez la plate-forme actuelle) - source, caisse, demande / réponseSSE (événements de base des serveurs) - Source, demande / streamingPubSub (sous-marin avec streaming) - Source, demande / réponse / streamingTimer (démarrage de la minuterie, finition, annuler) - source, demande / réponse / streamingDelay - partie du tutoriel dans le livreRed Badger est le cabinet de conseil en produits numériques qui a confiance en Blue Chips et des marques mondiales. Notre conception de produits et notre pedigree technique nous permettent de créer des produits numériques à fort impact que les clients souhaitent. Nous utilisons des approches d'ingénierie modernes pour fournir des changements durables. Et intégrer les capacités numériques pour alimenter l'innovation continue.
Zulip est une application de chat d'équipe moderne open source conçue pour garder les conversations en direct et asynchrones organisées.
Zulip Sponsor Crux en fournissant notre serveur Zulip - merci Zulip!