Bản phát hành ngôn ngữ lập trình Rust 1.44

được phát hành phát hành ngôn ngữ lập trình hệ thống Rỉ 1.44được thành lập bởi dự án Mozilla. Ngôn ngữ này tập trung vào quản lý bộ nhớ an toàn, cung cấp khả năng quản lý bộ nhớ tự động và cung cấp các phương tiện để đạt được tính song song công việc cao đồng thời tránh sử dụng trình thu gom rác và thời gian chạy.

Tính năng quản lý bộ nhớ tự động của Rust giúp nhà phát triển tránh khỏi lỗi khi thao tác với con trỏ và bảo vệ khỏi các vấn đề phát sinh do thao tác bộ nhớ ở mức độ thấp, chẳng hạn như truy cập vào vùng bộ nhớ sau khi nó được giải phóng, hủy bỏ con trỏ null, lỗi tràn bộ đệm, v.v. Để phân phối các thư viện, đảm bảo lắp ráp và quản lý các phần phụ thuộc, dự án phát triển một trình quản lý gói Cargo, cho phép bạn lấy các thư viện bạn cần cho chương trình chỉ bằng một cú nhấp chuột. Một kho lưu trữ được hỗ trợ cho các thư viện lưu trữ thùng.io.

Trong văn bản thông báo về bản phát hành mới, các nhà phát triển Rust đã tham gia vào chính trị và ngang ngược từ chối công bố bản đánh giá đầy đủ về những thay đổi trong Rust 1.44 để đoàn kết với những người biểu tình chống lại bạo lực của cảnh sát, cho thấy rằng vấn đề này quan trọng hơn vấn đề này. trao đổi kiến ​​thức kỹ thuật. Chủ yếu đổi mới:

  • Lệnh "cây chở hàng" được tích hợp vào trình quản lý gói Hàng hóa, hiển thị biểu đồ phụ thuộc dạng cây. Đồng thời đã thêm tùy chọn "--duplicates" ("cây hàng hóa -d"), cho phép bạn đánh giá các phần phụ thuộc trong các phiên bản khác nhau của cùng một gói.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoniac v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── nhật ký v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── nhật ký v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [phụ thuộc vào bản dựng] │ │ │ └── phiên bản_check v0.1.5
    ...

  • Đối với các ứng dụng không bị ràng buộc với std ("#![no_std]"), hỗ trợ cho các phương pháp lập trình không đồng bộ dựa trên hàm "async", khối di chuyển async { ... } và toán tử ".await" được triển khai. giúp việc viết luồng lệnh chính của trình xử lý không chặn trở nên dễ dàng hơn.
  • Hỗ trợ cho sơ đồ định nghĩa phân cấp mô-đun mở rộng đã được thêm vào trình phân tích cú pháp. Ví dụ: cấu trúc sau sẽ không tạo ra lỗi, mặc dù thực tế không có mô-đun "foo/bar/baz.rs" (về mặt ngữ nghĩa, cấu trúc vẫn không hợp lệ và có thể gây ra lỗi, nhưng những thay đổi có thể được nhìn thấy và phân tích cú pháp ở cấp độ vĩ mô và biên dịch có điều kiện):

    #[cfg(FALSE)] mod foo {
    thanh mod {
    modbaz;
    }
    }

  • Trình biên dịch Rustc đã thêm khả năng sử dụng cờ "-C codegen-units" ở chế độ tăng dần. Việc triển khai Catch_unwind đã được thiết kế lại, hiện không ảnh hưởng đến hiệu suất nếu quá trình tháo gỡ bị vô hiệu hóa và không có ngoại lệ nào được đưa ra.
  • Cung cấp hỗ trợ cấp thứ ba cho các nền tảng aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos và x86_64-apple-tvos. Cấp độ thứ ba ngụ ý hỗ trợ cơ bản nhưng không có thử nghiệm tự động và xuất bản các bản dựng chính thức.
  • Một phần mới của API đã được chuyển sang danh mục ổn định, bao gồm cả ổn định
    PathBuf::with_capacity,
    PathBuf::dung lượng,
    PathBuf::rõ ràng,
    PathBuf::dự trữ,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Bố cục::align_to
    Bố cục::pad_to_align,
    Bố cục::mảng và
    bố cục::mở rộng.

  • Các chức năng mở rộng của thư viện tiêu chuẩn:
    • Đã thêm một biến thể đặc biệt của "vec![]" được phản ánh trực tiếp trong Vec::new(), cho phép sử dụng "vec![]" trong ngữ cảnh thay vì hằng số.
    • Triển khai đặc điểm (impl) được thêm vào Convert::Infallible Băm.
    • OsString triển khai con trỏ thông minh DerefMut и IndexMut, trả về "&mut OsStr".
    • Đã thêm hỗ trợ cho Unicode 13.
    • Được triển khai trong chuỗi Từ<&mutstr>.
    • Đặc điểm được triển khai trong IoSlice Sao chép.
    • Vec được triển khai Từ<[T; N]>.
    • proc_macro::LexError triển khai fmt::Display và Error.
  • Thuộc tính "const", xác định khả năng sử dụng trong bất kỳ ngữ cảnh nào thay vì hằng số, được sử dụng trong các phương thức from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes và to_ne_bytes cho tất cả các loại số nguyên.
  • Đã thêm hỗ trợ tạo thư viện tĩnh ở định dạng ".a" thay vì ".lib" cho nền tảng GNU cho Windows.
  • Các yêu cầu tối thiểu cho LLVM đã được nâng lên LLVM 8.

Nguồn: opennet.ru

Thêm một lời nhận xét