Extension:StackFunctions/ChangeLog

Version 0.9

 * Bugfix: Comments containing parentheses within definitions of executable arrays are now correctly parsed.
 * Operator modification: serialnumber now returns an object configurable in LocalSettings.php.
 * Operator modification: vsprintf does not leave its result on the stack any more, for consistency with other string operators.
 * Enhancement: strings can now be made executable. This is primarily of interest for the exec operator.
 * New operators: getpagecontent, pcrematch, pcrereplace.
 * Different documentation approach: instead of distributing documentation in single text files, distribute and xml file which can be imported into a MediaWiki.

Version 0.8
Thanks to JG for the bug reports and the suggestion for recursionoverflow.


 * Bugfix: show does not print 0's any more.
 * Bugfix: type now correctly classifies arrays.
 * Bugfix: = now displays names as specified by the PostScript reference.
 * New operators: vprintf, vsprintf.
 * New feature: Exception recursionoverflow.
 * Enhancement: show when applied to a datatype that is internally represented by a php array shows the value instead of the array. For instance, /testname show now shows "testname" instead of "Array".

Version 0.71

 * Upgrade to MW 1.13.3: sf_func now invokes Parser::replaceVariables, otherwise templates are not replaced.
 * New operators: dbkey2text, text2dbkey.

Version 0.7

 * Bugfix: The execution unit now recursively looks up executable names which refer again to executable names.
 * Bugfix: revision now calculated in the correct place within the code.
 * New feature: Immediately evaluated names are now supported.
 * Feature enhancement: When an exception occurs, the output created so far is now shown.
 * Feature modification: While in previous versions the entire program text was first parsed and then executed, it is now parsed and executed token by token, as PostScript does. This may adversely impact performance, but was necessary to implement immediately evaluated names. In addition, this makes it possible not to discard the output when an exception occurs.
 * Feature modification: Precompiled code is now allowed in prologs only.
 * Internal enhancement: init looks up MediaWiki magic words only the first time - this can save much time when StackFunctions is used several times on the same page.
 * Internal enhancement: Extension setup function now class member so that the only global namespace items in this extension are now the class name and the name of its instance.

Version 0.61

 * New operator: replace.
 * New operator: token.
 * Operator bugfix: forall returns dictionary keys as names rather than strings.
 * Operator bugfix: exec and load now handle correctyl executable names
 * Feature enhancement: Escaped unbalanced parentheses in strings now supported.

Version 0.6
Most enhancements based on suggestions by Chuck.


 * New operators: =, == and disablecache.
 * Operator bugfix: forall now works correctly with dictionaries.
 * Operator enhancement: pstack output now more similar to ghostscript and thus much more readable.
 * Operator enhancement: usertime and realtime now return floats, thus providing higher precision.
 * Operator enhancement: rand and srand now use mt_ functions.
 * Operator enhancement: cvx now makes literal names executable, cvlit does the opposite, and xcheck recognizes executable names as exceutable, thus providing better compliance with PostScript.


 * New feature: Now support for hex strings in < >.
 * Feature enhancement: Debugging output in case of exceptions is now more detailed (similar to the new pstack output) and more readable.
 * Feature enhancement: Serialized data is now signed so that it is no more possible to upload arbitrary php code from other sources.
 * Feature enhancement: Compression algorithm for serialize is now configurable.
 * Feature enhancement: Arguments given to tag or parser function calls are now available in the status dictionary.
 * Feature enhancement: Introduced invalidexit exception.
 * Feature enhancement: [, ], < > are now operators defined in systemdict, thus providing better compliance with PostScript.


 * Internal enhancement: use symbolic constants for internal data structure== Version internal data structure now uses numeric rather than string keys. ==


 * Internal enhancement: Inline preprocessing so that patch to Parser.php becomes redundant.
 * Internal enhancement: Exception handling now in separate class.
 * Internal enhancement: Function parse replaced by parseraw after preprocessing, parseraw renamed to parse.
 * Several minor bugfixes and code structure enhancements.

Version 0.563

 * Bugfixes in the operators which require a mark on the stack. Now throw an exception when no mark is found.

Version 0.562

 * New operators: id2namespace, namespace2id, tolower and toupper.
 * Feature enhancement: statusdict with additional items pageid, namespaceid.

Version 0.561

 * Bugfixes in the get, put, query operators.

Version 0.56

 * New operators: serialize and unserialize.
 * New feature: serialized code in tags and prologs.
 * Feature enhancement: default namespace for prolog pages becomes configurable.
 * Feature enhancement: prolog pages can now contain any text outside of pre-tags.

Version 0.551

 * New operators: explode, implode.
 * Enhancements in internal code structure.

Version 0.55

 * New feature: use StackFunctions as an xml-like parser extension.
 * Feature enhancement: statusdict now easier to use.
 * New operator: concat.

Version 0.542

 * First version published.