ዝገት 1.78 ተለቋል. የ Go እና Rust ጥንካሬዎችን የሚያጣምር የቦርጎ ቋንቋ

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

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

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

ዋና ፈጠራዎች፡-

  • አዲስ የባህሪ ስም ቦታ "#[diagnostic]" ቀርቧል፣ ይህም በአቀናባሪው በተዘጋጁት የስህተት መልዕክቶች ላይ ተጽእኖ ለመፍጠር የሚያስችል ዘዴ ነው። በአዲሱ ቦታ ውስጥ የመጀመሪያው "#[diagnostic :: ላይ_unmplemented]" ባህሪ ነው, ይህም ለአይነቱ ያልተተገበረ ባህሪን መጠቀም በሚያስፈልግበት ሁኔታ ውስጥ የተጣሉ የስህተት መልዕክቶችን ለማበጀት ሊያገለግል ይችላል. #[diagnostic::ላይ_unmplemented( message = "የእኔ መልእክት ለ`አስፈላጊ ባህሪ<{A}>` ለ`{ራስ}` አልተተገበረም"፣ label = "My Label", note = "Note 1", note = "ማስታወሻ 2")] ጠቃሚ ባህሪ {} fn use_my_trait(_: impl ImportantTrait) ) {} fn ዋና () {አጠቃቀም_my_trait(ሕብረቁምፊ:: አዲስ()); ስህተት[E32]፡ የእኔ መልእክት ለ`ImportantTrait `ለ`ሕብረቁምፊ` አልተተገበረም —> src/main.rs:0277:32 | 12 | ተጠቀም_my_trait (ሕብረቁምፊ :: አዲስ ()); | ———— ^^^^^^^^^^^ የእኔ መለያ | | | በዚህ ጥሪ በተዋወቀው ገደብ የሚፈለግ | = እገዛ፡ ባህሪው `ImportantTrait `ለ`ሕብረቁምፊ` አልተተገበረም = ማስታወሻ፡ ማስታወሻ 18 = ማስታወሻ፡ ማስታወሻ 12
  • ደህንነቱ ባልሆኑ ተግባራት ላይ የሚተገበሩ ቅድመ-ማስረጃ ቼኮች አሁን ኮድ እስኪፈጠር ድረስ ሊዘገዩ ይችላሉ፣ ይህም ቼኮች መደበኛውን ቤተ-መጽሐፍት በ"#[cfg(debug_assertions)]" ሁነታ መገንባት ሳያስፈልጋቸው እንዲከናወኑ ያስችላቸዋል። ቼኮችን ለመቀስቀስ አሁን የማረሚያ ማረጋገጫዎችን ለሙከራ ማንቃት ወይም የኮድህን ግንባታ ማረም በቂ ነው።
  • በመደበኛ ቤተ-መጽሐፍት ውስጥ ያሉት የተግባሮች ባህሪ የጠቋሚዎችን እና የቁራጮችን አሰላለፍ ላይ ተጽዕኖ የሚያሳድሩ ተግባራት አሁን በሂደት ጊዜ ሊተነበይ የሚችል እና በግቤት ውሂቡ ላይ የተመሠረተ ነው። ጠቋሚውን ለማስማማት ማካካሻውን የሚያሰላው የተግባር ጠቋሚ ::align_offset አሁን የሚመለሰው usize ::ማክሰሩ ካልተሳካ ብቻ ነው። ተግባራቶቹ የተቆራረጡ :: align_to and clan :: align_to_mut ሁለቱንም፣ ቁርጥራጮቹን ወደ ውክልና የሚቀይሩት ከተሰለፈ መካከለኛ ቁራጭ እና ከመጀመሪያው መጀመሪያ እና መጨረሻ ቁርጥራጭ፣ አሁን ሁልጊዜ ትልቁን መካከለኛ ክፍል ይመልሱ።
  • የሚከተሉት ወደ የተረጋጋ ምድብ ተላልፈዋል።
    • impl ለ &Stdin አንብብ
    • ለአንዳንድ std::ስህተት::ከስህተት ጋር ለተያያዙ ትግበራዎች የማይለዋወጥ (የማይንቀሳቀስ) የህይወት ጊዜን መጠቀም ይፍቀዱ።
    • Impl ትግበራ የመጠን ዋጋን ለመጠቀም ተፈቅዶለታል።
    • impl ከ ለ io :: ስህተት
  • የባሪየር:: አዲስ() ተግባር ከ"const" ባህሪ ጋር በማንኛውም አውድ ከቋሚዎች ይልቅ ጥቅም ላይ እንዲውል ተረጋግቷል።
  • ለዒላማ መድረኮች x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm እና i686-pc-windows-gnullvm አሁን ቢያንስ የዊንዶውስ 10 ስሪት ይፈልጋል።
  • ሦስተኛው የድጋፍ ደረጃ ለ wasm32-wasip2፣ arm64ec-pc-windows-msvc፣ armv8r-none-eabihf እና loongarch64-ያልታወቀ-ሊኑክስ-ሙስል መድረኮች ተተግብሯል። ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል፣ ነገር ግን ያለ አውቶሜትድ ሙከራ፣ ይፋዊ ግንባታዎችን ማተም ወይም ኮዱ መገንባት ይቻል እንደሆነ ማረጋገጥ።
  • ለታለመው መድረክ Add wasm32-wasip1 ሁለተኛው የድጋፍ ደረጃ ተተግብሯል። ሁለተኛው የድጋፍ ደረጃ የመሰብሰቢያ ዋስትናን ያካትታል.
  • የመሣሪያ ስርዓቱ wasm32-wasi-ቅድመ-እይታ1-ክሮች ወደ wasm32-wasip1-ክሮች ተቀይሯል።
  • አቀናባሪው ወደ LLVM 18 ተቀይሯል። LLVM 18 ለ x86-32 እና x86-64 አርክቴክቸር ሲጠቀሙ፣ ከ u128 እና i128 አይነቶች ጋር የተያያዘው ABI ተቀይሯል።
  • በካርጎ ስምምነት አስተዳዳሪ ውስጥ፣ የመቆለፊያ ፋይሎች ስሪት 4 (የመቆለፊያ ፋይል v4) ተረጋግቷል።
  • ካርጎ ስለ የቅርብ ጊዜ የውሂብ አጠቃቀም መረጃ ያለው የተረጋጋ ዓለም አቀፍ መሸጎጫ አለው። መሸጎጫው በ$CARGO_HOME/.global-cache የሚስተናገደው SQLiteን በመጠቀም ነው እና በመረጃ ጠቋሚ፣ crate file፣ code directory፣git clone እና git checkout ላይ የቅርብ ጊዜ ለውጦችን ለማንፀባረቅ በራስ-ሰር ይዘምናል።

