What makes KC3 unique : C interoperability
KC3 is not merely an interpreted language with an FFI library. The C ABI is part of the language’s standard execution model:
- cfn is a native callable type understood by the evaluator.
- C-compatible types such as U8, Uw, Ptr, and Str are ordinary KC3 types.
- Result expresses the destination-pointer convention directly in signatures.
- Native functions are linked lazily by name.
- Fn and CFn values participate in the same call machinery.
- CFn declarations survive compilation and dump/restore.
- No generated wrapper, extension module, or per-architecture compiler backend is required.
Libffi supplies the architecture-specific calling mechanism, but KC3 supplies the language semantics around it.
Julia’s built-in ccall is perhaps the closest conceptual comparison, but Julia is JIT- compiled. LuaJIT’s FFI is also close, but tied to its architecture-specific JIT. Most interpreted languages expose C through an additional library or extension system.
So “C-ABI-native interpreted language” is a fair description of KC3. I don’t know another widely used interpreted language with precisely this combination of first-class C functions, integrated type declarations, lazy linking, persistence in dumps, and no native code- generation backend.