ரஸ்ட் 1.45 நிரலாக்க மொழி வெளியீடு

வெளியிடப்பட்டது கணினி நிரலாக்க மொழியின் 1.45 ஐ வெளியிடவும் துரு, Mozilla திட்டத்தால் நிறுவப்பட்டது. மொழி நினைவக பாதுகாப்பில் கவனம் செலுத்துகிறது, தானியங்கி நினைவக நிர்வாகத்தை வழங்குகிறது, மேலும் குப்பை சேகரிப்பாளரைப் பயன்படுத்தாமல் உயர் பணி இணைத்தன்மையை அடைவதற்கான கருவிகளை வழங்குகிறது. இயக்க.

ரஸ்டின் தானியங்கி நினைவக மேலாண்மை சுட்டிகளை கையாளும் போது ஏற்படும் பிழைகளை நீக்குகிறது மற்றும் குறைந்த அளவிலான நினைவக கையாளுதலில் இருந்து எழும் சிக்கல்களிலிருந்து பாதுகாக்கிறது, அதாவது நினைவகப் பகுதியை விடுவித்த பிறகு அணுகுவது, பூஜ்ய சுட்டிக்காட்டி குறைபாடுகள், இடையக மீறல்கள் போன்றவை. நூலகங்களை விநியோகிக்கவும், அசெம்பிளியை உறுதி செய்யவும் மற்றும் திட்டத்தின் சார்புகளை நிர்வகிக்கவும் ஒரு தொகுப்பு மேலாளர் உருவாக்கப்படுகிறது. சரக்கு, நிரலுக்குத் தேவையான நூலகங்களை ஒரே கிளிக்கில் பெற உங்களை அனுமதிக்கிறது. நூலகங்களை ஹோஸ்ட் செய்ய ஒரு களஞ்சியம் துணைபுரிகிறது crates.io.

