A BLISS-ful family tree

Sunday, 13 December 2009 21:52

A while back there were some posts on comp.os.vms regarding the history of Digital Equipment Corporation like, "Dave Cutler, Prism, DEC, Microsoft, etc."  This particular post covered most of the DEC userland mythology.  As usual though it is more than a little Lite on the facts.  Thankfully, this post has nothing to do with PRISM, Dave Cutler or all the other conspiracy theories.

My gripe was with some comments regarding the history of BLISS.  Those of you that know me will probably know that I have a sad, warped affection for the BLISS language.  So, after responding to that particular post I decided to knock up a family tree/timeline of BLISS.  It is much the same design as the UNIX family tree that can be found in "The Design and Implementation of the 4.4BSD Operating System".

The timeline does not show product version releases, just when the first version of that particular compiler became available.  To find out what each variant did, what it targeted and where it ran, hover over the name with the mouse cursor.

BLISS-10 is the original BLISS compiler created at CMU by Wulf, et. al.  This compiler generated native PDP-10 objects from the BLISS-10 language.
BLISS-605 was a compiler for the Honeywell 6000.  This was essentially BLISS-10 with a special linker that converted the TOPS-10 object to GCOS format.
BLISS-11 is the subject of "The Design of an Optimizing Compiler". The BLISS-11 compiler was a cross-compiler that ran on the PDP-10 and produced PDP-11 objects.
BLISS-32 targeted the Common BLISS language to the (at the time) new VAX-11 architecture.  It was originally a cross-compiler hosted on the PDP-10 that generated VAX objects.  A native variant was soon developed.  This was the first Common BLISS compiler that generated object code.
BLISS-36C is a compiler that accepts Common BLISS and produces BLISS-10 source which is then compiled by the BLISS-10 compiler to generate object.
BLISS-16C is a Common BLISS cross-compiler hosted on the PDP-10 that generated BLISS-11 source and then invoked the BLISS-11 compiler to generate PDP-11 objects.
BLISS-36 is a Common BLISS compiler that generates PDP-10 object code natively.
BLISS-16 is a Common BLISS compiler that was hosted on both the PDP-10 and VAX-11 systems producing PDP-11 object code.  It did not receive much attention on the PDP-10 and enjoyed most use on the VAX-11 which also supported the PDP-11 compatability mode.
Micro-BLISS was an attempt to create a PDP-11 native BLISS-16 compiler. Although it did work, unfortunately the PDP-11 did not offer the address space necessary and many features were left out. This compiler did not enjoy much use.
BLISS-32P was a compiler that targeted the cancelled PRISM architecture.  This was also the first GEM-based compiler.  All new BLISS compilers developed following this milestone all used the GEM backend.
BLISS-32M targeted the MIPS architecture.  This variant was a VAX hosted cross-compiler.  This compiler did not get a lot of use.  It was created to allow the Ada and FORTRAN compilers to be ported to MIPS.
DECSIM was a special VAX hosted cross-compiler that targeted DECSIM, the Alpha processor simulator.
BLISS-32E is a VAX hosted cross-compiler that targets the 32-bit OpenVMS Alpha environment.
BLISS-64E is a cross-compiler hosted on OpenVMS VAX that targets the 64-bit OpenVMS Alpha environment
BLISS-32MN was the native variant of the MIPS targeted BLISS-32M cross-compiler
BLISS-64AO was a Tru64 targeted cross-compiler
BLISS-64AW was a Windows NT Alpha targeted 64-bit cross-compiler.
BLISS-32AO was an OpenVMS VAX hosted cross-compiler targeting the Tru64 taso environment.
BLISS-32EN is a native OpenVMS Alpha compiler generating mixed 32/64-bit objects.
BLISS-32AW is an OpenVMS VAX hosted cross-compiler targeting the Windows NT Alpha environment.
BLISS-32IW was an OpenVMS VAX hosted compiler targeting the Intel IA-32 architecture running Windows 95 and NT. This compiler only supported those BLISS features necessary to get a working Windows-based Fortran 90 product.
BLISS-64AON is the native Tru64 variant of the BLISS-64AO cross-compiler.
BLISS-64AWN was the native Windows NT Alpha variant of the BLISS-64AW.
BLISS-32AON is the Tru64 native variant of the BLISS-32AO cross-compiler.
BLISS-32AWN is the Windows NT Alpha native variant of the BLISS-32AW cross-compiler.
BLISS-32IWN is the native Windows variant of the BLISS-32IW cross-compiler.
BLISS-64ANAU was a compiler targeting the unreleased Alpha-based Tandem/NonStop systems.
BLISS-64AT was an Alpha Linux compiler used to port the GEM-based FORTRAN 90, C and C++ compilers.
BLISS-64EN is a native OpenVMS Alpha compiler generating clean 64-bit objects.
BLISS-64I is an OpenVMS Alpha hosted cross-compiler generating objects for OpenVMS I64.
BLISS-64IN is a native OpenVMS I64 variant of the BLISS-64I cross-compiler.
BLISS-32I is an OpenVMS Alpha host cross-compiler generating mixed 32/64 bit objects for OpenVMS I64
BLISS-32IN is a native OpenVMS I64 variant of the BLISS-32I cross-compiler.


This article has been composed of information gathered from the BLISS source code library history and the articles listed below.

  1. R. F. Brender, "Generation of BLISSes," in IEEE Transactions on Software Engineering, vol. SE-6, Nov. 1980.
  2. R. F. Brender, "The BLISS Programming Language: A History," Aug. 2000
  3. S. O. Hobbs, "Re: BLISS-16 availability?", posted to comp.os.vms 2nd June 1995
  4. M. K. McKusik, K. Bostic, M. J. Karels, J. S. Quaterman, "The Design and Implementation of the 4.4BSD Operating System". Addison-Wesley, 1996.


The BLISS family tree has been developed with the help of the following websites and utilities:

  • A More Accessible Map by Seth Duffey for the layout of the map;
  • Dia on Windows was used to build the tree diagram; and
  • The GIMP was used to size, crop and make the image transparent.