Hi GCC Steering Committee!

Please consider accepting into GCC this new -- old?  ;-) -- Algol 68
front end (awaiting conclusion of the ongoing technical review), and
appointing José as its maintainer.  (At FOSDEM last weekend, we were
briefly discussing this contribution, and I offered to raise and champion
this formality, which he was happy to hear.)


Grüße
 Thomas


On 2025-01-01T03:09:44+0100, "Jose E. Marchesi" <jose.march...@oracle.com> 
wrote:
> Hello people, happy GNU year!
>
> This WIP is a GCC front-end for Algol 68, the fascinating, generally
> poorly understood and often vilified programming language.  It is
> common knowledge that Algol 68 was well ahead of its time back when it
> was introduced, and anyone who knows the language well will suspect
> this probably still holds true today, but more than fifty years after
> the publication of the Revised Report the world may finally be ready
> for it, or perhaps not, we shall see ;) At the very least having
> support in GCC will make it easier for Algol 68 enthusiasts to write,
> share and use their programs in modern systems.
>
> This is work in progress, but the front-end can already compile most
> of the main language constructs and many full programs.
>
> Most of the predefined operators provided by the standard prelude are
> still missing.  Adding these is a matter of filling in the gaps and
> should not require any fundamental change in the implementation.
>
> There is no transput, so the programs that can currently be compiled
> and ran are not terribly useful since they cannot operate on files.  A
> proper transput implementation that integrates well in modern POSIX
> systems is in the works.
>
> The Revised Report didn't concern itself with mundane topics as
> separated compilation, so at this point each compilation unit is a
> full program.  Early Algol 68 compilers supported separated
> compilation, each on its own way.  The WG 2.1 also produced a proposal
> for a standard modules system for Algol 68, never implemented to my
> knowledge.  A proper modules system is also in the works.
>
> The goal is for GNU Algol 68 to be a strict super-language of Algol
> 68, as blessed by the Report.
>
> At this point I am confident the implementation is viable and it is
> reasonable to continue the development in public without risking
> wasting anyone's time in vaporware.
>
> Speaking about the implementation.
>
> This is my first GCC front-end and I am still only moderately familiar
> with the applicable lore.  Up to now I have focused in functionality
> rather than efficiency in order to assess the feasibility of the task
> and to get something working and suitable to be published.  Therefore
> there are many parts of the implementation that are crude and can be
> made smarter, and places where I may have simply used the wrong
> approach, out of ignorance.  The FE is also awfully slow and I haven't
> paid much attention to not leak memory.  All of this will be fixed.
> In the meanwhile any feedback from actually knowledgeable FE gurus
> would be highly appreciated!
>
> The parser used in this front-end has been borrowed and adapted from
> Algol 68 Genie, an Algol 68 interpreter written by Marcel van der
> Veer.  It is worth noting that this parser is not your typical garden
> variety parser, as it is capable of effectively parsing the two-level
> grammar of Algol 68, which is no small deal.  Parsing Algol 68 is
> notoriously difficult, and without Marcel's careful work of many years
> this front-end would most probably not exist.  It is also a beautiful
> implementation that is a delight to both read and work with.  I
> certainly have learned a lot from it.  The syntax tree built by the
> parser is then lowered into a GENERIC tree by a lowering pass, which
> then invokes the gimplifier and hands the resulting gimple IR over to
> the rest of the compilation, down the rabbit hole all the way to
> optimized assembly code.
>
> The DWARF currently generated by the compiler is not very useful.
> Emitting DWARF that accurately describes the Algol 68 data structures
> is still to be done.  As is GDB support and its corresponding
> expressions parser, which by the way will be lots of fun to do,
> considering the language in question ^^
>
> The mangling of symbols is currently very dumb.  This is because we
> need to design and decide on a separated compilation model first in
> order to determine what information to encode in the symbols.
>
> The compiler driver is called `gac', for GNU Algol 68 Compiler.
> The compiler proper is called `a681'.
> The run-time library is called `libgac'.
>
> The front-end includes a testsuite for catching regressions, as well
> as an user manual and an internals manual, all of which is being
> expanded as the work progresses.  A couple of tests are currently
> failing, sorry about that.
>
> Note that auto re-generated files like configure are not included in
> the series to not bloat the emails.  These can be re-generated
> normally using autoreconf and the like.  I have also dispensed with
> ChangeLog entries in this WIP patch series, as well as with detailed
> commit messages.  These will be incorporated in a subsequent version
> if/when the front-end gets officially proposed for incorporation in
> GCC.
>
> All the C and C++ code is formatted following the GNU Coding
> Standards.
>
> The original parser is copyright Marcel van der Veer.  The rest of the
> code is either copyright of yours humble or boilerplate taken from
> other GCC front-ends.  All the code is licensed under GPLv3+, with the
> GCC Runtime Library exception for run-time components.  The manuals
> are licensed under the GNU FDL like the rest of the documentation
> shipped with GCC.
>
> As to where to host the project, the obvious choice is perhaps a
> project at sourceware, but it would be nice if we could develop the
> front-end in a branch in the GCC git repo, to have a mailing list
> under gcc.gnu.org and to use a page in the GCC wiki to track the FE
> progress... please let me know if that is feasible.
>
> An Emacs mode for editing Algol 68 programs can be found at
> https://git.sr.ht/~jemarch/a68-mode.  It supports automatic
> indentation, pretty-printing of bold tags, an auto-stropping minor
> mode and other useful features.
>
> The Algol 68 Jargon File at https://jemarch.net/a68-jargon aims to
> provide a comprehensive list of definitions for technical and
> non-technical terms used in the context of Algol 68, which are many.
> It contains few entries at the moment but I am progressively expanding
> it as time allows.
>
> Finally, I am using the #gnualgol channel in irc.oftc.net.  Everyone
> is welcome to join and have fun with Algol 68.
>
> Salud!
>
> PS: many thanks to Iain, Andrew, Segher and others for their help and
>     patience answering my FE related n00b questions in the IRC
>     channel.  You are the best.

Reply via email to