በተጨማሪም፣ የቦርጎ ፕሮግራሚንግ ቋንቋ ከጎ ቋንቋ የበለጠ ገላጭ ለመሆን ይሞክራል፣ ነገር ግን ከሩስት ቋንቋ ያነሰ ውስብስብ ነው። ቦርጎ የ Go እና Rust ምርጥ ባህሪያትን በማጣመር የእያንዳንዱን ቋንቋ ድክመቶች ይሸፍናል. ለምሳሌ, Go ቀላል እና ቀጥተኛ ነው, ነገር ግን የላቀ ዓይነት የደህንነት ባህሪያትን አይሰጥም. የዝገት ቋንቋ ለደህንነቱ የተጠበቀ ፕሮግራሚንግ መሳሪያዎችን ያቀርባል፣ነገር ግን የተወሳሰበ ነው። ፕሮጀክቱ በቀላል Haskell Handbook ደራሲ እና የኳድ ሲአይ ተከታታይ ውህደት ስርዓት ገንቢ በሆነው በማርኮ ሳምፔሌግሪኒ እየተዘጋጀ ነው።

ዝገት 1.78 ተለቋል. የ Go እና Rust ጥንካሬዎችን የሚያጣምር የቦርጎ ቋንቋ

ቦርጎ የማይለዋወጥ ትየባ፣ Go-like አይነቶች እና Rust-like አገባብ ይጠቀማል። ሴሚኮሎኖች በቦርጎ ኮድ ውስጥ በመስመሮች መጨረሻ ላይ አማራጭ ናቸው። የቦርጎ ኮድ ከነባር የ Go ጥቅሎች ጋር ሙሉ ለሙሉ የሚስማማ የ Go ውክልና ተሰብስቧል። የማጠናቀሪያው ኮድ በሩስት ውስጥ የተፃፈ እና በ ISC ፈቃድ ስር ይሰራጫል። fmt enum NetworkState ይጠቀሙ { በመጫን ላይ፣ አልተሳካም(int)፣ ስኬት(ቲ)፣} መዋቅር ምላሽ { ርዕስ፡ string፣ duration: int, } fn main() {let res = ምላሽ { ርዕስ፡ “ሄሎ አለም”፣ ቆይታ፡ 0፣ } ይግለጽ = NetworkState.Success(res) let msg = ግጥሚያ ሁኔታ { NetworkState.Loading => "አሁንም በመጫን ላይ", NetworkState.Failed(code) => fmt.Sprintf("Got error code: %d", code), NetworkState.ስኬት (res) => ዳግመኛ ርዕስ፣ } fmt.Println(msg) }

ምንጭ: opennet.ru

አስተያየት ያክሉ