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

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

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

ዋና ፈጠራዎች:

  • አወቃቀሮችን (መዋቅር) እና ቁጥሮችን (የተለዋዋጭ እገዳን የያዘ) መለያ ባህሪን በመጠቀም ምልክት የማድረግ ችሎታ ታክሏል# [የማያሟጥጥ]”፣ የትኛው ይህ ይፈቅዳል ለወደፊቱ, አዲስ መስኮችን እና አማራጮችን ወደ የታወጁ መዋቅሮች እና ቁጥሮች ይጨምሩ. ለምሳሌ፣ በይፋ የታወቁ መስኮች ያላቸው መዋቅር ያላቸው የሞጁሎች አዘጋጆች ወደፊት አዳዲስ መስኮች ሊጨመሩ የሚችሉ መዋቅሮችን ምልክት ለማድረግ "#[ያልተሟጠጠ]" መጠቀም ይችላሉ። እስካሁን ድረስ፣ በዚህ ሁኔታ ውስጥ፣ ገንቢው መስኮችን በግል ከማወጅ እና የማይለዋወጥ የመስኮች ዝርዝር ጋር ከማያያዝ መካከል ለመምረጥ ተገድዷል። አዲሱ ባህሪ ይህንን ገደብ ያስወግዳል እና ከዚህ ቀደም የተጠናቀረውን የውጭ ኮድ የማቋረጥ አደጋ ሳይኖር ለወደፊቱ አዳዲስ መስኮችን እንዲጨምሩ ያስችልዎታል። በሳጥኑ ፓኬጆች ውስጥ፣ “ተዛማጅ” ክፍል ውስጥ ያሉ አማራጮችን በሚዛመዱበት ጊዜ የማስክ “_ => {...}” ግልፅ ፍቺ ያስፈልጋል ወደፊት ሊሆኑ የሚችሉ መስኮችን ይሸፍናል፣ ይህ ካልሆነ ግን አዲስ መስኮች ሲጨመሩ ስህተት ይታያል።
  • ታክሏል። የሂደቱን ማክሮ ማክ!() በአይነት አውድ ውስጥ የመጥራት ችሎታ። ለምሳሌ፣ አሁን "Foo = expand_to_type!(bar)" መጻፍ ትችላለህ፤ "Exand_to_type" የሥርዓት ማክሮ ከሆነ።
  • በ"ውጫዊ {...}" ብሎኮች ታክሏል “ባንግ!()” ማክሮዎችን ጨምሮ የሥርዓት እና የባህሪ ማክሮዎችን የመጠቀም ችሎታ፣ ለምሳሌ፡-

    ማክሮ_ደንቦች! make_item {((ስም:ማን) => {fn $ስም(); }

    ውጫዊ {
    አድርግ_ንጥል!(አልፋ);
    አድርግ_ንጥል!(ቤታ);
    }

    ውጫዊ "ሲ" {
    #[ማንነቴ_ማክሮ] fn foo();
    }

  • በማክሮዎች ውስጥ ተተግብሯል “macro_rules!” ክፍሎችን የማመንጨት ችሎታ። "ማክሮ_ህጎች!" በማመንጨት ላይ በተቻለ ሁለቱም በተግባራዊ-እንደ ማክሮዎች ("ማክ! ()") እና በማክሮዎች በባህሪዎች መልክ ("# [ማክ]")።
  • በ$m፡ሜታ ካርታ አባሉ ታክሏል የዘፈቀደ ማስመሰያ ቆጠራ እሴቶች ድጋፍ («[TOKEN_STREAM]»፣ «{TOKEN_STREAM}» እና «(TOKEN_STREAM)»)፣ ለምሳሌ፡-

    ማክሮ_ደንቦች! ተቀበል_ሜታ { ($m:meta) => {} }
    ተቀበል_ሜታ!( የኔ:: መንገድ );
    ተቀበል_ሜታ!( የእኔ :: ዱካ = "መብራት");
    ተቀበል_ሜታ!( my :: ዱካ ( abc ) );
    ተቀበል_ሜታ!( my :: ዱካ [abc]);
    ተቀበል_ሜታ!( my :: ዱካ {abc});

  • በ Rust 2015 ሁነታ፣ የ NLL (የሌክሲካል የህይወት ዘመን) ቴክኒኮችን በመጠቀም ተለዋዋጮችን መበደርን ሲፈተሽ ለተለዩ ችግሮች የስህተት ውፅዓት ነቅቷል። ከዚህ ቀደም ማስጠንቀቂያዎች በ Rust 2018 ሁነታ ሲሰሩ በስህተት ተተክተዋል።
    ለውጡ ወደ Rust 2015 ሁነታ ከተራዘመ በኋላ ገንቢዎች በመጨረሻ ማድረግ ችለዋል። አስወግደው ከአሮጌው ብድር አረጋጋጭ.

    የተበደሩትን ተለዋዋጮች የህይወት ዘመንን ከግምት ውስጥ በማስገባት በአዲስ ዘዴ ላይ የተመሰረተው የማረጋገጫ ስርዓት በአሮጌው የማረጋገጫ ኮድ ያልተስተዋሉ ችግሮችን ለመለየት ያስቻለ መሆኑን እናስታውስ። ለእንደዚህ አይነት ቼኮች የስህተት ውጤት ከቀድሞው የስራ ኮድ ጋር ተኳሃኝነትን ሊጎዳ ስለሚችል በመጀመሪያ ከስህተቶች ይልቅ ማስጠንቀቂያዎች ተሰጥተዋል።

  • የ"const" አይነታ፣ ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን የሚወስነው ለ is_power_of_two ተግባር (ላልተፈረሙ ኢንቲጀሮች) ጥቅም ላይ ይውላል።
  • አዲሱ የኤፒአይ ክፍል ወደ የተረጋጋ ምድብ ተወስዷል፣ ቶዶ!() ማክሮ እና ቁራጭ :: ድገም ፣ mem :: መውሰድ ፣ BTreeMap :: Get_key_value ፣ HashMap :: Get_key_value ፣ ዘዴዎች ተረጋግተዋል።
    አማራጭ ::እንደ_ደረፍ ፣ አማራጭ :: እንደ_ደረፍ_ሙት ፣ አማራጭ :: ጠፍጣፋ ፣ UdpSocket :: peer_addr ፣ {f32,f64} :: ባይት_መሆን f32}::ከቤ_ባይት፣ {f64፣f32}::ከሌ_ባይት እና {f64,f32}::ከኔ_ባይት።

  • በጥቅል አስተዳዳሪ ጭነት ውስጥ
    ተተግብሯል በዲስክ ላይ የመሸጎጫ ማጠናከሪያ ማስጠንቀቂያዎች. አማራጭ "የካርጎ ሜታዳታ" ወደ "የካርጎ ዲበዳታ" ትዕዛዝ ታክሏል።--ማጣሪያ-መድረክ" በጥገኝነት መፍቻ አምድ ውስጥ ከተጠቀሰው የዒላማ መድረክ ጋር የተያያዙ ጥቅሎችን ብቻ ለማሳየት። ትክክለኛ የTLS ስሪቶችን ለመወሰን http.ssl-ስሪት ውቅር አማራጭ ታክሏል።
    ክፍሉን የማተም ችሎታ ታክሏል "ዴቭ-ጥገኛዎች" "ስሪት" የሚለውን ቁልፍ ሳይገልጹ.

  • Rustc compiler የሶስተኛ ደረጃ ድጋፍ ለዒላማ መድረኮች thumbv7neon-unknown-linux-musleabihf, aarch64-ያልታወቀ-የለም-softfloat, mips64-ያልታወቀ-linux-muslabi64 እና mips64el-ያልታወቀ-linux-muslabi64. ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል ነገር ግን ያለ አውቶማቲክ ሙከራ እና ኦፊሴላዊ ግንባታዎች መታተምን ያካትታል.

ምንጭ: opennet.ru

አስተያየት ያክሉ