KC3 v0.1.14
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 development branch, see
KC3 v0.1.13
for a stable release.
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.
Supported operating systems (additional dependencies) :
-
BSD
-
Linux (libbsd, libmd)
-
MacOS X (libmd)
-
Windows (MSys2)
Supported architectures :
-
aarch64 (arm64, Apple M1, Apple M2)
-
amd64
-
i386
-
sparc64
Discord invite
Join us on kmx.io Discord server !
Follow the KC3 guides to discover how to use KC3 for
your own projects.
TODO
-
[DONE] facts database in KC3
-
[DONE] new database (Ptr)
-
[DONE] add_tags
-
[DONE] remove_tags
-
[DONE] with_tags
-
[DONE] with
-
fx v0.2.0
-
[DONE] file explorer
-
[DONE] preview files
-
[DONE] text
-
[DONE] image
-
[DONE] video
-
[DONE] audio
-
[DONE] binary (hexdump -C)
-
tags
-
properties
-
[DONE] create
-
[DONE] POST “/property/:property/:value/*path”
-
[DONE] delete
-
[DONE] DELETE “/property/:property/:value/*path
-
recursive
-
HTTPd v0.2.0
-
dynamic pages (MVC)
-
[DONE] controllers
-
[DONE] ./app/controllers/
-
[DONE] templates
-
dynamic router
-
[DONE] Str.starts_with?(url, route.path)
-
HTTPd.Router.get(“/user/:id/articles/*slug/edit”, UserArticlesController.show)
-
[DONE] views
-
libkc3
-
[DONE] evaluation order for && and ||
-
operators dispatch
-
list of matching operators (facts_with)
-
base-specific big floats
-
macro cast :
(Macro) fn (x) { x }
-
pretty printer
-
[DONE] indent
-
80 columns (
\n
)
-
tags
-
walker
-
height function
(TAG_VOID: 1, TAG_TUPLE: (1+ (max (height tuple->tags))))
-
has_ident
-
collect_idents
-
facts
-
negative facts : 4 + 2n = not 3 + 2n
-
with ignore variables
-
math
-
arbitrary precision floating point numbers (decimals)
-
map
-
[DONE] access
-
[DONE] get (get key value)
-
put (return a new map)
-
struct
-
[DONE] access
-
[DONE] get
-
put
-
enums
-
unions
-
errors (setjmp, longjmp)
-
control structures
-
when
-
unless
-
switch/case/cond
-
unwind protect
-
functions
-
livebook
-
buf_sha256
-
buf_popen
-
tests