This is the source package for the BLISS compiler, a portable cross-compiler for the BLISS programming language. Visit the project website for more information about BLISS.
There are a number of reasons why I wanted to write a BLISS compiler. The top ones are:
- When I worked at DEC on the IBM Interconnect product set, the OpenVMS versions of these products, all 14 of them, were written in BLISS.
- I also wrote and SDL compiler, OpenSDL, that will eventually generate BLISS REQUIRE output files, and I wanted a way to be able to test them.
- I love the BLISS way of defining MACROs. The fact that a MACRO can refer to itself, as well as other MACROs and vice versa, is incredibly powerful.
- I have never written a compiler before and was recently introduced to LLVM, so it seems like a good place to start.
There are a few BLISS compilers out there:
- The original, which only runs on OpenVMS (VAX, Alpha, and IA64), OpenVMS Freeware CD V8.0
- A FreeVMS Portable BLISS for GCC - ftp://freevms.nvg.org/pub/vms/freevms/bliss
- One implemented by VMS Sofware - VSI June 2019 OpenVMS Roadmap).
- One written by Matt Madison The BLISS-M Compiler Project
Work in progress. This is, in effect, a re-implementation of the BLISS-M compiler project for more information. BLISS-M was written in C and to LLVM 3.9-5.0. This implementation will be written in C++ and to LLVM 8.0-9.0 (and possibly 10.0) and support any available LLVM enhancements.
Known to build Ubuntu 19.04 and later (64-bit).
The code generator uses LLVM 8.0, 9.0 or 10.0, which you can download directly from llvm.org. On Ubuntu systems, you can install one of the llvm-dev packages using apt.
The build system uses CMake 3.13 or later.
- Clone the repository.
- cd to the top-level source directory and create a build directory.
- cd to your build directory.
- Run
cmake ..
. - Run
make
to build the compiler. - Run
make check
to test the built compiler.
The build will produce a program called bliss in your build
directory. Run ./bliss --help
for a description of the arguments
and options.
There is a lot more yet to do on this project! If you are interested in contributing, contact me (JonathanBelanger on GitHub, or by e-mail at jbelanger at rochester dot rr dot com).
All sources are released under the GPL 3.0 license. See the LICENSE file for the license text.