انتشار زبان برنامه نویسی Rust 1.55

انتشار زبان برنامه نویسی سیستم Rust 1.55 که توسط پروژه موزیلا تأسیس شد، اما اکنون تحت نظارت سازمان غیرانتفاعی مستقل Rust Foundation توسعه یافته است، منتشر شد. این زبان بر ایمنی حافظه تمرکز می‌کند، مدیریت حافظه خودکار را فراهم می‌کند و ابزاری را برای دستیابی به موازی کاری بالا بدون استفاده از جمع‌آوری زباله یا زمان اجرا فراهم می‌کند (زمان اجرا به مقدار اولیه اولیه و نگهداری کتابخانه استاندارد کاهش می‌یابد).

مدیریت خودکار حافظه Rust خطاها را هنگام دستکاری نشانگرها حذف می کند و از مشکلات ناشی از دستکاری حافظه در سطح پایین، مانند دسترسی به یک منطقه حافظه پس از آزاد شدن، عدم ارجاع اشاره گر تهی، بیش از حد بافر و غیره محافظت می کند. برای توزیع کتابخانه ها، اطمینان از مونتاژ و مدیریت وابستگی ها، این پروژه در حال توسعه مدیر بسته بار است. مخزن crates.io برای میزبانی کتابخانه ها پشتیبانی می شود.

نوآوری های اصلی:

  • مدیر بسته Cargo توانایی ادغام خطاها و هشدارهای تکراری که در حین ساخت رخ می دهد را دارد. هنگام اجرای دستوراتی مانند "تست محموله" و "بررسی محموله -- همه اهداف" که منجر به ساخت های متعدد از یک بسته با پارامترهای مختلف می شود، اکنون به جای نشان دادن، خلاصه ای از وقوع یک مشکل تکراری به کاربر نشان داده می شود. چندین اخطار یکسان هنگام ساختن یک چیز به طور مکرر. فایل. محموله $ +1.55.0 چک —همه اهداف چک کردن foo v0.1.0 هشدار: تابع هرگز استفاده نمی شود: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = note: '#[warn(dead_code)]' به طور پیش‌فرض اخطار روشن است: 'foo' (lib) 1 هشدار ایجاد کرد: 'foo' (تست lib) 1 هشدار (1 تکراری) ایجاد شد. (s) در 0.84 ثانیه
  • کد تجزیه ممیز شناور در کتابخانه استاندارد برای استفاده از الگوریتم Eisel-Lemire سریعتر و دقیق تر منتقل شده است، که برخی از مشکلات مشاهده شده قبلی با گرد کردن و تجزیه اعداد با تعداد ارقام بسیار زیاد را حل کرده است.
  • توانایی تعیین محدوده های بسته نشده در الگوها تثبیت شده است ("X.." به عنوان محدوده ای تفسیر می شود که با مقدار X شروع می شود و با حداکثر مقدار نوع عدد صحیح پایان می یابد): مطابقت x به عنوان u32 { 0 => println! ("صفر!")، 1.. => println! ("عدد مثبت!")، }
  • انواع خطای گسترش یافته تحت پوشش std::io::ErrorKind (خطاها را به دسته هایی مانند NotFound و WouldBlock طبقه بندی می کند). قبلاً خطاهایی که در دسته بندی های موجود قرار نمی گرفتند در دسته ErrorKind::Other قرار می گرفتند که برای خطاهای کد شخص ثالث نیز استفاده می شد. اکنون یک دسته داخلی جداگانه وجود دارد ErrorKind:: Uncategorized برای خطاهایی که در دسته بندی های موجود قرار نمی گیرند، و دسته ErrorKind::Other محدود به خطاهایی است که در کتابخانه استاندارد رخ نمی دهد (توابع کتابخانه استاندارد که io::Error را برمی گرداند. دیگر از ErrorKind:: دسته دیگر استفاده نکنید.
  • بخش جدیدی از API به دسته پایدار منتقل شده است، از جمله روش ها و اجرای صفات تثبیت شده اند:
    • صحافی::کلون شده
    • Drain::as_str
    • intoinnererror :: into_error
    • intoinnererror :: into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit::نوشتن
    • آرایه:: نقشه
    • ops::ControlFlow
    • x86::_bittest
    • x86 :: _ bittestandcomment
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64 :: _ bittestandcomplement64
    • x86_64 :: _ bittestandreset64
    • x86_64::_bittestandset64
  • ویژگی “const” که امکان استفاده از آن را در هر زمینه ای به جای ثابت ها تعیین می کند، در متد str::from_utf8_unchecked استفاده می شود.
  • سومین سطح پشتیبانی برای پلتفرم powerpc64le-unknown-freebsd پیاده سازی شده است. سطح سوم شامل پشتیبانی اولیه است، اما بدون آزمایش خودکار، انتشار بیلدهای رسمی یا بررسی اینکه آیا کد قابل ساخت است یا خیر.

منبع: opennet.ru

اضافه کردن نظر