2026-08-02 20:44:18
# KC3 v0.1.17 released
KC3 v0.1.17 was released today.
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. Gives5x faster loading timesfor 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
-
str: fixed display of floating point numbers
-
copying temporary variables for
- Facts - Facts.connect/accept allows for bi-directional synchronization of
an existingFacts.database()over a TLS encrypted connection after a successful HMAC-SHA256 shared secret authentication challenge/response Facts.acceptaccepts connections one by oneFacts.acceptor_loopstarts a thread that calls-accept()in a loopFacts.acceptor_loop_join()stops the acceptor loop cleanly-
Fixed hash table lookup in marshall reducing every dump by 30%
-
Facts.connect/accept allows for bi-directional synchronization of
an existing - HTTPd - allow for configuration of unveil paths in
config/unveil.kc3 -
allow for custom log messages in error and request log
-
allow for configuration of unveil paths in
- HTTPS -
HTTPS.Clientwith libtls and automatic or manual connection- GET method - POST method
-
JSON response
-
JSON - fixed parser- boolean
trueorfalseâ Bool - map
{"key", "value"}â Map%{"key" => "value"} -
array
[1, 2, 3]â List[1, 2, 3] -
boolean
-
fixed parser
- RUsage - current-process statistics for user and system CPU time, current and maximum resident memory, virtual memory, and open files
RUsage.stats()returns all statistics in a single map