- Memudahkan pembangunan perangkat lunak concurrent, sehingga pengembangan dapat dilakukan tanpa khawatir tentang performa yang tidak dapat diprediksi, error runtime, data race, atau type error
- Memiliki fitur seperti manajemen memori otomatis, move semantics, static typing, konkurensi yang aman secara tipe, dan penanganan error yang efisien
Manajemen memori otomatis yang deterministik
- Inko tidak bergantung pada garbage collection, melainkan menggunakan manajemen memori berbasis kepemilikan tunggal dan move semantics
- Nilai yang dimiliki akan dihapus saat keluar dari cakupan, dan dapat dipinjam secara immutable maupun mutable
- Penggunaan kepemilikan tunggal memberikan perilaku dan performa yang dapat diprediksi, tanpa membuang waktu untuk mengatur garbage collection
Inko aman
- Dengan Inko, tidak perlu khawatir tentang error yang umum ditemukan di bahasa lain seperti pointer NULL, kesalahan use-after-free, error runtime, atau data race
- Menyediakan tipe Option untuk data opsional, serta mendukung referensi immutable dan mutable sehingga perubahan dapat dibatasi sesuai kebutuhan
Membuat konkurensi menjadi mudah
- Inko mengimplementasikan konkurensi menggunakan proses ringan, serta memakai model konkurensi yang terinspirasi dari Erlang dan Pony
- Proses saling terisolasi dan berkomunikasi melalui pesan, sementara compiler menjamin ketepatan melalui pemeriksaan tipe
- Saat data dikirim antarproses, keunikan data dijamin sehingga data race menjadi mustahil
Penanganan error yang benar
- Inko menggunakan pendekatan penanganan error yang terinspirasi dari artikel Joe Duffy, "The Error Model"
- Error direpresentasikan sebagai tipe aljabar bernama "Result", dan menyediakan penyederhanaan sintaks melalui
try dan throw
- Untuk error serius yang tidak dapat atau tidak seharusnya ditangani, tersedia dukungan "panics" yang menghentikan program
Efisien
- Inko tidak bertujuan bersaing dengan bahasa tingkat rendah seperti C atau Rust, melainkan menjadi alternatif yang menarik untuk bahasa seperti Ruby, Erlang, dan Go
- Menggunakan compiler kode native dengan LLVM sebagai backend, dan menawarkan keseimbangan antara waktu kompilasi yang cepat dan performa runtime yang baik
- Kode native ditautkan secara statis ke pustaka runtime kecil yang ditulis dalam Rust untuk menangani penjadwalan proses, non-blocking IO, dan lain-lain
Pattern matching
- Inko mendukung pattern matching untuk berbagai tipe seperti tuple dan tipe data aljabar
- Pattern matching dikompilasi menjadi decision tree, dan compiler berupaya menjaga ukurannya sekecil mungkin
- Compiler menjamin bahwa semua pattern tercakup
3 komentar
Membuat sesuatu yang mirip Rust dengan Rust ??
Agak kurang sreg karena manajemen paketnya bergantung pada GitHub. Semoga lingkungan yang tidak bisa terhubung ke internet juga sedikit dipertimbangkan…
Opini Hacker News
Model konkurensi Inko terinspirasi dari Erlang dan Pony, serta menggunakan proses ringan.
Untuk menambahkan paket Inko, perlu membuat repositori GitHub.
Tautan diskusi terkait Inko disediakan:
Muncul pertanyaan soal kemiripannya dengan Rust:
Ada ketertarikan pada Inko dan harapan agar ia menjadi seperti Golang:
Dibagikan fakta menarik bahwa nama Inko berarti "satu lagi" dalam bahasa Telugu.
Ada pembahasan tentang perbedaan sintaks dengan Rust:
Keputusan desain Inko dinilai positif:
Disebutkan perlunya binary prebuilt:
Tautan diskusi terkait tambahan juga disediakan.