Dyalog APL V17.0 Pre-Alpha READ ME FIRST

This document contains the latest information about Dyalog APL Version 17.0. It was last updated $Date: 2017-12-20 15:17:22 +0000 (Wed, 20 Dec 2017) $ and is associated with $Revision: 31827 $.

This file is dyalog_readme.htm and is included in the help directory in the Dyalog installation.

Table of Contents


This section lists various changes and fixes which may affect your application. They have been made in 17.0 rather than in DSS updates since they involve a change in behaviour.


We've not yet produced any documentation for 17.0: this is all there is so far !

New since previous issue



4478Inner product is slower than reduction
4603inner product faster on nested vector than on simple matrix
7689+/+/mat appears to be slower than +/+⌿ mat - and both could be sped up
8735RFE: x*n on small scalar exponents n can be faster
8736RFE: -x can be made faster by computing it as 0-x
8754From 12.1 onwards, the expression mat[i;j;k]+←mat2 is slower than mat[i;j;k]←mat[i;j;k]+mat2
8836RFE: ∧\' '=a "mask of leading blanks" idiom can be faster
8837RFE: +/∧\' '=a "number of leading blanks" idiom can be faster
9086speed up integer division (and maybe some other scalar dyadics)
10151RFE, Eugene Ying special: m÷c should be as fast as m×÷c when c is a scalar
11168RFE: x=y for non-tolerant = and one scalar argument, can be faster
11692RFE: scalar functions with axis and rank can be leaner/faster
12042speed up comparisons
12309RFE: scalar×boolean can be faster
12931speed up DECF tolerant comparison
14420⊢∘f could probably be sped up
14458RFE: ×y (signum y) can be faster for integer y
14459RFE: x+y and x-y for boolean x and y can be faster
14522Replicate with fixed left argument can be much faster
14709x⍳y with tolerance and major cells having more than one float, can be faster
14778Enclose with axis should be implemented using transpose
14789Allow shortcutting in ∧⌿ and ∨⌿
14796And/or reduction along short last axis can be sped up with take interleaving
14802SSE2 support for scalar dyadics
14818Boolean index into boolean can be much faster
14909Extend SSE2 vectorised scalar dyadics to AVX2
14919Scalar dyadics with axis should use replicate-reshape rather than reshape-transpose
15000Use SSSE3 shuffle for compress
15017⎕NINFO performance improvements when Wildcard option is enabled and name does not contain any wildcard characters
15053⍸ on sparse high rank arrays could be faster
15200Vectorised find-compare functions
15211Outer products with short rows can be sped up with replicate
15236Take/drop should merge unmodified axes
15265Special case for vector ∧.∧ and ∨.∨ handles scalar extension incorrectly
15273Optimise ⎕NREAD so that a zero-length read doesn't call read()
15274Scalar dyadic outer product with a singleton argument should use scald

New In 17.0

9849With ⎕FR←645, ⌈/2⍴1e400 does not generate a DOMAIN ERROR (nor does ⌊/)
10493WIBNI the left argument of ⎕CY could be nested
1402917.0: Remove JSON I-Beams
14141UNIX runtime: Cannot interrupt a function from RIDE
14441⎕NPUT append option
14625WIBNI ⎕NGET and ⎕NPUT could use any character set
1464500209 Remove write support for 32-bit component files
14826mapl script: run aplkeys.sh by default
14858Switch to a more up to date version of zlib
1486400218 DECF - switch from DPD to BID
14918BUILD_SE doesn't take DPI scaling into account when building sessions
14923Fix caret location for JMS experiment
14958APL takes far too long to return control to the user when the user interrupts execution with many items on the stack
14969Automatic naming of tempfiles
14998⎕CSV on a matrix unexpectedly turns 9145.11 into 9145.110000000001 in the CSV output file
15095Unix builds: report "syserror" instead of "sys error"
15096Add an I-beam which returns the mapping which allows 200⌶ to be decoded
15103RIDE Exit message will not interrupt a busy interpreter
15166<TT> does not work in the tracer
15184Add 2000⌶19: Number of calls to ⎕WA and 2002⌶
15220VALUE_ERROR calling an included function when it's been included twice
15232context help for ⎕FIX doesn't work immediately after a dfn guard
15278Calling ⎕fix on a file which ends with ".dyalog" and which contains errors causes a syserror 999
15279Calling ⎕fix on a scripted namespace heirarchy containing variables and namespaces with the same name syserror 999s
15285TTY version: strange effects when there are TABs in session output
15335'jd'⎕WC'cursor' 'aplappleadsadsadsad' no longer generates a (LIMIT) error - and WIBNI ⎕DMX was more informative
15340APLMON reports DECF BID arguments as "reference"

Issues Fixed in Version 17.0 Reported in Earlier Versions of Dyalog APL

2796Referenced functions are not edited permanently if the function and the reference are in different namespaces
3940A class or namespace script will not fix if it contains a defined function which contains a Del inside a recursive dfn.
6356In Classic mode, the current line can jump down the window after editing the function and returning to the tracer.
7851LARGE ARRAYS: ⎕CR/⎕NR/⎕VR crashes when a fn name is too long
8092WIBNI value errors for undefined names had ⎕DMX info
8764Tracer: repeatedly hitting any of the continue/resume buttons results in docked tracer window getting progressively shorter
8838Add new sort idioms that support any non-scalar array
11081Enhancement: Add a Select All MenuItem to the pop-up menu
11725Windows: Attempting to display a function with a header line of more than 1044000 characters generates a syserror
13107Improve the performance of editing scripted objects - most noticeable on ones with many lines
14342≢('x'⎕R'yy')'foo' '' '' is 2; should it be 3 ?
14417aplmain.c seems to assume that any argument starting with -s other than -script is "-s" and is thus consumed
14439dyalog apl -script does not fail cleanly under Classic interpreters
14467Strange result from 2(⎕←+)3 when boxing is on
14538Unique (∪) can give a wrong answer when ⎕CT ≠ 0 and used on arrays of 11 or more very close floating point numbers
14658Syserror 97 after ⎕CY a workspace with a destructor into an unnamed namespace and later ⎕EX this namespace
14727Variant should accept an empty list of options
14839Remove Window|Language-Bar
14915Linux: odd permissions on directories in /opt/mdyalog
14921PCRE internal error -8 with large variable and a bad regular expression
15016Misleading error message if Microsoft Windows does not allow the user to access the system random number generator
15061Editor gets confused by extra :endsection when the scripted object has been ⎕FIXed
15072|0⍴⊂,' ' incorrectly fails with a domain error if ⎕FR is 1287 (but correctly does not error if ⎕FR is 645)
15142)ed opens edit windows on all words even those that are in a comment
15145Allow session above edit & trace windows causes value tip to get own tab on taskbar
15242Provide DMX information for LIMIT ERRORs related to Windows Resource Exhaustion
15320)reset of a workspace which has saved GUI and a SI stack inside it leads to a syserror 4
15331no error when a tradfn tries to return an operator