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

Нашри забони барномасозии системавии Rust 1.52, ки аз ҷониби лоиҳаи Mozilla таъсис дода шудааст, аммо ҳоло таҳти сарпарастии ташкилоти мустақили ғайритиҷоратии Rust Foundation таҳия шудааст, нашр шуд. Забон ба бехатарии хотира тамаркуз мекунад, идоракунии автоматии хотираро таъмин мекунад ва воситаҳоро барои ноил шудан ба параллелизми баланди вазифаҳо бидуни истифодаи коллектори партов ё вақти корӣ таъмин мекунад (вақти кор то ибтидосозӣ ва нигоҳдории китобхонаи стандартӣ кам карда мешавад).

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

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

  • Ҳатмӣ ба тартиби иҷрои фармонҳои "чек бор" ва "клипи боркаш" хориҷ карда шуд. Қаблан, даъват кардани "боркаши боркаш" пас аз "чечиши бор" аз сабаби набудани ҷудокунии кэш барои ин режимҳои чек утилитаи clippy (linter) -ро оғоз намекард. Ҳоло ин мушкилот ҳал шудааст ва тартиби бо он номи "клипи боркаш" ва "чеки бор" дигар аҳамият надорад.
  • Қисми нави API ба категорияи устувор интиқол дода шуд, аз ҷумла усулҳои зерин устувор карда шуданд:
    • Далелҳо ::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char ::decode_utf16
    • char :: аз_рақам
    • char::from_u32_unchecked
    • char::from_u32
    • slice :: partition_point
    • str::rsplit_once
    • str::split_once
  • Аттрибути "const", ки имконияти истифодаи онро дар ҳама гуна контекст ба ҷои доимӣ муайян мекунад, дар усулҳо истифода мешавад:
    • char ::len_utf8
    • char ::len_utf16
    • char ::to_ascii_uppercase
    • char ::to_ascii_loercase
    • char :: eq_ignore_ascii_case
    • u8 :: to_ascii_uppercase
    • u8 :: to_ascii_loercase
    • u8 :: eq_ignore_ascii_case
  • Иловаи санҷиши lint unsafe_op_in_unsafe_fn барои муайян кардани он, ки оё рамзи хатарноке, ки дар функсияҳои хатарнок истифода мешавад, бо блокҳои хатарнок чаҳорчӯба шудааст.
  • Иҷозат дода мешавад, ки нишондиҳандаҳои тағирёбанда ба массивҳо ба шакли нишондиҳандаҳо ба намуди элементи массив интиқол дода шаванд. бигзор mut x: [usize; 2] = [0, 0]; бигзор p = &mut x ҳамчун *mut use; бигзор p = &mut x ҳамчун *const use;
  • 9 чеки нав ба clippy (linter) илова карда шуданд.
  • Менеҷери бастаи боркаш ҳоло майдони "манифест_роҳ" -ро дар JSON барои бастаҳо дастгирӣ мекунад. Дастгирии иловашуда барои муайян кардани маълумоти иҷозатнома дар формати SPDX 3.11 ба анбори crates.io.
  • Ҳангоми иҷро кардани санҷишҳо иҷозат дода мешавад, ки филтрҳои сершумор муайян карда шаванд, масалан, иҷро кардани "test cargo - foo bar" ҳамаи санҷишҳои мувофиқи ниқобҳои "foo" ва "bar" -ро иҷро мекунад.
  • Асбоби пешфарзии LLVM ба LLVM 12 навсозӣ шудааст.
  • Сатҳи сеюми дастгирӣ барои платформаҳои s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl ва powerpc-unknown-openbsd амалӣ карда шудааст. Сатҳи сеюм дастгирии асосиро дар бар мегирад, аммо бидуни санҷиши автоматикунонидашуда, нашри сохторҳои расмӣ ё тафтиши он, ки оё код сохта мешавад.

Манбаъ: opennet.ru

Илова Эзоҳ