From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.6.10/8.6.6) id OAA05309 for caml-redistribution; Thu, 6 Jul 1995 14:25:38 +0200 Received: (from xleroy@localhost) by pauillac.inria.fr (8.6.10/8.6.6) id SAA28877 for caml-list@pauillac.inria.fr; Wed, 5 Jul 1995 18:19:17 +0200 From: Xavier Leroy Message-Id: <199507051619.SAA28877@pauillac.inria.fr> Subject: final release of Caml Light 0.7 To: caml-list@pauillac.inria.fr Date: Wed, 5 Jul 1995 18:19:17 +0200 (MET DST) X-Mailer: ELM [version 2.4 PL21] Content-Type: text/plain Sender: weis It is my pleasure to announce the final release of version 0.7 of the Caml Light system. It is available by anonymous FTP from: host: ftp.inria.fr (192.93.2.54) directory: lang/caml-light Summary of the files: README More detailed summary cl7unix.tar.gz Unix version (source code) cl7macbin.sea.hqx Binaries for the Macintosh version (these are fat binaries - run native on Power Macs) cl7macsrc.sea.hqx Source code for the Macintosh version cl7pcbin.zip Binaries for the 80386 PC version cl7pcsrc.zip Source code for the 80386 PC version cl7lin*.tar.gz Binaries for Linux cl7refman.* Reference manual, in various formats cl7tutorial.* Tutorial, in various formats This release fixes all known bugs from release 0.61 and has many new features, libraries and contributed tools, including a source-level replay debugger and a Tk-based graphical user interface, with application to a flashy hypertext browser for module interfaces. A detailed list of changes is included at the end of this message. All in all, this release is a major improvement in terms of reliability and comfort of use; all users of Caml Light are strongly encouraged to upgrade. Please direct bug reports and technical questions to caml-light@pauillac.inria.fr, the implementor's mailing list. General questions and comments of interest to the Caml community should be sent to caml-list@pauillac.inria.fr, the Caml mailing list. - Xavier Leroy %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The Caml Light racing team "Low tar Caml taste" % % caml-light@pauillac.inria.fr % % Caml Light, projet Cristal, INRIA, B.P.105, 78153 Le Chesnay, France. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Detailed list of changes: * Source-level debugger with replay capabilities. Compiler support for the debugger added. [Unix-only] * New contributed libraries and tools: - camltk: a complete X-windows toolkit based on TCL/TK. - camlpro: a profiler for Caml Light programs (execution counts) - lorder: determine ordering of .zo files at link-time * camlbrowser: a camltk-based graphics browser for Caml sources and interfaces, with hypertext navigation. [Unix-only] * Polymorphism is now restricted to values (let x = e generalizes the type of x only if e is syntactically a value, e.g. a constant, a variable, a function, a tuple of values, etc). This ensures correct, type-safe handling of polymorphic mutable structures. * "Guards" in pattern-matching (match ... with pat when cond -> expr). * Partial matches and unused match cases are correctly detected now. * Internationalized error messages (controlled by the LANG environment variable; known languages so far: english, french, spanish, german, and italian). More detailed error messages. * Various fixes in the garbage collector to fight fragmentation of the major heap, result in major speedups for some long-running programs. * Generic comparisons (prefix < : 'a -> 'a -> bool). Compiler optimizations for comparisons on base types. * Type-checker rewritten in bottom-up style instead of top-down style. Hopefully this makes type errors more understandable. * let rec (f : ty) = ... now supported. * New class of infix and prefix symbols supported (e.g. *=, !!, ++, with precedence/associativity determined by their first character). * Syntactic sugar: - Alternate syntax for string access and update (s.[i], s.[i] <- c). - Final semicolons permitted in sequences, lists, arrays and records (e.g. begin ...; ...; end or [1;2;]). - Initial | permitted in pattern matchings and type definitions (e.g. function | pat -> expr | ... or type t = | Cstr1 | ...) - "&&" and "||" synonymous for "&" and "or". * Optimized access to unqualified identifiers in symbol tables. * Parser cleaned up a bit, reduce/reduce conflicts eliminated. * New library modules: format (to write pretty-printers), gc (to control the garbage collector and obtain various statistics on memory allocation). * The toplevel pretty-prints values and types. * New toplevel functions: install_printer (user-defined printing functions, now type safe and associated with a type expression -- e.g. int list -- not with a type constructor -- e.g. list); set_print_depth and set_print_length (control how much is printed). * Better support for non-generalizable type variables in phrases: they no longer cause an error immediately, the check is delayed till the end of the compilation unit. * Static type-checking of printf. User-defined printers supported in printf formats (%a and %t). * "camlc -W" prints extra warnings (useless #open, capitalized variable, ...). * camlyacc: more checks on grammar for missing actions, etc. Parsing engine now reentrant; a camlyacc-generated parser can call another one in one of its actions. Bug with tokens having a tuple as semantic attribute fixed. * Better support for 64-bit architectures: 32-bit architectures can read values written on a file by a 64-bit architecture; max length of strings and arrays now determined by the runtime system. * New primitive ouput_compact_value to write arbitrary values to disk in a more compact (but more CPU-demanding) format than output_value. * More robust parsing of argv (some Unix kernels set argv[0] = argv[1] = file when a #! file is run). * CAMLRUNPARAM environment variable to set GC parameters. * contrib/libgraph: implemented alternate event handling methods if async I/O are not available; ask for system calls to be restarted if possible; restart read and write system calls if interrupted; better handling of "button up" and "mouse motion" events. * contrib/libnums: upgraded the bignum library; better 64-bit support (but still has some 64-bit bugs); alternate names for num operations (+/ -/ */ etc). Main incompatibilities with Caml Light 0.61: * Polymorphic generalization has been severely restricted to eliminate unsoundness w.r.t. polymorphic mutables. As a consequence, several "let" declarations that used to be polymorphic are now monomorphic, which may cause type errors later. See the manual p. 54 for a complete description of the problem and several workarounds. * Due to the new infix operators, extra blank space sometimes needs to be inserted, e.g. `x+!y' should now be written `x+ !y' (or better yet, `x + !y').