Công cụ
Một lệnh làm tất cả, và chương trình build ra không cần gì của Kon để chạy.
Một file
kon.exe chứa compiler, thư viện và những phần cần thiết của Clang. Không phải cài thêm gì, cũng không phải đặt biến môi trường. Lần chạy đầu sẽ giải nén khoảng 310 MB vào %LOCALAPPDATA%\Kon, mất 10 đến 15 giây; sau đó chương trình nhỏ build và chạy xong trong khoảng 0,2 giây.
Muốn gỡ, chỉ cần xoá kon.exe và thư mục đó.
Các lệnh
| Lệnh | Công dụng |
|---|---|
kon run game.kon | Build, chạy, rồi dọn file tạm |
kon run game.kon --release -- a "b c" | Có tối ưu và tham số chương trình |
kon build game.kon --release | Tạo game.exe, chạy được mà không cần Kon |
kon check game.kon | Báo lỗi, không tạo file |
kon test | Build và chạy mọi *_test.kon trong thư mục này |
kon fmt | Định dạng mọi file .kon trong thư mục này |
kon new game | Tạo dự án mới |
kon license | Ai làm, điều khoản, và nơi lưu bản đầy đủ |
--link bridge.c -lgdi32 | Thêm file C hoặc thư viện hệ thống vào bản build |
Dự án
Dự án là thư mục có kon.toml và src/main.kon. Ở trong đó, kon run, kon build và kon test không cần ghi tên file, và chương trình được tạo trong build/.
kon new game tạo game/ gồm kon.toml, src/main.kon và tests/main_test.kon
kon add ../mathlib dùng một dự án khác trên máy
kon remove mathlib
kon deps xem cây phụ thuộc
kon sync làm mới build/deps và kon.lock
kon sync --locked từ chối nếu có gì khác kon.lock
kon clean xoá build/
Các lệnh chạy tại thư mục chứa kon.toml. Code import phụ thuộc từ nơi nó được chép vào, ví dụ import "../build/deps/mathlib/math.kon" as math từ src/. Một phụ thuộc import phụ thuộc khác bằng import "../other/other.kon".
Phụ thuộc chỉ là thư mục trên máy bạn: không có kho gói và không tải gì về. kon.lock giữ mã băm của từng cái, cho biết nó đã đổi chứ không nói nó đáng tin.
kon fmt
Lệnh này chỉ đổi khoảng trắng, thụt lề, dòng trống và ký tự xuống dòng. Nó chỉ định dạng file parse được, và đọc lại kết quả trước khi ghi: nếu token khác đi thì giữ nguyên file. Trên toàn bộ file Kon trong dự án lúc tính năng được thêm, 659 file, định dạng lần hai không đổi gì, và 59 chương trình test vẫn chạy y như cũ sau khi định dạng.
kon fmt định dạng thư mục này
kon fmt --check không ghi; thoát với mã 1 nếu có gì cần đổi
kon fmt --stdout game.kon in kết quả ra
Hiện nó làm việc trên token, nên chưa tách nhiều câu lệnh trên một dòng và chưa ngắt dòng dài.
kon test
Bài test là chương trình thoát với mã 0. Không có framework nào phải học.
func add(a: i32, b: i32): i32 {
return a + b
}
func main(): i32 {
if add(2, 2) != 4 { return 1 }
return 0
}
ok .\math_test.kon
FAIL .\text_test.kon (exit 3)
2 tests, 1 failed
Lỗi
Lỗi ghi rõ file, dòng và cột. Khi liên quan đến hai chỗ, chỗ thứ hai cũng được chỉ ra.
K2-OWN-001: value was moved or is not initialized at game.kon:4:11
K2-RELATED: related ownership location at game.kon:3:17
VS Code
Extension trong editors/vscode thêm nút chạy và phím F5, gạch đỏ lỗi đúng dòng khi mở hoặc lưu file, kể cả lỗi trong file được import, tự định dạng khi lưu, và có tô màu, snippet, gợi ý khi di chuột và outline.
Nó tìm kon.exe theo cài đặt konlang.compilerPath, rồi ở %LOCALAPPDATA%\Kon\kon.exe, rồi trong PATH.
node editors/vscode/package_vsix.js .
code --install-extension konlang-2.0.4.vsix
Build kon.exe
Chưa có bản tải công khai. Từ bản checkout mã nguồn, cùng llvm-mingw:
node v2/compiler/build.js <seed compiler> <llvm-mingw>/bin/clang.exe
node v2/dist/build.js target/v2-current <llvm-mingw> kon.exe
node v2/dist/test.js kon.exe
Giới hạn
- Chỉ có Windows x64. Phần C của thư viện cũng chạy trên Linux, nhưng chưa có
koncho Linux. - Chưa build chéo sang hệ khác được.
- File vẫn chứa Clang, chiếm phần lớn 67 MB. Backend riêng của Kon sẽ bỏ được phần này ở bản debug.
- File có kèm LLVM và mingw-w64 theo điều khoản riêng của chúng;
kon licensecho biết nơi lưu các văn bản đó. - File chưa ký số, nên Windows SmartScreen hoặc phần mềm diệt virus có thể cảnh báo.
- Lỗi cú pháp và kiểu còn ngắn, gồm mã và một từ, vì compiler hiện chỉ báo vậy. Danh sách mã lỗi có giải thích.