[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 ----- |