Awesome
, ,
_,-=._ /|_/|
`-.} `=._,.-=-._., @ @._,
`._ _,-. ) _,.-'
` G.Q-^^u`u'
oooo oooo o8o ,
`888 .8P' `V' ,o8
888 d8' oooo .o888oo
88888[ `888 888
888`88b. 888 888
888 `88b. 888 888 ,
o888o o888o o888o '888'
Kit is a programming language designed for creating concise, high performance cross-platform applications. Kit compiles to C, so it's highly portable; it can be used in addition to or as an alternative to C, and was designed with game development in mind.
Why you should use Kit in place of:
C/C++ | a higher level language |
---|---|
Modern language features: type inference, algebraic data types, pattern matching, explicit function inlining, automatic pointer dereferencing, generics, implicits. | Full control over performance: pointers, manual memory management, no GC (unless you introduce it yourself, which is easy!) |
A more expressive type system, including traits for polymorphism, and abstract types, which provide custom compile-time behavioral and type checking semantics to existing types with no runtime cost. | Metaprogramming via a typed term rewriting system; use rules to transform arbitrary expressions at compile time based on their type information. Create your own interface or DSL. |
A sane, easy to use build system. Kit features modules, imports, and standard package structure, plus a simple but powerful build tool: manage your project via a simple YAML configuration file and kit build , kit test , or kit run . (coming soon...) | Take advantage of existing C libraries without any wrappers; just include the header and directly use types/functions/variables. |
function main() {
var s: CString = "Hello from Kit!";
printf("%s\n", s);
}
Kit is pre-alpha and not all features are fully implemented; see the roadmap on Trello.
License
The Kit compiler is licensed under the GNU Lesser General Public License; see the accompanying LICENSE.md file. This applies to modifications to the compiler source itself; any code you write and compile with Kit is yours to license however you choose.
The Kit standard library (.kit files contained in this repo) is released under the MIT license.
Design goals and philosophy
-
Magic and abstracting away complexity are good! Developers should write the most concise and declarative version of their code, and use syntax transformations to convert it into what a performance-conscious developer would've written by hand.
-
Expose the necessary low-level details to write high performance code, and make it easy to abstract them away without entirely giving up control.
-
Kit provides more compile-time safety than C, but never chooses safety at the expense of ergonomics.
Building from source
The Kit compiler, kitc
, is written in Haskell. Building the compiler requires GHC; the easiest path is to install Stack and run:
stack build
This will install all other dependencies locally, including a local GHC binary, and build the compiler.
To run the compiler unit tests:
stack test
To install:
stack install
This will copy the kitc
binary to Stack's binary install directory (~/.local/bin on Linux); make sure this directory is part of your executable paths.
You'll need to point Kit to its standard library; you have a few options:
- Set an environment variable, KIT_STD_PATH
- Put the kitc binary next to its standard library
- Put the standard library in an OS-specific default location:
- Linux: "/usr/lib/kit"
- Mac: "/usr/local/lib/kit"
Hello world
After building/installing kitc
:
- Create a a new file, "helloworld.kit", and copy the following into it:
function main() {
printf("%s\n", "Hello from Kit!");
}
- Run
kitc helloworld.kit --run
to compile and run your program
Copyright
Copyright (C) 2018 Ben Morris. (See the LICENSE.)