diff --git a/README.md b/README.md index 057228e..92e6345 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # The Core Language -A compiled language with Go like type system, Jai like syntax, order indepent declarations using Ion algorithm. Made to practice language development, it's not supposed to be used. It has lot's of ideas from modern programming languages that you would not find in any compiler book. +A compiled language that assumes C as base reality but it also has lots of ideas taken from Jai, Go like type system, order indepent declarations using Ion algorithm. Syntax currently is whitespace significant. Made to practice language development, *it's not supposed to be used*. It has lot's of ideas from modern programming languages that you would not find in any compiler book. + +The language is currently very debuggable. It can produce readable C code with line directives. This allows you to debug the programs with Visual Studio with full source mapping, exactly like you would debug C programs. ## Language example code @@ -42,6 +44,15 @@ commit :: (m: *Memory, size: SizeU): Bool // Examples that showcase language features can be found in /examples ``` +## Features + +* Order independent declarations +* Module system, lazy loading(unused code is not compiled, big win) using #import, full loading using #load +* Types as first class values and runtime reflection, Any type +* Slices +* Whitespace significant syntax +* Debuggable(emitting proper line directives) + ## Building 1. Requires *Windows*, *Visual Studio* and *Clang* to be installed diff --git a/examples/language_basics.kl b/examples/language_basics.kl index 8e5afc6..f8ae872 100644 --- a/examples/language_basics.kl +++ b/examples/language_basics.kl @@ -22,9 +22,9 @@ main :: (): int cstring_val: *char = "CString type" assert(s64val == 0 && s32val == 0 && s16val == 0 && s8val == 0 && intval == 0 && u64val == 0 && u32val == 0 && u16val == 0 && u8val == 0 && f64val == 0 && f32val == 0) - assert(string_val[0] == 'S) //' // @todo: Fix error here !! - // assert(cstring_val[0] == 'C) //' + // assert(string_val[0] == 'S) //' + assert(cstring_val[0] == 'C) //' // This is how we can assign variables // There is no need for prefixes, compiler figures