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
Jan 22

Elon Musk domaga się od OpenAI i Microsoft odszkodowania do 134 mld dolarów

Elon Musk złożył pozew przeciwko OpenAI oraz Microsoft, domagając się odszkodowania w wysokości od 79 do 134 mld dolarów. Spór dotyczy odejścia OpenAI od pierwotnego modelu non-profit oraz późniejszego partnerstwa z Microsoftem, które, według Muska, naruszyło wcześniejsze założenia organizacyjne.
0
Jun 5, 2025

Sąd apelacyjny odrzuca wniosek Apple — zmiany w App Store pozostają w mocy

Amerykański Sąd Apelacyjny dla Dziewiątego Okręgu odrzucił wniosek Apple o tymczasowe wstrzymanie decyzji sądu niższej instancji, która nakłada na firmę obowiązek umożliwienia deweloperom kierowania użytkowników do zewnętrznych systemów płatności bez pobierania prowizji. Spółka nie wykazała, że spełnione zostały warunki konieczne do zawieszenia wykonania wyroku,
0
May 21, 2025

Google Meet zyskał funkcję tłumaczenia głosowego w czasie rzeczywistym

Na konferencji Google I/O 2025 firma zaprezentowała nową funkcję tłumaczenia mowy w czasie rzeczywistym dla Google Meet. Dzięki niej uczestnicy spotkań mówiący różnymi językami będą mogli rozmawiać naturalnie, bez konieczności czytania napisów.
0

This site uses cookies to offer you a better browsing experience.

Find out more on how we use cookies and how to change cookie preferences in our Cookies Policy.

Customize
Save Accept all cookies