KonLang English

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ệnhCông dụng
kon run game.konBuild, 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 --releaseTạo game.exe, chạy được mà không cần Kon
kon check game.konBáo lỗi, không tạo file
kon testBuild 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 gameTạo dự án mới
kon licenseAi làm, điều khoản, và nơi lưu bản đầy đủ
--link bridge.c -lgdi32Thê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ó kon cho 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 license cho 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.