APL+Win 15.0

The APL+Win v15.0 release is available and recommended for all current APL+Win subscribers. To obtain this release, visit and click APL+Win v15.0 Installer.

APL+Win 15.0 Updates:

  1. ⎕FX
    The ⎕FX system function has been improved to allow the argument to be a nested vector of character vectors (or scalars), rather than requiring it to be a matrix. For example, the line below in version 15:
          ⎕FX 'res←left MyFn right' 'res←left + right' 'res←res,left * right'
    is equivalent to the line below in past versions of APL+Win:
          ⎕FX ⊃[2] 'res←left Foo right' 'res←left + right' 'res←res,left * right'
  2. New ⎕CM - Character Matrix
    The new Character Matrix system function, ⎕CM, can be used to normalize a character argument into a character matrix result. Like the ⎕FX system function, ⎕CM accepts as its argument a nested or heterogeneous array of any rank, gluing all items together into a character matrix.
    The overall array and each item and subitem in the array is processed in ravel order. But this is not to say it is the same as ⎕ENLIST. Each character matrix or higher rank item in the argument (including sub-items) gets an implicit newline for each row. Each nested sub-item gets at least one new row in the result also (and if it contains nested sub-items or character matrix or higher rank items, those also get newlines in the result). For example:
          ⎕CM 'abc' (2 2⍴'DEFG') ('hello',⎕tcnl,'world!')
          ⍴⎕CM 'abc' (2 2⍴'DEFG') ('hi',⎕tcnl,'there')
    5 5
  3. New ⎕CV - Character Vector
    The ⎕CV system function can be used to normalize a character vector argument into a character vector result. By default, the character vector result is ⎕TCNL delimited. But available is an optional left argument that can specify a different line delimiter. For example:
          ⎕CV 'ONE' 'TWO' 'THREE'
          ⎕TCHT ⎕CV 'ONE' 'TWO' 'THREE'
          ':' ⎕CV 'ONE' 'TWO' 'THREE'
          ':' ⎕TCHT ⎕CV 'ONE' 'TWO' 'THREE'
  4. New ⎕CRLF - Newline + Linefeed
    The ⎕CRLF system variable returns a two element vector consisting of (⎕TCNL,⎕TCLF) and is a convenient left argment to ⎕CV for producing standard Windows delimited output. In C/C++/C# this is the "\r\n" sequence.
  5. Colon primitive ( : )
    A colon prefix followed by a space (colon-space) at the beginning of a statement in a user defined function will suppress the output on any line of execution including the :THEN expression in Inline Control Structures.
  6. New Sink primitive ( )
    The sink primitive suppresses the output from any line of execution in immediate execution in the session and user defined function when executed monadically. For example:
          ← 2 3⍴⍳6
    results in no visible output.
  7. New ⎕guid - Global Unique Identifier Generator
    The ⎕guid system function is used to obtain a character vector containing a new Global Unique Identifier (GUID). The result may be used as a persistent unique identifier with a high degree of certainty. For example:
  8. ⎕rl - Random Link
    The ⎕rl system variable has been updated to support several new pseudo-random number generation algorithms to complement the current pseudo-random number generation algorithm, Multiplicative Linear Congruential Multiplier. They are:
    1. Extended Historical Multiplicative Linear Congruential Multiplier
    2. Mersenne Twister (32-bit)
    3. Subtract with Carry (24-bit)
    4. APLW.WS ActiveX server
    The APLW.WS ActiveX Server object now supports being instantiated by a 32-bit non-APL+Win client application. Note that this enhancement facilitated renaming the XStart method to XInit.
  9. SendInput Windows functions added to APLWADF.INI and APLW*.ADF files.
  10. The updated aplw.exe.manifest and aplwr.exe.manifest files enable the GetVersionEx Windows function to now correctly detect and report the version number as 6.3 for the Windows 8.1 and Windows Server 2012 R2 operating systems.

APL+Win 15.0 Bug Fixes

  1. APL+Win could crash or corrupt the workspace if APL+Win performed a workspace compaction while parsing assignment statements.
  2. The display or formatting of a deeply nested array could cause APL+Win to crash unexpectedly instead of reporting a LIMIT ERROR. This was found to occur when the product of the elements in the number of rows and cols in the nested array exceeded the maximum number of elements supported in a 32-bit signed integer.
  3. A virtual memory allocation failure error in APL+Win that could prevent APL+Win from starting normally with a workspace size greater than 2GB.
  4. Assigning an argument of 1E78 or higher to the xValue property in the APLGrid ActiveX control caused APL+Win crash.

APLNext C# Script Engine v1.1.30

  1. The CSE instance properties 'replstr' and 'usereplstr' properties have been mplemented. These properties apply only to the CSE 'ExecStmt' and 'GetValue' methods when the scalar string substitution feature is used. These properties are useful when dealing with .Net 'escape' characters.
  2. The [CSE] section of the APL+Win .ini file can now be used to set the default values of the CSE 'unicode' and 'usereplstr' properties.
  3. The CSE system object property 'version' has been implemented so that it is not necessary to create an instance of the CSE to check the currently-installed version of the CSE on the target workstation. The previously-available 'version' property and 'GetVersionNumber' method of a CSE instance are retained to maintain backwards compatibility with prior versions of the CSE.
  4. For .Net custom events subscribed by APL+Win the ⎕carg system variable is available.
  5. The values of the APL+Win system variables ⎕cself and ⎕carg will not be saved with the workspace because if they were so saved when that workspace was loaded these system variable values would not represent existing objects.
  6. The CSE Script Engine Manual and the associated 'CSE Code Samples' folder has been updated.
    o Important CSE error messages section updated
    o CSE FAQ section of the manual updated
    o Documentation of the CSE 'Close' method updated
    o Example #86 modified to show that the CSE 'GetSessionTypes' method has no right argument
    o New detailed examples:
       - Using SQL.Geometry in APL+Win
       - Read FLAC audio file metadata in APL+Win
       - Use .Net regular expressions in APL+Win
       - No cost creation of PDF format documents in APL+Win