On this page:
Programming Language Technology for Niche Platforms
6.5

Programming Language Technology for Niche Platforms

Tero Hasu

This is a collection of software packages that I created with niche platform application development in mind. The collection consists of Erda, Illusyn, Konffaa, and Magnolisp. The software revisions as documented here are compatible with each other, and also match the discussion in my dissertation “Programming Language Technology for Niche Platforms.”

    1 Magnolisp

      1.1 Magnolisp the Language

      1.2 Modules and Macros

      1.3 Syntactic Forms

        1.3.1 Defining Forms

        1.3.2 Annotations

        1.3.3 Type Expressions

        1.3.4 Value Expressions

        1.3.5 Racket Forms

      1.4 Runtime Library

      1.5 Core Magnolisp

        1.5.1 Magnolisp Built-Ins

        1.5.2 Magnolisp Core Syntax

        1.5.3 Fully Expanded Programs

      1.6 Evaluation

      1.7 Magnolisp-Based Languages

      1.8 Compiler API

      1.9 mglc

      1.10 Example Code

      1.11 Source Code

      1.12 Installation

      1.13 License

    2 Illusyn

      2.1 Concrete AST Node Types

        2.1.1 View Structure

      2.2 AST Node Abstract Interfaces

      2.3 AST Serialization

      2.4 Traversing and Rewriting

        2.4.1 Abstraction over Concrete Term Specifics

          2.4.1.1 Lenses

        2.4.2 Visits

        2.4.3 Rewriting Strategies

          2.4.3.1 Primitive Strategies

          2.4.3.2 Primitive Strategy Combinators

          2.4.3.3 High-Level Strategy Combinators

        2.4.4 Sub-Term Pruning Strategies

      2.5 Examples

      Bibliography

    3 Erda

      3.1 ErdaRVM

        3.1.1 Modules and Macros

        3.1.2 Defining Forms

          3.1.2.1 Alerts

        3.1.3 Expressions

        3.1.4 Standard Library

      3.2 ErdaRVMσ

      3.3 ErdaC++

        3.3.1 C++ Translation Advising Annotations

      3.4 ErdaGA

        3.4.1 Inspecting and Using History

        3.4.2 Contracts

      3.5 Example Code

      3.6 Source Code

      3.7 Installation

      3.8 License

    4 Konffaa

      4.1 Variant Specification Language

      4.2 Command-Line Interface

      4.3 Shell Completion

      4.4 License

Installation

Racket version 6.3 or higher is required to run the software. The software has been tested with version 6.5 only.

With Racket (and its raco command) installed, the software packages are installable with the commands

raco pkg install https://www.ii.uib.no/~tero/pltnp/magnolisp.tgz

raco pkg install https://www.ii.uib.no/~tero/pltnp/erda.tgz

raco pkg install https://www.ii.uib.no/~tero/pltnp/konffaa.tgz

The above commands should install the software libraries, any associated command-line tools, and an offline copy of HTML documentation.

Note that installing the magnolisp package also installs Illusyn, which is not presently available standalone. The magnolisp package does not include Illusyn documentation; if desired, a local copy of the documentation may be installed separately with the command

raco pkg install https://www.ii.uib.no/~tero/pltnp/illusyn.tgz

Source Code

Source code for the software packages is hosted on GitHub, and may be browsed at

License

The software is for the most part licensed under the MIT license, but see the individual packages’ documentation for more details about licensing.

Contents

Illusyn is currently only available as part of the Magnolisp language implementation. Magnolisp makes extensive use of the Illusyn library, and can therefore be regarded as a sample application for Illusyn. With Magnolisp installed, it is possible to use the Illusyn library from other applications as well, without having to install a separate copy.