Dyalog APL V19.0 Issue 3 READ ME FIRST

This document contains the latest information about Dyalog APL Version 19.0.

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

Issue 3 has one change from issue 1: a fix for
21253: Unexpected value error in code similar to: b←⎕RSI[1].⎕NC c←(∨/' '≠c)⌿c

Table of Contents

Summary

Note that 19.0 is most likely to be the last version of Dyalog APL which is built for Intel-based Apple Mac computers: for 19.0 we have released an Intel-based interpreter and an ARM-based interpreter. For versions following 19.0 we will only release interpreters for macOS which run on ARM CPUs.

Beginning with version 19.0, ⎕SE content (other than Link and SALT) comes from the dyalog/qSE repo on GitHub. This does not affect what is where in an installation image, but you should be aware of this if you customise your session extensively.

On Microsoft Windows Dyalog 19.0 is built with Visual Studio 2022.

This revision of 19.0 uses Chromium Embedded Framework version 121.

Dyalog APL Version 19.0 on Windows is as ever built with .NET Framework support. However, for all other platforms (and Windows can be configured to do so) 19.0 is built with support for .NET 8: earlier versions of .NET (formerly known as .NET Core) are not supported.

Dyalog APL expects to find .NET in the default installation location on all platforms. However it would appear that even on the same platform, different methods of installing .NET default to installing in different locations, and in the case of Linux, different distributions have different default locations. Additionally there appear to be multiple files which may or may not be created when .NET is installed which contain the location of .NET.
Dyalog recommends that you install .NET in /usr/share/dotnet on Linux, and on macOS, in /usr/local/share/dotnet; these maximise the likelihood of not needing to set DOTNET_ROOT in order to use .NET from Dyalog (and indeed other applications).

On the Raspberry Pi, Dyalog strongly recommends that you install .NET 8 by downloading the Arm32 Binaries; using the dotnet-install script appears to install the wrong .NET support for 32-bit ARM. Note also that uname -m under Bookworm reports aarch64, not armv7l, and that aarch64 is also returned on a 64-bit Raspberry Pi O/S. Run getconf LONG_BIT to identify whether you have a 32-bit environment or not.

Documentation

The 19.0 documentation is included in the installation images and is available online at https://help.dyalog.com/19.0; the PDFs etc can be found at https://docs.dyalog.com/19.0. Dyalog 19.0 is released with RIDE 4.5; the documentation for RIDE 4.5 can be found at https://dyalog.github.io/ride/4.5/

Documentation for RIDE 4.5 can be found at https://dyalog.github.io/ride/4.5/; it is not available as a PDF.

Issues fixed in 19.0

