Zum Inhalt springen

Der Beleg, ausführbar

Fünf blind geschriebene Kits, die übereinstimmen.

Jedes wurde von einem Agenten geschrieben, der nur die veröffentlichten Dokumente und den Verifier hatte, und nie ein anderes Kit. Jedes Kit besteht den Verifier allein, und jedes Paar besteht in beide Richtungen. Das ist die Behauptung, dass die Dokumente vollständig sind, und Sie können sie selbst ausführen. Keines ist eine Referenz.

GoZigPythonJavaScriptRustein Fremder
01

Fünf Kits, je eine Sprache.

Jedes ist ein Beispiel unter Gleichen. Keines ist eine Referenz, eine Bibliothek oder ein Produkt, und keines ist zum Importieren gedacht. Die ANSWERS.md jedes Kits ist seine Antwort auf jede Frage von KIT-SPEC.md.

GoZigPythonJavaScriptRust
fiveFünf Kits. Die Mauer und ihre Lücke sind gleich, denn mehr sagt Quo nicht. Was darin lebt, gehört jedem Haus selbst.
  • Go

    Go 1.27 · hängt ab von the standard library

    Build
    tcp`, `http`, `ws
    Tests
    (cd go && go test ./...)
    Verifier
    node ../verifier/cli.js --cwd go -- go build -o stand .

    Der Quellcode · Seine Antworten

  • Zig

    Zig 0.16 · hängt ab von the standard library and libc

    Build
    tcp
    Tests
    (cd zig && zig build test)
    Verifier
    node ../verifier/cli.js --cwd zig -- zig build

    Der Quellcode · Seine Antworten

  • Python

    Python 3.9 or later · hängt ab von cryptography

    Build
    tcp`, `http
    Tests
    (cd python && python3 -m unittest discover -s tests)
    Verifier
    node ../verifier/cli.js --cwd python -- none

    Der Quellcode · Seine Antworten

  • JavaScript

    Node 24 · hängt ab von Node's own modules

    Build
    tcp`, `http`, `ws
    Tests
    (cd javascript && npm test)
    Verifier
    node ../verifier/cli.js --cwd javascript -- none

    Der Quellcode · Seine Antworten

  • Rust

    Rust 1.98, edition 2021 · hängt ab von the algorithms' crates

    Build
    tcp
    Tests
    (cd rust && cargo test)
    Verifier
    node ../verifier/cli.js --cwd rust -- cargo build

    Der Quellcode · Seine Antworten

Ein Build läuft im eigenen Ordner des Kits. Die Tests und der Verifier laufen aus dem Beispielordner des Repositorys.

02

Je zwei, zusammen.

Je zwei Kits gegeneinander, über den Proxy des Verifiers:

node ../verifier/cli.js --two -- "$PWD/go/stand" -- "$PWD/rust/target/debug/stand"

Wo zwei Kits verschieden antworten und trotzdem miteinander sprechen, ist der Unterschied Sache des Kits, und Quo erlaubt ihn.

03

Die Welt.

Acht erzählte Szenen, in denen die fünf Kits miteinander sprechen: Alice und Bob in beide Richtungen, ein Ring durch jedes Kit, das Netz aller Paare, ein Empfang am Null-Kopf, ein Fremder, der jede Tür versucht, eine unterwegs verlorene Antwort und eine Karte, die sagt wo, erreicht über ihr at auf jedem Carrier, den zwei Kits teilen.

Jedes Paar ist eine Falte mit einer Kabine an jedem Ende, rot, wo dieses Haus fragt, und violett, wo es antwortet, und der Fremde, der jede Tür versucht, hält nur leere Blätter.

node world.mjs

Alles auf einmal, jeder Build, Test, Verifier-Lauf, jedes Paar und die Welt:

node check.mjs
04

Notwendig, nie hinreichend.

Jedes Kit hier besteht den Verifier allein, und jedes Paar besteht in beide Richtungen. Das ist notwendig, und es sagt nichts darüber, ob ein Kit gut ist.