2 poin oleh lifthrasiir 20 hari lalu | 2 komentar | Bagikan ke WhatsApp

Sudah lama saya tidak membuat pustaka C. Sesuai namanya, ini adalah interpreter WebAssembly yang seluruhnya dimasukkan ke dalam satu file header C. Tentu ini bukan sekadar interpreter biasa, melainkan juga memiliki hal-hal berikut.

  • Mendukung spesifikasi WebAssembly 3.0 100%. Ya, termasuk GC dan segala fitur semacam itu.
  • WebAssembly memiliki opsi yang disebut deterministic profile, yang memastikan hasil yang sama di lingkungan apa pun, dan opsi ini diimplementasikan. Karena itu, ini berguna untuk menghasilkan hasil yang dapat direproduksi.
  • Dilengkapi optimasi spesifik arsitektur untuk x86-64 dan AArch64 NEON.
  • Tersedia fitur-fitur yang diperlukan untuk sandboxing kode yang tidak tepercaya. Didukung fungsi seperti fuel metering, yaitu eksekusi berjalan sambil menghabiskan fuel untuk setiap instruksi lalu berhenti saat fuel habis, kemampuan memberi interupsi setelah waktu tertentu, serta pengendalian penggunaan memori.
  • API-nya dirancang agar eksekusi bisa dilanjutkan kembali meskipun sempat dihentikan di tengah jalan seperti ini.
  • Dapat membuat modul WebAssembly hanya melalui kode, atau menautkan beberapa modul ke dalam satu modul.
  • Fitur dapat dibatasi saat waktu kompilasi (sehingga kode yang dikompilasi berkurang) maupun saat waktu eksekusi.
  • Dirancang sejak awal dengan tujuan menjaga ABI tetap stabil. Struktur data bisa dialokasikan di stack C, tetapi layout-nya sudah ditetapkan sebelumnya sehingga ABI tidak rusak meskipun versinya naik.
  • Selain itu, jumlah pengujiannya bisa dibilang berlebihan, dan fuzz testing juga dilakukan secara intensif. (Sebenarnya fuzzernya masih berjalan sampai sekarang...)

Awalnya ini direncanakan menjadi bagian dari proyek lain, jadi saya tidak berniat membuatnya seketat ini. Namun untuk menjalankan pengujian implementasi referensi WebAssembly (yang disebut spectest), pada akhirnya semua harus diimplementasikan... dan entah bagaimana jadinya saya sampai menyelesaikan implementasi 100%. Kok bisa sampai begini, ya.

Mengikuti tren belakangan ini, kode pada tahap awal ditulis dengan Gemini CLI, lalu sejak pertengahan menggunakan Claude Code dan sesekali Codex, sementara perencanaannya terutama memanfaatkan Codex. Secara pribadi, ini juga menjadi proyek yang membuktikan bahwa coding agent pun bisa menangani pemrograman sistem yang hardcore dengan cukup baik jika diarahkan dengan benar. Saya juga sedikit ingin menjadikannya contoh tandingan terhadap penilaian bahwa vibe coding memang bisa menghasilkan sesuatu yang tampak meyakinkan, tetapi berantakan di detailnya.

2 komentar

 
ipeng 20 hari lalu

Kalau spesifikasi yang akan diuji jelas, sepertinya pendekatan menyusun workflow dengan coding agent lalu mengarahkannya hingga konvergen bekerja cukup efektif. Saya juga jadi teringat contoh seperti vinext dan pretext.

Ngomong-ngomong soal lain, apakah bisa tolong cek sekali lagi penyajian CSS di jurnal...? Meskipun sudah cukup lama berlalu, masih banyak tulisan bagus yang ingin saya perkenalkan ke orang-orang sekitar, tetapi kalau diakses lewat desktop CSS-nya tidak termuat, sedih.

 
lifthrasiir 20 hari lalu

Server yang menyajikan css telah mati T_T Maaf, untuk sementara silakan gunakan Wayback Machine...