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

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

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

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

ዋና ፈጠራዎች፡-

  • በነባሪ የፕሮግራም ብልሽት ተቆጣጣሪ (ሽብር) የወጡ የመልእክቶች ቅርጸት እንደገና ተዘጋጅቷል። በ"ሽብር!" ማክሮ ውስጥ የተገለጸው ጽሑፍ አሁን በተለየ መስመር ላይ ያለ የትዕምርተ ጥቅስ ምልክት ይታያል፣ ይህም መልእክቱን ለማንበብ ቀላል ያደርገዋል እና የጎጆ ጥቅሶች ሲገኙ ወይም በተለያዩ መስመሮች ሲከፋፈሉ ውዥንብርን ያስወግዳል። fn ዋና () { ፋይሉ = "ferris.txt"; ድንጋጤ!("አይ! {ፋይል:?} አልተገኘም!"); ▣ በ'ኦህ አይ! "ferris.txt" አልተገኘም!'፣ src/main.rs:3:5 ክር 'ዋና' በ src/main.rs:3:5 የተደናገጠ፡ አይ! "ferris.txt" አልተገኘም!

    የ"assert_eq" እና "assert_ne" ማክሮዎች ሲቀሰቀሱ የሚታየው የመልእክቶች ውፅዓት እንዲሁ እንደገና ተሰራ። fn main() {assert_eq!("🦀", "🐟", "ፌሪስ ዓሣ አይደለም"); } በ'ማስረጃው ያልተሳካለት 'ዋና' የተደናገጠ ክር ነበር፡ `(በግራ == ቀኝ)` ግራ፡ `"🦀"`፣ ቀኝ፡ `"🐟"`፡ ፌሪስ ዓሳ አይደለም'፣ src/main.rs: 2፡5 ፈትል 'ዋና' በsrc/main.rs:2:5 ተደናግጧል፡ 'ግራ == ቀኝ' የሚለው ቃል አልተሳካም፡ ፌሪስ ግራው ዓሣ አይደለም፡ "🦀" በቀኝ፡ "🐟"

  • በ RFC 3184 መሠረት የክር-አካባቢያዊ (ክር_አካባቢ) የአካባቢ ቁልፍ ማከማቻ ቁልፎችን በቀጥታ የመቆጣጠር ችሎታ ታክሏል > እና የአካባቢ ቁልፍ > "በ(| ውስጣዊ| ...)" መዘጋት ከመጠቀም ይልቅ get() set()፣ take() እና ተካ() ስልቶችን በመጠቀም፣ ይህም ለነባሪው ተጨማሪ የመነሻ ኮድ አስፈላጊነትን ያስወግዳል። ማክሮውን ሲጠቀሙ ለአዳዲስ ክሮች የተገለጹ እሴቶች "ክር_አካባቢያዊ!" ክር_አካባቢያዊ! { የማይለዋወጡ ነገሮች፡ ሕዋስ > = ሕዋስ :: አዲስ (ቬክ :: አዲስ ()); } fn f () {// THINGS.with(| i| i.set (vec![32, 1, 2])) ነበር; // THINGS.set (vec![3, 1, 2]) ሆነ; // ... // ነበር v = ነገሮች. ጋር (| i | i. መውሰድ ()); // መፍቀድ v: Vec = ነገሮች. መውሰድ (); }
  • የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
    • ያልተፈረመ {ኢንቲጀር} :: div_ceil
    • ያልተፈረመ {ኢንቲጀር} ::ቀጣይ_በርካታ_የ
    • ያልተፈረመ {ኢንቲጀር} ::የሚቀጥለው_በርካታ_የተፈተሸ
    • std :: ffi :: ከBytesUntilNulError
    • std :: os :: ዩኒክስ :: fs :: chown
    • std :: os :: ዩኒክስ :: fs :: fchown
    • std :: os :: ዩኒክስ :: fs :: lfchown
    • የአካባቢ ቁልፍ:: >> ያግኙ
    • የአካባቢ ቁልፍ:: >> አዘጋጅ
    • የአካባቢ ቁልፍ:: >> ውሰድ
    • የአካባቢ ቁልፍ:: >:: ተካ::
    • የአካባቢ ቁልፍ:: >> ከብድር ጋር
    • የአካባቢ ቁልፍ:: >> ከተበዳሪው_ሙት ጋር
    • የአካባቢ ቁልፍ:: >> አዘጋጅ
    • የአካባቢ ቁልፍ:: >> ውሰድ
    • የአካባቢ ቁልፍ:: >:: ተካ::
  • ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን የሚወስነው የ"const" ባህሪ በተግባሮች ውስጥ ጥቅም ላይ ይውላል።
    • rc:: ደካማ:: አዲስ::
    • አመሳስል::ደካማ::አዲስ::
    • Null ::እንደ_ማጣቀሻ
  • አቀናባሪው ከጂሲሲ እና ክላንግ ጋር የሚመሳሰል የስሪት መረጃን በ ".comment" ክፍል ውስጥ መቅዳት ያቀርባል።
  • ሶስተኛው የድጋፍ ደረጃ ለመድረኮች ተተግብሯል aarch64-የማይታወቅ-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl እና x86_64-ያልታወቀ-ሊኑክስ - ኦሆስ. ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል፣ ነገር ግን ያለ አውቶሜትድ ሙከራ፣ ይፋዊ ግንባታዎችን ማተም ወይም ኮዱ መገንባት ይቻል እንደሆነ ማረጋገጥ።
  • ለታለመው መድረክ ሁለተኛው የድጋፍ ደረጃ wasm32-wasi-ቅድመ-እይታ1-ክሮች ተተግብሯል። ሁለተኛው የድጋፍ ደረጃ የመሰብሰቢያ ዋስትናን ያካትታል.

ምንጭ: opennet.ru

አስተያየት ያክሉ