Chaos
Turn chaos into magic!
Chaos is a strongly typed, dynamic yet compilable, test-oriented procedural programming language that achieves zero cyclomatic complexity.
Influenced by
- TypeScript's type safety
- Python's syntax, modules and extensibility
- JavaScript's cross-platform support
- Ruby's loops and blocks, Rexx's
FOREVER
keyword - PHP's dedication to server-side
- Haskell's pure functions
- C's speed and interoperability
- Go's standalone executables
Featured Aspects
- There are no control structures. (no
if..else
, noswitch..case
) Decision making only possible on function returns:num def add(num x, num y) num z = x + y end { z == 8 : f1(), z > 10 : f2(), default : f3() }
- A single unit test is enough to have 100% coverage on functions, always.
- Warns you about untested functions in the executed program.
- Detects possible runtime errors in compile-time.
- Unique function call system that combines procedures with some aspects of functional programming paradigm.
- No
while
orwhen
keywords. Loops are mostly predetermined. Infinite loops can only be achievable through theINFINITE
keyword. - There are
break
andcontinue
statements but breaking a multiline loop inside a function is forbidden. - Single source of errors and unique exit codes for each one of them. So the errors are catchable by other programs.
- Language's itself forces you to write less error-prone code.
- Say goodbye to dependency conflicts with Occultist dependency manager.
- Eliminated segmentation fault possibility using strict memory management and predictions.
- Simplest C extension development framework so far.
Installation
Install the requirements:
make requirements
Compile the Chaos source:
make
Install the chaos
binary system-wide:
make install
Interpreter
Interactive Shell
$ chaos
Chaos Language 0.2.0 (Jan 20 2021 02:39:23)
GCC version: 9.3.0 on linux
Turn chaos into magic!
kaos> print "hello world"
hello world
kaos> exit
Bye bye!
Program File as Command-line Argument
hello.kaos:
print "hello world"
$ chaos hello.kaos
hello world
Compiler
$ chaos -c hello.kaos -o hello
Starting compiling...
Compiling Chaos code into build/hello.c
Compiling the C code into machine code...
Cleaning up the temporary files...
Finished compiling.
Binary is ready on: build/hello
$ build/hello
hello world
Run chaos --help
to see more options.
Uninstallation
You can uninstall the chaos
binary and its C headers with:
make uninstall