Passer au contenu

hello.kotoba / IPFS

;; W1 pure representative: ordinary Clojure-shaped values/functions only.
(ns examples.w1-pure)

(defn double [n]
  (+ n n))

(defn main []
  (double 21))
  • CID source bafkreiaeohkv2zu… IPFS CIDv1 · brut · sha2-256 de hello.kotoba
  • source SHA-256 0471d55d668ed5f9… sha-256 du fichier exact montré ici
  • KIR vérifié SHA-256 92635333e1e0da86… la représentation typée, vérifiée par effet, admise par le compilateur
  • identité d'artéfact SHA-256 cfea3b89cc022a6b… lie source, politique, contrat du compilateur et ABI cible

Le CID source ouvre hello.kotoba. Les digests SHA-256 identifient les octets source, KIR vérifié et identité d'artéfact ; ce ne sont pas des adresses IPFS.

SÛR + RAPIDE · CONÇU POUR LOGICIELS GÉNÉRÉS PAR IA

Code sûr. Construit pour la vitesse machine.

Kotoba est un langage en forme de Lisp conçu pour un logiciel généré par IA sûr et ultra-rapide. Programmes inspectables, capacités explicites, et artéfacts adressés par contenu connectent les vérifications du compilateur à l'exécution contrôlée.

BUILD FROID LE PLUS RAPIDE · 4 DE 4 ORDONNANCEMENTS QUALIFIÉS

Construction à froid la plus rapide de toute chaîne d’outils sur cet hôte.

11.75ms

Kotoba source vers un artéfact WebAssembly, compilation à froid — puis exécuté, et la réponse vérifiée après l’arrêt de l’horloge.

  1. KotobaCLI publié · WebAssembly 11.75 msle plus rapide ici
  2. C / ClangHôte natif 29.08 ms2.5× Kotoba
  3. Rust / rustcWebAssembly 38.99 ms3.3× Kotoba
  4. Rust / rustcHôte natif 56.02 ms4.8× Kotoba
  5. JVM / javacclasse JVM 171.53 ms14.6× Kotoba

Temps mur de construction à froid du processus en millisecondes ; plus court est plus rapide. K=1 source, voies entrelacées sur un hôte, 7 échantillons chacun.

Tous les ordres 4 passent perfgate à sa politique par défaut non relâchée — au moins 5% et séparé de propagation propre aux bras — donc l'ordre est maintenu même si l'hôte était occupé. Limité à cet hôte, cette taille de source et cette exécution : le temps de construction n'est pas vitesse d'exécution, l'avantage se réduit à mesure que la source grandit, et le publié le binaire a un plafond strict de correction. Les cinq benchmarks, y compris ceux qui vont à l'encontre de Kotoba, sont ci-dessous. Mesuré 2026-08-31 activé Apple M4.

Quand l’IA génère, construit, teste et régénère le code en continu, la latence de construction devient le débit de l’infrastructure.
REFUSER PAR DÉFAUT

Pas d'autorité ambiante

Pas de système de fichiers, réseau, processus, horloge, modèle ou secrets implicites.

KIR VÉRIFIÉ

L'autorité survit à la compilation

Types, effets, ressources et support cible sont admis avant émission.

APPLIQUÉ PAR L'HÔTE

Seule la subvention est liée

L'hôte et le fournisseur appliquent un périmètre concret et enregistrent la décision.

PLANCHER POST-QUANTIQUE

Pas de rétrogradation classique uniquement

Les nouvelles limites de chiffrement et de publication nécessitent des preuves ML-KEM ou ML-DSA et rejettent le matériel PQ dépouillé.

01 Le problème

L'IA peut écrire plus vite que les humains ne peuvent réviser

Le code généré peut être utile et atteindre malgré tout un fichier, un réseau, un secret, un processus, un modèle ou une surface de paiement que la requête ne voulait pas exposer.

L'ANCIEN DÉFAUT

Construire largement, contraindre plus tard

Un programme à usage général commence avec une sémantique ambiante. Des sandbox, IAM, conteneurs, politiques et signatures sont ajoutés autour pour récupérer la limite prévue.

LE DÉFAUT KOTOBA

Accorder étroitement, puis compiler

Les effets et capacités font partie du calcul admis. Si la cible ne peut pas prouver et lier la subvention, elle n'émet ni n'exécute l'artéfact.

Kotoba complète l'isolation du runtime et de l'OS ; il ne rend pas ces couches inutiles.

Là où l'esprit de Lisp et la réécriture de graphe GP 2 rencontrent la discipline de Rust

Kotoba est un petit langage orienté données, en forme de Clojure. Sa conception s’appuie sur la tradition Lisp du code-comme-données et Réécriture de graphe basée sur règles de GP 2, avec une discipline statique autour de l'autorité, des effets, des ressources, des paquets et de l'identité des artefacts.

INTUITIF

Code comme données lisibles

Valeurs immuables, fonctions ordinaires, données explicites et syntaxe composable sont faciles à produire et inspecter pour humains et modèles.

DÉCLARATIF

Dire ce qui peut arriver

Effets, capacités, ressources, dépendances, et cibles sont des entrées visibles à l'admission — pas des surprises découvertes après déploiement.

SÉCURITÉ D'ABORD

Moins de langage, frontière plus dure

Pas d'interopérabilité ambiante, de chargement de code à l'exécution, de mutation illimitée, de macros définies par l'invité ou de concurrence non bornée dans la surface du composant admis.

SÛR + RAPIDE · CONÇU POUR LES LOGICIELS GÉNÉRÉS PAR IA.

Ceci est une direction de confinement, pas une revendication « inviolable ». Le compilateur, le vérificateur, l'exécution, les fournisseurs, les racines de politique, la garde des clés et l'isolation OS restent dans la base de confiance informatique.

02 Comment la frontière fonctionne

Sécurité sur l'ensemble du calcul

La frontière est portée de l'intention à l'exécution. Chaque étape restreint ou vérifie l'autorité ; aucune étape ultérieure n'est autorisée à inventer une autorisation.

1 · SOURCE

Intention déclarative

Une petite surface en forme de Clojure garde les programmes lisibles et exclut les issues de secours ambiantes.

2 · VÉRIFIER

KIR vérifié

Les types et les effets transitifs deviennent une représentation indépendante de la cible et inspectable.

3 · ADMETTRE

Intersection d’autorité

Les concessions demandées, déléguées, de politique locale, de ressources et de cible ne peuvent que se restreindre.

4 · IDENTIFIER

Adresser l'artéfact

Code, dépendances, politique, contrat du compilateur et ABI cible lient l'identité du calcul.

5 · APPLIQUER

Lier à l'hôte

Le runtime et le fournisseur lient uniquement les capacités admises, appliquent des budgets finis et émettent des reçus.

L'identité du contenu n'est pas une autorité.

Vérification CID, signatures, révocation, politique hôte, contrôles de ressources et isolation OS restent des frontières séparées.

Évaluation Lisp, sans évaluation hôte ambiante

Kotoba évalue le code vérifié comme des données adressées par contenu. Le familier (eval request) la surface descend vers le typé :code/eval capacité ; il ne reçoit jamais de texte source, de forme de lecteur, d'espace de noms ou d'objet hôte.

CID DE DÉFINITION

Quel code ?

Le CID sélectionne une définition KIR vérifiée par hachage et sa fermeture de dépendance uniquement CID.

CID D’ADMISSION

Peut-il s'exécuter ici ?

L'interface exacte, la ligne d'effet complète, l'allocation actuelle, le carburant, et la profondeur d'évaluation décroissante sont fixés avant l'exécution.

CID DE VALEUR

Qu’est-ce qui est revenu ?

Le résultat typé est conservé comme preuve adressée par contenu. Son hash ne peut pas autoriser rétroactivement un effet.

Identité, autorité et preuve de résultat sont trois faits différents.

Contrat machine : lang/typed-eval.edn. Capacité du fil du compilateur : 30. L'application bornée reste une application ordinaire de fermeture de module fermé.

Paramètres par défaut pour une pile informatique axée sur l'IA

Ce sont des revendications techniques avec leur qualification attachée. Par défaut, prêt limité, partiel et direction sont des états différents ; aucun n'est promu silencieusement à universel.

DIRECTION MESURÉE

Compiler plus vite. Exécuter plus vite. Garder la frontière.

Kotoba publie des mesures de démarrage du compilateur, boucle développeur, exécution native et domaine de charge avec vérifications de résultats exacts. Les classements de vitesse actuels restent retenus jusqu’à ce que leurs portes d’hôte silencieux passent ; l’admission de sécurité n’est jamais retirée pour gagner un timing.

PRÊT BORNÉ

Stockage sans plafond linguistique.

