~hutzdog/LAAL

A modulear, portable, and flexible programming language toolset
~hutzdog/LAAL

New ticket tracker added

2 years ago
~hutzdog/laal-discuss

New mailing list added

2 years ago

#LibLAAL - A generic programming langage syntax

builds.sr.ht status

#Description

LAAL is a simple syntax for expressing programmes targeted at a variety of purposes. It provides a means to represent programmes both in memory and in text, means to convert between these representations, and means to translate programmes in memory into the data structures a language may use in memory. It is conceptually similar to the Racket, Rebol, and Red languages, but tries to attack the problem through modular and composable design rather than pure homoiconacy.

#Status: Pre-Alpha

  • The API could change at any time, and the language is far from ready for production use

#Roadmap

  • [ ] Stage 1: bootstrap
    • [x] A. LibLAAL parser in C99
    • [ ] B. Systems LAAL in C99 emitting C
  • [ ] Stage 2: self-hosted
    • [ ] A. LibLAAL parser in Systems LAAL
    • [ ] B. Systems LAAL in itself
  • [ ] Stage 3: scripting implementation
    • [ ] A. LibLAARS scripting runtime/VM in Systems LAAL
    • [ ] B. Scripting LAAL in Systems LAAL
  • [ ] Stage 4: tooling
    • [ ] A. LAAB build system (supersceding Muon for building LAAL)
    • [ ] B. LAAD markup (supersceding POD for docs)
    • [ ] C. LibTAAL editor tooling (supersceding handwritten tooling for LAAL)
  • [ ] Unknown
    • [ ] LibLAAG code generator (possible backends: QBE, C, WASM)
      • Postponed until further understanding is gained and Systems LAAL is self-hosted

#Requirements

LibLAAL is written in portable C99 and uses Muon (a C implementation of Meson, though the original can be used) to build. Build dependencies are as follows:

  • Any C99 compatible compiler
    • NOTE: Hints for gcc/clang and msvc can be enabled in configuration
  • Samurai (or any other Ninja-compatible build tool)
  • Muon (or any Meson implementation)
    • NOTE: Some debugging tools require the use of Meson, and Muon does not yet have an uninstall target. If these are important, use the original.
  • Just (optional, used for build scripts)
  • Vagrant (optional, used for development)

#Building

#Configuration

See meson_options.txt

#Build

# or `just setup build`
muon setup build
samu -C build

#Run Tests

# or `just test`
muon -C build test

#Install

  • NOTE: Since Muon does not support the uninstall target currently, you'll probably want to do this using meson install for now
muon -C build install

#Contributing

LAAL is managed on Sourcehut. You can find the project page here, where you can find the other projects, mailing lists, and ticket system. Patches are sent to the ~hutzdog/laal-devel@lists.sr.ht mailing list (see man.sr.ht for more info), the archive of which can be viewed here.

#Licensing

The source code of this repository is mostly licensed under the Mozilla Public License v2.0, the terms of which can be found in LICENSE.

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.