ரஸ்ட் 1.53 வெளியிடப்பட்டது. லினக்ஸ் கர்னலில் ரஸ்ட் ஆதரவைச் சேர்ப்பதற்கு Google நிதியளிக்கும்

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

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

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

  • வரிசைகளுக்கு, IntoIterator பண்பு செயல்படுத்தப்பட்டது, இது வரிசை உறுப்புகளின் மறு செய்கையை மதிப்புகள் மூலம் ஒழுங்கமைக்க உங்களை அனுமதிக்கிறது: i க்கு [1, 2, 3] { .. }

    மறு செய்கைகளை ஏற்கும் முறைகளுக்கு அணிவரிசைகளை அனுப்புவதும் சாத்தியமாகும், எடுத்துக்காட்டாக: set = BTreeSet::from_iter([1, 2, 3]); for (a, b) in some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    முன்னதாக, IntoIterator வரிசை குறிப்புகளுக்கு மட்டுமே செயல்படுத்தப்பட்டது, அதாவது. மதிப்புகளை மீண்டும் மீண்டும் செய்ய குறிப்புகள் (“&[1, 2, 3]”) அல்லது “[1, 2, 3].iter()” பயன்படுத்த வேண்டும். array.into_iter() இலிருந்து (&array).into_iter() க்கு முந்தைய கம்பைலர் மாற்றத்தால் ஏற்பட்ட இணக்கத்தன்மை சிக்கல்களால் வரிசைகளுக்கான IntoIterator செயல்படுத்துவது தடைபட்டது. இந்தச் சிக்கல்கள் ஒரு தீர்வின் மூலம் தீர்க்கப்பட்டன - IntoIterator பண்பைச் செயல்படுத்தாதது போல், கம்பைலர் array.into_iter() ஐ (&array).into_iter() ஆக மாற்றுவதைத் தொடரும், ஆனால் ".into_iter(ஐப் பயன்படுத்தி) முறையை அழைக்கும்போது மட்டுமே. )" தொடரியல் மற்றும் "[1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3]) வடிவத்தில் உள்ள அழைப்புகளைத் தொடாமல் )".

  • "|" வெளிப்பாடுகளை குறிப்பிட முடியும் (தர்க்கரீதியான அல்லது செயல்பாடு) வார்ப்புருவின் எந்தப் பகுதியிலும், எடுத்துக்காட்டாக, “சில(1) | சில(2)" நீங்கள் இப்போது "சில(1 | 2)" என்று எழுதலாம்: போட்டி முடிவு { சரி(சில(1 | 2)) => { ..} பிழை(MyError {வகை: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. }}
  • யூனிகோட் UAX 31 விவரக்குறிப்பில் வரையறுக்கப்பட்ட தேசிய எழுத்துக்கள் உட்பட, ஆனால் ஈமோஜி எழுத்துக்களைத் தவிர்த்து, அடையாளங்காட்டிகளில் ASCII அல்லாத எழுத்துகளைப் பயன்படுத்த அனுமதிக்கப்படுகிறது. நீங்கள் வெவ்வேறு ஆனால் ஒரே மாதிரியான எழுத்துக்களைப் பயன்படுத்தினால், கம்பைலர் ஒரு எச்சரிக்கையை வெளியிடும். const BLÅHAJ: &str = "🦈"; struct 人 {名字: சரம், } α = 1; letÓos = 2; எச்சரிக்கை: அடையாளங்காட்டி ஜோடி 's' மற்றும் 's' இடையே குழப்பமாக கருதப்படுகிறது
  • பின்வரும் நிலைப்படுத்தப்பட்டவை உட்பட, APIகளின் புதிய பகுதி நிலையான வகைக்கு மாற்றப்பட்டது:
    • வரிசை:: from_ref
    • வரிசை::from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet:: தக்கவைத்துக்கொள்
    • BTreeMap:: தக்கவைத்துக்கொள்
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • பிழைத்திருத்தம்::முடிவு_நான்_எக்ஸ்ஹாஸ்டிவ்
    • காலம்::ZERO
    • காலம்:: MAX
    • காலம்:: is_zero
    • காலம்::நிறைவு_சேர்க்க
    • காலம்::நிறைவு_உப
    • காலம்::நிறைவு_முல்
    • f32:: is_subnormal
    • f64:: is_subnormal
    • வரிசைகளுக்கான IntoIterator
    • {integer}::BITS
    • io::பிழை::ஆதரிக்கப்படவில்லை
    • பூஜ்யம் அல்லாத*::முன்னணி_பூஜ்ஜியங்கள்
    • பூஜ்யம் அல்லாத*:: trailing_zeros
    • விருப்பம்::செருகு
    • ஆர்டர் செய்தல்::is_eq
    • ஆர்டர் செய்தல்::is_ne
    • ஆர்டர் செய்தல்::is_lt
    • ஆர்டர் செய்தல்::is_gt
    • ஆர்டர் செய்தல்::is_le
    • ஆர்டர் செய்தல்::is_ge
    • OsStr::make_ascii_lovercase
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_சிறிய எழுத்து
    • OsStr:: to_ascii_percase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • எட்டிப்பார்க்கக்கூடியது::peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • ஸ்லைஸ்::IterMut::as_slice
    • ஸ்லைஸ்::IterMut க்கான AsRef<[T]>
    • (Bound , கட்டப்பட்டது )
    • Vec::உள்ளிருந்து_நீட்டு
  • wasm64-unknown-unknown தளத்திற்கான மூன்றாம் நிலை ஆதரவு செயல்படுத்தப்பட்டது. மூன்றாம் நிலை அடிப்படை ஆதரவை உள்ளடக்கியது, ஆனால் தானியங்கு சோதனை இல்லாமல், அதிகாரப்பூர்வ உருவாக்கங்களை வெளியிடுதல் அல்லது குறியீட்டை உருவாக்க முடியுமா என்பதைச் சரிபார்த்தல்.
  • Git களஞ்சியத்தின் (HEAD) பிரதான கிளைக்கு "முதன்மை" என்ற பெயரை இயல்பாக பயன்படுத்த சரக்கு தொகுப்பு மேலாளர் நகர்த்தப்பட்டுள்ளார். மாஸ்டருக்குப் பதிலாக மெயின் என்ற பெயரைப் பயன்படுத்தும் களஞ்சியங்களில் ஹோஸ்ட் செய்யப்பட்ட சார்புகள் இனி கிளை = "முக்கிய" கட்டமைக்கப்பட வேண்டியதில்லை.
  • கம்பைலரில், LLVM இன் குறைந்தபட்ச பதிப்பிற்கான தேவைகள் LLVM 10 ஆக உயர்த்தப்படுகின்றன.

