Bắt đầu
Halis cài bằng một lệnh. Archive phát hành mang theo toàn bộ toolchain —
trình biên dịch hlc và trình định dạng hlfmt dạng binary, thư viện chuẩn
std/ và runtime freestanding core/ dạng mã nguồn — nên bạn không cần C
compiler, không cần make, không cần Python.
curl -fsSL https://raw.githubusercontent.com/mhieuhonda/halis-lang/main/install.sh | shTrình cài đặt chọn archive đúng nền tảng của bạn, kiểm tra SHA-256 của nó so
với SHA256SUMS của chính release trước khi giải nén bất cứ thứ gì, cài vào
/usr/local (hoặc ~/.local nếu thư mục đó không ghi được), rồi tự chạy
acceptance gate của riêng nó: biên dịch một chương trình import "std.result"
và format chương trình đó hai lần — lần hai phải bằng lần một.
Chương trình đầu tiên
Phần tiêu đề “Chương trình đầu tiên”Tạo hello.hls:
fn greet(name: str) -> str { return "Hello, " + name + "!"}
fn main() -> int uses IO { println(greet("Halis")) println("A high-security programming language, compiled native.") println("Compiled by a compiler written in HLS itself.") return 0}Hai điều đã khác hẳn so với phần lớn các ngôn ngữ:
greetkhông có mệnh đềuses, nên trình biên dịch bảo đảm nó thuần khiết.mainkhaiuses IO— bỏ đi thì lời gọiprintlnlà lỗi biên dịch, không phải cảnh báo.
Biên dịch và chạy
Phần tiêu đề “Biên dịch và chạy”hlc xuất ra C, và trình biên dịch C của hệ thống biến C đó thành một binary
native:
hlc hello.hls hello.ccc -o hello hello.c -lm -pthread./helloKiểm tra mà không cần chạy
Phần tiêu đề “Kiểm tra mà không cần chạy”hlc --check hello.hls--check kiểm tra kiểu và effect mà không sinh mã. Đây là cách nhanh nhất để
thấy thông điệp lỗi effect:
error: function 'main' calls 'println' which requires effect 'IO'not declared (declared: (none - pure); missing: IO)Xem bằng chứng
Phần tiêu đề “Xem bằng chứng”hlc --audit hello.hls--audit in ra, cho từng hàm, các capability mà nó khai báo và các
capability mà trình biên dịch tính toán được khi đi đồ thị gọi. Hàm nào
không khai gì mà cũng không tính toán ra gì thì đã được chứng minh thuần
khiết; một khác biệt là vi phạm, và chuỗi gọi gây ra nó được gọi tên.
Các lệnh hằng ngày
Phần tiêu đề “Các lệnh hằng ngày”| Lệnh | Tác dụng |
|---|---|
hlc prog.hls prog.c |
Biên dịch HLS ra C |
hlc --check prog.hls |
Kiểm tra kiểu và effect, không sinh mã |
hlc --audit prog.hls |
Báo cáo capability và luồng taint |
hlc --emit llvm prog.hls out.ll |
Xuất LLVM IR thay vì C |
hlc --sandbox DIR prog.hls |
Giới hạn builtin tệp vào DIR |
hlfmt -w prog.hls |
Format tệp tại chỗ |
hllint prog.hls |
Chạy linter ưu tiên an toàn |
hltest |
Chạy bộ test viết bằng chính ngôn ngữ |
Biên dịch từ mã nguồn
Phần tiêu đề “Biên dịch từ mã nguồn”Nếu bạn muốn làm việc với chính trình biên dịch, hoặc bạn ở trên một nền tảng không có archive dựng sẵn:
git clone https://github.com/mhieuhonda/halis-lang.gitcd halis-langmake bootstrap # ~20 s: cc builds the committed snapshot, HLS takes overmake run F=examples/hello.hlsmake testmake bootstrap biên dịch snapshot C đã commit rồi bắt trình biên dịch vừa
dựng phải tái tạo đúng snapshot đó byte for byte. Snapshot cũ hoặc bị sửa
tay sẽ làm build fail ngay lập tức. Xem luật bootstrap.
Hỗ trợ trình soạn thảo
Phần tiêu đề “Hỗ trợ trình soạn thảo”Tiện ích VS Code nằm ở editors/vscode/halis/ và gói kèm language server,
trình định dạng, linter và debug adapter. File cú pháp và plugin cho Neovim nằm
ở editors/neovim/.