This page is about the development and maintenance of the Algol 68 front-end in GCC.

Milestones

More recent first.

Contact

Git Repositories

Until we integrate in GCC proper the front-end lives in:

The Autoconf supports lives in:

Building, Testing and Running

See the README file in the source distribution for instructions on how to build the ga68 compiler and run the testsuites.

Quick recipe:

$ git clone https://forge.sourceware.org/jemarch/a68-gcc.git
$ cd a68-gcc
$ git checkout a68
$ ./contrib/download_prerequisites
$ mkdir build-algol68
$ cd build-algol68
$ ../configure --enable-languages=algol68
$ make
$ make pdf
$ make html
$ make check-algol68
$ make install

We can then compile and run a suitable "Hello world":

$ cat hello.a68
PROGRAM
BEGIN puts ("Hello world!\n");
      0
END
$ ga68 hello.a68
$ ./a.out
Hello world!

The user manual for the front-end gets build, in diffent formats, in:

build-a68/gcc/doc/ga68.info
build-a68/gcc/doc/ga68.pdf
build-algol68/gcc/HTML/gcc-15.0.0/ga68/index.html

The info version can be browsed with the standalone info reader or any other info browser of your choice:

$ info -f ga68.info

Using Autoconf

We added support for Algol 68 to Autoconf. If you have Algol 68 programs in your project, you can use the AC_PROG_A68 macro in configure.ac. The macro looks for a working Algol 68 compiler (which basically means the GNU compiler) and sets the variable A68. For example:

AC_INIT(...)

AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([src/config.h])
AM_INIT_AUTOMAKE

AC_PROG_A68

AC_CONFIG_FILES(Makefile src/Makefile)
AC_OUTPUT

Using Automake

We have also added support for Algol 68 to Automake, and the support is already in the git master branch upstream. If you specify files with .a68 extensions as sources then Automake will build them with A68, passing A68FLAGS. For example:

bin_PROGRAMS = myprogram
myprogram_SOURCES = myprogram.a68

Development Resources

Roadmap

This section keeps track of the language features that are still to be implemented by the front-end. Once a task is completed it gets removed from the list.

Core language

Standard prelude sans transput

Environment enquiries

Monadic operators

Dyadic operators

Assigning operators

Procedures

Extensions

These are listed from more priority to least priority.

Transput

Note that most of the transput can and should be implemented in Algol 68, so this needs support for separated compilation.

None: Algol68FrontEnd (last edited 2025-02-06 11:29:29 by JoseMarchesi)