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

ரஸ்ட் 1.66 பொது-நோக்க நிரலாக்க மொழியின் வெளியீடு, Mozilla திட்டத்தால் நிறுவப்பட்டது, ஆனால் இப்போது சுயாதீனமான இலாப நோக்கற்ற அமைப்பான Rust Foundation இன் அனுசரணையில் உருவாக்கப்பட்டது, வெளியிடப்பட்டது. மொழி நினைவகப் பாதுகாப்பில் கவனம் செலுத்துகிறது மற்றும் குப்பை சேகரிப்பான் மற்றும் இயக்க நேரத்தைப் பயன்படுத்துவதைத் தவிர்க்கும் அதே வேளையில் அதிக வேலை இணைத்தன்மையை அடைவதற்கான வழிமுறைகளை வழங்குகிறது (இயக்க நேரம் நிலையான நூலகத்தின் அடிப்படை துவக்கம் மற்றும் பராமரிப்புக்கு குறைக்கப்படுகிறது).

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

குறிப்புச் சரிபார்ப்பு, பொருளின் உரிமையைக் கண்காணித்தல், பொருளின் ஆயுட்காலம் (நோக்குகள்) ஆகியவற்றைக் கண்காணிப்பது மற்றும் குறியீடு செயலாக்கத்தின் போது நினைவக அணுகலின் சரியான தன்மையை மதிப்பிடுதல் ஆகியவற்றின் மூலம் தொகுக்கும் நேரத்தில் ரஸ்டில் நினைவகப் பாதுகாப்பு வழங்கப்படுகிறது. ரஸ்ட் முழு எண் வழிதல்களுக்கு எதிராக பாதுகாப்பை வழங்குகிறது, பயன்பாட்டிற்கு முன் மாறி மதிப்புகளை கட்டாயமாக துவக்க வேண்டும், நிலையான நூலகத்தில் பிழைகளை சிறப்பாக கையாளுகிறது, இயல்புநிலையாக மாறாத குறிப்புகள் மற்றும் மாறிகளின் கருத்தைப் பயன்படுத்துகிறது, தருக்க பிழைகளைக் குறைக்க வலுவான நிலையான தட்டச்சு வழங்குகிறது.

முக்கிய கண்டுபிடிப்புகள்:

  • முழு எண் பிரதிநிதித்துவங்களைக் கொண்ட கணக்கீடுகளில் ("#[repr(Int)]" பண்புக்கூறு), கணக்கீட்டில் புலங்கள் இருந்தாலும், பாரபட்சமான (எண்ணியலில் உள்ள மாறுபாடு எண்) வெளிப்படையான குறிப்பு அனுமதிக்கப்படுகிறது. #[repr(u8)] enum Foo {A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42 }
  • செயல்பாடு கோர் சேர்க்கப்பட்டது:: hint:: black_box இது பெறப்பட்ட மதிப்பை வெறுமனே வழங்கும். கம்பைலர் இந்தச் செயல்பாடு ஏதாவது செய்வதாகக் கருதுவதால், குறியீட்டு செயல்திறன் சோதனையை மேற்கொள்ளும் போது அல்லது உருவாக்கப்பட்ட இயந்திரக் குறியீட்டை ஆராயும் போது லூப்களுக்கான கம்பைலர் மேம்படுத்தல்களை முடக்க black_box செயல்பாட்டைப் பயன்படுத்தலாம் (இதனால் கம்பைலர் குறியீட்டைப் பயன்படுத்தாததாகக் கருதி அதை அகற்றாது). எடுத்துக்காட்டாக, கீழே உள்ள எடுத்துக்காட்டில், வெக்டார் v பயன்படுத்தப்படவில்லை என்று கம்பைலர் நினைப்பதை black_box(v.as_ptr()) தடுக்கிறது. std:: hint:: black_box ஐப் பயன்படுத்தவும்; fn push_cap(v: &mut Vec) {ஐக்கு 0..4 {v.push(i); கருப்பு_பெட்டி(v.as_ptr()); } }
  • "கார்கோ" தொகுப்பு மேலாளர் "நீக்கு" கட்டளையை வழங்குகிறது, இது கட்டளை வரியிலிருந்து Cargo.toml மேனிஃபெஸ்டிலிருந்து சார்புகளை அகற்ற அனுமதிக்கிறது.
  • API இன் ஒரு புதிய பகுதி நிலையான வகைக்கு நகர்த்தப்பட்டது, இதில் பண்புகளின் முறைகள் மற்றும் செயலாக்கங்கள் உறுதிப்படுத்தப்பட்டுள்ளன:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{முதல், கடைசி, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • WASI ஐப் பயன்படுத்தும் போது stdio பூட்டு வகைகளுக்கு AsFd செயலாக்கங்களைச் சேர்க்கவும்.
    • Impl TryFrom > பெட்டிக்கு<[T; N]>
    • core::int::black_box
    • காலம்::try_from_secs_{f32,f64}
    • விருப்பம்:: unzip
    • std::os::fd
  • டெம்ப்ளேட்களில் "..X" மற்றும் "..=X" வரம்புகள் அனுமதிக்கப்படுகின்றன.
  • rustc கம்பைலர் மற்றும் LLVM பின்தளத்தின் முன் முனையை உருவாக்கும் போது, ​​LTO (இணைப்பு நேர உகப்பாக்கம்) மற்றும் BOLT (பைனரி ஆப்டிமைசேஷன் மற்றும் லேஅவுட் டூல்) தேர்வுமுறை முறைகள் இதன் விளைவாக வரும் குறியீட்டின் செயல்திறனை அதிகரிக்கவும் நினைவக நுகர்வு குறைக்கவும் பயன்படுத்தப்படுகின்றன.
  • armv5te-none-eabi மற்றும் thumbv5te-none-eabi இயங்குதளங்களுக்கு நிலை XNUMX ஆதரவு செயல்படுத்தப்பட்டது. மூன்றாவது நிலை அடிப்படை ஆதரவைக் குறிக்கிறது, ஆனால் தானியங்கு சோதனை இல்லாமல், அதிகாரப்பூர்வ உருவாக்கங்களை வெளியிடுதல் மற்றும் குறியீட்டை உருவாக்கும் திறனைச் சரிபார்த்தல்.
  • மேகோஸ் ஜெனரிக் லைப்ரரிகளுடன் இணைப்பதற்கான ஆதரவு சேர்க்கப்பட்டது.

கூடுதலாக, ரஸ்ட் மொழியின் (ஜி.சி.சி.ஆர்.எஸ்) முன்-இறுதி கம்பைலரின் ஜி.சி.சி கோட்பேஸில் உள்ளதை நாம் கவனிக்கலாம். முன்பக்கம் GCC 13 கிளையில் சேர்க்கப்பட்டுள்ளது, இது மே 2023 இல் வெளியிடப்படும். GCC 13 இல் தொடங்கி, LLVM மேம்பாடுகளைப் பயன்படுத்தி கட்டமைக்கப்பட்ட rustc கம்பைலரை நிறுவ வேண்டிய அவசியமின்றி ரஸ்ட் நிரல்களைத் தொகுக்க நிலையான GCC கருவித்தொகுப்பைப் பயன்படுத்த முடியும். GCC 13 இல் ரஸ்ட் செயல்படுத்தல் பீட்டா நிலையில் இருக்கும், இயல்பாக இயக்கப்படாது.

ஆதாரம்: opennet.ru

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