TeamQuest Blog

Apple poszukuje programistów Rust

Apple poszukuje programistów Rust

Przemysław Pintal , 26.03.2020 r.

Język programowania Rust jest najprawdopodobniej jedynym obecnie nowoczesnym językiem zdolnym zastąpić C w zastosowaniach niskopoziomowych i wbudowanych albo dostrzegalnie zajmować tę samą niszę. Wskazuje się tutaj następujące cechy Rust: mocna kontrola typów, brak odśmiecacza pamięci i zdolność do jej ręcznego przydzielania czy syntaktykę w stylu C. Dynamika rozwoju języka Rust cechuje się zauważalną aktywnością. Niemniej deklaracja o zastępowalności jednego języka drugim zdaje się na wyrost, skoro w tym przypadku C posiada przewagę w postaci narzędzi. Jego siła zdaje się tkwić także w owym konserwatyzmie C, jakie powoli się zmienia.

Apple

Apple na swoim Twitterze ogłosiło, że poszukują programistów znających język programowania Rust, dla swoich przedsięwzięć opartych o chmurę i na backend sieciowy. Dodatkowym atutem jest znajomość języka C i systemów operacyjnych zgodnych z POSIX, obok niskopoziomowej obsługi sieci. Zadaniem inżyniera oprogramowania będzie przeniesienie obecnej bazy kodu źródłowego z C do Rust i implementacja kolejnych funkcji już w Rust.

Rust 1.42.0 (2020-03-12)

Zespół Rust niedawno ogłosił wydanie stabilnej wersji języka programowania Rust o numerze edycji 1.42.0.

Język:

1. Odtąd jest możliwe używanie syntaktyki slice pattern dla subslices. Dla przykładu:

fn foo(words: &[&str]) {
match words {
["Hello", "World", "!", ..] => println!("Hello World!"),
["Foo", "Bar", ..] => println!("Baz"),
rest => println!("{:?}", rest),
}
}

2. Jest możliwe użycie #[repr(transparent)] dla jednoczynnikowych typów wyliczeniowych enum. To jest typ wyliczeniowy enum może przyjąć ten sam układ i ABI jak typ który zawiera w sobie.

#[repr(transparent)]
enum Foo { Bar(u8) }

Jest tożsame:

#[repr(transparent)]
struct Foo(u8);

3. Zmiany które zaszły w syntaktyce:

  • default jest składniowo dopuszczalne przed elementami w definicjach trait;
  • Elementy w impl (np. const, type, fn) mogą składniowo opuścić własne definicje na korzyść;
  • Zakresy (Bounds) dla powiązanych typów w impl są aktualnie składniowo dopuszczalne (np. typ Foo: Ord);
  • Typy ze zmienną liczbą argumentów w stylu C (C-variadic, w Rust używa się po prostu makra, jest to przeznaczone do wywoływania procedur z innych języków za pomocą FFI przyp. tłum.) w składni mogą wystąpić bezpośrednio jako typ każdego parametru funkcji.

Zobacz też: Silnik synchronizacji w aplikacji Dropboksa został przepisany w języku Rust

Jest to nadal odrzucane na poziomie semantyki i zostanie wyświetlony błąd, lecz te zmiany mogą zostać użyte i być sparsowane w makrach proceduralnych i w czasie kompilacji warunkowej (Conditional compilation, coś takiego jak ifdef w C++ przyp.tłum.).

Kompilator:

  1. Wsparcie na poziomie Tier 2 dla platformy rmv7a-none-eabi.
  2. Wsparcie na poziomie Tier 2 dla platformy riscv64gc-unknown-linux-gnu.
  3. Option::{expect,unwrap}Result::{expect, expect_err, unwrap, unwrap_err} odtąd będzie wyświetlał komunikat paniki wskazując konkretne miejsce jakie je wywołało, a nie odwoływał się tylko do organizacji wewnętrznej biblioteki podstawowej.

Listę wspieranych platform można przejrzeć na podstronie projektu Rust.

Biblioteki:

  1. iter::Empty<T> odtąd implementuje SendSync dla każdego T (T oznacza nazwę parametru typu, w języku Rust nazwy parametrów typów są krótkie, często jest to jedna litera przyp.tłum.).
  2. Pin::{map_unchecked, map_unchecked_mut} nie wymaga odtąd zwracania typu, aby zaimplementować Sized.
  3. io::Cursor odtąd wywodzi PartialEqEq.
  4. Layout::new jest odtąd const.
  5. Dodano wsparcie Biblioteki Standardowej dla platformy riscv64gc-unknown-linux-gnu.

Ustabilizowane API:

CondVar::wait_while, CondVar::wait_timeout_while, DebugMap::key, DebugMap::value, ManuallyDrop::take, matches!, ptr::slice_from_raw_parts_mut, ptr::slice_from_raw_parts.

Cargo:

Odtąd nie istnieje potrzeba dołączania extern crate proc_macro;, aby używać proc_macro; w edycji Rust 2018.

Informacje o kompatybilności:

Error::description zostało uznane za przestarzałe (deprecated) i jego użycie wyświetli błąd. Zalecane jest użycie w zamian Display/to_string.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej