This is some software and documentation that I’ve written or that needed a new home.
Here is a patch and instructions for cross-building a MS Windows/Cygwin bootstrap for the Polytechnique Montreal Modula-3 (PM3) distribution from Elegosoft, which is a slighly modified version of the last Polytechnique Montreal Modula-3 distrubtion. The current PM3 distribution doesn’t build on the current version of Cygwin because of minor changes in Cygwin.
Here is a bootstrap distribution of PM3 that will build correctly under current versions of Cygwin and will build PM3 correctly under Cygwin. You’ll need to use steps 12 through 19 from the instructions in the patch in the previous paragraph.
The distribution is a gzipped tar file. It includes two modules:
There are the results and a short explanation (in postscript and PDF) of some benchmarking I did that shows that the Cpsio functions are faster than the equivalent OCaml printf functions in byte-code, and often faster in native-code, despite doing more garbage collecting. Results are also compared to the equivalent C printf functions.
Both modules have (rough) Ocamldoc documentation. The distribution also includes test/example/benchmark programs for both Cpsio and Cpsio_exp, and benchmark programs for comparing against OCaml and C printf-style output. Perfomance with the bytecode compiler mostly seems slightly faster than the OCaml printf, while performance with the native code compiler seems to range from slower than the OCaml printf to barely faster than the OCaml printf.
I do not claim that this code is most elegant or most efficent implementation of this idea.
I would welcome comments on the code.
The Cpsio software is in the public domain.
This code is based on the code in Henry G. Baker’s article “Pragmatic Parsing in Common Lisp”, ACM LISP Pointers IV, 2 (April-June 1991), 3-15. However, any errors are mine; inefficencies too. There have been some minor changes and additions from the code in that article. You can download the original paper from Henry Baker’s home page. I have local links to the html and compressed postscript versions of the paper available on this site, as well. (There’s a Dylan implementation of this in the contributions section of the Gwydion Dylan site, somewhere.)
I’m making the last release (0.93) of the youtoo implementation of EuLisp from Andreas Kind and others at the University of Bath available for download here, along with the EuLisp Definition version 0.99 in dvi and postscript format since their original ftp directory disappeared sometime around 10 May 2002. Note that the online version of the EuLisp definition (which is incomplete, but has changes since the 0.99 version) is still available at the original site as of 13 May 2002.
I’ve run it recently on FreeBSD 4.7 and reasonably recently on Linux and on Cygwin under Windows NT/2000, so if you have difficulty getting it to run you can send me e-mail. (Note that the distribution doesn’t explicitly support FreeBSD and Cygwin, so you’ll need to hack that a bit, or e-mail me for the minor changes necessary.) Although it’s not necessary for building a working youtoo system, if you need to bootstrap it from the EuLisp source files you’ll need some additional tools that were accidently left out of the original distribution, and I have reverse engineered versions of those.
I have hastily converted the EuLisp Definiton, version 0.99, to PDF. There were some font renaming warnings, but I haven’t seen anything grossly wrong yet.