Manchester on 8th September 2018.
The title is, ``GNU Modula-2 update, catching semantic errors post
code optimisation and improved debugging''
-[@url{http://floppsie.comp.glam.ac.uk/Papers/paper23/gaius-mulley-gnu-m2.pdf,slides}
+[@url{https://splendidisolation.ddns.net/Papers/paper23/talk.pdf,slides}
and @url{https://www.youtube.com/watch?v=6jf6weRuHjk,video}].
@item gm2 1.8.2
Hebden Bridge on 9th September 2016.
The title is, ``GNU Modula-2 status, whole
program optimisation and language interoperability''
-[@url{http://floppsie.comp.glam.ac.uk/Papers/paper22/gaius-gcc-cauldron-2016.pdf,slides}
+[@url{https://splendidisolation.ddns.net/Papers/paper22/talk.pdf,slides}
and @url{https://www.youtube.com/watch?v=8GMyxwHdr1E,video}].
@item gm2 1.1.6
was released on February 22nd 2016. gm2-1.1.6 grafts onto gcc-4.7.4.
The mailing list contents can be viewed
@url{http://lists.gnu.org/archive/html/gm2}.
-@node Other languages, Papers and talks, Community, Using
+@node Other languages, , Community, Using
@section Other languages for GCC
These exist and can be found on the frontends web page on the
@uref{http://gcc.gnu.org/frontends.html, gcc web site}.
-@node Papers and talks, , Other languages, Using
-@section Papers and talks
-
-A paper was presented at the @uref{http://www.gccsummit.org/2006,
-GCC 2006 conference} on
-@uref{http://floppsie.comp.glam.ac.uk/Papers/paper15/mulley-proc.pdf,
-the state of GNU Modula-2}.
-
-A @uref{http://www.gccsummit.org/2010/speakers.php?types=LIGHTNING,
-lightening talk} has been given at the GCC 2010 conference titled
-"Exploiting front end knowledge to effortlessly create Python modules"
-and the slides are
-@uref{http://floppsie.comp.glam.ac.uk/Papers/paper20/talk.pdf,
-available}.
-
-@node Using, , Overview, Top
+@node Using, , Community, Top
@chapter Using GNU Modula-2
@menu
* Built-ins:: Accessing GNU Modula-2 Built-ins.
* The PIM system module:: SYSTEM data types and procedures.
* The ISO system module:: SYSTEM data types, procedures and run time.
-* Papers and talks:: Papers and talks.
* Other languages:: Other languages for GCC.
* What is GNU Modula-2:: Brief description of GNU Modula-2.
* Why use GNU Modula-2:: Advantages of GNU Modula-2.
@c For copying conditions, see the file gcc/doc/include/fdl.texi.
This directory contains a PIM @code{SYSTEM} containing the
-@code{PROCESS} primitives built on top of GNU Pthreads.
-
-The justification for this approach is that it provides a
-@code{SYSTEM} compatible with Programming in Modula-2 [234] and the
-Logitech 3.0 compiler. It also allows higher level executives to be
-ported onto GM2 with little effort. The disadvantage with this
-approach is that @code{IOTRANSFER} is not
-preemptive. @code{IOTRANSFER} will only context switch when a call to
-@code{LISTEN} is made or a call to @code{SYSTEM.TurnInterrupts} is
-made.
-
-In practice this limitation can be tolerated as long as processes
-perform IO at some point (or wait for a timer interrupt) or call
-@code{SYSTEM.TurnInterrupts}. But nevertheless a @code{LOOP}
-@code{END} will starve all other processes. However the great
-advantage is that GNU Modula-2 can offer users the ability to use
-@code{IOTRANSFER}, @code{TRANSFER}, @code{NEWPROCESS} in user space,
-on a multi-user operating system and across a range of platforms.
-
-The GNU Modula-2 @code{SYSTEM} works by utilizing the user context
-switching mechanism provided by GNU Pthreads. @code{NEWPROCESS}
-creates a new context, @code{TRANSFER} switches
-contexts. @code{IOTRANSFER} is more complex. There is a support module
-@code{SysVec} which provides pseudo interrupt vectors. These can be
-created from input/output file descriptors or timer events
-@code{timeval}. This vector is then passed to @code{IOTRANSFER} which
-keeps track of which file descriptors and timevals are active. When a
-call to @code{TurnInterrupts} or @code{LISTEN} is made the sub system
-calls @code{pth_select} and tests for any ready file descriptor or
-timeout. A ready file descriptor or timeout will ultimately cause the
-backwards @code{TRANSFER} inside @code{IOTRANSFER} to take effect.
-
-See the @file{gm2/examples/executive} directory for an executive and
-timerhandler module which provide higher level process creation,
-synchronisation and interrupt handling routines. These libraries have
-been tested with the examples shown in @file{gm2/examples/executive}
-and @file{gm2/gm2-libs-coroutines}.
-
-Users of these libraries and the libraries in
-@file{gm2/examples/executive} must link their application against the
-GNU Pthread library (typically by using @code{-lpth}).
+@code{PROCESS} primitives built on top of @code{gthread}s.
#!/usr/bin/env python3
-# def2texi.py creates texi library documentation for all exported procedures.
+# def2doc.py creates texi library documentation for all exported procedures.
# Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
# Copyright (C) 2000-2022 Free Software Foundation, Inc.
output.write("@subsection " + name + "\n")
elif args.sphinx:
output.write(name + "\n")
- output.write("=" * len(name) + "\n")
+ output.write("-" * len(name) + "\n")
# displayLibraryClass - displays a node for a library directory and invokes
output.write(str.rstrip(line) + "\n")
line = f.readline()
if len(str.rstrip(line)) == 0:
- output.write(str.replace(str.replace(str.rstrip(line),
- "{", "@{"), "}", "@}") + "\n")
+ output.write("\n")
line = f.readline()
if (str.find(line, "(*") != -1):
removeFields(f, line)
output.write(str.rstrip(line) + "\n")
else:
output.write(str.rstrip(line) + "\n")
-
- line = f.readline()
+ line = f.readline()
while line:
line = str.rstrip(line)
checkIndex(line)