Harshen shirye-shiryen tsatsa 1.45

aka buga saki 1.45 na yaren shirye-shiryen tsarin Rust, wanda aikin Mozilla ya kafa. Harshen yana mai da hankali kan amincin ƙwaƙwalwar ajiya, yana ba da sarrafa ƙwaƙwalwar ajiya ta atomatik, kuma yana ba da kayan aiki don cimma babban aiki daidaici ba tare da amfani da mai tara shara ba lokacin gudu.

Gudanar da ƙwaƙwalwar ajiya ta atomatik na Rust yana kawar da kurakurai yayin sarrafa masu nuni kuma yana ba da kariya daga matsalolin da suka taso daga ƙananan ƙananan ƙwaƙwalwar ajiya, kamar shiga yankin ƙwaƙwalwar ajiya bayan an 'yantar da shi, ɓangarorin null pointer, buffer overruns, da dai sauransu. Ana haɓaka mai sarrafa fakiti don rarraba ɗakunan karatu, tabbatar da taro da sarrafa abubuwan dogaro ta hanyar aikin. ofishin, ba ku damar samun ɗakunan karatu da ake buƙata don shirin a dannawa ɗaya. Ana tallafawa wurin ajiya don ɗaukar ɗakunan karatu akwati.io.

Main sababbin abubuwa:

  • An kawar da dogon tsaye aibi lokacin yin jujjuyawa tsakanin lambobi da lambobi masu iyo. Tun da Rust compiler yana amfani da LLVM azaman baya, nau'in ayyukan jujjuyawar an yi su ta hanyar umarnin lambar matsakaici na LLVM kamar su. fptoui, waɗanda ke da fasali ɗaya mai mahimmanci - halayen da ba a bayyana ba idan ƙimar da aka samu ba ta dace da nau'in manufa ba. Misali, lokacin da ake juyar da kimar iyo 300 tare da nau'in f32 zuwa nau'in lamba u8, sakamakon ba shi da tabbas kuma yana iya bambanta akan tsarin daban-daban. Matsalar ita ce wannan fasalin yana bayyana a lambar da ba a yiwa alama "mara lafiya".

    Dangane da Rust 1.45, yanayin girman nau'in girman ambaliya yana da ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun tsarin, kuma aikin "as" yana bincikar ambaliya kuma yana tilasta ƙimar da ake jujjuyawa zuwa matsakaicin ko mafi ƙarancin ƙimar nau'in manufa (misali a sama, ƙimar 300 za a canza zuwa 255). Don musaki irin waɗannan cak ɗin, ana bayar da ƙarin kiran API "{f64, f32}:: to_int_unchecked", yana aiki a cikin yanayin rashin tsaro.

    fn simintin (x: f32) -> u8 {
    x ku 8
    }

    fn main() {
    bari ma_big = 300.0;
    bari ma_karamin = -100.0;
    bari nan = f32::NAN;

    bari x: f32 = 1.0;
    bari y: u8 = mara lafiya {x.to_int_unchecked()};

    println! // fitarwa 255
    println! // fitarwa 0
    println! ("not_a_number_casted = {}", jefa (nan)); // fitarwa 0
    }

  • Amfani da daidaitacce procedural macrosmaganganu masu kama da aiki, samfuri, da kalamai. A baya can, irin waɗannan macros ba za a iya kiran su a ko'ina ba, amma kawai a wasu sassa na lambar (a matsayin kira daban, ba a haɗa shi da wasu lambar ba). Fadada yadda za a iya kiran macros, kama da ayyuka, yana ɗaya daga cikin abubuwan da ake buƙata don sa tsarin gidan yanar gizon ya yi aiki Roka a barga sake na Tsatsa. A baya can, samun ƙarin sassauƙa wajen ayyana masu aiki a cikin Rocket yana buƙatar ba da damar fasalin gwaji da ake kira “proc_macro_hygiene”, wanda baya samuwa a cikin tsattsauran nau'ikan tsatsa. An gina wannan aikin a cikin ingantaccen sakin harshe.
  • An ba da izinin amfani da jeri tare da nau'in "char" don ƙididdige ƙimar ƙimar kewayon (ops:: {Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    domin ch in 'a'..='z' {
    buga! ("{}", ch);
    }
    println!(); // Za a buga "abcdefghijklmnopqrstuvwxyz"

  • An canza wani sabon yanki na APIs zuwa tsayayyen nau'in, gami da daidaitacce
    Arc :: as_ptr,
    BTreeMap ::cire_shiga,
    Rc :: as_ptr,
    rc :: Rauni :: as_ptr,
    rc::Rauni::daga_raw,
    rc :: Rauni :: cikin_raw,
    str :: strip_prefix,
    str :: strip_suffix,
    daidaitawa :: Rauni :: as_ptr,
    daidaitawa ::Rauni ::daga_raw,
    daidaitawa ::Rauni ::cikin_raw,
    char :: UNICODE_VERSION,
    Tsawon :: an warware_a,
    Span ::located_a,
    Span :: mixed_site,
    unix:: tsari::CommandExt::arg0.

  • Mai tarawa rustc ya ƙara tallafi don ƙetare fasalolin dandamali daban-daban ta amfani da tuta "fasalin manufa", misali, "-C target-feature=+avx2,+fma". An kuma kara sabbin tutoci:
    "ƙarfafa-unwind-tebur" don samar da allunan kira, ba tare da la'akari da dabarun magance haɗarin ba; "embed-bitcode" don sarrafa ko an haɗa LLVM bitcode a cikin rlibs da aka ƙirƙira. Tutar "embed-bitcode" tana aiki ta tsohuwa a cikin Cargo don inganta lokacin ginawa da amfani da sarari diski.

  • An samar da matakin tallafi na uku don dandamalin mipsel-sony-psp da thumbv7a-uwp-windows-msvc. Mataki na uku ya ƙunshi tallafi na yau da kullun, amma ba tare da gwaji ta atomatik da buga ginin hukuma ba.

Bugu da ƙari, ana iya lura da shi labarin game da ƙirƙirar mafi sauƙi apps a cikin yaren Rust, farawa ta amfani da bootloader na tsarin kuma a shirye don ɗaukar nauyin kansa maimakon tsarin aiki.
Labarin shine na farko a cikin jerin da aka sadaukar don nuna dabarun da ake buƙata a cikin ƙananan shirye-shirye da haɓaka OS.

source: budenet.ru

Add a comment