Here is the latest Caml Weekly News, for the week of 26 July to 02 August, 2005.
Gmane being down at the time of this writing, there are no archive links in this issue.
Today, the OCaml Network Application Environment (NAE) has released maintenance updates of two of its published libraries. As its 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 two libraries updated in this release are the Core Foundation (cf) and the Reactive I/O Monad (iom). The cf library was formerly known as the Pagoda Core Foundation. The complete CHANGES records for both libraries since their previous releases follows excerpts of the README files. ===== 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 v1.0.4) Principal development was on Mac OS X 10.3 and Mac OS X 10.4 w/ XCode 2.1 using GCC 4.0. The final version of this library also compiled successfully and passed all self-tests without warnings on Suse Linux 9.2 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.) ===== OCaml NAE Reactive I/O Monad (iom) library ===== This distribution is the Objective Caml Network Application Environment (NAE) Reactive I/O Monad library, which implements I/O monad functions designed to facilitate writing of concurrent, reactive, single-threaded network application services in a functional style. 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 (v1.0.4) - OCaml NAE Core Foundation (cf-0.7) Principal development was on Mac OS X 10.3 and Mac OS X 10.4 w/ XCode 2.1 using GCC 4.0. The final version of this library also compiled successfully and passed all self-tests without warnings on Suse Linux 9.2 for x86-32. Other platforms with POSIX-like environments should require only a minimal porting effort.He then added:
Oops. Only one of those libraries, cf-0.7, is really in a "maintenance" mode. The truth is the iom-0.2 library is still pretty experimental, and this release amounted to a major refactoring of the code. My apologies for the mistake.
Some times ago I wrote a little demo that could be seen as the beginning of a 3D game: https://gps.dynxs.de/svn/app-3dflight/trunk/ There isn't very much design in it, and because of its simplicity, it focuses on the rendering part. The key idea is that the various virtual objects are represented by O'Caml objects that describe themselves. The only relationship between objects is that they may collide. I think the interesting part of this demo is the collision algorithm, because two objects must somehow interact with each other. Actually, no object needs to know any other object, but it can compute whether it collides with a single 3D point (i.e. an abstraction of a second object). This way, the algorithm can be separated in a "local part", done by the objects themselves, and a "global part", which is the overall loop. I don't know whether this idea can be applied to other types of interactions as well, but from a general point of view it seems to be the right direction to reduce the properties that objects expose to other objects. The demo also shows that the speed of the O'Caml code is almost irrelevant; there is no difference whether you compile it to bytecode or to native code. The speed of the graphics engine is very relevant.
I am announcing version 0.91 of the Netclient library. This library includes a sophisticated HTTP client, a Telnet client, and (new!) an experimental FTP client. The HTTP client was more or less rewritten: - The HTTP messages are no longer restricted to in-memory strings, but can now also be channels. So large up- and downloads are now possible. - Connection caching can now be more aggressive (i.e. connections survive pipeline runs). - The authentication framework has been rewritten. Digest authentication complies to RFC 2617. It it now possible to mimick browser behaviour. - The client complies now fully to RFC 2616, the revised HTTP spec. Of course, the old features have been retained (persistent connections, pipelining, multiplexing, automatic reconnections, automatic redirections, ...). There are a few incompatible changes in the API, but all code I know works with the new version, too. The FTP client is quite impressive, but not yet complete: - Most RFC 959 features are implemented, including record files, EBCDIC, and block mode. The current version omits file uploads, however (only downloads are possible). - Of course, the client supports multiplexing, so you can run several clients concurrently. - There are issues about exceptions that limit production usage for now. Furthermore, the client needs testing against real FTP servers! (This is the main reason why it is included in this Netclient version.) Download Netclient here (or update your GODI installation): http://www.ocaml-programming.de/programming/netclient.html
I'd like to announce a new release of my experimental merger betwen OCaml and CDuce, now called OCamlDuce. All the relevant information can be found at: http://www.cduce.org/ocaml.html There is even some kind of documentation. GODI users can very easily transform an existing OCaml installation into an OCamlDuce one. OCamlDuce is currently based on OCaml 3.08.3 (actually, a recent snapshot of this branch). The page above has some links to code samples to show how to: - parse XML files using existing XML parsers (PXP, expat, or xml-light) and produce values which can be manipulated by OCamlDuce programs; - transform DTDs to OCamlDuce type definitions; - parse XML Schemas and produce valid XHTML summaries (a realistic example of working with complex XML types and translating from an XML representation of complex data to a native OCaml one). Feedback will be very appreciated!
Can the rather formal and academic world of OCaml meet the rather artistic and fairy world of lego toys? I think yes and i wrote Peeroml to prove it. As far as i know it's a premiÃšre, functionnal technologies have never been used in a Lego-CAD context. The Peeroml package allows one to construct lego parts inventories or deconstruct them from a lego set catalog. Download here: http://perso.wanadoo.fr/alphablock/downloads/Peeroml.zip Here are to some links to popular Lego-CAD tools: LDRAW: http://www.ldraw.org/modules.php?op=modload&name=News&file=article&sid=90 MLCAD: http://www.lm-software.com/mlcad/ LDVIEW: http://ldview.sourceforge.net/Downloads.html PEERON inventories: http://www.peeron.com/ Considerations, - damien my lego page: http://perso.wanadoo.fr/alphablock/
I'd like to announce a new site called http://CodeWiki.net . It's intended to be a gathering point for information programming languages, theory, research, and paradigms, as well as software engineering. It will also be a place for people learning a first or a new language to go for quality, community supported tutorials. Right now it is basically a blank slate, with a few empty stubs in the programming languages section. I would greatly appreciate it if everyone would take a look at the site an please contribute. I know that there are a lot of languages missing from the Programming Languages section, so please at least make a stub for any you can think of! If anyone would like me to unlock any of the main pages for them, just let me know!
Here is a quick trick to help you read this CWN if you are viewing it using vim (version 6 or greater).
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.