Rust 1.64 Famoahana ny fiteny fandaharana

Navoaka ny fiteny fandaharana Rust 1.64 amin'ny tanjona ankapobeny, naorin'ny tetikasa Mozilla saingy novolavolaina ankehitriny eo ambany fiahian'ny fikambanana tsy miankina Rust Foundation. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny ary manome fitaovana ahafahana manatratra ny fitovian'ny asa avo lenta sady misoroka ny fampiasana mpanangom-pako sy ny fotoana fandehanana (ahena ny fotoana fampandehanana amin'ny fanombohana fototra sy fikojakojana ny tranomboky mahazatra).

Ny fomba fitantanana fitadidian'i Rust dia mamonjy ny mpamorona amin'ny hadisoana rehefa manodinkodina ny tondro ary miaro amin'ny olana mipoitra noho ny fikarakarana fitadidiana ambany, toy ny fidirana amin'ny faritra fitadidiana rehefa afaka izany, ny fanafoanana ireo tondro tsy misy dikany, ny fihoaran'ny buffer, sns. Mba hizarana trano famakiam-boky, manome fananganana ary mitantana ny fiankinan-doha, ny tetikasa dia mamolavola ny mpitantana fonosana Cargo. Ny tahiry crates.io dia tohanana amin'ny fampiantranoana tranomboky.

Ny fiarovana ny fitadidiana dia omena ao amin'ny Rust amin'ny fotoana fanangonana amin'ny alΓ lan'ny fanamarinana reference, ny fanaraha-maso ny fananana zavatra, ny fanaraha-maso ny androm-piainan'ny zavatra (scopes), ary ny fanombanana ny fahamarinan'ny fidirana fahatsiarovana mandritra ny famonoana ny code. Ny Rust koa dia manome fiarovana amin'ny fihoaran'ny integer, mitaky fanombohana tsy maintsy atao ny soatoavina miovaova alohan'ny fampiasana, mitantana ny lesoka tsara kokoa ao amin'ny tranomboky mahazatra, mampihatra ny foto-kevitry ny references sy ny variables tsy miova amin'ny alΓ lan'ny default, manolotra fanoratana static mahery mba hampihenana ny fahadisoana lojika.

Fanavaozana lehibe:

  • Nitombo ny fepetra takian'ny tontolo Linux ao amin'ny compiler, ny mpitantana ny fonosana Cargo, ary ny tranomboky libstd mahazatra - ny fepetra kely indrindra ho an'ny Glibc dia natsangana avy amin'ny version 2.11 mankany 2.17, ary ny kernel Linux avy amin'ny version 2.6.32 mankany 3.2. Ny fameperana koa dia mihatra amin'ny Rust binaries natsangana tamin'ny libstd. Ny fizarana RHEL 7, SLES 12-SP5, Debian 8 ary Ubuntu 14.04 dia mahafeno ny fepetra vaovao. Ny fanohanana ny RHEL 6, SLES 11-SP4, Debian 7 ary Ubuntu 12.04 dia hajanona. Ireo mpampiasa izay mampiasa executable vita amin'ny Rust amin'ny tontolo misy kernel Linux taloha dia ampirisihina hanatsara ny rafitra, hijanona amin'ny famoahana compiler taloha, na hitazona ny fork libstd azy manokana miaraka amin'ny sosona mba hitazonana ny fifanarahana.

    Anisan'ny anton'ny fanafoanana ny fanohanana ny rafitra Linux taloha dia ny loharanon-karena voafetra hanohizana ny fifanarahana amin'ny tontolo taloha. Ny fanohanana ny Glibcs ​​taloha dia mitaky ny fampiasana ny fisavana CI taloha, ny fitakiana fanovana amin'ny LLVM, ary ny kompilasia cross-compilation. Ny fitomboan'ny fepetra takian'ny kernel dia noho ny fahafahan'ny libstd mampiasa antson'ny rafitra vaovao tsy mila fitazonana sosona mba hiantohana ny fifanarahana amin'ny kernel taloha.

  • Nampitony ny toetra IntoFuture, izay mitovitovy amin'ny IntoIterator fa tsy mitovy amin'ny farany amin'ny fampiasana ".await" fa tsy "ho an'ny ... amin'ny ..." tadivavarana. Miaraka amin'ny IntoFuture, ny teny fanalahidy ".await" dia afaka manantena tsy ny toetra ho avy ihany, fa ny karazana hafa rehetra azo avadika ho Future.
  • Ny fampiasa amin'ny rust-analyzer dia tafiditra ao anatin'ny fanangonana ny fitaovana alefa miaraka amin'ny famoahana Rust. Ny fitaovana dia azo ampiasaina amin'ny fametrahana amin'ny rustup (ny singa rustup manampy rust-analyzer).
  • Ny mpitantana ny fonosana Cargo dia manatanteraka lova toeram-piasana mba hanafoanana ny dika mitovy eo amin'ny fonosan'ny sandan'ny saha mahazatra, toy ny dikan-teny Rust sy URL fitehirizana. Ankoatra izany, dia nampiana ny fanohanana amin'ny fananganana sehatra kinendry maromaro indray mandeha (mihoatra ny isa isa no azo faritana amin'ny safidy "--target").
  • Ny ampahany vaovao amin'ny API dia nafindra ho amin'ny sokajy stable, ao anatin'izany ny fomba sy ny fampiharana ny toetra efa niorina:
    • ho avy::IntoFuture
    • num::NonZero*::checked_mul
    • num::NonZero*::checked_pow
    • num::NonZero*::saturating_mul
    • num::NonZero*::saturating_pow
    • num::NonZeroI*::abs
    • num::NonZeroI*::checked_abs
    • num::NonZeroI*::overflowing_abs
    • num::NonZeroI*::mahavoky_abs
    • num::NonZeroI*::unsigned_abs
    • num::NonZeroI*::wrapping_abs
    • num::NonZeroU*::checked_add
    • num::NonZeroU*::checked_next_power_of_two
    • num::NonZeroU*::saturating_add
    • os::unix::process::CommandExt::process_group
    • os::windows::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • Ireo karazana C-compatible, efa niorina teo aloha tao amin'ny std::ffi module, dia nampiana tao amin'ny core sy ny alloc library:
    • fototra::ffi::CStr
    • core ::ffi::FromBytesWithNulError
    • alloc::ffi::CString
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • Ny C-karazana efa niorina teo aloha tao amin'ny std::os::raw module dia nampidirina tao amin'ny fototra::ffi sy std::ffi modules (ohatra, c_uint sy c_ulong karazana dia natolotra ho an'ny C-karazana uint sy ulong ):
    • ffi::c_char
    • ffi::c_double
    • ffi::c_float
    • ffi::c_int
    • ffi::c_long
    • ffi::c_longlong
    • ffi::c_schar
    • ffi::c_short
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_ushort
  • Nohamafisina ny mpiandraikitra ambaratonga ambany mba hampiasaina amin'ny rafitra fitsapan-kevitra (amin'ny ho avy dia kasaina hanome API notsorina izay tsy mitaky ny fampiasana rafitra Pull sy Pin ambany):

    • ho avy::poll_fn
    • asa :: vonona!
  • Ny toetra "const", izay mamaritra ny mety hampiasana azy fa tsy ny constants amin'ny toe-javatra rehetra, dia ampiasaina amin'ny asa slice ::from_raw_parts.
  • Mba hitehirizana angon-drakitra amin'ny fomba malefaka kokoa, dia niova ny firafitry ny fitadidiana ny Ipv4Addr, Ipv6Addr, SocketAddrV4 ary SocketAddrV6. Mety handrava ny fifanarahana amin'ny fonosana vata tokana izay mampiasa std::mem::transmute ho an'ny fanodinkodinana rafitra ambany.
  • Ny fivorian'ny mpanangona harafesina ho an'ny sehatra Windows dia mampiasa PGO optimizations (profile-guided optimization), izay nahatonga ny fampitomboana ny fahombiazan'ny fanangonana code amin'ny 10-20%.
  • Nametraka fampitandremana vaovao momba ny saha tsy ampiasaina amin'ny rafitra sasany ny compiler.

Fanampin'izany, azontsika atao ny manamarika ny tatitry ny sata momba ny fampivoarana fampiharana hafa amin'ny mpanangom-pitenenana Rust, nomanin'ny tetikasa gccrs (GCC Rust) ary nankatoavina ho fampidirana ao amin'ny GCC. Aorian'ny fampidirana ny frontend, ny kitapom-pitaovana GCC mahazatra dia azo ampiasaina hanangonana programa Rust tsy mila mametraka ny compiler rustc natsangana tamin'ny fampivoarana LLVM. Raha mbola mandeha araka ny drafitra ny fampandrosoana, ary manakana ny olana tsy ampoizina, ny fiafaran'ny fiteny Rust dia hampidirina ao amin'ny famoahana GCC 13 kasaina hatao amin'ny volana Mey amin'ny taona ho avy. Ny fampiharana Rust ao amin'ny GCC 13 dia ho ao amin'ny sata beta, tsy mbola alefa amin'ny alΓ lan'ny default.

Source: opennet.ru

Add a comment