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

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

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

முக்கிய புதுமைகள்:

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

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

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

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

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

  • உறுதிப்படுத்தப்பட்ட கையொப்பமிடப்பட்ட மற்றும் கையொப்பமிடப்படாத அணு முழு எண் வகைகள் 8 முதல் 64 பிட்கள் வரை (உதாரணமாக, அணுஉ8), அத்துடன் கையொப்பமிடப்பட்ட வகைகள் ZeroI அல்லாத[8|16|32|64|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" உருவாக்க விருப்பத்தைக் குறிப்பிடுவதன் மூலம் இணைக்கும் கட்டத்தில் மேம்படுத்தல்களை இயக்கும் திறன் சேர்க்கப்பட்டது.

ஆதாரம்: opennet.ru

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