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

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

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

ዋና ፈጠራዎች:

  • ተረጋጋ በ "async" ተግባር ላይ የተመሰረተ አዲስ ያልተመሳሰለ የፕሮግራም አገባብ፣ የ async move {... } block እና ".wait" ኦፕሬተር፣ ይህም ዋናውን የትዕዛዝ ፍሰት የማያግዱ ተቆጣጣሪዎችን ለመፃፍ ቀላል ያደርገዋል። ለተመሳሳይ I/O ከዚህ ቀደም ከቀረበው ኤፒአይ ጋር ሲነጻጸር፣ async/.የመጠባበቅ ግንባታዎች ለመረዳት ቀላል፣ በከፍተኛ ደረጃ ሊነበቡ የሚችሉ እና በ loops፣ ሁኔታዊ መግለጫዎች እና ልዩ ሁኔታዎች ላይ የተመሰረቱ የታወቁ ፍሰት መቆጣጠሪያ ቴክኒኮችን በመጠቀም ውስብስብ ያልተመሳሰለ መስተጋብርን እንዲተገብሩ ያስችሉዎታል።

    የ Async-wait አገባብ አፈፃፀማቸውን ለአፍታ የሚያቆሙ ፣ መቆጣጠሪያውን ወደ ዋናው ክር የሚመልሱ እና ከዚያ አፈፃፀምን ካቆሙበት እንዲቀጥሉ የሚያደርጉ ተግባራትን እንዲፈጥሩ ይፈቅድልዎታል። ለምሳሌ፣ I/Oን በሚሰራበት ጊዜ እንዲህ አይነት ለአፍታ ማቆም ያስፈልጋል፣ በዚህ ውስጥ የሚቀጥለው መረጃ እስኪመጣ ድረስ በመጠባበቅ ላይ እያለ ሌላ ስራ ሊሰራ ይችላል። በ"async fn" እና "async move" የተገለጹ ተግባራት እና ብሎኮች ባህሪን ይመልሳሉ የወደፊቱየዘገየ ያልተመሳሰለ ስሌት ውክልና የሚገልጽ። የዘገየ ስሌት በቀጥታ ማስጀመር እና ".wait" ኦፕሬተርን በመጠቀም ውጤቱን ማግኘት ይችላሉ. .wait እስኪጠራ ድረስ ምንም አይነት እርምጃ አይደረግም ወይም አስቀድሞ የታቀደ አይደለም፣ ይህም ያለ ተጨማሪ ወጪ ውስብስብ የጎጆ ግንባታዎች እንዲፈጠሩ ያስችላል።

    async fn first_function() -> u32 { .. }
    ...
    ወደፊት ይሁን = first_function ();
    ...
    ውጤቱን እንስጥ፡ u32 = future.wait;

  • ተረጋጋ "#![feature(bind_by_move_pattern_guards)]"፣ ተለዋዋጮችን ከማያዣው ዓይነት ጋር ለመጠቀም ያስችላል።በመንቀሳቀስ" በአብነት ውስጥ እና የእነዚህ ተለዋዋጮች ማጣቀሻዎችን በ "ከሆነ" የገለፃው ክፍል ውስጥ ይጠቀሙግጥሚያ". ለምሳሌ, የሚከተሉት ግንባታዎች አሁን ተፈቅደዋል:

    fn ዋና() {
    አደራደር፡ ሣጥን<[u8; 4]> = ሣጥን:: አዲስ ([1, 2, 3, 4]);

    ተዛማጅ ድርድር {
    nums
    ከሆነ nums.iter () ድምር::() == 10

    => {
    ነጠብጣብ (ቁጥሮች);
    }
    _ => የማይደረስ!()
    }
    }

  • ማመላከቻ ተፈቅዷል ባህሪያት የተግባር መለኪያዎችን, መዝጊያዎችን እና የተግባር አመልካቾችን ሲገልጹ. በሊንት (ፍቀድ፣ አስጠንቅቅ፣ መካድ እና መከልከል) እና ረዳት የማክሮ ጥሪ ባህሪያትን የሚቆጣጠሩ ሁኔታዊ የማጠናቀር ባህሪያት (cfg፣ cfg_attr) ይደገፋሉ።

    fn len (
    #[cfg(መስኮቶች)] ቁራጭ: &[u16], // መለኪያውን በዊንዶው ላይ ይጠቀሙ
    #[cfg(አይ(መስኮቶች))] ቁራጭ፡ &[u8]፣ // በሌላ ስርዓተ ክወና ውስጥ ተጠቀም
    ) -> ተጠቀም {
    slice.len()
    }

  • NLL (የሌክሲካል ህይወቶች) ቴክኒክን በመጠቀም የተለዋዋጮችን መበደር ሲፈተሽ ስለተገኙ ችግሮች ማስጠንቀቂያዎች፣ ተተርጉሟል ወደ ገዳይ ስህተቶች ምድብ. የተበደሩትን ተለዋዋጮች የህይወት ዘመንን ከግምት ውስጥ ለማስገባት በአዲስ ዘዴ ላይ የተመሰረተው የማረጋገጫ ስርዓት በአሮጌው የማረጋገጫ ኮድ ያልተስተዋሉ ችግሮችን ለመለየት ያስቻለ መሆኑን እናስታውስ። ለእንደዚህ አይነት ቼኮች የስህተት ውጤት ከቀድሞው የስራ ኮድ ጋር ተኳሃኝነትን ሊጎዳ ስለሚችል በመጀመሪያ ከስህተቶች ይልቅ ማስጠንቀቂያዎች ተሰጥተዋል። በ Rust 2018 ሁነታ ላይ ሲሰሩ ማስጠንቀቂያዎች አሁን በስህተት ተተክተዋል። በሚቀጥለው እትም, የስህተት ውፅዓት እንዲሁ በዝገት 2015 ሁነታ ላይ ይተገበራል, ይህም በመጨረሻ የድሮውን የብድር መፈተሻ ያስወግዳል;
  • ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ የመጠቀም እድልን የሚወስነው የ"const" አይነታ ለ ተግባራት Vec:: new, String:: new, LinkedList:: new, str:: len, [T]:: len ጥቅም ላይ ይውላል:: , str:: እንደ_ባይት፣
    አቢኤስ፣ መጠቅለያ_አብስ እና የተትረፈረፈ_abs;

  • የተረጋጉ ዘዴዎችን ጨምሮ አዲስ የኤፒአይ ክፍል ወደ የተረጋጋ ምድብ ተላልፏል
    ፒን :: ወደ ውስጥ_ውስጥ ፣ ፈጣን :: የተረጋገጠ_ቆይታ_ከዚያ ጀምሮ እና ወዲያውኑ ::የማሟያ_ቆይታ_ከዚህም ጀምሮ;

  • የካርጎ ጥቅል አስተዳዳሪ አሁን የ ".toml" ቅጥያ ለማዋቀር ፋይሎች የመጠቀም ችሎታ አለው። ደረጃውን የጠበቀ ቤተመጻሕፍትን በቀጥታ ከካርጎ ለመገንባት የመጀመሪያ ደረጃ ድጋፍ ታክሏል። አወዛጋቢውን "--ሁሉም" ባንዲራ በመተካት የ"--workspace" ባንዲራ ታክሏል። አዲስ መስክ ወደ ሜታዳታ ታክሏልአትም“ጂት ታግ እና የስሪት ቁጥርን በመግለጽ ጥገኞችን እንዲያትሙ ያስችልዎታል። የታከለ የሙከራ አማራጭ "-Ztimings" የተለያዩ ማጠናቀር ደረጃዎች አፈጻጸም ጊዜዎች HTML ሪፖርት ለማመንጨት.
  • በ rustc compiler ውስጥ፣ የመመርመሪያ መልእክቶች ወደ ተርሚናል የማይገቡ የኮድ ጭራዎችን መቁረጥን ያካትታሉ። ለዒላማ መድረኮች የሶስተኛ ደረጃ ድጋፍ አቅርቧል
    i686-ያልታወቀ-uefi እና sparc64-ያልታወቀ-openbsd. ሶስተኛው ደረጃ መሰረታዊ ድጋፍን ያካትታል ነገር ግን ያለ አውቶማቲክ ሙከራ እና ኦፊሴላዊ ግንባታዎች መታተምን ያካትታል.

ምንጭ: opennet.ru

አስተያየት ያክሉ