ipata 1.51 Siseto ede Tu

Itusilẹ ti ede siseto eto Rust 1.51, ti o da nipasẹ iṣẹ akanṣe Mozilla, ṣugbọn ni idagbasoke ni bayi labẹ awọn itusilẹ ti ominira ti kii ṣe èrè agbari Rust Foundation, ni a ti tẹjade. Ede naa dojukọ aabo iranti, pese iṣakoso iranti aifọwọyi, ati pese awọn ọna lati ṣaṣeyọri isọdọkan iṣẹ-ṣiṣe giga laisi lilo agbasọ idoti tabi akoko asiko (akoko asiko ti dinku si ipilẹṣẹ ipilẹ ati itọju ile-ikawe boṣewa).

Iṣakoso iranti aifọwọyi ti Rust yọkuro awọn aṣiṣe nigbati o ba n ṣakoso awọn itọka ati aabo lodi si awọn iṣoro ti o dide lati ifọwọyi iranti ipele kekere, gẹgẹ bi iraye si agbegbe iranti lẹhin ti o ti ni ominira, awọn ifọkasi ijuboluwole asan, awọn agbekọja buffer, ati bẹbẹ lọ. Lati kaakiri awọn ile-ikawe, rii daju apejọ ati ṣakoso awọn igbẹkẹle, iṣẹ akanṣe n dagbasoke oluṣakoso package Cargo. Ibi ipamọ crates.io jẹ atilẹyin fun awọn ile-ikawe alejo gbigba.

