Выпуск мовы праграмавання Rust 1.46

Апублікаваны рэліз 1.46 мовы сістэмнага праграмавання Іржа, заснаванага праектам Mozilla. Мова сфакусаваная на бяспечнай працы з памяццю, забяспечвае аўтаматычнае кіраванне памяццю і дае сродкі для дасягнення высокага паралелізму выканання заданняў, пры гэтым абыходзячыся без выкарыстання зборшчыка смецця і час выканання.

Аўтаматычнае кіраванне памяццю ў Rust пазбаўляе распрацоўніка ад памылак пры маніпуляванні паказальнікамі і абараняе ад праблем, якія ўзнікаюць з-за нізкаўзроўневай працы з памяццю, такіх як зварот да вобласці памяці пасля яе вызвалення, разнайменаванне нулявых паказальнікаў, вынахад за межы буфера і да т.п. Для распаўсюджвання бібліятэк, забеспячэння зборкі і кіравання залежнасцямі праектам развіваецца пакетны менеджэр грузавы, які дазваляе атрымаць патрэбныя для праграмы бібліятэкі ў адзін клік. Для размяшчэння бібліятэк падтрымліваецца рэпазітар crates.io.

Асноўныя навіны:

  • Пашыраны магчымасці функцый, вызначаных з выкарыстаннем выраза "const fn", якія могуць выклікацца не толькі як звычайныя функцыі, але і выкарыстоўвацца ў любым кантэксце замест канстант. Дадзеныя функцыі вылічаюцца на этапе кампіляцыі, а не падчас выкананні, таму на іх накладваюцца вызначаныя абмежаванні, такія як магчымасць чытання толькі з канстант.

    У новым выпуску прыбрана забарона на прымяненне ў падобных функцыях булевых аператараў ("&&" і "||"), дазволена выкарыстанне канструкцый "if", "if let", "match",
    "while", "while let" і "loop", а таксама прадстаўлена магчымасць пераўтварэння ў зрэзы (slice, дынамічныя масівы) пры дапамозе выраза "&[T]". Ужыванне дадзеных магчымасцяў у функцыях "const fn" дазваляе вынесці некаторыя рэсурсаёмістыя аперацыі на стадыю кампіляцыі. Напрыклад, рэалізацыя "const-sha1" дае магчымасць вылічваць хэшы SHA-1 падчас кампіляцыі, што прыводзіць да паскарэння працы WinRT прывязак для Rust амаль у 40 разоў.

  • Для падвышэння інфарматыўнасці паведамленняў аб памылках стабілізаваная падтрымка атрыбуту "#[track_caller]", карыснага для функцый, падобных unwrap, у якіх не выключаецца ўзнікненне збояў (panic) пры некарэктным выкарыстанні тыпаў. Указаны атрыбут будзе выкарыстаны апрацоўшчыкам panic для вываду месцазнаходжання выклікае ў паведамленні пра памылку.
  • Прыкмета "const", вызначальны магчымасць выкарыстання ў любым кантэксце замест канстант, ужыты ў метадзе std::mem::forget.
  • У разрад стабільных пераведзена новая порцыя API, у тым ліку стабілізаваныя Option::zip і vec::Drain::as_slice.
  • У пакетны менеджэр Сargo дададзена падтрымка новых зменных асяроддзі, усталёўваных пры кампіляцыі пакета: CARGO_BIN_NAME (імя выніковага выкананага файла), CARGO_CRATE_NAME (імя пакета), CARGO_PKG_LICENSE (ліцэнзія, паказаная ў маніфесце), CARGO_PKG_LICEN.

Крыніца: opennet.ru

Дадаць каментар