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
Sie 4, 2025

Epic Games ponownie wygrywa z Google w sądzie – Android czeka przełomowa zmiana

Sąd Apelacyjny Dziewiątego Okręgu w USA podtrzymał jednogłośny werdykt ławy przysięgłych z 25 roku w sprawie Epic Games przeciwko Google, uznając Google Play Store i system płatności Google za nielegalne monopole. Decyzja przywraca działanie stałego zakazu, który zmusi Google do otwarcia Androida na konkurencyjne sklepy z aplikacjami,
0
Lip 11, 2025

Rezygnacja z Google — nowy trend

Wielu z nas wciąż pamięta czasy, gdy Google nazywano „korporacją dobra”, dzięki dewizie Don’t be evil, która była częścią kodeksu etyki firmy. Od tamtej pory wiele się zmieniło. Google, podobnie jak inni giganci technologiczni z grupy FAANG, są oskarżani o nadużywanie zaufania użytkowników, inwigilację i naruszanie prywatności. Niektórzy mogliby wręcz powiedzieć, że ten, kto walczył ze smokiem, sam się nim stał.
0
Sty 28

Sejm przyjął nowelizację ustawy o Krajowym Systemie Cyberbezpieczeństwa wdrażającą dyrektywę NIS2

Sejm przyjął nowelizację ustawy o Krajowym Systemie Cyberbezpieczeństwa, która dostosowuje polskie prawo do unijnej dyrektywy NIS2 i rozszerza zakres regulacji w obszarze cyberbezpieczeństwa, – informuje Sejm RP. Nowe przepisy obejmują kolejne sektory gospodarki i wprowadzają nowe obowiązki dla firm uznanych za kluczowe lub ważne z punktu widzenia funkcjonowania państwa.
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