This document contains the latest information about Dyalog APL Version 20.0.
This file is dyalog_readme.htm and is included in the help directory in the Dyalog installation.
The list of fixes below contains the more notable changes to version 20.0. Other fixes have been committed - for example there have been around 70 commits made as a result of the fuzz testing that we run continually. (Fuzz testing was mentioned in Uncle Andy's Fireside Chat in the list of presentations at Dyalog '23.
| ID | Description |
| 6048 | dfn in :Until statement which is followed by :AndIf or :OrIf produces a SYNTAX ERROR |
| 9151 | reformat does not work well when :while/:until/:orif statements are used |
| 12845 | Enhancement: allow the user to select and copy mulitple entries in the results box in the Find Objects tool |
| 15532 | Reformat places input cursor outside edit window |
| 16399 | Displaying futures that are returned from threaded calls can generate a syserror 999 |
| 16628 | 100% CPU usage with 60 threads that are doing :Hold or ⎕TGET requests that will not be fulfilled |
| 18129 | The interpreter should assume that the contents of a .aplf file is a function unless there is evidence to the contrary |
| 18732 | ⎕FIX fails on multiple items if first item is a dfn |
| 19014 | ⎕NREAD with count = ¯1 on a FIFO reads zero bytes |
| 19394 | Unexpected stop in destructor if you )reset or → while tracing |
| 19732 | Editor: the error msgbox shown when attempting to edit an object defined in since-deleted file does not honour DYALOG_NOPOPUPS |
| 19832 | If you assign F3 for NX in Options->Configure->Keyboard shortcuts, you cannot type lowercase r in the Editor quick search field |
| 19847 | Keeping namespaces alive by *only* having references to their children can lead to very bad performance |
| 20677 | 64-bit Dyalog: the session disappears if you give a Label a Caption with more than 1023 characters |
| 20687 | The caret is in the wrong position in the expression 1+2)3+4 |
| 20715 | Localise keystroke does not work editing namespace with incomplete control structures |
| 20722 | ⎕NGET and ⎕NPUT should support a matrix representation of file data |
| 20888 | Left-inverse of ⊥ with scalar left and negative scalar right argument returns a wrong result. |
| 20906 | ⊃⎕AT on derv returns 0 0 0 |
| 20926 | Editor reformat messes up JSON syntax |
| 20936 | Using retained hash tables with dyadic iota seems not to produce a speed-up |
| 20985 | ⎕JSON should include ⎕IO when reporting bad row in matrix |
| 20998 | With “Skip blank lines when tracing” enabled, a function won’t resume after a ⎕STOP if the following line is blank |
| 21092 | ⍎8000⍕300⍴1 stops displaying after a while, and then APL disappears/segmentation faults |
| 21255 | Dyalog disappears if you ⎕CLEAR after creating a link and using -watch=both on .NET Framework 4.x |
| 21305 | ⎕NC in public shared method produces incorrect result. |
| 21307 | Cmplx÷0 does not give any ⎕DMX.Message |
| 21319 | Hashed array in a class field loses its hash table if you extend it |
| 21332 | Keyboard Shortcuts dialog: set the initial sort order to alphabetic on the first column (code) |
| 21335 | Unexpected async state SYNC_DONE_ASYNCGETPROP raised from .NET 8 interface Dyalog.Net.Bridge.Host.Windows.dll |
| 21349 | Confusing error when fn.⎕nl 2 attempts inner product |
| 21354 | Editor: Reformat adds trailing blanks until all lines have equal length |
| 21357 | Windows only: 1⎕NPARTS'' gives C:// with extra slash when current dir is C:\ |
| 21433 | :trap 0 ⋄ →0 ⋄ :end generates a syserror 999 |
| 21434 | ⎕JSON, dialect JSON5, does not emit "unnecessary" commas when exporting from Matrix format |
| 21457 | Under some circumstances, ⎕NTIE will fail to open a file instead of retrying read-only |
| 21459 | ⎕JSON⍠'Dialect' 'JSON5' rejects all control codes < U+0020 in strings |
| 21466 | ⎕JSON⍠('Dialect' 'JSON5')('Format' 'M') cannot export 'NaN', 'Infinity' etc. |
| 21467 | HASHED arrays FPTR saved in workspace not swapped |
| 21475 | ⎕NS should set field values rather than grey-space names |
| 21486 | ⎕ATX thinks optional left argument is invalid name |
| 21500 | 2023⌶ has no result |
| 21507 | Settings specified in a config file with numeric values don't necessarily get processed correctly subsequently |
| 21509 | dyalog script (mapl) can pick up environment variables and lead to unintended startup behaviour |
| 21510 | JSON name mangling (7162⌶) should handle multiple names |
| 21522 | )COPYing a workspace containing a reference to # can syserror or hang |
| 21524 | File menuitem Export to Memory is greyed out in a Dyalog workspace which has a class with a .NET base class |
| 21538 | Override does not work in a class method where the class has a .NET base class |
| 21542 | Add a ⎕DMX message for when × gives a DOMAIN ERROR because of out of range result |
| 21569 | Non-empty ⎕DMX is not correctly handled by ⎕NA |
| 21573 | HTMLRenderer events stop happening after opening and closing a modal form |
| 21575 | RS and LS keys no longer defined in Unicode edition |
| 21582 | Classic Dyalog .NET compiler generates an executable which does not work unless you specify the -console option |
| 21583 | Classic Dyalog .NET compiler does not honour the -nonet flag and does not work unless you explicitly specify -framework |
| 21638 | .NET methods generate VALUE ERRORS rather than returning NULLs if called on threads other than thread 0 |
| 21642 | Cannot remove a range even if you have not put any tokens into it and ⎕TGET call timed out |
| 21655 | Dyalog starts in C:\Windows |
| 21662 | The shape field in the statusbar is not updated to reflect a change in an array that is being displayed in the editor |
| 21664 | Sometimes Parked threads can get re-scheduled |
| 21697 | ⎕trap←0 'E' '' ⋄ [←+⋄] leads to a syserror 999 or 41 |
| 21718 | (#.A ⋄ #.A) gives a SYNTAX ERROR |
| 21729 | Editor fails to repaint after closing paren |
| 21738 | Add DMX Message when namespace depth is exceeded. |
| 21744 | Dyalog disappears due to unhandled FileSystemWatcher exception if edit and save a function in a linked namespace after saving ws |
| 21746 | Dyalog exits after a .NET 8 interface Unexpected async state to do with Link, editing and saving a workspace |
| 21770 | Indexed assignment to a Simple Property generates a RANK_ERROR |
| 21772 | Session Text cursor does not reappear after closing a Form with a close callback |
| 21794 | ⎕FIX ignores tradfn after dfn |
| 21800 | Tracer/Editor: in a ⎕ns'' loop with the editor open on a variable in the ⎕ns'' an attempt to update the var generates a 999 |
| 21821 | Syserr pasting Interface example into session |
| 21828 | Crash referencing .NET names with ]OUTPUT.Rows ON |
| 21834 | Strong Interrupt should stop multiline input. |
| 21838 | Editor incorrectly splits lines in a function on UCS 13s |
| 21851 | Syserrors if edit windows are open before RIDE is connected |
| 21859 | Make HotSpot a settable property on a Cursor object |
| 21878 | A syserror 999 is generated when running multiple times a mal-formed tradfn and clearing the stack via the tracer |
| 21894 | <UA> should undo multi-line input |
| 21914 | Standalone editor (dyaedit) hangs when attempting to save a namespace which calls a function which generates an untrapped error |
| 21936 | With .NET Core ⎕EXCEPTION does not work if exception does not occur on the main thread |
| 21979 | Calling Array.CreateInstance on another thread with .NET >6 does not return a instance of a .NET array |
| 21986 | <Home> should only stop to the left of text; <End> only to the right of text |
| 21987 | Editor should not allow changing label values |
| 22002 | 0(⎕JSON ⎕OPT'Dialect' 'JSON5') '{/* **/}' errors when there are an even number of "*" before the closing "/" |
| 22008 | Holding down a cursor key to navigate a Grid with many check box buttons is slow if ShowInput is 0 |
| 22011 | Alt+F4 does not close dyalog |
| 22018 | When NINFO is used to set file properties, it returns the old value not the new one. |
| 22039 | Disabling syntax colouring in the session doesn't work completely |
| 22041 | As per C#, "nested" classes should be able to see private members of their "outer" classes |
| 22094 | Unexpected syntax error fixing class into class when the classes have members of same name |
| 22102 | Local variables in shared methods are included in instances if they are created within such functions |
| 22103 | Adding a trigger to an OO field changes its nameclass |
| 22111 | syserror 999 at )OFF after ]Rows on with dyalog -s |
| 22112 | Syntax colouring for :repeat...:until...:orif shows error on :orif if :until expression uses parenthesis or braces |
| 22149 | After using ⎕WS to set a RichEdit's CharFormat property, a subsequent ⎕WG 'CharFormat' does not give back what you set |
| 22175 | Domain error when setting Font property when creating an object with ⎕NEW |
| 22185 | Hang when ⎕NS merges two innocent nss |
| 22187 | Printing a long line with CRs allocates too much log if ⎕PW is large |
| 22196 | Unicode normalisation of mixed array only works for vectors (not higher rank) |
| 22205 | scandir DMX info can be wrong when directory + filename lengths exceed max length |
| 22219 | Typing into Windows GUI in a stand-alone executable is "broken" if RIDE is connected |
| 22221 | ⎕WG 'Event' on "system actions" (e.g. [wsload]) returns an empty array for the action |
| 22228 | Our Dialog boxes don't display the correct font on new Windows 11 installations (perhaps non English installations) |
| 22254 | Options|Configure|Trace/Edit dialog cuts off the bottom of the "if not suspended fix" drop-down combo |
| 22255 | Find objects dialog is missing last character of the word "previous" if MS Windows scaling setting is 100% |
| 22271 | Cursor disappears from session if a function calls ⎕ED and then asks for ⍞ input |
| 22301 | Add a ⎕SHELL output encoding type which causes conversion to happen like in ⎕SH |
| 22303 | Print Setup, Trace/Edit and Export dialogs have truncated text on Microsoft Windows |
| 22333 | RD in the session when using the lineeditor to edit a function doesn't work properly |
| 22359 | Syntax colouring is wrong in second and subsequent :OrIfs after a :Until |
| 22363 | ⎕DMX.(⎕NS) fails producing a DOMAIN ERROR |
| 22408 | Non-Windows: The HTMLRenderer thread incorrectly uses the settings APIs (which aren't thread safe |
| 22410 | Incorrect line reported for SYNTAX ERROR in dfn. |
| 22414 | <RD> in the session fails to mark as changed |
| 22422 | Use status field to indicate all input modes |
| 22450 | ⍞ input becomes syntax coloured after removing text in the session |
| 22459 | Error caret incorrectly placed if a "space tagged" function doesn't return a result |
| 22476 | Dyalogscript takes arguments passed to a .apls script when it should not |
| 22479 | Options|Configure|Trace/Edit dialog is missing the If not suspended" drop-down combo on text scale factor 200% on MS Windows |
| 22484 | Creating HTMLRenderer object twice can lead to a hang under certain circumstances |
| 22493 | Sometimes, setting the HTML property of an HTMLRenderer stops working |
| 22504 | Error is incorrectly reported against the line in a dfn where a derived function is defined |
| 22517 | Dyalog crashes in ⎕FIX if you use ← to initialise a field but forget to specify a value |