Sebuah proyek sumber terbuka bernama Goeteia menawarkan pendekatan radikal baru dalam pengembangan web: sebuah kompiler Scheme penuh yang berjalan sepenuhnya di browser pengguna, mengompilasi kode ke WebAssembly (Wasm) dalam hitungan milidetik, tanpa memerlukan server backend untuk proses kompilasi. Berbeda dengan alat-alat transpilasi tradisional seperti Babel atau TypeScript yang mengubah kode ke JavaScript, Goeteia mengompilasi Scheme — dialek Lisp minimalis dan kuat — langsung ke biner Wasm yang dieksekusi natively oleh mesin virtual browser. Hal ini membuka peluang untuk menjalankan bahasa fungsional dengan semantik tingkat tinggi seperti ekor-rekursi (tail calls), continuasi first-class (call/cc), dan makro higienis langsung di sisi klien, dengan performa mendekati kode asli.
Arsitektur Goeteia dirancang dengan falsafi "self-hosting to the byte": kompiler itu sendiri ditulis dalam subset Scheme yang ia kompilasi, dan hasil kompilasi ulang dirinya sendiri menghasilkan biner yang identik byte-per-byte — sebuah titik tetap (fixpoint) yang diverifikasi secara otomatis dalam setiap perubahan melalui integrasi berkelanjutan (CI). Pendekatan ini tidak hanya membuktikan kebenaran implementasi, tetapi juga memastikan bahwa tidak ada lapisan interpretasi atau runtime tersembunyi yang menimbulkan overhead. Semua struktur data Scheme — fixnum (bilangan bulat kecil) sebagai i31ref, pasangan (pairs), dan record — dipetakan langsung ke objek Garbage Collection (GC) bawaan Wasm, menghilangkan kebutuhan akan "shadow heap" di JavaScript. Host browser hanya menyediakan dua impor aliran byte (byte-stream imports), dan sisanya ditangani sepenuhnya oleh modul Wasm.
Dukungan makro higienis di Goeteia mencakup syntax-rules dan syntax-case prosedural dengan fender, elipsis bersarang, dan datum->syntax, semuanya berjalan di interpreter waktu kompilasi dengan higiene berbasis penamaan ulang (renaming). Ini memberikan kekuatan metaprogramming penuh yang setara dengan Racket atau Chez Scheme, namun dieksekusi di lingkungan browser tanpa plugin. Closure dan tail call diimplementasikan secara native: referensi fungsi bertipe memiliki titik masuk (entry) cepat per-aritas dan titik masuk generik per closure, membuat prosedur variadik dan apply murah, serta setiap tail call dikompilasi ke instruksi return_call Wasm. Demonstrasi loop 100 juta iterasi berjalan dalam stack konstan hanya dalam ~150 ms, membuktikan efisiensi model eksekusi ini.
Salah satu fitur paling menonjol adalah implementasi call/cc (call-with-current-continuation) dan dynamic-wind yang mengendarai proposal penanganan pengecualian (exception handling) Wasm. Pengambilan continuasi (capture) berkompleksitas O(1), jalur normal hanya memerlukan satu blok try, dan winder (penghapus bersih) dibersihkan dari dalam ke luar saat keluar. Ini membawa kekuatan kontrol alur (control flow) first-class Scheme ke web untuk pertama kalinya dengan performa yang praktis, memungkinkan pola seperti coroutine, backtracking, dan server web berbasis continuasi di sisi klien.
Tumpukan web reaktif Goeteia terdiri dari (web sx) untuk templating berbasis sinyal halus (fine-grained signals), (web html) untuk rendering DOM, dan (web js) FFI yang menjangkau host langsung — halaman demo Goeteia sendiri dibangun dengan tumpukan ini. Untuk grafis 3D, (web three) membangun adegan Three.js reaktif mirip cara sx membangun DOM, sementara (web gl) mengendarai WebGL mentah melalui buffer perintah — satu panggilan bridge per frame — dengan shader ditulis sebagai s-expression dalam (web glsl). Judul halaman demo, misalnya, dirender sebagai glif matriks titik (dot-matrix) menggunakan vertex shader dan satu panggilan draw, sepenuhnya dari Scheme.
Komunikasi jaringan mengadopsi filosofi "Scheme-to-Scheme, no codec": ketika backend juga ditulis dalam Scheme (seperti Igropyr), permintaan dan balasan adalah s-expression murni. Contohnya, (rpc "/rpc" '(add 1 2 1/2)) mengembalikan (ok 7/2), mempertahankan rasio eksak (exact ratio) tanpa kehilangan presisi. (web fetch) memungkinkan gaya direct-style melalui Wasm JSPI (JavaScript Promise Integration); (web ws) dan (web sse) mendorong aliran datum (datum streams); dan (web json) menangani interoperabilitas dengan ekosistem lain. Sistem pustaka mengadopsi gaya R6RS dengan (library ...) dan resolusi impor (import (math utils)), dependensi terlebih dahulu, dan ekspor bersifat advisory karena kode tidak terpakai dipangkas (pruned) otomatis saat kompilasi.
Memulai proyek Goeteia sangat langsung: kloning repositori GitHub, menjalankan suite pengujian yang mencakup kedua tahap kompiler, membangun ulang kompiler dengan dirinya sendiri (./build-self.sh), dan mengompilasi file Scheme ke Wasm menggunakan Node.js. Modul terkompilasi berjalan di mesin apa pun dengan dukungan Wasm GC dan tail calls: Node 22+, Chrome, Firefox, Safari terbaru, dan wasmtime. Proses bootstrap dari sumber memerlukan Chez Scheme, namun biner kompiler yang sudah dicek (checked-in) bekerja tanpa dependensi tambahan. Ukuran kompiler hanya ~70 KB (gzipped) dan dikompilasi ulang sumber dalam ~15 ms per eksekusi, membuatnya sangat ringan untuk disertakan dalam halaman web.
Kehadiran Goeteia menandai pergeseran paradigma: browser tidak lagi sekadar mesin eksekusi JavaScript, melainkan platform komputasi universal di mana bahasa-bahasa dengan model semantik kaya — seperti Scheme dengan continuasi, makro higienis, dan GC struktural — dapat berjalan sebagai warga negara pertama (first-class citizens). Bagi pengembang Indonesia, ini membuka pintu eksperimen dengan paradigma pemrograman fungsional murni di frontend tanpa biaya overhead transpilasi ke JavaScript, serta peluang membangun alat-alat pengembang (developer tools), lingkungan belajar pemrograman (REPL berbasis browser), atau aplikasi kolaboratif real-time dengan arsitektur Scheme-to-Scheme yang elegan dan bebas codec.