கூடுதலாக, ரஸ்ட் மொழியில் கூறுகளை உருவாக்குவதற்கான கருவிகளின் லினக்ஸ் கர்னலில் ஒருங்கிணைப்பை மேம்படுத்துவதற்கான நிதியை வழங்குவதை நாம் கவனிக்கலாம். லெட்ஸ் என்க்ரிப்ட் திட்டத்தின் நிறுவனரான ஐஎஸ்ஆர்ஜி அமைப்பின் (இன்டர்நெட் செக்யூரிட்டி ரிசர்ச் குரூப்) அனுசரணையில் ப்ரோஸ்ஸிமோ திட்டத்தின் கட்டமைப்பிற்குள் பணி மேற்கொள்ளப்படும், மேலும் இது பாதுகாப்பை அதிகரிக்க HTTPS மற்றும் தொழில்நுட்பங்களை மேம்படுத்துகிறது. இணையதளம். Rust-for-Linux திட்டத்தின் ஆசிரியரான மிகுவல் ஓஜெடாவின் பணிக்காக கூகுள் இந்த நிதியை வழங்கும். முன்னதாக, ISRG மற்றும் Google ஆகியவை கர்ல் பயன்பாட்டிற்கான மாற்று HTTP பின்தளத்தை உருவாக்குவதற்கும் Apache http சேவையகத்திற்கான புதிய TLS தொகுதியை உருவாக்குவதற்கும் ஏற்கனவே நிதியளித்துள்ளன.

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

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

ஆதாரம்: opennet.ru

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