Kotobase utilise l'identité du contenu, lectures de plage, historique immuable et stockage neutre fournisseur. Capacité physique, location, rétention, coût, réplication et budgets d'exécution restent explicites ; ce n'est pas une revendication de disque infini.

PAR DÉFAUT

Cryptographie post-quantique par défaut.

Chaque nouvelle frontière cryptographique Kotoba doit nommer une preuve ML-KEM ou ML-DSA et rejeter une rétrogradation classique uniquement. Les Passkey existants, transport, implémentations et garde des clés restent des frontières qualifiées séparément.

PAR DÉFAUT

Authentification présente. Autorité refusée par défaut.

L’identité Passkey appartient à la frontière de contrôle. Une identité vérifiée ne reçoit toujours aucune autorité système de fichiers, réseau, stockage, modèle, secret, paiement ou GPU tant qu’une concession explicite et limitée ne survit pas aux politiques locales et vérifications hôtes.

PRÊT BORNÉ

Délégation flexible qui ne peut que restreindre.

Les portées demandées, déléguées, de politique locale, de ressource et de cible se croisent. La délégation peut être composée et atténuée, mais ne peut pas créer une autorité ambiante ni élargir la concession de son émetteur.

PRÊT BORNÉ

Prêt pour Web3, neutre en chaîne à la racine.

Un Principal Kotoba stable et un contrôleur Passkey sont primaires. Les comptes CAIP-10, ERC-1271 et ERC-6492 sont des preuves explicites de comptes liés ; une adresse de portefeuille ne devient jamais silencieusement une autorité de stockage ou d’exécution.

PARTIELLEMENT IMPLÉMENTÉ

Zéro copie lorsque la propriété le permet ; une copie lorsqu'une frontière l'exige.

Les vues octet colonaires conservent le vecteur, ByteBuffer direct et Uint8Array en support. La projection Arrow peut garder les tampons non compressés colonaires via le chemin lacustre autorisé Kotobase. L'entrée réseau, la décompression, le téléchargement GPU et les mises à jour persistantes immuables restent des frontières de copie nommées.

PARTIELLEMENT IMPLÉMENTÉ

Données en forme de flèche. Noyaux SIMD CPU explicites et GPU natifs de l'appareil.

Sur Apple M4, une colonne Arrow float32 non compressée et non nullable a conservé un seul support mémoire linéaire WebAssembly tandis que Num exécutait un noyau explicite v128 f32x4 SIMD sur sa tranche de valeurs empruntées sans copies Arrow-vers-SIMD ; une queue scalaire couvrait les lignes restantes. En trois exécutions qualifiées de la même charge de travail à échelle 262,147 éléments et artéfact, ce noyau SIMD a terminé 3.66-3.72x plus vite que Wasm scalaire. C'est un résultat noyau-et-hôte, pas une revendication générale de runtime. Le même chemin de colonne borné conserve aussi un ArrayBuffer via ses vues CPU, traverse la limite de propriété GPU avec un upload WebGPU mesuré, s'exécute sur Metal, et retourne un scalaire de quatre octets. Colonnes nullables, autres types Arrow, suppression d'upload mémoire unifiée, noyaux plus larges, et qualification universelle CPU/GPU restent en attente.

PAR DÉFAUT

IA d'abord. Agent-sûr par défaut.

Kotoba est conçu pour les programmes écrits ou opérés par des agents et bots IA. Plus le modèle est fort, plus les effets explicites, ressources finies, confinement des capacités, reçus et application hôte sont importants.

DIRECTION

Frontières prêtes pour AGI, pas une revendication AGI.

L'architecture vise à maintenir l'autorité explicite à mesure que les modèles deviennent plus performants. Kotoba ne prétend pas que l'AGI existe ici, que les programmes générés sont fiables, ou que le confinement supprime le compilateur, le runtime, le fournisseur, la garde des clés et la base de confiance du système d'exploitation.

Autorité machine : lang/product-defaults.edn. Stockage physique illimité, zéro copie partout, classement universel de vitesse, AGI atteint, et inviolable restent des revendications absolues interdites.

Ce que Kotoba écrit par IA ne peut pas demander

