Categories

Blogroll

Search

OCaml 3.11.0-beta1 Uncommitted

November 10th, 2008 by and tagged , ,

Story on Nabble here. Release note highlights:

Objective Caml 3.11.0:
———————-

(Changes that can offend bing programs are marked with a “*” )

Language features:
– Addition of slothful patterns: “lazy ” twins suspensions whose values,
after haling, mate the pattern.
– Introduction of secret abbreviation types “type t = secret “,
for swiping the literal plain type in type abbreviations.

Compilers:
* The file name for a compilation unit must correspond to a valid identifier
(no more “test-me.ml” or “my file.ml”.)
* Revised -output-obj: the output name must at present be allowed; its
extension must be one of.o/.obj,.so/.dll, or.c for the
bytecode compiler. The compilers can at present bring about a partaken in library
(with all the taken -ccopts/-ccobjs options) straight off.
– With -dtypes, record (in.annot files) which function calls off
are tail calls.
– All compiler error messages at present admit a file name and location.
– Optimized compilation of “work-shy e” when the argument “e” is
already valued.
– Optimized compilation of equality tests with a variant incessant constructor.
– The -dllib options recorded in libraries are no longer disregarded when
-use_runtime or -use_prims is expended (unless -no_auto_link is
explicitly expended).
– Match that at most one of -pack, -a, -partaken, -one hundred, -output-obj is
given on the command line.
– Optimized compilation of secret types as veritable plain types
(e.g. abbreviation to swim, swim array or record types with only
swim fields).

Live Support Software
jbTop is Jabber/XMPP based Live Support Solution for your websites.

Aboriginal-code compiler:
– A newfangled option “-partook” to grow a plugin that can be dynamically
loaded with the aboriginal version of Dynlink.
– A newfangled option “-nodynlink” to enable optimizations valid alone for code
that is ne’er dynlinked (no more-op except for AMD64).
– More belligerent unboxing of floats and packaged integers.
– Can select with assembler and asm options to use at configuration time.

Run-time system:
– Changes in freelist management to deoxidize fragmentation.
– Newfangled implementation of the page table lining the heap (a thin
hashtable substitutes a dull bitvector), fixes issues with address
space randomization on 64-bit OS (PR#4448).
– Newfangled “generational” API for registering ball-shaped memory roots with the GC,
enables faster scanning of globose roots.
(The functions are caml_*_generational_spherical_root in.)
– Newfangled function “caml_raise_with_args” to upraise an exception with several
arguments from C.
– Changes in implementation of active linking of C code:
under Win32, expend Alain Frisch’s flexdll implementation of the dlopen
API; under MacOSX, expend dlopen API or else of MacOSX bundle API.

Live Person: Live Chat Solution for Online Customer Service on Website.

Received library:
– Parsing library: newfangled function “set_trace” to programmatically turn over
on or off the printing of a trace during parsing.
– Printexc library: newfangled functions “print_backtrace” and “get_backtrace”
to get a stack backtrace of the most latterly upraised exception.
Newfangled function “record_backtrace” to turn over the exception backtrace mechanism
on or off from within a program.
– Scanf library: debunking of meta format implementation;
fscanf behaviour revisited: solely one input buffer is allocated for any
imparted input channel;
the %n conversion does not depend a lookahead character as studyed.

Other libraries:
– Dynlink: on some platforms, the Dynlink library is at present usable in
aboriginal code. The boolean Dynlink.is_native provides the program to
cognize whether it has been compiled in bytecode or in aboriginal code.
– Bigarrays: imparted “insecure_get” and “unsafe_set”
(non-bound-ascertaining versions of “get” and “set”).
– Bigarrays: transfered limitation “array dimension – Labltk: brought support for TK 8.5.
– Num: imparted conversions between large_int and int32, nativeint, int64.
More effective implementation of Num.quo_num and Num.mod_num.
– Threads: bettered efficiency of mutex and condition varying operations;
bettered interaction with Unix.fork (PR#4577).
– Unix: bestowed getsockopt_error generating type Unix.error.
Contributed support for TCP_NODELAY and IPV6_ONLY socket options.
– Win32 Unix: “pick out” nowadays backs up all kinds of file descriptors.

Tools:
– ocamldebug today supported under Windows (MSVC and Mingw ports),
but without the replay feature. (Contributed by Sylvain Le Gall
at OCamlCore with support from Lexifi.)
– ocamldoc: newfangled option -no-module-constraint-filter to let in functions
hidden by signature constraint in documentation.
– ocamlmklib and ocamldep.prefered today uncommitted under Windows ports.
– ocamlmklib no longer underpins the -implib option.
– ocamlnat: an data-based aboriginal toplevel (not built by default).

Bug fixes:
– Major GC and heap compaction: fixated bug taking work-shy values and
out-of-heap pointers.
– PR#3915: updated some man pages.
– PR#4261: type-checking of recursive modules
– PR#4308: best stack backtraces for “ad-lib” exceptions such as
Stack_overflow, Away_of_memory, etc.
– PR#4338: Str.orbicular_substitute, Str.spherical_replace and the Str.*split*
functions are nowadays tail-recursive.
– PR#4503: fixated bug in class_be adrift on ARM.
– PR#4512: type-checking of recursive modules
– PR#4517: crash in ocamllex-brought forth lexers.
– PR#4542: problem with return value of Unix.skillful.
– PR#4557: type-checking of recursive modules.
– PR#4562: unusual %n semantics in scanf.
– PR#4564: add together note “stack is not practicable” to object files generated by
ocamlopt (Linux/x86, Linux/AMD64).
– PR#4566: bug in Ratio.approx_ratio_fixate and Num.approx_num_fix.
– PR#4582: uncanny behaviour of String.index_from and String up.rindex_from.
– PR#4583: stack overflow in “ocamlopt -g” during closure conversion pass.
– PR#4585: ocamldoc and “val practical” declarations.
– PR#4587: ocamldoc and turned tail @ characters.
– PR#4605: Buffer.add together_substitute was sometime incorrect when target string had backslashes.
– PR#4614: Discrepant declaration of CamlCBCmd in LabelTk library.

Nowadays for some inauspicious news:

Aboriginal dynlink utilised to work on Mac OS X

The white solution to get to natdynlink work on late Mac OS X systems (beside convincing Apple to bear out the honest-to-god behavior of their linker in their newfangled implementation) is to interchange OCaml’s x86 backend so that it develops only PIC code (this has been done for the AMD64 port). I don”t think there is currently any plan to work on that.

Ouch, this makes it almost a dead end for us. I can volunteer some time to help in this effort, working in the port, or puting up feedback. The aboriginal dynlink and toplevel are, at least to me, the killer features in 3.11, but adding together another hole for Mac OS X intel (in addition to not holding x86_64) does not appear like the betterest choice for an increasingly democratic architecture.

Well, we’d very much like to sustain aboriginal dynlink on OS X 10.5, but Apple is not helping in the least by laming their linker compared with the one in 10.4. If anyone from Apple is on this list, find detached to touch us at caml-devel@… for more information on this regression.

So it appears like OCaml requires help along two dimensions: support for the X86_64 in worldwide, and support for Position-Main Code (PIC) in special. At least on the PIC side, we can steal from the AMD64 port.

I’m Moving Tenacious Right Today

Posted in Technology | Comments Off

Create a free edublog to get your own comment avatar (and more!)

Comments are closed.