Active4D Changelog

What's new in Active4D 6.2r1

Sep 23, 2015
  • Added support for custom session handlers, with a predefined session handler that provides database-based session storage. See “Installing the Predefined Session Handler” in the “Installation” chapter for more information.
  • Added A4D LOG MESSAGE command, which is used in the predefined session handler.
  • The shell and demo are now 4D v13 databases. Earlier versions of 4D are too unstable
  • on the latest versions of Mac OS X.

New in Active4D 6.1r15 (Jul 23, 2015)

  • Changed components:
  • Plugin
  • Documentation
  • [1176] Cookie key parsing is much more lenient now. Invalid keys are cleaned up and transformed into a compliant form. See the “Request Cookies” documentation for more info.

New in Active4D 6.1r14 (Apr 6, 2015)

  • CHANGE COMPONENTS:
  • Plugin: [1173] Creating process/interprocess variables on the fly in a compiled database now works without using a compiler declaration.

New in Active4D 6.1r13 (Dec 27, 2014)

  • Recompiled with Visual Studio 2013.
  • Replaced deprecated calls on Windows.

New in Active4D 6.1r12 (Dec 27, 2014)

  • Recompiled with Xcode 6 and latest libs.

New in Active4D 6.1r11 (Nov 17, 2014)

  • Detection of session ids now works as documented. If there is no session cookie or session cookies are not being used, query params are checked for the session id. If that fails, form variables are checked.
  • Clarified the documentation of Cors.ini to make it clear that URL matching is exact, not partial.
  • sed.a4d now embeds the session id in the form, so it will work even if session cookies are not being used.

New in Active4D 6.1r10 (Nov 13, 2014)

  • Changed components:
  • Plugin - fixed output of hide session field command.

New in Active4D 6.1r9 (Nov 13, 2014)

  • Changed components:
  • Plugin - fixed session to blob command

New in Active4D 6.1r8 (Oct 25, 2014)

  • Changed components: Plugin
  • Scientific notation can now be used for numbers.
  • JSON numbers are now correctly output and parsed with period as the decimal separator, regardless of the system locale.

New in Active4D 6.1r7 (Sep 27, 2014)

  • Removed thread locks in logging to avoid a deadlock on exit.
  • Documentation for the Default Directory now correctly indicates that the path may fall back to the user’s directory if the system directory is not writeable.

New in Active4D 6.1r6 (Aug 14, 2014)

  • Changed components:
  • Plugin
  • Standard libraries (a4d.console, a4d.debug)
  • Documentation
  • Previously, things would break on Windows if the user directory or database directory had non- ASCII characters in the path. This has been fixed.
  • Added support for BLOB and Time arrays when running in 4D v14 or later.
  • Added support for a BLOB text format in all library methods that might dump a BLOB.
  • Added some 4D v14 constants, and removed constants that apply only to the UI and don’t make sense within the context of Active4D.
  • float and long64 fields are not supported by the plugin SDK, so attempting to access fields of those types will now generate an error instead of silently doing nothing.

New in Active4D 6.1r5 (Jul 10, 2014)

  • Changed components:
  • Plugin: Fixed a condition where resource files were not released when the plugin was unloaded but 4D did not quit.

New in Active4D 6.1r4 (May 3, 2014)

  • [1164] SET QUERY DESTINATION now works correctly with 4D >= v13.3.

New in Active4D 6.1r3 (Jan 11, 2014)

  • Changed components: Plugin - There was a bug in the underlying Unicode library which caused the trim and right trim commands to fail to trim whitespace on the right. This has been fixed.

