Branch
Hash :
9e299435
Author :
Thomas de Grivel
Date :
2025-02-05T22:35:22
linux (PopOS)
access
get
(get key value) put
(return a new map) access
get
put
new database (Ptr)
add_tags
collect_with
collect_with_tags
remove_tags
with_tags
with
with_macro
./app/models/
./app/controllers/
./app/templates/
./app/views/
./config/router.kc3
Str.starts_with?(url, route.path)
env_fork_init
env_fork_clean
Thread.new(fn)
Renamed C3 to KC3.
"Hello, #{name} !"
Hello, <%= name %> !
make test_httpd
With this release you can actually load a module as a kc3 source file. See lib/kc3/0.1/list.kc3
make demo_gl
) ic3> defspecial_operator op (a, b, c) { true }
special_operator (a, b, c) { true }
ic3> op 1 2 3
true
lib/c3/0.1/c3.facts
%{a: 1, 2 => 3}
s_map
and s_struct_spec
accessible through their module
name. defstruct
%Module{a: 1, b: 2}
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 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
# KC3
## v0.1.14
- pretty printer
- auto indent KC3 code
- map
- `access`
- `get` (get key value)
- `put` (return a new map)
- struct
- `access`
- `get`
- `put`
- facts database (triple store) accessible from KC3
- `new database (Ptr)`
- `add_tags`
- `collect_with`
- `collect_with_tags`
- `remove_tags`
- `with_tags`
- `with`
- `with_macro`
- HTTPd v0.2.0
- dynamic pages (MVC)
- models are defined in `./app/models/`
- controllers are defined in `./app/controllers/`
- templates are defined in `./app/templates/`
- views are defined in `./app/views/`
- dynamic router is defined in `./config/router.kc3`
- For now we don't match request method and just match the start of
the URL with `Str.starts_with?(url, route.path)`
- If there is no route or no controller or the controller does
not return a HTTP response, a 404 error is returned. Other
frameworks like Ruby on Rails or Phoenix do return a 500...
- threads
- `env_fork_init`
- `env_fork_clean`
- `Thread.new(fn)`
- fx v0.2.0
- file explorer
- preview files
- text
- image
- video
- audio
- binary (hexdump -C)
- properties
- create
- POST "/properties/*path"
- delete
- DELETE "/properties/*path
## v0.1.13
- libkc3
- pretty printer
- indentation (str, if, do, fn, struct, map)
- ikc3
- facts
- Facts.with_tags(facts, s, p, o, fn (fact) {}) -> cursor
- lib
- File.exists?
- File.is_directory?
- File.list
- File.stat
- HTTPd v0.1.1
- file server (lftp)
- route_request
- error_404_page
- directory_page
- slash (lftp)
## v0.1.12
Renamed C3 to KC3.
- libkc3
- access
- DONE buf_parse_call_access (Tag "." Sym)
- DONE access (Tag, Sym) => Tag
- modules
- defstruct
- control structures
- while
- Str eval : `"Hello, #{name} !"`
- EKC3
- embed KC3 in any file : `Hello, <%= name %> !`
- escape HTML :
- ["&": "&, "<": "<", ">": ">", "\"": """, "'": '"]
- HTTP
- sockets
- request
- response
- HTTPd
- `make test_httpd`
## v0.1.11
- libc3
- modules
- defmodule Empty do end
- def
- def three = 3
- def double = fn (x) do x * 2 end
- def double_tuple = macro (x) do {x, x} end
- def operator\_double = %KC3.Operator{sym: :double, symbol_value: fn (x) { x * 2 }}
With this release you can actually load a module as a kc3 source file.
See [lib/kc3/0.1/list.kc3](https://git.kmx.io/kc3-lang/kc3/_tree/master/lib/kc3/0.1/list.kc3)
## v0.1.10
- libc3
- OpenGL demo (`make demo_gl`)
- OpenGL 3.3 with shaders (portable)
- makes use of C3 data structures.
- pin operator (for pattern matching)
- macros
- special operators
- their arguments do not get evaluated
- they return a value
- parsed without syntax
Ideally it would look like this :
```
ic3> defspecial_operator op (a, b, c) { true }
special_operator (a, b, c) { true }
ic3> op 1 2 3
true
```
- See C3 module in `lib/c3/0.1/c3.facts`
- if, then, else.
- rational numbers and corresponding operations
- complex numbers and corresponding operations
- float 128 bit (F128) and corresponding operations
## v0.1.9
- libc3
- c3
- tag_type
- gui
- cairo graphics
- OpenGL graphics
- maps
- A map maps keys to values according to an internal hash table.
- `%{a: 1, 2 => 3}`
- access (get symbol key value)
- get (get key value)
- put (return a new map)
- machine word alignment (from rtbuf)
- structs
- structs are a special kind of map with their fields sorted
according to a spec.
- as a `s_map` and `s_struct_spec` accessible through their module
name.
- `defstruct`
- `%Module{a: 1, b: 2}`
- access
- get
- put
- machine word alignment (from rtbuf)