vydání 1.47 systémového programovacího jazyka , kterou založil projekt Mozilla. Jazyk se zaměřuje na bezpečnost paměti, poskytuje automatickou správu paměti a poskytuje prostředky k dosažení vysokého paralelismu úloh bez použití и (runtime se scvrkává na základní inicializaci a údržbu standardní knihovny).
Automatická správa paměti Rust šetří vývojáře před chybami při manipulaci s ukazateli a chrání před problémy, které vznikají v důsledku nízkoúrovňové manipulace s pamětí, jako je přístup k oblasti paměti po jejím uvolnění, dereferencování nulových ukazatelů, přetečení vyrovnávací paměti atd. Pro distribuci knihoven, zajištění sestavení a správu závislostí projekt vyvíjí správce balíčků . Hostitelské knihovny podporují úložiště .
hlavní :
- Implementována podpora typů libovolná velikost. Dříve kvůli nemožnosti definovat generické funkce pro všechny celočíselné hodnoty poskytovala standardní knihovna vestavěnou podporu vlastností pouze pro pole do velikosti 32 prvků (vlastnosti pro každou velikost byly definovány staticky). Díky vytvoření funkcionality konstantních generik („const generics“) bylo možné definovat generické funkce pro libovolnou velikost pole, ale zatím nejsou zahrnuty ve vlastnostech stabilního jazyka, i když jsou implementovány v kompilátoru a jsou Nyní ve standardní knihovně pro vlastnosti pole libovolné velikosti.
Například následující konstrukce v Rustu 1.47 vytiskne obsah pole, ačkoli dříve by to vedlo k chybě:
fn main() {
nechť xs = [0; 34];println!("{:?}", xs);
} - Poskytovaný výstup kratších tras (backtrace), výstup v nouzových situacích. Prvky, které ve většině situací nejsou zajímavé, ale ruší výstup a odvádějí pozornost od primárních příčin problému, jsou ze sledování vyloučeny. Chcete-li vrátit úplné trasování, můžete použít proměnnou prostředí "RUST_BACKTRACE=full". Například pro kód
fn main() {
panika!();
}Dříve byla stopa vydávána ve 23 fázích, ale nyní bude redukována na
3 kroky, které vám umožní okamžitě pochopit podstatu:vlákno 'main' zpanikařilo při 'explicit panic', src/main.rs:2:5
backtrace zásobníku:
0: std::panic::begin_panic
na /rustc/d…d75a/library/std/src/panicking.rs:497
1: hřiště::hlavní
na ./src/main.rs:2
2: core::ops::function::FnOnce::call_once
na /rustc/d…d75a/library/core/src/ops/function.rs:227 - Kompilátor rustc byl aktualizován na sestavení pomocí (Rez LLVM jako backend pro ). Zároveň je zachována možnost stavět se staršími LLVM až do verze 8, ale ve výchozím nastavení (v ) nyní používá LLVM 11. Vydání LLVM 11 se očekává v nadcházejících dnech.
- Na plošině Windows Kompilátor rustc nyní podporuje povolení kontrol Control Flow Guard pomocí příznaku „-C control-flow-guard“. Tento příznak je v současné době na ostatních platformách ignorován.
- Nová část API byla převedena do kategorie stabilních, včetně stabilizovaných
Ident::new_raw,
Rozsah::is_empty,
RangeInclusive::is_empty,
Výsledek::as_deref,
Výsledek::as_deref_mut,
Vec::únik,
ukazatel::offset_from,
f32::TAU a
f64::TAU. - Atribut „const“, který určuje možnost jeho použití v libovolném kontextu místo konstant, se používá v metodách:
- nové pro všechna celá čísla jiná než nula;
- check_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub a saturating_mul pro všechna celá čísla;
- is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_interpunkce, is_ascii_graphic, is_ascii_whitespace a is_ascii_control pro typy char a u8.
- Pro FreeBSD toolkit z FreeBSD 11.4 (FreeBSD 10 nepodporuje LLVM 11).
Zdroj: opennet.ru
