Rust 1.38 Варақаи забони барномасозӣ

нашр шудааст нашри забони барномасозии система Занги 1.38, аз ҷониби лоиҳаи Mozilla таъсис дода шудааст. Забон ба бехатарии хотира тамаркуз мекунад, идоракунии автоматии хотираро таъмин мекунад ва воситаеро барои ноил шудан ба параллелизми баланди вазифаҳо бидуни истифодаи коллектор ё вақти корӣ таъмин мекунад.

Идоракунии хотираи автоматии Rust таҳиякунандаро аз коркарди нишондиҳандаҳо озод мекунад ва аз мушкилоте, ки дар натиҷаи коркарди хотираи сатҳи паст ба вуҷуд меоянд, ба монанди дастрасии пас аз хотираи хотира, истинодҳои нул нишондодҳо, изофаи буферӣ ва монанди инҳо муҳофизат мекунад. Менеҷери бастаҳо барои паҳн кардани китобхонаҳо, таъмини ҷамъбаст ва идоракунии вобастагӣ аз ҷониби лоиҳа таҳия карда мешавад. бор, ба шумо имкон медиҳад, ки китобхонаҳои барои барнома лозимиро бо як клик дастрас кунед. Барои китобхонаҳои мизбон як анбор дастгирӣ карда мешавад crates.io.

асосӣ навовариҳо:

  • Реҷаи компиляцияи қубурӣ (қубурӣ) илова карда шуд, ки дар он сохтани бастаи қуттии вобаста баробари дастрас шудани метамаълумотҳои вобастагӣ бидуни мунтазири анҷоми тартиб додани он оғоз мешавад. Ҳангоми тартиб додани баста, вобастагӣ ба пурра ҷамъ овардан лозим нест, танҳо муайян кардани метамаълумот, ки рӯйхати намудҳо, вобастагӣ ва унсурҳои содиршударо дар бар мегирад. Метамаълумот дар аввали раванди тартибдиҳӣ дастрас карда мешавад, аз ин рӯ бастаҳои алоқаманд акнун метавонанд хеле пештар тартиб дода шаванд. Ҳангоми сохтани бастаҳои ягона, режими пешниҳодшуда ба кор таъсир намерасонад, аммо агар сохтан бастаҳоро бо вобастагии шохадор фаро гирад, вақти умумии сохтмонро 10-20% кам кардан мумкин аст;
  • Муайян кардани истифодаи нодурусти функсияҳоро таъмин мекунад std :: mem :: оғознашуда и std :: mem :: сифр. Масалан, std::mem::uninitialized барои зуд эҷод кардани массивҳо қулай аст, аммо он компиляторро гумроҳ мекунад, зеро ба назар мерасад, ки он оғозёбанда аст, аммо дар асл арзиши он оғознашуда боқӣ мемонад. Функсияи mem:: uninitialized аллакай ҳамчун бекоршуда қайд карда шудааст ва тавсия дода мешавад, ки ба ҷои он навъи фосилавӣ истифода шавад Шояд воҳиди. Дар мавриди mem::zeroed, ин функсия метавонад бо намудҳое, ки қиматҳои сифрро қабул карда наметавонанд, мушкилот эҷод кунад.

    Барои муайян кардани рафтори номуайян, версияи нав ба компилятор чеки линт илова мекунад, ки баъзе мушкилотро бо mem::uninitialized ё mem::zeroed ошкор мекунад. Масалан, шумо ҳоло ҳангоми кӯшиши истифодаи mem::uninitialized ё mem::zeroed бо намудҳои &T ва Box‹T›, ки объектҳои ишоракунакро ифода мекунанд, ки қиматҳои нулро қабул карда наметавонанд, хатогӣ мегиред;

  • Аттрибути "#[дархостшуда]" васеъ карда шудааст, то ба бастаҳои қуттиҳои кӯҳна ишора карда шавад ва барои несткунии оянда ба нақша гирифта шавад. Аз Rust 1.38, ин атрибут низ метавонад барои макросҳо истифода шавад;
  • Имконияти истифодаи атрибути "#[global_allocator]" дар зермодулҳо илова карда шуд;
  • Хусусияти иловашуда std :: any :: type_name, ки ба шумо имкон медиҳад, ки номи намудро пайдо кунед, ки метавонад барои мақсадҳои ислоҳкунӣ муфид бошад. Масалан, њангоми иљрои барнома шумо метавонед бифаҳмед, ки функсия барои кадом намуд номида шудааст:

    fn gen_value‹T: Пешфарз>() -› T {
    println!("Оғоз кардани мисоли {}", std::any::type_name::‹T›());
    Пешфарз ::default()
    }

    fn main() {
    бигзор _: i32 = gen_value (); # "i32" чоп карда мешавад
    бигзор _: Сатр = gen_value (); # "alloc::string::String"-ро чоп мекунад
    }

  • Функсияҳои васеъи китобхонаи стандартӣ:
    • slice::{concat, connect, join} акнун метавонад арзиши &[T]-ро ба ғайр аз &T;
    • "*const T" ва "*mut T" акнун маркерро амалӣ мекунанд::Unpin;
    • "Arc‹[T]›" ва "Rc‹[T]›" ҳоло FromIterator‹T› амалӣ мекунанд;
    • iter::{StepBy, Peekable, Take} ҳоло DoubleEndedIterator-ро татбиқ кунед.
    • ascii :: EscapeDefault Clone ва Display -ро амалӣ мекунад.
  • Қисмати нави APIҳо ба категорияи устувор, аз ҷумла усулҳое, ки мӯътадил шудаанд, гузаронида шуд
    • ‹*const T›::cast, ‹*mut T›::cast,
    • Давомнокӣ::as_secs_f{32|64},
    • Давомнокӣ::div_duration_f{32|64},
    • Давомнокӣ::div_f{32|64},
    • Давомнокӣ::from_secs_f{32|64},
    • Давомнокӣ::mul_f{32|64},
    • амалиёти тақсимот бо боқимонда
      div_euclid ва rem_euclid барои ҳама ибтидоии бутун;

  • Менеҷери бастаи боркаш ҳоло якчанд маротиба муайян кардани имконоти "--features" -ро барои фаъол кардани хусусиятҳои гуногун дастгирӣ мекунад;
  • Компилятор сеюмро таъмин мекунад дараҷа дастгирии платформаҳои мавриди ҳадаф aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvux7- ҳадафҳои маълум, armv- -gnueabi, armv7-номаълум-linux-musleabi, шашкунҷа-номаълум-linux-musl ва riscv32i-номаълум-ҳеҷ-элф. Сатҳи сеюм дастгирии асосиро дар бар мегирад, аммо бидуни санҷиши автоматӣ ва нашри сохторҳои расмӣ.

Манбаъ: opennet.ru

Илова Эзоҳ