கணினி நிரலாக்க மொழியான ரஸ்ட் 1.57 இன் வெளியீடு, மொஸில்லா திட்டத்தால் நிறுவப்பட்டது, ஆனால் இப்போது சுயாதீனமான இலாப நோக்கற்ற அமைப்பான ரஸ்ட் அறக்கட்டளையின் அனுசரணையில் உருவாக்கப்பட்டது, வெளியிடப்பட்டது. மொழி நினைவக பாதுகாப்பில் கவனம் செலுத்துகிறது, தானியங்கி நினைவக நிர்வாகத்தை வழங்குகிறது, மேலும் குப்பை சேகரிப்பான் அல்லது இயக்க நேரத்தைப் பயன்படுத்தாமல் உயர் பணி இணைநிலையை அடைவதற்கான வழிமுறைகளை வழங்குகிறது (இயக்க நேரம் நிலையான நூலகத்தின் அடிப்படை துவக்கம் மற்றும் பராமரிப்புக்கு குறைக்கப்படுகிறது).
ரஸ்டின் தானியங்கி நினைவக மேலாண்மை சுட்டிகளை கையாளும் போது ஏற்படும் பிழைகளை நீக்குகிறது மற்றும் குறைந்த அளவிலான நினைவக கையாளுதலில் இருந்து எழும் சிக்கல்களிலிருந்து பாதுகாக்கிறது, அதாவது நினைவகப் பகுதியை விடுவித்த பிறகு அணுகுவது, பூஜ்ய சுட்டிக்காட்டி குறைபாடுகள், இடையக மீறல்கள் போன்றவை. நூலகங்களை விநியோகிக்க, அசெம்பிளியை உறுதிப்படுத்த மற்றும் சார்புகளை நிர்வகிக்க, திட்டம் சரக்கு தொகுப்பு மேலாளரை உருவாக்குகிறது. நூலகங்களை வழங்குவதற்கு crates.io களஞ்சியம் துணைபுரிகிறது.
முக்கிய கண்டுபிடிப்புகள்:
- "பீதி!" மேக்ரோவின் பயன்பாடு உறுதிப்படுத்தப்பட்டுள்ளது. "const fn" அறிவிப்புகள் போன்ற தொகுப்பின் போது உருவாக்கப்பட்ட சூழல்களில். கூடுதலாக, "பீதி!" const அறிவிப்புகள் "உறுதிப்படுத்து!" மற்றும் வேறு சில நிலையான நூலக APIகள். நிலைப்படுத்தல் இன்னும் முழு வடிவமைப்பு உள்கட்டமைப்பை உள்ளடக்கியதாக இல்லை, எனவே அதன் தற்போதைய வடிவத்தில் "மேக்ரோ!" நிலையான சரங்களுடன் மட்டுமே பயன்படுத்த முடியும் (பீதி!(“...")) அல்லது மாற்றும் போது "&str" என்ற ஒற்றை இடைக்கணிப்பு மதிப்புடன் (பீதி!("{}", அ)), இது "{ஐ மாற்றுவதற்கு மட்டுப்படுத்தப்பட வேண்டும். }" குறிப்பான்கள் மற்றும் பிற வகைகளை வடிவமைக்காமல். எதிர்காலத்தில், நிலையான சூழல்களில் மேக்ரோக்களின் பொருந்தக்கூடிய தன்மை விரிவுபடுத்தப்படும், ஆனால் உறுதிப்படுத்தப்பட்ட திறன்கள் தொகுத்தல் கட்டத்தில் உறுதியான காசோலைகளைச் செய்ய ஏற்கனவே போதுமானவை: const _: () = assert!(std::mem::size_of:: () == 64); const _: () = உறுதி!(std::mem::size_of:: () == 8);
- சரக்கு தொகுப்பு மேலாளர் தன்னிச்சையான பெயர்களுடன் சுயவிவரங்களைப் பயன்படுத்த அனுமதிக்கிறது, இது "dev", "release", "test" மற்றும் "bench" ஆகியவற்றுடன் மட்டுப்படுத்தப்படவில்லை. எடுத்துக்காட்டாக, இறுதி தயாரிப்பு கூட்டங்கள் உருவாக்கப்படும் போது மட்டுமே இணைக்கும் கட்டத்தில் (LTO) மேம்படுத்தலை இயக்க, நீங்கள் Cargo.toml இல் “உற்பத்தி” சுயவிவரத்தை உருவாக்கி அதில் “lto = true” கொடியைச் சேர்க்கலாம். இருப்பினும், உங்கள் சொந்த சுயவிவரங்களை வரையறுக்கும்போது, இயல்புநிலை அமைப்புகளைப் பெற, ஏற்கனவே உள்ள சுயவிவரத்தை நீங்கள் குறிப்பிட வேண்டும். கீழே உள்ள உதாரணம், "lto = true" கொடியைச் சேர்ப்பதன் மூலம் "வெளியீடு" சுயவிவரத்தை நிறைவு செய்யும் "தயாரிப்பு" சுயவிவரத்தை உருவாக்குகிறது. "--profile production" விருப்பத்துடன் சரக்குகளை அழைப்பதன் மூலம் சுயவிவரமே செயல்படுத்தப்படுகிறது, மேலும் சட்டசபை கலைப்பொருட்கள் "இலக்கு/உற்பத்தி" கோப்பகத்தில் வைக்கப்படும். [profile.production] inherits = "release" lto = true
- Vec, String, HashMap, HashSet மற்றும் VecDeque வகைகளுக்கான try_reserve இன் பயன்பாடு நிலைப்படுத்தப்பட்டுள்ளது, இது நினைவக ஒதுக்கீடு செயல்பாடுகளின் அதிர்வெண்ணைக் குறைப்பதற்கும் தவிர்க்கவும் கொடுக்கப்பட்ட வகையின் குறிப்பிட்ட எண்ணிக்கையிலான உறுப்புகளுக்கு முன்கூட்டியே இடத்தை ஒதுக்க அனுமதிக்கிறது. நினைவகம் இல்லாததால் செயல்பாட்டின் போது செயலிழக்கிறது.
- "m!{ .. }.method()" மற்றும் "m!{ .. }?" போன்ற வெளிப்பாடுகளில் சுருள் பிரேஸ்களைக் கொண்ட மேக்ரோக்களைக் குறிப்பிட அனுமதிக்கப்படுகிறது.
- கோப்பு::read_to_end மற்றும் read_to_string செயல்பாடுகளின் செயலாக்கம் உகந்ததாக உள்ளது.
- யூனிகோட் விவரக்குறிப்புக்கான ஆதரவு பதிப்பு 14.0 க்கு புதுப்பிக்கப்பட்டது.
- திரும்பும் மதிப்பு புறக்கணிக்கப்பட்டால் எச்சரிக்கையை வழங்க "#[கட்டாயம்_பயன்படுத்த வேண்டும்]" எனக் குறிக்கப்பட்ட செயல்பாடுகளின் எண்ணிக்கையை விரிவுபடுத்தியது, இது ஒரு செயல்பாடு புதிய மதிப்பைத் தருவதற்குப் பதிலாக மதிப்புகளை மாற்றும் எனக் கருதுவதால் ஏற்படும் பிழைகளைக் கண்டறிய உதவுகிறது.
- libgccjit ஐப் பயன்படுத்தி குறியீடு உருவாக்கத்திற்கான சோதனைப் பின்தளம் சேர்க்கப்பட்டது.
- API இன் ஒரு புதிய பகுதி நிலையான வகைக்கு நகர்த்தப்பட்டது, இதில் பண்புகளின் முறைகள் மற்றும் செயலாக்கங்கள் உறுதிப்படுத்தப்பட்டுள்ளன:
- [டி; N]::as_mut_slice
- [டி; N]::ஆஸ்_ஸ்லைஸ்
- சேகரிப்புகள்::ReserveError முயற்சிக்கவும்
- HashMap:: try_reserve
- HashSet:: try_reserve
- சரம்:: முயற்சி_ரிசர்வ்
- சரம்:: try_reserve_exact
- Vec:: try_reserve
- Vec:: try_reserve_exact
- VecDeque:: try_reserve
- VecDeque:: try_reserve_exact
- இட்டரேட்டர்::map_while
- iter::MapWhile
- proc_macro:: is_available
- கட்டளை:: get_program
- கட்டளை::get_args
- கட்டளை::get_envs
- கட்டளை:: get_current_dir
- CommandArgs
- CommandEnvs
- "const" பண்புக்கூறு, இது மாறிலிகளுக்குப் பதிலாக எந்தச் சூழலிலும் பயன்படுத்தப்படுமா என்பதைத் தீர்மானிக்கிறது, இது செயல்பாட்டுக் குறிப்பில் பயன்படுத்தப்படுகிறது::unreachable_unchecked.
- armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi மற்றும் armcv7a-க்கு மூன்றாம் நிலை ஆதரவு செயல்படுத்தப்பட்டுள்ளது. solid_asp3-eabihf இயங்குதளங்கள். மூன்றாம் நிலை அடிப்படை ஆதரவை உள்ளடக்கியது, ஆனால் தானியங்கு சோதனை இல்லாமல், அதிகாரப்பூர்வ உருவாக்கங்களை வெளியிடுதல் அல்லது குறியீட்டை உருவாக்க முடியுமா என்பதைச் சரிபார்த்தல்.
ஆதாரம்: opennet.ru
