Où Kshana s'exécute, et où il ne s'exécute pas
Une limite de périmètre, consignée afin que personne ne la découvre sous la forme d'un engagement lors d'une réunion.
Abréviations : CPU, unité centrale de traitement ; GPU, unité de traitement graphique ; NPU, unité de traitement neuronal ; FPGA, réseau de portes programmable sur site ; MCU, microcontrôleur ; RTOS, système d'exploitation temps réel ; OPS-SAT, le satellite laboratoire de logiciels en orbite de l'Agence spatiale européenne ; PyPI, le Python Package Index ; MCP, le Model Context Protocol ; AI, intelligence artificielle ; JSON, JavaScript Object Notation.
Exécutions#
| Cible | Comment | Notes |
|---|---|---|
| Postes de travail et serveurs Linux, macOS et Windows, x86-64 et ARM 64 bits | le binaire kshana, ou la crate Rust |
binaires de la version publiée pour Linux x86-64, macOS (Apple silicon et Intel) et Windows x86-64 ; sur les autres cibles, cargo install kshana le construit |
| Python 3,9 ou version ultérieure | le paquet wheel kshana sur PyPI (--features python) |
wheels pour Linux, macOS et Windows, x86-64 et ARM 64 bits |
| Clients MCP (agents d'IA) | le serveur kshana-mcp : cargo install kshana-mcp, ou l'image de conteneur |
image pour linux/amd64 et linux/arm64 |
| Navigateurs et environnements d'exécution JavaScript | le paquet WebAssembly sur npm (--features wasm) |
le même moteur, compilé en WebAssembly |
| Un petit ordinateur à bord d'un bateau, à côté du récepteur | la version de référence dans deploy/reference-build/ : kshana receiver-trust live avec la porte, qui publie vers Signal K et, sur option, vers OpenCPN |
à titre consultatif, et non un équipement de navigation homologué ; non testé sur un navire par le projet ; voir MARINE-INTEGRATIONS.md |
| Serveurs Signal K | le module d'extension dans integrations/signalk/ |
livré et testé unitairement sur une sortie synthétique enregistrée ; non publié sur npm |
| OpenCPN | NMEA 0183 en mode porte sur TCP depuis le moniteur | sur option ; voir MARINE-INTEGRATIONS.md |
| Ordinateurs de charge utile de classe Linux | la crate Rust ou le binaire, compilé en croisé | Ordinateurs de charge utile de classe OPS-SAT et similaires |
| Nœuds en périphérie avec un GPU, un NPU ou un FPGA à côté d'un CPU Linux | sur le CPU Linux | Kshana n'utilise aucun des accélérateurs ; il s'exécute à côté d'eux |
Ne s'exécute pas#
Un MCU de vol à nu (bare-metal) ou un petit RTOS sans la bibliothèque standard de Rust. Kshana est une crate std de bout en bout : elle alloue sur le tas, lit des fichiers, met en forme du JSON et utilise les fonctions en virgule flottante de la bibliothèque standard. Il n'existe aucune version no_std ni aucune fonctionnalité qui en produise une.
Décision : nous ne proposons pas de noyau de vol no_std. En construire un serait un produit distinct, avec sa propre charge de vérification, et cela placerait Kshana dans le logiciel de vol, où la qualification est un programme à part entière pour lequel nous n'avons aucune voie d'accès.
Que faire à la place#
- Exécutez Kshana au sol ou sur un ordinateur de charge utile, et téléversez ses résultats. Le type de scénario
slot-timingproduit exactement les chiffres dont un calculateur de vol a besoin : une cadence de positionnement, un instant de dépassement, une garde. Un tableau de ces valeurs fait quelques octets. - Portez une forme analytique, si c'est tout ce qu'il faut. L'inversion du holdover est une courte recherche de racine monotone sur une variance polynomiale, documentée avec ses équations dans
SLOT-TIMING.md. La réimplémenter dans du code de vol est simple ; le code dérivé de Kshana reste sous la licence de Kshana.
Également hors périmètre#
Les garanties temps réel strict (Kshana alloue de la mémoire et n'avance aucune affirmation sur le temps d'exécution dans le pire cas) ; la qualification en vol de quoi que ce soit ; et un protocole de synchronisation, un contrôleur ou une pile de routage. Kshana fournit les éléments de preuve de synchronisation temporelle à partir desquels ces systèmes sont conçus. Il n'est pas l'un d'eux.