Clojure 1.12.0
Tương thích
Java 8 - Thông báo kết thúc hỗ trợ tương thích
- Clojure 1.12 tạo bytecode Java 8, nhưng đây là bản phát hành cuối cùng sử dụng Java 8.
- Các bản phát hành sau đó sẽ chuyển sang bản phát hành Java LTS mới hơn.
Java 21 - Ghim virtual thread trong mã người dùng
- Với người dùng Clojure muốn sử dụng virtual thread trên JDK 21, trong phiên bản 1.12,
lazy-seq và delay dùng lock thay cho khối synchronized.
Bảo mật
- Đã sửa lỗ hổng bảo mật CVE-2024-22871.
Tuần tự hóa
- Các kiểu dữ liệu Clojure triển khai giao diện tuần tự hóa của Java.
- Trong 1.11.0, mã định danh tuần tự hóa của hai lớp đã bị thay đổi, nhưng điều này đã được hoàn tác trong 1.11.1.
- Trong 1.12.0, công việc cho các lớp còn lại đã được hoàn tất.
Phụ thuộc
- Cập nhật phụ thuộc
spec.alpha lên 0.5.238.
- Cập nhật phụ thuộc
core.specs.alpha lên 0.4.74.
Tính năng
Thêm thư viện tương tác
- Cung cấp các hàm mới cho phép thêm thư viện mà không cần khởi động lại JVM.
- Đã thêm các hàm
add-lib, add-libs, sync-deps.
Khởi chạy và điều khiển tiến trình bên ngoài
- Thêm namespace mới
clojure.java.process.
- Có thể điều khiển tiến trình bên ngoài bằng các hàm
start và exec.
Giá trị phương thức
- Thêm khả năng sử dụng phương thức Java như hàm bậc cao.
- Trình biên dịch sẽ tự động tạo hàm bao bọc.
Phương thức định danh đầy đủ
- Có thể dùng các phương thức định danh đầy đủ làm giá trị bằng cú pháp
Classname/method, Classname/.method, Classname/new.
Metadata :param-tags
- Có thể cung cấp metadata :param-tags cho các phương thức định danh đầy đủ để phân giải các phương thức nạp chồng.
Cú pháp lớp mảng
- Thêm cú pháp biểu diễn lớp mảng. Ví dụ:
String/2 biểu thị mảng chuỗi hai chiều.
Giao diện hàm
- Có thể chuyển giao diện hàm Java thành hàm Clojure để sử dụng.
Khả năng tương tác với Java Supplier
- Các đối tượng triển khai
IDeref nay trực tiếp triển khai giao diện Supplier.
Hỗ trợ stream
- Có thể xử lý stream theo phong cách Clojure với các hàm
stream-seq!, stream-reduce!, stream-transduce!, stream-into!.
PersistentVector triển khai Spliterable
PersistentVector giờ đây cung cấp spliterator tùy biến hỗ trợ xử lý song song.
drop và partition hiệu quả hơn
- Hiệu năng của các hàm
drop, nthrest, nthnext được cải thiện.
- Thêm các hàm mới
partitionv, partitionv-all, splitv-at.
Chính sách intern Var
- Khi intern var trong namespace, sẽ tạo tham chiếu ổn định.
- Giải quyết vấn đề phát sinh trong 1.11.0.
Tóm tắt của GN⁺
- Clojure 1.12.0 là bản phát hành cuối cùng sử dụng Java 8, và các bản phát hành sau sẽ chuyển sang bản phát hành Java LTS mới hơn.
- Các tính năng mới bao gồm thêm thư viện tương tác, điều khiển tiến trình bên ngoài và sử dụng giá trị phương thức.
- Khả năng tương tác với Java đã được cải thiện đáng kể, đồng thời bổ sung các tính năng drop và partition hiệu quả hơn.
- Đây là bản cập nhật hữu ích cho người dùng Clojure, có thể nâng cao năng suất phát triển.
1 bình luận
Ý kiến Hacker News