በሞዚላ ፕሮጀክት የተመሰረተው አሁን ግን በገለልተኛ የሩስት ፋውንዴሽን ስር የተገነባው የ Rust 1.99 ፕሮግራሚንግ ቋንቋ ተለቋል። ቋንቋው በማህደረ ትውስታ ደህንነት ላይ ያተኩራል እና ከፍተኛ ትይዩ ተግባርን ለማሳካት መሳሪያዎችን ያቀርባል, ነገር ግን ቆሻሻ ሰብሳቢ እና የሩጫ ጊዜ ሳይጠቀሙ (የሩጫ ጊዜው ወደ መሰረታዊ አጀማመር እና መደበኛ ቤተ-መጽሐፍት ጥገና ይቀንሳል).
የሩስት የማህደረ ትውስታ አስተዳደር ዘዴዎች በጠቋሚ ማኔጅመንት ላይ ያሉ ስህተቶችን ለማስወገድ እና እንደ ማህደረ ትውስታ ከተለቀቀ በኋላ መድረስ፣ ባዶ ጠቋሚዎችን አለማመልከት፣ የቋት ከመጠን በላይ መሸፈን እና የመሳሰሉትን የመሳሰሉ ዝቅተኛ ደረጃ ማህደረ ትውስታ አስተዳደርን ከሚፈጥሩ ችግሮች ለመጠበቅ የተነደፉ ናቸው። ፕሮጀክቱ ቤተ-መጻሕፍትን ለማሰራጨት፣ ግንባታዎችን ለማመቻቸት እና ጥገኝነቶችን ለማስተዳደር የካርጎ ጥቅል አስተዳዳሪን እያዘጋጀ ነው። crates.io ማከማቻ ቤተ-መጻሕፍትን ለማስተናገድ የተጠበቀ ነው።
የማህደረ ትውስታ ደህንነት በራስት ውስጥ በማጠናቀር ጊዜ በማጣቀሻ ቁጥጥር ፣የነገሮችን ባለቤትነት በመከታተል ፣የእቃውን የህይወት ዘመን (ስፋት) በመከታተል እና በኮድ አፈፃፀም ወቅት የማስታወስ ችሎታን ትክክለኛነት በመገምገም ይሰጣል ። ዝገት ከኢንቲጀር መብዛት ጥበቃን ይሰጣል፣ ከመጠቀምዎ በፊት ተለዋዋጭ እሴቶችን የግዴታ ማስጀመርን ይጠይቃል፣ በመደበኛ ቤተ-መጽሐፍት ውስጥ ስህተቶችን በተሻለ ሁኔታ ይቆጣጠራል ፣ የማይለዋወጥ ማጣቀሻዎችን እና ተለዋዋጮችን በነባሪነት ይተገበራል ፣ ምክንያታዊ ስህተቶችን ለመቀነስ ጠንካራ የማይንቀሳቀስ ትየባ ይሰጣል።
ዋና ፈጠራዎች፡-
- ዝገት አሁን ከC ፕሮጀክቶች (C ABI) ለመደወል የተለዋዋጭ ተግባራትን እንዲፈጥሩ ያስችልዎታል። በእንደዚህ አይነት ተግባራት ውስጥ ያለው የፓራሜትር ዝርዝር የመጨረሻው አካል በ Rust ውስጥ በልዩ ዓይነት VaList የሚስተናገደው "..." ግንባታ ሊሆን ይችላል፣ ይህም በC ውስጥ ካለው va_list ጋር ተመሳሳይ በሆነ መልኩ ይሰራል። ደህንነቱ የተጠበቀ ውጫዊ "C" fn sum(mut args: ...) -> i32 { let a = safe { args.next_arg:: () }; var b = ደህንነቱ ያልተጠበቀ { args.next_arg:: () }; a + b } fn foo() -> i32 { ደህንነቱ ያልተጠበቀ { sum(0i32, 2i32) } }
- የLayout::for_value_raw፣ mem::size_of_val_raw፣ እና mem::align_of_val_raw ተግባራት እንደ ቁርጥራጮች ያሉ ተለዋዋጭ መጠን ያላቸውን አይነቶች ሲጠቀሙ የውሂብ ማጣቀሻዎችን መፍጠር ሳያስፈልግ ደህንነቱ የተጠበቀ መጠን ያላቸውን የጥሬ ጠቋሚዎች መጠን እና አሰላለፍ እንዲኖር ለማስቻል ተረጋግተዋል።
- ሰነዱ አሁን ወደ Box::leak (የዙር ጉዞ የማይፈስ) ጥሪ በማድረግ በስታቲስቲክስ ደረጃ ላልተወሰነ የዕድሜ ልክ (&'static) የተጠቀሰ ማህደረ ትውስታን ነፃ ማድረግን ይመክራል፣ ምክንያቱም ይህ እርምጃ ከወደፊት የኮምፓተር ማሻሻያ እና ሊሰኩ ከሚችሉ የማህደረ ትውስታ ምደባ ዘዴዎች ጋር አለመጣጣም ምክንያት ችግሮችን ሊያስከትል ይችላል። ለጊዜያዊ የባለቤትነት ዝውውሮች የማይንቀሳቀስ ማጣቀሻ ከመፍጠር ይልቅ፣ ለምሳሌ ወደ Box::into_non_null ጥሪ በኩል ጥሬ ጠቋሚዎችን መጠቀም ይመከራል።
- የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
- ለሳጥን ኢንቶኢቴሬተር<[T; N]>
- ለ&Box ኢንቶኢቴሬተር<[T; N]>
- ለ &mut Box IntoIterator<[T; N]>
- VecDeque::retain_back
- ኮር::ffi::VaList
- ሣጥን::ወደ_ያልሆነ_አካል_አካል
- ሣጥን::ከ_ፍሮም_ያልሆነ_አካል
- Vec::into_parts
- ቬክ::from_parts
- ኮር::ሜም::መጠን_የ_val_raw_ውድ
- ኮር::ሜም::align_of_val_raw
- ኮር::alloc::Layout::for_value_raw
- String::from_utf8_lossy_owned
- ሕብረቁምፊ::FromUtf8Error::into_utf8_losy
- ለስቴፕባይ FusedIterator
- std::fs::set_times
- std::fs::set_times_nofollow
- የጭነት ፓኬጅ አስተዳዳሪው አሁን ከ"ዴቭ" መገለጫ ጋር ተመሳሳይ የሆነ አዲስ አብሮ የተሰራ "ዲበግ" መገለጫ አለው (ዲበግ እና የልማት ችሎታዎች ወደፊት ለመለያየት ታቅደዋል)። በCI ውስጥ ሲገነቡ የተጨማሪ ማጠናቀር በነባሪነት ይሰናከላል።
- የriscv64-unknown-linux-musl target platform ወደ ደረጃ 2 ተዛውሯል፣ ይህም የግንባታ ዋስትና ይሰጣል ነገር ግን የሙከራ ስብስብ የማለፊያ ዋስትና የለውም።
በተጨማሪም፣ በቅርብ ጊዜ ከዝስት ጋር የተያያዙ ፕሮጀክቶችን እና ዝግጅቶችን ማጉላት እንፈልጋለን፡
- ማይክሮሶፍት Rustን ወደ ደረጃ 1 ቋንቋ አሻሽሎታል እና በኩባንያው ውስጥ በሁሉም የእድገት ደረጃዎች ሙሉ ድጋፍ ይሰጣል። ቀደም ሲል ለC++፣ C# እና TypeScript የደረጃ 1 ድጋፍ ይሰጥ ነበር። Rust ቀድሞውኑ ከ100 በላይ በማይክሮሶፍት ማከማቻዎች ውስጥ ጥቅም ላይ ውሏል። ከሌሎች ነገሮች በተጨማሪ የ Rust ክፍሎች ቀድሞውኑ እንደ ማይክሮሶፍት 365 እና Copilot ባሉ ምርቶች ውስጥ ጥቅም ላይ ይውላሉ፣ እና ለ Rust የተወሰነ የኋላ ክፍል፣ rustc_codegen_utc፣ በ rustc compiler ላይ የተመሠረተ፣ ለ MSVC ኮምፓይለር ተዘጋጅቷል።
ማይክሮሶፍት የደህንነት ወሳኝ ኮድን ለማጠናከር የሩስት አጠቃቀምን ዋና ዓላማ ጠቅሷል። እንደ ማይክሮሶፍት አዙር ሲቲኦ ዘገባ፣ በግምት 70% የሚሆኑት ተጋላጭነቶች በ ውስጥ Windows እነዚህም የሚከሰቱት በሩስት (Rust) በመጠቀም ሊወገዱ በሚችሉ የማስታወስ ችሎታ አስተዳደር ችግሮች ምክንያት ነው።
- ጉግል ከከርነል አስወግዶታል። Linux በC የተጻፈው የድሮው የቢንደር አይፒሲ ትግበራ በሩስት ውስጥ እንደገና የተፃፈ አዲስ የቢንደር አይፒሲ ነጂ በመደገፍ ተቋርጧል። በ15 ዓመታት ውስጥ አሮጌው ነጂ ከፍተኛ የቴክኒክ ዕዳ እና በርካታ ችግሮች እንዳከማቸ ተገልጻል፣ ይህም የሳንካ መፈለጊያ፣ ጥገና እና አዳዲስ ባህሪያትን መጨመር እንዳስተጓጎለ ልብ ይሏል። በሩስት ውስጥ ያለው የቢንደር አይፒሲ ነጂ እንደ ዋና ነጂ ተመድቧል እና ከአሁን በኋላ እንደ የሙከራ ልማት አይቀርብም።
- የቶር የመሳሪያ ኪትስ የሩስት ትግበራ የሆነው አርቲ 2.7.0 ተለቋል። የአርቲ የኮድ መሰረት የC ትግበራን ሙሉ በሙሉ ለመተካት የሚያስችል ደረጃ ላይ ሲደርስ፣ የቶር ገንቢዎች አርቲን ዋናውን የቶር ትግበራ ለማድረግ እና የC ትግበራ ጥገናን ቀስ በቀስ ለማራዘም አቅደዋል። አዲሱ ስሪት ለቅብብሎች እና አገልጋዮች የዳይሬክተሪ ባለስልጣን (DA) ተግባር ከሰነድ ትንተና፣ የማውጫ አገልጋይ መስታወት ድጋፍ እና የዲኤንኤስ ትራፊክ ሂደት ጋር የተያያዘ። የውቅር ለውጦች እና ፍተሻዎች የRPC ትግበራ ታክሏል። በርካታ ተጋላጭነቶች ተስተካክለዋል - የሽንኩርት አገልግሎት አስተዳዳሪዎች ስርዓቶቻቸውን በአስቸኳይ እንዲያዘምኑ ይመከራሉ።
ምንጭ: opennet.ru