முக்கிய புதுமைகள்:

  • நீண்டகாலம் நீக்கப்பட்டது குறைபாடு முழு எண்கள் மற்றும் மிதக்கும் புள்ளி எண்களுக்கு இடையில் மாற்றங்களைச் செய்யும்போது. ரஸ்ட் கம்பைலர் LLVM ஐ பின்தளமாகப் பயன்படுத்துவதால், வகை மாற்றும் செயல்பாடுகள் LLVM இடைநிலை குறியீடு வழிமுறைகள் மூலம் நிகழ்த்தப்பட்டன fptoui, இது ஒரு குறிப்பிடத்தக்க அம்சத்தைக் கொண்டுள்ளது - இதன் விளைவாக வரும் மதிப்பு இலக்கு வகைக்கு பொருந்தவில்லை என்றால் வரையறுக்கப்படாத நடத்தை. எடுத்துக்காட்டாக, ஃப்ளோட் மதிப்பு 300ஐ f32 வகையுடன் முழு எண் வகை u8 ஆக மாற்றும் போது, ​​முடிவு கணிக்க முடியாதது மற்றும் வெவ்வேறு கணினிகளில் மாறுபடலாம். பிரச்சனை என்னவென்றால், இந்த அம்சம் "பாதுகாப்பற்றது" எனக் குறிக்கப்படாத குறியீட்டில் தோன்றும்.

    ரஸ்ட் 1.45 இன் படி, வகை அளவு வழிதல் நடத்தை கண்டிப்பாக கட்டுப்படுத்தப்படுகிறது, மேலும் "ஆஸ்" கன்வெர்ஷன் ஆபரேஷன் ஓவர்ஃப்ளோவை சரிபார்த்து, இலக்கு வகையின் அதிகபட்ச அல்லது குறைந்தபட்ச மதிப்பாக மாற்றப்படுவதை கட்டாயப்படுத்துகிறது (உதாரணத்திற்கு, மேலே உள்ள மதிப்பு 300 255 ஆக மாற்றப்படும்). அத்தகைய சரிபார்ப்புகளை முடக்க, பாதுகாப்பற்ற பயன்முறையில் செயல்படும் கூடுதல் API அழைப்புகள் “{f64, f32}::to_int_unchecked” வழங்கப்படுகின்றன.

    fn cast(x: f32) -> u8 {
    x u8 ஆக
    }

    fn முக்கிய() {
    விடவும்_பெரிய = 300.0;
    சிறியதாக இருக்கட்டும் = -100.0;
    விடு நன் = f32::NAN;

    x: f32 = 1.0;
    y: u8 = பாதுகாப்பற்ற {x.to_int_unchecked()};

    println!("too_big_casted = {}", cast(too_big)); // வெளியீடு 255
    println!("too_small_casted = {}", cast(too_small)); // வெளியீடு 0
    println!("not_a_number_casted = {}", cast(nan)); // வெளியீடு 0
    }

  • நிலைப்படுத்தி பயன்படுத்தவும் செயல்முறை மேக்ரோக்கள்செயல்பாடு போன்ற வெளிப்பாடுகள், வார்ப்புருக்கள் மற்றும் அறிக்கைகள். முன்னதாக, அத்தகைய மேக்ரோக்களை எல்லா இடங்களிலும் அழைக்க முடியாது, ஆனால் குறியீட்டின் சில பகுதிகளில் மட்டுமே (ஒரு தனி அழைப்பாக, மற்ற குறியீட்டுடன் பிணைக்கப்படவில்லை). மேக்ரோக்களை அழைக்கும் விதத்தை விரிவுபடுத்துவது, செயல்பாடுகளைப் போலவே, வலை கட்டமைப்பை செயல்பட வைப்பதற்கான தேவைகளில் ஒன்றாகும். ராக்கெட் ரஸ்டின் நிலையான வெளியீடுகளில். முன்னதாக, ராக்கெட்டில் ஹேண்ட்லர்களை வரையறுப்பதில் கூடுதல் நெகிழ்வுத்தன்மையை அடைவதற்கு “proc_macro_hygiene” எனப்படும் சோதனை அம்சத்தை இயக்க வேண்டும், இது ரஸ்டின் நிலையான பதிப்புகளில் இல்லை. இந்த செயல்பாடு இப்போது மொழியின் நிலையான வெளியீடுகளில் கட்டமைக்கப்பட்டுள்ளது.
  • வரம்பிற்கு மேல் உள்ள மதிப்புகளை (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}) மீண்டும் மீண்டும் செய்ய “char” வகை கொண்ட வரம்புகளைப் பயன்படுத்த அனுமதிக்கப்படுகிறது:

    'a' இல் ch..='z' {
    அச்சு!("{}", ch);
    }
    println!(); // "abcdefghijklmnopqrstuvwxyz" அச்சிடப்படும்

  • APIகளின் புதிய பகுதியானது, நிலைப்படுத்தப்பட்டவை உட்பட, நிலையான வகைக்கு மாற்றப்பட்டது
    பரிதி::as_ptr,
    BTreeMap::remove_entry,
    Rc::as_ptr,
    rc::பலவீனமான::as_ptr,
    rc::Weak:: from_raw,
    rc::பலவீனமான::into_raw,
    str::strip_prefix,
    str::strip_suffix,
    ஒத்திசைவு::பலவீனமான::as_ptr,
    ஒத்திசைவு:: பலவீனமான:: from_raw,
    ஒத்திசைவு::பலவீனமான::into_raw,
    எழுத்து::UNICODE_VERSION,
    இடைவெளி::தீர்க்கப்பட்டது,
    Span::located_at,
    இடைவெளி::கலப்பு_தளம்,
    unix::process::CommandExt::arg0.

  • rustc கம்பைலர் "இலக்கு-அம்சம்" கொடியைப் பயன்படுத்தி பல்வேறு இலக்கு இயங்குதள அம்சங்களை மேலெழுதுவதற்கான ஆதரவைச் சேர்த்துள்ளது, எடுத்துக்காட்டாக, "-C target-feature=+avx2,+fma". புதிய கொடிகளும் சேர்க்கப்பட்டுள்ளன:
    செயலிழப்பு கையாளும் உத்தியைப் பொருட்படுத்தாமல், அழைப்பு அட்டவணைகளை பிரித்தெடுக்க "force-unwind-tables"; உருவாக்கப்பட்ட rlibs இல் LLVM பிட்கோடு சேர்க்கப்பட்டுள்ளதா என்பதைக் கட்டுப்படுத்த "embed-bitcode". "உட்பொதிக்கப்பட்ட-பிட்கோட்" கொடியானது கார்கோவில் இயல்பாகவே கட்டமைக்கும் நேரம் மற்றும் வட்டு இட நுகர்வு ஆகியவற்றை மேம்படுத்துவதற்கு இயக்கப்பட்டது.

  • mipsel-sony-psp மற்றும் thumbv7a-uwp-windows-msvc தளங்களுக்கு மூன்றாம் நிலை ஆதரவு வழங்கப்பட்டுள்ளது. மூன்றாம் நிலை அடிப்படை ஆதரவை உள்ளடக்கியது, ஆனால் தானியங்கு சோதனை மற்றும் அதிகாரப்பூர்வ உருவாக்கங்களின் வெளியீடு இல்லாமல்.

கூடுதலாக, அதை கவனிக்க முடியும் கதை எளிமையானதை உருவாக்குவது பற்றி பயன்பாடுகள் ரஸ்ட் மொழியில், சிஸ்டம் பூட்லோடரைப் பயன்படுத்தத் தொடங்கி, இயங்குதளத்திற்குப் பதிலாக சுயமாக ஏற்றுவதற்குத் தயாராக உள்ளது.
குறைந்த-நிலை நிரலாக்கம் மற்றும் OS மேம்பாட்டில் தேவைப்படும் நுட்பங்களை நிரூபிக்க அர்ப்பணிக்கப்பட்ட ஒரு தொடரின் முதல் கட்டுரை.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்