The first release of the APL Package Manager is now available from: https://github.com/TieDyedDevil/apl-pkg/releases/tag/Netochka
Date: 2014-08-09 Contact: [David B. Lamkins](mailto:da...@lamkins.net) Announcing the Release of APL Package Manager ============================================= The **APL Package Manager** is a tool to manage the development and deployment of APL software built from a collection of packages. In its initial release, named *Netochka*, the **APL Package Manager** supports GNU APL version 1.4 or later on GNU/Linux hosts. > GNU APL is a modern implementation of APL, based upon ISO 13751 "Programming Language APL, Extended" and IBM APL 2, with extensions to support access to the underlying platform for file and process I/O. The GNU APL ecosystem includes contributed software for access to databases (SQLite and PostgreSQL) as well as two ISO 13751 compliant component file implementations. APL processes on the same host may share variables using the standard APL ⎕SVx functions. GNU APL includes APs 100 (shared variables) and 210 (file system access). Programmers may extend GNU APL by compiling C++ native functions as shared libraries. Experimental support for multicore CPUs may be enabled when compiling GNU APL from source. Developers and users may run GNU APL using either a full-featured IDE in GNU Emacs or a more traditional APL session in a terminal window. Although APL is very good for interactive programming based upon structured datasets, the ISO/IBM version of the language lacks modern facilities for programming-in-the-large. This historical limitation fosters a culture of reinvention rather than reuse. Large software systems were built using APL in the days of top-down software management. Those days are gone. The **APL Package Manager** defines and checks a set of conventions to support reuse of code among far-flung and self-managed APLers. The central shared artifact of the **APL Package Manager** is a package. A package collects one or more cohesive APL source code files together with descriptive metadata, optional documentation and data files, optional source code files in other langagues (e.g. for building helper applications and interfaces), plus a control file to load the package; these are all located within a single directory that may be distributed as an archive file or a source code repository. In this first release, the **APL Package Manager** locates all packages within a local directory. Information collected from these packages is queried for package descriptions and documentation. Packages are loaded into the active APL workspace in much the same way as APL's `)COPY ...` command, except that loading a single package will automatically pull in all of its dependent packages. The **APL Package Manager** provides tools to support programming. A locator facility, for example, identifies the source file and line number of a loaded function and optionally opens the function in a viewer or editor; this works without the support of a separate IDE. Another tool allows listing of names specific to a particular package; this is very useful when many packages have been loaded into a workspace. Packages may be used alongside traditional APL workspace files or source code files. APL source code files are easily packaged with help from the **APL Package Manager**. The **APL Package Manager** supports deployment of completed systems. Future releases of the **APL Package Manager** will implement additional tools and features, including program analysis, version management, and remote repositories. The **APL Package Manager** is designed to support additional APL interpreters and host platforms. The **APL Package Manager** is open source software distributed under the MIT License. References ---------- 1. [APL Package Manager](https://github.com/TieDyedDevil/apl-pkg) 2. [GNU APL](http://www.gnu.org/software/apl/)