Surface de langage délibérément absente
Frontière Pourquoi il est absent
compile, load, load-file, load-string, ns-resolve, read-string, require, resolve, use Les composants ne peuvent pas fabriquer du code ou de l'autorité à partir de l'état ambiant du processus. Les chaînes source, formes de lecteur, espaces de noms chargés et objets hôtes compilés n'ont jamais été inférés par effet et ne font pas partie d'un CID de définition. L'opération `(eval request)` admise est donc séparée : elle sélectionne KIR déjà vérifié par CID via :code/eval et est réadmise par l'hôte.
., .., import, new L'accès arbitraire aux objets et méthodes JVM/JS contourne l'admission de capacité. Non relaxable par dispatch de subvention : l'interop n'atteint jamais guard-component-ability-call, donc l'intersection de subvention, les reçus et la révocation ne peuvent pas voir l'appel. Vacant sur l'ABI wasm32 (aucun chemin n'existe) ; porteur à portable/trusté, où la porte du sous-ensemble est la seule frontière (aucun bac à sable VM séparé n'est revendiqué là).
alter-var-root, atom, binding, deref, dosync, ref, reset!, set!, swap!, var, volatile! L'état mutable externe est détenu par le fournisseur et médié par capacité/politique ; l'état local au composant doit utiliser un modèle explicitement borné. L'invariant est AMBIANT, pas la mutation elle-même. Depuis 2026-09-02 cette lecture a deux conséquences au lieu d'une. Une cellule qui s'échappe, persiste ou traverse une fonction est détenue par le fournisseur et reste sur le chemin :state-kit-desugar (la ligne d'effet montre :state, une subvention est requise à l'instanciation, les poignées de capacité sont rejetées comme valeurs stockées). Une cellule qui ne fait aucune de ces choses -- (let [a (atom 0)] (swap! a + 1) @a) -- n'a pas besoin d'hôte du tout : la tranche d'état local 1 la transforme en liaisons let ordinaires, donc rien ne l'observe sauf le code en ligne droite qui la possède et aucune cellule n'existe à l'exécution. atom / swap! / reset! / deref sont donc admis via élaboration, et refusés dès que la cellule s'échapperait. ref / dosync / volatile! / binding / var / alter-var-root / set! n'ont aucun modèle de capacité décidé et restent refusés en échec fermé.
agent, future, locking, pmap, send, send-off La planification des composants et les ressources doivent rester contrôlées par le fournisseur et limitées. Ni les CIDs de définition ni les autorisations déléguées ne mesurent le CPU ou la planification ; le carburant est par instance et les threads ambiants y échapperaient. Une capacité de spawn structuré avec carburant sous-budgeté est concevable mais indécise ; aucun chemin d'élargissement pour l'instant.
defmacro La surface des composants sûrs doit être inspectable statiquement avant exécution. Inflexible : l’expansion exécute du code à l’intérieur du compilateur (temps de compilation), et les hachages CID de définition post-désucre typé KIR, donc les macros non bornées s’exécutent tôt et rendent l’identité source non vérifiable. defdesugar (désucre pur borné) reste l’alternative admise.
catch, throw, try Le throw/try/catch ambiant est un flux de contrôle non local non suivi : il sort des portées que la ligne d’effet inférée ne mentionne jamais et saute les obligations de déroulement (la rétractation de la facette dataspace n’a pas encore de déroulement vérifié). L’interdiction porte sur la forme ambiante. Depuis 2026-09-02 la capacité d’abandon typé admet les têtes par élaboration : l’effet apparaît dans la ligne inférée comme :abort et la fonction se réduit en [:result T E], donc la forme ambiante n’existe jamais après élaboration. La tranche 2 (2026-09-02) a fait propager :abort à travers les appels et a normalisé A un opérande ou test d’abandon en une liaison let ; aucun ne dilate l’invariant, car un abandon propagé est sur la ligne de l’appelant et un normalisé A est la même élaboration en position différente. Là où la précondition de déroulement importerait, l’abandon reste refusé -- pour un APPEL maintenant ainsi que pour un throw.

Ce sont des contraintes de sécurité nommées dans lang/surface-status.edn, pas des fonctionnalités manquantes dans une feuille de route.

03 La preuve

Preuve, avec la frontière attachée

Kotoba sépare les preuves d'implémentation de la traction du marché et maintient le risque résiduel à côté de chaque revendication de sécurité.

cœurs 33

Utilisation interne en production

La pile Kotoba plus large exécute 33 cœurs d'inférence en interne. Cela prouve que l'équipe opère sa propre pile ; ce n'est pas une traction client, une adoption payée ou un revenu.

revendications 8

Les frontières sont lisibles par machine

Les revendications de sécurité nomment leur base informatique de confiance, les preuves négatives et le risque résiduel au lieu de se réduire à un slogan « inviolable ».

refuser par défaut

Pas de subvention, pas d'effet hôte

Une politique vide n'accorde aucune autorité sur le système de fichiers, réseau, processus, horloge, modèle ou secret. Les fournisseurs doivent aussi valider la portée concrète des ressources.

L'utilisation interne en production est uniquement une preuve de dogfooding. Elle n'implique pas de clients externes, de pilotes payants ou de revenus.

Cinq benchmarks. Cinq questions différentes.

Le démarrage du compilateur demande à quelle vitesse une source minuscule devient un artefact. L'échelle de construction demande ce qui arrive à ce nombre lorsque la source cesse d'être minuscule — et si l'artefact répond toujours. La boucle développeur sépare la résolution, la vérification, les constructions et le premier résultat. Le runtime natif demande à quelle vitesse le code déjà construit s'exécute. La suite domaine de charge demande comment se comportent les chaînes, collections, allocation, E/S, concurrence et une petite application réelle. Les résultats gardent les cinq questions — et leur statut de preuve — séparés.

DÉMARRAGE DE CONSTRUCTION · RANG NON QUALIFIÉ

chaînes d'outils 4, 21 exécutions chacune

Kotoba 40.998 ms · Rust 126.422 ms · C 146.324 ms · JVM 961.248 ms médian.

21 échantillons à froid du processus en rotation · charge1 30.79 → 39.79 · requis ≤ 1 · 2026-08-29 · Apple M4

EXÉCUTION · COUVERTURE COMPLÈTE

Charges 6 × comparateurs 5

Amu natif est testé contre Rust, Clang / C11, Zig, Go c-shared, Swift via une frontière d'appel native commune.

Paires comparateur/charge 30/30 · réponses exactes vérifiées

VITESSE D’EXÉCUTION · 19/30 QUALIFIÉE

19 de 30 paires

Amu natif gagne 19 des 30 paires comparateur/charge de travail par au moins 5%, séparé de la propagation propre aux bras. La revendication la plus rapide bornée nécessite chaque paire, donc elle reste non qualifiée — le compte est la moitié informative.

Au moins 2 de ces paires ne peuvent pas être gagnées du tout. Sur l'arithmétique étroite, amu, Apple clang -O3 et rustc -O3 compilent le noyau en la même séquence d'instructions 61 — clang et rustc sont identiques en octets, amu ne diffère que par les numéros de registres. Une marge 5% sur un code identique n'existe pas, donc la revendication bornée est inatteignable plutôt que simplement non satisfaite.

Médiane de 5 exécutions qualifiées sur l'hôte ; le score variait de 19 à 20 et 19 des 30 paires étaient qualifiées à chaque fois. Un seul échantillon bruyant peut disqualifier plusieurs paires à la fois, donc un score d'une seule exécution n'est pas précis pour une paire.

CPU occupé 0.090 → 0.069 → 0.076 · requis ≤ 0.10 · 2026-09-07

BOUCLE DÉVELOPPEUR · RANG NON QUALIFIÉ

Chemins de la chaîne d'outils 11

La résolution des dépendances, la vérification, les builds propres et sans changement, ainsi que le premier résultat à froid du processus sont enregistrés séparément.

Échantillons 7 par étape mesurée · load1 20.84 → 24.49 · requis ≤ 1

MONTÉE EN CHARGE DE LA CONSTRUCTION · PLAFOND TROUVÉ

Tailles sources 8

Le même programme d'une fonction à 2048, construit par chaque chaîne d'outils sur l'hôte puis exécuté. Le binaire publié a ici le coût de démarrage à froid le plus bas et une exactitude plafond au-dessus des fonctions 128.

artéfacts vérifiés après l'arrêt de l'horloge · charge1 2.73 → 2.73 · requis ≤ 1 · 2026-08-31

DOMAINES DE CHARGE DE TRAVAIL · RANG NON QUALIFIÉ

domaines 6 × chemins d'exécution 6

Chaînes, collections, allocation, E/S fichier, concurrence à quatre travailleurs, et un noyau d'application de politique d'admission de requêtes sont vérifiés pour la correction.

Échantillons 7 dans les voies process-cold et amorties · load1 13.87 → 12.38 · classement retenu

Temps de compilation à mesure que la source grandit

Les benchmarks ci-dessus construisent un programme assez petit pour tenir sur un écran, qui mesure la rapidité de démarrage d'une chaîne d'outils. Cela dit peu sur le nombre qu'un développeur attend réellement, qui est la pente. Ce cinquième le benchmark génère le même programme à des tailles croissantes — K fonctions indépendantes à quatre opérations et un point d'entrée qui appelle tous — et le construit via chaque chaîne d'outils sur l'hôte, en ordre rotatif.

Il exécute ensuite ce que chaque chaîne d’outils a produit, après que l’horloge s’est arrêtée. Cette vérification n'est pas une décoration. La façon la plus rapide d'émettre un artefact est de émettre un cassé, donc une voie qui a cessé de fonctionner publierait autrement ses meilleurs chiffres exactement là où il a cessé de fonctionner.

20 ms 100 ms 1 s 10 s K=1 32 128 512 2048 Fonctions générées (échelle logarithmique) Temps mur de build (échelle logarithmique) Kotoba / Amu → natif Kotoba / Amu → Wasm rustc → Wasm rustc → natif javac clang → natif Kotoba · CLI publiée

Les deux axes sont logarithmiques : les sources couvrent trois ordres de grandeur et les temps aussi. Une ligne se termine par un point où l'exécution s'est arrêtée, par une croix où cette voie a émis un artefact qui n'est pas le programme, et par une barre où la chaîne d'outils a refusé de construire. Ces trois événements ne sont pas identiques et les deux échecs ci-dessous ne sont pas le même échec.

Temps mur de construction à froid par taille source ; médianes, un hôte, voies entrelacées
Chaîne d'outils / cible K=1 K=32 K=128 K=129 K=512 K=1023 K=1024 K=2048
Kotoba · CLI publié · WebAssembly 11.753 ms 35.84 ms 111.538 ms artefact invalide artefact invalide artefact invalide échec de la construction échec de la construction
Kotoba / Amu · WebAssembly 733.255 ms 825.418 ms 1123.04 ms 1123.847 ms 3380.63 ms 9242.463 ms échec de la construction échec de la construction
Kotoba / Amu · Native aarch64-macos 962.198 ms 1509.84 ms 2973.249 ms 3000.243 ms 10601.87 ms 23725.327 ms échec de la construction échec de la construction
Rust / rustc · WebAssembly 38.992 ms 45.622 ms 66.066 ms 65.56 ms 151.592 ms 277.88 ms 280.867 ms 595.812 ms
Rust / rustc · Hôte natif 56.023 ms 62.849 ms 82.107 ms 82.277 ms 159.519 ms 261.586 ms 260.934 ms 469.277 ms
C / Clang · WebAssembly pas de chaîne d'outils pas de chaîne d'outils pas de chaîne d'outils pas de chaîne d'outils pas de chaîne d'outils pas de chaîne d'outils pas de chaîne d'outils pas de chaîne d'outils
C / Clang · Hôte natif 29.078 ms 30.442 ms 35.765 ms 36.581 ms 60.594 ms 104.992 ms 101.728 ms 223.232 ms
JVM / javac · classe JVM 171.53 ms 197.998 ms 237.582 ms 238.611 ms 316.795 ms 378.252 ms 377.591 ms 454.632 ms

Mesuré 2026-08-31 sur judahnoMac-mini.local (Apple M4). K est le nombre de fonctions générées ; la source Kotoba va de 9 à 14338 lignes. Cibles, ABI, niveaux d'optimisation et contrats d'exécution diffèrent selon les voies, donc cela interroge la latence de retour développeur, pas un travail équivalent. La porte de charge hôte a échoué (charge1 2.73–2.73, requis ≤ 1), donc ce sont des observations de cette exécution plutôt que des chiffres portables. Parce que les voies sont entrelacées, l'ordre est qualifié séparément.

Quelles ordonnances survivent au test de bruit

Un ratio n'est pas un classement. perfgate refuse tout ordre dont l’écart tombe à l’intérieur de la propre étendue des deux bras, quelle que soit la taille du ratio, et refuse un bras avec trop peu d'échantillons ou trop de bruit. Il s’exécute ici avec sa politique par défaut, non relâchée — un seuil assoupli pour laisser passer ceci serait un benchmark mesurant ses propres seuils. Parce que les voies sont entrelacées sur un hôte, un écart qui survit à ce test survit à un hôte occupé.

CLI Kotoba publiée contre chaque comparateur, à chaque taille où elle émet encore un module valide
Taille Comparé à Kotoba fois plus rapide ? Écart vs propagation combinée Pourquoi pas, sinon
K=1 C / Clang · Hôte natif oui, qualifié 17.1 ms vs 1.0 ms
K=1 JVM / javac · classe JVM oui, qualifié 160.8 ms vs 5.4 ms
K=1 Rust / rustc · Hôte natif oui, qualifié 44.2 ms contre 0.6 ms
K=1 Rust / rustc · WebAssembly oui, qualifié 27.1 ms contre 0.5 ms
K=32 C / Clang · Hôte natif non 5.3 ms contre 1.0 ms amélioration-sous-seuil
K=32 JVM / javac · classe JVM oui, qualifié 161.9 ms contre 1.2 ms
K=32 Rust / rustc · Hôte natif oui, qualifié 26.7 ms contre 0.7 ms
K=32 Rust / rustc · WebAssembly oui, qualifié 9.8 ms vs 0.6 ms
K=128 C / Clang · Hôte natif non 75.8 ms contre 1.2 ms amélioration-sous-seuil
K=128 JVM / javac · classe JVM oui, qualifié 126.2 ms contre 2.2 ms
K=128 Rust / rustc · Hôte natif non 29.3 ms contre 1.4 ms amélioration-sous-seuil
K=128 Rust / rustc · WebAssembly non 45.8 ms contre 1.1 ms amélioration-sous-seuil

amélioration-sous-seuil signifie que la voie Kotoba n'était pas plus rapide à cette taille du tout. L'avantage est réel et qualifié au démarrage à froid, et il disparaît contre C à K=32 et contre Rust à K=128. Ce croisement est le résultat, donc il est montré plutôt que résumé.

Deux échecs qui ne sont pas le même échec

Trois voies Kotoba ont cessé de fonctionner dans cette exécution, et les publier comme une seule la ligne aurait été fausse. L'une est un défaut. Les deux autres sont déclarées limites appliquées exactement comme spécifié, et signalant celles-ci comme défauts signifierait mesurer les limites au lieu du compilateur.

Ce qui s'est arrêté, et ce que cela signifie
Observation Lecture
Le CLI kotoba publié émet un module qui ne compilera pas au-delà de 128 fonctions Un défaut, et la raison de valider dans un harnais. À K=129 un appel doit porter l'index de fonction 128, la première valeur nécessitant deux octets LEB128, et l'émetteur en écrit un. Les octets indiquent qu'il ne s'agit pas d'un encodeur manquant mais d'un non utilisé : local.set 128 est écrit 80 01, et call 128 une instruction plus tard est écrit 80. Le nombre d'opérandes tronqués est exactement K moins 128. Le compilateur actuel ne l'a pas — Amu construit K=129 correctement, et la correction est sur la branche par défaut de son émetteur depuis avant que cette version soit taguée.
Chaque voie Kotoba déclenche à K=512 lorsqu’elle est construite avec les paramètres par défaut Pas un défaut. Un module Kotoba porte un budget d'appels déclaré et la valeur par défaut du compilateur est de 512 appels, que cette charge dépasse à K=512 où le point d'entrée appelle 512 feuilles. Le harnais déclare explicitement 1,048,576 unités et enregistre ce fait. C, Rust et Java n'ont pas de limite équivalente à augmenter.
Amu refuse le module immédiatement dès qu'il contiendrait plus de 1,024 fonctions Ce n’est pas non plus un défaut, et c’est l’opposé de la première ligne. max-functions est une limite d’admission déclarée, donc le compilateur s’arrête avec kotoba.error/subset-reject et nomme ce qu’il a refusé, plutôt que d’émettre quelque chose qui ne se chargera pas. Un plafond bruyant et un plafond silencieux sont des résultats très différents, et seul un harnais qui exécute l’artefact les distingue. Mesuré 2026-09-07 : c’est le plafond de tout le programme, pas d’un seul module — max-project-functions est aussi 1,024 et est vérifié par rapport au projet lié, donc aucune organisation de modules ne compile aujourd’hui un programme à 2,048 fonctions.

Ce que cela établit

Les réponses du cinquième benchmark, y compris celles défavorables
Question Réponse de cette exécution
Quelle est la rapidité d'une construction Kotoba à froid d'un petit module ? Le CLI publié construit K=1 en 11.753 ms à froid, artefact exécuté et réponse vérifiée — le premier résultat le plus rapide de toute voie mesurée ici.
Quelle taille de module le binaire publié peut-il construire ? Jusqu’à 128 fonctions. Au-delà, ce n’est pas plus lent, c’est erroné, et ce harnais signale cela comme une voie échouée plutôt qu’une voie rapide.
Le temps de build reste-t-il compétitif à mesure que la source grandit ? À travers K=128 le CLI publié est mesuré par rapport à Rust et C dans le tableau ci-dessus. Au-delà de ce point, le seul compilateur Kotoba qui émet encore un module correct est Amu, qui s'exécute sur nbb plutôt que comme un binaire publié, et est environ un ordre de grandeur plus lent à chaque taille mesurée — donc à grande échelle la vitesse de compilation n'est actuellement pas une force Kotoba, et cette page ne prétendra pas le contraire.
Quelle taille une source a-t-elle été construite de bout en bout ? K=1023 via Amu — 7163 lignes de Kotoba, artefact exécuté et réponse vérifiée. C’est une fonction de moins que le plafond déclaré 1,024, et la taille suivante est refusée plutôt que mal construite.
Le code émis est-il rapide ? Hors de portée ici — ceci mesure la construction, pas l'exécution. La suite runtime natif ci-dessus pose cette question.

En résumé : À la plus petite taille, le binaire publié est plus rapide que tous les comparateurs ici avec une marge qui survit au test de bruit, et il a un plafond de correction strict à 128 fonctions. Le compilateur sans ce plafond est environ un ordre de grandeur plus lent à chaque taille mesuré. Les deux faits proviennent de la même exécution, et le harnais qui les a trouvés est public, ainsi l'exécution peut être contestée.

Combien de temps chaque charge de travail native prend réellement

La grille ci-dessous rapporte la marge entre deux bras. C’est le nombre règles perfgate activées, mais un pourcentage seul ne dit pas si un la charge s'exécute en cinq millisecondes ou cinq cents, et elle cache le différence entre une paire contestée et une paire non pertinente. Ces panneaux sont les médianes à partir desquelles ces marges sont calculées. Amu natif est la voie colorée dans chaque panneau — y compris ceux où il n'est pas premier. Chaque panneau est échelonné à son bras le plus lent, car la question à laquelle un panel répond est qui est plus rapide dans cette charge de travail.

Arithmétique étroite

  1. Clang / C11 6.41 ms
  2. Amu natif 6.53 ms1.02× le plus rapide ici
  3. Swift 6.55 ms
  4. Rust 6.58 ms
  5. Zig 8.24 ms
  6. Go c-shared 42.84 ms

Pression large sur les registres

  1. Amu natif 5.80 msle plus rapide ici
  2. Rust 6.19 ms
  3. Clang / C11 6.50 ms
  4. Zig 6.97 ms
  5. Go c-shared 41.07 ms
  6. Swift 44.08 ms

Pression de débordement profonde

  1. Amu natif 9.23 msle plus rapide ici
  2. Rust 9.61 ms
  3. Zig 9.71 ms
  4. Clang / C11 10.23 ms
  5. Go c-shared 51.86 ms
  6. Swift 124.27 ms

Préservation d'appel

  1. Rust 4.77 ms
  2. Clang / C11 4.82 ms
  3. Amu natif 4.85 ms1.02× le plus rapide ici
  4. Swift 6.77 ms
  5. Zig 8.44 ms
  6. Go c-shared 32.49 ms

Branche + contrôle de flux d'appel

  1. Clang / C11 4.67 ms
  2. Rust 4.90 ms
  3. Amu natif 4.98 ms1.07× le plus rapide ici
  4. Swift 6.72 ms
  5. Zig 8.95 ms
  6. Go c-shared 33.84 ms

Boucle rappel arête

  1. Clang / C11 139.84 ms
  2. Amu natif 140.59 ms1.01× le plus rapide ici
  3. Rust 141.73 ms
  4. Go c-shared 169.38 ms
  5. Swift 186.09 ms
  6. Zig 207.01 ms

Médiane en millisecondes sur 5 exécutions qualifiées hôte ; plus court est plus rapide. Chaque bras a retourné la même réponse vérifiée indépendamment, et la médiane candidate est une valeur par charge de travail — la suite fait tourner chaque paire de moteurs en ordre ABBA/BAAB, donc le même artefact Amu est chronométré une fois par charge de travail puis comparé à chaque bras à son tour. Contrairement aux quatre autres benchmarks sur cette page, la porte hôte silencieuse de celui-ci a RÉUSSI (charge qualifiée hôte), donc ce sont des chiffres pour cet hôte plutôt que des observations seulement. La revendication la plus rapide bornée nécessite encore toutes les 30 paires, ce à quoi sert la grille ci-dessous.

Chaque paire d'exécution, victoire ou défaite

La revendication bornée est tout ou rien, donc une seule paire non qualifiée la rend fausse. Publier uniquement ce verdict cacherait quelles paires sont contestées, donc l’ensemble la grille est ici. Une cellule est l'amélioration moyenne de Amu natif par rapport à ce comparateur sur cette charge de travail ; positif signifie qu'Amu est plus rapide, et une coche marque les paires qui perfgate clair — au moins 5% et séparé de la propre dispersion des bras.

Amu natif vs chaque comparateur, 2026-09-07, qualifié hôte ; ✓ = passe perfgate
Charge de travail Rust Clang / C11 Zig Go c-shared Swift
Arithmétique étroite +0.4% -0.6% +20.1% +84.7% -0.6%
Pression large sur les registres +6.5% +10.9% +16.9% +86.0% +87.1%
Pression de débordement profonde +4.2% +9.3% +5.1% +82.2% +92.6%
Préservation d'appel -1.0% -0.3% +42.9% +85.2% +29.6%
Branche + contrôle de flux d'appel -2.6% -7.1% +43.8% +85.2% +25.1%
Boucle rappel arête +0.8% -0.1% +32.4% +17.2% +24.8%

Chaque cellule est une barre qui grandit à partir d’une ligne centrale : à droite d’elle Amu natif est plus rapide, à gauche plus lent. Les deux directions sont mises à l’échelle séparément — les gains vont jusqu’à +93% et les pertes seulement jusqu’à −7%, donc une échelle partagée aplatirait chaque paire contestée en la même fente invisible. Le signe est aussi porté par le côté de la ligne et par le nombre signé, donc aucune lecture de cette grille ne dépend de distinguer deux couleurs.

19 des 30 paires qualifiées (médiane de 5; 19 à chaque exécution) · candidat 42f092ea5b61 · Apple M4, 10 CPU logiques, 16 GiB

Livraison d'optimisation après l'exécution publiée

Le benchmark daté ci-dessus reste immuable. Les nouvelles tranches d'implémentation sont listées séparément jusqu'à ce que la suite même-artefact soit relancée et passe ses portes de qualification.

Surfaces implémentées qui ne sont pas encore de nouvelles revendications de vitesse
Surface Livré Limite de preuve
Vecteurs natifs / allocation Les littéraux vectoriels bornés non échappants sont prouvés d'échappement et remplacés par des scalaires sur x86-64 et AArch64. Tests backend 211 / assertions 2,442 ; les vecteurs échappants conservent l'ABI hôte vérifiée. Pas encore de chronométrage classé.
SIMD de chaînes L'égalité vérifiée POSIX utilise une comparaison explicite NEON ou SSE2 de 16 octets après validation du handle et UTF-8 canonique. Assembleur optimisé et vecteurs sémantiques ISA natifs vérifiés. Windows reste épinglé séparément ; classement de latence en attente.
Capacité E/S asynchrone Lecture/écriture/liste/existence/suppression éventuelle confinée à la racine utilise CompletableFuture sur JVM et fs.promises sur Node. Les tests JVM et Node sur système de fichiers réel passent. Le benchmark Wasm autonome public n'a toujours pas de liaison hôte admise, donc sa cellule I/O reste N/A.
Concurrence structurée Une portée enfant 32 bornée fail-fast joint, annule les frères et empêche l'évasion de durée de vie enfant comme état canonique Kotoba. Assertions de parité 996 à travers l'autorité .kotoba et le chemin de chargement CLJC. Ce sont des sémantiques de durée structurée, pas un résultat de débit de thread OS.
Kotoba CLI kotoba test/build consomme la nouvelle épingle du compilateur ; kotoba compile émet directement x86-64 scellé et AArch64 KEXE. Cycle de vie CLI public et artefact vectoriel AArch64 vérifié. Native --run reste refusé jusqu’à ce qu’un accusé de réception du chargeur mesuré soit câblé.

Démarrage du compilateur, quatre chaînes d'outils

  1. KotobaWebAssembly 40.998 msla référence
  2. Rust / rustcWebAssembly 126.422 ms3.084× Kotoba
  3. C / ClangWebAssembly 146.324 ms3.569× Kotoba
  4. JVM / javacclasse JVM 961.248 ms23.446× Kotoba

Temps mur froid du processus pour une toute petite source, en millisecondes ; plus court est plus rapide. 21 échantillons tournants par chaîne d'outils sur Apple M4. La porte de charge hôte a ÉCHOUÉ lors de cette exécution, donc ce sont des observations d'une machine, pas un classement.

Mesure minuscule de compilation à froid source-vers-artéfact
Chaîne d'outils Sortie Médiane p95 Temps écoulé relatif
Kotoba WebAssembly 40.998 ms 240.415 ms 1× Kotoba
Rust / rustc WebAssembly 126.422 ms 770.495 ms 3.084× Kotoba
C / Clang WebAssembly 146.324 ms 498.618 ms 3.569× Kotoba
JVM / javac classe JVM 961.248 ms 2223.49 ms 23.446× Kotoba

KOTOBA 0.7.3 · RUSTC 1.97.1 · version Homebrew clang 22.1.7 · javac 24.0.2. Kotoba, Rust et C émettent Wasm ; javac émet un fichier class. Différentes cibles et travaux de compilateur font de ceci une observation de démarrage, pas un classement universel. La porte de charge hôte enregistrée a échoué, donc le tableau n'est pas un classement de vitesse qualifié.

Médianes du cycle développeur de petits projets sans dépendances ; N/A signifie qu’aucune phase séparée n’a été mesurée
Chaîne d'outils / cible Résoudre Vérifier Construction propre Compilation sans changement Démarrer + exécuter Compilation propre + premier résultat
Kotoba · WebAssembly N/A 231.75 ms 62.906 ms 42.332 ms 57.253 ms 142.644 ms
Rust / Cargo · natif macOS arm64 138.018 ms 71.208 ms 896.478 ms 67.764 ms 371.522 ms 1299.171 ms
C / Clang · arm64 macOS natif N/A 90.446 ms 121.838 ms 77.905 ms 327.741 ms 453.685 ms
Zig · WebAssembly N/A 387.713 ms 648.665 ms 464.795 ms 67.523 ms 728.007 ms
TinyGo · arm64 macOS natif N/A N/A 1059.624 ms 395.305 ms 203.169 ms 1269.918 ms
Go · arm64 macOS natif 43.553 ms 6979.823 ms 3499.277 ms 150.902 ms 247.051 ms 3755.431 ms
Swift / SwiftPM · natif arm64 macOS 1017.252 ms 427.372 ms 3695.557 ms 1259.829 ms 431.84 ms 4016.271 ms
JVM / javac · classe JVM N/A N/A 805.822 ms 739.957 ms 76.252 ms 882.074 ms
AssemblyScript · WebAssembly N/A 1074.197 ms 895.187 ms 1090.658 ms 64.658 ms 954.878 ms
.NET IL · .NET IL 2309.472 ms N/A 4750.407 ms 2141.103 ms 79.248 ms 4851.792 ms
.NET Native AOT · arm64 macOS Native AOT 2236.962 ms N/A 11995.489 ms 2707.907 ms 375.7 ms 12391.54 ms

Chaque artefact émis a produit 42 dans un processus frais. Les cibles et contrats d’exécution diffèrent ; N/A n’est jamais zéro. La porte de chargement hôte a échoué, donc ce sont des observations reproductibles plutôt qu’un classement de vitesse inter-langages.

Six domaines, côte à côte

Chaque panneau est mis à l'échelle selon sa propre voie la plus lente, car la question qu'un panneau réponses est qui est plus rapide dans ce domaine, pas comment les domaines se comparent entre eux autre. La voie de Kotoba est celle en couleur dans chaque panneau — y compris le panneaux où il est dernier. Son artefact Wasm autonome s'exécute via un Node l’hôte et paie ce démarrage à chaque échantillon à froid de processus, tandis que Rust, C et Go exécuter comme des binaires natifs ; lorsque la cible n'a pas de système de fichiers ambiant ni de thread contrat du tout, la voie est absente plutôt que nulle.

Chaîne

  1. C / Clang 1.463 ms
  2. Rust 1.907 ms
  3. Aller 1.974 ms
  4. JVM / Java 27.819 ms
  5. Kotoba / Wasm + hôte JS typé 30.539 ms20.9× le plus rapide ici
  6. JavaScript / Node.js 31.628 ms

Collection

  1. C / Clang 1.357 ms
  2. Aller 1.852 ms
  3. Rust 1.92 ms
  4. Kotoba / Wasm + hôte JS typé 29.98 ms22.1× le plus rapide ici
  5. JVM / Java 31.42 ms
  6. JavaScript / Node.js 31.818 ms

Allocation

  1. C / Clang 1.353 ms
  2. Rust 1.943 ms
  3. Aller 1.962 ms
  4. JVM / Java 26.447 ms
  5. Kotoba / Wasm + hôte JS typé 29.567 ms21.9× le plus rapide ici
  6. JavaScript / Node.js 31.055 ms

E/S

  1. C / Clang 2.539 ms
  2. Rust 2.686 ms
  3. Aller 6.577 ms
  4. JVM / Java 38.685 ms
  5. JavaScript / Node.js 94.124 ms
  6. Kotoba / Wasm + hôte JS typé N/A — pas dans le contrat de cette cible

Concurrence

  1. C / Clang 2.916 ms
  2. Rust 3.328 ms
  3. Aller 3.377 ms
  4. JVM / Java 34.828 ms
  5. JavaScript / Node.js 55.105 ms
  6. Kotoba / Wasm + hôte JS typé N/A — pas dans le contrat de cette cible

Application réelle

  1. C / Clang 1.294 ms
  2. Aller 1.964 ms
  3. Rust 2.047 ms
  4. JVM / Java 26.411 ms
  5. JavaScript / Node.js 29.534 ms
  6. Kotoba / Wasm + hôte JS typé 29.652 ms22.9× le plus rapide ici

Médianes à froid en millisecondes ; plus court est plus rapide. La porte de charge hôte échoué lors de cette exécution, donc ces panneaux sont des observations plutôt qu'un classement, et la voie amortie ci-dessous raconte encore une autre histoire.

Médianes du domaine de charge à froid du processus ; N/A signifie que le contrat cible ne fournit pas cette capacité
Chemin d'exécution Chaîne Collection Allocation E/S fichier Concurrence Application réelle
Kotoba / Wasm + hôte JS typé 30.539 ms 29.98 ms 29.567 ms N/A N/A 29.652 ms
Rust 1.907 ms 1.92 ms 1.943 ms 2.686 ms 3.328 ms 2.047 ms
C / Clang 1.463 ms 1.357 ms 1.353 ms 2.539 ms 2.916 ms 1.294 ms
Aller 1.974 ms 1.852 ms 1.962 ms 6.577 ms 3.377 ms 1.964 ms
JVM / Java 27.819 ms 31.42 ms 26.447 ms 38.685 ms 34.828 ms 26.411 ms
JavaScript / Node.js 31.628 ms 31.818 ms 31.055 ms 94.124 ms 55.105 ms 29.534 ms

Chaque échantillon a retourné la somme de contrôle de référence exacte. Kotoba utilise son Wasm émis et son ABI typé déclaré ; sa cible autonome n'a pas de système de fichiers ambiant ni de contrat de thread, donc ces cellules sont considérées N/A. La porte de charge hôte enregistrée a échoué, donc les médianes sont des observations, pas un classement.

Médianes amorties par lots en cours de traitement par charge de base ; N/A maintient la même limite de capacité
Chemin d'exécution Chaîne Collection Allocation E/S fichier Concurrence Application réelle
Kotoba / Wasm + hôte JS typé 0.351 ms 0.039 ms 0.066 ms N/A N/A 0.048 ms
Rust 0.028 ms 0.002 ms 0.003 ms 1.217 ms 1.456 ms 0.002 ms
C / Clang 0.02 ms 0.001 ms 0.003 ms 1.61 ms 1.558 ms 0.001 ms
Aller 0.023 ms 0.002 ms 0.004 ms 5.071 ms 1.582 ms 0.002 ms
JVM / Java 0.433 ms 0.051 ms 0.064 ms 17.175 ms 5.589 ms 0.043 ms
JavaScript / Node.js 0.336 ms 0.033 ms 0.067 ms 68.507 ms 7.771 ms 0.032 ms

Chaque lot plus grand en cours est divisé par son multiplicateur de charge de travail déclaré. Cela amortit le démarrage mais ne supprime pas complètement le coût d'instanciation du processus, VM ou Wasm, donc ce n'est pas étiqueté comme un résultat d'état stable parfaitement chaud. Les chaînes pures inc/dec de la carte Kotoba sont fusionnées en reduce sans vecteurs intermédiaires ; les callbacks hors de ce sous-ensemble prouvé conservent la matérialisation impatiente.

Ce que chaque benchmark public établit — et n'établit pas
Question Implémentations comparées Conclusion actuelle
Compilation + exécution Wasm minuscule Kotoba, Rust, C, et chaînes d'outils JVM Quatre médianes à froid de processus publiées ci-dessus ; seuls Kotoba/Rust/C partagent la cible Wasm, et aucun classement général de vitesse de construction n'est revendiqué
Boucle développeur de petit projet Kotoba, Rust, C, Zig, TinyGo, Go, Swift, JVM, AssemblyScript, .NET IL et .NET Native AOT Sept échantillons par étape disponible sont publiés ; les différences de cible et une porte de charge hôte échouée interdisent un classement universel
Exécution native en état stable Amu natif vs Rust, Clang / C11, Zig, Go c-shared, Swift Toutes les cellules de comparaison sémantique 30 sont complètes ; classement de vitesse retenu car la porte hôte silencieuse a échoué
Chaînes, collections, allocation, E/S, concurrence et application réelle Chemins d'exécution Kotoba, Rust, C, Go, JVM et JavaScript Les sommes de contrôle exactes et les échantillons amortis à froid sont publiés ; les E/S et threads Kotoba autonomes sont N/A, tandis que son application pure d’admission de requête est mesurée ; la porte de chargement échouée retient le classement

Ce que couvre la suite native

Chaque implémentation retourne une réponse connue vérifiée indépendamment. La suite fait tourner chaque paire de moteurs en ordre ABBA/BAAB et mesure après chargement, mappage et recherche de symbole.

Six charges de travail natives d'exécution requises
Charge de travail Ce qu'il met en avant Statut des preuves
Arithmétique étroite Résultat exact vérifié ; chronométrage non qualifié
Pression large sur les registres Résultat exact vérifié ; chronométrage non qualifié
Pression de débordement profonde Résultat exact vérifié ; chronométrage non qualifié
Préservation d'appel Résultat exact vérifié ; chronométrage non qualifié
Branche + contrôle de flux d'appel Résultat exact vérifié ; chronométrage non qualifié
Boucle rappel arête Résultat exact vérifié ; chronométrage non qualifié

Où chaque benchmark vit

Chaque nombre ci-dessus provient d'un harnais public et d'un rapport engagé, donc un l'exécution peut être répétée et une revendication peut être contestée. Les chemins dans le dépôt dans cette table est vérifiée par rapport à l'arbre de travail lorsque cette page est générée : un harnais qui fait échouer la compilation plutôt que de livrer un lien mort.

La porte par laquelle chaque ordre sur cette page est passé est kotoba-lang/perfgate, exécuté avec sa propre politique par défaut non relâchée. Un seuil assoupli pour laisser un exécuter serait un benchmark mesurant ses propres seuils.

En résumé : Les artefacts, résultats exacts et échantillons sont réels dans les cinq benchmarks. Trois d'entre eux — démarrage du compilateur, boucle développeur et domaines de charge — ont échoué à leur perfgate hôte silencieux, donc ils ne sont pas classés et sont publiés comme observations. La suite runtime natif a passé son perfgate et gagne 19 de ses 30 paires, en deçà de la revendication de chaque paire nécessaire. La montée en charge de la construction qualifie son ordre de démarrage à froid contre chaque comparateur sur l'hôte et trouve un plafond de correction dans la même exécution. Aucune revendication universelle de classement de vitesse n'est faite sur cette page, et aucune de ces exécutions ne l'autorise.

Revendiquer avec leurs limites attachées

Ces revendications sont générées à partir de lang/safety-claims.edn. Chacun garde sa base de confiance informatique et son risque résiduel visibles, car un slogan de sécurité sans limite n'est que du marketing.

T1-MÉMOIRE

Les composants admis ne peuvent pas adresser la mémoire d’exécution/native et les opérations mémoire des composants sont bornées ou déclenchent une erreur.


Base informatique de confiance

lecteur borné · admission frontend · vérificateur d'artefacts · runtime Wasm/natif

Risque résiduel

  • les vulnérabilités du moteur d'exécution restent dans le TCB
  • Les chargeurs natifs nécessitent une seconde frontière d'isolation OS
T2-EFFET

Chaque effet de composant transitif est déclaré et admis avant émission, y compris les effets utilisés par les fournisseurs écrits en Kotoba.


Base informatique de confiance

inférence d'effet · catalogue de capacités · graphe d'appels frontend

Risque résiduel

  • kotoba et la parité de grammaire/effet du compilateur doivent être continuellement comparés
T3-CONFINEMENT

Une capacité non accordée est absente ou non liée et ne peut atteindre un fournisseur ou un gestionnaire natif.


Base informatique de confiance

intersection de politique · émission d'import de compilateur · liaison d'import de soumission · garde hôte

Risque résiduel

  • le fournisseur et les implémentations natives doivent valider indépendamment la portée des ressources
  • les concessions effectives en production doivent interdire la portée générique
T4-DÉTERMINISME

La même source admise, cible, politique et verrou produisent le même résultat pur observable et les mêmes octets d'artéfact.


Base informatique de confiance

lecteur canonique · abaissement déterministe · chaîne d'outils épinglée

Risque résiduel

  • les effets hôtes sont déterministes uniquement là où leur contrat de capacité le stipule
LIMITES DE RESSOURCES T5

Source, admission, exécution, mémoire et sortie utilisent des limites finies explicites.


Base informatique de confiance

limites d'admission · compteur de carburant · quota d'exécution · délai d'attente du superviseur

Risque résiduel

  • Les superviseurs de plateforme n'ont pas encore de preuve d'isolation de production équivalente
T6-CHAÎNE-D’APPROVISIONNEMENT

L'admission de publication lie l'identité de l'artefact, le signataire de confiance, la validité et la preuve reproductible.


Base informatique de confiance

vérificateur de signature · configuration de signataire de confiance · horloge · ensemble de révocation

Risque résiduel

  • la garde des clés et la distribution externe de révocation restent TCB opérationnels
T7-BACKEND-PARITY

Un composant portable partagé a une acceptation, un résultat et une trace d'effet égaux à travers des backends qualifiés.


Base informatique de confiance

manifeste de conformité partagé · adaptateurs backend · exécuteur de comparaison

Risque résiduel

  • les fonctionnalités uniquement compilateur ne sont pas portables et doivent être rejetées par les profils portables
T8-HOST-RESOURCE-SCOPE

Une importation de composant atteint son fournisseur ou gestionnaire natif uniquement avec un périmètre de ressource post-intersection concret et émet un reçu.


Base informatique de confiance

intersection de capacité · garde hôte · gestionnaire fournisseur · évier de reçu

Risque résiduel

  • Les contrôles spécifiques au fournisseur de chemin, redirection, lien symbolique et locataire nécessitent des kits Q5

Qualification Q1, au 2026-07-18.

Liaison de version

Un profil de langue et une version d'implémentation sont séparés jusqu'à ce qu'une enveloppe signée les lie.

LANGUE

Profil 6

contrat de package 1

IMPLEMENTATION

v0.7.0

liaison de profil : vérifié

DÉFAUT PUBLIC

PUBLIÉ

:docs/release-bound-profile

Kotoba v0.7.0 pour darwin-arm64 est l'implémentation publique liée au profil de langue 6 et au contrat de package 1. Son enveloppe signée vérifie l'arbre source, le digest de l'artéfact, et le résultat de conformité 536-test / 8,580-assertion. Les autres plateformes restent non liées.

Lire les preuves de version générées
04 Commencer à l'utiliser

Démarrer en soixante secondes

Installer et auto-vérifier

brew tap kotoba-lang/kotoba
brew trust kotoba-lang/kotoba
brew install kotoba
kotoba selfhost check --json

Accepter une réponse valide avec une liste de problèmes vide.

Un premier programme

(defn main []
  (+ 40 2))

Ce programme ne demande aucune importation hôte ; le module émis n'a pas d'importations.

Apprendre, essayer, puis approfondir

Un chemin connecté du premier programme aux contrats linguistiques, bibliothèques, preuves, et surfaces de déploiement.

APPRENDRE

Docs par intention

Commencez par l'installation, apprenez la langue admise, ou inspectez la sémantique normative et les données de conformité.

Carte de documentation ouverte
LIRE LE CODE

Une source, une réponse

L'exemple ci-dessous est la source exacte compilée dans la démo du navigateur—pas une réimplémentation JavaScript.

Lire l'exemple
EXÉCUTER

Exécuter sur cette page

Charger un artefact WebAssembly lié à la même origine et au digest, et appeler sa fonction principale exportée Kotoba.

Jeu ouvert
CONSTRUIRE

Bibliothèques et contrats

Parcourez les noms de base bornés, les bibliothèques fondamentales, les règles de paquet et leur limite de maturité actuelle.

Parcourir les bibliothèques

Un petit programme Kotoba, s'exécutant pour de vrai

Amu compile cette source pure Kotoba vers le profil wasm32-browser. L'artefact enregistré n'a pas d'importations et retourne 42.

SOURCE KOTOBA
;; W1 pure representative: ordinary Clojure-shaped values/functions only.
(ns examples.w1-pure)

(defn double [n]
  (+ n n))

(defn main []
  (double 21))

Autorité de mise en évidence : kotoba-lang/grammarkotoba.grammar.highlight/tokenize → HTML au moment de la construction. Contrat de périmètre de l'éditeur : source.kotoba. Dépendance du surligneur du navigateur : aucune. Inspecter les dépendances

Compiler localement : kotoba compile double-21.kotoba --target wasm32-browser --output double-21.wasm

JOUER · WEBASSEMBLY

Exécuter l’artefact vérifié

Le navigateur récupère 344 octets, vérifie SHA-256, rejette chaque importation, instancie le module, et appelle main().

Résultat attendu : 42

Prêt. Aucun code n’a encore été exécuté.

Cela exécute un exemple précompilé et immuable. L’édition de source arbitraire dans le navigateur n’est pas encore une surface de compilateur livrée.

Démos interactives : solar-helix (rendu WebGPU piloté par invité) · kami-survivors (un jeu .kotoba) · gpu-clear (fumée WebGPU). Hébergé sur la surface wasm-webcomponent GitHub Pages ; la disponibilité dépend du support WebGPU/WebAssembly par navigateur.

Bibliothèques, sans masquer la frontière du paquet

Les bibliothèques Kotoba sont des graphes adressés par contenu. Les noms et les dépôts GitHub aident les gens à les découvrir ; les définitions et les CIDs de version signée indiquent exactement ce qu’ils sont.

NŒUD BORNÉ

Référence de symbole générée

Recherchez les noms admis par le contrat de bibliothèque standard borné actuel.

Parcourir les symboles principaux
FONDATIONNEL

Données, effets, E/S, outils

Commencer avec coll, spec, json, text, wit, async, time, fs, http, test, fmt, lint et contrats LSP.

Parcourir la carte de la bibliothèque
CONTRAT DE PAQUET

Dépendances adressées par contenu

Inspecter les CIDs de dépendance exacts, les couches d'identité, la provenance GitHub et la frontière de publication actuelle.

Ouvrir le catalogue de bibliothèques et publier le flux

Parcourir toute l'organisation par tag

Il y a 2,215 dépôts publics dans le kotoba-lang organisation. Chaque étiquette ci-dessous est le sujet GitHub de le même nom, donc le filtre du site et les sujets de l'organisation forment un seul vocabulaire plutôt que deux qui dérivent. Choisissez-en un pour ouvrir le catalogue déjà filtré.

Parcourir et filtrer tous les dépôts 2,215

Un dépôt n’est pas un paquet publié. Exactement 1 bibliothèque est publiée via le registre adressé par contenu ; le reste de cette liste est une découverte. Les étiquettes de maturité des dépôts n’impliquent pas la stabilité de l’API 1.0, une adoption large ou des SLOs de production, et les dépôts 255 ne correspondent à aucune règle de domaine et sont affichés sans étiquette plutôt que d’obtenir l’étiquette la plus proche.

Rechercher dans la référence vérifiée

Rechercher commandes, noms de bibliothèque standard, diagnostics et statut de publication. L’index est généré à partir des autorités machines et reste sur cette page.

Essayer : compiler, option-some, docs/lien-manquant

version

Liaison de version

Kotoba v0.7.0 pour darwin-arm64 est l'implémentation publique liée au profil de langue 6 et au contrat de package 1. Son enveloppe signée vérifie l'arbre source, le digest de l'artéfact, et le résultat de conformité 536-test / 8,580-assertion. Les autres plateformes restent non liées.

Référence ouverte
cli

kotoba id

Créer un plan d’inscription principal Kotoba neutre à la chaîne contrôlé par une clé d’accès. Les comptes intelligents sont des liens CAIP-10 explicites ; aucune chaîne ni fournisseur n’est la racine d’identité.

Référence ouverte
cli

kotoba run

Compiler et exécuter un point d’entrée Kotoba.

Référence ouverte
cli

kotoba compile

Compiler la source de la famille Kotoba en un artefact cible. Le .kotoba Web utilise KIR vérifié et le backend restreint kotoba-script ; .cljs reste ClojureScript.

Référence ouverte
cli

kotoba check

Validez la source Kotoba, les contrats ou les métadonnées du paquet sans l'exécuter. Adaptateur compilateur : admission frontend + --profile pure-product (T9.2).

Référence ouverte
cli

kotoba graph

Interroger et transacter le magasin de graphes de langage (kgraph) avec des opérations en forme de Datomic.

Référence ouverte
cli

kotoba git

Exposez les opérations du dépôt Kotoba comme données, pas comme comportement spécifique au shell.

Référence ouverte
cli

kotoba rad

Exécutez des flux de travail de développement rapide d'applications sur les paquets Kotoba.

Référence ouverte
cli

kotoba build

Construisez un projet Kotoba en son artéfact cible vérifié. C'est la commande directe du cycle de vie du projet ; rad build reste une orthographe compatible.

Référence ouverte
cli

kotoba test

Vérifiez et exécutez les tests admis pour un projet Kotoba. C’est la commande directe du cycle de vie du projet ; rad test reste une orthographe de compatibilité.

Référence ouverte
cli

kotoba deploy

Planifier et appliquer l'état désiré du paquet à un reçu local ou à une cible résidente de flotte murakumo.

Référence ouverte
cli

kotoba library

Inspecter et publier un espace de noms de bibliothèque adressé par contenu via la base de code Kotoba existante et le chemin de publication IPNS.

Référence ouverte
cli

kotoba hinshitsu

Exécuter des contrôles de qualité logicielle (preuves, portes, couverture, régression visuelle) en tant que données.

Référence ouverte
stdlib

comp2

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

concat

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

err

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

err ?

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

chaque ?

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

trouver

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

group-by

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

fusionner

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

ok

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

ok ?

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

option-none

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

option-aucune ?

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

option-some

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

option-some?

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

valeur-option

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

partiel1

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

plage

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

range-step

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

inverse

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

reverse-into

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

select-keys

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

quelques

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

ancre de fermeture binaire stdlib

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

déballer-err

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

déballer-ok

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

mettre à jour

Nom public standard de bibliothèque cœur borné.

Référence ouverte
stdlib

zipmap

Nom public standard de bibliothèque cœur borné.

Référence ouverte
diagnostic

:commande/inconnue

La commande demandée ne fait pas partie du contrat CLI public. Utilisez une commande générée à partir de lang/cli.edn.

Référence ouverte
diagnostic

:contract/invalid

Le contrat CLI a échoué à la validation structurelle. Inspectez la collection structurée :errors ; ne lancez pas la commande.

Référence ouverte
diagnostic

:version/non supporté

La version de langue ou de contrat de package demandée est inconnue. Sélectionnez une version listée sous :supported dans lang/version-policy.edn.

Référence ouverte
diagnostic

:version/supprimé

La version de contrat demandée a été supprimée. Migrez vers la version active avant de compiler ou d'exécuter.

Référence ouverte
diagnostic

:version/dépréciation-expirée

La fenêtre de compatibilité pour une version dépréciée a expiré. Appliquez la migration nommée par la politique de version.

Référence ouverte
diagnostic

:release/invalid-semver

Un identifiant de version n'est pas un SemVer strict. Utilisez MAJOR.MINOR.PATCH avec un suffixe pré-version ou de build valide optionnel.

Référence ouverte
diagnostic

:docs/no-release-bound-profile

Aucune preuve d’implémentation publiée ne lie le profil de langue actif. Gardez le défaut public bloqué jusqu’à ce qu’une enveloppe de version signée lie l’implémentation et le profil.

Référence ouverte
diagnostic

:docs/link-missing

Un document vérifié pointe vers une cible locale manquante. Restaurez la cible ou mettez à jour la carte d'autorité et régénérez la référence.

Référence ouverte
diagnostic

:docs/profile-version-drift

Les autorités de grammaire, surface et élaboration ne sont pas d'accord sur le profil linguistique. Réconciliez les autorités avant de publier la documentation.

Référence ouverte
diagnostic

:docs/generated-drift

Une référence générée engagée ne correspond pas à son autorité machine. Exécutez nbb scripts/generate-docs-reference.cljs et engagez le résultat.

Référence ouverte
diagnostic

:docs/validation-result-invalid

Une observation de validation utilisateur est incomplète ou surestime un résultat externe. Enregistrer la classe de participant, la tâche, le résultat, la preuve et le temps observé.

Référence ouverte

Aucune requête ne quitte le navigateur.

05 Autour du langage

Feuille de route : élargir seulement après que la frontière tient

MAINTENANT

Un contrat versionné

Gardez la grammaire, les effets, KIR vérifié, adaptateurs cibles, qualification et documentation du premier lancement alignés.

SUIVANT

Combler les lacunes des fournisseurs

Étendre la conformité typée demande/résultat, tests adverses, reçus, révocation, et opérations de version reproductibles.

PLUS TARD

Obtenir un déploiement plus large

Élargir l'utilisation en production après fournisseur, isolation hôte, retour en arrière et preuve d'immersion — et développer des bibliothèques déclaratives inspectables.

Lire la feuille de route maintenue et les non-objectifs

Les éléments de la feuille de route sont une direction, pas des promesses de capacité livrée ou de dates de livraison.

Construire la communauté en public

Kotoba ne revendique pas encore une grande communauté. Aujourd'hui, les points de rencontre publics honnêtes sont les dépôts sources, les traqueurs de problèmes, l'historique des versions et le canal de sécurité.

DISCUTER & RAPPORTER

Problèmes linguistiques

Poser une question de conception, proposer une amélioration documentaire ou signaler un problème reproductible de contrat linguistique.

Questions ouvertes sur le langage
IMPLÉMENTER

Problèmes du compilateur et du CLI

Suivre le travail d'implémentation, les versions, le support cible, et l'intégration runtime dans l'implémentation installable.

Questions ouvertes d’implémentation
SÉCURITÉ

Rapporter en privé

Utilisez la politique de sécurité publiée pour les vulnérabilités ; ne divulguez pas de détails exploitables dans un problème public.

Lire la politique de sécurité

Explorer tous les dépôts publics Kotoba

Code sûr. État de confiance. Exécution contrôlée.

BLOG

Preuves avant slogans

Lire des notes d’ingénierie courtes qui relient les revendications produit aux mesures, fichiers d’autorité et portes restantes.

Lire le blog Kotoba
KOTOBA CLOUD

Exécution contrôlée

Kotoba Cloud connecte identité et contrôle de déploiement à l'environnement d'exécution. La découverte est en direct ; l'application hébergée n'est pas encore offerte. Le calcul reste fourni par des services gouvernés séparément.

Ouvrir Kotoba Cloud
KOTOBASE

État du graphe de confiance

Kotobase est la base de données graphe adressée par contenu pour l'état et la connaissance de l'IA : relations explicites, historique identifiable et accès limité.

Ouvrir Kotobase
MURAKUMO

Plan de calcul et d'inférence

Infrastructure de calcul et de service de modèle de flotte. La disponibilité et la qualification de la route restent spécifiques au service.

Ouvrir Murakumo
ITONAMI

Plan de travail de l'agent

Travail continu de l'agent à travers espaces de travail, objectifs, preuves, outils, approbations et effets gouvernés.

Ouvrir Itonami

Ces services conservent des frontières distinctes d’autorité, de disponibilité et de qualification. Leur connexion ne prouve pas que chaque capacité Kotoba est disponible comme service hébergé vendu généralement.

Lire le contrat ou exécuter l'implémentation

AUTORITÉ LINGUISTIQUE

kotoba-lang/kotoba-lang

Grammaire, sémantique, contrats de capacité, revendications de sécurité, contrat CLI, documentation, et fixtures de conformité.

Lire l'autorité linguistique
MISE EN ŒUVRE INSTALLABLE

kotoba-lang/kotoba

CLI, intégrations hôtes, fournisseurs, adaptateurs d’exécution, tests d’intégration et preuves de qualification spécifiques à la cible.

Ouvrir l'implémentation
DOCUMENTATION

Apprendre, construire ou évaluer

Chemins séparés pour la première utilisation, la référence linguistique, l'implémentation backend, les frontières de sécurité et les preuves de maturité.

Choisir un chemin de documentation

Profil linguistique 6; statut de publication par défaut public : PUBLIÉ.

La plateforme portable principale est WebAssembly Components avec WASI 0.3.0. La chaîne d'élaboration a 11 étapes nommées, à échec fermé.