From APL Wiki
Revision as of 00:11, 10 April 2024 by Marshall (talk | contribs) (→‎Log-on APL: Condense)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

APL2 is the family of APL implementations using the nested array model, first released by IBM in 1984. The name stands in contrast to "APL1", which is taken to include all prior IBM APLs such as APL\360, APL.SV, and VS APL. Development was led by Jim Brown, who began work in 1971 based on his just-published Ph.D. thesis.[1] In addition to nested arrays and primitives to support them such as Depth and Enlist, APL2 includes new primitives such as Find and Index, and stranded and selective assignment. APL2 was available for mainframe computers running z/OS or z/VM and workstations running AIX, Linux, Sun Solaris, and Microsoft Windows.

APL2's extensions to ISO 8485:1989 formed the basis of ISO/IEC 13751:2001. APL2 supports entry of complex numbers in the following forms:

  1. Real and imaginary part separated by the letter J and no spaces, e.g. 0J1
  2. Magnitude and angle in degrees separated by the letter D and no spaces, e.g. 1D90
  3. Magnitude and angle in radians separated by the letter R and no spaces, e.g. 1R1.5708

No further core language features have been added, with improvements instead consisting of powerful Quad names.


APL2's development was directed by Jim Brown, who wrote the first lines of the yet-to-be-named product in 1971.[1] At this time Brown had worked in various roles at IBM, and just completed his Ph.D. at Syracuse, with a thesis "A Generalization of APL"[2] on the topic of nested APL. While his work was informed by discussions with Trenchard More and others at Watson Research Center, he had not been allowed access to internal IBM papers on nested arrays, on the grounds that the thesis might leak their content. After completing the thesis, Brown learned the details of More's "Array Theory", particularly prototypes, and adopted them as the eventual model for APL2.[3] Brown also adopted More's generalization of strand notation allowing the elements to be any arrays, not just numbers.

IBM released a prototype for APL2, called the Installed User Program (IUP), in 1982. STSC had made its own experimental nested system, NARS, public just the previous year. Dyalog APL had just entered development (although it would not be considered an important implementation until the 1990s); based both on NARS and IBM publications,[4] it was released before the final APL2. The IUP used flat versions of Outer Product, Inner Product, and Reduction because of the advocacy of Adin Falkoff and Ken Iverson (Iverson left IBM for IPSA in 1980). Due to general user experience and a personal visit by NARS development manager Bob Smith, Brown changed them back to the nested definitions used now before finalizing APL2.[3]

The APL2 IUP was released as an experimental product so that the APL community could take part in the language design. I was amazed that we got such a product through the IBM bureaucracy and doing so was largely due to the efforts of Karen Riley and Ed Altman, the first two lines of management. I don't consider the experiment a success because people immediately went into production with the IUP making further changes painful. We nevertheless made any change that we felt made the notation more correct, more complete, or more usable.

Jim Brown[3]

APL2 was released in 1984, and was the subject of several presentations at the APL84 conference. Because of IBM's stature, it was often considered the authoritative nested APL; later, it would serve as the primary (but not only) influence on the Extended APL standard ISO/IEC 13751:2001. In 1987, APL2 became the first major dialect to implement namespaces. Jim Brown was awarded the Iverson Award in 1993, and the entire APL2 Products and Services Team was the recipient in 2007.

Log-on APL

In January 2021, IBM announced that it would discontinue offering and supporting APL2 as a product;[5] in its place the compatible Log-On APL2 would be be distributed by American-Israeli business partner Log-On Software, with initial release scheduled for April 2021.[6] Log-On stated in November that they had been able to build APL2 from IBM's sources and begun testing, with plans to get community and user feedback for desired features and publish re-branded documentation.[7] In 2022 Log-On announced the general availability of APL2 version 3.03 for workstations, which introduced support for HTTPS websites and Windows 11.[8]


  1. 1.0 1.1 Jim Brown. APL Wiki user page
  2. Jim Brown. "A Generalization of APL". 1971.
  3. 3.0 3.1 3.2 Jim Brown. The Origins of APL2 at APL94.
  4. Stephen Taylor. "How we got here". Vector journal Volume 23 special supplement "Dyalog at 25". 2008-09.
  5. IBM. Software withdrawal and support discontinuance: IBM APL2, IBM APL2 Application Environment, and IBM Workstation APL2 for Multiplatforms. IBM Europe Withdrawal Announcement ZP21-0096. January 26, 2021.
  6. Mark Schora. Log-On Software Announces Log-On APL2. Log-On Press Releases. Jan 26, 2021.
  7. Werner Zülli. Log-On APL2: Plans and Questions. GSE Herbsttagung 2021. APL Germany.
  8. Mark Neeman (Log-On Software Director Products Sales). Log-On APL2 GA v. 3.03. Email to the APL2 community. Apr 19, 2022.
APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000Pometo
Historical A Programming LanguageA+ (A) ∙ APL#APL2CAPL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXExtended Dyalog APLIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyK (Goal, Klong, Q) ∙ KamilaLispLang5LilNialRADUiua
Overviews Comparison of APL dialectsTimeline of array languagesTimeline of influential array languagesFamily tree of array languages