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

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

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

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

ዋና ፈጠራዎች፡-

  • ኢንቲጀር ውክልና (የ"#[repr(Int)]" ባህሪ ጋር ቆጠራዎች ውስጥ, ቁጥሩ መስኮች ቢይዝም, አድሎዋዊ (የተለያዩ ቁጥር) ግልጽ ምልክት ተፈቅዷል. #[repr(u8)] enum Foo {A(u8)፣ #አድሎአዊ 0 B(i8)፣ #አድሎአዊ 1 C(bool) = 42፣ # አድልዎ 42 }
  • የተጨመረው ተግባር ኮር:: ፍንጭ:: ጥቁር_ሣጥን በቀላሉ የተቀበለውን እሴት ይመልሳል። አቀናባሪው ይህ ተግባር አንድ ነገር እየሰራ ነው ብሎ ስለሚያስብ፣ የጥቁር_ቦክስ ተግባር የኮድ አፈጻጸም ሙከራን በሚሰራበት ጊዜ ወይም የመነጨውን የማሽን ኮድ ሲመረምር ለ loops የማጠናከሪያ ማመቻቸትን ለማሰናከል (አቀናባሪው ጥቅም ላይ ያልዋለውን ኮድ አይቆጥረውም እና ያስወግዱት)። ለምሳሌ ከዚህ በታች ባለው ምሳሌ ብላክ_ቦክስ(v.as_ptr ()) አቀናባሪው ቬክተር ቁ ጥቅም ላይ አይውልም ብሎ እንዳያስብ ይከለክላል። std ይጠቀሙ :: ፍንጭ :: ጥቁር_ሣጥን; fn push_cap (v: &mut Vec) {ለ i በ 0..4 {v.push(i); ጥቁር_ሣጥን (v.as_ptr ()); }
  • የ "ካርጎ" ፓኬጅ አቀናባሪ "ማስወገድ" ትዕዛዙን ያቀርባል, ይህም ከካርጎ.toml መግለጫው ላይ ጥገኛ የሆኑትን ከትዕዛዝ መስመሩ እንዲያስወግዱ ያስችልዎታል.
  • የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
    • proc_macro :: Span ::ምንጭ_ጽሁፍ
    • u*::{ተጨምሯል_የተፈረመ ፣የፈሰሰ_የተጨመረ_የተፈረመ ፣የተጨመረ_የተፈረመ ፣የተጠቃለለ_የተፈረመ}
    • i*::{ተፈተሸ_የተጨመረ_ያልተፈረመ፣ ሞልቶ_የተጨመረ_ያልተፈረመ፣ ያልፈረመ_የተጨመረው_ያልተፈረመ፣ ያልፈረመበት_የተጨመረበት}
    • i*::{ተፈተሸ_ንዑስ_ያልተፈረመ፣ የተትረፈረፈ_ንዑስ_ያልተፈረመ፣ ያልፈረመ_ንዑስ_ያልተፈረመ፣ መጠቅለያ_ንዑስ_ያልተፈረመ}
    • BTreeSet::{መጀመሪያ፣ የመጨረሻ፣ ፖፕ_ፈርስት፣ ፖፕ_መጨረሻ}
    • BTreeMap::{የመጀመሪያ_ቁልፍ_እሴት፣የመጨረሻ_ቁልፍ_ዋጋ፣የመጀመሪያ_ግቤት፣የመጨረሻ_መግቢያ፣ፖፕ_መጀመሪያ፣ፖፕ_መጨረሻ}
    • WASI ሲጠቀሙ ለ stdio መቆለፊያ አይነቶች የ AsFd አተገባበርን ያክሉ።
    • impl TryFrom > ለቦክስ<[T; ነ]>
    • አንኳር :: ፍንጭ :: ጥቁር_ሳጥን
    • የሚፈጀው ጊዜ::ከሴኮንድ_ሙከራ_{f32,f64}
    • አማራጭ:: ዚፕ ይክፈቱ
    • std:: os:: fd
  • ክልሎቹ "..X" እና "..=X" በአብነት ውስጥ ተፈቅደዋል።
  • የ rustc compiler እና LLVM backend ፊት ለፊት ሲገነቡ LTO (Link Time Optimization) እና BOLT (ሁለትዮሽ ማሻሻያ እና አቀማመጥ መሳሪያ) የማሻሻያ ሁነታዎች የውጤቱን ኮድ አፈፃፀም ለመጨመር እና የማህደረ ትውስታ ፍጆታን ለመቀነስ ያገለግላሉ።
  • የተተገበረ ደረጃ 5 ድጋፍ ለ armv5te-none-eabi እና thumbvXNUMXte-none-eabi መድረኮች። ሦስተኛው ደረጃ መሰረታዊ ድጋፍን ያመለክታል፣ ነገር ግን ያለ አውቶሜትድ ሙከራ፣ ይፋዊ ግንባታዎችን ማተም እና ኮዱን የመገንባት ችሎታን ማረጋገጥ።
  • ወደ macOS አጠቃላይ ቤተ-መጽሐፍት ለማገናኘት ድጋፍ ታክሏል።

በተጨማሪም፣ የ Rust ቋንቋ (gccrs) የፊት-መጨረሻ አዘጋጅ በጂሲሲ ኮድ ቤዝ ውስጥ መካተቱን እናስተውላለን። የፊት ግንባር በGCC 13 ቅርንጫፍ ውስጥ ተካትቷል፣ እሱም በግንቦት 2023 ውስጥ ይለቀቃል። ከጂሲሲ 13 ጀምሮ፣ የኤልኤልቪኤም ልማቶችን በመጠቀም የተሰራውን የሩስት ኮምፕሌተር መጫን ሳያስፈልግ መደበኛው የጂሲሲ Toolkit የ Rust ፕሮግራሞችን ለማዘጋጀት ጥቅም ላይ ሊውል ይችላል። በGCC 13 ውስጥ ያለው የዝገት ትግበራ በቅድመ-ይሁንታ ሁኔታ ላይ ይሆናል፣ በነባሪነት አይነቃም።

ምንጭ: opennet.ru

አስተያየት ያክሉ