3 poin oleh GN⁺ 14 hari lalu | Belum ada komentar. | Bagikan ke WhatsApp
  • Bahasa kecil yang berjalan di atas runtime Go sambil menggunakan sintaks bergaya Rust, menggabungkan keunggulan kedua bahasa
  • Struktur yang memperkuat keamanan dan daya ekspresif melalui algebraic data type, pattern matching, sistem tipe Hindley-Milner, dan immutability secara default
  • Menjamin interoperabilitas dengan ekosistem Go melalui import langsung paket Go, operator pipeline, blok try, dan konkurensi berbasis task
  • Meningkatkan pengalaman pengembang dan stabilitas kode dengan deteksi kesalahan saat compile time, pesan diagnostik yang jelas, dan dukungan LSP
  • Poin utamanya adalah kode Lisette diubah menjadi kode Go yang jelas dan mudah dibaca, sehingga bisa terintegrasi secara alami dengan proyek Go yang sudah ada

Gambaran umum Lisette

  • Lisette adalah bahasa kecil berbasis sintaks Rust yang dikompilasi ke runtime Go
  • Memiliki karakteristik seperti algebraic data type, pattern matching, tanpa nil, sistem tipe Hindley-Milner, immutability secara default, dan interoperabilitas dengan ekosistem Go
  • Dapat diinstal dengan perintah cargo install lisette, dan bisa langsung mengimpor serta menggunakan paket Go seperti fmt, io, os

Sintaks yang familier

  • Memiliki struktur sintaks yang mirip Rust
    • Mendukung pattern matching melalui enum dan match
    • Definisi method dimungkinkan dengan blok struct dan impl
  • Sebagai bahasa yang berorientasi ekspresi, if, let, dan blok semuanya mengembalikan nilai
  • Mendukung chaining dan lambda sehingga pemrosesan environment variable atau manipulasi string bisa ditulis dengan ringkas
  • Mendukung interface dan generic, dan memungkinkan penulisan fungsi generik melalui definisi interface serta constraint T: Trait
  • Tipe Option dapat ditangani secara ringkas dengan sintaks if let dan let else

Keamanan

  • Mendeteksi kesalahan yang dapat terjadi di runtime Go saat compile time

    • Jika tidak semua pola ditangani dalam pernyataan match, akan muncul error
    • nil tidak bisa digunakan, nilai yang hilang direpresentasikan dengan Option<T>
    • Jika nilai kembalian Result diabaikan, akan muncul peringatan
    • Muncul peringatan jika tipe privat diekspos dalam API publik
    • Akan terjadi error jika variabel immutable diteruskan sebagai argumen yang bisa diubah
    • Jika field struct terlewat, akan terjadi compile error
    • Pesan diagnostik menyertakan lokasi kode yang spesifik dan saran perbaikan
    • Dapat digunakan di editor utama seperti VSCode, Neovim, dan Zed dengan dukungan LSP(Language Server Protocol)

Kegunaan

  • Dirancang dengan fokus pada interoperabilitas dengan Go
  • Operator pipeline(|>) memungkinkan chaining fungsi ditulis dengan ringkas
  • Blok try menyederhanakan propagasi error
  • Konkurensi diimplementasikan menggunakan task dan Channel, mirip dengan goroutine di Go
  • Dengan atribut serialisasi, nama field JSON, penghilangan field, konversi string, dan tag validasi dapat ditentukan
  • Menyediakan blok recover untuk pemulihan panic, dan penanganan error yang aman dengan tipe Result
  • Mendukung sintaks defer untuk menjamin pembersihan resource atau rollback transaksi

Hasil kompilasi yang transparan

  • Kode Lisette diubah menjadi kode Go yang jelas dan mudah dibaca
    • Tipe Option dan Result masing-masing diubah menjadi struct lisette.Option dan lisette.Result
    • Sintaks match diubah menjadi pernyataan kondisional Go untuk menangani tiap cabang
    • Operator ? secara internal diganti dengan kode pemeriksaan Result
  • Sebagai contoh, fungsi classify menerima Option<int> lalu diubah menjadi pernyataan kondisional eksplisit di Go, sedangkan fungsi combine diubah menjadi kode Go yang memeriksa Result

Informasi tambahan

  • Repositori resmi: github.com/ivov/lisette
  • Dirilis dengan lisensi MIT, dan pada 2026 dikembangkan oleh Iván Ovejero

Belum ada komentar.

Belum ada komentar.