Rust (programovací jazyk)

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Rust je svobodný víceúčelový, multiparadigmatický, kompilovaný programovací jazyk, vyvinutý organizací Mozilla Research. Je navržen jako „bezpečný, paralelní, praktický programovací jazyk“, podporující čistě funkcionální, imperativně-procedurální, strukturované a objektově orientované programovací styly.

Tento programovací jazyk pochází z osobního projektu zaměstnance Mozilly jménem Graydon Hoare. Mozilla začala sponzorovat tento projekt v roce 2009 a zveřejnila ho v roce 2010. +more Ten samý rok se práce posunuly z počátečního překladače (naprogramovaného v OCaml) do sebe-hostujícího překladače napsaného v Rustu. Tento, známý jako rustc, úspěšně přeložil sám sebe v roce 2011. rustc používá LLVM jako svůj back-end.

Prvně číslovaná před alfa vydání překladače Rust přišla v lednu 2012. Rust 1.0, první stabilní verze, byla vydána 15. května 2015.

Třebaže je vývoj sponzorován Mozillou, jde o projekt otevřeného software. Design tohoto jazyka byl vyladěn zkušenostmi z programování jádra webového prohlížeče Servo a kompilátoru jazyka Rust. +more Velké množství současných příspěvků pochází od členů komunity.

Design

Cílem Rustu je být dobrým jazykem pro vytváření vysoce paralelních a vysoce bezpečných systémů. Toto byl základ pro soubor vlastností s důrazem na bezpečnost, kontrolu rozvržení paměti, a paralelizmu. +more Výkon Rustu je srovnatelný s výkonem C++.

Syntaxe Rustu je podobná syntaxi C a C++, s bloky kódu ohraničenými složenými závorkami, a řídící klíčová slova programu jako if, else, while, a for. Ne všechna klíčová slova jazyků C a C++ jsou přítomna, zatímco některá další (jako například match pro vícenásobné skoky, podobné switch v jiných jazycích) byla zaměněna nebo přidána. +more Přes syntaktickou podobnost je Rust sémanticky velmi odlišný od C a C++.

Tento systém je navržen jako paměťově bezpečný, nepovolující ukazatele NULL a znemožňující neplatné ukazatele. Datové hodnoty mohou být inicializovány pouze několika pevnými způsoby, avšak všechny tyto způsoby vyžadují inicializovaný vstup. +more Životní cyklus ukazatelů a jejich neměnnost umožňuje kompilátoru předejít mnohým typům chyb, které jsou možné v C++, a to i při použití jeho inteligentního ukazatele.

Tento typový systém podporuje typ jménem trait, který je podobný typu třída. Trait je přímo inspirován jazykem Haskell. +more Jedná se o nástroj pro ad-hoc polymorfismus, čehož bylo dosaženo zákazem psaní deklarace proměnných. Další vlastnosti z jazyka Haskell, jako jsou higher-kinded polymorfizmus, zatím nejsou podporovány.

