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

በሞዚላ ፕሮጀክት የተመሰረተው፣ አሁን ግን በገለልተኛ ለትርፍ ያልተቋቋመ ድርጅት Rust Foundation ስር የተገነባው የ Rust 1.61 አጠቃላይ ዓላማ ፕሮግራሚንግ ቋንቋ ታትሟል። ቋንቋው በማህደረ ትውስታ ደህንነት ላይ ያተኩራል እና ከፍተኛ የስራ ትይዩነትን ለማግኘት የቆሻሻ አሰባሳቢውን እና የሩጫ ጊዜን (የሩጫ ጊዜውን ወደ መሰረታዊ አጀማመር እና ደረጃውን የጠበቀ ቤተመፃህፍት መጠገን ይቀንሳል)።

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

የማህደረ ትውስታ ደህንነት በራስት ውስጥ በማጠናቀር ጊዜ በማጣቀሻ ቁጥጥር ፣የነገሮችን ባለቤትነት በመከታተል ፣የእቃውን የህይወት ዘመን (ስፋት) በመከታተል እና በኮድ አፈፃፀም ወቅት የማስታወስ ችሎታን ትክክለኛነት በመገምገም ይሰጣል ። ዝገት ከኢንቲጀር መብዛት ጥበቃን ይሰጣል፣ ከመጠቀምዎ በፊት ተለዋዋጭ እሴቶችን የግዴታ ማስጀመርን ይጠይቃል፣ በመደበኛ ቤተ-መጽሐፍት ውስጥ ስህተቶችን በተሻለ ሁኔታ ይቆጣጠራል ፣ የማይለዋወጥ ማጣቀሻዎችን እና ተለዋዋጮችን በነባሪነት ይተገበራል ፣ ምክንያታዊ ስህተቶችን ለመቀነስ ጠንካራ የማይንቀሳቀስ ትየባ ይሰጣል።

