ልቀቱ ታትሟል ዝገት 1.96.0 — የቅርብ ጊዜው የተረጋጋ የሩስት ፕሮግራሚንግ ቋንቋ ስሪት። ዝመናው ተለቋል። 28 ግንቦት 2026 ዓመታት; መደበኛውን የሩስትፕ ዝማኔ የተረጋጋ ትዕዛዝ በመጠቀም ሊጫን ይችላል። ዋናዎቹ ለውጦች በኮር::range ውስጥ ያሉ አዳዲስ የክልል አይነቶችን፣ የንድፍ ማዛመጃ ማክሮዎችን ማረጋጋት፣ የWebAssembly ግንባታ ባህሪን ማጠንከር እና በካርጎ ውስጥ ላሉ ሁለት ተጋላጭነቶች ጥገናዎችን ያካትታሉ።
ዋና ለውጦች
አዲስ የክልል አይነቶች ኮር::ሬንጅ::ሬንጅ*።
አዲስ የክልል አይነቶች በመደበኛ ቤተ-መጽሐፍት ውስጥ ተረጋግተዋል፡ core::range::Range, RangeFrom, RangeInclusive እና ተያያዥ ኢተሬተሮች። ከcore::ops የመጡት የድሮ አይነቶች በተለየ መልኩ፣ አዲሶቹ ክልሎች Iteratorን በቀጥታ አይተገብሩም፣ ነገር ግን በIntoIterator በኩል ወደ ኢተሬተር ይቀየራሉ። ይህ እነዚህ ክልሎች ሊገለበጡ የሚችሉ እንዲሆኑ ያስችላቸዋል፣ ይህም ለምሳሌ ክልልን እንደ መዋቅር መስክ ሲያከማቹ ምቹ ነው። እንደ 0..1 ያሉ አገባብ በአሁኑ ጊዜ የድሮ የክልል አይነቶችን ይፈጥራል፣ ነገር ግን ወደፊት በሚመጣው የቋንቋ ስሪት ወደ አዲሶቹ ዓይነቶች እንዲዛወር ታቅዷል።የ assert_matches! እና debug_assert_matches! አክለዋል።
አዲስ ማክሮዎች አንድ እሴት ከተሰጠው ንድፍ ጋር እንደሚዛመድ እንዲያረጋግጡ ያስችሉዎታል። ይህ በፅንሰ-ሀሳብ ውስጥ ተመሳሳይ ነው!(ተዛማጆች!(…))፣ ነገር ግን ስህተት ከተፈጠረ የእሴቱ የስህተት ውክልና ታትሟል፣ ይህም ምርመራዎችን ቀላል ያደርገዋል። እነዚህ ማክሮዎች ከታዋቂ የሶስተኛ ወገን ክሬቶች ጋር ግጭቶችን ለማስወገድ ወደ ፕሪሉድ አልተጨመሩም፣ ስለዚህ በግልጽ ከኮር ወይም ከ std ማስመጣት አለባቸው።የWebAssembly ኢላማዎችን ባህሪ ቀይሯል።
ዝገት ከእንግዲህ ለWebAssembly ግንባታዎች ወደ አገናኝ አያልፍም --allow-undefined። ያልተገለጹ ምልክቶች አሁን በማገናኘት ጊዜ እንደ ስህተቶች ይቆጠራሉ፣ በራስ-ሰር ከ"env" ሞዱል ወደ ማስመጣት ከመቀየር ይልቅ። ይህ የግንባታ ስህተቶችን እና ልክ ያልሆኑ የምልክት ስሞችን ቀደም ብሎ መያዝ አለበት። የድሮው ባህሪ አስፈላጊ ከሆነ RUSTFLAGS=-Clink-arg=--allow-undefinedን በመጠቀም ወይም #[link(wasm_import_module = "env") በመጠቀም የገባውን wasm ሞዱል በግልጽ በመግለጽ ሊመለስ ይችላል።ካርጎ የደህንነት ጥገናዎችን አግኝቷል።
በቋንቋ ላይ የተደረጉ ለውጦች።
ልቀቱ የሚከተሉትን ያካትታል፦ በርካታ ጥቃቅን ጥገናዎች እና ማሻሻያዎች፡- የማክሮዎችን expr metavariables ወደ cfg ማስተላለፍ፣ በtuple አገላለጾች ውስጥ በጭራሽ-አይነት ቀረጻን ማስተካከል፣ ለተግባር ክርክሮች የተሳሳቱ የአይነት ማጠቃለያ ፍንጮችን ማስተካከል፣ በመስመር ውስጥ ስብሰባ ውስጥ ለs390x ቬክተር መዝገቦች ድጋፍ መጨመር እና እንደ አብነቶች ManuallyDrop constantsን እንደገና መፍቀድ - ይህ በ Rust 1.94.0 ውስጥ የገባውን ሪግሬሽን ያስተካክላል።በኮምፓይለር እና በፕላትፎርሞች ላይ የተደረጉ ለውጦች።
ለ LinuxየLoongArch ኢላማዎች የሊንክ ሪሌሽን ድጋፍ ነቅቷል - ይህ የኮድ ማሰማራት ከተደረገ በኋላ አንዳንድ ሽግግሮችን እና ጥሪዎችን የሚያቃልል የማገናኛ ማመቻቸት ነው። ለriscv64gc-unknown-fuchsia፣ የመሠረት ውቅር ወደ RVA22 መገለጫ ተዘምኗል እና ለቬክተር ቅጥያዎች ድጋፍ አለው።መደበኛ የቤተ-መጽሐፍት ዝመናዎች።
በኖንዜሮ ኢንቲጀር ክልሎች ላይ የመድገም ድጋፍ ታክሏል። በSGX ውስጥ በToSocketAddr በኩል የአስተናጋጅ አድራሻዎችን ቸልተኛ አያያዝም ተስተካክሏል፣ እና "ሊነበብ የሚችል/ሊጻፍ የሚችል" ማህደረ ትውስታ ፍቺ በሰነዱ እና በውስጥ ኮንትራቶች ውስጥ ተብራርቷል፡ ባዶ ጠቋሚው ከአጠቃላይ ፍቺው ተወግዷል፣ እና አሁን ለተወሰኑ ዘዴዎች ልዩ ሁኔታዎች ለየብቻ ተገልጸዋል።የተረጋጉ ኤፒአይዎች።
ከተረጋጉት በይነገጾች መካከል assert_matches!፣ debug_assert_matches!፣ From የተተገበሩ ትግበራዎች ይገኙበታል። ለAssertUnwindSafe , LazyCell እና ላዚሎክ እንዲሁም ከኮር::range የተውጣጡ አዳዲስ የክልል አይነቶች እና ኢተሬተሮች፣ Range፣ RangeFrom፣ RangeToInclusive እና ኢተሬተሮቻቸውን ጨምሮ።ጭነት፡- ጥገኛ እና ሰነዶች ላይ የተደረጉ ለውጦች።
ጥገኝነት አሁን የጂት ማከማቻ እና አማራጭ መዝገብ ሊገልጽ ይችላል፡ የጂት ስሪት በአካባቢው ጥቅም ላይ ይውላል፣ እና የመዝገብ ስሪቱ በሚታተምበት ጊዜ ጥቅም ላይ ይውላል፣ ልክ እንደ crates.io ባህሪ። በካርጎ ውቅር ውስጥ ለ target.'cfg(..)'.rustdocflags ድጋፍም ታክሏል።ሩስትዶክ አሁን ሰነዶችን የበለጠ በትክክል ያስተናግዳል።
የተቋረጡ የኤፒአይ ማስታወሻዎች አሁን እንደ መደበኛ ሰነድ ሆነው ይታያሉ፣ ያለ ቀዳሚው ልዩ ሂደት በነጭ ቦታ፡ ቅድመ-መጠቅለያ። በተጨማሪም፣ rustdoc ከአሁን በኋላ በ impl ውስጥ ላሉ አባሎች_doc_code_examples_missing_afters_ን አያሳይም፣ እና ዘዴዎች እና ተያያዥ ተግባራት አሁን በሰነድ የጎን አሞሌ ውስጥ ተለያይተዋል።ሊሆኑ የሚችሉ አለመጣጣሞች።
ልቀቱ በመደበኛ ያልሆነ ኮድ ውስጥ ሊታዩ የሚችሉ በርካታ ለውጦችን ይዟል፡ የአንዳንድ #[repr(Int)] ኢነሞች አቀማመጥ በጣም ከባድ በሆኑ ጉዳዮች ላይ ተስተካክሏል፣ እና በፒን ውስጥ ያሉ አንዳንድ ጥቅም የሌላቸው መጠን ያላቸው ጣሳዎች ተሰናክለዋል። የWebAssembly ግንባታዎች አሁን ባልተገለጹ ምልክቶች ላይ ይበላሻሉ፣ በአጋጣሚ የተረጋገተው #![reexport_test_harness_main] ባህሪ እንደገና የባህሪ በርቷል፣ የ -Csoft-float አማራጭ ተወግዷል፣ እና ዝቅተኛው ውጫዊ የLLVM ስሪት ወደ 21 ጨምሯል። ለAVR፣ የc_double አይነት ወደ f32 ተቀይሯል፣ ምክንያቱም C ድርብ በእነዚህ ኢላማዎች ላይ በነባሪነት 32-ቢት ናቸው።
ምንጭ: linux.org.ru
