Make it a function
[xonotic/gmqcc.git] / CHANGES
1 Release 0.3.5:
2     * Preprocessor:
3         - Added warning for when preprocessor directives are used in
4           a macro.
5     * Language:
6         - Added vector bit operations.
7         - Added vector cross product operator `><` for -std=gmqcc.
8         - Added `[[eraseable]]` and `[[accumulation]]` attributes.
9         - Removed &~= operator for -std=gmqcc.
10         - #pragmas which are ignored are actually ignored to EOL.
11     * Compilation:
12         - Fixed constant folding.
13         - Fixed column printing in diagnostics.
14         - Added support for columns in LNOF.
15         - Shadowed locals fix.
16         - Improved warning diagnostics for precedence usage and other
17           various diagnostics.
18         - Added constant folding logic for builtin functions.
19         - Prevent divide by zero in constant folding.
20         - Added unary elision optimization, cases where a unary expression
21           cancels itself out, e.g `-(-a)` now simplifies to `a`.
22         - Added strength reduce optimization, for divisions e.g `(A / 10)`
23           now strength reduces to `(A * (1 / 10)` where `(1 / 10)` is
24           evaluated at compile time.
25         - Added superfluous expression elision optimization, e.g `(A + 0),
26           (A - 0), (A * 1), (A / 1)` can be simplified to just `A`.
27         - Quake world now compiles with -std=qcc
28         - Constant folding for `if than` now works for ternary expressions
29           too.
30         - Fixed `[[alias]]` attribute type checking, now you can't alias
31           invalid types.
32     * QCVM:
33         - Properly exits on error now.
34     * Lexer:
35         - Now prints the character the lexer fails on instead of the
36           token value.
37     * Testsuite:
38         - Important fixes to the testsuite (removal of false positives
39           and false negitives).
40         - Added a new utility `check-proj.sh` which downloads various Quake
41           mods and attempts to compile them.
42     * Commandline:
43         - Made -fshort-logic, -funtyped-nil and -fvariadic-args default
44           for -std=gmqcc.
45     * Build:
46         - Generate PDFs of man documents for Windows releases.
47         - Archlinux/Archbsd package now generates MTREE.
48     * Documentation:
49         - Fixed mdoc(s).
50     * Misc:
51         - Added some export scripts for xonotic and nexuiz which generate
52           specially crafted packages that are used by the check-proj script.
53
54 2013-08-20 v0.3.0
55     * Language:
56         - Return assignments, the ability to assign to the return keyword
57           as if it were a local variable.
58         - Added bitwise XOR operator (^)
59         - Array initializers: e.g float a[] = {1, 2, 3};
60         - Fix bug that dissalowed language operators to be used in strings.
61     * Compilation:
62         - Optimized memory usage (now uses on average %3 less memory for
63           compilation).
64         - Fixed dotranslate (translatable strings)
65         - Rewrote constant folding optimization pass for the parser.
66         - New additional dead-code-elimination-consatant-fold pass for
67           if statements whos expression can be evaluated at compile-time
68           (allowing the if/else branch to be entierly elided at compile-time).
69         - Added support for columns in error diagnostics.
70         - Limit corrector to <= 16 byte strings.
71         - Improved hash function for hashtable (old hash function had 15% error,
72           this speeds up compilation)
73         - Improved performance of in-house allocator with branch-hinting, speeds
74           up compilation of Xonotic by 3 seconds!
75     * QCVM:
76         - Escape strings for -printdefs
77     * Commandline:
78         - Added statistic dumps, gives information about the number of used
79           hashtables, vectors, and number of unique sizes of vectors and
80           hashtables. The amount of memory used for vectors. As well as the
81           number of strdups used in total for compilation.
82         - Added compile statistic dumps, gives information about the compiled
83           binary, and LNO, such as the size, CRC, the number of times a
84           specific optimization was applied, etc.
85         - Make -std=qcc default.
86     * Testsuite:
87         - Fixed a floating point exception rasied by modulo operation in
88           -memchk.
89         - Added support for the test-suite to source tests and task-template
90           files from subdirectories in the test/ directory.
91         - Now prints the number of failed tests (if any) after all tests
92           are attempted.
93         - Fixed some bugs with error handling resulting in false-positives.
94     * Build:
95         - Can now be compiled with TCC (Tiny C compiler) and function as
96           intended (previously couldn't due to bug in TCC codegen).
97         - Added Gentoo ebuilds.
98         - Added Win32 Makefile for building Win32 packages.
99         - Added Slackware pkg build files.
100         - Added Fedora spec files.
101         - Added Makefile for the BSD make variant.
102     * Misc:
103         - Added valgrind memcheck hook to in-house allocator to help aid
104           in finding invalid reads/writes, and more accurate leaks.
105
106 2012-04-27 v0.2.9
107     * Preprocessor:
108         - __VA_ARGS__ support
109         _ __VA_ARGS__ indexing
110         - Predefined macros like __DATE__, __TIME__, ...
111           (check the manpage for a full list).
112         - Signed numbers as single token in the.
113         - Fixes some issues with #if operations on macros.
114         - Speed improvements.
115     * Language:
116         - Untyped `nil` keyword.
117         - Removed the `noreturn` keyword.
118         - Added generic attribute syntax and reintroduced `noreturn`
119           as [[noreturn]].
120         - Added [[deprecated]] and [[deprecated("message")]].
121         - Support for `static` variables in functions.
122         - Support for labeled loops.
123         - UTF-8 Support.
124         - enum support: without enum-types
125           (ie no `typedef enum { } foo;`).
126         - Accessing vector components via the dot operator on all
127           expressions. Eg: `(3 * v).y`.
128         - Type restricted variadict parameters:
129           ie: `void print(string...);`.
130         - Accessing varargs from QC via: `...(index, type)`
131         - New operators: ** (exponentiation), % (modulo), etc.
132         - Enumeration attributes: `flag`, `reverse`.
133     * Compilation:
134         - Various optimizations and progs-size reductions.
135         - A new spell-checking algorithm tries to hint you at existing
136           variables on error.
137         - Some problems with VM related vector-instructions issues
138           have been solved in both DP and our own executor. A new
139           compatbility option (enabled by default) has been added for
140           now: -flegacy-vector-maths.
141         - Compiler intrinsics: __builtin_floor, __builtin_mod,
142           __builtin_exp, __builtin_isnan.
143         - Improved memory tracing.
144         - Speed improvements.
145     * QCVM:
146         - Improved commandline argument handling.
147         - More builtins: sqrt(), normalize(), floor().
148     * Commandline:
149         - Nicer memory dumps.
150         - Support for making individual warnings an error
151         - via -Werror-<warning>.
152         - added --add-info.
153     * Testsuite:
154         - Support for QCFLAGS to run tests with several additional
155           flags.
156         - Added support for preprocessor tests.
157         - Added preprocessor tests.
158         - Added defs.qh (auto included) for qcvm definitions.
159     * Syntax Highlighting:
160         - Added various syntax highlighting description files for
161           various text editors / integrated development envirorments,
162           including support for: geany, kate, kwrite, kdevelop, QtCreator,
163           gtksourceview, gedit, sany, nano, jedit.
164     * Build:
165         - Build scripts for building debian, archlinux and archbsd
166           packages for x86, and x86_64.
167         - Makefile targets for gource visualization, and render of
168           gource visualization.
169
170
171 2012-12-27 Hotfix v0.2.2
172     * Liferanges
173     * Crashes
174
175 2012-12-23 Hotfix v0.2.1
176     * General bugfixes
177
178 2012-12-23 Release 0.2
179     * Preprocessor:
180         - Added xonotic compatible preprocessor.
181     * Language
182         - Basic xonotic compatibility.
183         - Array support.
184         - Added fteqcc's string escape sequences.
185         - Support for `noref`.
186         - Support for `goto` with labels like in fteqcc.
187         - `break` and `continue`.
188         - Short circuit logic.
189         - Support for translatable strings via _("str") like in
190           fteqcc.
191     * Compilation
192         - Warnings about uninitialized values.
193
194 2012-11-17 Release 0.1
195     * Compiles id1 code.