Awọn imotuntun akọkọ:

  • Iṣẹ ṣiṣe ti o ni nkan ṣe pẹlu lilo awọn jeneriki igbagbogbo ti gba ipo ti ọja ti o le yanju ti o kere ju (MVP), fifun ina alawọ ewe fun lilo ni ibigbogbo. Const jeneriki gba awọn iru lati wa ni ti ṣakopọ si ibakan iye, i.e. lo awọn ariyanjiyan jeneriki ti o ni opin si ọpọlọpọ awọn iye igbagbogbo, kii ṣe awọn iru tabi awọn igbesi aye. Ẹya yii ngbanilaaye lati lo awọn oriṣi parameterized odidi ati abstraction nigbati o ṣẹda awọn abuda fun awọn akojọpọ ti iwọn eyikeyi laisi nini lati ṣẹda iru lọtọ fun iwọn kọọkan ti awọn iye to wulo lati rii daju pe ko si awọn iṣẹlẹ ita gbangba.

    Bibẹrẹ pẹlu itusilẹ lọwọlọwọ, fun awọn akojọpọ pẹlu iru “[T; N]" (iru T ati iwọn N) n pese agbara lati ṣe iru ati iwọn ni lilo awọn iye pẹlu odidi eyikeyi, boolian ati awọn iru ohun kikọ (awọn ẹya ati awọn iru enum ko ti ni atilẹyin). Awọn jeneriki igbagbogbo jẹ ki idagbasoke ile-ikawe rọrun pupọ; fun apẹẹrẹ, lati lo orun ti ko so mọ iru ati iwọn kan pato, o le pato: struct Array { // ^^^^^^^^^^^^^^^^^ itumo ti akojö jeneriki nigbagbogbo: [T; OGUN] // ^^^^^^ lilo re }

    Nigbati o ba lo ni otitọ pẹlu itumọ yii ti “Array »alakojo yoo se ina kan monomorphic version of Array: struct Array {akojọ: [u8; 32]}

  • Std :: orun :: IntoIter API, ti o da lori awọn jeneriki igbagbogbo, ti wa ni imuduro, pẹlu eyiti o le ṣẹda awọn iterators nipasẹ iye fun eyikeyi orun: fn akọkọ () {le array = [1, 2, 3, 4, 5] ; // Ni iṣaaju, lati ṣe atunṣe lori iye kan, o ni lati pe ọna .iter () fun ohun kan ni array.iter () . daakọ () {println! ("{}", ohun kan); } // Bayi o le pato fun ohun kan ni std :: orun :: IntoIter :: titun (orun) {println!("{}", ohun kan); }}
  • Oluṣakoso package ẹru ni bayi ṣe atilẹyin aaye ipinnu ipinnu tuntun ni Cargo.toml, eyiti o le ṣee lo lati mu ẹya keji ti ipinnu ẹya ṣiṣẹ. Ẹya tuntun ti asọye yago fun apapọ awọn ẹya igbẹkẹle ti a ṣe akojọ si ni apakan “[awọn ẹya]” nibiti ko yẹ, fun apẹẹrẹ, nigbati o ba pẹlu igbẹkẹle ti o beere diẹ ninu awọn ẹya boṣewa ni awọn iwe afọwọkọ ati awọn macros, ṣugbọn nigba lilo ẹya ti kii ṣe boṣewa. ninu faili ti o le ṣe abajade.

    Titi di isisiyi, awọn agbara ti package ti a mẹnuba ni ọpọlọpọ awọn akoko ninu ayaworan igbẹkẹle ni idapo. Fun apẹẹrẹ, ti iṣẹ akanṣe kan ba pẹlu foo ti o gbẹkẹle ti o ṣalaye awọn agbara A ati B, ati pe a lo package yii ni igi idii miiran ati baz, botilẹjẹpe igi da lori foo pẹlu ẹya A, ati baz da lori foo pẹlu ẹya B, lẹhinna. Abajade yoo jẹ ẹru yoo darapọ awọn ẹya wọnyi ati ṣajọ foo pẹlu awọn ẹya A ati B ti o wa pẹlu. Fun apẹẹrẹ, nigba ti o ba fẹ lati lo ẹya foo pẹlu "#![no_std]" ni ohun executable itumọ ti pẹlu "#![no_std]", ati ni akoko kanna lo foo pẹlu "std" nigba kikọ ni Kọ. rs. Nigbati o ba n ṣalaye ipinnu = "2" ni Cargo.toml, oluṣakoso package yoo gbiyanju ni bayi lati mu rogbodiyan yii ni deede, yiya sọtọ dev, agbalejo ati awọn igbẹkẹle ibi-afẹde.

  • Cargo n lo aṣayan split-debuginfo, ti a sọ ni apakan "[profile]", ati asia "-Csplit-debuginfo=unpacked" ti o baamu ni rustc, ti o funni ni imuse ọna tuntun fun fifipamọ alaye aṣiṣe, eyiti o yọkuro iwulo lati pe ohun elo dsymutil ati mu ilana ikole yara pẹlu alaye aṣiṣe ni pataki macOS.
  • Iduroṣinṣin makos "ptr :: addr_of!" ati "ptr :: addr_of_mut!", eyi ti o gba ọ laaye lati ṣẹda awọn itọka aise fun awọn aaye ti ko ni ibamu. lo std :: ptr; #[repr(aba ti)] struct Ti kojọpọ {f1: u8, f2: u16,} jẹ ki o ṣajọpọ = Iṣakojọpọ {f1: 1, f2: 2}; // &packed.f2 yoo ṣẹda itọka ti ko ni ibamu ti o yori si ihuwasi aisọye jẹ ki raw_f2 = ptr :: addr_of!(packed.f2); assert_eq! (ailewu { raw_f2.read_unaligned ()}, 2);
  • Apa tuntun ti API ni a ti gbe lọ si ẹka iduro, pẹlu awọn ọna wọnyi ti jẹ imuduro:
    • Arc :: decrement_strong_count
    • Arc :: increment_strong_count
    • Ni ẹẹkan :: call_one_force
    • Peekable :: atẹle_if_eq
    • Peekable :: next_if
    • Wa :: ipo ṣiṣanwọle
    • orun :: IntoIter
    • ijaaya :: ijaaya_eyikeyi
    • ptr :: addr_ti!
    • ptr :: addr_of_mut!
    • bibẹ :: kun_pẹlu
    • bibẹ :: Split_inclusive_mut
    • bibẹ :: pipin_inclusive
    • bibẹ :: strip_prefix
    • bibẹ :: rinhoho_suffix
    • str :: pipin_inclusive
    • amuṣiṣẹpọ :: OneState
    • iṣẹ-ṣiṣe :: ji
  • Ipele kẹta ti atilẹyin ti ni imuse fun i386-unknown-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32 ati aarch64_be-unknown-linux-gnu_ilp32 platform. . Ipele kẹta jẹ atilẹyin ipilẹ, ṣugbọn laisi idanwo adaṣe, titẹjade ti awọn ile-iṣẹ osise, ati ijẹrisi ti iṣelọpọ koodu.

orisun: opennet.ru

Ra alejo gbigba igbẹkẹle fun awọn aaye pẹlu aabo DDoS, awọn olupin VPS VDS 🔥 Ra gbigbalejo oju opo wẹẹbu ti o gbẹkẹle pẹlu aabo DDoS, awọn olupin VPS VDS | ProHoster