IDDescription
318418.2: Syntax error with square-bracket indexing and ref-arrays.
4641Interpreter gets confused when tracing callbacks for resize or move
5755GetTextSize method does very little checking of its argument: can pass more than 2 elements of any type
8627An EXCEPTION is generated when comparing a DateTime object with any namespace ref
9797Find Objects tool does not find functions in unnamed namespaces.
9859Remove “Expose Gui Properties” and “Expose Session Properties” from the menu
10270Unicode Dyalog: Setting PropertyPage Caption with ⎕WS results in random caption.
13163A nonce error is generated if you ⎕SIZE an indexable .NET property
13253Scripted namespaces have unnecessary references injected
13340⎕SI and ⎕XSI can return the wrong name when an inner dfn is called via an operator that names ⍺⍺
15209Syserror 999 if you execute operations on isolates on one line
16178Interesting information section of aplcore has CLASSIC issues
16377∘.×⍣¯1 does not check its result
16395Inappropriate divide by zero errors from ⍣¯1
17342Add support for LZ4 frames to support compression of >2GB data
17649Attempting to include a 4-byte character in the left argument of ⎕SIGNAL generates a RANK ERROR
17698Dyalog should discard compiled bytecode from 400⌶ when loading a workspace saved by a previous version
17750⍣1 can cause ⍣¯1 to give wrong result
17762Wrong result when using both input stream and output stream and there's nothing for ⎕R to process
178185177⌶ fails to reject non-empty array
17967Branching via a derv switches namespace to the space containing the derv
18246Parenthesised multiple assignment fails when at least one of the names is ⎕ or ⍞
18313WIBNI ⎕JSON could generate ASCII-only JSON
18374⍸⍣¯1 doesn't check its result
18429Error in the result of an error guard can confuse ⎕LC
18433(++&+)⍣¯1⊢1 generates a syserror 999
1847817.1 and later: in some cases Intersection returns incorrectly prototyped result when the result is empty
18487For 18.0 onwards Partitioned Enclose incorrectly generates a LIMIT ERROR instead of a DOMAIN ERROR as in 17.1 and earlier
18570Dyalog is inconsistent about which namespace a dop runs in if it is defined in a namespace and ⍺⍺ is a scalar
185831∘.⎕JSON 0 generates a syserror 999
18584a←'≠00'0⋄(3↑¨⊃a)⌽⍨←0 generates a syserror 999
185962=/ seems to use default ⎕CT
18692Syserror on ⎕FX of ⎕OR from ⎕TSYNC
18699Tracer incorrectly invokes dfn even though guard value is false
18764WIBNI ⎕NINFO could limit the directory depth it goes down when using the Recurse option
18800Find Objects reports "Initial path does not exist" if you enter "⎕SE" into the "Look in:" field. Entering "⎕se.SALT" works
18840⊥⍣¯1 does not check its result
18877(⍎⍣¯1)⍬ leads to a syserror 999
19002Hang after double-clicking in Threads window and then closing it
19180⎕io←0 ⋄ z←⍕2 2 2 2 2 2⍴ { ( (?5⍴2),1) ⍴1 }¨ 64⍴0 generates a syserror 999
19215First dfn is skipped when two multi-line dfns are separated by a diamond
19291Dfn scoping issue
19300Names go out of scope when dfns run multi-threaded
19329With ⎕fr←1287, ⌈/⊃0 1289⎕dr 2.1 3.1 returns 0, not 3.1
19349:ElseIf 0 block executed if there is a SessionTrace callback from :If
19584({+/⍵}⌺1)⍬ generates an AFFIRM ERROR
19585a←⍬ ⋄ (0↓.⍉a)←1 generates a syserror. a can be any array, the left argument of ↓ does not have to be 0
19606#.(⍨)¨0 generates a syserror 999
19624⎕fx'foo' ':attribute##.a' and similarly ill-defined :attribute statements generate syserror 999s
196338415⌶ should work with DECFs (or give a domain error)
19659Clearly identify the unacceptable glyph in "Invalid token" DMX messages
19717z←⎕fmt of a nested array of empty vectors and matrices generates a syserror 999
19718When a mal-formed array is passed into Dyalog, the errors should be more helpful (DWA/⎕NA/aps)
19723WIBNI you could put something in a configuration file that meant relative to the configuration file
19758Windows only: Classic Dyalog installer installs Dyalog .NET Core interface files even though Classic cannot use .NET Core
19760Dfn lexical scope issue: dfn invoked by ⎕S
19775Cannot fix dfns with long (more than 9 elements) strand on first line
19785If editing and have searched for some text with "Highlight All Matches" on, typing text can sometimes lead to a syserror 5
19805(⍸⍣¯1) fails with DOMAIN ERROR instead of returning an empty high-rank array
1988000307 Unique token generator and token range reservation mechanism
19886Caret is in wrong position if left arg is a NILADIC function ina namespace but the problem is with the number of right arguments
19904'M<->...' ⎕FMT does not properly handle scientific notation
19913NONCE ERROR on selective assignment of a nested empty array when the selective statement includes Each
19914Simultaneously running APL interpreters should not use the same log file
19921Dyadic inverse gives wrong result when operand is modified by a no-op
1996600313 Review the startup mechanisms for loading APL code in to the session
19978⎕NINFO should return file timestamps in UTC
19983Unique mask doesn't work when given a scalar namespace
19984Unique mask gives wrong results with ⎕FR←1287 and ⎕CT←0
19992⎕fx'v' '{0::⎕dm ⋄ 1∪.(→0∘.+ +)0⍀0}⍬'⋄ 1 ⎕trace'v' ⋄ v ⍝ Shows a MAGIC operator
20002Remove NLF enable/disable check button from the General tab of the config box in a step towards removing non-NLF support
20019Pasting ambivalent function definition with stranded result into session results in defn error
20020Identity of shy operand causes syserror/segfault/Stack overflow
20033Selective assignment using each and disclose for the selection, gives wrong results
20035⎕JSON Y does not populate ⎕DMX.Message if Y contains complex values
20045⎕DT under windows only resolves up to 10 or 15ms, depending on the system
20064Dfns incorrectly sees a raw ← as an assignment and goes to next line. It should syntax error
20065Regression: ⊃∊⎕NULL{⍺ ⍵}⍤0¨⎕NULL returns 0 not ⎕null; an AFFIRM ERROR is generated in debug builds
20070(¯2*63)/1 generates a syserror (optimised build) or an AFFIRM (debug build). As does (¯2*63)\1
20071{⎕FX ⍵},⊂':Attribute∇⍵' leads to a stack overflow, or the interpreter silently terminating
2008619.0 only: with shuffle enabled, {⍵}@0⌺1@+0 generates a syserror/stack overflow
20087(|↑⍣0&⊢)⍣¯1≡0 generates a syserror 999
20089SYNTAX ERROR on niladic shy function for dfn guard or error guard
20099Update the LZ4 library
20107200⌶ has insufficient checks on the shape of its argument .. should only allow a vector of vectors
20113NONCE error in ⎕SIZE on ex-future
20126Assigned primitive functions not allowed in selective assignment expressions
20127At 6 space prompt, <End> places cursor at far left of screen
20138Display of FUTURE ERRORs exposes the guts of the isolate implementation
20152FF (⎕UCS 12, Ctrl+L) entered to session after using Ctrl+L as Accelerator for Session>Clear
20153(⎕THIS.⌹)⍤0 domain errors in cases where ⌹⍤0 does not
20161Attempting to make use of the result of ⍎'⋄→∘(⎕NS⍨x←+)∘→⍬' generates a syserror 999
20171Editor: the name of a base class from a different namespace is syntax coloured as an error
20172Naked edit from the session on a function suspended in a class function opens a new window
20183Syserror 4 from: n←⎕NS⍬ ⋄ e←n.¨ ⋄ #.e
2019800319 Reserve workspace for use in Trap functions
20201Syserror 999 after resuming a stopped thread and ⍞ is used in another
20206Ctrl Backspace does not work as an accelerator in the session
20209It's not possible to ⎕NQ a select to the "new log" menu item from a function
20210Help sometimes looks too far left
20211JSON5 refuses Unicode escapes in unquoted key names
20220Syserror/AFFIRM ERROR attempt to catenate nested array to previously referenced hashed nested array
20225In the Options→Colors dialog box, no scheme is selected by default after installation
20236⎕NL ¯2 5E9 crashes Dyalog for Linux
20246ns←⎕NS''⋄ns.f)←ns.⎕FX'f' '1' generates a syserror 999
20257Little endian 19.0 only: N{{⍵≡⍉⌽⍵}⍺0⌸⍴0}0 generates a syserror 999 for N=69, but not for any of ⍳¯1e6+⍳2e6
20268{≢∪⍵}⌸⍨0 2⍴0 generates a syserror 4 on next wscheck; {(≢)∪⍵}⌸⍨0 2⍴0 is fine
20272Key can return wrong results in some cases where the operand is recognised as an idiom
20274(,32767){⍺(≢∪⍵)}⌸⍳1 0 and (,32768){⍺(≢∪⍵)}⌸⍳1 0 produce different results
20312Allow Classic users to use LOAD= with source files
20316Attempting to display a variable modified using (∊1⍴v)+←0 may lead to a syserror 999
2034400306: Portable file function enhancements - NCOPY/NMOVE callback
20345Multi-line dfn stack is improperly cut on error after executing stranded modified assignment with dfns operand
203522⎕nq'.' 'setdflags' 32 ⋄ (⍒⍤⍳)1 1 generates a syserror 63
20375Non-WIndows: Improve handling attempting to drop an aplcore or wsdump to a non-writeable file
20378Use Link/branches/3.1 and qSE GitHub repos rather than Link/master for 19.0
20385The dyalog script compiler is not compatible with the new InjectReferences default when exporting.
20402After ⍎ on a fn in a namespace, clicking in the Tree View of a Trace window closes the Tracer and acts like a )reset
2040300335 Improve TIMEOUT handling
20406Ex.y formatting in ⎕FMT gets the alignment of Es wrong with values with 3-digit negative mantissa
20436The file bridge190-64_unicode_ap.dll should be removed from future installation images
2044157 57 57⊤¯5E¯15 returns 56 56 57: it should return 0 0 0 - and other issues to be fixed in 19.0 and possibly earlier
20470(# #).(#).{⍵⍵}+1 generates a syserror 999
20474If )clear causes a WS FULL ERROR, calling it a second time leads to a syserror 635
20479Each Modified Assignment gives SYNTAX error but the expression executes successfully in session while the dfn is still suspended
20485Dops treat niladic operands as monadic
20488)SI / )SINL parameter -count=n not working, and -)XLOAD is not in the code
2050540⎕ATX'' gives 0 instead of ¯1
20506⎕CY prints a newline if given a non-workspace
20520Calling APL with a non-existent file as LOG_FILE leads to a MsgBox complaining about that file not existing
20529<AO> and <DO> work when editing plain text arrays
20534WIBNI )ed and ⎕ED worked on names with line numbers
20553mac*/pi/linux: calling )clear or )save having created a function using )ed generates a syserror 999
20562Output that wraps to multiple lines isn't marked as multi-line output
20570Remove R Interface Guide.pdf from releases
20572The interpreter does not seem to be sending RIDE the banner when RIDE is the front end. OK with standalone RIDE to local APL
20576Shuffle QA: a←0(0 0) ⋄ (0↑,¨a)+←0 generates a syserror 999
20579Stop bits are cleared whenever a function is edited
20580if a dfn sets a stop bit on itself, it doesn't stop there until next time it is called
20581N ⎕TALLOC 2 should provide ⎕TPOOL, filtered to the tokens from range N
20599Non-Wndows: 2300⌶0 generates a syserror 999 with DYALOG_NETCORE=1
20603a←⍬ ⋄(↑¨a)+←1 gives a syserror 999
20604a←⍬ ⋄ (1↑0¨a)← gives a syserror 999
20607''⎕R(('')⎕R''⍕)'' generates a syserror 999
20613{0:⎕⋄{←⍸⎕OR'f'}⍬⊣⎕LOCK⎕FX'r←f' '←⍨'}'' gives a syserror 999
20617All workspaces in release must be saved having run 5171⌶# and 5172⌶0
20620Enhancement: do not permit log files to be read in other versions or editions. Widths and platforms should be ok
20622DOMAIN ERROR and/or syserror when using 5171⌶ under program control
20623The default for showing the gutter in the tty interface should be off
20624Extend 2400⌶ to include "remove source as typed", clear ⎕DM(X) and call )reset and remove all Loaded file information
20626AIX Only? With zero-length LOG_FILE redirecting 1 & 2 generates a "Failed to complete read of log file" message
20627Cursor position incorrect on bottom line of session
20629⎕FX'f' '' ⋄ (⎕OR'f')⍣≡⎕OR&'' generates both an AFFIRM error and a VALUE error
20630⌷0)0+(/[0])0 generates an AFFIRM error
20632≡''⎕S{≡⊂⎕CSV⍟1}⊂⎕UCS∊0 generates an AFFIRM error
20633h←0 ⋄ ((,,,)⊃⌽h)←0 generates an AFFIRM error
20639No error is reported from )CS non_existent_namespace until you hit ER
20660syserror 999 from: '∧≠∨≥≤⍲'{w←0⋄t←0∇(↑)⋄∨.{i←⍎⍺'.'⍵⋄(⊢(t∘t)⍉)0)}⍀⍺}0
20661⎕FX'f' 'n←⎕←{*******}' ⋄ f gives an AFFIRM ERROR
20664{(a←⎕NS¨⍬⍬).b←0⋄n←0⋄a[].^→0}0 gives an AFFIRM ERROR
206674(↑{⎕←x←⍺⋄x[2⊂3]~←⍵}↓)6⍴1 0 generates an AFFIRM ERROR
20669x←/⋄≡⎕THIS⎕THIS[].x⎕THIS⎕TS[0] generates an AFFIRM ERROR
20676⎕JSON⍠'Charset' 'ASCII' fails above ⎕UCS 65535
20681The word "Setup" when typed into the session is shown in reverse video; in 18.2 it was in grey
20688Move Dyalog.Utils from SALT to qSE
20703After "save in the workspace only", the editor reads source from file
207120⍕⎕OR of a tradfn gives WS FULL instead of DOMAIN ERROR
20716can't resume all threads when in an editor callback should not have a "Don't show this message again" checkbox
20721The configuration parameter INIFILE is being ignored
20723⎕se.⎕wg'PropList' incorrectly includes RadiusMode
20724Stencil should give an error when the stencil size is 1 and the length is 0, and when the stencil size is 2 and the lenght is 1.
20729Get suspension when attempting to ⎕fix a class which calls a function which attempts a :With or ⎕cs
20743Remove rconnect workspace and documentation from 19.0 installation images
20752Different result in 19.0 with traps, dfns and ⎕SIGNAL
20757Window>Close all windows doesn't work
20761Syserror 123 with Chart Wizard having added InjectReferences whenever SALT does a ⎕FIX
20767The "Failed to complete write of log file" message uses 4-byte characters so is difficult to read
20768Get "Failed to complete write of log file" message when attempting to write to /dev/null
20772Windows only: 100% CPU core usage when awaiting ⍞ input
20773¯30⎕DT must allow negative IDNs
207783 1 {⍸≡↓↓{+/,⍵}⌺⍺⊢⍵}⍪0 0 generates a syserror 5 when you call wscheck
20779Windows Classic only: ⎕←ai←⎕ai⋄{_←⎕DL 2⋄⎕←'X' (⎕ai-#.ai)}&0⋄⎕TNUMS hangs until focus is returned to the session
20783)save should refuse to overwrite a workspace saved by an earlier version - insist on using -force option
20786Stencil idioms give unexpected rank error
20787Since 19.0: A←3 3⍴3 ⋄ {+/,A×⍵}{⍺⍺⌺3 3⊢3 3⍴3}⍬ gives a syserror 999
20790The tracer shows a function with "Class" in the statusfield, and fixing the fn in the editor generates errors
20799syserror 11 from running misc190 twice
20809⎕DT and friends should support broken-down dates up to 9999-12-31
20818After pressing a button in the APL language bar in Classic Dyalog, tips do not work properly
20819Occasional difficulty resizing or moving a form with a configure event in a multi-threaded application
20832Unexpected multi-line input when printing ⎕DMX next to other array
20854⎕profile under windows only resolves up to 10 or 15ms, depending on the system
20865The second and subsequent lines of multiline input are indented one space further than the first
20866NCOPY callbacks - garbled names in ⍵[3].Last on Classic
20867NCOPY callback errors do not have DMX info
20878Please add Cider & Tatin packages to 19.0
20882Add NuGet to [DYALOG]StartupSession
20915If you copy from Dyalog and paste HTML format (e.g. into Gmail or Teams), the title "Pasted from Dyalog" is inserted
20916Add ⍝ between ws name and date in output from )save, )load etc
20919Multiline session input: { <NL> [ <NL> } generates a syserror 6 (and (Windows) you can't copy and paste this either)
20921Remove RIDE User Guide PDF from the v19.0 build onwards
20935A compaction of the session log during syntax colouring could cause a syserror 999
20947Add ≢⍤⊢ as synomon for ⊢∘≢ in key
2096019.0 Fuzz interpreter: ≡⍴∪0 645⎕DR 5⍴0j1 and many other complex-related ⎕dr expresssions generate core files
20976dotnet not working on Mac
20994Add startup flag to check arrays returned to interpreter from DWA
20996Putting DYALOG in a config file causes problems if the interpreter is subsequently moved
21002NCOPY/NMOVE callback function is run in incorrect namespace
21005Attempting to map a directory gives different errors under Windows and Linux
21009Text for a message box when the file is no longer available is self-contradictory
21034Calling a .NET Core function that generates an exception on a different thread calls the interpreter on the wrong thread
21052HTMLRenderer window does not show up in taskbar or task switcher
21070Odd value error with assigning into the result of a dotted and indexed expression
21074]tools.activate -reset does not return a result
21075Syserror or crash after )clear after running using Cider to open and close a project
21082The editor does not honour the flags used with ⎕FIX when ref-FIXing a class after an edit.
21083Dyalog disappears after adding a method to a class and fixing it
21097Start in is set to "%USERPROFILE%\Documents\Dyalog APL 19.0 Unicode Files" but we create C:\Users\bhc\Documents\Dyalog APL-64
21099Use .NET 8.0.1 rather than .NET 8.0.0 (after beta 2 is released)
21102.NET CORE Dyalogc.exe should not list Isolation modes in usage
21110⎕NCOPY/⎕NMOVE syserror 999 when right argument is a nested vector, and the callback function has an error in it.
21112.NET samples are significantly increasing installation image size
21113When Link and SALT are enabled, "empty" workspaces on disk are 300-500KB larger than when they're not enabled
21131From tracer open current function (created using Del editor or )ed) in the editor: any stop bits do not appear in the editor
21138It's not possible to pass a reference to a NetControl object to a .NET object as a method argument or property value
21149ED on a name in the tracer may incorrectly insert a new function in the text
21155Windows: Minimizing a "Classic Mode" edit window doesn't put it in the taskbar
21156If syserror calls syserror the interpreter calls exit() which kills multihosted applications
21168Editor no longer honours the Tab stops setting when reformatting control structures
21183Rename the .NET Core Interface Guide to the .NET Interface Guide in the builds
21188Configure -> Session -> Extended Multiline Input (experimental) checkbox needs to match registry/config parameter or default
21202Attempting to type APL characters into a ⎕WC Edit field can stall the GUI
21220Thread Switching in the interpreters is affected by an EOF error from stdin
21222⎕DQ '.' does not include HTMLRenderers