Releases: pawn-lang/compiler
Releases · pawn-lang/compiler
3.10.10
- Back-ported some PAWN 4 natives and features (#287)
- Fixed empty warnings causing crashes (#369)
- Improved "indeterminate array size" warning: now it shows the symbol name (#370)
- Fixed bugs related to const-correctness checks (#372)
- Fixed issues related to undefined symbol resolution suggestions (#374, #397, #451)
- Improved assembly listing generation (#375)
- Added
#pragma unwritten
(#377) - Added
#pragma nodestruct
(#378) - Various
__emit
bug fixes and improvements (#421) - Other minor bug fixes (#423)
- Minor pawndisasm fixes and cleanup (#424)
- Added support for unknown preprocessor directives inside
#if ... #endif
(#427) - Added compile-time checks to prevent variable self-assignment (#436)
- Added
__addressof
operator (#445) - Tags inside unnamed enums are no longer allowed (#454)
- Removed
emit
keyword (#459) - Fixed a crash when
#pragma option
argument exceeded 31 characters (#462)
3.10.9
3.10.8
- Fix multi-line strings getting extra spaces from leading spaces with continuations. This:
new str[] = "Hello \
there";
Again gives:
Hello there
Instead of
Hello there
- Reverted allowing continuations in single-line comments. This will (again) give an error:
// I'm a comment\
and so was I.
- Added one exception to the above rule. No error will be given if the following line is also commented:
// I'm a comment\
// and so am I
This makes it easy to comment out code that uses line-continuations (such as defines).
- Added more information to tag mismatch warnings:
native printf(str[], {Float, _}:...);
main()
{
new File:a;
printf("%d", a);
}
Gives:
warning 213: tag mismatch: expected tags "Float", or none ("_"); but found "File"
- Proper (fixed) continuation handling in pre-processor messages:
#pragma deprecated Please\
use\
something\
else
Func() {}
main()
{
Func();
}
Gives:
warning 234: function is deprecated (symbol "Func") Please use something else
Note that unlike in strings (which retain their old behaviour for backwards-compatibility reasons) the \
is replaced by a space.
- Fix continuations in defines. This no longer declares a macro called
MACRO5
, but a macro calledMACRO
with a value of5
.
#define MACRO\
5
3.10.7
- Fixed various
__emit
bugs (#279) - Fixed various bugs related to
tagof
operator (#245, #274) - Fixed various bugs related to destructors (#260)
- Fixed incorrect values of
__compat
anddebug
constants when set through#pragma option
(#253) - Fixed a bug in argument count check leading to crash when call functions with more than 128 arguments (#298)
- Fixed crash when
#pragma deprecated
is used without a message - Fixed wrong argument in
switch
disassembly listings produced by pawndisasm (#236) - Fixed a bug in multidimensional array initialization that caused compiler crash in some cases (#220)
- Fixed formatting of multiline messages from
#pragma
s in compiler output - Added a new warning for meaningless combinations of class specifiers (#246)
- Added more info to tag mismatch warnings (#265)
- Made the unused symbol warning show the line where the symbol is declared (#252)
- Improved code generation for naked functions (#271)
- Various speed optimization (#255, #269)
- Changed the Visual C++ runtime version back to 2010 (v100) to make the compiler run on a wider range of Windows systems by default (without installing anything)
- Switched to another hash table library because of some licensing issues (#240)
3.10.6
- Reverted
##
operator patch because it broke sscanf macros
3.10.5
3.10.4
- HUGE compile speed improvements by @maddinat0r and @Daniel-Cortez (#199)
- Added
-E
flag that turns warnings into errors (#202) (thanks to @Y-Less) - Added
#pragma option
(#204) (thanks to @Y-Less) - Fixed a bug in line continuation handling that caused whitespace characters to disappear from string literals consisting of multiple lines
3.10.3
- Optimized allocation of large arrays of repeated values
- Added a new
emit
/__emit
operator (#180, more details in that PR) - Returning arrays of unknown size is now a compile time error (#190)
- Fixed false "variable is assigned to itself" warnings (#78)
- Fixed muti-dimensional array initialization bugs (#152, #153)
- Fixed a crash with
#emit
and unused functions (#157) - Fixed generation of documentation for state transitions (#185)
- Fixed an issue where preprocessor symbols passed as command line arguments would not be recognized (#159)
- Fixed a bug where user-supplied
#pragma
messages contained extra newline and \a characters (#187) - Fixed extra newlines in assembly listings
- Fixed Android build errors
- Added installation instructions for openSUSE/SLES to readme (#174)
- Added build instructions for Windows, Linux, macOS to readme
3.10.2
3.10.1
Build 1
Beginning with this release compiler version will include a build number instead of a date, so "1" in "3.10.1" means "build 1". It will be incremented with each release.
Changes since previous release:
- Fixed a bug where passing a global variable to a function before the function is defined caused the variable to be removed from the AMX file as unused (#131)
- Added -R option that turns on recursion detection and report (#121)
- Added support for negative and floating-point numbers in
#emit
(#128, #133) - Added
__PawnBuild
constant that is set to the current compiler build number (#132)