1 puan yazan GN⁺ 2024-09-27 | 1 yorum | WhatsApp'ta paylaş

Rust'ı yeniden yazmak

  • Rust programlama dili ilk nesil bir ürün gibi hissettiriyor
  • Rust'ın ilk cazibesi: cebirsel tipler, bellek güvenliği, performans kaybı olmaması, modern paket yöneticisi
  • 4 yıl kullandıktan sonra, Rust'ın her zaman kusursuz olmadığı görülüyor
  • Dilin gelişimi çok yavaşladı
  • Birçok kararsız özellik kararlı Rust'a dahil edilmiyor

Harika bir dil

  • Rust derleyicisini fork edip yeni bir "seph" sürümü oluşturmak istiyor
  • Rust'ın mevcut özelliklerini korurken yeni özellikler eklemek mümkün

Fonksiyon trait'leri (etkiler)

  • Rust, struct'lar için trait tanımlıyor ancak fonksiyonlar için de trait tanımlamaya ihtiyaç var
  • Fonksiyonların çeşitli özellikleri ifade edilebilir
    • Fonksiyonun panic oluşturup oluşturmadığı
    • Sabit bir stack boyutuna sahip olup olmadığı
    • Fonksiyonun sonuna kadar çalışıp çalışmadığı ya da ortada bekleyip beklemediği
    • Fonksiyonun saf olup olmadığı
    • Fonksiyonun unsafe kod çalıştırıp çalıştırmadığı
    • Fonksiyonun sonlanmayı garanti edip etmediği

Derleme zamanı yetenekleri

  • Birçok Rust projesi çok sayıda üçüncü taraf crate kullanıyor
  • Bu crate'ler tedarik zinciri riskini artırıyor
  • Güvenliğe duyarlı fonksiyon çağrılarını açıkça izinli hale getiren bir özellik eklenmesi öneriliyor
  • fs_write gibi işlevleri çağırmak için açık izin vermek gerekecek

Pin, Move ve struct ödünç alma

  • Pin, Rust'ın borrow checker sorununu çözmek için kullanılan karmaşık bir hack
  • Pin yerine Move işaretleyici trait'ini kullanmak daha mantıklı olabilir
  • Struct alanlarını ödünç verilmiş durumda işaretleyebilecek bir söz dizimi öneriliyor
  • Move işaretleyici trait'i ile Mover trait'inin eklenmesi öneriliyor

Derleme zamanı

  • Zig'in comptime özelliğini getirerek Rust makro dilinin yerine kullanma önerisi
  • Derleme zamanında kod çalıştırabilecek küçük bir yorumlayıcı eklenmesi
  • Rust'ın makro dili yerine doğrudan Rust'ın kendisini kullanmak

Küçük düzeltmeler

  • impl<T: Copy> for Range<T> düzeltmesi
  • İlişkili tiplere sahip derive için düzeltme
  • if-let ifadesinde mantıksal AND desteği
  • Ham pointer'ların kullanılabilirliğini iyileştirme
  • Tüm yerleşik koleksiyon tiplerine Allocator argümanı ekleme

Kapanış düşünceleri

  • Asenkron özelliklerin de iyileştirilmesi gerekiyor ancak bunun için ayrı bir yazı gerekli
  • Değişikliklerin çoğu mevcut Rust ile uyumlu değil
  • Yeni bir Rust sürümü gerekebilir
  • GitHub RFC sürecinden yorulduğu için derleyiciyi doğrudan fork etmeyi düşünüyor

GN⁺ özeti

  • Rust, ilk cazibesine rağmen kusursuz değil
  • Dilin gelişimi yavaşladı ve birçok kararsız özellik kararlı Rust'a eklenmiyor
  • Fonksiyon trait'leri, derleme zamanı yetenekleri, Pin ve Move iyileştirmeleri gibi çeşitli öneriler bulunuyor
  • Bu öneriler Rust'ın kullanılabilirliğini önemli ölçüde iyileştirebilir
  • Benzer özelliklere sahip diğer diller arasında Zig de var

