அசெம்பிளி செருகல்களுக்கான ஆதரவுடன் ரஸ்ட் 1.59 நிரலாக்க மொழியின் வெளியீடு

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

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

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

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

  • அசெம்பிளி மொழி செருகல்களைப் பயன்படுத்த முடியும், அவை குறைந்த மட்டத்தில் செயல்படுத்தலைக் கட்டுப்படுத்த வேண்டிய அல்லது சிறப்பு இயந்திர வழிமுறைகளைப் பயன்படுத்தக்கூடிய பயன்பாடுகளில் தேவைப்படுகின்றன. மேக்ரோக்கள் "asm!" ஐப் பயன்படுத்தி அசெம்பிளி செருகல்கள் சேர்க்கப்படுகின்றன. மற்றும் "global_asm!" ரஸ்டில் சரம் மாற்றீடுகளுக்குப் பயன்படுத்தப்படும் பதிவேடுகளுக்குப் பெயரிடுவதற்கு சரம் வடிவமைப்பு தொடரியல் பயன்படுத்துதல். கம்பைலர் x86, x86-64, ARM, AArch64 மற்றும் RISC-V கட்டமைப்புகளுக்கான சட்டசபை வழிமுறைகளை ஆதரிக்கிறது. செருகும் எடுத்துக்காட்டு: std::arch::asm; // ஷிப்ட்களைப் பயன்படுத்தி x ஐ 6 ஆல் பெருக்கவும் மற்றும் சேர்க்கிறது mut x: u64 = 4; பாதுகாப்பற்ற {asm!( "mov {tmp}, {x}", "shl {tmp}, 1", "shl {x}, 2", "சேர் {x}, {tmp}", x = inout(reg ) x, tmp = out(reg) _, ); } assert_eq!(x, 4 * 6);
  • சிதைக்கப்பட்ட (இணை) பணிகளுக்கான ஆதரவு சேர்க்கப்பட்டது, இதில் வெளிப்பாட்டின் இடது பக்கத்தில் பல பண்புகள், துண்டுகள் அல்லது கட்டமைப்புகள் குறிப்பிடப்படுகின்றன. உதாரணமாக: விடு (a, b, c, d, e); (a, b) = (1, 2); [c, .., d, _] = [1, 2, 3, 4, 5]; ஸ்ட்ரக்ட் {இ, ..} = ஸ்ட்ரக்ட் {இ: 5, எஃப்: 3}; assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);
  • கான்ஸ்ட் ஜெனரிக்ஸிற்கான இயல்புநிலை மதிப்புகளைக் குறிப்பிடும் திறன் வழங்கப்பட்டுள்ளது: struct ArrayStorage {arr: [டி; N], } impl ArrayStorage {fn new(a: T, b: T) -> ArrayStorage { ArrayStorage {arr: [a, b], } } }
  • கம்பைலரில் உள்ள பிழைகள் காரணமாக செயலாக்கப்படும் சார்புகளில் தவறான கட்டமைப்புகளைப் பயன்படுத்துவது பற்றிய எச்சரிக்கைகளை சரக்கு தொகுப்பு மேலாளர் வழங்குகிறது (உதாரணமாக, ஒரு பிழை காரணமாக, பேக் செய்யப்பட்ட கட்டமைப்புகளின் புலங்கள் பாதுகாப்பான தொகுதிகளில் கடன் வாங்க அனுமதிக்கப்பட்டன). ரஸ்டின் எதிர்கால பதிப்பில் இதுபோன்ற கட்டுமானங்கள் இனி ஆதரிக்கப்படாது.
  • சரக்கு மற்றும் rustc ஆனது பிழைத்திருத்த தரவு (ஸ்ட்ரிப் = "debuginfo") மற்றும் குறியீடுகள் (ஸ்ட்ரிப் = "சின்னங்கள்") ஆகியவற்றிலிருந்து நீக்கப்பட்ட இயங்கக்கூடிய கோப்புகளை உருவாக்குவதற்கான ஒரு உள்ளமைக்கப்பட்ட திறனைக் கொண்டுள்ளது. Cargo.toml இல் உள்ள "ஸ்ட்ரிப்" அளவுரு மூலம் சுத்தம் செய்யும் அமைப்பு செயல்படுத்தப்படுகிறது: [profile.release] strip = "debuginfo", "சின்னங்கள்"
  • அதிகரிக்கும் தொகுப்பு இயல்பாகவே முடக்கப்பட்டுள்ளது. காரணம், கம்பைலரில் உள்ள பிழைக்கான தற்காலிக தீர்வாகக் கூறப்படுகிறது, இது செயலிழப்புகள் மற்றும் டீரியலைசேஷன் பிழைகளுக்கு வழிவகுக்கிறது. பிழைத்திருத்தம் ஏற்கனவே தயாரிக்கப்பட்டு, அடுத்த வெளியீட்டில் சேர்க்கப்படும். அதிகரிக்கும் தொகுப்பை திரும்பப் பெற, நீங்கள் சூழல் மாறி RUSTC_FORCE_INCREMENTAL=1 ஐப் பயன்படுத்தலாம்.
  • API இன் ஒரு புதிய பகுதி நிலையான வகைக்கு நகர்த்தப்பட்டது, இதில் பண்புகளின் முறைகள் மற்றும் செயலாக்கங்கள் உறுதிப்படுத்தப்பட்டுள்ளன:
    • std::thread::available_parallelism
    • முடிவு:: நகலெடுக்கப்பட்டது
    • முடிவு::குளோன் செய்யப்பட்டது
    • arch::asm!
    • arch ::global_asm!
    • ops::ControlFlow::is_break
    • ops::ControlFlow::is_continue
    • u8 க்கு முயற்சி
    • char::TryFromCharError (குளோன், பிழைத்திருத்தம், காட்சி, PartialEq, நகல், Eq, பிழை)
    • iter::zip
    • NonZeroU8:: is_power_of_to
    • NonZeroU16:: is_power_of_to
    • NonZeroU32:: is_power_of_to
    • NonZeroU64:: is_power_of_to
    • NonZeroU128:: is_power_of_to
    • ToLowercase கட்டமைப்பிற்கான DoubleEndedIterator
    • Touppercase கட்டமைப்பிற்கான DoubleEndedIterator
    • முயற்சியிலிருந்து<&mut [T]> [T; N]
    • ஒருமுறை கட்டமைப்பிற்கு UnwindSafe
    • ஒருமுறை RefUnwindSafe
    • armv8 நியான் ஆதரவு செயல்பாடுகள் aarch64க்கான கம்பைலரில் கட்டமைக்கப்பட்டுள்ளன
  • மாறிலிகளுக்குப் பதிலாக எந்தச் சூழலிலும் பயன்படுத்துவதற்கான சாத்தியத்தை நிர்ணயிக்கும் "const" பண்புக்கூறு செயல்பாடுகளில் பயன்படுத்தப்படுகிறது:
    • mem::MaybeUninit::as_ptr
    • mem::MaybeUninit::assume_init
    • mem::MaybeUninit::assume_init_ref
    • ffi::CStr::இருந்து_பைட்டுகள்_உடன்_நுல்_தேர்வு செய்யப்படவில்லை

ஆதாரம்: opennet.ru

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