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

ወስዷል የስርዓት ፕሮግራሚንግ ቋንቋ መለቀቅ ዝገት 1.34በሞዚላ ፕሮጀክት የተገነባ. ቋንቋው በአስተማማኝ የማህደረ ትውስታ አስተዳደር ላይ ያተኩራል፣ አውቶማቲክ የማህደረ ትውስታ አስተዳደርን ይሰጣል፣ እና ቆሻሻ ሰብሳቢ እና የሩጫ ጊዜን ከመጠቀም በመቆጠብ ከፍተኛ የስራ ትይዩነትን ለማግኘት መንገዶችን ይሰጣል።

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

ዋና ፈጠራዎች:

  • የካርጎ ፓኬጅ ሥራ አስኪያጅ ከ crates.io የህዝብ መዝገብ ቤት ጋር አብረው ሊኖሩ ከሚችሉ አማራጭ የጥቅል መዝገቦች ጋር ለመስራት መሳሪያዎችን አክሏል ። ለምሳሌ፣ የባለቤትነት አፕሊኬሽኖች ገንቢዎች አሁን የራሳቸውን የግል መዝገብ መጠቀም ይችላሉ፣ ይህም በCargo.toml ውስጥ ጥገኞችን ሲዘረዝሩ እና ከ crates.io ጋር ተመሳሳይ የሆነ ስሪት ለምርቶቻቸው ይተግብሩ እንዲሁም ጥገኞችን ወደ ሁለቱም ሳጥኖች ያመለክታሉ። io እና ወደ እራስዎ መዝገብ ቤት.

    የውጭ መዝገቦችን ወደ .cargo/config (በ$ HOME ውስጥ ወይም በጥቅል ማውጫ ውስጥ የሚገኝ) ለመጨመር
    አስቀድሞ ተነግሯል ክፍል “[መዝገቦች]”፣ እና የውጭ መዝገብ ለመጠቀም፣ “መዝገብ” የሚለው አማራጭ በCargo.toml የእያንዳንዱ ጥገኛ መግለጫ ላይ ታይቷል። ከተጨማሪ መዝገብ ቤት ጋር ለመገናኘት በቀላሉ የማረጋገጫ ማስመሰያውን በ ~/.cargo/credentials ፋይል ውስጥ ያስቀምጡ እና ትዕዛዙን ያስኪዱ።
    "cargo login --registry=my-registry" እና ጥቅል ለማተም -
    "ካርጎ ማተም -registry=my-registry";

  • የ"?" ኦፕሬተርን ለመጠቀም ሙሉ ድጋፍ ታክሏል። በፈተናዎች ውስጥ ዶክተሮች, ከሰነዶቹ ውስጥ የምሳሌ ኮድ እንደ ሙከራዎች እንድትጠቀም ያስችልሃል። ከዚህ ቀደም ኦፕሬተር
    "?" በሙከራ አፈፃፀም ወቅት ስህተቶችን ለማስተናገድ በ "fn main()" ተግባር ወይም በ"#[ሙከራ]" ተግባራት ውስጥ ብቻ ሊያገለግል ይችላል።

  • የሥርዓት ማክሮዎችን በመጠቀም የተገለጹ ብጁ ባህሪያት ውስጥ ደህንነቱ የተጠበቀ የዘፈቀደ የማስመሰያ ስብስቦችን የመጠቀም ችሎታ ("#[attr($ tokens)]", "#[attr[$tokens]] እና #[attr{$tokens}]")። ከዚህ ቀደም ኤለመንቶችን በዛፍ/recursive መልክ ብቻ ነው የሚገለጹት string literals በመጠቀም ለምሳሌ “#[foo(bar, baz(quux, foo = “bar”))]”፣ አሁን ግን ቆጠራዎችን መጠቀም ይቻላል (' #[ክልል (0. .10)]) እና ግንባታዎች እንደ "#[ታሰረ (T: MyTrait)]";
  • የተረጋጉ ዓይነቶች (ባህሪ) ከ ሞክር и ወደ ውስጥ ይሞክሩከስህተት አያያዝ ጋር አይነት ልወጣዎችን መፍቀድ። ለምሳሌ እንደ ከ_be_ባይት ኢንቲጀር ዓይነት ያላቸው ዘዴዎች ድርድርን እንደ ግብአት ይጠቀማሉ፣ነገር ግን ውሂቡ ብዙ ጊዜ በSlice አይነት ነው የሚመጣው፣ እና በድርድር እና በክፍል መካከል መቀየር በእጅ ለመስራት ችግር አለበት። በአዳዲስ ባህሪያት እገዛ, የተገለፀው ክዋኔ በበረራ ላይ ወደ .try_into () በመደወል ለምሳሌ "let num = u32 :: from_be_bytes(slice.try_into ()?)" በመደወል ሊከናወን ይችላል. ሁልጊዜ ለሚሳኩ ልወጣዎች (ለምሳሌ ከ u8 አይነት ወደ u32) የስህተት አይነት ታክሏል። እንከን-አልባ, ግልጽ አጠቃቀምን ይፈቅዳል
    ለሁሉም የ"ከ" አተገባበር ይሞክሩ;

  • ተግባር ተቋርጧል CommandExt :: በፊት_execሹካ () ጥሪ በኋላ ሹካ () አንድ ሕፃን ሂደት አውድ ውስጥ የተፈፀመው አንድ ተቆጣጣሪ exec ከመሮጥ በፊት እንዲገደል ያስችለዋል. በእንደዚህ ዓይነት ሁኔታዎች ውስጥ አንዳንድ የወላጅ ሂደት ሀብቶች እንደ ፋይል ገላጭ እና የካርታ ማህደረ ትውስታ ቦታዎች ሊባዙ ይችላሉ ፣ ይህም ወደ አልተገለጸ ባህሪ እና የቤተ-መጻህፍት ትክክለኛ ስራን ያስከትላል።
    ከቅድመ_exec ይልቅ ደህንነቱ ያልተጠበቀ ተግባር ለመጠቀም ይመከራል CommandExt :: pre_exec.

  • ከ 8 እስከ 64 ቢት ያላቸው የተረጋጉ የተፈረሙ እና ያልተፈረሙ የአቶሚክ ኢንቲጀር ዓይነቶች (ለምሳሌ፣ አቶሚክዩ8), እንዲሁም የተፈረሙ ዓይነቶች ዜሮ ያልሆነ[8|16|32|64|128].
  • አዲሱ የኤፒአይ ክፍል ወደ የተረጋጋው ምድብ ተወስዷል፣ ማንኛውም :: አይነት_id፣ ስህተት :: አይነት_id፣ ቁርጥራጭ ::የተሸጎጠ_ቁልፍ ፣ str :: Escape_* ፣ str :: የተከፈለ_ascii_ነጭ ቦታ ፣ ቅጽበታዊ :: የተረጋገጠ_[ add|ንዑስ ክፍልን ጨምሮ። ] እና SystemTime ዘዴዎች ተረጋግተዋል ::Checked_[add|sub]። የ iter :: from_fn እና iter :: ተተኪዎች ተግባራት ተረጋግተዋል;
  • ለሁሉም የኢንቲጀር አይነቶች፣ የተፈተሸው_ፓው፣ የሳቹሬትድ_ፓው፣ የመጠቅለያ_ፓው እና የተትረፈረፈ_ፓው ዘዴዎች ይተገበራሉ።
  • የ"-C linker-plugin-lto" የግንባታ አማራጭን በመግለጽ በማገናኘት ደረጃ ላይ ማመቻቸትን የማንቃት ችሎታ ታክሏል።

ምንጭ: opennet.ru

አስተያየት ያክሉ