diff --git a/README.md b/README.md index 03e3ada..eb54cb4 100644 --- a/README.md +++ b/README.md @@ -8,30 +8,15 @@ The Kraken Programming Language (vim integration (filetype, syntax highlighting, Syntastic) at https://github.com/Limvot/kraken.vim) (emacs integration (filetype, syntax highlighting) at https://github.com/Limvot/kraken-mode) -(more info and examples at http://limvot.github.io/kraken/) - The Kraken Programming Language is functional but very much still in development. It has both the normal features you might expect of a modern language, (functions, variables, an object system, dynamic memory), as well as some more advanced ones (mutually recursive definitions, lambdas/closures, algebraic data types, templates, marker traits, defer statements, etc). -Currently, it consists of a RNGLALR parser written in C++, an AST intermediate representation, and a C code generator. -When compiled, the kraken compiler will take in a text file to be parsed and optionally the grammer file to use and an output file name. -Kraken will then generate the RNLALR parsing tables from the grammer or load them from a binary file if Kraken has been run with this exact version of the grammer before. Then it will parse the input and export one .c file along with a .sh script containing the compiler command to compile the C files together into a binary. - -The current work is going into self-hosting the compiler, which is progressing quickly. Currently, the self-hosted version can compile simple programs consisting of functions, variables, normal operators, if statements, while loops, and very simple C-passthroughs. - -It is invoked in this way: - -kraken inputKrakenFile - -OR - -kraken inputKrakenFile inputGrammerFile outputName - +Kraken can either compile to C or its own bytecode which is then interpreted. Dependencies ============ -It is built using CMake, which is also its only dependency. +Kraken is self-hosted - in order to build it, a script is included that will compile the original C++ version (which depends on CMake) and then checks out each necessary version to compile up to the current one. This can take quite a while - when it hits 1.0 I am planning on removing the old C++ version and checking in a pre-compiled-to-c version to use for further bootstrapping. Goals ===== @@ -41,6 +26,7 @@ It has the following design goals: * Clean * Fast (both running and writing) * Good for Systems (including Operating Systems) programming +* Very powerful libraries (say, a library that allows you import from automatically parsed C header files) * Minimal "magic" code. (no runtime, other libraries automatically included) -It is inspired by C/C++, Scala, and Rust. +It is inspired by C, Kotlin, Rust, and Jai.