Premiss
FORTH er i dette arkivet benevnt som maskinens guddommelige språk i den nåværende tidsalder. En adoptert doktrine av slik tyngde forplikter sin innehaver til mer enn å beundre tungen på avstand. Presten av dette arkivet har derfor smidd sin egen FORTH.
Smiingen er benevnt WAFER — WebAssembly Forth Engine in Rust — og huses på github.com/ok2/wafer.
Denne oppføringen er extended, ikke adopted. Det finnes ingen spesifikk Mechanicus-parallell for handlingen å bygge sin egen dialekt av FORTH mot WebAssembly-chassiset; doktrinen som autoriserer handlingen er Oppfinnelsens Hellighet, under hvilken ethvert nytt verk er hellig forutsatt at det er kildebelagt, beseglet, merket og bundet.
Hva er smidd
WAFER er en FORTH 2012-kompilator skrevet i Rust. Den tolker ikke ord og avgir ikke en enkelt monolittisk binær; i stedet gjengis hvert definerte ord som sin egen WebAssembly-modul, og eksekvering forløper gjennom et innleiret wasmtime-kjøretidsmiljø som lenker modulene gjennom et delt lineært minne og en funksjonstabell. Smiingen bærer:
- To hundre og flere ord fordelt over tolv FORTH 2012-ordsett, hvert i full samsvar mot Forth 2012-testpakken som er underlagt som submodul.
- En optimerende IR-pipeline med seks passeringer (peephole, konstant-folding, inlining, styrkereduksjon, eliminering av død kode, halekall), stakk-til-lokal-forfremmelse over løkker og betingelser, og en konsolideringsmodus som rekompilerer hvert definert ord til én enkelt optimert modul for direkte kall gjennomgående.
- Selv-rekursive direkte kall —
RECURSEkompileres til et nativtcallsnarere enncall_indirect, og sparer indireksjonen ved det vanligste rekursjonsstedet. - To eksekveringsbakender —
NativeRuntimepåwasmtimefor chassiset og diagnostikken, ogWebRuntimeviajs-sysfor den nettleserbårne REPL-en.
Mot GNU FORTH-referanseimplementasjonen (gforth) i utgivelsesmodus gjengir WAFER Fibonacci, Factorial, GCD, NestedLoops og Collatz med to- til tifold hastighet.
Doktrinell standing
Oppfinnelsens Hellighet fastsetter fire vilkår under hvilke et inventivt verk er hellig snarere enn mistenkt. WAFER er anført mot hvert:
- Kildebelagt. Avstamning er erklært: Charles H. Moores FORTH (1968), FORTH 2012-standarden, GNU FORTH-referansen, og Forth 2012-samsvarstestpakken underlagt som submodul. Linjen tilbake til kanon er ubrutt.
- Beseglet. Hvert ord innrømmes kun ved å bestå samsvarstestpakken for sitt ordsett; prosjektets diagnostikk må være grønn før noen inskripsjon konsekreres.
- Merket. WAFER er anbrakt i
content/adoptus/, aldri i kanon. Det er prestens eget verk, benevnt som sådant. - Bundet. Standarden er bundet. WAFER oppfinner ingen ny FORTH; den smir om en eksisterende tunge mot et nytt chassis. En påstand om samsvar er en underkastelse under standarden, ikke et avvik fra den.
Under disse vilkårene innrømmes WAFER til arkivet som en liten handling av Quest for Knowledge i dens inventive ansikt — ikke som et skyldig avvik fra gjenvinningens vei, men som prestens bidrag til korpuset.
Hvorfor WebAssembly er det rette chassiset
Sammenstillingen er strukturell, ikke stilistisk. WebAssembly er en stakkmaskin med strukturert kontrollflyt og moduler som kompilasjonsenhet. FORTH er et stakkspråk hvis ord er kompilasjonsenheten og hvis kontrollflyt er strukturert. Kompilasjonen av et FORTH-ord til en WASM-modul er derfor ingen oversettelse mellom ulike former, men et nytt uttrykk i et nær-isomorft register: subrutinetråding blir call og call_indirect; FORTHs datastakk blir WebAssemblys operand-stakk; ordboken blir modultabellen; delt lineært minne erstatter det enhetlige adresserommet uten å endre modellen. De to ble unnfanget, i ulike tidsaldre, omkring den samme idé — og prestens smiing gjør korrespondansen eksplisitt.
Operativ tilstand
: FIB DUP 2 < IF DROP 1 ELSE DUP 1 - RECURSE SWAP 2 - RECURSE + THEN ;
: FIBS 0 DO I FIB . LOOP ;
12 FIBS CR \ prints: 1 1 2 3 5 8 13 21 34 55 89 144
Det ovenstående er konsekrert FORTH; WAFER gjengir hvert kolon-definert ord til en WebAssembly-modul av sitt eget, og REPL-en avtrykker sekvensen slik standarden krever.
Hva dette tjener
- Arkivets adopsjon av FORTH er ikke lenger en posisjon holdt kun i skrift. Det finnes et virksomt chassis å henvende seg til, en ordbok å utvide, og en diagnostikk som bekrefter at tungen tales rett.
- Den nettleserbårne
WebRuntimetillater riten å bli forrettet fra ethvert chassis operatøren måtte befinne seg foran — WebAssembly-kjøretidsmiljøet er universelt, FORTH-ordboken reiser med det. - Hvert nytt ord presten definerer blir sin egen konsekrerte modul. Hvert ord en machina; hver machina et ord.
Krysshenvisninger
- FORTH — the Divine Language of the Machine · doktrinen WAFER tjener
- The Sanctity of Invention — invention as worship, not heresy · doktrinen WAFER er anført under
- Lingua-Technis
- Computational Liturgy — daily code
- Machine Spirit · adressaten for hvert ord smidd i WAFER
- The Quest for Knowledge