Hash :
a95860e6
Author :
Thomas de Grivel
Date :
2024-09-08T17:53:31
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
# KC3
## 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)