mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-02-17 09:02:25 +00:00
Remove these too
This commit is contained in:
parent
6caaedd269
commit
42b3640bc5
3 changed files with 0 additions and 321 deletions
195
CHANGES
195
CHANGES
|
@ -1,195 +0,0 @@
|
|||
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.
|
62
INSTALL
62
INSTALL
|
@ -1,62 +0,0 @@
|
|||
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.
|
64
TODO
64
TODO
|
@ -1,64 +0,0 @@
|
|||
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).
|
Loading…
Reference in a new issue