10 poin oleh xguru 2023-11-18 | 3 komentar | Bagikan ke WhatsApp
  • 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

 
ahwjdekf 2023-11-18

Membuat sesuatu yang mirip Rust dengan Rust ??

 
regentag 2023-11-18

Agak kurang sreg karena manajemen paketnya bergantung pada GitHub. Semoga lingkungan yang tidak bisa terhubung ke internet juga sedikit dipertimbangkan…

 
xguru 2023-11-18
Opini Hacker News
  • Model konkurensi Inko terinspirasi dari Erlang dan Pony, serta menggunakan proses ringan.

    • Proses saling terisolasi dan berkomunikasi melalui pesan.
    • Proses dan pesan didefinisikan dengan kelas dan metode, dan kompiler menjamin ketepatannya melalui pemeriksaan tipe.
    • Data ditransfer secara unik antarp­roses sehingga data race tidak mungkin terjadi, sekaligus menghilangkan kebutuhan akan deep copy.
    • Mendukung channel multi-produser dan multi-konsumen sehingga komunikasi antarp­roses dimungkinkan tanpa referensi eksplisit.
  • Untuk menambahkan paket Inko, perlu membuat repositori GitHub.

    • Manajer paket Inko juga mendukung repositori Git lain seperti GitLab, tetapi daftar paket disusun menggunakan repositori GitHub.
    • Ada kekhawatiran terhadap kecenderungan komunitas untuk bergantung pada produk Microsoft dan Git.
  • Tautan diskusi terkait Inko disediakan:

    • "Show HN: Inko 0.10.0 – bangun perangkat lunak konkuren dengan percaya diri" (September 2022, 3 komentar)
    • "Inko 0.5.0 dirilis, menampilkan langkah awal menuju kompiler self-hosting" (September 2019, 7 komentar)
    • "Inko (bahasa pemrograman berorientasi objek dengan pengetikan bertahap) 0.4.0 dirilis" (Mei 2019, 1 komentar)
    • "Show HN: Inko – bahasa pemrograman berorientasi objek yang aman dan konkuren" (Agustus 2018, 45 komentar)
  • Muncul pertanyaan soal kemiripannya dengan Rust:

    • Ditanyakan apakah Inko cukup mirip dengan Rust sehingga perlu alasan khusus untuk memilih Inko alih-alih Rust.
    • Diperlukan contoh program yang sulit atau merepotkan di Rust tetapi bisa ditulis dengan mudah di Inko.
  • Ada ketertarikan pada Inko dan harapan agar ia menjadi seperti Golang:

    • Inko tampaknya bermula di GitLab, disertai harapan agar ia menjadi seperti Golang dan penyebutan perlunya GC.
    • Ditanyakan apa pembeda Inko dari Gleam dan ada minat pada cara memanfaatkan ekosistem JVM.
  • Dibagikan fakta menarik bahwa nama Inko berarti "satu lagi" dalam bahasa Telugu.

  • Ada pembahasan tentang perbedaan sintaks dengan Rust:

    • Perbandingan rinci mengenai perbedaan sintaks antara Rust dan Inko.
    • Disebutkan perbedaan kecil seperti deklarasi fungsi dan penulisan generik.
  • Keputusan desain Inko dinilai positif:

    • Sintaksnya mirip bahasa keluarga C/Java sehingga terasa familier bagi banyak orang.
    • Muncul pertanyaan tentang keputusan penamaan pada bagian penanganan error.
  • Disebutkan perlunya binary prebuilt:

    • Kesulitan kompilasi akibat masalah LLVM disebut sebagai alasan kurangnya perhatian terhadap Inko.
  • Tautan diskusi terkait tambahan juga disediakan.