Clojure 1.13.0-alpha1 bổ sung khóa kiểm tra trong destructuring
Clojure 1.13.0-alpha1 giới thiệu khóa kiểm tra cho map destructuring, ngưỡng lớn hơn cho PersistentArrayMap chỉ chứa khóa từ khóa, và loại bỏ ACC_FINAL khỏi các bộ khởi tạo tĩnh.
Clojure 1.13.0-alpha1 đã ra mắt, mang đến một số cải tiến về chất lượng cuộc sống cho các kỹ sư đang làm việc. Tính năng nổi bật là khóa kiểm tra trong map destructuring — một nâng cấp công thái học được yêu cầu từ lâu, cuối cùng cho phép bạn thực thi các ràng buộc bắt buộc mà không cần boilerplate.
Khóa kiểm tra: :keys!, :syms!, :strs!
Giờ đây bạn có thể sử dụng các biến thể bang của các chỉ thị destructuring — :keys!, :syms! và :strs! — để ném ra ngoại lệ nếu một khóa được chỉ định không có trong map. Điều này loại bỏ nhu cầu gọi thủ công get hoặc các giải pháp thay thế pattern-matching khi bạn muốn đảm bảo rằng một khóa bắt buộc được ràng buộc. Ngoài ra, giờ đây bạn có thể bao gồm các khóa sau & trong bất kỳ chỉ thị nào cho mục đích tài liệu hóa hoặc xác thực mà không cần ràng buộc chúng. Tính năng này được theo dõi tại CLJ-2961 và đi kèm với các spec đi kèm (CLJ-2960).
Một tiện ích liên quan, req!, là một biến thể của get báo cáo khi không tìm thấy khóa (CLJ-2949). Ngoài ra, let, loop và let* giờ đây không cho phép & làm tên ràng buộc cục bộ (CLJ-2954), ngăn chặn một lỗi tiềm ẩn tinh vi.
Ngưỡng PersistentArrayMap được nâng lên
Các PersistentArrayMap chỉ bao gồm các khóa từ khóa giờ đây có thể phát triển lên đến kích thước 64 (trước đây là 8) trước khi chuyển đổi thành PersistentHashMap. Vì quét định danh PAM hiệu quả hơn tra cứu PHM trong phạm vi này, thay đổi này làm cho nhiều điểm sử dụng trở nên đơn hình và dễ dàng hơn cho JIT tối ưu hóa. Một thắng lợi nhỏ nhưng đáng hoan nghênh cho các hot path.
Chuẩn bị cơ sở bytecode
Chỉ định ACC_FINAL đã được loại bỏ khỏi các hằng số khởi tạo tĩnh (CLJ-2891). Đây là bước chuẩn bị để chuyển cơ sở bytecode Java nhằm giải quyết các kiểm tra verifier mới — chưa ảnh hưởng đến người dùng, nhưng báo hiệu hướng đi của runtime.
Cách lấy
Cập nhật phụ thuộc deps.edn của bạn:
org.clojure/clojure {:mvn/version "1.13.0-alpha1"}Hoặc khởi động REPL với Clojure CLI:
clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.13.0-alpha1"}}}Đây là bản phát hành alpha, vì vậy hãy mong đợi thêm nhiều cải tiến trước khi bản ổn định ra mắt. Riêng tính năng khóa kiểm tra đã đáng để xem xét nếu bạn từng mong muốn destructuring thực sự thực thi sự hiện diện.
Thảo luận
0 bình luận
Hãy là người đầu tiên thảo luận.