Un client écrit en TSX, juste à côté de Rust
Dans NSH, seul le code de votre app est en JS. Le graphe réactif, le moteur de rendu, la mise en page et chaque module sont en Rust. Les apps TSX et Rust partagent le même pipeline d’exécution natif.
- 120 FPS
- 22 sparklines en direct, un carnet d’ordres et un flux de transactions mis à jour ensemble, image p95 sous 4 ms
- ~0.1 ms
- Démarrage du moteur (75–155 µs)
- ~1 ms
- Première image d’une app compteur
- ~0.12 ms
- Un tap, de l’événement au commit
- < 1 KB
- Le code applicatif d’un hello world
- ~1.1 MB
- Le téléchargement d’une app TSX sur le web (runtime Wasm)
Petites apps mesurées : quelques MB au-dessus de la fenêtre système nue | TSX | Rust | Fenêtre système nue |
|---|
| Empreinte mémoire, macOS | ~20 MB | ~19 MB | ~17 MB |
|---|
| Mémoire privée modifiée (private dirty), Linux (GTK, GL) | ~48 MB | ~44 MB | ~38 MB |
|---|
| Au-dessus de la fenêtre système, macOS / Linux | +3 / +9 MB | +2 / +5 MB | |
|---|
| Working set privé, Windows | ~15 MB | ~14 MB | |
|---|
Taille sur chaque plateforme : le hello world de nsh init | Exécutable TSX | Paquet TSX | Exécutable Rust | Paquet Rust |
|---|
| macOS (Apple silicon) | 19.8 MB | 9.5 MB | 12.4 MB | 6.0 MB |
|---|
| Linux (x86_64) | 25.7 MB | 11.6 MB | 16.5 MB | 7.5 MB |
|---|
| Windows (x86_64) | 28.6 MB | 12.4 MB | 15.0 MB | 6.7 MB |
|---|
| Web | — | ~1.1 MB à télécharger | — | — |
|---|
Builds de release. Mémoire au repos : empreinte macOS sur un Apple M3 (l’app compteur et le template Rust en 1200 × 800 ; la fenêtre système contient un seul label en 480 × 640) ; mémoire privée modifiée sous Linux sur une NVIDIA RTX 3060 Ti (les templates TSX et Rust de nsh init et une fenêtre GTK avec un seul label, le tout en 480 × 640) ; working set privé sous Windows. La mesure de chaque plateforme, avec RSS et USS, figure dans le rapport. Tailles : builds de release de nsh package, avec optimisation à l’édition de liens et symboles retirés ; l’exécutable TSX embarque le runtime QuickJS, le code de l’app fait moins de 1 KB ; le paquet est le .app compressé sur macOS, le .tar.gz sur Linux et le .zip sur Windows ; sur le web, ce que le navigateur télécharge, runtime et app compris. Le rapport de performances complet