2026-07-27 11:14:24
Upcoming KC3 release
KC3 has been undergoing radical changes since the last release.
Currently the change log looks like this :
New in this release
libkc3
- copying temporary variables for
pthread_mutexandpthread_rwlockwould cause undefined behaviour as per POSIX, this fixes pthread on macOS - allow for log hooks (a C function callback with a user pointer) in the facts database
- incremental compilation with cached parser results in
.kc3cfiles, like Python does. Gives 5x faster loading times for all.kc3files.env_loadautomatically handles this. - fixed a bug in
ht_iterator_nextwhere the iterator would not go through the first collision list - database logging now supports and defaults to binary format (marshall + marshall_read)
- fixed marshall + marshall_read hash table usage
- copying temporary variables for
Facts
- Facts.connect/accept allows for bi-directional synchronization of
an existing
Facts.database()over a TLS encrypted connection after a successful HMAC-SHA256 shared secret authentication challenge/response. Master/replica negociation is based on a priority negociation : each node sends its priority and the lower priority is the master while the others are replicas. Facts.acceptaccepts connections one by one.Facts.acceptor_loopstarts a thread that callsaccept()in a loop.Facts.acceptor_loop_join()stops the acceptor loop cleanly.
- Facts.connect/accept allows for bi-directional synchronization of
an existing
JSON
- fixed parser
- boolean
trueorfalse→ Bool - map
{"key", "value"}→ Map%{"key" => "value"} - array
[1, 2, 3]→ List[1, 2, 3]
- boolean
- fixed parser
HTTPd
- allow for configuration of OpenBSD's
unveil(2)inconfig/unveil.kc3 - dropped
libevent2support in favor ofkqueue(2) - add support for Linux and BSD with
event_poll - allow for graceful shutdown using either SIGTERM or SIGINT
- fixed memory leaks using otto malloc
- added support for
epoll(7)on Linux - fixed memory leaks using ASAn
- fixed double socket close leading to corruption
- fixed race conditions in error handling
- added rate limiting for bots
- allow for configuration of OpenBSD's
HTTPS
HTTPS.Clientwith libtls and automatic or manual connection- GET method
- POST method
- JSON response