Goose hadir sebagai bahasa pemrograman sistem yang mengutamakan keamanan memori tanpa menggunakan alokator heap, garbage collector, maupun anotasi lifetime. Berdasarkan pengujian dari pengembangnya, bahasa ini mampu berjalan lebih cepat dibandingkan C++ dan Rust dengan konsumsi memori yang lebih rendah.
Model Memori dan Performa
Bahasa ini dirancang dengan sintaks yang familier bagi para programmer C dan Rust, namun meniadakan penggunaan heap sepenuhnya. Setiap nilai dinamis disimpan secara inline pada tumpukan data (data stack) yang dikelola langsung oleh compiler. Pertumbuhan tumpukan dilakukan dengan menggeser pointer, sementara pembersihan memori terjadi secara otomatis saat cakupan (scope) berakhir. Aturan tipe dan lifetime pada bahasa ini membuat model memori tersebut aman untuk digunakan.
Dalam pengujian yang mencakup enam belas skenario benchmark, Goose mencatatkan kecepatan 3,3 kali lipat dibandingkan C++ idiomatik, 1,16 kali lipat dari C++ yang dioptimalkan secara manual, serta 1,12 kali lipat dari Rust aman terbaik. Penggunaan memorinya pun tercatat lebih efisien, masing-masing 1,9 kali, 1,3 kali, dan 1,2 kali lebih sedikit. Peningkatan performa ini bersumber dari tata letak data serta model memori yang diusung oleh Goose.
Bahasa ini tidak memiliki alokator, garbage collector, penghitungan referensi, maupun destruktor. Memori dikelola melalui sejumlah tumpukan data yang ditetapkan secara statis oleh compiler. Pembersihan struktur data berukuran satu juta elemen dapat dilakukan hanya dengan satu penyimpanan data, seberapa pun dalam tingkat sarangnya.
Fitur Unggulan dan Kompilasi
Pertumbuhan data pada Goose tetap mempertahankan referensi yang valid selama array tersebut masih hidup. Referensi dan slice yang ada memiliki root statis, yakni variabel yang membatasi masa pakai targetnya. Compiler melakukan inferensi terhadap root tersebut sehingga tidak diperlukan anotasi manual, aturan aliasing, ataupun penggunaan blok kode tidak aman (unsafe).
Data bersarang dalam bahasa ini tetap berada secara inline sebagai blok kontigu tanpa pointer di dalamnya. Selain itu, tipe data aljabar (ADT) variabel memberikan ukuran spesifik bagi setiap varian, menghasilkan efisiensi memori dan kecepatan proses yang lebih tinggi. Tautan relatif antar data disimpan sebagai offset sempit berukuran satu, dua, atau empat byte yang membuat struktur data menjadi independen posisi.
Goose dikompilasi menjadi satu berkas bahasa C, sehingga dapat dijalankan pada platform apa pun yang mendukung compiler C serta berinteraksi langsung melalui fungsi eksternal (*extern fn*). Backend TinyCC yang disertakan memungkinkan program dikompilasi dan dijalankan secara in-process tanpa memerlukan tahapan build terpisah.
Latar Belakang Proyek
Proyek ini dikembangkan oleh Wouter van Oortmerssen yang merancang desain bahasa dan standar pengkodean, serta Claude Fable yang menangani implementasi compiler, benchmark, serta penulisan dokumentasi. Pembuatan repositori ini sebagian besar dikerjakan menggunakan kecerdasan buatan berdasarkan desain bahasa awal yang telah dirancang bertahun-tahun sebelumnya.
Pemilihan bahasa C++ untuk membangun compiler didasarkan pada pertimbangan keselarasan ekosistem, mengingat output compiler Goose berupa kode C. Saat ini, Goose didistribusikan di bawah lisensi Apache License, Version 2.0, lengkap dengan dukungan compiler siap pakai untuk sistem operasi Windows, Linux, dan macOS.
Sumber: Hacker News: Front Page






