የፕሮግራም አወጣጥ ቋንቋ Rust 1.75 እና unikernel Hermit 0.6.7 መልቀቅ

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

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

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

ዋና ፈጠራዎች፡-

  • በግል ባህሪያት ውስጥ "async fn" እና "-> impl Trait" ምልክትን የመጠቀም ችሎታ ታክሏል። ለምሳሌ፣ “-> impl Trait”ን በመጠቀም ተደጋጋሚውን የሚመልስ የባህሪ ዘዴ መፃፍ ይችላሉ፡ trait Container {fn items(&self) -> impl Iterator; } impl ኮንቴይነር ለ MyContainer {fn ንጥሎች(&self) -> impl ኢተርተር {self.items.iter().cloned()}}

    እንዲሁም "async fn" ን በመጠቀም ባህሪያትን መፍጠር ይችላሉ: ባህሪ HttpService { async fn fetch (&self, url: Url) -> HtmlBody; // ወደሚከተለው ይሰፋል፡ // fn fetch (&self, url: Url) -> impl Future; }

  • ከጠቋሚዎች አንጻር ባይት ማካካሻዎችን ለማስላት ኤፒአይ ታክሏል። በባዶ ጠቋሚዎች ("* const T" እና "*mut T") ሲሰሩ በጠቋሚው ላይ ማካካሻ ለመጨመር ክዋኔዎች ሊያስፈልጉ ይችላሉ. ከዚህ ቀደም ለዚህ እንደ " :: add (1)" ግንባታን መጠቀም ተችሏል, ከ "መጠን_: ()" መጠን ጋር የሚመጣጠን የባይት ቁጥር በመጨመር. አዲሱ ኤፒአይ ይህን ተግባር ያቃልላል እና አይነቶቹን ወደ "* const u8" ወይም "*mut u8" ሳይወስዱ ባይት ማካካሻዎችን ለመቆጣጠር ያስችላል።
    • ጠቋሚ :: ባይት_አክል
    • ጠቋሚ :: ባይት_ማካካሻ
    • ጠቋሚ ::ባይት_ካካሳ_ከ
    • ጠቋሚ ::ባይት_ንዑስ
    • ጠቋሚ ::መጠቅለል_ባይት_ጨምር
    • ጠቋሚ :: መጠቅለያ_ባይት_ማካካሻ
    • ጠቋሚ ::መጠቅለያ_ባይት_ንዑስ
  • የ rustc compiler አፈጻጸምን ለመጨመር የቀጠለ ስራ. በድህረ አገናኝ ደረጃ ላይ የሚሰራ እና አስቀድሞ ከተዘጋጀ የማስፈጸሚያ መገለጫ መረጃን የሚጠቀመው BOLT አመቻች ታክሏል። BOLT ን በመጠቀም የማቀነባበሪያውን መሸጎጫ በብቃት ለመጠቀም የlibrusc_driver.so ላይብረሪ ኮድ አቀማመጥን በመቀየር የማጠናከሪያ አፈፃፀምን በ2% ያህል ለማፋጠን ያስችላል።

    በኤልኤልቪኤም ውስጥ የማመቻቸት ጥራትን ለማሻሻል የሩስትክ ማጠናከሪያውን በ "-Ccodegen-units=1" አማራጭ መገንባትን ያካትታል። የተከናወኑት ሙከራዎች በ "-Ccodegen-units=1" ግንባታ ላይ በግምት 1.5% የአፈፃፀም ጭማሪ ያሳያሉ። የተጨመሩት ማትባቶች በነባሪነት የነቁት ለ x86_64-unknown-linux-gnu መድረክ ብቻ ነው።

    ቀደም ሲል የተገለጹት ማሻሻያዎች በሩስት ውስጥ የተፃፉ የአንድሮይድ የመሳሪያ ስርዓት ክፍሎች የሚገነቡበትን ጊዜ ለመቀነስ በGoogle ተፈትኗል። አንድሮይድ ስንገነባ "-C codegen-units=1" ን በመጠቀም የመሳሪያውን መጠን በ5.5% እንድንቀንስ እና አፈፃፀሙን በ1.8% እንድናሳድግ አስችሎናል፣የመሳሪያ ኪቱ ግንባታ ጊዜ በራሱ በእጥፍ ሊጨምር ነበር።

    በአገናኝ-ጊዜ የቆሻሻ ማጠራቀሚያ ("-gc-sections")ን ማንቃት አፈፃፀሙን እስከ 1.9% በማምጣት የአገናኝ-ጊዜ ማመቻቸትን (LTO) እስከ 7.7% እና በመገለጫ ላይ የተመሰረቱ ማሻሻያዎችን (PGO) እስከ 19.8% አድርሷል። በመጨረሻው ላይ የ BOLT መገልገያን በመጠቀም ማመቻቸት ተተግብሯል, ይህም የግንባታ ፍጥነት ወደ 24.7% እንዲጨምር አስችሎታል, ነገር ግን የመሳሪያው መጠን በ 10.9% ጨምሯል.

    የፕሮግራም አወጣጥ ቋንቋ Rust 1.75 እና unikernel Hermit 0.6.7 መልቀቅ

  • የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
    • አቶሚክ*::ከptr
    • FileTimes
    • FileTimesExt
    • ፋይል::አዘጋጅ_የተሻሻለ
    • ፋይል :: set_times
    • IPAddr :: ወደ_ቀኖናዊ
    • Ipv6Addr :: ወደ_ቀኖናዊ
    • አማራጭ:: እንደ_ቁራጭ::
    • አማራጭ:: እንደ_mut_slice
    • ጠቋሚ :: ባይት_አክል
    • ጠቋሚ :: ባይት_ማካካሻ
    • ጠቋሚ ::ባይት_ካካሳ_ከ
    • ጠቋሚ ::ባይት_ንዑስ
    • ጠቋሚ ::መጠቅለል_ባይት_ጨምር
    • ጠቋሚ :: መጠቅለያ_ባይት_ማካካሻ
    • ጠቋሚ ::መጠቅለያ_ባይት_ንዑስ
  • ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን የሚወስነው የ"const" ባህሪ በተግባሮች ውስጥ ጥቅም ላይ ይውላል።
    • Ipv6Addr :: ወደ_ipv4_mapped
    • ምናልባት ዩኒት::አንብብ_ኢኒት_አንብብ
    • ምናልባት ዩኒት :: ዜሮ የተደረገ
    • mem :: አድሎአዊ
    • mem :: ዜሮ
  • ሶስተኛው የድጋፍ ደረጃ ለ csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd እና mipsel-unknown-netbsd መድረኮች ተተግብሯል። ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል፣ ነገር ግን ያለ አውቶሜትድ ሙከራ፣ ይፋዊ ግንባታዎችን ማተም ወይም ኮዱ መገንባት ይቻል እንደሆነ ማረጋገጥ።

በተጨማሪም፣ በዝገቱ ቋንቋ የተጻፈ ልዩ ከርነል (ዩኒከርነል) የሚያዳብር፣ በሃይፐርቫይዘር ወይም ባዶ ሃርድዌር ላይ ያለ ተጨማሪ ንብርብሮች ላይ የሚሰሩ የራስ አፕሊኬሽኖችን ለመገንባት የሚረዱ መሳሪያዎችን የሚያቀርብ አዲሱን የሄርሚት ፕሮጄክትን ልብ ማለት እንችላለን። እና ያለ ስርዓተ ክወና. ሲገነባ፣ አፕሊኬሽኑ ከስርዓተ ክወናው ከርነል እና ከስርዓት ቤተ-መጻሕፍት ጋር ሳይያያዝ ሁሉንም አስፈላጊ ተግባራትን በራሱ ከሚተገበረው ቤተ-መጽሐፍት ጋር በስታቲስቲክስ የተገናኘ ነው። የፕሮጀክት ኮድ በ Apache 2.0 እና MIT ፍቃዶች ይሰራጫል። ጉባኤ በሩስት፣ ጎ፣ ፎርትራን፣ ሲ እና ሲ ++ የተፃፉ መተግበሪያዎችን ለብቻው እንዲፈፀሙ ይደገፋል። ፕሮጀክቱ QEMU እና KVMን በመጠቀም Hermitን ለማስጀመር የሚያስችል የራሱን ቡት ጫኝ በማዘጋጀት ላይ ነው።

ምንጭ: opennet.ru

አስተያየት ያክሉ