-Release 0.4.0:
+Release 0.3.5:
+ * Preprocessor:
+ - Added warning for when preprocessor directives are used in
+ a macro.
* Language:
- - Vector bitops
+ - Added vector bit operations.
+ - Added vector cross product operator `><` for -std=gmqcc.
+ - Added `[[eraseable]]` attribute.
+ - Removed &~= operator for -std=gmqcc.
+ - #pragmas which are ignored are actually ignored to EOL.
* Compilation:
- - Fixed constant folding
- - New LNO format
- - Shadowed locals fix
- - Added warnings for weird precedence usage
+ - Fixed constant folding.
+ - Fixed column printing in diagnostics.
+ - Added support for columns in LNOF.
+ - Shadowed locals fix.
+ - Improved warning diagnostics for precedence usage and other
+ various diagnostics.
+ - Added constant folding logic for builtin functions.
+ - Prevent divide by zero in constant folding.
+ - Added unary elision optimization, cases where a unary expression
+ cancels itself out, e.g `-(-a)` now simplifies to `a`.
+ - Added strength reduce optimization, for divisions e.g `(A / 10)`
+ now strength reduces to `(A * (1 / 10)` where `(1 / 10)` is
+ evaluated at compile time.
+ - Added superfluous expression elision optimization, e.g `(A + 0),
+ (A - 0), (A * 1), (A / 1)` can be simplified to just `A`.
+ - Quake world now compiles with -std=qcc
+ - Constant folding for `if than` now works for ternary expressions
+ too.
+ - Fixed `[[alias]]` attribute type checking, now you can't alias
+ invalid types.
+ * QCVM:
+ - Properly exits on error now.
+ * Lexer:
+ - Now prints the character the lexer fails on instead of the
+ token value.
* Testsuite:
- Important fixes to the testsuite (removal of false positives
- and false negitives)
+ and false negitives).
+ - Added a new utility `check-proj.sh` which downloads various Quake
+ mods and attempts to compile them.
+ * Commandline:
+ - Made -fshort-logic, -funtyped-nil and -fvariadic-args default
+ for -std=gmqcc.
* Build:
- - Generate PDFs of man documents for Windows releases
+ - Generate PDFs of man documents for Windows releases.
+ - Archlinux/Archbsd package now generates MTREE.
* Documentation:
- - Fix some mdoc syntax usage
+ - Fixed mdoc(s).
+ * Misc:
+ - Added some export scripts for xonotic and nexuiz which generate
+ specially crafted packages that are used by the check-proj script.
2013-08-20 v0.3.0
* Language:
- Added compile statistic dumps, gives information about the compiled
binary, and LNO, such as the size, CRC, the number of times a
specific optimization was applied, etc.
- - Make -std=qcc default
+ - Make -std=qcc default.
* Testsuite:
- Fixed a floating point exception rasied by modulo operation in
-memchk.
- __VA_ARGS__ support
_ __VA_ARGS__ indexing
- Predefined macros like __DATE__, __TIME__, ...
- (check the manpage for a full list)
- - Signed numbers as single token in the
+ (check the manpage for a full list).
+ - Signed numbers as single token in the.
- Fixes some issues with #if operations on macros.
- - Speed improvements
+ - Speed improvements.
* Language:
- Untyped `nil` keyword.
- Removed the `noreturn` keyword.
- Added [[deprecated]] and [[deprecated("message")]].
- Support for `static` variables in functions.
- Support for labeled loops.
- - UTF-8 Support
+ - UTF-8 Support.
- enum support: without enum-types
- (ie no `typedef enum { } foo;`)
+ (ie no `typedef enum { } foo;`).
- Accessing vector components via the dot operator on all
- expressions. Eg: (3 * v).y
+ expressions. Eg: `(3 * v).y`.
- Type restricted variadict parameters:
- ie: void print(string...);
- - Accessing varargs from QC via: ...(index, type)
- - New operators: ** (exponentiation), % (modulo), etc
- - Enumeration attributes: flag, reverse
+ ie: `void print(string...);`.
+ - Accessing varargs from QC via: `...(index, type)`
+ - New operators: ** (exponentiation), % (modulo), etc.
+ - Enumeration attributes: `flag`, `reverse`.
* Compilation:
- Various optimizations and progs-size reductions.
- A new spell-checking algorithm tries to hint you at existing
- Some problems with VM related vector-instructions issues
have been solved in both DP and our own executor. A new
compatbility option (enabled by default) has been added for
- now: -flegacy-vector-maths
+ now: -flegacy-vector-maths.
- Compiler intrinsics: __builtin_floor, __builtin_mod,
- __builtin_exp, __builtin_isnan
- - Improved memory tracing
- - Speed improvements
+ __builtin_exp, __builtin_isnan.
+ - Improved memory tracing.
+ - Speed improvements.
* QCVM:
- Improved commandline argument handling.
- - More builtins: sqrt(), normalize(), floor()
+ - More builtins: sqrt(), normalize(), floor().
* Commandline:
- - Nicer memory dumps
+ - Nicer memory dumps.
- Support for making individual warnings an error
- - via -Werror-<warning>
- - added --add-info
+ - via -Werror-<warning>.
+ - added --add-info.
* Testsuite:
- Support for QCFLAGS to run tests with several additional
flags.
- - Added support for preprocessor tests
- - Added preprocessor tests
- - Added defs.qh (auto included) for qcvm definitions
+ - Added support for preprocessor tests.
+ - Added preprocessor tests.
+ - Added defs.qh (auto included) for qcvm definitions.
* Syntax Highlighting:
- Added various syntax highlighting description files for
various text editors / integrated development envirorments,
including support for: geany, kate, kwrite, kdevelop, QtCreator,
- gtksourceview, gedit, sany, nano, jedit
+ gtksourceview, gedit, sany, nano, jedit.
* Build:
- Build scripts for building debian, archlinux and archbsd
packages for x86, and x86_64.
* Preprocessor:
- Added xonotic compatible preprocessor.
* Language
- - Basic xonotic compatibility
- - Array support
+ - Basic xonotic compatibility.
+ - Array support.
- Added fteqcc's string escape sequences.
- Support for `noref`.
- Support for `goto` with labels like in fteqcc.
- Support for translatable strings via _("str") like in
fteqcc.
* Compilation
- - Warnings about uninitialized values
+ - Warnings about uninitialized values.
2012-11-17 Release 0.1
- * Compiles id1 code
+ * Compiles id1 code.