1## 0.1.8
2
3## 0.1.7
4
5- news: rename the language to "ix"
6- breaking: new CLI interface
7- feat: language manual gets a pleasing redesign
8- feat: allow any expression as a function body
9- feat: add boolean `and` and `or` operator keywords
10- feat: add `assert` keyword
11- feat: add safety checks for array out of bounds
12- feat(js): block expressions are lowered to comma chains if possible
13- fix: coerce `break` operands and implicit breaks to result type
14- fix: coerce results when `if` expression branches merge
15- fix: ensure if branch results to a runtime value when the condition is not compile-time known
16- fix: coerce return value to a runtime value
17- fix: inferred array type uses item type for items instead of the container type.
18- fix(js): stop printing redundant parenthesis on ternary expressions
19
20## 0.1.6
21
22- breaking: rename `@js` to `@extern`, considering future backends
23- breaking: rename `noreturn` to `never`
24- re-write most of the semantic analysis pass (#79)
25 - feat: implement function expressions
26 - feat: implement simple `comptime` evaluation
27 - feat: change all semantic analysis panics into handled errors
28 - fix: no longer analyzes contents past a block end
29- feat: introduce cli subcommands
30- feat: add `run` subcommand to execute the file in QuickJS instead of outputting source
31- feat: add array index syntax via `x[1]` and `x.1`
32- feat: add `len` property to arrays
33- feat: allow instantiating `@extern` at compile time
34- feat: implement tuples
35- feat: implement multiline string literals
36- feat: implement inferred return type
37- fix: crash when printing unused struct declaration error
38- fix: provide array result type to sema
39- fix: crash when analyzing an empty array without a result type
40- fix: binary operands with float and float would not resolve
41- fix: assertion false-positive when using an extern global more than once
42- fix: do not emit direct eval
43
44## 0.1.5
45
46- feat: clarify "defined runtime representation" and "can be represented at runtime"
47- feat: implement inferred structs + result type semantics
48- feat: add `--dump-state=./filename.json` to dump compiler state as JSON
49- chore: remove group expressions, use single expression blocks instead
50- fix(sema): fix passing structs as function params
51- fix: diagnostic box drawing characters line up after line 9
52- fix: diagnostics on last line of file print correctly
53- fix: diagnostics with the leading zero warning
54
55## 0.1.4
56
57- feat: implement basic struct types (#42)
58- feat: implement basic array types (#67)
59- feat: implement string identifiers (#54)
60- feat: include a `README.html` alongside compiler with documentation and code samples.
61- feat(transform): include a warning for leading zero in numbers
62- feat(tokenizer): `$` is no longer valid in identifiers
63- fix(sema): miscompilation using left side of all binary expression for both sides
64- fix(sema): handle recursive function calls
65- fix(sema): quit block analysis when hitting `noreturn`
66- fix(sema): binary type resolution with opaque and numeric literals no longer crash
67- fix(sema): false positive warning for numeric int ambiguity when it was always float
68
69## 0.1.3
70
71- feat(sema): coercion: numeric_literal -> float
72- feat(sema): prevent passing non-runtime compatible types like `type` to opaque functions
73- feat(sema): properly validate and coerce binary operations
74- feat(sema): string concat with `+`
75- feat(transform): lhs of assignments now validated
76- feat(transform): mark useless discard
77- feat(transform): parse string escapes properly
78- feat(link): print string escapes properly
79- feat: implement the `comptime` keyword (many comptime ops are not implemented)
80- feat: add `@jsNew` to create JavaScript `new` expressions
81- fix(parse): top-level if statements previously required semicolons
82- fix(sema): properly coerce assignments
83- fix(transform): empty block generated in top level code tripped sema assertion
84- fix(link): emit parenthesis to preserve operator precedence
85- fix(link): when main code has no side effects, do not emit any functions
86
87## 0.1.2
88
89- feat: semantic analysis can return formatted errors to the user
90- feat: implement basic type coercions
91- feat: type-check call parameters
92- feat: type-check function return types
93- feat: parsing of assignments within expressions is disallowed now
94- feat: limit parsing to 4096 nested expressions / modules
95- feat: added error for return outside of function
96- feat: debug builds have `--report-trace` to print a stack trace per error
97- fix: function arguments were not validated
98- fix: unused warnings now properly work
99- fix: empty files and functions no longer crash
100
101## 0.1.1
102
103- feat: `var` declarations / runtime memory
104- feat: comptime binary operators
105- feat: introduce `Report` and show error reports
106- feat: show warnings for unused vars/lets/fns/params
107- feat: add flag --dump-ir for enabling ir dumps
108- fix: fix AIR generation for a block with a variable name
109
110## 0.1.0
111
112initial demo of compiler pipeline