Rust programlama dili 1.37 sürümü

yayınlanan sistem programlama dili sürümü Pas 1.37Mozilla projesi tarafından kuruldu. Dil, bellek güvenliğine odaklanır, otomatik bellek yönetimi sağlar ve çöp toplayıcı veya çalışma zamanı kullanmadan yüksek görev paralelliği elde etmek için bir araç sağlar.

Rust'un otomatik bellek yönetimi, geliştiriciyi işaretçi manipülasyonundan kurtarır ve boş bellek erişimleri, boş işaretçi referansları, arabellek taşmaları ve benzeri gibi düşük seviyeli bellek manipülasyonundan kaynaklanan sorunlara karşı koruma sağlar. Kütüphanelerin dağıtılması, montajın sağlanması ve bağımlılıkların projeye göre yönetilmesi için bir paket yöneticisi geliştirilmektedir. Kargo, program için gereken kütüphanelere tek tıklamayla ulaşmanızı sağlar. Kitaplıkları barındırmak için bir depo desteklenir sandıklar.io.

Ana yenilikler:

  • Rusc derleyicisinde sağlanan kod profili oluşturma sonuçlarına dayalı optimizasyon desteği (PGO, Profil Kılavuzlu Optimizasyon),
    programın yürütülmesi sırasında biriken istatistiklerin analizine dayanarak daha uygun kod oluşturmanıza olanak tanır. Bir profil oluşturmak için “-C profile-generate” bayrağı sağlanır ve profili montaj sırasında kullanmak için - “-C profile-use” (başlangıçta program ilk bayrakla birleştirilir, etrafta dolanır ve oluşturulduktan sonra) profil, ikinci bayrakla yeniden birleştirilir);

  • Konsol uygulamalarını hızlı bir şekilde test etmek için kullanımı uygun olan "kargo çalıştırması" komutunu çalıştırırken, pakette birden fazla yürütülebilir dosya varsa çalıştırılacak yürütülebilir dosyayı otomatik olarak seçme yeteneği eklendi. Yürütülecek varsayılan dosya, paket parametrelerini içeren [package] bölümündeki default-run yönergesi aracılığıyla belirlenir; bu, "cargo run"u her çalıştırdığınızda dosya adını "-bin" bayrağı aracılığıyla açıkça belirtmekten kaçınmanıza olanak tanır;
  • Daha önce şu şekilde sağlanan “kargo satıcısı” komutu ayrı paket. Komut, bağımlılıkların yerel bir kopyasıyla çalışmayı düzenlemenize olanak tanır - "kargo satıcısı" yürütüldükten sonra, projenin bağımlılıklarının tüm kaynak kodları Crates.io'dan yerel bir dizine indirilir ve bu daha sonra kasalara erişmeden iş için kullanılabilir. io (komutu yürüttükten sonra, dizini derlemeler için kullanmak üzere yapılandırmayı değiştirmeye yönelik bir ipucu gösterilir). Bu özellik, Rusc derleyicisinin dağıtımını, tüm bağımlılıkların sürümle birlikte tek bir arşivde paketlenmesiyle organize etmek için zaten kullanılıyor;
  • Artık tür takma adlarını kullanarak enum seçeneklerine bağlantılar oluşturmak mümkün (örneğin, "fn artırım_or_zero(x: ByteOption) işlevinin gövdesinde "ByteOption::None => 0" belirtebilirsiniz), hesaplama yapılarını yazın (‹ MyType‹.. ››::option => N) veya Kendi kendine erişimler (c &self bloklarında “Self::Quarter => 25” belirtebilirsiniz);
  • Makrolarda adsız sabitler oluşturma yeteneği eklendi. Öğe adını "const"ta tanımlamak yerine artık "_" karakterini kullanarak tekrarlanmayan bir tanımlayıcıyı dinamik olarak seçebilir ve makroyu yeniden çağırırken ad çakışmalarını önleyebilirsiniz;
  • AlignN‹T› yapısını hizalamayla tanımlamaya ve ardından AlignN‹MyEnum› kullanmaya benzer bir sözdizimi kullanarak numaralandırmalarla "#[repr(align(N))" özelliğini kullanma yeteneği eklendi;
  • API'nin BufReader::buffer, BufWriter::buffer ve dahil olmak üzere yeni bir bölümü kararlı kategoriye taşındı.
    Hücre::from_mut,
    Hücre::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Seçenek::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Sarma::reverse_bits ve
    dilim::kopya_içinde.

Ek olarak, not edilebilir test başlangıcı proje Eşzamansız-stdRust standart kitaplığının eşzamansız bir versiyonunu sunan (tüm arayüzlerin eşzamansız bir sürümde sunulduğu ve eşzamansız/beklemede sözdizimi ile kullanıma hazır olan std kitaplığının bir bağlantı noktası).

Kaynak: opennet.ru

Yorum ekle