@Dennis Has anything in the backend changed lately? Quite a few people are getting Dyalog APL syserrors (as if the memory got corrupted somehow) lately. Immediately rRe-running the exact same thing usually works fine.
@Dennis Yes, it happens to me too. It is all kinds of code. Nothing special and isn't reliably reproducible. You can see the effects when it happened to the TIO bot: Compare this to this.
The observed effect is that TIO takes a long time to output (5 secs in the bot's case) when the computation should be instant, and then it is just a sys error with no other output.
@Dennis It does very little: Defines an operator, then uses it to compute e^(log 2+log 3) and e^(2×log 3). Yes, it happens on the website too, but I cannot preserve a record of it there (other than screenshots).
@Dennis Oh, that list is for proper trappable errors. Syserrors happens when the interpreter finds its memory to be different than expected. The main code (999 here) provides some information about what went wrong, but 999 is for memory corruption that it didn't understand at all, so the minor number (25) doesn't mean anything decipherable.
My best guess is that the TIO framework (includes DO) occasionally corrupts the memory that has been assigned to APL. Looks to APL like a hardware fault.
@Dennis Notice that the 5s is real time only, so it doesn't seem like the interpreter is keeping the server busy for that time.
@Dennis OK, got the answer to that: When a syserror happens, it delays 5 seconds before quitting so that you have a chance to read the message before your terminal closes.
@Dennis Every ≈1/30 times I run ⎕FIX ':namespace' '⎕←''Hello, World!''' ':endnamespace' I get the attached aplcore
@Dennis Ouch, that's some hammering. And yes, that is very strange. Could there be some partial swapping with faulty swapping-back going on? When everything is swapped together, no misalignments happen… Just brainstorming here.
Damn C# 8 preview release requiring visual studio, not letting it work with the CLI compiler *grumble grumble* I'd build Roslyn from source if there weren't 145 branches--I have no idea which one is the most recent preview
@Adám The trigger, anyway. I'm using stdbuf (via LD_PRELOAD) to disable buffering, so aborting a request will still print all output up to that point. Unsetting it before launching the APL wrapper seems to fix that.
@Dennis Oh, now I get it. So APL doesn't cope well with its output being captured as it is produced, rather than buffered and delivered as a whole. Right?
I decompiled the C# 8 preview, extracted the compiler out of the visual studio extension package, recompiled it, and got... the standard Roslyn compiler that supports up to C# 7.3.
It only took me a solid 15 minutes to figure out how to compile the implementation of Ranges, which depends on System.Span<T> from System.Memory, which is supposed to be part of C# 7.2 but is delegated to a nuget package.
I'll add it to the msbuild packages while I'm at it.
Honestly the whole thing where they release major langauge features as optional nuget packages confuses the hell out of me.
@Pavel For x86, I just compiled the official coreutils and saved the resulting libstdbuf.so in the appropriate location. Anyway, since Dyalog APL is x64, that shouldn't matter.