Rust 1.60 Programming Language Version

Yo te pibliye piblikasyon langaj pwogramasyon jeneral Rust 1.60, ki te fonde pa pwojè Mozilla, men kounye a devlope sou ejid òganizasyon endepandan ki pa pou pwofi Rust Foundation. Lang la konsantre sou sekirite memwa epi li bay mwayen pou reyalize gwo paralèl nan ekzekisyon travay, pandan y ap evite itilizasyon yon pèseptè fatra ak tan exécute (se redui tan an nan inisyalizasyon debaz ak antretyen nan bibliyotèk la estanda).

Teknik jesyon memwa Rust yo libere pwomotè a soti nan erè manipilasyon konsèy epi pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba-nivo, tankou aksè apre-gratis, dereferans pointer nil, depase tanpon, ak lòt bagay. Pou distribye bibliyotèk, asire asanble ak jere depandans, pwojè a ap devlope manadjè pake kago. Repozitwa crates.io sipòte pou hosting bibliyotèk.

Sekirite memwa aplike nan Rust nan moman konpile atravè chèk referans, swiv pwopriyetè objè, konsiderasyon pou tout lavi objè (delimitasyon) ak evalyasyon aksè memwa nan tan exécution. Rust tou bay pwoteksyon kont debòde nonb antye relatif, mande pou valè varyab yo dwe inisyalize anvan yo itilize, gen pi bon manyen erè nan bibliyotèk estanda a, sèvi ak konsèp nan referans imuiabl ak varyab pa default, epi li ofri fò sezisman estatik pou minimize erè lojik.

Prensipal inovasyon:

  • Konpilateur rustc a gen yon sistèm estabilize ki baze sou LLVM pou jenere done pwoteksyon yo itilize pou evalye kouvèti kòd pandan tès la. Pou pèmèt done pwoteksyon pandan asanble a, ou dwe itilize drapo "-Cinstrument-coverage" la, pou egzanp, kòmanse asanble a ak kòmandman "RUSTFLAGS="-C instrument-coverage" cargo build ". Apre w fin kouri fichye ègzèkutabl la konpile nan fason sa a, yo pral sove fichye default.proraw nan anyè aktyèl la, pou trete w ka itilize sèvis piblik llvm-profdata ki soti nan eleman llvm-tools-preview. Lè sa a, pwodiksyon an trete pa llvm-profdata ka pase bay llvm-cov pou jenere yon rapò kouvèti kòd anote. Enfòmasyon sou lyen ki mennen nan kòd sous la pran nan dosye ègzèkutabl la ke yo te egzamine, ki gen ladann done ki nesesè sou koneksyon ki genyen ant kontè kouvèti asirans ak kòd la. 1| 1|fn prensipal() { 2| 1| println!("Bonjou, lemonn!"); 3| 1|}
  • Nan manadjè pake kago a, sipò pou drapo "-timings" yo te estabilize, ki gen ladan jenerasyon yon rapò detaye sou pwogrè konstriksyon an ak tan egzekisyon chak etap. Rapò a ka itil pou optimize pèfòmans pwosesis asanble a.
  • Manadjè pake kago a ofri yon nouvo sentaks pou mekanis konpilasyon kondisyonèl ak seleksyon depandans si ou vle, ki konfigirasyon nan fichye Cargo.toml lè li mete yon lis pwopriyete yo nonmen nan seksyon [karakteristik] ak aktive lè w pèmèt pwopriyete yo pandan bati pake a. lè l sèvi avèk "--features" drapo a. Nouvo vèsyon an ajoute sipò pou depandans nan espas non separe ak depandans fèb.

    Nan premye ka a, li posib pou itilize eleman ki gen prefiks "dep:" anndan seksyon "[karakteristik]" pou fè lyen klèman ak yon depandans opsyonèl san yo pa reprezante depandans sa a kòm yon karakteristik. Nan dezyèm ka a, sipò pou make ak siy "?" yo te ajoute. ("pake-name?/feature-name") depandans opsyonèl ki ta dwe sèlman enkli si kèk lòt pwopriyete gen ladan depandans opsyonèl bay la. Pou egzanp, nan egzanp ki anba a, pèmèt pwopriyete a serde pral pèmèt depandans "serde" la, osi byen ke pwopriyete "serde" pou depandans "rgb" la, men sèlman si depandans "rgb" la aktive yon lòt kote: [depandans] serde = { vèsyon = "1.0.133", opsyonèl = vre } rgb = { vèsyon = "0.8.25", opsyonèl = vre } [karakteristik] serde = ["dep:serde", "rgb?/serde"]

  • Sipò pou konpilasyon incrémentielle, ki te enfim nan dènye lage a, te retounen. Yo te rezoud ensèk nan konpilatè ki te lakòz karakteristik nan yo dwe enfim.
  • Rezoud kèk pwoblèm ak bay revèy Instant ak yon garanti nan distribisyon monotonik, ki pran an kont tan an pase pa sistèm nan nan mòd dòmi. Précédemment, OS API a te itilize chak fwa sa posib pou opere revèy la, ki pa t 'pran an kont sitiyasyon pwoblèm ki kraze monotoni tan an, tankou pwoblèm pyès ki nan konpitè, itilizasyon Virtualization, oswa erè nan sistèm operasyon an.
  • Yon nouvo pòsyon nan API a te transfere nan kategori ki estab, ki gen ladan metòd yo ak aplikasyon karakteristik yo:
    • Arc::new_cyclic
    • Rc::new_cyclic
    • tranch::EscapeAscii
    • <[u8]>::escape_ascii
    • u8::escape_ascii
    • Vec::spare_capacity_mut
    • PetètUninit::assume_init_drop
    • PetètUninit::assume_init_read
    • i8::abs_diff
    • i16::abs_diff
    • i32::abs_diff
    • i64::abs_diff
    • i128::abs_diff
    • isize::abs_diff
    • u8::abs_diff
    • u16::abs_diff
    • u32::abs_diff
    • u64::abs_diff
    • u128::abs_diff
    • use::abs_diff
    • Montre pou io::ErrorKind
    • Soti nan pou ExitCode
    • Pa pou! (tape "pa janm")
    • _Op_Asyen<$t>
    • arch::se_aarch64_feature_detekte!
  • Yo te aplike twazyèm nivo sipò pou platfòm mips64-openwrt-linux-musl* ak armv7-unknown-linux-uclibceabi (softfloat). Twazyèm nivo a enplike sipò debaz, men san yo pa tès otomatik, pibliye bati ofisyèl, oswa tcheke si kòd la ka bati.
  • Konpilatè a te chanje pou itilize LLVM 14.

