የ Rust 1.74 ፕሮግራሚንግ ቋንቋ መለቀቅ። RustVMM ኦዲት. Binder በዝገት ውስጥ እንደገና በመፃፍ ላይ

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

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

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

ዋና ፈጠራዎች፡-

  • የሊንት ቼኮችን በCargo.toml ፋይል ከጥቅል አቀናባሪ አንጸባራቂ ጋር የማዋቀር ችሎታ ታክሏል። እንደ የምላሽ ደረጃ (መከልከል ፣ መከልከል ፣ ማስጠንቀቅ ፣ ፍቀድ) ያሉ የሊንት ቅንብሮችን ለመግለጽ ፣ አዲስ ክፍሎች “[lints]” እና “[workspace.lints]” ቀርበዋል ፣ ይህም ለውጦችን በሚወስኑበት ጊዜ ግምት ውስጥ ይገባል ። እንደገና መገንባት. ለምሳሌ የ"-F"፣ "-D"፣ "-W" እና "-A" ባንዲራዎችን ሲሰበሰቡ ወይም ሲጨምሩ ከመግለጽ ይልቅ "#! :" ለኮዱ ባህሪያት) :enum_glob_use)]" አሁን በካርጎ መግለጫ ውስጥ ጥቅም ላይ ሊውል ይችላል: [lints.rust] unsafe_code = "የተከለከለ" [lints.clippy] enum_glob_use = "መከልከል"
  • የCrate ጥቅል አስተዳዳሪ ወደ ማከማቻ ሲገናኙ የማረጋገጥ ችሎታን አክሏል። የመሠረታዊው ፓኬጅ የማረጋገጫ መለኪያዎችን በሊኑክስ የማረጋገጫ መደብሮች (በ libsecret ላይ የተመሠረተ) ፣ ማክኦኤስ (ቁልፍ ቼይን) እና ዊንዶውስ (የዊንዶውስ የምስክር ወረቀት ሥራ አስኪያጅ) ውስጥ ለማስቀመጥ ድጋፍን ያካትታል ፣ ግን ስርዓቱ መጀመሪያ ላይ ሞዱል ተደርጎ የተሰራ እና ከተለያዩ አቅራቢዎች ጋር ለማከማቸት እና ለማደራጀት ያስችላል። ማስመሰያዎችን ማመንጨት ለምሳሌ 1 የይለፍ ቃል አቀናባሪን ለመጠቀም ፕለጊን ተዘጋጅቷል። ጥቅሎች መታተማቸውን ለማረጋገጥ ብቻ ሳይሆን ለማንኛውም ክንዋኔ በማጠራቀሚያው ማረጋገጥ ሊያስፈልግ ይችላል። ~/.cargo/config.toml [መዝገብ] global-credential-providers = ["ካርጎ:ቶከን", "ጭነት:libsecret"]
  • የመመለሻ አይነት ትንበያዎች (impl_trait_projections) ድጋፍ የተረጋጋ ሲሆን ይህም ራስን እና ቲ ::አሶክን እንደ "async fn" እና "-> impl Trait" በመሳሰሉት የመመለሻ አይነቶች እንዲጠቀሱ አስችሏል። struct Wrapper<'a, T>(&'T); // ‹ራስ›ን የሚጠቅሱ ግልጽ ያልሆኑ የመመለሻ ዓይነቶች፡ impl Wrapper<'_, ()> { async fn async_fn () -> ራስን { /* … */ } fn impl_trait() -> impl Iterator { /* … */ } } ባህሪ ባህሪ<'a> {አስሶክ ይተይቡ; fn አዲስ () -> ራስን :: አሶክ; } impl ባህሪ<'_> ለ () { አይነት Assoc = (); fn new() {} } // ተዛማጅ አይነትን የሚጠቅሱ ግልጽ ያልሆኑ የመመለሻ ዓይነቶች፡ impl<'a, T: Trait<'a>> Wrapper<'a, T> { async fn mk_assoc() -> T::Assoc {/* … */ } fn a_few_assocs() -> impl Iterator {/* … */}
  • የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
  • ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን የሚወስነው የ"const" ባህሪ በተግባሮች ውስጥ ጥቅም ላይ ይውላል።
    • አንኳር :: mem :: transmute_copy
    • str ::አስኪ ነው።
    • [u8]:: is_ascii
    • አንኳር :: ቁጥር :: Saturating
    • impl ከ ለ std :: ሂደት :: ስቱዲዮ
    • impl ከ ለ std :: ሂደት :: ስቱዲዮ
    • impl ከ ለ std :: ሂደት :: ልጅ {Stdin, Stdout, Stderr}
    • impl ከ ለ std :: ሂደት :: ልጅ {Stdin, Stdout, Stderr}
    • std :: ffi :: OsString :: ከመሰየመ_ባይት_ያልተረጋገጠ
    • std :: ffi :: OsString :: ወደ_የተቀጠረ_ባይት
    • std :: ffi :: OsStr :: ከኢኮድ_ባይት_ያልተረጋገጠ
    • std :: ffi :: OsStr :: እንደ_የተቀጠረ_ባይት
    • std:: io:: ስህተት:: ሌላ::
    • impl TryFrom ለ u16
    • impl ከ<&[T; N]> ለ Vec
    • impl ከ<&mut [T; N]> ለ Vec
    • impl ከ<[T; N]> ለአርክ<[T]>
    • impl ከ<[T; N]> ለ Rc<[T]>
  • የማጠናቀቂያው፣የመሳሪያ ኪት፣የስታንዳርድ ቤተመፃህፍት እና የመነጨ አፕሊኬሽን ፈጻሚዎች ለአፕል መድረኮች መስፈርቶችን ጨምረዋል፣አሁን ለማሄድ ቢያንስ macOS 10.12 Sierra፣ iOS 10 እና tvOS 10 በ2016 እንዲሰራ ያስፈልጋል።
  • ሦስተኛው የድጋፍ ደረጃ ለ i686-pc-windows-gnulvm መድረክ ተተግብሯል. ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል፣ ነገር ግን ያለ አውቶሜትድ ሙከራ፣ ይፋዊ ግንባታዎችን ማተም እና የኮድ መገንባትን ማረጋገጥን ያካትታል።
  • ለታለመው መድረክ ሁለተኛው የድጋፍ ደረጃ loongarch64-ያልታወቀ-ምንም አልተተገበረም። ሁለተኛው የድጋፍ ደረጃ የመሰብሰቢያ ዋስትናን ያካትታል.

