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
__emitbug 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
__addressofoperator (#445) - Tags inside unnamed enums are no longer allowed (#454)
- Removed
emitkeyword (#459) - Fixed a crash when
#pragma optionargument 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 IThis 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 calledMACROwith a value of5.
#define MACRO\ 53.10.7
- Fixed various
__emitbugs (#279) - Fixed various bugs related to
tagofoperator (#245, #274) - Fixed various bugs related to destructors (#260)
- Fixed incorrect values of
__compatanddebugconstants 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 deprecatedis used without a message - Fixed wrong argument in
switchdisassembly 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
#pragmas 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
-Eflag 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/__emitoperator (#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
#emitand 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
#pragmamessages 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
__PawnBuildconstant that is set to the current compiler build number (#132)