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

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.

Terminal window
curl -fsSL https://raw.githubusercontent.com/mhieuhonda/halis-lang/main/install.sh | sh

Trì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.

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ữ:

  • greet không có mệnh đề uses, nên trình biên dịch bảo đảm nó thuần khiết.
  • main khai uses IO — bỏ đi thì lời gọi println là lỗi biên dịch, không phải cảnh báo.

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:

Terminal window
hlc hello.hls hello.c
cc -o hello hello.c -lm -pthread
./hello
Terminal window
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)
Terminal window
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.

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ữ

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:

Terminal window
git clone https://github.com/mhieuhonda/halis-lang.git
cd halis-lang
make bootstrap # ~20 s: cc builds the committed snapshot, HLS takes over
make run F=examples/hello.hls
make test

make 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.

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/.