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.
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 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 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 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 mentioned several Modula-3 projects he and his students have been working on:
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:
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.
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.
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.
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.
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:
In the first two cases, the options are selected through a GUI interface with checkboxes.
[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 heydonCopyright (C) 1992, 1996, Digital Equipment Corporation. All rights reserved.