ipata 1.64 Siseto ede Tu

Itusilẹ ti ede siseto gbogboogbo-idi Rust 1.64, ti o da nipasẹ iṣẹ akanṣe Mozilla, ṣugbọn ni bayi ni idagbasoke labẹ awọn atilẹyin ti ominira ti kii ṣe èrè agbari Rust Foundation, ti ṣe atẹjade. Ede naa dojukọ aabo iranti ati pese awọn ọna lati ṣaṣeyọri isọdọkan iṣẹ giga lakoko ti o yago fun lilo ikojọpọ idoti ati akoko asiko (akoko asiko ti dinku si ipilẹṣẹ ipilẹ ati itọju ile-ikawe boṣewa).

Awọn ọna mimu iranti Rust ṣe igbala awọn olupilẹṣẹ lati awọn aṣiṣe nigbati o ba ni ifọwọyi awọn itọka ati daabobo lodi si awọn iṣoro ti o dide nitori mimu iranti ipele kekere, gẹgẹbi iraye si agbegbe iranti lẹhin ti o ti ni ominira, piparẹ awọn itọka asan, awọn ifasilẹ ifipamọ, ati bẹbẹ lọ. Lati kaakiri awọn ile-ikawe, pese awọn kikọ ati ṣakoso awọn igbẹkẹle, iṣẹ akanṣe n ṣe idagbasoke oluṣakoso package Ẹru. Ibi ipamọ crates.io jẹ atilẹyin fun awọn ile-ikawe alejo gbigba.

Ailewu iranti ti pese ni ipata ni akoko iṣakojọ nipasẹ ṣiṣe ayẹwo itọkasi, ṣiṣe itọju ohun-ini ohun, titọju awọn igbesi aye ohun (awọn iwọn), ati iṣiro deede wiwọle iranti lakoko ṣiṣe koodu. Ipata tun pese aabo lodi si ṣiṣan odidi odidi, nilo ipilẹṣẹ dandan ti awọn iye oniyipada ṣaaju lilo, mu awọn aṣiṣe dara julọ ni ile-ikawe boṣewa, lo imọran ti awọn itọkasi ailagbara ati awọn oniyipada nipasẹ aiyipada, nfunni titẹ aimi to lagbara lati dinku awọn aṣiṣe ọgbọn.

