IT

Bahasa pemrograman Goose: Segala hal tentang bahasa baru yang menjanjikan performa lebih baik dari C++ dan Rust

Goose adalah bahasa sistem baru tanpa heap, tanpa pengumpul sampah (garbage collector), dan tanpa anotasi masa pakai (lifetime annotations). Pembuatnya mengklaim Goose berjalan lebih dari 3x lebih cepat daripada C++ idiomatik. Berikut cara kerjanya dan apakah layak dicoba.

·3 menit baca
Bahasa pemrograman Goose: Segala hal tentang bahasa baru yang menjanjikan performa lebih baik dari C++ dan Rust

Salah satu topik yang paling banyak dibicarakan di kalangan pengembang dalam beberapa pekan terakhir adalah bahasa pemrograman Goose. Bahasa ini diciptakan oleh Wouter van Oortmerssen, seorang programmer veteran sekaligus pembuat bahasa Lobster. Goose bersifat open source di bawah lisensi Apache 2.0, dan yang paling menarik, sang pembuat menyatakan bahwa compiler-nya dibuat hampir sepenuhnya menggunakan AI, berdasarkan spesifikasi bahasa yang dirancang oleh manusia.

Dalam kebanyakan bahasa, data dinamis seperti array dan string disimpan di heap dan memerlukan pengumpul sampah (Java, Go), penghitungan referensi (Swift), atau aturan masa pakai (Rust) untuk mengelolanya. Goose tidak menggunakan semua itu. Menurut dokumentasinya, setiap nilai dinamis berada pada tumpukan data (data stacks) yang dikelola oleh compiler.

  • Setiap stack adalah reservasi ruang alamat besar (secara default 2GB) dengan bump pointer sederhana
  • Hanya ada satu nilai yang dapat diubah ukurannya yang aktif per stack pada satu waktu, dan nilai tersebut selalu berada di atas
  • Memperbesar array cukup dengan menggerakkan pointer ke depan — tidak ada yang dipindahkan
  • Mengosongkan memori saat keluar cakupan (scope exit) hanyalah sebuah operasi penyimpanan tunggal

Compiler membuktikan aturan-aturan ini pada waktu kompilasi; saat runtime, hanya bump pointer yang dilacak.

Cara kerja keamanan

Setiap referensi memiliki "root" statis — variabel yang membatasi masa pakainya. Compiler menyimpulkan root dengan sendirinya dan menolak referensi yang masa pakainya melebihi pemiliknya. Tidak seperti Rust, programmer tidak perlu menulis anotasi masa pakai, dan tidak ada fitur unsafe.

Sekilas tentang sintaksisnya

Goose memiliki sintaksis yang ringkas dan mirip C. Struct dengan data berukuran variabel dideklarasikan seperti ini: struct Item { sku: u8[varint], qty: varint, cents: varint }. Ada tiga jenis array: ukuran tetap (fixed-size), hanya bisa tumbuh (grow-only), dan bisa tumbuh-menyusut (grow-shrink).

Kecepatan: klaim angka dari pembuatnya

Sang pembuat mempublikasikan hasil pengujian di 16 tolok ukur (rata-rata geometris). Menurut mereka, Goose:

  • sekitar 3,3–3,5x lebih cepat daripada C++ idiomatik
  • 1,16–1,26x lebih cepat daripada C++ yang dioptimalkan secara manual
  • 1,12–1,19x lebih cepat daripada Rust aman terbaik
  • menggunakan memori 1,2–1,9x lebih sedikit

Sebagai contoh, catatan pesanan memerlukan 29 byte dan nol alokasi di Goose, dibandingkan dengan 160 byte dan satu alokasi di C++, serta 153 byte dan empat alokasi di Rust. Perlu diingat bahwa ini adalah tolok ukur buatan pembuatnya sendiri; verifikasi independen saat ini masih terbatas.

Keterbatasan

  • Fungsi rekursif tidak dapat menyimpan data yang ukurannya dapat bertambah di dalam panggilan rekursif
  • Tidak ada escaping closure atau function pointer
  • Hanya mendukung kompilasi seluruh program (whole-program compilation)
  • Ekosistem pustaka (library) masih sangat kecil

Cara mencobanya

Compiler siap pakai tersedia untuk Windows x64, Linux x64, dan macOS (Apple silicon serta Intel). Goose dikompilasi menjadi satu file C tunggal, sehingga dapat berjalan di mana pun compiler C berada. Unduh rilis dari halaman aardappel/goose di GitHub, tambahkan folder tersebut ke PATH Anda, dan jalankan contoh kode dengan perintah goose samples/01_tour.goose. Ekstensi VS Code juga disertakan dalam arsip tersebut.

Kesimpulan

Goose adalah eksperimen yang memukau dengan pendekatan manajemen memori yang benar-benar baru. Para systems programmer yang peduli dengan performa sebaiknya memantau dan mencobanya. Namun, bahasa ini masih baru: untuk penggunaan di lingkungan produksi, sebaiknya tunggu tolok ukur independen dan ekosistem yang lebih besar.

Sumber: Goose (aardappel)

Artikel terkait