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

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

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

ዋና ፈጠራዎች፡-

  • ከቋሚ የጄኔቲክስ አጠቃቀም ጋር የተያያዘው ተግባራዊነት አነስተኛውን አዋጭ ምርት (MVP) ደረጃ ተቀብሏል፣ ይህም አረንጓዴ ብርሃንን በስፋት ጥቅም ላይ እንዲውል ያደርጋል። የኮንስት ጄኔቲክስ ዓይነቶችን ወደ ቋሚ እሴቶች አጠቃላይ እንዲሆኑ ያስችላቸዋል፣ ማለትም. በአይነት ወይም በህይወት ዘመን ሳይሆን በቋሚ እሴቶች ክልል የተገደቡ አጠቃላይ ነጋሪ እሴቶችን ተጠቀም። ይህ ባህሪ ከክልል ውጪ የሆኑ ክስተቶች አለመኖራቸውን ለማረጋገጥ ለእያንዳንዱ ትክክለኛ እሴት የተለየ አይነት መፍጠር ሳያስፈልግ ለማንኛውም መጠን ላሉ ድርድሮች ባህሪያትን ሲፈጥሩ ኢንቲጀር-መለኪያ ያላቸው ዓይነቶችን እና ረቂቅን እንዲጠቀሙ ይፈቅድልዎታል ።

    ከአሁኑ ልቀት ጀምሮ፣ ለድርድር ዓይነት “[T; N]" (አይነት ቲ እና መጠን N) ከማንኛውም ኢንቲጀር ፣ ቡሊያን እና የቁምፊ ዓይነቶች (የመዋቅር እና የቁጥር ዓይነቶች ገና አልተደገፉም) እሴቶችን በመጠቀም የአብነት እና የመጠን ችሎታን ይሰጣል። ቋሚ ጄኔቲክስ የቤተ-መጻህፍት እድገትን በእጅጉ ያቃልላል፡ ለምሳሌ፡ ከአንድ የተወሰነ አይነት እና መጠን ጋር ያልተገናኘ ድርድር ለመጠቀም፡ struct Array { // ^^^^^^^^^^^^^^^^^ የቋሚ አጠቃላይ ዝርዝር ፍቺ፡ [T; ርዝመት] // ^^^^^^ አጠቃቀሙ }

    በትክክል ከዚህ የ"Array" ፍቺ ጋር ጥቅም ላይ ሲውል » ማቀናበሪያው ሞኖሞርፊክ የ Array: struct Array ስሪት ያመነጫል። ዝርዝር: [u8; 32]}

  • std::array::IntoIter API፣በቋሚ ጀነሬክቶች ላይ የተመሰረተ፣ተረጋጋ፣በዚህም ለማንኛውም አደራደር በዋጋ ድግግሞሾችን መፍጠር ትችላላችሁ fn main() { let array = [1, 2, 3, 4, 5] ; // ከዚህ ቀደም በአንድ እሴት ላይ ለመድገም የ .iter () ዘዴን በ array.iter ().የተገለበጠ () { println! ("{}", ንጥል) መደወል ነበረብዎት; } // አሁን በ std :: array :: IntoIter :: አዲስ (ድርድር) {println!("{}") ውስጥ ያለውን ንጥል መግለጽ ትችላለህ። }
  • የካርጎ ፓኬጅ አስተዳዳሪ አሁን በCargo.toml ውስጥ አዲስ የመፍትሄ መስክን ይደግፋል፣ ይህም ሁለተኛውን የባህሪ ፈላጊውን ስሪት ለማንቃት ሊያገለግል ይችላል። አዲሱ የገለፃው ስሪት በ"[ባህሪዎች]" ክፍል ውስጥ የተዘረዘሩ ጥገኝነት ባህሪያትን አግባብነት የሌለው ከሆነ፣ ለምሳሌ፣ አንዳንድ መደበኛ ባህሪ በግንባታ ስክሪፕቶች እና ማክሮዎች ውስጥ የሚጠይቅ ጥገኝነት ሲያካትት፣ ነገር ግን መደበኛ ያልሆነ ባህሪን ሲጠቀሙ ከማጣመር ይቆጠባል። በውጤቱ ተፈጻሚነት ያለው ፋይል .

    እስካሁን ድረስ በጥገኛ ግራፍ ውስጥ ብዙ ጊዜ የተጠቀሰው የጥቅል ችሎታዎች ተጣምረው ነበር። ለምሳሌ አንድ ፕሮጀክት ጥገኝነት ፎን ያካተተ ከሆነ አቅምን A እና Bን የሚገልጽ ከሆነ እና ይህ ፓኬጅ በሌሎች ፓኬጆች ባር እና ባዝ ውስጥ ጥቅም ላይ ይውላል፣ ምንም እንኳን ባር በፉ በባህሪው ላይ የሚመረኮዝ ቢሆንም ባዝ ደግሞ ከባህሪ B ጋር የሚወሰን ቢሆንም፣ ከዚያ ውጤቱ ጭነት ይሆናል እነዚህን ባህሪያት በማጣመር እና ፊን ከተካተቱት A እና B ባህሪያት ጋር ያጠናቅራል. ይህ ዘዴ በተወሰነ ጥገኝነት ምክንያት የተፈጠረውን ግንባታ ከተሰራበት የዒላማ ስርዓት ጋር የማይጣጣም ስለሆነ የነቃ ባህሪን ሊያስከትል ይችላል. ለምሳሌ፣ በ"#![no_std]" በተሰራ executable ውስጥ የ foo ስሪት መጠቀም ሲፈልጉ እና በግንባታው ወቅት በተመሳሳይ ጊዜ foo ከ"std" ይጠቀሙ። rs. በCargo.toml ውስጥ resolver="2"ን ሲገልጹ፣የጥቅል አስተዳዳሪው አሁን ይህንን ግጭት በትክክል ለመቆጣጠር ይሞክራል፣የዴቭን፣አስተናጋጅ እና ዒላማ ጥገኛዎችን ይለያል።

  • ጭነት በ"[መገለጫ]" ክፍል ውስጥ የተቀመጠውን የተከፈለ-debuginfo አማራጭን እና ተዛማጅ ባንዲራ "-Csplit-debuginfo=unpacked" በ rustc ውስጥ ይተገበራል ፣ ይህም የማረም መረጃን ለማስቀመጥ አዲስ ዘዴን ተግባራዊ ያደርጋል ፣ ይህም የማረም አስፈላጊነትን ያስወግዳል። የ dsymutil utility ይደውሉ እና ሂደቱን በከፍተኛ ሁኔታ ያፋጥነዋል በማክሮስ ላይ ካለው የማረሚያ መረጃ ጋር።
  • የተረጋጋ ማኮስ "ptr :: addr_of!" እና "ptr:: addr_of_mut!", ይህም ላልተጣመሩ መስኮች ጥሬ ጠቋሚዎችን እንዲፈጥሩ ያስችልዎታል. std ይጠቀሙ :: ptr; #[repr(የታሸገ)] struct የታሸገ {f1: u8, f2: u16, } የታሸገ = የታሸገ {f1: 1, f2: 2}; // &packed.f2 ወደ ያልተገለጸ ባህሪ የሚያመራ ያልተስተካከለ ጠቋሚ ይፈጥራል let raw_f2 = ptr:: addr_of!(packed.f2); assert_eq! (ደህንነቱ ያልተጠበቀ { raw_f2.read_unaligned () }, 2);
  • የሚከተሉት ዘዴዎች የተረጋጉትን ጨምሮ አዲስ የኤፒአይ ክፍል ወደ የተረጋጋ ምድብ ተላልፏል።
    • አርክ ::ጠንካራ_ቁጥርን ቀንስ
    • አርክ::የጨመረ_ጠንካራ_ቁጥር
    • አንዴ::አንድ ጊዜ_ጥሪ_ሀይል
    • ሊታይ የሚችል::ቀጣይ_if_eq
    • ሊታይ የሚችል::ከሚቀጥለው_ከሆነ
    • ፈልግ::የዥረት_ቦታ
    • ድርድር :: IntoIter
    • መደናገጥ::ድንጋጤ_ማንኛውንም
    • ptr:: addr_የ!
    • ptr:: addr_of_mut!
    • ቁራጭ:: ሙላ
    • ቁራጭ :: የተከፈለ_አካታች_mut
    • ቁራጭ :: የተከፈለ_አካታች::
    • ቁራጭ :: ስትሪፕ_ቅድመ ቅጥያ
    • ቁራጭ :: ስትሪፕ_ቅጥያ
    • str :: የተከፈለ_አካታች
    • አመሳስል :: አንድ ጊዜ ግዛት
    • ተግባር:: ንቃ::
  • ሦስተኛው የድጋፍ ደረጃ ለ i386-ያልታወቀ-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32 እና aarch64_be-unknown-linux-gnu_ilp32 platforms ተተግብሯል . ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል፣ ነገር ግን ያለ አውቶሜትድ ሙከራ፣ ይፋዊ ግንባታዎችን ማተም እና የኮድ መገንባትን ማረጋገጥን ያካትታል።

ምንጭ: opennet.ru

አስተያየት ያክሉ