ዋና ፈጠራዎች፡-

  • ከዋናው ተግባር የእራስዎን የመመለሻ ኮዶች መግለጽ ይቻላል. በመጀመሪያ የRust ዋና ተግባር ገንቢው የ"ሂደት:: መውጫ(ኮድ)" ተግባር ካልጠራ በቀር ሁል ጊዜ የተሳካ የመውጫ ሁኔታን የሚያመለክተውን አይነት "()"(ዩኒት) ብቻ ነው መመለስ የሚችለው። በ Rust 1.26 ውስጥ፣ በዋናው ተግባር ውስጥ ያለውን ያልተረጋጋ የማቋረጫ ባህሪ በመጠቀም፣ በC ፕሮግራሞች ውስጥ ካሉ EXIT_SUCCESS እና EXIT_FAILURE ኮዶች ጋር የሚዛመዱ “Ok” እና “Err” እሴቶችን መመለስ ተችሏል። በዝገት 1.61፣ የማቋረጡ ባህሪው የተረጋጋ እንዲሆን ተደርጓል፣ እና የተለየ የመመለሻ ኮድን የሚወክል የተለየ ExitCode አይነት ቀርቧል፣ ይህም ሁለቱንም አስቀድሞ የተገለጹ ቋሚዎችን ስኬት እና ውድቀትን እና ከ ዘዴን በማቅረብ ከመድረክ ላይ የተወሰኑ የመመለሻ ዓይነቶችን ያጠቃልላል። ብጁ የመመለሻ ኮድ ለመመለስ. std ይጠቀሙ :: ሂደት :: ExitCode; fn main () -> ExitCode {ከሆነ !check_foo() {ExitCode መመለስ:: ከ(8) } መውጫ ኮድ :: ስኬት }
  • "const fn" የሚለውን አገላለጽ በመጠቀም የተገለጹ ተጨማሪ የተግባር ችሎታዎች ተረጋግተዋል, ይህም እንደ መደበኛ ተግባራት ብቻ ሳይሆን በቋሚዎች ምትክ በማንኛውም አውድ ውስጥ ጥቅም ላይ ሊውል ይችላል. እነዚህ ተግባራት የሚሰሉት በማጠናቀር ጊዜ እንጂ በሂደት ላይ አይደለም፣ ስለዚህ እነሱ ከቋሚዎች ብቻ የማንበብ ችሎታን የመሳሰሉ የተወሰኑ ገደቦችን ይከተላሉ። በአዲሱ ስሪት ውስጥ፣ ከተግባር ጠቋሚዎች ጋር መሰረታዊ ክዋኔዎች በኮንስት ተግባራት ውስጥ ይፈቀዳሉ (ጠቋሚዎችን መፍጠር ፣ ማለፍ እና መጣል ይፈቀዳል ፣ ግን ተግባርን በጠቋሚ አለመጥራት) ። የባህሪ ድንበሮች እንደ ቲ: ቅጂ; በተለዋዋጭ የሚላኩ ባህሪያት (dyn Trait); impl የባህሪይ ዓይነቶች ለተግባር ነጋሪ እሴቶች እና የመመለሻ ዋጋዎች።
  • ዥረቱ Stdin, Stdout እና Stderr በ std ውስጥ ይይዛል:: io አሁን ሲቆለፍ የማይንቀሳቀስ የህይወት ዘመን ("'static") አላቸው, ይህም እንደ "let out = std:: io :: stdout ()" ያሉ ግንባታዎችን ይፈቅዳል.መቆለፊያ (); እጀታ በማግኘት እና በአንድ አገላለጽ መቆለፊያን በማዘጋጀት.
  • የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
    • ፒን :: የማይንቀሳቀስ_mut
    • ፒን :: የማይንቀሳቀስ_ማጣቀሻ
    • ቬክ :: mut_ያቆይ
    • VecDeque :: hold_mut
    • ለጠቋሚ ይጻፉ<[u8; ነ]>
    • std :: os :: ዩኒክስ :: መረብ :: SocketAddr :: ከመንገዱ ስም::
    • std :: ሂደት :: ExitCode
    • std :: ሂደት :: መቋረጥ
    • std :: ክር ::መያያዝ ::አልቋል::
  • ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን የሚወስነው የ"const" ባህሪ በተግባሮች ውስጥ ጥቅም ላይ ይውላል።
    • <*const T>::ማካካሻ እና <*mut T>::ማካካሻ
    • <*const ቲ>::wrapping_offset እና <*mut T>::wrapping_offset
    • <*const T>::መደመር እና <*mut T>::
    • <*const T>::ንዑስ እና <*mut T>:: sub
    • <*const ቲ>::መጠቅለል_አክል እና <*mut T>::መጠቅለል_አክል
    • <*const T>::wrapping_sub እና <*mut T>::wrapping_sub
    • <[T]>:: እንደ_mut_ptr
    • <[T]>:: እንደ_ptr_ክልል
    • <[T]>:: እንደ_mut_ptr_ክልል

በተጨማሪም ፣ በ firmware ውስጥ ጥቅም ላይ የዋለው የXous ማይክሮከርነል ኦፕሬቲንግ ሲስተም በሚሠራበት ጊዜ በውስጡ 100 ሺህ የኮድ መስመሮችን ከፃፉ በኋላ ስለ ዝገቱ ቋንቋ ግንዛቤዎች ማጠቃለያ “ዝገት: ወሳኝ የኋላ ታሪክ” የሚለውን መጣጥፍ ልብ ይበሉ። ጉዳቶቹ ለመረዳት የሚያስቸግር አገባብ፣ አለመሟላት እና ቀጣይነት ያለው የቋንቋ እድገት፣ ተደጋጋሚ ግንባታዎች አለመኖር፣ ዓይነተኛ ችግሮች በ Crates.io ላይ ጥገኛ አለመሆን እና ደህንነቱ የተጠበቀ ኮድ ለመፃፍ የተወሰነ ዲሲፕሊን መጠበቅ ያስፈልጋል። ከተጠበቀው በላይ ያደረጉ ባህሪያት ኮድን ለማደስ እና ፈጣን ፕሮቶታይፕ በሚደረግበት ጊዜ የተጨመሩትን "ጠለፋ" እንደገና ለመስራት የሚረዱ መሳሪያዎችን ያካትታሉ።

ምንጭ: opennet.ru

አስተያየት ያክሉ