Softanza
DémarrerEnglish
Softanza
Systèmes et exécution

Concurrence et distribution

D'excellents substrats : nœuds, supervision, multicœur, flotte ; le vocabulaire unificateur n'existe qu'en conception.

6 Strong · 4 Solid · 1 Partial · 1 Emerging

Mesuré contre : Go · Akka · Erlang/OTP · Ray · Dossiers : base/concurrent(s'ouvre dans un nouvel onglet) · base/cluster(s'ouvre dans un nouvel onglet) · base/network(s'ouvre dans un nouvel onglet) · Pour les programmeurs : la référence de ce domaine

le travail réparti sur les cœurs de cette machine, chaque bloc une tâche, à l'échelle
le travail réparti sur les cœurs de cette machine, chaque bloc une tâche, à l'échelle. 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 SoftanzaLe processus est l'unité naturelle de la concurrence : les nœuds ne partagent rien, ne communiquent que par messages, et chaque passage a un coût mesuré qui décide s'il vaut la peine.

Gardé des meilleures pratiques

  • D'Erlang, Softanza reprend les processus sans partage, les messages comme seul contact, la transparence de l'emplacement et des superviseurs qui relancent les nœuds selon des stratégies déclarées. source(s'ouvre dans un nouvel onglet)
  • La boucle d'événements est libuv, intégrée et compilée depuis les sources, plutôt qu'un réacteur maison : ne pas réinventer la roue, et profiter de son support Windows éprouvé. source(s'ouvre dans un nouvel onglet)
  • La sécurité réutilise l'existant : le même signataire HMAC et le même canal TLS mutuel que le reste de la bibliothèque. Aucune cryptographie nouvelle, aucun second signataire. source(s'ouvre dans un nouvel onglet)

Repensé

  • La partie difficile est refusée par écrit : ni livraison exactement-une-fois, ni consensus, ni courtier. « Au plus une fois » est le défaut honnête ; l'état partagé va dans une base de données. source(s'ouvre dans un nouvel onglet)
  • Aucune attente n'est infinie, aucune file n'est muette. Chaque requête porte un délai obligatoire, et chaque boîte aux lettres est bornée et compte ce qu'elle rejette. source(s'ouvre dans un nouvel onglet)
  • Une topologie est une donnée qui se décrit et se recrée à l'identique. Déplacer un nœud sur une autre machine tient en une ligne : Deploy. source(s'ouvre dans un nouvel onglet)
  • La concurrence est un vocabulaire d'aiguillage, pas une machine : Concurrently envoie le travail au moteur, à la boucle ou aux processus, et ne répartit que si la mesure le justifie. (prévu) source(s'ouvre dans un nouvel onglet)

An unusual shape: the substrates are complete and excellent, while the vocabulary over them is design-only. Three sub-planes ship, each heavily guarded with real multi-process tests -- OTP-style supervised nodes, a measured-gated multicore tier, an elastic HTTP worker fleet -- over a full libuv reactor with mTLS. What is not built is the plane's own headline: the one routing vocabulary (Concurrently()) that would let you say 'do this concurrently' and land it on the right substrate.

Ce qu'un artisan en fait, et ce qui se distingue

  • OTP-style supervision proven under real kills -- the pragmatic 80% of Erlang in a non-BEAM language
  • A measured-gated multicore tier: bit-identical or justified, elementwise killed by the memory wall
  • A full libuv reactor where no callback crosses into Haro (submit -> ticket -> await)
  • An elastic HTTP worker fleet with a smart router and autoscaling, guarded with a real 3-process fleet

Ce qui est dû

  • The routing vocabulary: Concurrently() + stzTask/ticket/stzWorkshop (CN0-CN5)
  • Channels and structured concurrency
  • Federation over the node plane; UDP and a native WebSocket; a managed-PKI mTLS story
  • Dynamic task-graph distribution and live multi-machine verification

Un exemple, exécuté

Le moteur voit les douze cœurs de ce portable. Les gardes de cluster, de flotte et de multicœur sont la preuve de ce groupe ; ici, le compte.

Softanza
? StzEngineSystemCpuCount()
Sortie
12

exécuté le 2026-10-01 à 01:40

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.

Message-passing nodes & mailboxes
Strong
Share-nothing stzNode with an engine-enforced bounded inbox, On(tag,f) dispatch, location-transparent Send/Ask over STZM; guarded with real OS processes.stzNode, stzNodePlane, stzm.zig; D0-D2 guards under test/cluster
Actor supervision
Strong
OneForOne/AllForOne, a restart budget with escalation, heartbeats, death-notice monitors; proven by surviving vs wiped state under real kills.stzNodeSupervisor; D3 guard
Distributed computing (D0-D6)
Strong
Share-nothing OS processes exchanging STZM frames over reactor TCP/mTLS, topology as data, Deploy moves a node in one line; guarded end-to-end D4-D6.SOFTANZA_DISTRIBUTION_PLAN.md; D4-D6 guards (semantic-search node Deploy'd and killed mid-run)
Multicore parallel tier (M1-M5)
Strong
Five parallel sites behind a measured calib.Gate: matmul, LU, reductions, kNN/distance; 2.7-6.7x; elementwise killed by the memory wall.SOFTANZA_COMPUTE_MODEL.md; matrix/linalg/stats/cluster/umap.zig
Async reactor / event loop
Strong
Vendored libuv on its own thread, submit -> ticket -> await, no callback crosses into Haro; timers, TCP, subprocess, curl HTTPS, HTTP/STZM/TLS listeners.reactor.zig, stzReactor
Worker fleet & autoscaling (R8)
Strong
stzWorkerPool, 3-tier stzRequestClassifier, stzAppCluster, stzClusterSupervisor autoscaling on /health, p50-p99 telemetry; guarded with a real 3-process fleet.stzAppCluster, stzClusterSupervisor; R8 fleet guard
Fault tolerance & hardening
Solid
Retry-with-failover, circuit breakers, token-bucket rate limiting, at-most-once delivery, mandatory timeouts; fleet-scoped, thinner than a service mesh.hardening guard (SSRF, CRLF smuggling, injection)
Networking (HTTP / TCP)
Solid
HTTP client sync + async, TCP client/server, URL parsing, DNS; framing fuzzed and property-tested; no UDP, WebSocket is curl-based.http.zig, tcp.zig
Transport security (mTLS)
Solid
Mutual TLS via vendored mbedTLS: server require_client, client reactor_connect_tls, a reactor-free smoke guard; test certs only, no PKI lifecycle.mtls_smoke.zig (exit-code gated)
Compute federation
Solid
stzComputeFederation: Join, a governance lattice (risk/grant/authority), FederatedCall over reactor async curl; facet discovery still HTTP (D5 residue).stzComputeFederation
Dynamic task-graph distribution
Partial
Distribution routes named work only; no Ray-style task graph with dependency scheduling; the plan refuses it until a workload earns it.
The routing vocabulary (Concurrently)
Emerging
Plan of record CN0-CN5 (Concurrently(), stzTask, ticket, stzWorkshop); no code exists, base/concurrent/ holds only the plan, its test dir is empty.SOFTANZA_CONCURRENT_PLAN.md (plan-only)