New in Active4D 6.1r2 (Oct 8, 2013)

  • Changed components:
  • Plugin
  • Documentation
  • a4d.json library
  • When using the extended syntax for QUERY/QUERY SELECTION, you may now use any unary expression for the conjunction (e.g. a variable or method call), and any expression that yields a string containing a valid value comparator (#, =, >, >=,

New in Active4D 6.1r1 (Sep 26, 2013)

  • The entire a4d.json library has been converted to a new suite of native JSON commands. Converting data to JSON is now 24x to 40x faster than the a4d.json methods, and JSON parsing is now 50x faster! The a4d.json library has now been reimplemented as a thin wrapper around the native commands, so it gains all of their speed. Existing a4d.json code will work as it did before, but you are encouraged to convert to native commands, as the a4d.json library will be deprecated in the future.
  • The new add selection to json command (and a4d.json.addSelection) adds the ability to return the result of a row expression verbatim, without JSON encoding. This allows the use of nested json generators. See the documentation for add selection to json for an example.
  • The new parse json command (and a4d.json.parse) now takes a regular expression that can be used to match JSON keys that might be dates, and that you would like to convert to a 4D date. See the documentation for more info.
  • The add response cookie command now takes Secure and HttpOnly parameters to set the corresponding attributes in the cookie. See http://en.wikipedia.org/ wiki/Http_cookies#Secure_and_HttpOnly for information on the Secure and HttpOnly attributes.
  • Added set/get response cookie secure and set/get response cookie http only commands.
  • Session cookies always have the HttpOnly attribute set for greater security.
  • An empty expires value can be passed to set response cookie to ignore that value.
  • A new session cookie secure option has been added. When true, session cookies are marked secure and will not be sent to the browser if the request is insecure. You should only set this option to true if your site requires https for all requests.
  • [1148] You may now pass * as an option to CREATE FOLDER to recursively create directories, as 4D v13 does.
  • [1158] Eliminated spurious error messages when running under 4D Remote and the default directory is a symlink/alias/shortcut.

New in Active4D 6.0r13 (May 7, 2013)

  • Fixed DISTINCT VALUES failing with process arrays.
  • Fixed a crasher when trying to retrieve session values.

New in Active4D 6.0r12 (Apr 27, 2013)

  • Changed components:
  • Plugin
  • Fixed a condition where crashes could occur when quitting 4D.
  • [1150] Fixed DISTINCT VALUES and QUERY WITH ARRAY failing with integer fields.
  • Fixed the case where the same positional format placeholder with no type (e.g. “{0}:{0}” would generate garbage output.

New in Active4D 6.0r5 (Oct 22, 2012)

  • A minor bug fix release.

New in Active4D 6.0r4 (Oct 12, 2012)

  • Added support for a format when using

New in Active4D 5.0r37 (Dec 2, 2011)

  • Fixed a crasher that could occur if the web root was outside the 4D default directory.

New in Active4D 5.0r36 (Nov 29, 2011)

  • [1119, 1123] Fixed some documentation typos.
  • [1122] Queries on time fields were totally broken. This has been fixed.
  • This version will support the 64-bit version.

New in Active4D 5.0r35 (Nov 3, 2011)

  • Changed components:
  • Plugin
  • a4d.json library
  • Documentation
  • Fixed a regression that caused session cookie paths and domains to be incorrect.
  • Added a new method, a4d.json.writep, which facilitates using the JSONP protocol.

New in Active4D 5.0r34 (Oct 30, 2011)

  • Changed components: Plugin - A condition that would allow an attacker to hang the server has been fixed.

New in Active4D 5.0r33 (Oct 28, 2011)

  • Changed components:
  • Plugin - [1118] Fixed a regression in setting individual response cookie attributes.

New in Active4D 5.0r32 (Oct 27, 2011)

  • [1117] Fixed new sessions replacing abandoned sessions getting lost.
  • [1109] Added .7z to ExtensionMap.ini.

New in Active4D 5.0r31 (Oct 5, 2011)

  • [1108] The boolean value False was converting to a string as the localized version of “True” instead of “False”. This has been fixed.

New in Active4D 5.0r30 (Sep 28, 2011)

  • Changed components: Plugin - [1106] param text patterns which contained “$” followed by a digit would drop those characters. This has been fixed.

New in Active4D 5.0r29 (May 27, 2011)

  • Changed components:
  • Plugin
  • r28 broke things and was withdrawn, this release fixes those problems.

New in Active4D 5.0r28 (May 27, 2011)

  • Changed components:
  • Plugin
  • Documentation
  • [1101] find in field no longer crashes in a compiled database.
  • [1102] base64 decode no longer crashes if non-ASCII characters are passed to it.
  • [1103] get request infos($names; $values) now works.
  • Substring and Delete string now allow you to pass a negative value for the inHowMany parameter, which signifies an index relative to the end of the string. Please see the documentation for more info.

New in Active4D 5.0r27 (Apr 29, 2011)

  • Changed components:
  • Plugin
  • Fixed another crash in replace string.

New in Active4D 5.0r26 (Apr 29, 2011)

  • Changed components:
  • Plugin
  • Fixed a crash in replace string.

New in Active4D 5.0r25 (Apr 29, 2011)

  • Changed components:
  • Plugin
  • Documentation
  • Text matching has been changed to work exactly the same way as 4D. Previously
  • you could not search for CR or LF separately if they appeared together in the text.
  • This has been fixed.

New in Active4D 5.0r24 (Apr 29, 2011)

  • Changed components:
  • Plugin
  • Documentation
  • Pointer operations and commands with process/interprocess variables were very
  • broken in a compiled database. This has been fixed.
  • Changed the behavior of Get pointer and RESOLVE POINTER slightly to be
  • consistent with Active4D variable naming conventions. Please see the
  • documentation for more information.

New in Active4D 5.0r23 (Dec 19, 2010)

  • Changed components:
  • Plugin
  • Documentation
  • Passing text with linefeeds or carriage returns to base64 decode will no longer
  • crash. Now all whitespace is ignored.
  • Updated the documentation to indicate the change to base64 decode and the fact
  • that continue will increment a for each loop.

New in Active4D 5.0r22 (Nov 15, 2010)

  • [1094] Fixed queries on boolean values in non-English versions of 4D.

New in Active4D 5.0r21 (Sep 29, 2010)

  • Changed components:
  • Plugin
  • NTK Shell
  • VirtualHosts.ini
  • [1090] Moved a line to code in NTK shell to avoid a possible error.
  • [1091] * now works.
  • Fixed a problem with the NTK receive callback in compatibility mode.
  • When in debug mode, the log file will display the configured virtual host name.
  • IMPORTANT CHANGE: You may now use tabs or spaces between fields in
  • VirtualHosts.ini. If any of the fields in your virtual host entries currently use
  • spaces, they will have to be changed so they do not use spaces.

New in Active4D 5.0r17 (Jun 5, 2010)

  • Converting a boolean value to a string (either automatically or via the STRING command) will respect the language version of 4D. For example, in the French version of 4D, STRING(True) returns “Vrai”.
  • QUERY/QUERY SELECTION now works correctly with boolean values in non- English versions of 4D.
  • The session id variable ($sid by default) is now properly created. [1082] Added missing end case in a4d.utils.truncateText. Small documentation tweaks.

New in Active4D 5.0r16 (Mar 31, 2010)

  • Changed components:
  • Plugin
  • [1080] Fixed problems with commands (such as SELECTION TO ARRAY) that required the creation of temporary process variables internally.
  • The default web root under Client was set to the 4D application instead of the documented default directory. This has been fixed.
  • GET/SET DATABASE PARAMETER was to working reliably. This has been fixed.
  • Unicode/compatibility mode is now logged with the 4D environment.

New in Active4D 5.0r15 (Feb 24, 2010)

  • Changed components: Plugin - [1079] Date subtraction was off by one in some cases, this has been fixed.

New in Active4D 5.0r14 (Feb 23, 2010)

  • Changed components:
  • Plugin
  • [1070] Log files are now rotated properly on Windows.
  • [1072] ICU data is now found successfully on Windows and under Client.
  • [1075] Boolean values (such as ‘auto create vars’) now work correctly in
  • Active4D.ini.
  • [1076] Using continue in the last iteration of a loop now works correctly.
  • [1077] The Mac version works (again) on Mac OS X 10.4.

New in Active4D 5.0r13 (Jan 30, 2010)

  • Changed components - Plugin:
  • Key files located in the /com.aparajita/Active4D folder will
  • be found as documented. Previously I was mistakenly looking in /com.aparajita/Active4D.
  • Active4D will startup correctly when running on Client. Previously it would fail to
  • find the ICU resources and would be deactivated.

New in Active4D 5.0r12 (Jan 14, 2010)

  • Changed components:
  • Plugin
  • NTK shell (method A4D_HTTPD_ThreadPoolStart)
  • Documentation
  • On Windows XP (and perhaps Vista/7), the Microsoft VC++ runtime support
  • libraries are required to be installed separately. This is not a change, I thought I
  • could get away without this but it seems I cannot. If you are getting a -1 error
  • because Active4D cannot be loaded when launching your database, you must install
  • the runtime libraries. The runtime library installer can be downloaded here:
  • http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf
  • [1068] regex replace with a subject array and replace array no longer crashes.
  • The thread worker stack size was being set in bytes instead of kilobytes, which
  • resulted in the minimum stack size, which was not enough. The stack size is now
  • correctly set to the configured size in kilobytes.

New in Active4D 5.0r11 (Dec 8, 2009)

  • Changed components:
  • Plugin
  • [1063] 4D Num command now works correctly on non-US systems.

New in Active4D 5.0r10 (Dec 4, 2009)

  • [1061] To improve compatibility, the v4.5 behavior of QUERY BY FORMULA/
  • QUERY SELECTION BY FORMULA has been restored and is now the default.
  • To execute the command on the server within 4D’s context, the first argument
  • should be *. Please see the documentation for more details.

New in Active4D 5.0r9 (Dec 1, 2009)

  • Changed components:
  • Plugin
  • Documentation
  • Active4D.ini
  • [1057] Attempting to run or include an empty file would cause memory corruption
  • on Windows. This has been fixed.
  • [1060] Response cookies are now converted to UTF-8 and url encoded as
  • documented.
  • The documentation (in both Active4D.ini and in the reference) has been updated to
  • indicate that you may prefix boot volume paths with “/Volumes//” on Mac OS X.

New in Active4D 5.0r8 (Nov 18, 2009)

  • Changed components:
  • Plugin
  • a4d.debug.a4l
  • a4d.json.a4l
  • a4d.utils.a4l
  • Documentation
  • Added support for LONGINT TO BLOB and BLOB to longint commands.
  • Added the named constants Intel byte ordering and PPC byte ordering as
  • aliases for PC byte ordering and Macintosh byte ordering respectively. The
  • latter names are misleading, since all Macs now natively use “PC” byte ordering.
  • Collection to blob and session to blob have been enhanced to allow you to
  • pass an existing blob, to which the serialized data is appended. Please see the
  • documentation for more info.
  • Blob to collection and blob to session have been enhanced to allow you to
  • pass an offset at which the serialized data is retrieved. Please see the
  • documentation for more info.
  • New library methods a4d.utils.collectionToBlob, a4d.utils.sessionToBlob,
  • a4d.utils.blobToCollection and a4d.utils.blobToSession allow you to save
  • and restore a collection or session with all embedded collections. Please see the
  • documentation for more info.
  • a4d.debug.dump array has a new parameter which controls whether numeric
  • array elements which are collection handles are displayed as collections or not.
  • Please see the documentation for more info.
  • a4d.debug.dump collection has a new parameter which controls whether
  • arrays are displayed inline or not. If they are not displayed inline, then numeric
  • array elements that are collection handles are displayed as collections. Please see
  • the documentation for more info.
  • [1048] The inCharset parameter to write blob is now functional and the
  • command does not crash when the type is binary.

New in Active4D 5.0r7 (Nov 13, 2009)

  • [1043] Previously the http server was parsing cookie values according to the
  • relevant specification (RFC 2965 and RFC 2616). But it turns out that in real life
  • cookie values often break the rules (e.g. google analytics!). So now the server will
  • accept anything as the cookie value.
  • At the same time the cookie parser allows for cookies with a name but no value, as
  • that is allowed in the spec.

New in Active4D 5.0r6 (Nov 12, 2009)

  • [1040] Fixed a4d.json.addSelection and a4d.debug.dump selection to
  • work correctly if there are deleted fields.
  • [1041] Fixed documentation for a4d.lists.findNoCase.
  • [1042] Character references now work with process variables.
  • Updated the TextMate bundle: tweaked some snippets, added some new v11
  • commands to the syntax highlighting.

New in Active4D 5.0r5 (Nov 11, 2009)

  • Fixed an assignment in a4d.json.endArray.
  • [1033] All identifiers may begin with a digit to be consistent with 4D (although not
  • with 4D’s documentation).
  • [1034] Keyword queries (using the % comparator) are now supported.
  • [1035] Time values may now be assigned to longint arrays.
  • [1037] A boolean expression on the left side of the + operator, when the right side
  • is text, will auto-convert the boolean expression to text.
  • [1038] The server does a better job of matching RFC 3986 when parsing URLs,
  • and if an illegal character in encountered it logs the character along with the error
  • message.

New in Active4D 5.0r4 (Nov 9, 2009)

  • Increased the minimum version of 4D to v11.5.
  • [1028] Fixed a number of issues relating to process/interprocess arrays.
  • [1032] goto selected record no longer restricts the index to >0.
  • regex replace will accept the same variable/field for the subject and result.
  • Changes to the web root are only logged when Active4D.ini is loaded or if the path
  • is invalid.

New in Active4D 5.0r3 (Nov 6, 2009)

  • [1028] sort array would crash under certain circumstances. This has been fixed.
  • [1028] Passing an empty blob to regex replace no longer crashes, and the regex
  • replace commands now check to make sure the subject and result are not the same
  • variable/field.

New in Active4D 5.0.0 (Nov 4, 2009)

  • [1019] A typo was fixed in a4d.utils.deleteSelection.
  • [1020] Whitespace at the end of a path in Active4D.ini is now trimmed before the path’s validity is checked.
  • [1021] The output charset configured in Active4D.ini is now properly returned by the get output charset command.
  • [1022] Assignment to different but type-compatible process variables works correctly in compiled mode.
  • [1023] Crashes when using empty pointers have been eliminated.
  • [1024] Using append to array with a variable for the value no longer kills the variable.
  • The OEM variable linked to the key file is correctly recognized now.
  • Removed some stray lists that were left in the NTK shell.
  • Removed references to A4D_ResponseHeaderNames and A4D_ResponseHeader_Values in compiler methods.
  • Replaced some process arrays with local arrays in the NTK shell.
  • base64 encode and base64 decode have been enhanced with a parameter that creates URL-safe encoding. Please see the documentation for more information.

New in Active4D 5.0MC2 (Nov 3, 2009)

  • In compiled/compatibility mode, under circumstances text arrays would not be
  • updated correctly. This has been fixed.
  • Applied a fix to the 4D plugin SDK that was causing a memory leak.
  • Added missing installation step in the documentation to setup the On Web
  • Connection method.
  • [1018] Table names starting with more than one digit are allowed.