Rust nepoužívá automatickou správu dat (garbage collection), jako je použita na platformách Java a . +moreNET (mj. jazyky Java a C#), přesto je však jeho správa paměti bezpečná, snadná a nevyžadující přerušování běhu programu a sledování odkazů.

Rust umožňuje odvození typu ('type-inference') pro proměnné deklarované použitím klíčového slova let. Tyto proměnné, původně inicializované s cílem určit jejich typ, nevyžadují zachovat původně přidělenu hodnotu. +more Pokud kompilátor nenalezne na příslušné větvi proměnné přesnou hodnotu, kompilace končí chybou.

Funkce mohou používat generické parametry, ale ty musí být vázány traity. Neexistuje způsob, jak obejít signatury typů a přitom ve funkcích a operátorech využívat generické proměnné.

Objektový systém v Rustu je založen okolo implementací traitů a struktur. Jejich použití nahrazuje roli tříd v jiných (objektových) jazycích, a je definována klíčovým slovem impl. +more Dědičnost a polymorfizmus jsou poskytovány traity; umožňují je metody, které jsou definovány v mixinech k implementaci. Strukturované typy jsou použity pro definici členských proměnných. Implementace a traity nemohou definovat členské proměnné samy, a pouze traity mohou poskytovat dědičnost, aby nenastal diamantový problém jazyka C++.

Projekty v jazyce Rust

Bezpečné vykreslovací jádro pro webové prohlížeče Servo, které vyvíjí Mozilla a Samsung. V současné době již zvládne test Acid2 a je výrazně rychlejší, než jádro Firefoxu napsané v C++ (Gecko).

Parser multimédií prohlížeče Firefox je také napsán v jazyce Rust.

Emulátor PlayStation napsaný v Rustu za použití OpenGL vykreslování pomocí Glium API. - Rustation

Emulátor N64, napsaný v Rustu - Rustendo64

Bezpečný OpenGL wrapper pro jazyk Rust - Glium

Unixový operační systém - Redox

Počínaje verzí jádra 6. 1 operačního systému Linux, je zavedena základní podpora používání jazyka Rust. +more Jeho další podpora bude přidávána v následujících verzích.

Dne 14. +more října 2022 ohlásil Google oznámil vývoj operačního systému KataOS a jeho referenční implementace Sparrow na základě mikrojádra seL4, napsaný v programovacím jazyce Rust.

Historie

Dne 12. +more července 2016 bylo oznámeno, že bylo zahájeno přepisování parseru multimédií prohlížeče Mozilla Firefox do jazyka Rust. Tento parser je již k dispozici od verze Firefoxu 48.

Související projekty

Existuje překladač (preprocesor) podporovaný Mozillou, který překládá zdrojový kód z jazyka C do jazyka Rust. Řeší mj. +more překlad konstrukcí jazyka C s příkazem goto. Je napsán v Haskellu.

Ukázka kódu

Ukázka Hello world

fn main { println!("Hello, world"); }

Ukázka traitů

trait MaObsah { fn obsah(&self) -> f64; }

struct Kruh { x: f64, y: f64, polomer: f64, }

impl MaObsah for Kruh { fn obsah(&self) -> f64 { std::f64::consts::PI * (self.polomer * self.polomer) } }

struct Ctverec { x: f64, y: f64, strana: f64, }

impl MaObsah for Ctverec { fn obsah(&self) -> f64 { self.strana * self.strana } }

fn vypis_obsah(tvar: impl MaObsah) { println!("Tento utvar ma obsah {}", tvar.obsah); }

fn main { let c = Kruh { x: 0.0f64, y: 0.0f64, polomer: 1.0f64, };

let s = Ctverec { x: 0.0f64, y: 0.0f64, strana: 1.0f64, };

vypis_obsah(c); vypis_obsah(s); }

Odkazy

Reference

Externí odkazy

[url=https://projects. eclipse. +moreorg/projects/tools. corrosion]Eclipse Corrosion: the Eclipse IDE for Rust[/url] - Vývojové prostředí (IDE) pro Rust * [url=https://www. root. cz/clanky/rust-bude-mozna-uz-v-jadru-5-20-xfs-zrychluje-diky-io-uring/]Rust možná už v jádru 5. 20[/url] - na Root. cz * [url=https://www. root. cz/clanky/uzitecne-nastroje-pro-programovaci-jazyk-rust-rustup-a-rust-clippy/]Užitečné nástroje pro programovací jazyk Rust: rustup a rust-clippy[/url] - na Root. cz * [url=https://www. root. cz/serialy/programovaci-jazyk-rust/]Seriál Programovací jazyk Rust[/url] - seriál na Root. cz * [url=https://www. root. cz/zpravicky/lepsi-du-v-rustu-dust/]Lepší du v Rustu dust[/url] - Root. cz * [url=http://rustbyexample. com/]Rust by Example[/url] * [url=http://www. phoronix. com/scan. php. page=news_item&px=Redos-OS-Intro]Redox: A Rust-Written, Microkernel Open-Source OS[/url] * [url=https://blog. rust-lang. org/2018/03/12/roadmap. html]Rust's 2018 roadmap[/url] - oficiální roadmapa Rustu 2018 * [url=https://www. root. cz/zpravicky/rust-1-18-ma-rychlejsi-kompilator-a-vychazi-s-druhou-edici-oficialni-knihy/]Rust 1. 18 má rychlejší kompilátor a vychází s druhou edicí oficiální knihy[/url] * [url=https://www. root. cz/zpravicky/corrode-automaticky-zrezavi-kod-z-c-do-rust/]Corrode automaticky "zrezaví" kód z C do Rust[/url] * [url=https://mojefedora. cz/rust-oficialne-ve-fedore/]Rust oficiálně ve Fedoře[/url].

Kategorie:Programovací jazyky Kategorie:Objektově orientované programování Kategorie:Multiparadigmatické jazyky Kategorie:Funkcionální jazyky Kategorie:Svobodný software Kategorie:Mozilla Kategorie:Software pod licencí MIT Kategorie:Multiplatformní software

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top