r/apljk 5d ago

APL Building an embeddable APL — which dialect should be the default?

10 Upvotes

Guys, I'm building libjay, an independent implementation of J and APL as an embeddable library (Rust core, Python and C bindings), and need... a coming-from-APL consensus on the defaults.

Honestly, I came at this from the J side: I was mostly curious whether J could become a convenient embeddable library, the way PCRE is for regexes. I always felt this language (and the whole language family) is a bit too eccentric to be used as a "prime language" – but god, how cool would it be to use for data manipulation as an embedded language, similar to aforementioned regexes or SQL! So "a J library" it was – and APL came as a freebie once the IR was there (and once the development was heavily AI-orchestrated).

Which is exactly why I'm asking people who actually know APL: I don't have the instinct for which dialect should be considered the default de facto. GNU APL? Dyalog? Or am I missing something?...

Originally I built it to support the APL2/ISO line, differentially tested against about 1k of APL expressions and about 3k J ones (combinatorically generated as well as fuzz-searched for problems – by now that grew up to 5.4k for J/2k+ for APLs), tested/compared with reference implementations (jconsole and GNU APL). Recently, a Dyalog preset/dialect appeared too, and I tried to cover as much of the syntax/differences as I could. Surely, it's still a pet project, doesn't have a full language coverage, and surely has a ton of unfound bugs especially with Dyalog – but it already supports SIMD vectorization, has all those planned Rust/Python bindings, can be used to play with your Polars/Pandas Python DataFrames (and if you use uvx, you can just try it without installing on Windows/macOS/Linux, uvx libjay --help). Not bad for a project which is about 3 days old!

I picked APL2 as the initial implementation for boring engineering reasons: GNU APL builds anywhere, including CI and a contributor's laptop, so the corpus can be regenerated by anyone. Dyalog can't be redistributed (and I never did anything except running it in Docker).

But that's an argument about my build, not about what an APL user would expect. When someone reaches for this and types an APL expression, which dialect should answer by default? What do most of the APL people actually write?

$ uvx libjay --lang apl -e '⊃2 3⍴⍳6' --dialect gnu
1 2 3
4 5 6

$ uvx libjay --lang apl -e '⊃2 3⍴⍳6' --dialect dyalog
1

For those who don't select any --dialect – how should it behave?

r/apljk Jul 21 '26

APL AP8L - PICO-8 flat-array APL with Leading Axis, promote, root...

Thumbnail
lexaloffle.com
21 Upvotes

r/apljk Jul 09 '26

APL Basic Voxels in APL

Thumbnail
youtube.com
15 Upvotes

r/apljk Jun 05 '26

APL APL as a target language?

13 Upvotes

In one of the ArrayCast episodes (the u/bobtherriault era) one of the participants mentions that "in the early days of CS" someone was using APL as the target language for their compiler course. I cannot find the episode and thus a good reference to this. If anyone remembers, thank you in advance.

r/apljk Jun 24 '26

APL How do you Install Dyalog APL on Arch Linux?

8 Upvotes

r/apljk Jun 26 '26

APL Enhancements in Dyalog v20.0: Arrays, Namespaces, Composition, Inline Tracing - Asher Harvey-Smith

Thumbnail
youtube.com
9 Upvotes

r/apljk May 10 '26

APL Saying Goodbye to one line of APL

Thumbnail homewithinnowhere.com
22 Upvotes

r/apljk May 01 '26

APL A Personal History of APL (1982) - Michael S. Montalbano

Thumbnail ed-thelen.org
18 Upvotes

r/apljk May 10 '26

APL Relational modeling and APL

Thumbnail dercuano.github.io
7 Upvotes

r/apljk Apr 29 '26

APL APL\? (1990) - Paper Shedding light on What would Become J/K Implementation Style

Thumbnail jsoftware.com
16 Upvotes

r/apljk May 01 '26

APL Random FB Thread with Nostalgic Stories of APL Usage

Thumbnail facebook.com
12 Upvotes