Awọn imotuntun akọkọ:

  • Awọn ibeere fun agbegbe Linux ninu akopọ, oluṣakoso package ẹru ati ile-ikawe boṣewa libstd ti pọ si - awọn ibeere to kere julọ fun Glibc ti gbega lati ẹya 2.11 si 2.17, ati ekuro Linux lati ẹya 2.6.32 si 3.2. Awọn ihamọ naa tun kan si awọn ipaniyan ohun elo Rust ti a ṣe pẹlu libstd. Awọn ohun elo pinpin RHEL 7, SLES 12-SP5, Debian 8 ati Ubuntu 14.04 pade awọn ibeere tuntun. Atilẹyin fun RHEL 6, SLES 11-SP4, Debian 7 ati Ubuntu 12.04 yoo dawọ duro. Awọn olumulo ti o lo awọn ipaniyan ipata ti a ṣe ni awọn agbegbe pẹlu ekuro Linux agbalagba ni a gbaniyanju lati ṣe igbesoke awọn eto wọn, duro lori awọn idasilẹ agbalagba ti alakojo, tabi ṣetọju orita libstd tiwọn pẹlu awọn fẹlẹfẹlẹ lati ṣetọju ibamu.

    Lara awọn idi fun ipari atilẹyin fun awọn eto Linux agbalagba jẹ awọn orisun to lopin lati tẹsiwaju mimu ibamu pẹlu awọn agbegbe agbalagba. Atilẹyin fun Glibc julọ nilo lilo awọn irinṣẹ pataki nigbati o ba ṣayẹwo ni eto isọpọ ti nlọsiwaju, ni oju awọn ibeere ẹya ti o pọ si ni LLVM ati awọn ohun elo ikojọpọ. Ilọsoke ninu awọn ibeere ẹya kernel jẹ nitori agbara lati lo awọn ipe eto titun ni libstd laisi iwulo lati ṣetọju awọn fẹlẹfẹlẹ lati rii daju ibamu pẹlu awọn kernel agbalagba.

  • Iwa IntoFuture ti wa ni iduroṣinṣin, eyiti o dabi IntoIterator, ṣugbọn o yatọ si igbehin nipa lilo “.await” dipo “fun ... ni ...” losiwajulosehin. Nigbati a ba ni idapo pẹlu IntoFuture, Koko ".await" le nireti kii ṣe iwa iwaju nikan, ṣugbọn tun eyikeyi awọn iru miiran ti o le yipada si Ọjọ iwaju.
  • IwUlO-itupalẹ ipata wa ninu ikojọpọ awọn ohun elo ti a pese pẹlu awọn idasilẹ Rust. Awọn IwUlO jẹ tun wa fun fifi sori lilo rustup (apakankan rustup fi ipata-oluyanju).
  • Oluṣakoso package ẹru pẹlu ogún aaye iṣẹ lati yọkuro ẹda-iwe ti awọn iye aaye ti o wọpọ laarin awọn idii, gẹgẹbi awọn ẹya Rust ati awọn URL ibi ipamọ. Tun ṣe afikun atilẹyin fun kikọ fun ọpọlọpọ awọn iru ẹrọ ibi-afẹde ni ẹẹkan (o le pato diẹ sii ju paramita kan ni aṣayan “--afojusun”).
  • Apa tuntun ti API ni a ti gbe si ẹka ti iduroṣinṣin, pẹlu awọn ọna ati awọn imuse ti awọn abuda ti jẹ imuduro:
    • ojo iwaju :: IntoFuture
    • nom :: NonZero * :: checked_mul
    • num :: NonZero * :: check_pow
    • num :: NonZero * :: saturating_mul
    • num :: NonZero * :: saturating_pow
    • NUM :: NonZeroI * :: abs
    • NUM :: NonZeroI * :: ẹnikeji_abs
    • num :: NonZeroI * :: àkúnwọsílẹ_abs
    • NUM :: NonZeroI * :: saturating_abs
    • num :: NonZeroI * :: unsigned_abs
    • NUM :: NonZeroI * :: murasilẹ_abs
    • NUM :: NonZeroU * :: checked_add
    • num :: NonZeroU * :: check_next_power_of_meji
    • NUM :: NonZeroU * :: saturating_add
    • OS :: unix :: ilana :: CommandExt :: ilana_ẹgbẹ
    • OS :: windows :: fs :: FileTypeExt :: is_symlink_dir
    • OS :: windows :: fs :: FileTypeExt :: is_symlink_file
  • Awọn iru ibaramu C, ti o ti diduro tẹlẹ ninu module std :: ffi, ti ṣafikun si mojuto ati ile-ikawe alloc:
    • mojuto :: ffi :: Cstr
    • mojuto :: ffi :: FromBytesWithNulError
    • alloc :: ffi :: CString
    • alloc :: ffi :: Lati VecWithNulError
    • alloc :: ffi :: IntoStringError
    • alloc :: ffi :: NulError
  • Awọn oriṣi C ti a ti muduro tẹlẹ ni std :: os :: aise module ni a ti fi kun si mojuto :: ffi ati std :: ffi awọn modulu (fun apẹẹrẹ, awọn iru c_uint ati c_ulong ni a ti dabaa fun uint ati ulong C iru):
    • ffi :: c_char
    • ffi :: c_meji
    • ffi :: c_float
    • ffi :: c_int
    • ffi :: c_gun
    • ffi :: c_gun
    • ffi :: c_schar
    • ffi :: c_kukuru
    • ffi :: c_uchar
    • ffi :: c_uint
    • ffi :: c_ulong
    • ffi :: c_ulonglong
    • ffi :: c_ushort
  • Awọn olutọju ipele-kekere ti ni imuduro fun lilo pẹlu ẹrọ Idibo (ni ọjọ iwaju o ti gbero lati pese API ti o rọrun ti ko nilo lilo awọn ẹya ipele kekere bii Fa ati Pin):

    • ojo iwaju :: idibo_fn
    • -ṣiṣe :: setan!
  • Ẹya “const”, eyiti o pinnu iṣeeṣe ti lilo ni eyikeyi ipo dipo awọn iduro, ni a lo ni bibẹ pẹlẹbẹ :: from_raw_parts iṣẹ.
  • Lati le tọju data ni iwapọ diẹ sii, ifilelẹ iranti ti Ipv4Addr, Ipv6Addr, SocketAddrV4 ati awọn ẹya SocketAddrV6 ti yipada. Ọrọ ibamu le wa pẹlu awọn idii apoti ẹyọkan ti o lo std :: mem :: transmute fun ifọwọyi ipele kekere ti awọn ẹya.
  • Kọ ti ipata alakojo fun awọn Windows Syeed nlo PGO optimizations (profaili-itọsọna ti o dara ju), eyi ti ṣe o ṣee ṣe lati mu koodu akopo išẹ nipa 10-20%.
  • Olukojọpọ ti ṣe imuse ikilọ tuntun nipa awọn aaye ti ko lo ni awọn ẹya kan.

Ni afikun, o le ṣe akiyesi ijabọ ipo lori idagbasoke imuse yiyan ti akopọ ede Rust, ti a pese sile nipasẹ iṣẹ akanṣe gccrs (GCC Rust) ati fọwọsi fun ifisi ni GCC. Lẹhin iṣakojọpọ iwaju, awọn irinṣẹ GCC boṣewa le ṣee lo lati ṣajọ awọn eto ni ede Rust laisi iwulo lati fi sori ẹrọ alakojo rustc, ti a ṣe ni lilo awọn idagbasoke LLVM. Niwọn igba ti idagbasoke ba wa lori ọna, ati idinamọ eyikeyi awọn iṣoro airotẹlẹ, iwaju Rust yoo ṣepọ sinu idasilẹ GCC 13 ti a ṣeto fun May ni ọdun to nbọ. GCC 13 imuse ti Rust yoo wa ni ipo beta, ko sibẹsibẹ ṣiṣẹ nipasẹ aiyipada.

orisun: opennet.ru

Fi ọrọìwòye kun