1 yorum

 
GN⁺ 2024-09-27
Hacker News görüşleri
  • Rust RFC sürecine dair görüş

    • Rust çekirdek ekibinin yeni özellik eklemeyi zorlaştırması, dilin tutarlılığını ve öngörülebilirliğini korumak açısından doğru bir karar
    • Swift örneğinde, çok sayıda yeni özelliğin eklenmesi dili karmaşık hale getirdi ve sonunda Swift'ten vazgeçmeme yol açtı
    • Rust'ı mümkün olduğunca sade tutmak önemli
  • Rust'un bağımlılık sorunu

    • Cargo-watch crate'i örneğinde, basit bir dosya izleme uygulaması olmasına rağmen bağımlılıklar nedeniyle kod satırı sayısı 4 milyona ulaşıyor
  • Rust'un mevcut durumu

    • Rust artık "geniş çaplı benimsenme için çalışma" aşamasında
    • Özellik geliştirmedeki yavaşlık doğal ve sağlıklı bir durum; kötü tasarım kararları daha büyük zarar verebilir
    • Rust'un çekiciliği yeni özelliklerden çok bellek güvenliği ve GC'siz, üretime hazır bir dil olması
  • Rust'un yeniden yazılmasına dair görüş

    • Rust'ı Rust ile yeniden yazmak, meta-hiciv niteliğinde bir şaka gibi göründü
  • Rust'un karar alma sürecine yönelik memnuniyetsizlik

    • Yavaş karar alma sürecine dair şikayetler var, ancak bu teknik bir sorundan çok insan ve zaman meselesi
    • Bazı eski özellikler tıkanmış durumda, ancak birçok özelliğin kararlı hale getirilmesi de planlanmıyor
  • Josh Triplett'in yorumu

    • Belirli bir örneğin hatalı olduğuna dikkat çekip ilgili bağlantıyı paylaşıyor
  • Rust'un karmaşıklığına dair görüş

    • Rust zaten çok sayıda özelliğe sahip, ancak daha da fazla özellik isteyenler var
    • Zig daha basit, daha hızlı ve topluluk draması daha az
  • Rust'un hızına dair görüş

    • Proje olgunlaştıkça mevcut özellikleri cilalamak için çok fazla emek gerekiyor
    • Ekipler arası işbirliği zorlaştı ve bunu iyileştirmeye yönelik proje hedefleri var
  • Mutex iyileştirmelerine dair görüş

    • Rust'un senkronizasyon ilkel işlevlerini iyileştirmek için çok çaba harcandı
    • async fn gibi özellikler eklendi ve bunlar daha karmaşık özelliklerin uygulanması için temel oluşturdu
  • Rust'un özellik geliştirme hızına dair görüş

    • Dilin çok hızlı ya da çok yavaş geliştiğinden şikayet edenler var
    • Belirli özellikler yavaş ilerlese de birçok çalışma sürüyor
  • Rust'ta özellik tasarımına dair görüş

    • Fonksiyon trait'leri gibi özelliklerde yakın zamanda kapsamlı tasarım araştırmaları yapıldı
    • Derleme zamanı özellikleri dil seviyesinde çözülemez; WebAssembly gibi çözümler daha olası görünüyor
  • Rust'un borrow checker sorunları

    • Kendi kendine referans veren yapıları anlamak son derece zor bir problem
    • Kısmi borrowing'i nasıl destekleyeceğimiz zaten biliniyor, ancak bunu tür sistemine açığa çıkarmak asıl sorun
  • Rust'un derleme zamanı özellikleri

    • Makro kurallarını daha güçlü hale getirmek için bir RFC yazıldı
    • Programatik sözdizimi çözümleme için daha fazla çalışmaya ihtiyaç var
  • Rust'un kararsız özellikleri

    • Çok sayıda kararsız özellik var ve bunların düzenlenmesi gerekiyor
  • Rust'un gelişim hızına dair görüş

    • Mozilla'nın ayrılması projeyi yavaşlattı, ancak yanlış yola girmektense bunun olması daha iyi