Rust 1.55 Rilaxx tal-Lingwa ta' Programmazzjoni

Ġie ppubblikat ir-rilaxx tal-lingwa ta 'programmar tas-sistema Rust 1.55, imwaqqfa mill-proġett Mozilla, iżda issa żviluppat taħt l-awspiċi tal-organizzazzjoni indipendenti mingħajr skop ta' qligħ Rust Foundation. Il-lingwa tiffoka fuq is-sigurtà tal-memorja, tipprovdi ġestjoni awtomatika tal-memorja, u tipprovdi l-mezzi biex tikseb paralleliżmu għoli tal-kompitu mingħajr ma tuża kollettur taż-żibel jew runtime (runtime huwa mnaqqas għal inizjalizzazzjoni bażika u manutenzjoni tal-librerija standard).

Il-ġestjoni awtomatika tal-memorja ta 'Rut telimina l-iżbalji meta timmanipula pointers u tipproteġi kontra problemi li jirriżultaw minn manipulazzjoni tal-memorja ta' livell baxx, bħall-aċċess għal reġjun tal-memorja wara li jkun ġie meħlus, dereferences null pointer, buffer overruns, eċċ. Biex iqassam il-libreriji, jiżgura l-assemblaġġ u jimmaniġġja d-dipendenzi, il-proġett qed jiżviluppa l-maniġer tal-pakkett tat-Tagħbija. Ir-repożitorju crates.io huwa appoġġjat għall-hosting tal-libreriji.

Innovazzjonijiet ewlenin:

  • Il-maniġer tal-pakkett tal-Merkanzija għandu l-abbiltà li jingħaqad żbalji duplikati u twissijiet li jseħħu waqt bini. Meta tesegwixxi kmandi bħal "test tal-merkanzija" u "kontroll tal-merkanzija --all-targets" li jirriżultaw f'diversi builds ta' pakkett b'parametri differenti, l-utent issa jintwera sommarju tal-okkorrenza ta' problema ripetuta, minflok ma jintwera. twissijiet identiċi multipli meta tibni l-istess ħaġa ripetutament. $ cargo +1.55.0 check —all-targets Checking foo v0.1.0 twissija: il-funzjoni qatt ma tintuża: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = nota: '#[warn(dead_code)]' fuq twissija awtomatika: 'foo' (lib) iġġenerat twissija 1: 'foo' (test lib) iġġenerat twissija 1 (duplikat 1) Dev lest [mhux ottimizzat + debuginfo] mira (s) f'0.84s
  • Il-kodiċi floating point parsing fil-librerija standard ġie mċaqlaq biex juża l-algoritmu Eisel-Lemire aktar veloċi u preċiż, li solviet xi problemi osservati qabel bl-arrotondament u l-parsing ta 'numri b'numri kbar ħafna ta' ċifri.
  • Il-kapaċità li jiġu speċifikati firxiet mhux magħluqa f'mudelli ġiet stabbilizzata (“X..” hija interpretata bħala firxa li tibda bil-valur X u tispiċċa bil-valur massimu tat-tip ta' numru sħiħ): match x as u32 { 0 => println! (“żero!”), 1.. => println!(”numru pożittiv!”), }
  • Varjanti ta' żball estiżi koperti minn std::io::ErrorKind (jikklassifika l-iżbalji f'kategoriji bħal NotFound u WouldBlock). Preċedentement, żbalji li ma kinux jidħlu f'kategoriji eżistenti waqgħu fil-kategorija ErrorKind::Other, li kienet użata wkoll għal żbalji fil-kodiċi ta 'partijiet terzi. Issa hemm kategorija interna separata ErrorKind::Uncategorized għal żbalji li ma jidħlux fil-kategoriji eżistenti, u l-ErrorKind::Other kategorija hija limitata għal żbalji li ma jseħħux fil-librerija standard (funzjonijiet tal-librerija standard li jirritorna io::Error m'għadhiex tuża l-ErrorKind:: kategorija Oħrajn).
  • Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
    • Marbut::klonat
    • Ixxotta::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • ForsiUninit::assume_init_mut
    • ForsiUninit::assume_init_ref
    • ForsiUninit::tikteb
    • array::mappa
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • L-attribut "const", li jiddetermina l-possibbiltà li jintuża fi kwalunkwe kuntest minflok kostanti, jintuża fil-metodu str::from_utf8_unchecked.
  • It-tielet livell ta 'appoġġ ġie implimentat għall-pjattaforma powerpc64le-unknown-freebsd. It-tielet livell jinvolvi appoġġ bażiku, iżda mingħajr ittestjar awtomatizzat, pubblikazzjoni ta 'bini uffiċjali, jew verifika jekk il-kodiċi jistax jinbena.

Sors: opennet.ru

Żid kumment