Softanza
DémarrerEnglish
Softanza
Entrées-sorties, formats, extensibilité, médias

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

le moteur au centre, quatre langages et le C à distance, chacun par une seule porte gouvernée
le moteur au centre, quatre langages et le C à distance, chacun par une seule porte gouvernée. dessiné le 2026-10-01 par le script du site tools/areas-figurative.ring, exécuté dans la bibliothèque au commit 0e72e2e2c · la source(s'ouvre dans un nouvel onglet)

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.

Softanza
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 ]")
Sortie
  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)

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.

Foreign-library consumption (the vendored stack)
Strong
A vendored C/C++ stack compiled from source via Zig (tree-sitter, SQLite, curl, mbedTLS, zlib, ggml, RmlUi, HarfBuzz, PCRE2); no external runtime deps
Foreign-code parsing (tree-sitter)
Solid
stz_polyglot parses Python and JavaScript (vendored grammars, no interpreter) into a declaration/call protocol feeding stzCodeGraph; two grammars, parse-onlystz_polyglot
External-tool bridges
Solid
Subprocess bridges stzDotCode (Graphviz dot), stzQmlCode (Qt qml runtime), stzImgToAscii (vendored im2ansi.exe); stzImgToAscii ships but is never loaded
Call-out interop (extercode)
Partial
stzExterCode runs Python, R, Julia, C, Prolog and Node via temp file + stzSystemCall + eval(); subprocess-only, hardcoded d: paths, suite currently redtest/extercode (red)
Foreign-syntax shims (extincode)
Partial
Haro shims to paste Python, PHP, C#, Perl, C ternaries and SQL-in-Haro over stzTable; shims not a runtime, the JS shim is an empty stub, suite redtest/extincode (red)
Interop robustness (test state)
Partial
Both interop suites have real assertions but are entirely red: C22 function-redefinition, 0 passing (echo/range0 defined in both PHP and Python shims)test/extercode + test/extincode
In-process FFI
Emerging
None for user code: no dlopen / cffi / direct-C-call surface; the only call-out is the subprocess bridge, an order of magnitude heavier
Embedded interpreters (Pyodide-style)
Emerging
None: no in-process Python / JS / Lua interpreter embedded in the engine; foreign execution is subprocess-only
Plugin plane -- load / register / govern
Emerging
A plan of record (PL0-PL5) and a recovered/ archive marked reference-only; state_* VM primitives exist; no live code, not loaded, no test dirSOFTANZA_PLUGIN_PLAN.md; recovered/ 2024 system (~3.1 ms/call)
Governance of untrusted capability
Emerging
Designed five-clause contract: isolation, per-call ledger, cooperative constraint, currency, governance; XfU reversal and @plugin_author provenance; unbuilt
Isolation & sandboxing
Emerging
Designed two-tier isolation (:State state / :Process reactor spawn); explicitly refuses to be a syscall-level security sandbox; unbuilt
Distribution -- package / marketplace / signing
Emerging
None, and the plugin plan explicitly states it is not a package manager, marketplace or code-signing scheme; deliberately deferred