Rust 1.47 Proqramlaşdırma Dili Buraxılışı

Mozilla layihəsi tərəfindən əsası qoyulmuş Rust sistem proqramlaşdırma dilinin 1.47 buraxılışı nəşr olunub. Bu dil yaddaşın təhlükəsizliyinə diqqət yetirir, yaddaşın avtomatik idarə edilməsini təmin edir və zibil toplayıcıdan və ya iş vaxtından istifadə etmədən yüksək tapşırıq paralelliyinə nail olmaq üçün vasitələr təqdim edir (iş vaxtı standart kitabxananın əsas işə salınması və saxlanmasına qədər azaldılır).

Rust-un avtomatik yaddaş idarəetməsi göstəriciləri idarə edərkən səhvləri aradan qaldırır və aşağı səviyyəli yaddaş manipulyasiyasından yaranan problemlərdən qoruyur, məsələn, boşaldıqdan sonra yaddaş bölgəsinə daxil olmaq, null göstərici referensiyaları, bufer aşması və s. Kitabxanaları yaymaq, montajı təmin etmək və asılılıqları idarə etmək üçün layihə Yük paketi meneceri hazırlayır. Crates.io deposu kitabxanaların yerləşdirilməsi üçün dəstəklənir.

Əsas yeniliklər:

  • İxtiyari ölçülü massivlər üçün əlamətlər üçün həyata keçirilən dəstək. Əvvəllər bütün tam ədədlər üçün ümumi funksiyaları müəyyən etmək mümkün olmadığına görə, standart kitabxana yalnız ölçüsü 32 elementə qədər olan massivlər üçün daxili xüsusiyyət dəstəyini təmin edirdi (hər ölçü üçün əlamətlər statik olaraq müəyyən edilmişdir). Const generics funksionallığının yaradılması sayəsində istənilən massiv ölçüsü üçün ümumi funksiyaları müəyyən etmək mümkün oldu, lakin onlar kompilyatorda həyata keçirilsə də və hazırda standart kitabxanada istifadə olunsa da, hələ də dilin stabil xüsusiyyətlərinə daxil edilməyib. istənilən ölçülü massiv növləri üçün.
    Məsələn, Rust 1.47-də aşağıdakı konstruksiya əvvəllər xəta ilə nəticələnsə də, serialın məzmununu çap edəcək:

fn main() {
qoy xs = [0; 34];
println!("{:?}", xs);
}

  • Daha qısa izlərin (backtrace) çıxışı, fövqəladə hallarda çıxış təmin edilir. Əksər hallarda maraq doğurmayan, lakin çıxışı qarışdıran və diqqəti problemin əsas səbəblərindən yayındıran elementlər izdən çıxarılır. Tam izi qaytarmaq üçün "RUST_BACKTRACE=full" mühit dəyişənindən istifadə edə bilərsiniz. Məsələn, kod üçün

fn main() {
təlaş!();
}

Əvvəllər iz 23 mərhələdə çıxarılırdı, indi isə mahiyyəti dərhal qavramağa imkan verən 3 mərhələyə endiriləcək:

'main' mövzusu 'açıq panik'də panikaya düşdü, src/main.rs:2:5
yığın geri izi:
0: std::panicking::begin_panic
/rustc/d…d75a/library/std/src/panicking.rs:497 ünvanında
1: oyun meydançası::əsas
./src/main.rs:2 ünvanında
2: core::ops::function::FnOnce::call_once
/rustc/d…d75a/library/core/src/ops/function.rs:227 ünvanında

  • Rustc kompilyatoru LLVM 11-dən istifadə etməklə qurmaq üçün yeniləndi (Rust kod yaratmaq üçün LLVM-dən arxa plan kimi istifadə edir). Eyni zamanda, köhnə LLVM ilə 8-ci versiyaya qədər qurmaq imkanı saxlanılır, lakin standart olaraq (rust-lang/llvm-project-də) LLVM 11 indi istifadə olunur.Yaxın vaxtlarda LLVM 11-in buraxılması gözlənilir. günlər.
  • Windows platformasında rustc kompilyatoru “-C nəzarət axını-mühafizəsi” bayrağından istifadə edərək aktivləşdirilmiş nəzarət axınının bütövlüyünü yoxlamaq (Control Flow Guard) üçün dəstək verir. Digər platformalarda bu bayraq hələlik nəzərə alınmır.
  • API-nin yeni hissəsi stabilləşdirilmiş Ident::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from daxil olmaqla stabil kateqoriyaya köçürülüb. , f32:: TAU və f64::TAU.
  • Metodlarda onu sabitlər əvəzinə istənilən kontekstdə istifadə etmək imkanını müəyyən edən “const” atributundan istifadə olunur:
    • sıfırdan başqa bütün tam ədədlər üçün yeni;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub və saturating_mul bütün tam ədədlər üçün;
    • is_ascii_alphabetic, is_ascii_upppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitescirrol and iscontrol.as for.
  • FreeBSD üçün FreeBSD 11.4 alət dəsti istifadə olunur (FreeBSD 10 LLVM 11-i dəstəkləmir).

-dən götürülüb opennet.ru

Mənbə: linux.org.ru

Добавить комментарий