Hello
Here is the latest Caml Weekly News, for the week of 31 May to 07 June, 2005.
Archive: http://caml.inria.fr/pub/ml-archives/caml-list/2005/05/a73b2155e460db4b5837c8bae9a9d16c.en.html
Maas-Maarten Zeeman announced:I'd like to announce OUnit-1.0.2, an OCaml unit-testing framework similar to JUnit. http://www.xs4all.nl/~mmzeeman/ocaml/
Archive: http://caml.inria.fr/pub/ml-archives/caml-list/2005/06/4aea71c2bbabefa531eba0a4beae6ba1.en.html
Samuel Mimram announced:The 0.3.0 version of ocaml-ssl is out. This library consists in bindings to the open-ssl library to handle secure communications. You can find it here: http://savonet.sf.net/ The main improvement of this version is that functions are provided to make the library thread-safe (see the Ssl_threads.init function). It is also more cooperative with threads (blocking sections everywhere). Bugs were corrected and some functions were reorganized (small API breakage, sorry). It is released under the GPL license + openssl exception (though, I could make it LGPL if someone really needs that). Feel free to mail me if you've got any comment, bug, etc.
Archive: http://caml.inria.fr/pub/ml-archives/caml-list/2005/06/f057b97bcb05dd893e0b88900e4ae692.en.html
James Woodyatt announced:Today, my OCaml Network Application Environment (NAE) project is releasing another maintenance update of its core foundation library. As the project page on SourceForge.Net says, OCaml NAE is "a collection of Objective Caml libraries to support the development of concurrent, single-threaded Internet application servers." For downloads and more information, please see: http://sf.net/projects/ocnae/ The Cf library was formerly known as the Pagoda Core Foundation, but it was never connected with the Pagoda project on SourceForge and should not be confused with it. An excerpt of the README file and the complete CHANGES record for this release are below. ===== OCaml NAE Core Foundation (cf) library ===== This distribution is the Objective Caml Network Application Environment (NAE) Core Foundation library, which is a collection of miscellaneous extensions to the Objective Caml standard library. Highlighted features include: - Functional streams and stream processors (extended). - Functional bootstrapped skew-binomial heap. - Functional red-black binary tree (associative array). - Functional sets based on red-black binary tree. - Functional real-time catenable deque. - Functional LL(x) parsing using state-exception monad. - Functional lazy deterministic finite automaton (DFA). - Functional lexical analyzer (using lazy DFA and monadic parser). - Functional substring list manipulation (message buffer chains). - Gregorian calendar date manipulation. - Standard time manipulation. - System time in Temps Atomique Internationale (TAI). - Unicode transcoding. - Extended socket interface (supports more options, and UDP w/multicast). - Universal resource identifier (URI) manipulation. - I/O event multiplexing (with Unix.select). Note: see the ISSUES file for a list of open problems in this release. ===== Required Components ===== This library requires the following external components: - Objective Caml (v3.08.3 or newer) - Findlib (tested with v0.8.1 and v1.0.4) Principal development was on Mac OS X 10.3. The final version of this library also compiled successfully and passed all self-tests without warnings on Suse Linux 9.0 for x86-32. Other platforms with POSIX-like environments should require only a minimal porting effort. One major open issue: the extended socket interface is broken under WIN32. (The author invites help porting the library to other environments.) ===== Version 0.6 ===== Highlights of the changes: + More bugs fixed (some critical). --- [Cf_rbtree] Fix bug in [Map.insert] that failed to replace nodes when the key specifies a node that is already in the map. (Thanks to Craig Falls, once again, for finding this bug.) --- [Cf_dfa] Improved lazy DFA module with a better functorial interface, to allow for more efficient symbol maps (to support, e.g. wide character lexers) and to decouple the symbol type from the cursor type, so that Cf_parser.X can be used easily in place of Cf_parser. --- [Cf_dfa, Cf_lexer] Fixed the documentation for the [( $@ )] operator to reflect the actual behavior. When the action parser does not accept the recognized sequence, then no other rule is selected and no other action functions are executed. --- [Cf_lexer] Updated to use the new [Cf_dfa] interface, though it is now deprecated in favor of the new, improved [Cf_lex] module (see below). --- [Cf_uri] Updated to use the new [Cf_lex] in place of the deprecated [Cf_lexer]. --- [various .c files] Rename custom data tags from 'pagoda' to 'ocnae'. + New functions. --- [Cf_rbtree, Cf_set, Cf_map] Add [of_list_incr], [of_list_decr], [of_seq_incr] and [of_seq_decr], which are optimized for lists and sequences known to be in increasing or decreasing order. These functions were derived from code contributed by Brian Hurt (thanks!) and implement a variant on Hinze's algorithm: http://citeseer.ist.psu.edu/hinze99constructing.html --- [Cf_set] Add [size] function. --- [Cf_seq] Add [nil] value. Add [flatten] function. Requires Ocaml-3.08 now. --- [Cf_flow] Add [commute_string] function. --- [Cf_parser] Add [of_extended] and [to_extended] functions. Add [req] parser, an efficient shortcut for [alt (p :: err f :: [])]. Add [Error] exception for generic unparameterized errors. Add [altz] parser for match from a sequence (instead of a list) of choices. --- [Cf_scan_parser] Change [scanf] to return an ordinary Cf_parser.t function. Add [scanfx] to return a Cf_parser.X.t function. --- [Cf_regex] New module for regular expression parsing, matching and search. --- [Cf_lex] A new and improved lexical analysis module, with an interface derived from the now deprecated [Cf_lexer]. It offers a more flexible interface to the underlying [Cf_dfa] module, and its [( !~ )] and [( !$ )] operators parse their string arguments as regular subexpressions with the format defined in the new [Cf_regex] module. --- [README] Fixed an embarrassing word-choice bug, i.e. principle vs. principal.
Archive: http://caml.inria.fr/pub/ml-archives/caml-list/2005/06/d3d5a8fd96d6a14f15abd3a7e8d79ec4.en.html
Pierre-Etienne Meunier announced:I am proud to announce the first release of Caml2TeX, an application that produces LaTeX2e code from caml (OCaml, Caml light) source files. Available at : http://martin.jambon.free.fr/caml2html.html Since I wrote it very quickly from the Caml2html code, it may still have a few bugs, but it worked for the caml files I did it for. My main goal when I wrote it was to avoid creating a new LaTeX package. It makes my TeX files very portable : you dont need to install anything to compile the documents. Known bugs : - The standard Caml functions are not recognized as functions by Caml2TeX - The functions following '#' (OCaml objects) are not recognized as functions - I write my Caml code with emacs, which produces weird indentations, badly detected by Caml2TeX - If argument 'a' is passed to function 'f', and 'a' is already declared as a function, 'a' is considered a function in 'f', but it should be considered an argument. In my opinion, it should lead to a bug in the caml compiler : how do you use function 'a' in 'f' ?
Archive: http://caml.inria.fr/pub/ml-archives/caml-list/2005/06/15438b9533d0ad65791ba292e41b2598.en.html
Robby Findler announced:Think your favorite programming language is the best one out there? Put it to the test in this year's International Conference on Functional Programming's annual Programming Contest. The contest is coming up in a little under 4 weeks and we have just released more information (including a live cd, mailing list, and prize details) to the web page, at: http://icfpc.plt-scheme.org/ This year's competition rewards programmers who can plan ahead. As before, we'll announce a problem and give you three days to solve it. Two weeks later, we'll announce a change to the problem specification and give you one day to adapt your program to the new spec. And you guessed it: the second half will be worth considerably more than the first. Important dates: Problem announced: Friday, June 24th, 9:00am CDT (UTC-5) Initial entries due: Monday, June 27th, 9:00am CDT (UTC-5) Revision announced: Saturday, July 9th, 9:00am CDT (UTC-5) Final entries due: Sunday, July 10th, 9:00am CDT (UTC-5)
Here is a quick trick to help you read this CWN if you are viewing it using vim (version 6 or greater).
:set foldmethod=expr
:set foldexpr=getline(v:lnum)=~'^=\\{78}$'?'<1':1
zM
If you know of a better way, please let me know.
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.