د Rust 1.64 عمومي هدف پروګرام کولو ژبې خپرول، چې د موزیلا پروژې لخوا تاسیس شوی، مګر اوس د خپلواک غیر انتفاعي موسسې Rust Foundation تر څارنې لاندې رامینځته شوی، خپور شوی. ژبه د حافظې خوندیتوب باندې تمرکز کوي او د لوړې دندې موازي کولو لپاره وسیلې چمتو کوي پداسې حال کې چې د کثافاتو راټولونکي او رن ټایم کارولو څخه مخنیوی کوي (د چلولو وخت د معیاري کتابتون لومړني پیل او ساتنې ته کم شوی).
د زنګ د حافظې اداره کولو میتودونه پرمخ وړونکي د خطا څخه ژغوري کله چې د پوائنټرونو مینځل کیږي او د هغو ستونزو په وړاندې ساتنه کوي چې د ټیټې کچې حافظې اداره کولو له امله رامینځته کیږي ، لکه د حافظې ساحې ته لاسرسی وروسته له دې چې خلاص شو ، د نول پوائنټرونو ته اشاره کول ، د بفر اوورونونه او نور. د کتابتونونو توزیع کولو، جوړونه چمتو کول او د انحصارونو اداره کول، پروژه د کارګو پیکج مدیر ته وده ورکوي. د crates.io ذخیره د کتابتونونو کوربه کولو لپاره ملاتړ کیږي.
د حافظې خوندیتوب د تالیف په وخت کې په زنګ کې د حوالې چیک کولو له لارې چمتو کیږي ، د شیانو ملکیت تعقیب ساتل ، د څیز ژوند وخت (سکوپس) ساتل ، او د کوډ اجرا کولو پرمهال د حافظې لاسرسي سموالي ارزول. زنګ د انټیجر د زیاتیدو پروړاندې محافظت هم چمتو کوي ، د کارونې دمخه د متغیر ارزښتونو لازمي ابتکار ته اړتیا لري ، په معیاري کتابتون کې خطاګانې په ښه توګه اداره کوي ، د ډیفالټ لخوا د بدلیدونکي حوالې او متغیر مفهوم پلي کوي ، د منطقي غلطیو کمولو لپاره قوي جامد ټایپ وړاندیز کوي.
اصلي نوښتونه:
- د چاپیریال لپاره زیاتې اړتیاوې Linux په کمپیلر، د کارګو پیکج مدیر، او معیاري کتابتون libstd کې، د Glibc لپاره لږترلږه اړتیاوې د 2.11 نسخې څخه 2.17 ته لوړې شوې دي، او دانه Linux د 2.6.32 څخه تر 3.2 نسخې پورې. دا محدودیتونه د libstd سره جوړ شوي د Rust غوښتنلیک اجرایوي وړونو باندې هم پلي کیږي. RHEL 7، SLES 12-SP5، او نور توزیعونه د نوي اړتیاو سره سم دي. Debian 8 او Ubuntu ۱۴.۰۴. د RHEL ۶، SLES ۱۱-SP۴ ملاتړ به بند شي، Debian 7 او Ubuntu ۱۲.۰۴. د هغو کاروونکو لپاره چې د زړو کرنل لرونکو چاپیریالونو کې د رسټ وسیلې چین لخوا جوړ شوي اجرایوي توکي کاروي Linux، دا وړاندیز کیږي چې د دوی سیسټمونه لوړ کړي، په زړو کمپیلر ریلیزونو کې پاتې شي، یا په خپلواکه توګه د انټرلایرونو سره خپل libstd څانګه وساتي ترڅو مطابقت وساتي.
د زړو ملاتړ د پای ته رسیدو د دلیلونو په منځ کې Linux- سیسټمونه د زړو چاپیریالونو سره د مطابقت ساتلو لپاره محدود سرچینې یادوي. د زړو ګلیبک ملاتړ د دوامداره ادغام سیسټم کې د چک کولو پرمهال د زړو وسیلو کارولو ته اړتیا لري، د LLVM او کراس تالیف وسیلو لپاره د نسخې اړتیاو زیاتوالي ته په پام سره. د کرنل نسخې اړتیاوې د زړو کرنلونو سره د مطابقت ډاډ ترلاسه کولو لپاره د منځګړو ساتلو اړتیا پرته په libstd کې د نوي سیسټم زنګونو کارولو وړتیا له امله دي.
- د IntoFuture ځانګړتیا ثابته شوې، کوم چې د IntoIterator سره ورته والی لري، مګر د "for ... in ..." لوپونو پرځای د ".await" په کارولو سره له وروستي څخه توپیر لري. کله چې د IntoFuture سره یوځای شي، د ". انتظار" کلیمه نه یوازې د راتلونکي ځانګړتیا تمه کولی شي، بلکې نور هر ډول ډولونه چې په راتلونکي کې بدلیدلی شي.
- د زنګ تحلیل کونکي افادیت د رست ریلیزونو سره چمتو شوي اسانتیاو ټولګه کې شامل دي. افادیت د rustup په کارولو سره د نصب کولو لپاره هم شتون لري (د زنګون اجزا اضافه کول - شنونکي).
- د کارګو بسته مدیر کې د کاري ځای میراث شامل دی ترڅو د کڅوړو ترمینځ د ګډ ساحې ارزښتونو نقل له مینځه ویسي ، لکه د زنګ نسخې او ذخیره URLs. په یوځل کې د څو هدف پلیټ فارمونو لپاره د جوړولو لپاره ملاتړ هم اضافه شوی (تاسو اوس کولی شئ په "--target" اختیار کې له یو څخه ډیر پیرامیټر مشخص کړئ).
- د API یوه نوې برخه د ثبات کټګورۍ ته لیږدول شوې، په شمول د ځانګړتیاوو میتودونه او پلي کول ثبات شوي دي:
- راتلونکی::په راتلونکي کې
- num::NonZero*::checked_mul
- num::NonZero*::checked_pow
- num::NonZero*::saturating_mul
- num::NonZero*::saturating_pow
- شمیره::NonZeroI*::abs
- num::NonZeroI*:: checked_abs
- num::NonZeroI*::overflowing_abs
- num::NonZeroI*::saturating_abs
- num::NonZeroI*::unsigned_abs
- num::NonZeroI*::wrapping_abs
- num::NonZeroU*::checked_add
- num::NonZeroU*::checked_next_power_of_two
- num::NonZeroU*::saturating_add
- os::unix::process::CommandExt::process_group
- os::windows::fs::FileTypeExt::is_symlink_dir
- os::windows::fs::FileTypeExt::is_symlink_file
- د C-مطابق ډولونه، مخکې په std::ffi ماډل کې ثبات شوي، په اصلي او ټول کتابتون کې اضافه شوي دي:
- core::ffi::CStr
- core::ffi::FromBytesWithNulError
- alloc::ffi::CSstring
- alloc::ffi::FromVecWithNulError
- alloc::ffi::IntoStringError
- alloc::ffi::NulError
- د C ډولونه چې مخکې په std::os::raw ماډلونو کې ثبات شوي په اصلي::ffi او std::ffi ماډلونو کې اضافه شوي دي (د مثال په توګه، c_uint او c_ulong ډولونه د uint او ulong C ډولونو لپاره وړاندیز شوي):
- ffi::c_char
- ffi::c_double
- ffi::c_float
- ffi::c_int
- ffi::c_long
- ffi::c_longlong
- ffi::c_schar
- ffi::c_short
- ffi::c_uchar
- ffi::c_uint
- ffi::c_ulong
- ffi::c_ulonglong
- ffi::c_ushort
- د ټیټې کچې سمبالونکي د ټولپوښتنې میکانیزم سره د کارولو لپاره ثبات لري (په راتلونکي کې پلان شوی چې یو ساده API چمتو کړي چې د ټیټ کچې جوړښتونو لکه پل او پن کارولو ته اړتیا نلري):
- راتلونکی::poll_fn
- دنده:: چمتو!
- د "const" خاصیت، کوم چې د ثابتو پر ځای په هر شرایطو کې د کارولو امکان ټاکي، په سلائس::from_raw_parts فنکشن کې کارول کیږي.
- د دې لپاره چې د ډیټا ډیر دقیق ذخیره شي، د Ipv4Addr، Ipv6Addr، SocketAddrV4 او SocketAddrV6 جوړښتونو حافظه ترتیب بدل شوی. کیدای شي د واحد کریټ کڅوړو سره د مطابقت مسله وي چې د جوړښتونو د ټیټې کچې لاسوهنې لپاره std::mem::transmute کاروي.
- د پلیټ فارم لپاره د زنګ کمپیلر جوړونه کې Windows د PGO اصلاح (د پروفایل لارښود اصلاح) کارول شوي، کوم چې د کوډ تالیف فعالیت 10-20٪ زیاتولو ته اجازه ورکړه.
- تالیف کونکي په ځینو جوړښتونو کې د نه کارول شوي ساحو په اړه نوی خبرداری پلي کړی.
برسیره پردې، تاسو کولی شئ د Rust ژبې کمپیلر د بدیل پلي کولو د پراختیا په اړه د وضعیت راپور یادونه وکړئ، چې د Gccrs پروژې (GCC Rust) لخوا چمتو شوی او په GCC کې د شاملولو لپاره تصویب شوی. د فرنټ اینډ ادغام وروسته ، د GCC معیاري وسیلې د Rustc کمپیلر نصبولو اړتیا پرته په Rust ژبه کې د برنامو تالیف کولو لپاره کارول کیدی شي ، د LLVM پرمختګونو په کارولو سره جوړ شوی. تر هغه چې پرمختګ په لاره کې وي، او د هرې غیر متوقع ستونزې مخه ونیسي، د زنګ فرنټ اینډ به د راتلونکي کال د می لپاره ټاکل شوي GCC 13 ریلیز کې مدغم شي. د زنګون د GCC 13 پلي کول به د بیټا حالت کې وي ، لاهم د ډیفالټ لخوا فعال شوي ندي.
سرچینه: opennet.ru
