Branch
Hash :
1dd3f2a9
Author :
Thomas de Grivel
Date :
2026-01-10T18:25:43
wip
“The first graph-native programming language”
KC3 is a programming language with meta-programmation and a graph database embedded into the language. It aims to be the language for semantic programming, and programming the semantic web.
You can easily convert each KC3 function to a C function. KC3 is both a language and a runtime.
This is a development branch, for the latest release see KC3 v0.1.16.
KC3 is currently a programming language project, inspired by C, Elixir and Common Lisp. It could be described as C with Elixir modules, pattern matching, and a semantic object system. The idea is to plug modules, closures, pattern matching, a graph database and metaprogramming into C11 with an extremely small set of dependencies.
Components :
libkc3 library is a full KC3 parser and interpreter. ikc3 is the interactive interpreter (verbose). kc3s is the script interpreter (same as ikc3 but terse). lib/kc3/0.1
using the make lib_links command. kc3_httpd. All binaries can be compiled for four targets :
assert is disabled. assert is enabled Supported operating systems (additional dependencies) :
Supported architectures :
To install and test KC3 for yourself, you can follow the KC3 Installation Guide.
There are now four full applications written in KC3 that we know of :
make demo make demo_gl make test_httpd with all the KC3 releases and
documentation. Our next project is to make git.kmx.io in KC3 and for that we have to implement the missing parts in KC3.
libkc3
.kc3c files, like Python does. Gives 5x faster loading times
for all .kc3 files. env_load automatically handles this. Socket
Socket.Facts allows for bi-directional synchronization of an
existing Facts.database() over a TCP socket. Socket.Facts.accept accepts connections one by one. TLS
Facts.database() over a TLS encrypted connection after a
successful HMAC-SHA256 shared secret authentication
challenge/response. TLS.Facts.accept accepts connections one by one. TLS.Facts.acceptor_loop starts a thread and calls accept()
in a loop. TLS.Facts.acceptor_loop_join() stops the acceptor loop cleanly. JSON
true or false → Bool {"key", "value"} → Map %{"key" => "value"} [1, 2, 3] → List [1, 2, 3] HTTPS
HTTPS.Client with libtls and automatic or manual connection Join us on kmx.io Discord server !
Follow the KC3 guides to discover how to use KC3 for your own projects.
(Macro) fn (x) { x } \n) (TAG_VOID: 1, TAG_TUPLE: (1+ (max (height tuple->tags))))