Subject: Modula-3 compiler, tools and libraries for LINUX
From: [email-masked] (Michel Dagenais)
Date: 12 Jul 1994 15:19:34 GMT
Newsgroups: comp.os.linux.announce

It is available for FTP from ftp.vlsi.polymtl.ca:pub/m3/linux.

From the LSM:

Title        = SRC Modula-3 compiler, libraries and tools
Version      = 3.3 linux 0
Desc1        = Compiler, tools, applications and libraries for Modula-3,
Desc2        = a simple and efficient modular, imperative language.
Desc3        = Modula-3 has objects, threads, exceptions and generics.
Desc4        = The libraries include X toolkits, a user interface builder,
Desc5        = an embedded interpreted language and network objects.
Author       = DEC Systems Research Center (LINUX compiled by Michel Dagenais)
AuthorEmail  = [email-masked]
Site1        = gatekeeper.dec.com (sources only)
Path1        = pub/DEC/Modula-3/release-3.3
File1        = *.tar.gz
Site2        = ftp.vlsi.polymtl.ca (linux binaries)
Path2        = pub/m3/linux
FileSize2    = 20MB uncompressed, 50MB unstripped with static libs
Required1    = gcc, preferably X11
CopyPolicy1  = see copyright, freely usable and redistributable
Keywords     = Modula-3 threads graphics network objects modular compiler
Comment1     = With 20MB you get a lot of stuff, including graphical animations
Comment2     = for several algorithms, for teaching purposes. A usable system
Comment3     = can probably fit in about 10MB.
Entered      = 09JUL94
EnteredBy    = Michel Dagenais
CheckedEmail = [email-masked]
End

>From the FAQ:

  The language definition and documentation for most of the libraries is
  now available on the World Wide Web (thus accessible through Mosaic)

  <A HREF=http://www.research.digital.com/SRC/modula-3/html/home.html>Modula-3 Home </A>

  The  goal  of	Modula-3 is to be as simple and safe as it can be while
  meeting the needs of modern systems programmers.  Instead of exploring
  new  features,  they	studied	the  features	of  the Modula family of
  languages that  have	proven	themselves  in	practice  and  tried  to
  simplify them into a harmonious language.  They found that most of the
  successful features were aimed at  one  of  two  main	goals:	greater
  robustness, and a simpler, more systematic type system.

  Modula-3  retains  one  of  Modula-2's  most	successful features, the
  provision for explicit interfaces between modules.   It  adds	objects
  and  classes,	exception  handling,  garbage	collection,  lightweight
  processes (or threads), and the isolation of unsafe features.

  The SRC Modula-3 release 3.3 contains the following:

  o  A native code compiler: uses the GCC backend; on machines/operating
     systems  that  have  self-describing stacks, an optimized exception
     handling	mechanism   is	provided,   on	other	architectures,
     setjmp/longjmp is used.

     The  compilation  system  provides for minimal recompilation.  Only
     those units that depend on the  modified  interface  item	will  be
     recompiled.

  o  m3utils/m3build:  tool that performs dependency analysis and builds
     the Modula-3 programs and libraries.

  o  A large standard library (libm3)  providing

  o  A	multithread,  incremental,  generational,  conservative	garbage
     collector

  o  Text manipulation.

  o  Generic   Containers:   Lists,   Sequences,   Tables,  SortedLists,
     SortedTables

  o  Atoms and Symbolic expressions (Lisp like lists)

  o  An extensible stream IO system

  o  Typesafe binary object transcription (persistent objects)

  o  Operating system interfaces

  o  Portable interfaces to the language runtime

     All standard libraries are thread-friendly.  Modula-3  can	readily
     link  with existing C libraries; many libraries including X11R4 and
     various UNIX libraries are available as part of libm3.

  o  m3gdb: a Modula-3 aware version of GDB.

  o  trestle: a multi-threaded window system interface that sits on  top
     of	X  windows.  It is not unlike InterViews and comes with several
     sample programs.

  o  trestle/tcp: a library for simplified access to TCP/IP.

  o  vbtkit: a higher  level  toolkit  on  top	of  Trestle.  It  offers
     buttons, menus, editors, file choosers... and has a Motif-like look
     and feel.

  o  formsvbt:	an  interactive	user  interface  builder.  A	symbolic
     expression	representing  the  user  interface  is	edited	and the
     graphical view is immediately produced.

  o  tools/coverage:  tool  to	determine  the	number	of  times   each
     statement is executed.

  o  tools/pp: pretty printer for Modula-3 programs.

  o  tools/gnuemacs:  emacs  lisp  files  to  help editing and debugging
     Modula-3 programs in emacs.

  o  tools/m3bundle: tool to bundle data files	into  an  executable  to
     produce standalone programs.

  o  tools/m3totex: extract TeX documentation from Modula-3 programs for
     a form of literate programming.

  o  tools/showheap: tool to graphically see the behavior of the garbage
     collector.

  o  tools/shownew: tool to graphically see the allocation behavior of a
     running program.

  o  tools/showthread: tool to	see  the  activation  of  threads  in  a
     running program.

  o  zeus:  framework  to  develop  graphical  animations  of algorithms
     (heapsort, quicksort, LRU cache replacement, network  protocols...)
     for visualization and teaching purposes.

  o  mentor: a dozen of animations developed using Zeus.

  o  netobj:  network  objects	that  allow the transparent execution of
     methods across process and machine boundaries. A  simple  yet  very
     effective way to build distributed applications.

  o  obliq:  simple,  interpreted,  lexically  scoped,	object oriented,
     distributed programming language that can be embedded  in	Modula-3
     programs  and  call/be-called  by	Modula-3  procedures.  The Obliq
     object model is based on prototypes and delegation.

  o  A framework for parsing and analyzing Modula-3 programs. This is  a
     complete  AST  toolkit  for  Modula-3.  This  can	parse  arbitrary
     Modula-3 sources (input isn't required to be a complete  unit)  and
     produce  detailed ASTs representing the input. The ASTs can be used
     to do a variety of semantic analysis tasks, or  program  generation
     tasks similar to Lisp environments. (m3tk).

  o  pkgtools/smalldb: library to store objects on disk with logging and
     recovery capabilities.

  o  pkgtools: distribution tool that insures that several copies  of  a
     package (software, document...) are updated simultaneously.

  o  postcard: mail and news reading environment.

  o  visualobliq:  a  graphical	user  interface  builder coupled with a
     simple  yet  powerful  interpreted	language,  Obliq,   for   rapid
     development of interactive distributed applications.

  o  This  is  a rather new component and is undergoing a fair amount of
     evolution; however, it is still very useful and  exciting.	Visual
     Obliq  provides an application builder similiar in nature to Visual
     Basic. However, it uses Obliq  as	its  scripting	language.   This
     makes  it	easy  to build and prototype interesting distributed and
     groupware applications. It can be used for building non-distributed
     applications as well.

  o  misc/tcl: interface to access the Tcl language from Modula-3.

  o  misc/dps: interface to access Display Postscript from Modula-3.

  o  games: more sample Trestle applications.

--

Prof. Michel Dagenais			    [email-masked]
Dept of Electrical and Computer Eng.
Ecole Polytechnique de Montreal		    tel: (514) 340-4029

--
Mail submissions for comp.os.linux.announce to: [email-masked]
PLEASE remember Keywords: and a short description of the software.