Rust 1.34 Famoahana ny fiteny fandaharana

Navoaka ny fiteny fandrindrana rafitra Rust 1.34, novolavolain'ny tetikasa Mozilla. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny, manome fitantanana fitadidiana mandeha ho azy, ary manome fitaovana hanatrarana ny fitovizan'asa avo lenta nefa tsy mampiasa mpanangom-pako na fotoana fiasana.

Ny fitantanana fitadidiana mandeha ho azy an'i Rust dia manafaka ny mpamorona amin'ny fanodinkodinana pointer ary miaro amin'ny olana ateraky ny fanodikodinana fahatsiarovana ambany, toy ny fidirana tsy misy fitadidiana aorian'ny fahatsiarovan-tena, ny tsy fahampian'ny pointer tsy misy dikany, ny fihoaran'ny buffer, sy ny toy izany. Mba hizarana trano famakiam-boky, hiantohana ny fivoriambe ary hitantana ny fiankinan-doha, ny tetikasa dia mamolavola ny mpitantana fonosana Cargo, izay ahafahanao mahazo ireo tranomboky ilaina amin'ny programa amin'ny tsindry iray. Ny tahiry crates.io dia tohanana amin'ny fampiantranoana tranomboky.

Fanavaozana lehibe:

  • Ny mpitantana ny fonosana Cargo dia nanampy fitaovana hiasa miaraka amin'ireo rejisitra fonosana hafa izay afaka miara-miaina amin'ny rejisitra ho an'ny daholobe crates.io. Ohatra, afaka mampiasa ny rejisitra manokana an'ny tenany manokana izao ny mpamorona ny rindranasa tsy miankina, izay azo ampiasaina rehefa mitanisa ny fiankinan-doha ao amin'ny Cargo.toml, ary mampihatra modely fanontana mitovy amin'ny crates.io ho an'ny vokatra, ary koa manondro ny fiankinan-doha amin'ny vata roa. io ary amin'ny rejisitrao manokana.

    Hanampy rejisitra ivelany amin'ny ~/.cargo/config
    Misy safidy vaovao "my-registry" omena ao amin'ny fizarana "[registries]", ary misy safidy "other-crate" nampiana mba hilazana ny rejisitra ivelany amin'ny dependencies ao amin'ny Cargo.toml ao amin'ny fizarana "[dependencies]". Raha te hifandray amin'ny rejisitra fanampiny dia apetraho ao anaty rakitra ~/.cargo/credentials fotsiny ny mari-pamantarana fanamarinana ary araho ny baiko
    "Login'ny entana --registry=my-registry" ary hamoaka fonosana -
    "cargo publish -registry=my-registry";

  • Nampiana fanohanana feno amin'ny fampiasana ny β€œ?” operator. amin'ny doctests, izay ahafahanao mampiasa code ohatra avy amin'ny antontan-taratasy ho fitsapana. Operator teo aloha
    "?" azo ampiasaina hiatrehana ny lesoka mandritra ny fanatanterahana ny andrana raha tsy eo anatrehan'ny asa β€œfn main()” na amin'ny asa β€œ#[test]”;

  • Amin'ny toetra manokana voafaritra amin'ny alalan'ny macros procedural, dia azo atao ny mampiasa andiana famantarana tsy misy dikany (β€œ#[attr($tokens)]”, β€œ#[attr[$tokens]] ary #[attr{$tokens}]”). Teo aloha, ny singa dia tsy azo faritana afa-tsy amin'ny endrika hazo/recursive mampiasa litera tady, ohatra hoe "#[foo(bar, baz(quux, foo = "bar"))]", fa ankehitriny dia azo atao ny mampiasa fanisana (' #[range(0. .10)]') ary fananganana toy ny β€œ#[bound(T: MyTrait)]”;
  • Ny toetra TryFrom sy TryInto dia nalamina, mamela ny karazana fiovam-po miaraka amin'ny fikarakarana fahadisoana. Ohatra, ny fomba toy ny from_be_bytes miaraka amin'ny karazana integer dia mampiasa array ho fampidirana, fa ny angon-drakitra matetika dia tonga amin'ny karazana Slice, ary ny mamadika eo anelanelan'ny array sy ny slices dia manahirana ny manao tanana. Miaraka amin'ny fanampian'ny toetra vaovao, ny fandidiana voafaritra dia azo atao amin'ny sidina amin'ny alΓ lan'ny antso amin'ny .try_into(), ohatra, "let num = u32:: from_be_bytes(slice.try_into()?)". Ho an'ny fiovam-po izay mahomby foana (ohatra, avy amin'ny karazana u8 ka hatramin'ny u32), dia nampiana karazana fahadisoana tsy mety diso mba ahafahana mampiasa mangarahara ny
    TryFrom ho an'ny fampiharana rehetra misy ny "From";

  • Nofoanana ny CommandExt ::before_exec, izay namela ny famonoana mpitantana alohan'ny exec izay novonoina tao anatin'ny tontolon'ny fizotry ny zaza nopotehina taorian'ny antso fork(). Amin'ny toe-javatra toy izany, ny loharanon-karena sasany amin'ny fizotry ny ray aman-dreny, toy ny famariparitana ny rakitra sy ny faritra fitadidiana sarintany, dia azo adika, izay mety hitarika amin'ny fitondran-tena tsy voafaritra sy ny fampandehanana ny tranomboky.
    Raha tokony before_exec, dia asaina mampiasa ny fiasa tsy azo antoka CommandExt::pre_exec.

  • Karazana integer atomika voasonia sy tsy misy sonia manomboka amin'ny 8 ka hatramin'ny 64 bit (ohatra, AtomicU8), ary koa ireo karazana voasonia NonZeroI[8|16|32|54|128].
  • Misy ampahany vaovao amin'ny API nafindra ho amin'ny sokajy stable, anisan'izany ny Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] ary ny fomba SystemTime dia nalamina ::checked_[add|sub]. Ny fiasan'ny iter::from_fn sy iter::fandimby dia nalamina;
  • Ho an'ny karazana integer rehetra, ny fomba checked_pow, saturating_pow, wrapping_pow ary overflowing_pow;
  • Nampiana ny fahafahana mamela ny optimizations amin'ny dingana fampifandraisana amin'ny alΓ lan'ny famaritana ny safidy fananganana "-C linker-plugin-lto" (rustc dia manambatra ny kaody Rust amin'ny LLVM bitcode, izay ahafahan'ny LTO optimizations azo ampiharina).

Source: opennet.ru

Add a comment