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

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

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

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

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

    ~/.cargo/config இல் வெளிப்புறப் பதிவேட்டைச் சேர்க்க
    "[பதிவுகள்]" பிரிவில் "my-registry" என்ற புதிய விருப்பம் வழங்கப்படுகிறது, மேலும் "[சார்புகள்]" பிரிவில் Cargo.toml இல் சார்புகளில் வெளிப்புறப் பதிவேட்டைக் குறிப்பிட "மற்ற-கிரேட்" விருப்பம் சேர்க்கப்பட்டுள்ளது. கூடுதல் பதிவேட்டில் இணைக்க, அங்கீகார டோக்கனை ~/.cargo/credentials கோப்பில் வைத்து கட்டளையை இயக்கவும்.
    "சரக்கு உள்நுழைவு --registry=my-registry" மற்றும் ஒரு தொகுப்பை வெளியிட -
    "சரக்கு வெளியீடு -பதிவு=எனது-பதிவு";

  • “?” ஆபரேட்டரைப் பயன்படுத்துவதற்கான முழு ஆதரவும் சேர்க்கப்பட்டது. டாக்டெஸ்ட்களில், இது ஆவணங்களிலிருந்து எடுத்துக்காட்டுக் குறியீட்டை சோதனைகளாகப் பயன்படுத்த உங்களை அனுமதிக்கிறது. முன்பு ஆபரேட்டர்
    "?" "fn main()" செயல்பாட்டின் முன்னிலையில் அல்லது "#[test]" செயல்பாடுகளில் மட்டுமே சோதனைச் செயல்பாட்டின் போது பிழைகளைக் கையாளப் பயன்படும்;

  • செயல்முறை மேக்ரோக்களைப் பயன்படுத்தி வரையறுக்கப்பட்ட தனிப்பயன் பண்புக்கூறுகளில், தன்னிச்சையான டோக்கன்களைப் பயன்படுத்த முடியும் (“#[attr($tokens)]”, “#[attr[$tokens]] மற்றும் #[attr{$tokens}]”) . முன்பு, தனிமங்களை ஒரு மரம்/சுழற்சி வடிவில் சரம் எழுத்துக்களைப் பயன்படுத்தி மட்டுமே குறிப்பிட முடியும், எடுத்துக்காட்டாக “#[foo(bar, baz(quux, foo = “bar”)))]”, ஆனால் இப்போது கணக்கீடுகளைப் பயன்படுத்த முடியும் (' #[வரம்பு(0. .10)]') மற்றும் "#[கவுண்ட்(டி: மைட்ரெய்ட்)]" போன்ற கட்டுமானங்கள்;
  • TryFrom மற்றும் TryInto பண்புகள் நிலைப்படுத்தப்பட்டு, பிழை கையாளுதலுடன் வகை மாற்றங்களை அனுமதிக்கிறது. எடுத்துக்காட்டாக, from_be_bytes போன்ற முழு எண் வகைகளைக் கொண்ட முறைகள் வரிசைகளை உள்ளீடாகப் பயன்படுத்துகின்றன, ஆனால் தரவு பெரும்பாலும் ஸ்லைஸ் வகையிலேயே வருகிறது, மேலும் வரிசைகள் மற்றும் ஸ்லைஸ்களுக்கு இடையில் மாற்றுவது கைமுறையாகச் செய்வது சிக்கலானது. புதிய குணாதிசயங்களின் உதவியுடன், குறிப்பிட்ட செயல்பாட்டை .try_into() க்கு அழைப்பதன் மூலம் பறக்க முடியும், எடுத்துக்காட்டாக, “லெட் எண் = u32::from_be_bytes(slice.try_into()?)”. எப்போதும் வெற்றிபெறும் மாற்றங்களுக்கு (உதாரணமாக, வகை u8 இலிருந்து u32 வரை), வெளிப்படையான பயன்பாட்டை அனுமதிக்க ஒரு தவறான பிழை வகை சேர்க்கப்பட்டுள்ளது
    "From" இன் ஏற்கனவே உள்ள அனைத்து செயலாக்கங்களுக்கும் முயற்சிக்கவும்;

  • CommandExt::before_exec செயல்பாடு நிறுத்தப்பட்டது, இது fork() அழைப்பிற்குப் பிறகு ஃபோர்க் செய்யப்பட்ட குழந்தை செயல்முறையின் சூழலில் செயல்படுத்தப்படும் exec-க்கு முன் ஹேண்ட்லரை செயல்படுத்த அனுமதித்தது. இத்தகைய நிலைமைகளின் கீழ், கோப்பு விளக்கங்கள் மற்றும் வரைபட நினைவகப் பகுதிகள் போன்ற பெற்றோர் செயல்முறையின் சில ஆதாரங்கள் நகலெடுக்கப்படலாம், இது வரையறுக்கப்படாத நடத்தை மற்றும் நூலகங்களின் தவறான செயல்பாட்டிற்கு வழிவகுக்கும்.
    before_exec க்கு பதிலாக, CommandExt::pre_exec என்ற பாதுகாப்பற்ற செயல்பாட்டைப் பயன்படுத்த பரிந்துரைக்கப்படுகிறது.

  • 8 முதல் 64 பிட்கள் (உதாரணமாக, AtomicU8), அத்துடன் கையொப்பமிடப்பட்ட வகைகள் NonZeroI[8|16|32|54|128] வரையிலான அளவுடைய கையொப்பமிடப்பட்ட மற்றும் கையொப்பமிடப்படாத அணு முழு எண் வகைகள்.
  • ஏதேனும்::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ​​உட்பட, API இன் புதிய பகுதி நிலையான வகைக்கு நகர்த்தப்பட்டது. ] மற்றும் SystemTime முறைகள் நிலைப்படுத்தப்பட்டுள்ளன ::checked_[add|sub]. iter::from_fn மற்றும் iter:: வாரிசுகளின் செயல்பாடுகள் நிலைப்படுத்தப்பட்டுள்ளன;
  • அனைத்து முழு எண் வகைகளுக்கும், checked_pow, saturating_pow, wrapping_pow மற்றும் overflowing_pow முறைகள் செயல்படுத்தப்படுகின்றன;
  • "-C linker-plugin-lto" உருவாக்க விருப்பத்தைக் குறிப்பிடுவதன் மூலம் இணைக்கும் கட்டத்தில் மேம்படுத்தல்களை இயக்கும் திறனைச் சேர்த்தது (rustc ரஸ்ட் குறியீட்டை LLVM பிட்கோடில் தொகுக்கிறது, இது LTO மேம்படுத்தல்களைப் பயன்படுத்த அனுமதிக்கிறது).

ஆதாரம்: opennet.ru

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