1995 Modula-3 Users Group Meeting

The fourth Modula-3 users group meeting was held Tuesday, 17-Oct-95, at the OOPSLA '95 conference in Austin, Texas. There were about 30 people in attendence.

This year's meeting was organized by Farshad Nayeri and Geoff Wyant. Contact either of them if you have any questions or are interested in future Modula-3 users group meetings. The eye-catching annoucement for the 1995 meeting is available on-line.

Presentations

Here is a list of speakers and a summary of what they presented:
Allan Heydon - Digital Systems Research Center (SRC)

Allan discussed two topics: the status of Modula-3 at SRC, and the Juno-2 constraint-based drawing editor [1].

The status of Modula-3 at SRC has changed recently because Bill Kalsow, the implementor of the SRC Modula-3 compiler, has left SRC for family reasons to live in Minnesota. But Modula-3 is still in use at SRC, and the SRC Modula-3 compiler has been stable and correctly compiling millions of lines of code for quite a while. Although active development within SRC of the Modula-3 development environment will cease, we are still answering m3-request mail, incorporating bug fixes and enhancements submitted by outside users, coordinating external efforts to port SRC Modula-3 to other platforms, and making new releases of the system.

Allan also gave a brief demonstration of Juno-2, a constraint-based drawing editor that he implemented with Greg Nelson. Juno-2 is written entirely in Modula-3. The demo was given on a Pentium-based laptop running LINUXELF. For more information on Juno-2, see the Juno-2 Home Page and the article on the Juno-2 user interface in the first issue of Threads, the Modula-3 newsletter.

Blair MacIntyre - Columbia University

Blair gave a demonstration of his "augmented reality" system. Wearing a head-mounted display that reports three degrees of freedom (pitch, roll, and yaw), he showed a simple application in which the user is situated at the center of a compass, and various cities in the application's database appear as pyramids at the correct compass points (this is possible because the yaw value reported by the head-mounted display is an actual compass measurement).

The system is implemented in Modula-3 and Obliq, giving the programmer a toolkit that provides language-level support for building distributed virtual environments. The programmer can implement their applications in Obliq, Modula-3 or any combination thereof since all toolkit objects (such as trackers and graphical objects) are accessible from both languages. Data distribution is almost entirely transparent, encouraging the programmer to make heavy use of threads communicating via shared objects.

His system is based on the distributed data-object paradigm for distributed shared memory. He implemented a SharedObj package, similar in flavour to Modula-3 Network Objects, which allows any data object to be declared as a shared object that is replicated fully in any process that is interested in it. These shared objects support asynchronous data propagation with atomic serializable updates, and asynchronous notification of updates. To accomplish this, he relied on existing Modula-3 packages, especially Network Objects and Obliq-3D.

Jeff Dean - University of Washington

Jeff reported on the Cecil/Vortex work going on at the University of Washington to improve the performance of object-oriented programs through whole-program analysis [2]. There was an OOPSLA technical talk on the system earlier that day [3]. Among other languages (Cecil, C++, and Java), they are also building a Modula-3 front-end for their Vortex compiler.

Lauren Schmitt - Critical Mass

Lauren announced the formation of the company Critical Mass, which will be selling commercial versions of Modula-3. Their first product, Photon, is a development environment for Modula-3. The first release of Photon for Linux will be available sometime this December for $49.

Michel Dagenais - Ecole Polytechnique de Montreal

Michel Dagenais mentioned several Modula-3 projects he and his students have been working on:

LINUXELF backend (work with Jerome Collin)

Michel has recently released a native-code generator for the LINUXELF platform. At the meeting, Farshad Nayeri showed how quickly the backend compiled the Juno-2 application. Because it does not have to go through the filesystem and does not use gcc to generate code, compilers with native-code generators (namely, the LINUXELF and NT386 platforms) run significantly faster than other platforms. For example, a 486-based machine running Windows NT compiles code 4 times faster than an Alpha, even though the Alpha processor is twice as fast.

Michel reports that they still have some work to do on the LINUXELF backend:

  • generate position-independent code (for shared libraries)
  • generate debugging symbols
  • generate the equivalent of the current m3main.c file directly in the back-end

m3build2 + m3 (work with Jerome Collin)

M3build2 is the name of a program that integrates the current m3build program with the quake interpreter (used by m3build to evaluate m3makefiles). Michel and Jerome are further integrating m3build2 with the m3 compiler itself into a single process.

As part of the M3 Lite project at SRC, Bill Kalsow had eventually hoped to integrate all these programs and to turn them into a server process that could cache the AST's of imported interfaces across builds. Michel thinks that he and Jerome may go as far as making such an M3 compiler server.

m3tohtml and htmltolatex (with Martin Gagnom)

One nice feature of SRC Modula-3 is that interfaces are the man pages. The current m3totex program, written by Greg Nelson, can be used to convert a Modula-3 interface into a printed document. Bill Kalsow wrote a program called m3browser that serves up Modula-3 interfaces and implementations as Web pages. One problem with this approach is that the current interfaces contain limited amounts of embedded LaTeX code, which the m3browser program does not know how to format.

Michel and Martin are converting all the current Modula-3 interfaces to use HTML tags instead of LaTeX. They are also implementing tools based on m3totex and m3browser. The m3tohtml program converts a Modula-3 interface to HTML; the htmltolatex program can then be used to produce printed output. These tools will improve the format of the Modula-3 on-line documentation.

Modula-3 port to OS/2 (with Louis Dominique Dubeau)

Louis is porting Modula-3 to OS/2. This does not include a port of Trestle, the Modula-3 graphics/window system. The port should be complete very soon.

CanvasVBT (with Benoit Poirier)

A CanvasVBT is a Trestle window that visualizes a display list. A display list represents a sequence of graphics operations; they have a program for converting PostScript to this representation. They also have a simple direct-manipulation editor for CanvasVBT's.

Modula-3 Development Environment for Novices

Michel has been working on customizing emacs to create a Modula-3 environment that will be easier for novices to use. For example, he has menu commands for:

  • invoking m3build (with optional profiling and coverage analysis)
  • running a program (with option of running showheap, shownew, etc.)
  • easily searching the on-line interface documentation and Modula-3 language definition
  • pretty-printing Modula-3 code
  • showing a FormsVBT form

In the first two cases, the options are selected through a GUI interface with checkboxes.

References

[1] "The Juno-2 Constraint-Based Drawing Editor", Allan Heydon and Greg Nelson, Research Report 131a, Systems Research Center, Digital Equipment Corporation.

[2] Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis, Jeffrey Dean, David Grove, and Craig Chambers. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP '95), Århus, Denmark, August 1995.

[3] "Profile-guided receiver class prediction", David Grove, Jeffrey Dean, Charles Garrett, and Craig Chambers, In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA '95), Austin, Texas, October, 1995, pgs. 108-123.

Last modified on Tue Jun 11 09:17:38 PDT 1996 by heydon
Copyright (C) 1992, 1996, Digital Equipment Corporation. All rights reserved.
See the COPYRIGHT for a full description.