ዝገት 1.64 የፕሮግራም አወጣጥ ቋንቋ መለቀቅ

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

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

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

ዋና ፈጠራዎች፡-

  • ለሊኑክስ አከባቢ በአቀነባባሪው ፣ የካርጎ ፓኬጅ ማኔጀር እና የሊቢስትድ መደበኛ ቤተ-መጽሐፍት መስፈርቶች ጨምረዋል - ለግሊቢ አነስተኛ መስፈርቶች ከስሪት 2.11 ወደ 2.17 ፣ እና የሊኑክስ ከርነል ከስሪት 2.6.32 ወደ 3.2 ከፍ ብሏል። እገዳዎቹ በlibstd የተገነቡ የ Rust መተግበሪያ ፈጻሚዎች ላይም ተፈጻሚ ይሆናሉ። የስርጭት መሳሪያዎች RHEL 7፣ SLES 12-SP5፣ Debian 8 እና Ubuntu 14.04 አዲሶቹን መስፈርቶች ያሟላሉ። የ RHEL 6፣ SLES 11-SP4፣ Debian 7 እና Ubuntu 12.04 ድጋፍ ይቋረጣል። የቆየ ሊኑክስ ከርነል ባለባቸው አካባቢዎች Rust-built executables የሚጠቀሙ ተጠቃሚዎች ስርዓቶቻቸውን እንዲያሻሽሉ፣ በአሮጌው የአቀናባሪ ልቀቶች ላይ እንዲቆዩ ወይም ተኳሃኝነትን ለመጠበቅ የራሳቸውን የሊብስትድ ሹካ ከንብርብሮች ጋር እንዲይዙ ይበረታታሉ።

    የቆዩ የሊኑክስ ስርዓቶች ድጋፍን ከማቆም ምክንያቶች መካከል ከአሮጌ አከባቢዎች ጋር ተኳሃኝነትን ለማስቀጠል ውስን ሀብቶች አሉ። ለLegacy Glibc ድጋፍ በኤልኤልቪኤምኤ እና በጥቅል አቋራጭ መገልገያዎች ውስጥ የስሪት መስፈርቶችን እየጨመረ በመምጣቱ ቀጣይነት ባለው የውህደት ስርዓት ውስጥ ሲፈተሽ የቆዩ መሣሪያዎችን መጠቀምን ይጠይቃል። የከርነል ስሪት መስፈርቶች መጨመር ከአሮጌ ከርነሎች ጋር ተኳሃኝነትን ለማረጋገጥ ንብርብሮችን ማቆየት ሳያስፈልግ በlibstd ውስጥ አዲስ የስርዓት ጥሪዎችን መጠቀም በመቻሉ ነው።

  • የIntoFuture ባህሪው ተረጋግቷል፣ እሱም ኢንቶኢተሬተርን ይመስላል፣ ነገር ግን ከ ".wait" ይልቅ "ለ ... በ ..." loops በመጠቀም ከሁለተኛው ይለያል። ከIntoFuture ጋር ሲጣመር የ".wait" ቁልፍ ቃል የወደፊት ባህሪን ብቻ ሳይሆን ወደ ወደፊት ሊለወጡ የሚችሉ ሌሎች አይነቶችንም ሊጠብቅ ይችላል።
  • የዝገቱ-ተንታኝ መገልገያው ከሩስት ልቀቶች ጋር በተሰጡት መገልገያዎች ስብስብ ውስጥ ተካትቷል። መገልገያው ሩትን በመጠቀም ለመጫንም ይገኛል (የሩፕ አካል ዝገት-ተንታኝ ይጨምሩ)።
  • የካርጎ ጥቅል አስተዳዳሪ እንደ ዝገት ስሪቶች እና የማከማቻ ዩአርኤሎች ያሉ በጥቅሎች መካከል ያሉ የተለመዱ የመስክ እሴቶች መባዛትን ለማስወገድ የስራ ቦታ ውርስ ያካትታል። እንዲሁም ለብዙ ዒላማ መድረኮች በአንድ ጊዜ ለመገንባት ድጋፍ ታክሏል (አሁን በ "--ዒላማ" አማራጭ ውስጥ ከአንድ በላይ መለኪያ መግለጽ ይችላሉ).
  • የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
    • ወደፊት :: ወደፊት
    • ቁጥር::ዜሮ ያልሆነ*::የተረጋገጠ_mul
    • ቁጥር::ዜሮ ያልሆነ*::የተፈተሸ_ፓው
    • ቁጥር::ዜሮ ያልሆነ*:: saturating_mul
    • ቁጥር :: ዜሮ ያልሆነ* :: saturating_pow
    • ቁጥር :: ዜሮ ዜሮ * :: abs
    • ቁጥር :: ዜሮ ዜሮ * :: የተረጋገጠ_abs
    • ቁጥር :: ዜሮ ዜሮ * :: የተትረፈረፈ_abs
    • ቁጥር :: ዜሮ ዜሮ * :: saturating_abs
    • ቁጥር :: ዜሮ ዜሮ * :: ያልተፈረመ_አብስ
    • ቁጥር :: ዜሮ ዜሮ * :: መጠቅለያ_abs
    • ቁጥር:: ዜሮ ዩ*:: የተረጋገጠ_አክል
    • ቁጥር :: ዜሮ ዩ* :: የሁለት_ቀጣይ_ሀይል ታይቷል።
    • ቁጥር:: ዜሮ ዩ*:: saturating_ add
    • os :: unix :: ሂደት :: CommandExt :: የሂደት_ግሩፕ::
    • os :: ዊንዶውስ :: fs :: FileTypeExt :: is_symlink_dir::
    • os :: ዊንዶውስ :: fs :: FileTypeExt :: is_symlink_file::
  • ከዚህ ቀደም በ std :: ffi ሞጁል ውስጥ የተረጋጉ ከ C-ተኳሃኝ ዓይነቶች ወደ ኮር እና አሎክ ቤተ-መጽሐፍት ተጨምረዋል፡
    • አንኳር :: ffi :: CStr
    • አንኳር :: ffi :: ከባይtesWithNulError
    • alloc :: ffi :: CString
    • alloc :: ffi :: ከVecWithNulError
    • አሎክ:: ኤፍፊ:: በString ስህተት
    • alloc :: ffi :: NulError
  • ቀደም ሲል በ std ውስጥ የተረጋጉ የ C ዓይነቶች :: os :: ጥሬ ሞጁል ወደ ኮር :: ffi እና std :: ffi ሞጁሎች ተጨምረዋል (ለምሳሌ ፣ c_uint እና c_ulong አይነቶች ለ uint እና ulong C አይነቶች ቀርበዋል)።
    • ffi:: c_char
    • ffi:: c_ድርብ
    • ffi:: c_float
    • ffi:: c_int
    • ffi:: c_ረጅም
    • ffi:: c_ረጅም
    • ffi:: c_schar
    • ffi:: c_አጭር
    • ffi:: c_uchar
    • ffi:: c_uint
    • ffi:: c_ulong
    • ffi:: c_ulonglong
    • ffi:: c_ushort
  • ዝቅተኛ ደረጃ ተቆጣጣሪዎች በPoll ዘዴ ጥቅም ላይ እንዲውሉ ተረጋግተዋል (ለወደፊቱ እንደ ፑል እና ፒን ያሉ ዝቅተኛ ደረጃ መዋቅሮችን መጠቀም የማይፈልግ ቀለል ያለ ኤፒአይ ለማቅረብ ታቅዷል)

    • ወደፊት :: የሕዝብ አስተያየት_fn
    • ተግባር:: ዝግጁ!
  • ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን የሚወስነው የ"const" ባህሪው በክፍል ውስጥ :: ከጥሬ_ጥሬ_ፓርቶች ተግባር ውስጥ ጥቅም ላይ ይውላል።
  • መረጃን ይበልጥ በተጨናነቀ ለማከማቸት የIpv4Addr፣ Ipv6Addr፣ SocketAddrV4 እና SocketAddrV6 መዋቅሮች የማህደረ ትውስታ አቀማመጥ ተቀይሯል። ለዝቅተኛ ደረጃ የመዋቅር ማጭበርበር std:: mem:: transmute ከሚጠቀሙ ነጠላ ሳጥኖች ጋር የተኳሃኝነት ችግር ሊኖር ይችላል።
  • ለዊንዶውስ መድረክ የዝገት ማጠናከሪያ ግንባታ የ PGO ማሻሻያዎችን (በመገለጫ የሚመራ ማመቻቸት) ይጠቀማል ፣ ይህም የኮድ ማጠናቀር አፈፃፀምን ከ10-20% ለማሳደግ አስችሎታል።
  • አቀናባሪው በአንዳንድ መዋቅሮች ውስጥ ጥቅም ላይ ያልዋሉ መስኮችን በተመለከተ አዲስ ማስጠንቀቂያ ተግባራዊ አድርጓል።

