۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

Rust 1.80 انواع تنبل را اضافه می کند

انواع LazyCell و LazyLock جدید Rust شروع اولیه داده های خود را تا اولین دسترسی به تاخیر می اندازند. الگوهای محدوده نیز در آخرین به روز رسانی زبان مورد توجه قرار می گیرند.

انواع LazyCell و LazyLock جدید Rust شروع اولیه داده های خود را تا اولین دسترسی به تاخیر می اندازند. الگوهای محدوده نیز در آخرین به روز رسانی زبان مورد توجه قرار می گیرند.

Rust 1.80، آخرین نسخه زبان برنامه نویسی پرطرفدار ایمن برای حافظه، منتشر شده است که دارای انواع “تنبل” برای به تاخیر انداختن مقداردهی اولیه داده ها تا اولین دسترسی آنها است.

Rust 1.80 در ۲۵ ژوئیه رونمایی شد. برنامه‌نویسانی که نسخه قبلی Rust را از طریق rustup نصب کرده‌اند، می‌توانند با اجرای $ rustup update stable به نسخه ۱.۸۰ به‌روزرسانی شوند.

انواع تنبل جدید LazyCell و LazyLock، که مقداردهی اولیه مقادیر را تا اولین دسترسی به تاخیر می اندازند، شبیه OnceCell< انواع /code> و OnceLock در Rust 1.70، اما با تابع مقداردهی اولیه موجود در سلول. این کار تثبیت عملکرد پذیرفته شده در کتابخانه استاندارد را از lazy_static و once_cell. LazyLock گزینه ایمن برای رشته است که برای مکان هایی مانند مقادیر static مناسب است. LazyCell فاقد همگام‌سازی رشته است، بنابراین Sync را که برای static لازم است، اجرا نمی‌کند، اما همچنان می‌تواند در thread_local استفاده شود!< تیم Rust گفت: /code> statics.

همچنین در Rust 1.80، الگوهای محدوده اکنون می توانند از نقاط پایانی انحصاری استفاده کنند، نوشته شده a..b یا ..b مشابه با محدوده و انواع عبارت RangeTo. محدوده های انحصاری به عنوان یک ویژگی ناپایدار در Rust پیاده سازی شده بود. به گفته تیم Rust، نگرانی مسدودکننده این بود که ممکن است سردرگمی ایجاد کنند و احتمال خطاهای یک‌به‌یک در الگوها را افزایش دهند. با Rust 1.80، بررسی جامع بودن برای تشخیص بهتر شکاف‌ها در تطابق الگو بهبود یافته است، و پرزهای جدید non_contiguous_range_endpoints و overlapping_range_endpoints به شناسایی مواردی که توسعه‌دهندگان ممکن است بخواهند الگوهای انحصاری را به آن تغییر دهند، کمک می‌کند. فراگیر، یا برعکس.

در Rust 1.79 rustc یک --check-cfg پرچم را تثبیت کرد. اکنون Cargo 1.80 این بررسی‌ها را برای همه نام‌ها و مقادیر cfg که می‌داند (علاوه بر نام ها و مقادیر شناخته شده از rustc). این شامل نام‌های ویژگی از Cargo.toml و همچنین خروجی cargo::rustc-check-cfg جدید از اسکریپت‌های ساخت می‌شود.

Rust 1.80 همچنین API های متعدد.