Kai Programming Language
An expressive low level programming language.
Read the docs at docs.kai-lang.org
Have you built something cool? Feel free to share it here!
- KaiNES: A pure-Kai NES emulator.
- KaiVM: A register-based VM and disassembler.
- Kinit: A minimal init system.
Download and Install
You can download and install Kai through our homebrew tap.
brew install kai-language/tap/kai
In the future, Kai will offer official binary distribution through apt and other package managers. See building Kai.
Before you can begin building Kai, you must install the following dependencies:
- Swift 4.0
- LLVM 4 or higher
On Mac, the preferred way to install Swift 4 is by installing Xcode. After installing Xcode, make sure to run it once and say
yes to installing the command-line tools.
By far, the easiest way to install LLVM on Mac is through brew. After setting up brew, run the following to install the correct version of LLVM:
brew install llvm
Using LLVM with Swift Package Manager
Now that LLVM is installed, append the directory to your path in
In order for Swift Package Manager to build against LLVM's libraries, we need to setup a pkg-config file. Thankfully, LLVMSwift has a script for this:
Grab the script by running
swift package update in Kai's root directory. Then, run:
Just like LLVM, libgit2 can be installed through brew.
brew install libgit2
Help us keep the lights on
0.1.9 - Feb 24, 2018
- Lots and lots of bugs
- Enum syntax updated to be more refactor friendly
- Variadic improvements
- Unions are now tagged automatically
- Enum flags
- Type info!
- Inline asm
0.1.8 - Dec 9, 2017
- Crash when import fails
- Crash when decl position was loaded
- Selectors on aliased pointers
- Codegen with LLVM aliases
0.1.7 - Dec 3, 2017
usingsupport on enumerations
casestatements now support lists. Ex:
case "a", "b", "c":
- String escape crash
- Invalid width crash
- Invalid codegen logic creating duplicate function prototypes
- Function calls on aliased types
0.1.6 - Nov 25, 2017
- Slice as lvalue crash
0.1.5 - Nov 25, 2017
- Kai-native variadic functions
- IRGen for calls to variadics polymorphics
- Check errors before emitting generated package