Bỏ qua để đến nội dung

Đặ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.

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.

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

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.