በተጨማሪም፣ ከሩስት ቋንቋ ጋር የተያያዙ ሁለት ክስተቶች ሊታወቁ ይችላሉ፡-

  • የክፍት ምንጭ ፕሮጄክቶችን ደህንነት ለማጠናከር የተፈጠረው OSTIF (ክፍት ምንጭ የቴክኖሎጂ ማሻሻያ ፈንድ) የ RustVMM ፕሮጀክት ኦዲት ውጤቶችን አሳትሟል ፣ ይህም ተግባር-ተኮር hypervisors እና ምናባዊ ማሽን ማሳያዎችን (VMMs) ለመፍጠር ክፍሎችን ይሰጣል ። በፕሮጀክቱ ልማት ላይ እንደ ኢንቴል፣ አሊባባ፣ አማዞን፣ ጎግል፣ ሊናሮ እና ቀይ ኮፍያ ያሉ ኩባንያዎች እየተሳተፉ ነው። Intel Cloud Hypervisor እና Dragonball hypervisors በ RustVMM ላይ በመመስረት እየተገነቡ ነው። ኦዲቱ ከፍተኛ ጥራት ያለው የኮድ መሰረቱን እና በህንፃው እና በአተገባበሩ ውስጥ ከፍተኛውን ደህንነትን ለማስጠበቅ የታለሙ ቴክኒኮችን አጠቃቀም አረጋግጧል። በኦዲቱ ወቅት በደህንነት ላይ ቀጥተኛ ተጽእኖ የሌላቸው 6 ችግሮች ተለይተዋል።
  • ጎግል በሩስት ቋንቋ እንደገና የተፃፈውን የBinder interprocess Communication ዘዴ አዲስ ትግበራን ወደ ሊኑክስ ከርነል ገንቢ የደብዳቤ መላኪያ ዝርዝር አስተዋውቋል። ድጋሚ ስራው የተካሄደው ደህንነትን ለማጠናከር፣ ደህንነታቸው የተጠበቁ የፕሮግራም አወጣጥ ቴክኒኮችን ለማስተዋወቅ እና በአንድሮይድ ውስጥ ከማህደረ ትውስታ ጋር በሚሰሩበት ጊዜ ችግሮችን የመለየት ቅልጥፍናን ለመጨመር የፕሮጀክት አካል ሆኖ ነበር (በአንድሮይድ ውስጥ ከሚታወቁት አደገኛ ተጋላጭነቶች ውስጥ 70% የሚሆኑት ከማስታወስ ጋር ሲሰሩ በስህተት የተከሰቱ ናቸው) ). የ Binder in Rust አተገባበር በC ቋንቋ ከመጀመሪያው ስሪት ጋር በተግባራዊነት እኩልነት አግኝቷል ፣ ሁሉንም የ AOSP (የአንድሮይድ ክፍት ምንጭ ፕሮጀክት) ሙከራዎችን ያልፋል እና የጽኑ ትዕዛዝ እትሞችን ለመፍጠር ሊያገለግል ይችላል። የሁለቱም ትግበራዎች አፈፃፀም በግምት በተመሳሳይ ደረጃ (በ -1.96% እና +1.38%) ውስጥ ያሉ ልዩነቶች።

ምንጭ: opennet.ru

አስተያየት ያክሉ