ዝገት 1.58 የፕሮግራም አወጣጥ ቋንቋ መለቀቅ

በሞዚላ ፕሮጀክት የተመሰረተው፣ አሁን ግን በገለልተኛ ለትርፍ ያልተቋቋመ ድርጅት Rust Foundation ስር የተገነባው Rust 1.58 አጠቃላይ ዓላማ የፕሮግራም አወጣጥ ቋንቋ ታትሟል። ቋንቋው በማህደረ ትውስታ ደህንነት ላይ ያተኩራል፣ አውቶማቲክ የማህደረ ትውስታ አስተዳደርን ይሰጣል፣ እና ቆሻሻ ሰብሳቢ ወይም የሩጫ ጊዜ ሳይጠቀሙ ከፍተኛ ተግባርን ትይዩ ለማድረግ የሚያስችል ዘዴን ይሰጣል (የአሂድ ጊዜ ወደ መሰረታዊ ጅምር እና መደበኛ ቤተ-መጽሐፍት ጥገና)።

የሩስት አውቶማቲክ ማህደረ ትውስታ አስተዳደር ጠቋሚዎችን በሚጠቀሙበት ጊዜ ስህተቶችን ያስወግዳል እና ከዝቅተኛ ደረጃ ማህደረ ትውስታ ማጭበርበር ከሚመጡ ችግሮች ይጠብቃል ፣ ለምሳሌ ከተለቀቀ በኋላ የማህደረ ትውስታ ክልል መድረስ ፣ ባዶ ጠቋሚዎች ፣ ቋት መጨናነቅ ፣ ወዘተ. ቤተ መፃህፍትን ለማሰራጨት፣ መሰብሰብን ለማረጋገጥ እና ጥገኞችን ለማስተዳደር ፕሮጀክቱ የካርጎ ፓኬጅ ስራ አስኪያጅን በማዘጋጀት ላይ ነው። የ crates.io ማከማቻው ቤተ-መጻሕፍትን ለማስተናገድ ይደገፋል።

