Đặc tả ngôn ngữ
Tài liệu chuẩn và có tính pháp lý của Halis là
SPEC.md trong
kho mã. Đó là tài liệu pháp lý của dự án: bề mặt API của v1.0 được ghim tại
một digest, hls-freeze từ chối mọi thay đổi lệch, và mỗi lần sửa đổi đều
đi trong một sổ cái móc xích băm.
Cách đọc
Phần tiêu đề “Cách đọc”SPEC.md là tài liệu lịch sử. Nó mô tả ngôn ngữ như nó đã tiến hoá, qua
từng stage, và đã được biên tập liên tục từ đầu. Một số câu trong đó mô tả
trạng thái sớm hơn của ngôn ngữ.
Ở những chỗ SPEC.md khác với trình biên dịch đã phát hành, trình biên dịch
là đúng. Ví dụ cụ thể:
| Ở đâu | Nói gì | Thực tế ở v1.0 |
|---|---|---|
Tiêu đề SPEC.md §17.1 |
“The eight active effects” | Có chín effect — Conc được thêm ở Stage 16 |
SPEC.md §9 |
“Five fine-grained effects” | Nhóm IO vẫn có năm, nhưng có thêm bốn effect bên ngoài nó |
SPEC.md §3 |
“Move semantics & ownership arrive in Stage 8” | Ownership đã ra ở Stage 8 và là hành vi hiện hành |
Đó chính là lý do trang tra cứu nhanh
trên trang này được sinh từ mã nguồn trình biên dịch chứ không phải từ đặc
tả: danh sách effect đến từ src/hlc/parser.hls, ánh xạ builtin đến từ
src/hlc/checker.hls, danh sách module đến từ cây std/ và core/. Khi
trình biên dịch thay đổi, tài liệu tham chiếu thay đổi theo.
Các chương
Phần tiêu đề “Các chương”| Mục | Nội dung |
|---|---|
| §1–§2 | Triết lý thiết kế, quy tắc từ vựng |
| §3–§4 | Kiểu dữ liệu, cấu trúc chương trình, import |
| §5–§8 | Câu lệnh, biểu thức, builtin |
| §9 | Hệ effect |
| §11–§12 | Mô hình bộ nhớ, Result và toán tử ? |
| §16 | Sở hữu: drop, clone, take |
| §17–§19 | Effect, capability token, theo dõi taint |
| §24–§27 | FFI, đồng thời, attribute, freestanding |
| §26, §52–§54 | Hợp đồng, refinement type, proof engine |
API đã đóng băng
Phần tiêu đề “API đã đóng băng”tests/api_freeze.json và công cụ hls-freeze ghim bề mặt của v1.0. Cổng
make freeze-verify từ chối mọi thay đổi lệch trên từng commit, và
hls-migrate chạy lại corpus của mọi bản phát hành trước để nâng cấp cây cũ mà
không phải đoán.