Wydanie języka programowania Rust 2024 (1.85)

Wydanie języka programowania Rust 2024 (1.85)

Opublikowano wersję języka programowania ogólnego przeznaczenia Rust 1.85, który początkowo rozwijany był przez Mozilla, a obecnie jest wspierany przez niezależną organizację non-profit Rust Foundation. Oprócz standardowego numeru wersji 1.85, wydanie oznaczone zostało jako Rust 2024, co oznacza stabilizację zmian wprowadzonych przez ostatnie trzy lata. Edycja "Rust 2024" będzie podstawą dla dalszego rozwoju funkcjonalności w ciągu najbliższych trzech lat, podobnie jak wersja Rust 2021 stanowiła fundament dla rozwoju języka przez ostatnie lata.

Aby zachować zgodność, deweloperzy mogą używać w swoich programach etykiet "2015", "2018", "2021" i "2024", które przypisują programy do określonych stanów języka, odpowiadających wybranym edycjom Rust. Edycje zostały wprowadzone w celu oddzielenia niekompatybilnych zmian, a konfiguracja tych edycji odbywa się w metadanych paczek cargo za pomocą pola "edition" w sekcji "[package]".

Na przykład, edycja "2021" obejmuje funkcjonalność stabilizowaną na koniec 2021 roku, a edycja "2024" dodatkowo wprowadza zmiany, które mogą łamać zgodność, ale zostały zatwierdzone do wdrożenia w przyszłości. Oprócz samego języka, edycje uwzględniają również stan narzędzi i dokumentacji. Do automatycznej adaptacji kodu do nowej edycji języka można użyć komendy "cargo fix".

Główne niekompatybilności w Rust 2024

  • Zmieniono zachowanie przy przechwytywaniu parametrów w "impl Trait", jeśli nie używa się nowej składni "use<..>", która definiuje informacje o ukrytych typach. W Rust 2024, jeśli "use<..>" nie jest użyte, wszystkie parametry w zasięgu są niejawnie przechwytywane. Aby ograniczyć przechwytywanie parametrów, należy używać "use<..>", np. "impl Trait + use<'x, T>" wskazuje, że w ukrytym typie dozwolone jest używanie tylko parametrów "x" i "T".
  • Zmieniono zakres widoczności zmiennych tymczasowych w wyrażeniu "if let". Zmienna tymczasowa w blokach $expr będzie teraz usuwana przed przejściem do bloku "else", a nie po jego wykonaniu.
  • Zmieniono zakres widoczności zmiennych w ostatnich wyrażeniach, które kończą działanie funkcji, bloku lub zamknięcia. Takie zmienne są teraz resetowane do zmiennych lokalnych.
  • Niektóre niejednoznaczne zastosowania mut, ref, ref mut, & i &mut w wzorcach zostały zabronione, np. "let [x, mut y] = &[(), ()];" należy zamienić na "let &[ref x, mut y] = &[(), ()];".
  • Bloki "extern" muszą być oznaczone słowem kluczowym "unsafe".
  • Atrybuty "export_name", "link_section" i "no_mangle" muszą być oznaczone jako "unsafe".
  • Dodano ostrzeżenie "unsafe_op_in_unsafe_fn", które sprawdza użycie bloków "unsafe {}" w funkcjach typu unsafe.
  • Zostało zabronione użycie odniesień do elementów zdefiniowanych jako "static mut".

Nowości w Rust 1.85

  • Dodano obsługę asynchronicznych zamknięć, definiowanych w postaci "async || {}", które działają na podobnej zasadzie jak asynchroniczne wywołania funkcji (async fn).
  • Dodano atrybut "#[diagnostic::do_not_recommend]", który sprawia, że kompilator nie wyświetla zaimplementowanych typów w komunikatach diagnostycznych.
  • Umożliwiono użycie typów FromIterator i Extend dla krotek zawierających do 12 elementów.

Ważne zmiany i stabilizacje w API

  • Zostały stabilizowane metody i implementacje typów, takie jak BuildHasherDefault::new, ptr::fn_addr_eq, io::ErrorKind::QuotaExceeded oraz std::task::Waker::noop.

Rust: Język skupiony na bezpieczeństwie pamięci

Rust jest językiem programowania, który kładzie duży nacisk na bezpieczeństwo pracy z pamięcią. Został zaprojektowany tak, aby zapewnić wysoki poziom paralelizmu bez konieczności korzystania ze zbieracza śmieci czy runtime. Dzięki mechanizmom sprawdzania poprawności podczas kompilacji, takim jak ścisłe zarządzanie referencjami, śledzenie własności obiektów oraz ocena poprawności dostępu do pamięci, Rust eliminuje wiele problemów związanych z manipulowaniem wskaźnikami i operacjami na niskim poziomie, takich jak dostęp do pamięci po jej zwolnieniu czy dereferencja wskaźników null.

Podsumowanie

Wydanie Rust 2024 (1.85) to ważny krok w rozwoju języka, wprowadzający zmiany w zakresie kompatybilności oraz nowe funkcjonalności, które mają na celu uproszczenie i poprawę wydajności pracy z pamięcią, przy jednoczesnym zachowaniu bezpieczeństwa i efektywności. Programiści mogą teraz korzystać z nowych narzędzi, takich jak asynchroniczne zamknięcia oraz usprawnienia w dokumentacji i narzędziach do zarządzania zależnościami.

Avatar
Sty 10, 2025

Microsoft redukuje zatrudnienie, koncentrując się na niskiej produktywności

Microsoft poinformował o planach dotyczących kolejnej rundy zwolnień, skupiając się na pracownikach o niskiej produktywności. Według źródeł dobrze poinformowanych o sytuacji decyzja ta wynika z dążenia firmy do wzmocnienia zarządzania personelem. Rzecznik Microsoft potwierdził planowane zwolnienia, ale odmówił ujawnienia liczby pracowników, których dotyczą.
0
Sty 23, 2025

Stargate za 500 miliardów dolarów: Musk krytykuje, Altman odpowiada

Świat technologii jest świadkiem zaostrzenia konfliktu pomiędzy Elonem Muskiem a Samem Altmanem, tym razem wokół projektu Stargate – gigantycznej inicjatywy o wartości 500 miliardów dolarów mającej na celu budowę infrastruktury dla sztucznej inteligencji w USA. Projekt, ogłoszony w Białym Domu, ma na celu wzmocnienie amerykańskiej pozycji lidera w dziedzinie AI.
0
Kwi 10

UE chce zostać „kontynentem AI”. Nowa strategia przewiduje gigafabryki, dane wysokiej jakości i uproszczone regulacje

Komisja Europejska ogłosiła Ambitny Plan Działań na rzecz Kontynentu AI, mający na celu przekształcić tradycyjne europejskie sektory przemysłowe i dostępne zasoby ludzkie w fundament dynamicznego rozwoju technologii sztucznej inteligencji.
0

Ta strona używa plików cookie, aby zapewnić Ci lepsze wrażenia podczas przeglądania.

Dowiedz się więcej o tym, jak używamy plików cookie i jak zmienić preferencje dotyczące plików cookie w naszej Polityka plików cookie.

Zmień ustawienia
Zapisz Akceptuj wszystkie cookies