انتشار زبان برنامه نویسی همه منظوره Rust 1.69 که توسط پروژه موزیلا تأسیس شده است، اما اکنون تحت نظارت سازمان غیرانتفاعی مستقل Rust Foundation توسعه یافته است، منتشر شده است. این زبان بر ایمنی حافظه تمرکز میکند و ابزاری را برای دستیابی به موازی کاری بالا در عین اجتناب از استفاده از جمعآوری زباله و زمان اجرا فراهم میکند (زمان اجرا به مقدار اولیه اولیه و نگهداری کتابخانه استاندارد کاهش مییابد).
روشهای مدیریت حافظه Rust، توسعهدهنده را از خطا در هنگام دستکاری اشارهگرها نجات میدهد و از مشکلاتی که به دلیل مدیریت سطح پایین حافظه ایجاد میشود، محافظت میکند، مانند دسترسی به یک ناحیه حافظه پس از آزاد شدن، عدم ارجاع اشارهگرهای تهی، بیش از حد بافر و غیره. برای توزیع کتابخانه ها، ارائه ساخت و مدیریت وابستگی ها، این پروژه مدیر بسته Cargo را توسعه می دهد. مخزن crates.io برای میزبانی کتابخانه ها پشتیبانی می شود.
ایمنی حافظه در Rust در زمان کامپایل از طریق بررسی مرجع، پیگیری مالکیت شیء، پیگیری طول عمر شی (scopes) و ارزیابی صحت دسترسی به حافظه در طول اجرای کد ارائه می شود. Rust همچنین محافظت در برابر سرریز اعداد صحیح را فراهم می کند، به متغیرها نیاز دارد که قبل از استفاده مقداردهی اولیه شوند، خطاها را در کتابخانه استاندارد بهتر مدیریت می کند، مفهوم مراجع و متغیرهای غیرقابل تغییر را به طور پیش فرض اعمال می کند، و تایپ ثابت قوی برای به حداقل رساندن خطاهای منطقی ارائه می دهد.
نوآوری های اصلی:
- مدیر بسته محموله تشخیص هشدارهایی را که میتوانند به طور خودکار برطرف شوند و توصیههای مناسب برای اجرای "محموله تعمیر" یا "محموله clippy --fix" را پیادهسازی میکند. warning: unused import: 'std::hash::Hash' --> src/main.rs:1:5 | 1 | استفاده از std::hash::hash; | ^^^^^^^^^^^^^^^ | = توجه: '#[warn(unused_imports)]' به طور پیشفرض اخطار روشن است: 'foo' (bin "foo") 1 هشدار ایجاد کرد (برای اعمال 1 پیشنهاد، 'cargo fix --bin "foo"' را اجرا کنید)
- Cargo را برای نمایش توصیه ای برای استفاده از دستور "cargo add" هنگام تلاش برای نصب کتابخانه با دستور "cargo install" اضافه کرد.
- برای کاهش زمان کامپایل، اشکال زدایی اطلاعات در اسکریپت های ساخت به طور پیش فرض غیرفعال شده است. اگر اسکریپتهای ساخت با موفقیت اجرا شوند، تغییر هیچ تفاوت قابل مشاهدهای ایجاد نمیکند، اما اگر شکست بخورد، بکتریس dump حاوی اطلاعات کمتری خواهد بود. برای برگرداندن رفتار قدیمی به Cargo.toml اضافه کنید: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
- بخش جدیدی از API به دسته پایدار منتقل شده است، از جمله روش ها و اجرای صفات تثبیت شده اند:
- CStr::from_bytes_until_nul
- هسته::ffi::FromBytesUntilNulError
- ویژگی "const" که امکان استفاده از آن را در هر زمینه ای به جای ثابت ها تعیین می کند، در توابع استفاده می شود:
- SocketAddr::جدید
- SocketAddr::ip
- SocketAddr::port
- SocketAddr::is_ipv4
- SocketAddr::is_ipv6
- SocketAddrV4::جدید
- SocketAddrV4::ip
- SocketAddrV4::port
- SocketAddrV6::جدید
- SocketAddrV6::ip
- SocketAddrV6::port
- SocketAddrV6::flowinfo
- SocketAddrV6::scope_id
- قابلیت استفاده از پرچم های true و false در آرگومان های کامپایلر اضافه شده است.
منبع: opennet.ru