Rust 1.37 Programming Language Version

pibliye lage langaj pwogramasyon sistèm lan Rouye 1.37, ki te fonde pa pwojè Mozilla. Lang la konsantre sou sekirite memwa, bay jesyon memwa otomatik, epi li bay yon mwayen pou reyalize paralèl travay segondè san yo pa itilize yon pèseptè fatra oswa ègzekutabl.

Jesyon otomatik memwa Rust la libere pwomotè a soti nan manipilasyon konsèy ak pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba-nivo, tankou aksè memwa apre-gratis, dereferans pointer nil, depase tanpon, ak lòt bagay. Yon manadjè pake ap devlope pou distribye bibliyotèk, asire asanble ak jere depandans pa pwojè a. Chaj, ki pèmèt ou jwenn bibliyotèk ki nesesè pou pwogram nan nan yon sèl klike sou. Yon depo sipòte pou òganize bibliyotèk kès.io.

Prensipal la inovasyon:

  • Nan du rustc bay sipò pou optimize ki baze sou rezilta pwofil kòd (PGO, Profile-Guided Optimization),
    ki pèmèt ou jenere plis kòd optimal ki baze sou analiz la nan estatistik akimile pandan ekzekisyon pwogram lan. Pou jenere yon pwofil, yo bay drapo "-C pwofil-jenere" la, epi sèvi ak pwofil la pandan asanble - "-C pwofil-itilize" (okòmansman, pwogram nan reyini ak premye drapo a, kouri alantou, epi apre li fin kreye. pwofil la, li reyini ak dezyèm drapo a);

  • Lè w ap egzekite kòmandman "kago kouri", ki se pratik pou itilize pou byen vit teste aplikasyon pou konsole, yo te ajoute kapasite pou otomatikman chwazi yon dosye ègzèkutabl pou kouri si gen plizyè dosye ègzèkutabl nan pake a. Fichye default pou egzekite a detèmine nan direktiv default-run nan seksyon [pake] ak paramèt pake a, ki pèmèt ou evite klèman espesifye non fichye a atravè drapo "-bin" chak fwa ou kouri "kouri kago";
  • "Machann kago" kòmandman an, te deja apwovizyone kòm pake separe. Kòmandman an pèmèt ou òganize travay ak yon kopi lokal depandans - apre yo fin egzekite "machann kago", tout kòd sous depandans pwojè a telechaje soti nan crates.io nan yon anyè lokal, ki ka Lè sa a, itilize pou travay san yo pa gen aksè nan kès. io (apre egzekite kòmandman an, yo montre yon allusion pou chanje konfigirasyon an pou itilize anyè a pou bati). Karakteristik sa a deja itilize pou òganize livrezon rustc du ak anbalaj tout depandans nan yon sèl achiv ak lage a;
  • Kounye a li posib pou kreye lyen ki mennen nan opsyon enum lè l sèvi avèk tip alyas (pa egzanp, nan kò a nan fonksyon "fn increment_or_zero(x: ByteOption) ou ka presize "ByteOption::None => 0"), tape kalkil konstwi (‹ MyType‹.. ››::option => N) oswa Self accesses (nan blòk c &self ou ka presize "Self::Quarter => 25");
  • Te ajoute kapasite pou kreye konstan san non nan makro. Olye pou w defini non eleman an nan "const", kounye a ou ka itilize karaktè "_" pou chwazi dinamikman yon idantifyan ki pa repete, evite konfli non lè w rele makro a ankò;
  • Te ajoute kapasite pou sèvi ak "#[repr(align(N))" atribi ak enums lè l sèvi avèk yon sentaks ki sanble ak defini yon estrikti AlignN‹T› ak aliyman ak Lè sa a, lè l sèvi avèk AlignN‹MyEnum›;
  • Yon nouvo pòsyon API a te deplase nan kategori ki estab, tankou BufReader::buffer, BufWriter::buffer, ak
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Opsyon::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Anbalaj::reverse_bits ak
    slice::copy_within.

Anplis de sa, li ka remake kòmanse tès la pwojè a Async-std, ki ofri yon variant asynchrone nan bibliyotèk estanda Rust (yon pò nan bibliyotèk std, kote tout koòdone yo ofri nan yon vèsyon async epi yo pare pou itilize ak sentaks async/wait).

Sous: opennet.ru

Add nouvo kòmantè