Anplis de sa, ou ka sonje:

  • Te ajoute sipò pou bootstrapping du rustc lè l sèvi avèk backend rustc_codegen_gcc, ki pèmèt ou sèvi ak bibliyotèk libgccjit nan pwojè GCC kòm yon jeneratè kòd nan rustc, ki pèmèt rustc bay sipò pou achitekti ak optimize ki disponib nan GCC. Pwomosyon konpilatè vle di kapasite pou itilize yon dèlko kòd ki baze sou GCC nan rustc pou konstwi du rustc tèt li. Sou bò pratik, karakteristik sa a pèmèt ou bati pwogram rouye pou achitekti ki pa te deja sipòte nan rustc.
  • Version uutils coreutils 0.0.13 toolkit disponib, kote y ap devlope yon analòg pakè GNU Coreutils, reekri nan lang Rust la. Coreutils vini ak plis pase yon santèn sèvis piblik, ki gen ladan sòt, chat, chmod, chown, chroot, cp, dat, dd, eko, hostname, id, ln, ak ls. Objektif pwojè a se kreye yon aplikasyon altènatif kwa-platfòm nan Coreutils, ki kapab kouri sou platfòm Windows, Redox ak Fuchsia, ansanm ak distribisyon anba lisans MIT tolerans, olye pou yo lisans GPL copyleft.

    Nouvo vèsyon an amelyore aplikasyon pou anpil sèvis piblik, ki gen ladan konpatibilite siyifikativman amelyore nan sèvis piblik cp, dd, df, split ak tr ak tokay yo nan pwojè GNU a. Yo bay dokiman sou entènèt. Analyseur clap la itilize pou analize agiman liy kòmand yo, ki te amelyore pwodiksyon an pou drapo "--help" la ak ajoute sipò pou abrevyasyon yo nan kòmandman long (pa egzanp, ou ka presize "ls -col" olye pou yo "ls -color". ").

Sous: opennet.ru

Add nouvo kòmantè