Extensibilité et code étranger
Fort pour consommer des bibliothèques étrangères, pragmatique pour les relier ; le plan des greffons, de la FFI et de l'embarquement est surtout prévu.
1 Strong · 2 Solid · 3 Partial · 6 Emerging
Mesuré contre : FFI · Pyodide · Dossiers : base/plugin(s'ouvre dans un nouvel onglet) · base/extercode(s'ouvre dans un nouvel onglet) · base/extincode(s'ouvre dans un nouvel onglet) · Pour les programmeurs : la référence de ce domaine

Repensé depuis les premiers principes
Ce que Softanza a gardé de ce qui marche, et ce qu'elle a repensé, tel que la bibliothèque l'a écrit dans ses documents de conception et ses narrations.
La manière SoftanzaUn plugin est une capacité étrangère gouvernée : du code que l'hôte ne possède pas, exécuté selon un contrat que l'hôte fait respecter.
Gardé des meilleures pratiques
- Chaque langage fait ce qu'il fait le mieux : Python pour l'apprentissage automatique, R pour les statistiques, Julia pour le calcul scientifique, Prolog pour la logique, via une seule interface. source(s'ouvre dans un nouvel onglet)
- Le code étranger s'exécute dans son propre environnement, à l'écart de l'hôte. Les données sont converties à l'aller et au retour, et la sortie console est journalisée. source(s'ouvre dans un nouvel onglet)
- L'isolation se choisit par plugin : un état séparé et peu coûteux dans le processus, ou un processus à part qui survit aux plantages et peut être arrêté de force. source(s'ouvre dans un nouvel onglet)
Repensé
- Un plugin reçoit une valeur et rend une valeur ; il n'entre jamais dans l'hôte. Les effets cachés sur l'hôte sont impossibles par construction, et non interdits par promesse. (prévu) source(s'ouvre dans un nouvel onglet)
- Aucune fausse promesse de bac à sable : le niveau interne au processus résiste aux plugins bogués, pas aux malveillants. Une source non fiable n'a droit qu'à un processus séparé. (prévu) source(s'ouvre dans un nouvel onglet)
- Conçu pour qu'un programme accepte du code auquel il ne fait pas confiance, même écrit par un modèle : chaque appel est journalisé avec son auteur, chaque modification est réversible. (prévu) source(s'ouvre dans un nouvel onglet)
- Une solution trouvée en ligne dans un autre langage peut être collée et exécutée avec peu de retouches, car des fonctions reproduisent celles de ce langage, comme range en Python. source(s'ouvre dans un nouvel onglet)
The most honestly-mixed group in the survey. Softanza consumes a large, carefully-vendored foreign-code stack (tree-sitter, SQLite, curl, mbedTLS, zlib, ggml, RmlUi, HarfBuzz, PCRE2, all compiled from source) and bridges pragmatically to Python/R/Julia/C/Prolog/Node by subprocess, but the extensibility the group is named for is overwhelmingly planned: no in-process FFI, no embedded interpreter, and the plugin plane ('a plugin is governed foreign capability') is a detailed plan with a recovered reference archive but zero live code.
Ce qu'un artisan en fait, et ce qui se distingue
- Strong foreign-code integration: a dozen serious native libraries built from source with no runtime dependencies
- Governed foreign capability (designed): accept code you don't trust, audit what it did, undo it
- SQL-in-Haro and paste-and-tweak foreign-syntax shims
- The recovered 2024 plugin system proves per-call VM-state isolation works (~3.1 ms/call)
Ce qui est dû
- Fix the red interop suites (C22 duplicate shim definitions, 0 passing)
- Build the plugin plane (PL0-PL5)
- In-process FFI (dlopen / cffi-style)
- Configurable toolchain discovery (retire the hardcoded d: interpreter paths)
La manière Softanza, exécutée
Ce que Softanza fait autrement dans ce domaine, montré par du code tiré de ses narrations et de ses gardes, et exécuté pour cette page.
Des fonctions reproduisent range de Python, borne de fin exclue et pas autorisé, pour que le code porté depuis Python garde son sens.
Then("range0(3) = [0..2]", @@(range0(3)), "[ 0, 1, 2 ]")
Then("range0([1, 4]) = [1..3]", @@(range0([1, 4])), "[ 1, 2, 3 ]")
Then("range0([1, 6, 2]) steps by 2", @@(range0([1, 6, 2])), "[ 1, 3, 5 ]")
Then("range0([5, 1, -1]) walks backward", @@(range0([5, 1, -1])), "[ 5, 4, 3, 2 ]")THEN range0(3) = [0..2] [PASS] THEN range0([1, 4]) = [1..3] [PASS] THEN range0([1, 6, 2]) steps by 2 [PASS] THEN range0([5, 1, -1]) walks backward [PASS]
exécuté le 2026-10-01 21:18 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/test/extincode/51_extincode_narrated.ring(s'ouvre dans un nouvel onglet)
Les articles de ce domaine (5)
- Expanding Haro’s Horizons: Unlocking New Possibilities with Python 2025
- R() in Haro: Statistical Power, One Call Away 2025
- Softanza EXCIS: Orchestrating a Polyglot Symphony 2025
- Softanza ExterLib: A Foundation for Domain-Driven Polyglot Programming 2025
- Refinement-Centered Programming with stzPolyCode 2025
Les couloirs, un par un
Les couloirs et leurs notes sont cités tels qu'ils ont été lus à la source, le Read from the source on 2026-09-16, from a read-only main worktree -- base/extercode and base/extincode loaded in stzBase; base/plugin = plan + recovered/ archive, not loaded; test/plugin absent.

