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

በሞዚላ ፕሮጀክት የተመሰረተው የስርዓተ ፕሮግራሚንግ ቋንቋ ዝገት 1.57 ተለቀቀ ፣ አሁን ግን በገለልተኛ ለትርፍ ያልተቋቋመ ድርጅት Rust Foundation ስር የተገነባ ፣ ታትሟል። ቋንቋው በማህደረ ትውስታ ደህንነት ላይ ያተኩራል፣ አውቶማቲክ የማህደረ ትውስታ አስተዳደርን ይሰጣል፣ እና ቆሻሻ ሰብሳቢ ወይም የሩጫ ጊዜ ሳይጠቀሙ ከፍተኛ ተግባርን ትይዩ ለማድረግ የሚያስችል ዘዴን ይሰጣል (የአሂድ ጊዜ ወደ መሰረታዊ ጅምር እና መደበኛ ቤተ-መጽሐፍት ጥገና)።

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

ዋና ፈጠራዎች፡-

  • የ"ሽብር!"ማክሮ አጠቃቀም ተረጋግቷል። እንደ "const fn" መግለጫዎች ባሉ ማጠናቀር ወቅት በተፈጠሩ አውዶች ውስጥ። በተጨማሪም, "ሽብር!" ከመጠቀም በተጨማሪ. የኮንስት መግለጫዎች የ“ማስረጃ!” ማክሮን መጠቀም ይፈቅዳሉ። እና አንዳንድ ሌሎች መደበኛ ቤተ-መጽሐፍት APIs። ማረጋጊያው ሙሉውን የቅርጸት መሠረተ ልማት እስካሁን አይሸፍንም, ስለዚህ አሁን ባለው መልኩ "ሽብር!" ማክሮ በስታቲክ ሕብረቁምፊዎች (በድንጋጤ!("...")) ወይም በአንድ የተጠላለፈ እሴት "&str" በምትተካበት ጊዜ (ድንጋጤ!("{}"፣ ሀ)) ብቻ መጠቀም ይቻላል፣ ይህም "{"ን በመተካት ብቻ የተወሰነ መሆን አለበት። }" መግለጫዎችን እና ሌሎች ዓይነቶችን ሳይቀርጹ። ለወደፊቱ, በቋሚ አውዶች ውስጥ የማክሮዎች ተፈጻሚነት ይስፋፋል, ነገር ግን የተረጋጉ ችሎታዎች በማጠናቀር ደረጃ ላይ የማስረጃ ቼኮችን ለማከናወን በቂ ናቸው: const _: () = አስርት!(std:: mem:: size_of::): ()== 64); const _: () = ማስረገጥ!(std:: mem:: size_of:::: ()== 8);
  • የካርጎ ጥቅል አስተዳዳሪ በ"dev"፣"መለቀቅ"፣"ሙከራ" እና "ቤንች" ላይ ብቻ ሳይወሰን የዘፈቀደ ስሞች ያላቸውን መገለጫዎች መጠቀም ያስችላል። ለምሳሌ፣ በማገናኘት ደረጃ (LTO) ላይ ማመቻቸትን ለማንቃት የመጨረሻዎቹ የምርት ስብስቦች ሲፈጠሩ ብቻ በCargo.toml ውስጥ የ"ምርት" መገለጫ መፍጠር እና የ"lto = true" ባንዲራ ማከል ይችላሉ። ሆኖም የእራስዎን መገለጫዎች ሲገልጹ ነባሪ ቅንብሮችን ከእሱ ለመውረስ ነባር መገለጫን መግለጽ አለብዎት። ከታች ያለው ምሳሌ የ"lto = እውነት" ባንዲራ በማካተት "የተለቀቀውን" መገለጫ የሚያሟላ "ምርት" ይፈጥራል. ፕሮፋይሉ በራሱ ካርጎን ከ "--መገለጫ ምርት" አማራጭ ጋር በመደወል ይንቀሳቀሳል, እና የመሰብሰቢያው እቃዎች በ "ዒላማ / ምርት" ማውጫ ውስጥ ይቀመጣሉ. [profile.production] ይወርሳል = "መለቀቅ" lto = እውነት
  • ለ Vec፣ String፣ HashMap፣ HashSet እና VecDeque አይነቶች የ try_reserve አጠቃቀም ተረጋግቷል፣ ይህም የማህደረ ትውስታ ምደባ ስራዎችን ድግግሞሽ ለመቀነስ እና ለተወሰኑ ንጥረ ነገሮች አስቀድመው ቦታ እንዲያስቀምጡ ያስችልዎታል። በማስታወስ እጥረት ምክንያት በሚሠራበት ጊዜ ብልሽቶች።
  • እንደ "m!{ .. }.ዘዴ()" እና "m!{ .. }?" ባሉ አገላለጾች ውስጥ ማክሮዎችን ከጥቅል ማያያዣዎች ጋር መግለጽ ተፈቅዶለታል።
  • የፋይሉ አፈጻጸም:: read_to_end እና read_to_string ተግባራት ተመቻችተዋል።
  • የዩኒኮድ ዝርዝር ድጋፍ ወደ ስሪት 14.0 ተዘምኗል።
  • የመመለሻ ዋጋው ችላ ከተባለ ማስጠንቀቂያ ለመስጠት "#[መጠቀም_ያለበት]" የሚል ምልክት የተደረገባቸው የተግባር ብዛት ተዘርግቷል፣ ይህም አንድ ተግባር አዲስ እሴት ከመመለስ ይልቅ እሴቶችን ይለውጣል ተብሎ በመገመት የተፈጠሩ ስህተቶችን ለመለየት ይረዳል።
  • libgccjitን በመጠቀም ለኮድ ማመንጨት የሙከራ ደጋፊ ታክሏል።
  • የባህሪ ዘዴዎችን እና አተገባበርን ጨምሮ አዲስ የ API ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፡
    • [ቲ; N] :: እንደ_ሙት_ቁራጭ
    • [ቲ; N] :: እንደ_ክፍል
    • ስብስቦች::TryReserveError
    • HashMap::መያዝ_ሞክር
    • HashSet::መያዝ_ሞክር
    • ሕብረቁምፊ::ተጠባባቂ_ይሞክሩ
    • ሕብረቁምፊ:: በትክክል_መያዝ_ይሞክሩ
    • ቬክ :: ሞክር_መጠባበቂያ
    • ቬክ:: በትክክል_መያዝ_ይሞክሩ
    • VecDeque :: try_reserve
    • VecDeque:: try_reserve_exact
    • ኢተርተር ::ካርታ_በነበረበት ጊዜ
    • iter :: ካርታ እያለ
    • proc_macro ::ይገኛል::
    • ትዕዛዝ::ፕሮግራም ያግኙ
    • ትዕዛዝ::አግኝ_አርግ
    • ትዕዛዝ ::ኢንቪስ ያግኙ
    • ትዕዛዝ ::የአሁኑ_dir_አግኝ
    • CommandArgs
    • CommandEnvs
  • ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ ጥቅም ላይ ሊውል እንደሚችል የሚወስነው የ"const" ባህሪው በተግባሩ ፍንጭ ውስጥ ጥቅም ላይ ይውላል:: የማይደረስ_ያልተረጋገጠ።
  • ሦስተኛው የድጋፍ ደረጃ ለ armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi እና armv7a-kmc- ተተግብሯል. ጠንካራ_asp3-eabihf መድረኮች። ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል፣ ነገር ግን ያለ አውቶሜትድ ሙከራ፣ ይፋዊ ግንባታዎችን ማተም ወይም ኮዱ መገንባት ይቻል እንደሆነ ማረጋገጥ።

ምንጭ: opennet.ru

አስተያየት ያክሉ