Hash :
9e299435
Author :
Thomas de Grivel
Date :
2025-02-05T22:35:22
linux (PopOS)
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.14 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.
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. 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))))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
# KC3 v0.1.15
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.14](https://git.kmx.io/kc3-lang/kc3/_tree/v0.1.14)
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.
Components :
- The pure C11 `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).
- There are several C libraries which are installed in `lib/kc3/0.1`
using the `make lib_links` command.
- There is a web server in httpd : `kc3_httpd`.
All binaries can be compiled for four targets :
- __main__ : speed optimizations from GCC/Clang -O2 and
debug code like `assert` is disabled.
- __debug__ : no optimization and debug code like `assert` is enabled
- __cov__ : code coverage instrumentation (breaks `dlsym` and thus
all `Cfn` at the moment)
- __asan__ : memory safety instrumentation with ASAN, an absolutely
awesome tool to detect all memory leaks, double free, segmentation
faults, invalid read, invalid write, general memory corruption
errors, etc., just run the __asan__ target for a full report at
process exit, the report being empty if all is ok.
Supported operating systems (additional dependencies) :
- BSD
- Linux (libbsd, libmd)
- MacOS X (libmd)
- Windows (MSys2) (no network)
Supported architectures :
- aarch64 (arm64, Apple M1, Apple M2)
- amd64
- i386
- sparc64
To install and test KC3 for yourself, you can follow the
[KC3 Installation Guide](https://kc3-lang.org/doc/3_Guides/3.1_Install).
## Users
There are now four full applications written in KC3 that we know of :
- The KC3 Cairo demo which you can run with `make demo`
- The KC3 SDL2 OpenGL demo which you can run with `make demo_gl`
- The [KC3 website](https://kc3-lang.org/) which you can launch
locally with `make test_httpd` with all the KC3 releases and
documentation.
- The [www.kmx.io website](https://www.kmx.io/) which is closed
source and is hosted on kmx.io servers in France using OpenBSD
everywhere. We donate to OpenBSD every month because a healthy
software ecosystem is a funded ecosystem.
## New in this release
## Discord invite
[Join us on kmx.io Discord server !](https://discord.gg/A4MWkpUDsG)
## [Guides](https://kc3-lang.org/doc/3_Guides)
Follow the [KC3 guides](https://kc3-lang.org/doc/3_Guides)
to discover how to use KC3 for your own projects.
## TODO
- HTTPd
- dynamic router
- def_route(:get, "/user/:id/articles/*slug/edit", UserArticlesController.edit)
- fx
- chaining of audio and video previews (folder as a playlist)
- tags
- create
- POST "/tag/:tag/*path"
- delete
- DELETE "/tag/:tag/*path"
- recursive
- properties
- recursive
- libkc3
- operators dispatch
- list of matching operators (facts_with)
- base-specific big floats
- macro cast : `(Macro) fn (x) { x }`
- pretty printer
- 80 columns (`\n`)
- tags
- generic 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)
- enums
- unions
- errors (setjmp, longjmp)
- stacktrace
- ffi ?
- libdwarf
- control structures
- when
- unless
- switch/case/cond
- unwind protect
- functions
- return
- livebook
- gaussian
- buf_sha256
- buf_popen
- tests