-
Notifications
You must be signed in to change notification settings - Fork 23
/
HISTORY
148 lines (136 loc) · 5.68 KB
/
HISTORY
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
* v0.30 (mar'18)
(+) `output` implementation directly in Céu
(+) exceptions with `throw`/`catch`
(+) ring vectors with `var[*]`
(+) stack trace for runtime errors
(+) access to program arguments via `CEU_APP.argc`/`CEU_APP.argv`
(+) list of visible variables to `do-end` and `spawn-do-end`
(*) type names
(+) `yes/no`, `on/off` as synonyms to `true/false`
(+) `integer` as synonym to `int`
(^) `float`, `f32`, `f64` renamed to `real`, `r32`, `r64`
(^) `void` renamed to `none`
(^) `FOREVER` renamed to `NEVER` in code return type
(^) scheduler based on the formal semantics
(^) new syntax to access public variables and methods from `code/await` abstractions
(^) operator `!` no longer required when subject is enclosed by `watching`
(-) `vector` keyword removed (now vectors use `var[]`)
(-) `nil` keyword (in favor of `_` for undefined values)
(-) bug: missing implementation for operator `^`
* v0.20 (jan'17)
(*) full rewrite of the language (too many changes to list)
* v0.10 (sep'15)
(+) `kill´ statement for organisms
(+) `escape´ statement for organisms
(+) operator `!´ to retrieve value from option types
(+) experimental: vectors
(+) experimental: tagged unions
(+) experimental: `traverse´ blocks for recursive tagged unions
(+) experimental: reentrant `ceu_sys_go()´
(^) explicit aliasing and pointer operations
(^) `&` as alias-of operator
(^) `&&` as pointer type modifier
(^) `&&` as address-of operator
(^) new precedence rules for operators (follows Lua)
(^) `every´ loops can awake multiple times in the same reaction
(^) `spawn´ return value is of option type
(^) `watching´:
(^) <evt> strongly aborts <body> (instead of weak abortion)
(^) accepts assignment (`watching <v> in <evt>´)
(^) expects value (instead of pointer to value)
(^) `emit´, `kill´, `spawn´ count as yielding statements (besides `await´)
(^) pass by reference also for pools
(^) `function isr´ renamed to `interrupt´
(^) `global´ blocks renamed to `pre do´
(^) new "two-pass" scheduler implementation
(-) pointers in internal events
(-) pool iterators cannot yield
* v0.9 (apr'15, but never publicly released)
(+) option types (`?´ suffix for types)
(+) `native/pre´ blocks
(+) native blocks per class
(+) `global´ blocks
(+) experimental: compile option `--safety <LEVEL>´
(+) experimental: static-only algebraic data types
(+) experimental: time machine
(^) interfacing with C and finalization systems rewritten
(^) bounded pools also for interfaces
(^) `ceu_sys_go´: the event parameter is now a pointer to its type
(^) `async thread´ renamed to `async/thread´
(-) `?´ in identifiers (due to option types)
(-) `[]´ buffer pointers (in favor of references and option types)
(-) `new´ and `free´ primitives (in favor of `spawn´ with automatic management)
* v0.8 (jun'14)
(+) manual
(+) `pool´ for organisms
(+) `watching´ for organisms and events
(+) `outer´ accessor inside constructors
(+) `loop/N´ for bounded tight loops
(+) `_´ as an anonymous identifier
(+) `&´ references
(+) `[]´ plain pointers
(+) `plain´ type annotation
(+) experimental: embedded Lua source
(+) experimental: `do T with ... end;´
(^) `@´ prefix for all annotations
(^) `in´ token for loops (instead of `,´ and `=´)
(-) `free´ for organisms
* v0.7 (apr'14)
(+) new primitive types: bool, char, uint, word, float, f32, f64
(+) `true´, `false´ constants
(+) functions and class methods
(^) `return´ statement has been replaced by `escape´
(^) Fallback to `avr-gcc´ 4.1.2 under CiB (micaz bugfix)
(+) experimental `isr´ interrupt service routines (also, `atomic´ blocks)
(+) experimental microkernel support ("OS" mode)
(+) experimental `input/output´ requests (in "OS" mode)
* v0.6 (aug'13)
(+) `async thread do´ statement
(+) `sync do´ statement inside `async thread´
(+) C preprocessor
(+) iterators for spawned organisms in a block
(+) native code in between `{´ and `}´
(+) tuple types for events
(+) interface accessors from C
(^) per `spawn´/`new´ pools
(-) `m4´ support
(-) `@´ token
* v0.5 (may'13)
(+) classes can specify a memory pool for its organisms
(+) interfaces can have C functions
(^) `C´ keyword renamed to `native´
(^) scheduler rewritten
* v0.4 (may'13)
(+) classes and interfaces
(+) `nothing´ statement
(+) `continue´ statement
(+) `await <evt> until´ statement
(+) `every <evt> do´ statement
(^) `finalize with´
(^) deterministic scheduler
(^) simpler (polynomial) static analysis
* v0.3 (dec'12)
(+) `else/if´ clause for conditionals
(+) `pause/if´ statement
(+) `C´ declarations
(*) types, variables, and functions in C
(+) `nohold´ keyword to annotate functions that do not
hold references to pointers passed as parameters
(+) escape analysis for pointer assignments
(*) enforces placement of `finally´ blocks
(+) `:=´ keyword to force assignments
(+) `var´ keyword to precede variable declarations
(+) types as keywords (void,int,u8,u16,u32,u64,s8,s16,s32,s64)
(^) operator renamings:
(^) `!´,`&&´,`||´ TO `not´,`and´,`or´
(^) `->´ TO `:´
(^) external events must be all capitalized
* v0.2 (sep'12)
(+) `finally´ blocks
(+) external types
(^) static analysis rewritten
(*) many bug fixes
* v0.1.1 (jul'12)
(*) many bug fixes
* v0.1 (jul'12)
(*) first release