زنګ 1.53 خپور شو. ګوګل به د لینکس کرنل ته د زنګ ملاتړ اضافه کولو تمویل وکړي

د سیسټم برنامه کولو ژبې Rust 1.53 خپرول، د موزیلا پروژې لخوا تاسیس شوی، مګر اوس د خپلواک غیر انتفاعي سازمان Rust Foundation تر څارنې لاندې رامینځته شوی، خپور شوی. ژبه د حافظې خوندیتوب باندې تمرکز کوي ، د اتوماتیک حافظې مدیریت چمتو کوي ، او د کثافاتو راټولونکي یا رن ټایم کارولو پرته د لوړې دندې موازي کولو لپاره وسیلې چمتو کوي (د چلولو وخت د معیاري کتابتون لومړني پیل او ساتنې ته کم شوی).

د زنګ اتوماتیک حافظه مدیریت د پوائنټرونو مینځلو په وخت کې غلطۍ له مینځه وړي او د ټیټې کچې حافظې لاسوهنې څخه رامینځته شوي ستونزو څخه ساتي ، لکه د حافظې ساحې ته لاسرسی وروسته له دې چې خلاص شي ، د نول پوینټر ډیریفرنسونه ، بفر اوورونونه او داسې نور. د کتابتونونو توزیع کولو لپاره، د راټولولو ډاډ ترلاسه کول او د انحصارونو اداره کول، پروژه د کارګو بسته مدیر ته وده ورکوي. د crates.io ذخیره د کتابتونونو کوربه کولو لپاره ملاتړ کیږي.

اصلي نوښتونه:

  • د صفونو لپاره، د IntoIterator ځانګړنه پلي شوې، کوم چې تاسو ته اجازه درکوي د ارزښتونو له مخې د سرې عناصرو تکرار تنظیم کړئ: د [1، 2، 3] {.. } لپاره

    دا هم ممکنه ده چې سرې هغه میتودونو ته انتقال کړئ چې تکرار کونکي مني، د بیلګې په توګه: let set = BTreeSet::from_iter([1, 2, 3]); د (a، b) لپاره په some_iterator.chain([1]).zip([1, 2, 3]) {.. }

    مخکې، IntoIterator یوازې د سرې حوالې لپاره پلي شوی و، د بیلګې په توګه د ارزښتونو د تکرار لپاره د حوالې کارولو ته اړتیا ده ("&[1, 2, 3]") یا "[1, 2, 3].iter()". د صفونو لپاره د IntoIterator تطبیق د مطابقت مسلو له امله خنډ شوی و چې د مخکیني کمپیلر تبادلې له امله رامینځته شوی و چې array.into_iter() څخه (&array).into_iter(). دا ستونزې د یوې حل لارې سره حل شوې - تالیف کونکی به د array.into_iter() ته (&array).into_iter() بدلولو ته دوام ورکړي لکه څنګه چې د IntoIterator ځانګړتیا نه وي پلي شوې، مګر یوازې کله چې د ".into_iter( په کارولو سره میتود ته زنګ ووهئ. )" نحوي او پرته له دې چې په "[1, 2, 3] کې"، "iter.zip([1, 2, 3])"، "IntoIterator::into_iter([1, 2, 3]) کې د زنګونو له لمس کولو پرته )"

  • دا ممکنه ده چې څرګندونې "|" مشخص کړئ (منطقي یا عملیات) د کينډۍ په هره برخه کې، د بیلګې په توګه، د "ځینې(1) پر ځای ځینې(2)" تاسو اوس کولی شئ "ځینې(1 | 2)" ولیکئ: د میچ پایله { Ok(Some(1 | 2)) => {.. } Error(MyError { ډول: FileNotFound | اجازه رد شوې، .. }) => { .. } _ => { .. } }
  • په پیژندونکو کې د غیر ASCII کرکټرونو کارول اجازه لري ، پشمول د یونیکوډ UAX 31 مشخصاتو کې تعریف شوي ملي کرکټرونه ، مګر د ایموجي کرکټرونو پرته. که تاسو مختلف مګر ورته حروف کاروئ، کمپیلر به یو خبرداری خپور کړي. const BLÅHAJ: &str = "🦈"; جوړښت 人 { 名字: String, } let α = 1; let'os = 2; خبرداری: د پیژندونکي جوړه د 's' او 's' تر منځ د مغشوش وړ ګڼل کیږي
  • د APIs نوې برخه مستحکم کټګورۍ ته لیږدول شوې، په شمول د لاندې ثبات لرونکي:
    • array ::from_ref
    • array ::from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet :: ساتل
    • BTreeMap:: ساتل
    • BfReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • موده::ZERO
    • موده::MAX
    • موده:: صفر دی
    • موده:: saturating_add
    • موده:: saturating_sub
    • موده:: saturating_mul
    • f32::s_subnormal
    • f64::s_subnormal
    • د صفونو لپاره IntoIterator
    • {integer}::BITS
    • io::Error::نه ملاتړ شوی
    • بې صفر*::ليډنګ_صفر
    • بې زیرو*::trailing_zeros
    • اختیار:: داخل کړئ
    • ترتیب ::is_eq
    • امر کول::is_ne
    • امر کول::is_lt
    • امر کول::is_gt
    • امر کول::is_le
    • امر کول::is_ge
    • OsStr::make_ascii_lowercase
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_lowercase
    • OsStr::to_ascii_uppercase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • د کتلو وړ:: peek_mut
    • Rc:: increment_strong_count
    • Rc:: decrement_strong_count
    • ټوټه::IterMut::as_slice
    • AsRef<[T]> د ټوټې لپاره::IterMut
    • impl SliceIndex for (Bound ، پابند )
    • Vec::extend_from_within
  • د wasm64-نامعلوم-نامعلوم پلیټ فارم لپاره د ملاتړ دریمه کچه پلي شوې. په دریمه کچه کې بنسټیز ملاتړ شامل دی، مګر د اتوماتیک ازموینې پرته، د رسمي ودانیو خپرول، یا دا ګوري چې آیا کوډ جوړیدلی شي.
  • د کارګو کڅوړې مدیر د ډیفالټ لخوا د Git ذخیره (HEAD) اصلي څانګې لپاره د "مین" نوم کارولو لپاره لیږدول شوی. په ذخیره کې کوربه شوي انحصارونه چې د ماسټر پرځای اصلي نوم کاروي نور د برانچ = "مین" تنظیم کولو ته اړتیا نلري.
  • په کمپیلر کې، د LLVM لږترلږه نسخه اړتیاوې LLVM 10 ته پورته شوي.

