Hash :
87a4a683
Author :
Thomas de Grivel
Date :
2024-10-13T10:22:17
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) :
Supported architectures :
Join us on kmx.io Discord server !
Follow the KC3 installation guide.
Follow the KC3 testing guide
Follow the KC3 usage guide
Follow the KC3 structure guide
Follow the KC3 tutorial and examples guide .
(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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
# 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](https://git.kmx.io/kc3-lang/kc3/_tree/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 !](https://discord.gg/A4MWkpUDsG)
## Guides
### [Installation](INSTALL.md)
Follow the [KC3 installation guide](INSTALL.md).
### [Tests](TESTING.md)
Follow the [KC3 testing guide](TESTING.md)
### [Usage](USAGE.md)
Follow the [KC3 usage guide](USAGE.md)
### [Structure](STRUCTURE.md)
Follow the [KC3 structure guide](STRUCTURE.md)
### [Tutorial and examples](TUTORIAL.md)
Follow the [KC3 tutorial and examples guide](TUTORIAL.md) .
## 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
- create
- POST "/tag/:tag/*path"
- delete
- DELETE "/tag/:tag/*path"
- recursive
- 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
- [DONE] ./app/templates/
- dynamic router
- [DONE] Str.starts_with?(url, route.path)
- HTTPd.Router.get("/user/:id/articles/*slug/edit", UserArticlesController.show)
- [DONE] views
- [DONE] ./app/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)
- stacktrace
- ffi ?
- libdwarf
- control structures
- when
- unless
- switch/case/cond
- unwind protect
- functions
- return
- livebook
- gaussian
- buf_sha256
- buf_popen
- tests