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

የታተመ የስርዓት ፕሮግራሚንግ ቋንቋ መለቀቅ ዝገት 1.42በሞዚላ ፕሮጀክት የተመሰረተ። ቋንቋው በማህደረ ትውስታ ደህንነት ላይ ያተኩራል፣ አውቶማቲክ የማህደረ ትውስታ አስተዳደርን ይሰጣል፣ እና ቆሻሻ ሰብሳቢ ሳይጠቀሙ ከፍተኛ ተግባርን ትይዩ ለማድረግ የሚረዱ መሳሪያዎችን ይሰጣል። አሂድ.

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

ዋና ፈጠራዎች:

  • ታክሏል። የተቆራረጡ ክፍሎች (ተለዋዋጭ ድርድሮች፣ ቁርጥራጭ) ለማዛመድ የአብነት ድጋፍ። ከዚህ ቀደም ትክክለኛ ግጥሚያዎች ተፈቅደዋል፣ አሁን ግን የተቀሩትን የድርድር አካላት ለመሸፈን "..." ምልክት የተደረገባቸውን ግንባታዎች መጠቀም ይቻላል። ለምሳሌ:

    fn foo(ቃላት: &[&str]) {
    ተዛማጅ ቃላት {

    // የድርድር መጀመሪያ አባሎችን ይፈትሻል እና ችላ ይላል።
    የሚከተሏቸው ንጥረ ነገሮች
    ["ሄሎ"፣ "አለም"፣ "!"፣ ..] => println!("ሄሎ አለም!")፣

    // የመጀመሪያዎቹን ሁለት አካላት "ፉ" እና "ባር" ይፈትሻል, እና የተቀረው አስፈላጊ አይደለም
    ["ፉ"፣ "ባር"፣ ..] => println!("ባዝ")፣

    // ሁሉንም ነገር ችላ ይበሉ, ነገር ግን የመጨረሻው አካል "!" መሆን አለበት.
    [.., “!”] => println!(“!!!”)፣

    // በመነሻ ቁራጭ ውስጥ ከመጨረሻው አካል በስተቀር ሁሉንም ነገር እናካትታለን ፣ እሱም “z” መሆን አለበት።
    [start @ .., "z"] => println!("በ: {:?} ይጀምራል"፣ ጀምር)

    // በመጨረሻው ቁራጭ ላይ ከመጀመሪያው ንጥረ ነገር በስተቀር ሁሉንም ነገር እናስቀምጣለን, እሱም "a" መሆን አለበት.
    ["a", መጨረሻ @ ..] => println!("በ{:?} ያበቃል"፣ መጨረሻ)፣

    rest => println!("{:?}"፣ እረፍት)፣
    }
    }

  • አዲስ ማክሮ “ተዛማጆች!” ታክሏል፣ እሱም አገላለጽ እና ስርዓተ-ጥለት እንደ ግብአት የሚወስድ እና ንድፉ ከገለጻው ጋር የሚዛመድ ከሆነ “እውነት” ይመልሳል። አብነት "|" ስራዎችን ሊጠቀም ይችላል እና "ከሆነ".

    ከself.partial_cmp(ሌላ) ጋር አዛምድ {
    አንዳንድ (ትንሽ) => እውነት፣
    _ => ሐሰት፣
    }

    ግጥሚያዎች!(self.partial_cmp(ሌላ)፣ አንዳንድ(ትንሽ))

    ፉ = 'f';
    አስረግጦ!(ተዛማጆች!(foo, 'A'..='Z' | 'a'..='z'));

    ባር = አንዳንድ (4);
    አስረግጦ! (ተዛማጆች! (ባር፣ አንዳንድ(x) x > 2 ከሆነ));

  • በተሳሳተ መንገድ ጥቅም ላይ ሲውል በሚታዩ አስደንጋጭ መልእክቶች ውስጥ
    አይነቶች አማራጭ እና ውጤት፣ አሁን በሊቢኮር ውስጥ ጥሪውን ከሚተገበረው ኮድ ጋር ከመገናኘት ይልቅ ችግር ያለበትን ጥሪ ካደረገው ኮድ ጋር የሚያገናኝ የመስመር ቁጥሮችን ያሳዩ። ለምሳሌ፣ ለውጡ ለመቀልበስ እና ከአማራጭ በላይ የሚጠብቁ ጥሪዎች ላይ ተጽእኖ ያደርጋል:: የለም፣ ወይም unwrap_err ሲጠቀሙ ይከሰታሉ፣ ይጠብቁ፣ ይጠብቃሉ እና ተመሳሳይ ዘዴዎች በውጤቱ አይነት።

  • የካርጎ ፓኬጅ ማኔጀር የ"proc_macro crate" ወደ "ውጫዊ" ብሎክ ከሂደት ማክሮዎች ጋር አውቶማቲክ መተካት ያቀርባል። ይህ ለውጥ የ"አጠቃቀም" መመሪያ በኮዱ ውስጥ "extern crate proc_macro;" ሳይገልጽ በሂደት ማክሮዎች ላይ እንዲተገበር ያስችለዋል። ለምሳሌ ፕሮግራሙ "proc_macro: TokenStream" የሚለውን መስመር ከተጠቀመ "ውጫዊ crate proc_macro;" ከተወገደ ኮዱ አሁን እየሰራ ይቆያል.
  • የመደበኛ ቤተ-መጽሐፍት ችሎታዎች ተዘርግተዋል. በኢተር :: ባዶ ታክሏል ለማንኛውም የቲ እሴቶች ድጋፍን ላክ እና አመሳስል።
    ጥሪዎች ፒን::{ካርታ_ያልተረጋገጠ፣ ካርታ_ያልተረጋገጠ_mut} አቅርቧል ለ "መጠን" አተገባበር አይነት ዋጋ ከመመለስ.
    በ io :: ጠቋሚ ተተግብሯል PartialEq እና Eq. የ"const" ባህሪው ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን ይወስናል ፣ ተተግብሯል ለ አቀማመጥ :: አዲስ ዘዴ.

  • አዲስ የኤፒአይ ክፍል ወደ የተረጋጋው ምድብ ተላልፏል፣የረጋውን CondVar ::ቆይ_ቆይ ፣ CondVar ::የመጠበቅ_ጊዜ_ያለቀ፣
    DebugMap::ቁልፍ፣ DebugMap:: እሴት፣
    በእጅ Drop:: ይውሰዱ፣
    ptr :: ከጥሬ_ክፍሎች_mut እና ptr :: ቁርጥራጭ_ከጥሬ_ክፍል።

  • ስህተቱ::የመግለጫ ዘዴው ተቋርጧል።
  • ለ armv7a-none-eabi እና riscv64gc-unknown-linux-gnu መድረኮች የሁለተኛ ደረጃ ድጋፍ ሰጠ። ለ riscv64gc-unknown-linux-gnu መድረክ ለመደበኛ ቤተ-መጽሐፍት ድጋፍ ተሰጥቷል።
    አፕል 32-ቢት መድረኮች ዝቅ ብሏል መሠረታዊ ድጋፍን የሚያመለክት እስከ ሦስተኛው የድጋፍ ደረጃ ድረስ, ነገር ግን ያለ አውቶማቲክ ሙከራ እና ኦፊሴላዊ ግንባታዎች ህትመት. የድጋፍ ማሽቆልቆሉ አፕል ከአሁን በኋላ ባለ 32-ቢት መድረኮችን ስለማይደግፍ ነው።

ምንጭ: opennet.ru

አስተያየት ያክሉ