ዋና ፈጠራዎች፡-

  • በመስመር ፎርማት ብሎኮች ውስጥ፣ ከዚህ ቀደም ካለው መስመር በኋላ በቁጥር እና በስም የተዘረዘሩ ተለዋዋጮችን የመተካት ችሎታ በተጨማሪ፣ ወደ መስመሩ "ለይቶ" የሚለውን አገላለጽ በመጨመር የዘፈቀደ መለያዎችን የመተካት ችሎታ ተግባራዊ ይሆናል። ለምሳሌ፡// ከዚህ ቀደም የሚደገፉ ግንባታዎች፡ println!("ሄሎ፣ {}!"፣ get_person()); println!("ጤና ይስጥልኝ {0}!"፣ ማግኘት_ሰው()); println! ("ሄሎ፣ {ሰው}!"፣ ሰው = ማግኘት_ሰው()); // አሁን መፍቀድ ሰው = get_person (); println! ("ሄሎ፣ {ሰው}!");

    መለያዎች እንዲሁ በቀጥታ በቅርጸት አማራጮች ውስጥ ሊገለጹ ይችላሉ። ይሁን (ስፋት፣ ትክክለኛነት) = get_format (); ለ (ስም ፣ ነጥብ) በget_scores () {println!("{name}: {score:width$.precision$}"); }

    አዲሱ ምትክ የሕብረቁምፊ ቅርጸት ፍቺን በሚደግፉ ሁሉም ማክሮዎች ውስጥ ይሰራል፣ ከ"ሽብር!" በ 2015 እና 2018 የዝገት ቋንቋ ስሪቶች ውስጥ ፣ በፍርሃት! ("{ident}") እንደ መደበኛ ሕብረቁምፊ (በ Rust 2021 ውስጥ መተካቱ ይሠራል)።

  • የ std ባህሪ :: ሂደት :: የትእዛዝ መዋቅር በዊንዶውስ ፕላትፎርም ላይ ተቀይሯል ስለዚህ ትዕዛዞችን ሲፈጽም, ለደህንነት ሲባል, አሁን ባለው ማውጫ ውስጥ ሊተገበሩ የሚችሉ ፋይሎችን አይፈልግም. አሁን ያለው ማውጫ አልተካተተም ምክንያቱም ፕሮግራሞች በማይታመኑ ማውጫዎች (CVE-2021-3013) ውስጥ የሚሄዱ ከሆነ ተንኮል አዘል ኮድ ለማስፈጸም ሊያገለግል ይችላል። አዲሱ ተፈፃሚ ማወቂያ አመክንዮ የ Rust ማውጫዎችን፣ የመተግበሪያውን ማውጫ፣ የዊንዶውስ ሲስተም ማውጫን እና በ PATH አካባቢ ተለዋዋጭ ውስጥ የተገለጹትን ማውጫዎች መፈለግን ያካትታል።
  • የመመለሻ ዋጋው ችላ ከተባለ ማስጠንቀቂያ ለመስጠት መደበኛው ቤተ-መጽሐፍት "#[መጠቀም_ያለበት]" የሚል ምልክት የተደረገባቸው ተግባራትን አስፍቷል፣ ይህም አንድ ተግባር አዲስ እሴት ከመመለስ ይልቅ እሴቶችን ይለውጣል ተብሎ በመገመት የተፈጠሩ ስህተቶችን ለመለየት ይረዳል።
  • የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
    • ሜታዳታ ::ሲምሊንክ ነው።
    • መንገድ ::ሲምሊንክ ነው።
    • {ኢንቲጀር} :: saturating_div
    • አማራጭ::የማይጠቀለል_ያልተረጋገጠ
    • ውጤት::መጠቅለል_ያልተረጋገጠ
    • ውጤት::መጠቅለል_ኤር_ያልተረጋገጠ
  • ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን የሚወስነው የ"const" ባህሪ በተግባሮች ውስጥ ጥቅም ላይ ይውላል።
    • ቆይታ:: አዲስ::
    • የሚፈጀው ጊዜ:: የተረጋገጠ_አክል
    • የሚፈጀው ጊዜ :: saturating_add
    • ቆይታ ::የተፈተሸ_ንዑስ
    • ቆይታ :: saturating_sub
    • ቆይታ:: የተረጋገጠ_mul
    • ቆይታ:: saturating_mul
    • ቆይታ:: የተረጋገጠ_div
  • በ"const" አውዶች ውስጥ የ"*const T" ጠቋሚዎችን መሰረዝ ተፈቅዷል።
  • በካርጎ ጥቅል አቀናባሪ ውስጥ የዝገቱ_ስሪት መስክ ወደ ጥቅል ሜታዳታ ታክሏል እና የ"መልእክት-ቅርጸት" አማራጭ ወደ "የጭነት ጭነት" ትዕዛዝ ታክሏል።
  • አቀናባሪው ለሲኤፍአይ (የቁጥጥር ፍሰት ኢንተግሪቲ) ጥበቃ ዘዴ ድጋፍን ይተገብራል ፣ ይህም ከእያንዳንዱ ቀጥተኛ ያልሆነ ጥሪ በፊት ቼኮችን ይጨምራል ፣ ይህም በመደበኛው የአፈፃፀም ትእዛዝ (የቁጥጥር ፍሰት) ምክንያት ወደ መጣስ ሊመራ የሚችል አንዳንድ ያልተገለጸ ባህሪይ ነው። በተግባሮች ላይ በማህደረ ትውስታ ውስጥ የተከማቹ ጠቋሚዎችን የሚቀይሩ ብዝበዛዎችን መጠቀም።
  • አቀናባሪው በሙከራ ጊዜ የኮድ ሽፋንን ለመገምገም ጥቅም ላይ የሚውለውን የኤልኤልቪኤም ሽፋን ንጽጽር ፎርማት 5 እና 6 ስሪቶችን ድጋፍ አድርጓል።
  • በአቀነባባሪው ውስጥ፣ ለዝቅተኛው የኤልኤልቪኤም ስሪት የሚያስፈልጉ መስፈርቶች ወደ ኤልኤልቪኤም 12 ይነሳሉ ።
  • ሶስተኛው የድጋፍ ደረጃ ለ x86_64 - ያልታወቀ - ምንም መድረክ አልተተገበረም። ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል፣ ነገር ግን ያለ አውቶሜትድ ሙከራ፣ ይፋዊ ግንባታዎችን ማተም ወይም ኮዱ መገንባት ይቻል እንደሆነ ማረጋገጥ።

በተጨማሪም ፣ለዊንዶውስ 0.30 ቤተ-መጻሕፍት ዝገት መለቀቁን ማይክሮሶፍት ያሳተመውን እናስተውላለን ፣ይህም የዝገት ቋንቋን ለዊንዶውስ ኦኤስ መተግበሪያን ለማዘጋጀት ያስችላል። ስብስቡ ሁለት crate ጥቅሎችን (መስኮቶች እና ዊንዶውስ-sys) ያካትታል፣ በዚህም የ Win API ን በሩስት ፕሮግራሞች ማግኘት ይችላሉ። የ API ድጋፍ ኮድ የሚመነጨው ኤፒአይን ከሚገልፅ ሜታዳታ ሲሆን ይህም ለነባር የዊን ኤፒአይ ጥሪዎች ብቻ ሳይሆን ወደፊት ለሚመጡ ጥሪዎች ድጋፍን ተግባራዊ ለማድረግ ያስችላል። አዲሱ ስሪት ለ UWP (ሁለንተናዊ የዊንዶውስ ፕላትፎርም) ዒላማ መድረክ ድጋፍን ይጨምራል እና የ Handle እና Debug አይነቶችን ይተገብራል።

ምንጭ: opennet.ru

አስተያየት ያክሉ