Branch
Hash :
e13294cb
Author :
Thomas de Grivel
Date :
2025-01-21T21:25:13
New in KC3 v0.1.14 - pretty printer - auto indent KC3 code - map - `access` - `get` (get key value) - `put` (return a new map) - struct - `access` - `get` - `put` - facts database (triple store) accessible from KC3 - `new database (Ptr)` - `add_tags` - `collect_with` - `collect_with_tags` - `remove_tags` - `with_tags` - `with` - `with_macro` - HTTPd v0.2.0 - dynamic pages (MVC) - models are defined in `./app/models/` - controllers are defined in `./app/controllers/` - templates are defined in `./app/templates/` - views are defined in `./app/views/` - dynamic router is defined in `./config/router.kc3` - For now we don't match request method and just match the start of the URL with `Str.starts_with?(url, route.path)` - If there is no route or no controller or the controller does not return a HTTP response, a 404 error is returned. Other frameworks like Ruby on Rails or Phoenix do return a 500... - threads - `env_fork_init` - `env_fork_clean` - `Thread.new(fn)` - fx v0.2.0 - file explorer - preview files - text - image - video - audio - binary (hexdump -C) - properties - create - POST "/properties/*path" - delete - DELETE "/properties/*path
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.
This is a stable release, for the development branch see the KC3 git repository master branch.
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 C99 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 dlsym
and thus
all Cfn
at the moment) 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. access
get
(get key value) put
(return a new map) access
get
put
new database (Ptr)
add_tags
collect_with
collect_with_tags
remove_tags
with_tags
with
with_macro
./app/models/
./app/controllers/
./app/templates/
./app/views/
./config/router.kc3
Str.starts_with?(url, route.path)
env_fork_init
env_fork_clean
Thread.new(fn)
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))))