Skip to main content.
IBAN   NL79 ABNA 0477 3565 08
EU-VAT NL170160656B01
Chamber of Commerce 32041148
http://www.compuphase.com
Eerste Industriestraat 19-21
1401VL  Bussum
tel. +31 35 693 9261
info@compuphase.com
CompuPhase

The pawn language

 
Quality software

Pawn's icon

An embedded scripting language

Summary of recent changes

 

date / version changes
8 June, 2009
version 3.3.4127
  • The entire Pawn toolkit is now licensed under the Apache license, version 2. The Apache license is a very liberal license (permitting use in commercial projects), but it contains a patent clause. The previous license (zLib/libpng) did not have a patent clause.
  • wxQuincy, a minimalistic IDE distributed in the Linux autopackage and TAR files now comes with source code. The IDE has been enhanced with a multiple-document interface.
  • The compiler is now a little better at guessing the TAB size in case of mixed indentation with TABs and spaces. This avoids the warning "loose indentation" to be reported erroneously.
  • Keep the stack 8-byte aligned in the ARM7 assembler versions of the abstract machine (some ARM compilers require this).
  • amxFile uses the newest version of minIni.
  • Quincy (Microsoft Windows version) now detects FTDI virtual ports (for remote debugging); it supports up to 15 user help files and it supports host-specific help files. Quincy now also has the ability to insert accented characters (extended ASCII), and a new "repeat star in multi-line comments" option.
  • BUG fix with strings with an escape character followed by a single line comment (preprocessor parser error).
  • BUG fix in expressions with chained relational operators and constant operands.
  • BUG fix in the optimizer: removed redundant calls to malloc().
  • BUG fix related to passing arrays based on an enumeration to a function.
  • BUG fix in auto-completion in Quincy, related to non-alphabetic characters ('_' and '@').
8 April, 2009
version 3.3.4097
  • The Pawn compiler can now take a configuration file with specific settings for an environment. New command line option: -T. The manual contains the details.
  • The Linux distribution now comes with a minimalistic IDE, called wxQuincy.
  • Uncrustify replaces "artistic style" as the code beautifier for Quincy.
  • BUG fix: minor bug correction in missing comma in initialler of 2-dimensional array.
  • Modifications in Quincy: better detection of read-only paths (or drives), an option to save the file in a different location without aborting the compile, a message in the "build log" that signals that a source file was changed since last build (and thus needs rebuilding), a window to view strings received over the serial line.
  • Improvements for GraphApp terminal (multi-platform).
15 January, 2009
version 3.3.4058
  • Function amx_GetString() would terminate packed ANSI strings with two trailing zero bytes. In one of the examples as printed in the manual, this would lead to a buffer overrun.
  • The compiler optimizer applied a wrong limit to parameters when choosing between packed and unpacked opcodes. This led to a case where the compiler generated a packed opcode, while the parameter did not fit in that packed opcode.
  • In pawndisasm: a few opcodes were given the wrong nmemonic.
  • When the compiler halted on a fatal error occured inside an include file, the "parent files" were left open.
  • The compiler would no longer build with the PAWN_LIGHT or PAWN_NO_CODEPAGE options, because a few new sections lacked the respective conditional-compilation wrappers.
  • A bug was fixed in amx_Clone(). This bug was reported by Luke Salisbury on the Pawn forum.
  • Re-entry of the compiler might use data from the previous run. This bug, reported by Soren Hannibal on the Pawn forum, was fixed.
  • Quincy now comes with an improved "search in files" function, by using a modified version of GNU grep (see the file "grep.txt" for the modifications).
  • Quincy now also supports auto-completion using Ctrl-Space. If multiple words match, Quincy pops up a balloon. Pressing TAB expands the word up to the first character where multiple matches differ.
  • Warnings when building with Visual Studio 2008 were removed.
  • Various other bug fixes and improvements.
27 October, 2008
version 3.3.4026
  • SECURITY FIX ("arbitrary code execution" vulnerability): the CALL.pri and JUMP.pri instructions were removed, because one could use them to force a jump out of the virtual sand box of the abstract machine and call arbitrary code that is carefully laid out in the data section of the script.
  • "exit" state functions are now also supported (in addition to "entry" state functions).
  • Trailing commas are now allowed in the initialization data of arrays. For example, the comma behind the closing brace of the second sub-array in the following declaration is allowed (but optional). The commas behind the digits 2 and 4 are allowed too (and also optional).
      new arr[2][2] = {
          { 1, 2,},
          { 3, 4,},
      }
  • The macro substition processor now recognizes the "#" character for "stringizing" a parameter. For example, if you have the definition
        #define log(%1) #%1
    Then the expression log(test) will result in "test".
        Note that concatenation of literal strings requires an ellipsis in Pawn (which is different than C/C++). So to combine the parameter with literal strings, use a syntax like:
        #define log(%1) "logging: " ... #%1 ... "\n"
    The stringize operator is only available in the replacement text of a macro.
  • Support for the "thousands" separator (a comma) in numbers.
  • When a source file contains indenting with both spaces and tab characters, and no explicit tab size is given, the compiler now makes an educated guess for the tab space to use. This reduces warnings about "loose indentation".
  • The handshake of the debugger in a remote-debugging configuration is a little faster. That is, the debugger finds the remote device/host faster. Remote debugging is typically used with embedded systems.
  • Better support for ncurses, which is now also the default for Linux (if it is installed).
  • For the amxProcess module, the dyncall library now replaces the libffi library, because dyncall comes with ports for Unix/Linux, Macintosh and Windows (libffi only supported Unix-like systems). The amxProcess module now also compiles without dyncall, but with reduced functionality. See http://www.dyncall.org/ for details on dyncall.
  • The "binreloc" module is now optional when compiling pawnrun and pawndbg under Linux; binreloc is part of the "autopackage" developer tools.
  • A portable INI file parser in the amxFile extension module (see the minIni project).
  • Support for code snippets and balloon "info tips" in Quincy, as well as supporting info-tips in the debugger for the current value of variables.
  • Quincy supports workspaces (light-weight projects). A set of open files and the currently selected compilation options can be saved in a workspace, for quickly switching between projects.
  • BUG fix: the ternary operator ("a ? b : c") had a bug when "b" and "c" were arrays of different lengths. This bug was reported by Bailopan on the Pawn forum.
  • BUG fix: amxFile had an error in the file CRC calculation.
  • BUG fix: function uuencode() in amxString was broken.
  • BUG fix: when basing a one-dimensional array on an enumaration and using the ellipsis ("...") in the initialler to initialize the complete array to a value, the ellipsis would drop out immediately and fail to fill the remainder with the given value/sequence.
  • BUG fix in amxString: valstr() failed on large numbers.
  • BUG fix: a string like "\\" was not accepted by the Pawn compiler (double backslash at the end of a string). This was fixed before... a regression!
  • BUG fixes in amxpool (minor bugs).
  • BUG fix: indexing an undeclared symbol made the compiler abort with an "assertion failed" message. This has been corrected.
  • Various BUG fixes and improvements in the Pawn debugger (pawndbg) for working with Quincy.
  • Various other bug fixes, and many improvements in Quincy.
See the history.txt in the downloadable archives for a longer history.