+++ /dev/null
-Release 0.3.5:
- * Preprocessor:
- - Added warning for when preprocessor directives are used in
- a macro.
- * Language:
- - Added vector bit operations.
- - Added vector cross product operator `><` for -std=gmqcc.
- - Added `[[eraseable]]` and `[[accumulation]]` attributes.
- - Removed &~= operator for -std=gmqcc.
- - #pragmas which are ignored are actually ignored to EOL.
- * Compilation:
- - 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).
- - 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.
- - Archlinux/Archbsd package now generates MTREE.
- * Documentation:
- - 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:
- - Return assignments, the ability to assign to the return keyword
- as if it were a local variable.
- - Added bitwise XOR operator (^)
- - Array initializers: e.g float a[] = {1, 2, 3};
- - Fix bug that dissalowed language operators to be used in strings.
- * Compilation:
- - Optimized memory usage (now uses on average %3 less memory for
- compilation).
- - Fixed dotranslate (translatable strings)
- - Rewrote constant folding optimization pass for the parser.
- - New additional dead-code-elimination-consatant-fold pass for
- if statements whos expression can be evaluated at compile-time
- (allowing the if/else branch to be entierly elided at compile-time).
- - Added support for columns in error diagnostics.
- - Limit corrector to <= 16 byte strings.
- - Improved hash function for hashtable (old hash function had 15% error,
- this speeds up compilation)
- - Improved performance of in-house allocator with branch-hinting, speeds
- up compilation of Xonotic by 3 seconds!
- * QCVM:
- - Escape strings for -printdefs
- * Commandline:
- - Added statistic dumps, gives information about the number of used
- hashtables, vectors, and number of unique sizes of vectors and
- hashtables. The amount of memory used for vectors. As well as the
- number of strdups used in total for compilation.
- - 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.
- * Testsuite:
- - Fixed a floating point exception rasied by modulo operation in
- -memchk.
- - Added support for the test-suite to source tests and task-template
- files from subdirectories in the test/ directory.
- - Now prints the number of failed tests (if any) after all tests
- are attempted.
- - Fixed some bugs with error handling resulting in false-positives.
- * Build:
- - Can now be compiled with TCC (Tiny C compiler) and function as
- intended (previously couldn't due to bug in TCC codegen).
- - Added Gentoo ebuilds.
- - Added Win32 Makefile for building Win32 packages.
- - Added Slackware pkg build files.
- - Added Fedora spec files.
- - Added Makefile for the BSD make variant.
- * Misc:
- - Added valgrind memcheck hook to in-house allocator to help aid
- in finding invalid reads/writes, and more accurate leaks.
-
-2012-04-27 v0.2.9
- * Preprocessor:
- - __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.
- - Fixes some issues with #if operations on macros.
- - Speed improvements.
- * Language:
- - Untyped `nil` keyword.
- - Removed the `noreturn` keyword.
- - Added generic attribute syntax and reintroduced `noreturn`
- as [[noreturn]].
- - Added [[deprecated]] and [[deprecated("message")]].
- - Support for `static` variables in functions.
- - Support for labeled loops.
- - UTF-8 Support.
- - enum support: without enum-types
- (ie no `typedef enum { } foo;`).
- - Accessing vector components via the dot operator on all
- 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`.
- * Compilation:
- - Various optimizations and progs-size reductions.
- - A new spell-checking algorithm tries to hint you at existing
- variables on error.
- - 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.
- - Compiler intrinsics: __builtin_floor, __builtin_mod,
- __builtin_exp, __builtin_isnan.
- - Improved memory tracing.
- - Speed improvements.
- * QCVM:
- - Improved commandline argument handling.
- - More builtins: sqrt(), normalize(), floor().
- * Commandline:
- - Nicer memory dumps.
- - Support for making individual warnings an error
- - 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.
- * 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.
- * Build:
- - Build scripts for building debian, archlinux and archbsd
- packages for x86, and x86_64.
- - Makefile targets for gource visualization, and render of
- gource visualization.
-
-
-2012-12-27 Hotfix v0.2.2
- * Liferanges
- * Crashes
-
-2012-12-23 Hotfix v0.2.1
- * General bugfixes
-
-2012-12-23 Release 0.2
- * Preprocessor:
- - Added xonotic compatible preprocessor.
- * Language
- - Basic xonotic compatibility.
- - Array support.
- - Added fteqcc's string escape sequences.
- - Support for `noref`.
- - Support for `goto` with labels like in fteqcc.
- - `break` and `continue`.
- - Short circuit logic.
- - Support for translatable strings via _("str") like in
- fteqcc.
- * Compilation
- - Warnings about uninitialized values.
-
-2012-11-17 Release 0.1
- * Compiles id1 code.
+++ /dev/null
- Installing gmqcc
-
-1. Prerequisites
- - A C-Compiler such as gcc or clang
- - GNU Make or BSD Make
-
-2. Compilation
- If using GNU make program
- make
-
- If using BSD make program, the BSDmakefile should be
- used instead when you invoke make, if however it ignores BSDmakefile
- you can supply it with -f.
-
- make -f BSDmakefile
-
- If no error appears, the following binary files will have been
- created:
- - gmqcc
- - qcvm
- - gmqpak
-
-3. Installation
- The `install' target will install the 2 binaries to /usr/local/bin
- by default.
- The Makefile honors the following variables:
-
- - DESTDIR: The installation directory root.
- - PREFIX: The installation prefix, default: /usr/local
- - BINDIR: Directory for binary executables,
- deafult: $PREFIX/bin
-
- To install to /usr/local run:
-
- make install
-
- To install to /usr run:
-
- make PREFIX=/usr install
-
- To install to a package-staging directory such as $pkgdir when
- writing a build script file:
-
- make DESTDIR=$pkgdir install
-
-
- ArchLinux PKGBUILDs (release and git build) can be found in the
- respective folders in ./distro/archlinux
-
- ArchBSD PKGBUILDs (release and git build) can be found in the
- respective folders in ./distro/archbsd
-
- Slackware SlackBuilds (git build) can be found in ./distro/slackware
-
- Gentoo ebuilds (release) can be found in ./distro/gentoo, as well
- as a README explaining how to build them
-
- Debian archives (git build) can be created invoking make in
- ./distro/deb
-
- Fedora spec files (release) can be found in ./distro/fedora, as well
- as a README explaining how to build them.
+++ /dev/null
-GMQCC is quite feature complete. But that doesn't address the fact that
-it can be improved. This is a list of things that we'd like to support
-in the distant future. When the time comes, we can just select a topic
-from here and open a ticket for it on the issue tracker. But for the
-meantime, this is sort of a cultivating flat file database.
-
-Optimizations:
- The following are optimizations that can be implemented after the
- transformation into static-single assignment (SSA).
-
- Global Value Numbering:
- Eliminate redundancy by constructing a value graph of the source
- then determining which values are computed by equivalent expressions.
- Similar to Common Subexpression Elimination (CSE), however expressions
- are determined via underlying equivalence, opposed to lexically identical
- expressions (CSE).
-
- The following are optimizations that can be implemented before the
- transformation into a binary (code generator).
-
- Code factoring:
- The process of finding sequences of code that are identical,
- or can be parameterized or reordered to be identical.
- Which can be replaced with calls to a shared subroutine. To
- reduce duplicated code. (Size optimization)
-
-Language Features:
- The following are language features that we'd like to see implemented in the
- future.
-
- AST Macros:
- Macros with sanity. Not textual substiution.
-
- Classes:
- Like C++, but minus the stupidity:
- - No type operator overloads
- - Keep operator overloading for basic operators though.
- - No inheritance
- - No virtuals / pure virtuals
- - Essentially "C structs but with operators" :)
-
- Overloaded Functions:
- Ability to make individual functions with the same name, but take
- different amount of arguments or type of arguments.
-
- Default Argument Substiution:
- Ability to specify default values for arguments in functions.
- void foo(string bar, string baz="default");
- Supplying just one argument will expand the second argument to
- become "default", otherwise if two arguments are specified then
- the "default" string is overrode with what ever the user passes.
-
- Namespaces:
- There is already a ticket open on this. They'd work just like C++
- identically even.
-
-Testsuite:
- The following are things we'd like to see added to the testsuite
- in the distant future:
-
- Interface:
- Ability to select individual tests, or set parameters manually
- opposed to using the static task-template files. (A method to
- override them rather).