Jolt: Trình biên dịch Clojure tự lưu trữ nhắm đến Scheme
Jolt là một trình biên dịch Clojure tự lưu trữ, phát ra Scheme, chạy trên Chez hoặc Gambit, và tạo ra các tệp thực thi độc lập — không cần JVM. Nó mang lại sự đồng thời thực sự, cấu trúc dữ liệu bền vững và ngữ nghĩa Clojure cho một môi trường chạy mới.
Jolt là một trình biên dịch mới nhận mã nguồn Clojure, phân tích nó thành một IR trung lập với máy chủ, và phát ra Scheme. Nó chạy tự nhiên trên Chez Scheme, hoặc trên Gambit khi được biên dịch sang JavaScript. Bản thân trình biên dịch được viết bằng Clojure và tự biên dịch chính nó — một thiết kế tự lưu trữ chứng minh sự trưởng thành của chính nó.
Tính năng nổi bật là jolt build, biên dịch trước toàn bộ dự án — runtime, thư viện chuẩn, ứng dụng và các phụ thuộc — thành một tệp thực thi duy nhất, khép kín. Không cần Chez, không cần JVM, không cần mã nguồn để chạy. Đó là một sự khác biệt lớn so với câu chuyện triển khai Clojure truyền thống, thường yêu cầu JVM và classpath.
Đồng thời được xử lý bằng các luồng hệ điều hành trên một heap dùng chung, khớp với ngữ nghĩa JVM cho future, promise, agent và pmap. core.async cung cấp các kênh và khối go, vì vậy mô hình bất đồng bộ của Clojure được kế thừa.
Tháp số được triển khai đầy đủ: số nguyên chính xác, bignum, tỷ lệ chính xác và số thực flonum. = nhận biết loại, trong khi == so sánh giá trị giữa các loại. Cấu trúc dữ liệu bền vững bao gồm cây 32 nhánh cho vector, danh sách cons và bản đồ/tập HAMT với ngữ nghĩa giá trị Clojure. Transient là các bộ sưu tập tạm thời có thể thay đổi thực sự.
Khả năng tương thích Clojure rộng rãi: chuỗi lười biếng/vô hạn, bộ chuyển đổi, destructuring, multimethod, protocol/bản ghi, metadata, namespace, eval thời gian chạy và toàn bộ trình đọc. Đây không phải là một tập con đồ chơi — nó nhắm đến mã Clojure thực tế.
Jolt là một dự án đầy tham vọng có thể định hình lại cách triển khai Clojure, đặc biệt cho những ai muốn sự biểu cảm của Clojure mà không phải chịu chi phí của JVM. Đáng để theo dõi cho bất kỳ ai đầu tư vào hệ sinh thái Clojure.
Không cần Chez, không cần JVM, không cần mã nguồn để chạy — biên dịch trước của Jolt tạo ra một tệp thực thi duy nhất, khép kín.
| Tính năng | Jolt | Clojure (JVM) |
|---|---|---|
| Môi trường chạy | Chez Scheme / Gambit (JS) | JVM |
| Đầu ra nhị phân | Tệp thực thi độc lập | JAR + cần JVM |
| Đồng thời | Luồng OS, heap dùng chung | Luồng JVM, heap dùng chung |
| Dữ liệu bền vững | Cây 32 nhánh, HAMT | PersistentHashMap, v.v. |
| Hệ sinh thái | Hạn chế, đang phát triển | Trưởng thành, rộng lớn |
Thảo luận
0 bình luận
Hãy là người đầu tiên thảo luận.