برسیره پردې، موږ کولی شو د زنګ په ژبه کې د اجزاوو پراختیا لپاره د وسیلو لینکس کرنل کې د ادغام پراختیا لپاره د تمویل چمتو کولو یادونه وکړو. دا کار به د پروسیمو پروژې په چوکاټ کې د ISRG سازمان (انټرنیټ امنیت څیړنې ګروپ) تر څارنې لاندې ترسره شي ، کوم چې د لیټس انکریټ پروژې بنسټ ایښودونکی دی او HTTPS ته وده ورکوي او د ټیکنالوژیو پراختیا ته وده ورکوي ترڅو د امنیت وده وکړي. انټرنیټ. فنډونه به د ګوګل لخوا چمتو شي، کوم چې د میګیل اوجیدا د کار لپاره پیسې ورکوي، د Rust-for-Linux پروژې لیکوال. مخکې، ISRG او ګوګل لا دمخه د curl یوټیلیټ لپاره د بدیل HTTP بیکینډ رامینځته کولو او د اپاچي HTTP سرور لپاره د نوي TLS ماډل پراختیا تمویل کړی.

د مایکروسافټ او ګوګل په وینا، شاوخوا 70٪ زیانمننې د حافظې د خوندي کولو له امله رامینځته کیږي. تمه کیږي چې د کرنل اجزاو رامینځته کولو لپاره د زنګ ژبې کارول لکه د وسیلې ډرایورونه به د غیر خوندي حافظې اداره کولو له امله رامینځته شوي زیانونو خطر کم کړي او خطاګانې له مینځه ویسي لکه د حافظې سیمې ته لاسرسی وروسته له دې چې خلاص شي او د بفر حدونو څخه تیر شي.

د حافظې خوندي اداره کول په زنګ کې د تالیف په وخت کې د حوالې چیک کولو له لارې چمتو شوي ، د شیانو ملکیت تعقیب او د څیز ژوند وخت (سوق) ، او همدارنګه د کوډ اجرا کولو پرمهال د حافظې لاسرسي سموالي ارزونې له لارې. زنګ د انټیجر د زیاتیدو پروړاندې محافظت هم چمتو کوي ، د کارولو دمخه د متغیر ارزښتونو لازمي پیل ته اړتیا لري ، په معیاري کتابتون کې خطاګانې په ښه توګه اداره کوي ، د ډیفالټ لخوا د بدلیدونکي حوالې او متغیرونو مفهوم پلي کوي ، د منطقي غلطیو کمولو لپاره قوي جامد ټایپینګ وړاندیز کوي.

سرچینه: opennet.ru

Add a comment