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

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

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

  • பயன்படுத்தி உருவாக்க rustc கம்பைலர் புதுப்பிக்கப்பட்டது LLVM 11 (துரு பயன்கள் எல்.எல்.வி.எம் குறியீடு உருவாக்கம்) அதே நேரத்தில், பதிப்பு 8 வரை பழைய எல்.எல்.வி.எம்களுடன் உருவாக்கும் திறன் தக்கவைக்கப்படுகிறது, ஆனால் முன்னிருப்பாக (இன் rust-lang/llvm-project) இப்போது LLVM 11 ஐப் பயன்படுத்துகிறது. LLVM 11 வரும் நாட்களில் வெளியிடப்படும் என்று எதிர்பார்க்கப்படுகிறது.
  • விண்டோஸ் இயங்குதளத்தில், "-C கண்ட்ரோல்-ஃப்ளோ-கார்டு" கொடியைப் பயன்படுத்தி செயல்படுத்தப்பட்ட கட்டுப்பாட்டு ஓட்ட ஒருமைப்பாடு சோதனைகளை (கண்ட்ரோல் ஃப்ளோ கார்டு) செயல்படுத்துவதற்கான ஆதரவை rustc கம்பைலர் வழங்குகிறது. மற்ற தளங்களில் இந்தக் கொடி தற்போது புறக்கணிக்கப்பட்டுள்ளது.
  • APIகளின் புதிய பகுதியானது, நிலைப்படுத்தப்பட்டவை உட்பட, நிலையான வகைக்கு மாற்றப்பட்டது
    அடையாளம்:: new_raw,
    வரம்பு:: is_empty,
    வரம்பு உள்ளடக்கியது:: is_empty,
    முடிவு::as_deref,
    முடிவு::as_deref_mut,
    Vec::கசிவு,
    சுட்டி::offset_from,
    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

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