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

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

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

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

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

fn முக்கிய() {
xs = [0; 34];
println!("{:?}", xs);
}

  • குறுகிய தடயங்களின் வெளியீடு (பேக்டிரேஸ்), அவசரகால சூழ்நிலைகளில் வெளியீடு. பெரும்பாலான சூழ்நிலைகளில் ஆர்வமில்லாத, ஆனால் வெளியீட்டை ஒழுங்கீனம் செய்யும் மற்றும் சிக்கலின் முதன்மை காரணங்களிலிருந்து கவனத்தை திசை திருப்பும் கூறுகள் தடயத்திலிருந்து விலக்கப்படுகின்றன. முழுத் தடத்தை வழங்க, "RUST_BACKTRACE=full" என்ற சூழல் மாறியைப் பயன்படுத்தலாம். உதாரணமாக, குறியீட்டிற்கு

fn முக்கிய() {
பீதி!();
}

முன்னதாக, சுவடு 23 நிலைகளில் வெளியிடப்பட்டது, ஆனால் இப்போது அது 3 நிலைகளாகக் குறைக்கப்படும், இது சாரத்தை உடனடியாகப் புரிந்துகொள்ள உங்களை அனுமதிக்கிறது:

நூல் 'முக்கிய' 'வெளிப்படையான பீதி', src/main.rs:2:5 இல் பீதியடைந்தது
ஸ்டேக் பேக்டிரேஸ்:
0: std::panicking::begin_panic
/rustc/d…d75a/library/std/src/panicking.rs:497 இல்
1: விளையாட்டு மைதானம்:: முக்கிய
./src/main.rs:2 இல்
2: core::ops::function::FnOnce::call_one
/rustc/d…d75a/library/core/src/ops/function.rs:227 இல்

  • LLVM 11 ஐப் பயன்படுத்தி உருவாக்க rustc கம்பைலர் புதுப்பிக்கப்பட்டது (Rust ஆனது LLVM ஐ குறியீடு உருவாக்கத்திற்கான பின்தளமாகப் பயன்படுத்துகிறது). அதே நேரத்தில், பதிப்பு 8 வரை, பழைய LLVM உடன் உருவாக்குவதற்கான திறன் தக்கவைக்கப்படுகிறது, ஆனால் முன்னிருப்பாக (rust-lang/llvm-project இல்) LLVM 11 இப்போது பயன்படுத்தப்படுகிறது. LLVM 11 இன் வெளியீடு வரும் காலங்களில் எதிர்பார்க்கப்படுகிறது. நாட்களில்.
  • விண்டோஸ் இயங்குதளத்தில், rustc கம்பைலர், "-C கண்ட்ரோல்-ஃப்ளோ-கார்டு" கொடியைப் பயன்படுத்தி செயல்படுத்தப்பட்ட கட்டுப்பாட்டு ஓட்ட ஒருமைப்பாடு சோதனைகளை (கண்ட்ரோல் ஃப்ளோ கார்டு) செயல்படுத்துவதற்கான ஆதரவை வழங்குகிறது. மற்ற தளங்களில் இந்தக் கொடி தற்போது புறக்கணிக்கப்பட்டுள்ளது.
  • நிலைப்படுத்தப்பட்ட அடையாளம்::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from உள்ளிட்ட API இன் புதிய பகுதி நிலையான வகைக்கு மாற்றப்பட்டது. , f32:: TAU மற்றும் f64::TAU.
  • மாறிலிகளுக்குப் பதிலாக எந்தச் சூழலிலும் அதைப் பயன்படுத்துவதற்கான சாத்தியத்தை நிர்ணயிக்கும் "const" பண்புக்கூறு, முறைகளில் பயன்படுத்தப்படுகிறது:
    • பூஜ்ஜியத்தைத் தவிர மற்ற அனைத்து முழு எண்களுக்கும் புதியது;
    • அனைத்து முழு எண்களுக்கும் checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub மற்றும் saturating_mul;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_loorcase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace மற்றும் வகைகளை
  • FreeBSD க்கு, FreeBSD 11.4 இலிருந்து கருவித்தொகுப்பு பயன்படுத்தப்படுகிறது (FreeBSD 10 LLVM 11 ஐ ஆதரிக்காது).

இருந்து எடுக்கப்பட்டது opennet.ru

ஆதாரம்: linux.org.ru

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