Previous week Up Next week


Here is the latest Caml Weekly News, for the week of June 28 to July 05, 2011.

  1. ocaml-curses for Windows
  2. OCaml release 3.12.1
  3. OCamlSpotter patch for OCaml 3.12.1
  4. Other Caml News

ocaml-curses for Windows


José Romildo Malaquias asked and Jérémie Dimino replied:
> I am looking for an Ocaml curses library that works in Windows.

I am writing the lambda-term library which is a curses library that
works on Unix and Windows:

It is not yet released but it is already usable.
José Romildo Malaquias then said and Jérémie Dimino replied:
> How should lambda-term be compiled? What pre-requisites are needed?

The pre-requisites are the following:

- lwt:
- camomile:
- zed:

To compile the development version, you need to get oasis
(, and run:

$ oasis setup
$ ocaml -configure
$ ocaml -build
$ ocaml -install
Gerd Stolpmann also replied:
It's not exactly curses, but in ocamlnet there are a number of bindings
for console functions:

Look for has_console and the following functions. These should give you
full control over the console screen.

OCaml release 3.12.1


Damien Doligez announced:
Dear OCaml users,

We have the pleasure of celebrating Independence Day by announcing
the release of OCaml version 3.12.1.
This is mainly a bug-fix release, see the list of changes below.

It is available here:

This is released as source for the time being, but the binary
versions should be available soon.

We would like to take the opportunity to thank all the packagers
out there who make this easy to install for end users without
recompiling.  We are still looking for volunteers for the Windows
binaries (except the cygwin version).

There are two installation problems with this version:

1. The mingw port is broken.  We will probably publish a patch within
   a few weeks.

2. Also, if you install in cygwin on top of an earlier version, you
   will have to remove /usr/local/bin/ocamlmktop.exe before typing
   "make install".

Happy hacking,

-- Damien Doligez for the OCaml team.

Objective Caml 3.12.1:

Bug fixes:
- PR#4345, PR#4767: problems with camlp4 printing of float values
- PR#4380: ocamlbuild should not use tput on windows
- PR#4487, PR#5164: multiple 'module type of' are incompatible
- PR#4552: ocamlbuild does not create symlinks when using '.itarget' file
- PR#4673, PR#5144: camlp4 fails on object copy syntax
- PR#4702: system threads: cleanup tick thread at exit
- PR#4732: camlp4 rejects polymorphic variants using keywords from macros
- PR#4778: Win32/MSVC port: rare syntax error in generated MASM assembly file
- PR#4794, PR#4959: call annotations not generated by ocamlopt
- PR#4820: revised syntax pretty printer crashes with 'Stack_overflow'
- PR#4928: wrong printing of classes and class types by camlp4
- PR#4939: camlp4 rejects patterns of the '?x:_' form
- PR#4967: ocamlbuild passes wrong switches to ocamldep through menhir
- PR#4972: mkcamlp4 does not include 'dynlink.cma'
- PR#5039: ocamlbuild should use '-linkpkg' only when linking programs
- PR#5066: ocamldoc: add -charset option used in html generator
- PR#5069: fcntl() in caml_sys_open may block, do it within blocking section
- PR#5071, PR#5129, PR#5134: inconsistencies between camlp4 and camlp4* 
- PR#5080, PR#5104: regression in type constructor handling by camlp4
- PR#5090: bad interaction between toplevel and camlp4
- PR#5095: ocamlbuild ignores some tags when building bytecode objects
- PR#5100: ocamlbuild always rebuilds a 'cmxs' file
- PR#5103: build and install objinfo when building with ocamlbuild
- PR#5109: crash when a parser calls a lexer that calls another parser
- PR#5110: invalid module name when using optional argument
- PR#5115: bytecode executables produced by msvc64 port crash on 32-bit 
- PR#5117: bigarray: wrong function name without HAS_MMAP; missing include
- PR#5118: Camlp4o and integer literals
- PR#5122: camlp4 rejects lowercase identifiers for module types
- PR#5123: shift_right_big_int returns a wrong zero
- PR#5124: substitution inside a signature leads to odd printing
- PR#5128: typo in 'Camlp4ListComprehension' syntax extension
- PR#5136: obsolete function used in emacs mode
- PR#5145: ocamldoc: missing html escapes
- PR#5146: problem with spaces in multi-line string constants
- PR#5149: (partial) various documentation problems
- PR#5156: rare compiler crash with objects
- PR#5165: ocamlbuild does not pass '-thread' option to ocamlfind
- PR#5167: camlp4r loops when printing package type
- PR#5172: camlp4 support for 'module type of' construct
- PR#5175: in bigarray accesses, make sure bigarray expr is evaluated only 
- PR#5177: Gc.compact implies Gc.full_major
- PR#5182: use bytecode version of ocamldoc to generate man pages
- PR#5184: under Windows, alignment issue with bigarrays mapped from files
- PR#5188: double-free corruption in bytecode system threads
- PR#5192: mismatch between words and bytes in interpreting max_young_wosize
- PR#5202: error in documentation of atan2
- PR#5209: natdynlink incorrectly detected on BSD systems
- PR#5213: ocamlbuild should pass '-rectypes' to ocamldoc when needed
- PR#5217: ocamlfind plugin should add '-linkpkg' for toplevel
- PR#5228: document the exceptions raised by functions in 'Filename'
- PR#5229: typo in build script ('TAG_LINE' vs 'TAGLINE')
- PR#5230: error in documentation of Scanf.Scanning.open_in
- PR#5234: option -shared reverses order of -cclib options
- PR#5237: incorrect .size directives generated for x86-32 and x86-64
- PR#5244: uses polymorphic compare_val (regression of PR#4194)
- PR#5248: regression introduced while fixing PR#5118
- PR#5252: typo in docs
- PR#5258: win32unix: unix fd leak under windows
- PR#5269: (tentative fix) Wrong ext_ref entries in .annot files
- PR#5272: caml.el doesn't recognize downto as a keyword
- PR#5276: issue with ocamlc -pack and recursively-packed modules
- PR#5280: alignment constraints incorrectly autodetected on MIPS 32
- PR#5281: typo in error message
- PR#5308: unused variables not detected in "include (struct .. end)"
- camlp4 revised syntax printing bug in the toplevel (reported on caml-list)
- configure: do not define _WIN32 under cygwin
- Hardened generic comparison in the case where two custom blocks
  are compared and have different sets of custom operations.
- Hardened comparison between bigarrays in the case where the two
  bigarrays have different kinds.
- Fixed wrong autodetection of expm1() and log1p().
- don't add .exe suffix when installing the ocamlmktop shell script
- ocamldoc: minor fixes related to the display of ocamldoc options
- fixed bug with huge values in OCAMLRUNPARAM
- mismatch between declaration and definition of caml_major_collection_slice

Feature wishes:
- PR#4992: added '-ml-synonym' and '-mli-synonym' options to ocamldep
- PR#5065: added '-ocamldoc' option to ocamlbuild
- PR#5139: added possibility to add options to ocamlbuild
- PR#5158: added access to current camlp4 parsers and printers
- PR#5180: improved instruction selection for float operations on amd64
- stdlib: added a 'usage_string' function to Arg
- allow with constraints to add a type equation to a datatype definition
- ocamldoc: allow to merge '@before' tags like other ones
- ocamlbuild: allow dependency on file "_oasis"

Other changes:
- Changed default minor heap size from 32k to 256k words.
- Added new operation 'compare_ext' to custom blocks, called when
  comparing a custom block value with an unboxed integer.

OCamlSpotter patch for OCaml 3.12.1


Jun Furuse announced:
An OCaml source browsing tool, OCamlSpotter 1.3.0 is out.
With OCamlSpotter, you can easily jump to identifier uses to the
corresponding definitions, resolving module inclusion and functor
applications. For further info, please check ;.

This release is an update version for OCaml 3.12.1. It requires
compiler modification. The modified compiler source and OCamlSpotter
is found at:

The diff against the original 3.12.1 can be easily obtained from the
bitbucket repo by hg diff -r ocaml-3.12.1-11110 -r
v3.12.1-ocamlspot-1.3.0 .

Other Caml News

From the ocamlcore planet blog:
Thanks to Alp Mestan, we now include in the Caml Weekly News the links to the
recent posts from the ocamlcore planet blog at

l-bfgs 0.5:

OCaml CSV 1.2.2:

Comparison of OCaml and other languages:

Objective Caml 3.12.1 released:



using ocamlinit and tip on macos:

Old cwn

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.

Alan Schmitt