በተጨማሪም፣ በgccrs ፕሮጀክት (ጂሲሲሲ ዝገት) ተዘጋጅቶ በጂሲሲ ውስጥ እንዲካተት የጸደቀውን የ Rust ቋንቋ ማጠናከሪያ አማራጭ አተገባበር ልማት ላይ ያለውን የሁኔታ ሪፖርት ልብ ማለት ይችላሉ። የፊት መጋጠሚያውን ካዋሃዱ በኋላ መደበኛውን የጂ.ሲ.ሲ መሳሪያዎች የ LLVM እድገቶችን በመጠቀም የተሰራውን rustc compiler ን መጫን ሳያስፈልግ በሩስት ቋንቋ ፕሮግራሞችን ለማዘጋጀት ጥቅም ላይ ሊውል ይችላል። ልማቱ በሂደት ላይ እስካል ድረስ እና ያልተጠበቁ ችግሮችን የሚከለክል ከሆነ፣ የ Rust frontend በሚቀጥለው አመት በግንቦት ወር በታቀደው የጂሲሲ 13 ልቀት ውስጥ ይጣመራል። የGCC 13 የዝገት ትግበራ በቅድመ-ይሁንታ ሁኔታ ላይ ይሆናል፣ በነባሪነት እስካሁን አልነቃም።

ምንጭ: opennet.ru

አስተያየት ያክሉ