[Structio-prog] [xavier.leroy@inria.fr: [Caml-list] Objective Caml 3.07 final release]
Brought to you by:
vtamara
|
From: Vladimir <vt...@in...> - 2003-10-01 11:01:12
|
Algunos programas de Structio (markup, repasa y sigue) est=E1n en Ocaml=20
y funciona con Ocaml 3.06.
repasa y sigue emplean Markup. En pruebas que hice con la
versi=F3n beta de 3.07 no funcion=F3 Markup, puede ser por cambios en
ocamlyacc (markup cambia un archivo generado por ocamlyacc).
----- Forwarded message from Xavier Leroy <xav...@in...> -----
Date: Mon, 29 Sep 2003 17:37:33 +0200
From: Xavier Leroy <xav...@in...>
To: cam...@in...
Subject: [Caml-list] Objective Caml 3.07 final release
The long-awaited final release of Objective Caml version 3.07 is now
available from
http://caml.inria.fr/ocaml/distrib-3.07.html
Some of the highlights in this release include:
- Experimental support for recursive module definitions.
- "Private types", i.e. variant or record types that can be destructured
but not constructed outside of their defining module.
- Browsing of inferred types (point to an expression in the source
code and see its inferred type).
- AMD64 (Opteron/Athlon64) port of the native-code compiler.
A detailed list of changes is appended below.
Many thanks to the beta testers who gave this release a good shake.
Enjoy,
- Xavier Leroy, for the Objective Caml team.
Objective Caml 3.07:
--------------------
Language features:
- Experimental support for recursive module definitions
module rec A : SIGA =3D StructA and B : SIGB =3D StructB and ...
- Support for "private types", or more exactly concrete data types
with private constructors or labels. These data types can be
de-structured normally in pattern matchings, but values of these
types cannot be constructed directly outside of their defining module.
- Added integer literals of types int32, nativeint, int64
(written with an 'l', 'n' or 'L' suffix respectively).
Type-checking:
- Allow polymorphic generalization of covariant parts of expansive=20
expressions. For instance, if f: unit -> 'a list, "let x =3D f ()"
gives "x" the generalized type forall 'a. 'a list, instead of '_a list
as before.
- The typing of polymorphic variants in pattern matching has changed.
It is intended to be more regular, sticking to the principle of "closin=
g
only the variants which would be otherwise incomplete". Two potential
consequences: (1) some types may be left open which were closed before,
and the resulting type might not match the interface anymore (expected =
to
be rare); (2) in some cases an incomplete match may be generated.
- Lots of bug fixes in the handling of polymorphism and recursion inside
types.
- Added a new "-dtypes" option to ocamlc/ocamlopt, and an emacs extension
"emacs/caml-types.el". The compiler option saves inferred type informa=
tion
to file *.annot, and the emacs extension allows the user to look at the
type of any subexpression in the source file. Works even in the case
of a type error (all the types computed up to the error are available).
This new feature is also supported by ocamlbrowser.
- Disable "method is overriden" warning when the method was explicitely
redefined as virtual beforehand (i.e. not through inheritance). Typing
and semantics are unchanged.
Both compilers:
- Added option "-dtypes" to dump detailed type information to a file.
- The "-i" option no longer generates compiled files, it only prints
the inferred types.
- The sources for the module named "Mod" can be placed either in Mod.ml o=
r
in mod.ml.
- Compilation of "let rec" on non-functional values: tightened some check=
s,
relaxed some other checks.
- Fixed wrong code that was generated for "for i =3D a to max_int"
or "for i =3D a downto min_int".
- An explicit interface Mod.mli can now be provided for the module obtain=
ed
by ocamlc -pack -o Mod.cmo ... or ocamlopt -pack -o Mod.cmx ...
- Revised internal handling of source code locations, now handles
preprocessed code better.
- Pattern-matching bug on float literals fixed.
- Minor improvements on pattern-matching over variants.
- More efficient compilation of string comparisons and the "compare" func=
tion.
- More compact code generated for arrays of constants.
- Fixed GC bug with mutable record fields of type "exn".
- Added warning "E" for "fragile patterns": pattern matchings that would
not be flagged as partial if new constructors were added to the data ty=
pe.
Bytecode compiler:
- Added option -vmthread to select the threads library with VM-level
scheduling. The -thread option now selects the system threads library.
Native-code compiler:
- New port: AMD64 (Opteron).
- Fixed instruction selection bug on expressions of the kind (raise Exn)(=
arg).
- Several bug fixes in ocamlopt -pack (tracking of imported modules,
command line too long).
- Signal handling bug fixed.
- x86 port:
Added -ffast-math option to use inline trigo and log functions.
Small performance tweaks for the Pentium 4.
Fixed illegal "imul" instruction generated by reloading phase.
- Sparc port:
Enhanced code generation for Sparc V8 (option -march=3Dv8) and=20
Sparc V9 (option -march=3Dv9).
Profiling support added for Solaris.
- PowerPC port:
Keep stack 16-aligned for compatibility with C calling conventions.
Toplevel interactive system:
- Tightened interface consistency checks between .cmi files, .cm[oa] file=
s
loaded by #load, and the running toplevel.
- #trace on mutually-recursive functions was broken, works again.
- Look for .ocamlinit file in home directory in addition to the current d=
ir.
Standard library:
- Match_failure and Assert_failure exceptions now report
(file, line, column), instead of (file, starting char, ending char).
- float_of_string, int_of_string: some ill-formed input strings were not
rejected.
- Added format concatenation, string_of_format, format_of_string.
- Module Arg: added new option handlers Set_string, Set_int, Set_float,
Symbol, Tuple.
- Module Format: tag handling is now turned off by default,
use [Format.set_tags true] to activate.
- Modules Lexing and Parsing: added better handling of positions
in source file. Added function Lexing.flush_input.
- Module Scanf: %n and %N formats to count characters / items read so far=
;
assorted bug fixes, %! to match end of input. New ``_'' special
flag to skip reresulting value.
- Module Format: tags are not activated by default.
- Modules Set and Map: fixed bugs causing trees to become unbalanced.
- Module Printf: less restrictive typing of kprintf.
- Module Random: better seeding; functions to generate random int32, int6=
4,
nativeint; added support for explicit state management.
- Module Sys: added Sys.readdir for reading the contents of a directory.
Runtime system:
- output_value/input_value: fixed bug with large blocks (>=3D 4 Mwords)
produced on a 64-bit platform and incorrectly read back on a 32-bit
platform.
- Fixed memory compaction bug involving input_value.
- Added MacOS X support for dynamic linking of C libraries.
- Improved stack backtraces on uncaught exceptions.
- Fixed float alignment problem on Sparc V9 with gcc 3.2.
Other libraries:
- Dynlink:
By default, dynamically-loaded code now has access to all
modules defined by the program; new functions Dynlink.allow_only
and Dynlink.prohibit implement access control.
Fixed Dynlink problem with files generated with ocamlc -pack.
Protect against references to modules not yet fully initialized.
- LablTK/CamlTK: added support for TCL/TK 8.4.
- Str: reimplemented regexp matching engine, now less buggy, faster,
and LGPL instead of GPL.
- Graphics: fixed draw_rect and fill_rect bug under X11.
- System threads and bytecode threads libraries can be both installed.
- System threads: better implementation of Thread.exit.
- Bytecode threads: fixed two library initialization bugs.
- Unix: make Unix.openfile blocking to account for named pipes;
GC bug in Unix.*stat fixed; fixed problem with Unix.dup2 on Windows.
Ocamllex:
- Can name parts of the matched input text, e.g.
"0" (['0'-'7']+ as s) { ... s ... }
Ocamldebug:
- Handle programs that run for more than 2^30 steps.
Emacs mode:
- Added file caml-types.el to interactively display the type information
saved by option -dtypes.
Win32 ports:
- Cygwin port: recognize \ as directory separator in addition to /
- MSVC port: ocamlopt -pack works provided GNU binutils are installed.
- Graphics library: fixed bug in Graphics.blit_image; improved event hand=
ling.
OCamldoc:
- new ty_code field for types, to keep code of a type (with option -keep-=
code)
- new ex_code field for types, to keep code of an exception
(with option -keep-code)
- some fixes in html generation
- don't overwrite existing style.css file when generating HTML
- create the ocamldoc.sty file when generating LaTeX (if nonexistent)
- man pages are now installed in man/man3 rather than man/mano
- fix: empty [] in generated HTML indexes
-------------------
To unsubscribe, mail cam...@in... Archives: http://caml.inr=
ia.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr=
/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
----- End forwarded message -----
|