- Eşzamanlı yazılımları kolayca geliştirmeyi sağlar; öngörülemeyen performans, çalışma zamanı hataları, veri yarışları ve tip hataları konusunda endişe duymadan geliştirme yapılabilir
- Otomatik bellek yönetimi, move semantics, statik tipleme, tip güvenli eşzamanlılık ve verimli hata işleme gibi özellikler sunar
Deterministik otomatik bellek yönetimi
- Inko, garbage collection'a bağlı kalmadan tek sahiplik ve move semantics temelli bir bellek yönetimi kullanır
- Sahip olunan değerler kapsam dışına çıktığında silinir ve değiştirilemez ya da değiştirilebilir olarak ödünç alınabilir
- Tek sahiplik kullanımı, öngörülebilir davranış ve performans sağlar; garbage collection ayarlarıyla zaman kaybettirmez
Inko güvenlidir
- Inko ile NULL pointer, use-after-free, çalışma zamanı hataları ve veri yarışları gibi diğer dillerde sık görülen hatalar konusunda endişe etmeniz gerekmez
- Opsiyonel veriler için Option tipi sağlar ve değiştirilemez ile değiştirilebilir referansları destekleyerek gerektiğinde değişikliği sınırlamanıza olanak tanır
Eşzamanlılığı kolaylaştırır
- Inko, eşzamanlılığı hafif süreçlerle uygular ve Erlang ile Pony'den ilham alan bir eşzamanlılık modeli kullanır
- Süreçler birbirinden izole edilir ve mesajlar üzerinden iletişim kurar; derleyici ise tip denetimiyle doğruluğu garanti eder
- Süreçler arasında veri aktarılırken verinin benzersizliği garanti edilir, böylece veri yarışı imkânsız hale gelir
Hata işlemeyi doğru yapar
- Inko, Joe Duffy'nin "The Error Model" makalesinden ilham alan bir hata işleme yaklaşımı kullanır
- Hatalar "Result" adlı bir cebirsel tip ile ifade edilir ve
try ile throw üzerinden sözdizimsel sadeleştirme sunar
- Ele alınamayan veya ele alınmaması gereken kritik hatalar için programı durduran "panics" desteği sunar
Verimlidir
- Inko, C veya Rust gibi düşük seviyeli dillerle rekabet etmekten ziyade Ruby, Erlang ve Go gibi dillere çekici bir alternatif olmayı hedefler
- LLVM'i arka uç olarak kullanan yerel kod derleyicisi kullanır ve hızlı derleme süreleri ile iyi çalışma zamanı performansı arasında denge sunar
- Yerel kod, süreç zamanlaması ve non-blocking IO gibi işleri yöneten, Rust ile yazılmış küçük bir çalışma zamanı kütüphanesine statik olarak bağlanır
Desen eşleme
- Inko, tuple'lar ve cebirsel veri tipleri dahil çeşitli tipler için desen eşlemeyi destekler
- Desen eşleme bir karar ağacına derlenir ve derleyici mümkün olduğunca küçük boyutu korumaya çalışır
- Derleyici, tüm desenlerin kapsandığını garanti eder
3 yorum
rust ile rust'a benzeyen bir şey yapmışlar ??
Paket yönetiminin GitHub'a bağımlı olması pek hoş değil. İnternete bağlanılamayan ortamlar da biraz düşünülse iyi olurdu…
Hacker News görüşleri
Inko'nun eşzamanlılık modeli Erlang ve Pony'den ilham alıyor ve hafif süreçler kullanıyor.
Inko paketi eklemek için bir GitHub deposu oluşturmak gerekiyor.
Inko ile ilgili tartışma bağlantıları paylaşılıyor:
Rust ile benzerliği hakkında soru işaretleri dile getiriliyor:
Inko'ya ilgi ve onun Golang gibi olmasına dair bir temenni ifade ediliyor:
Inko adının Telugu dilinde "bir tane daha" anlamına geldiğine dair eğlenceli bir bilgi paylaşılıyor.
Rust ile sözdizimsel farklar tartışılıyor:
Inko'nun tasarım kararları olumlu değerlendiriliyor:
Önceden derlenmiş binary'lere ihtiyaç olduğundan söz ediliyor:
İlgili tartışma bağlantılarına ek olarak yer veriliyor.