Hello
Here is the latest Caml Weekly News, for the week of 30 December 2003 to 06 January 2004.
Happy New Year! I am pleased to announce the long-delayed premiere release of the core foundation library from my personal Pagoda project. 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 IPv6). - Universal resource identifier (URI) manipulation. - I/O event multiplexing (with Unix.select). This library was developed on Mac OS X 10.2 and 10.3. Some porting may be required to use it under Linux or another POSIX-like environment. The extended socket interface and I/O multiplexing may need extensive porting to use under WIN32. Choose either of the following two links to download the source (depending on your preferred compressor): http://www.wetware.com/jhw/src/pagoda/cf-0.0.tar.bz2 http://www.wetware.com/jhw/src/pagoda/cf-0.0.tar.gz The reference documentation is generated with ocamldoc, and it is available online at this location: http://www.wetware.com/jhw/src/pagoda/doc/cf/ The source code for this library is released under the two-clause BSD-style license. I invite the Caml team at INRIA to consider lifting some or all of this library into their Objective Caml distribution.Sylvain Le Gall asked and James Woodyatt answered:
>Does this library replace IOX ? ( i have made a little package of it >for >debian and i don't have yet released... maybe i could directly use this >library rather than IOX ) It does not 'replace' Iox, but the fact is I haven't worked on improving Iox in quite some time. I didn't like the semantics of the Iox library after I started trying to build complicated components with it. So I went back to the drawing board, and looked at more things that others have done-- particularly in the area of using functional programming techniques for interactive applications. I carefully studied Thomas Hallgren's and Magnus Carlsson's Ph.D. thesis on the Fudget system in Haskell. (See http://www.cs.chalmers.se/~hallgren/Thesis/ for details.) I've been experimenting around that for several months now, and I'm pretty sure I like my new approach over the old one. I quickly discovered, however, that I needed a core foundation of miscellaneous code that didn't really belong in the I/O component framework itself. That core foundation is what you now see in this release. (I decided I needed to get some code published before it started to grow mold on it and die.) In addition to the core foundation, I am currently working on several other libraries that are all part of my Pagoda project: - Iom a replacement for Iox built with Cf_gadget and Cf_socket. - Mime parsing/emitting MIME entities and content-transfer encodings - Xml yet another wrapper around Expat, plus some glue for Cf parsers - Beep a general implementation of RFC 3080 and RFC 3081 using Iom These are all in various states of unreleasable incompleteness. Though, the Iom, Mime and Xml libraries are fairly close (they just need reference documentation). I also plan to write a DNS resolver for Iom. I hope to support Multicast DNS with it too, i.e. Rendezvous. I also want to write a RADIUS client, and I will need a good wrapper around OpenSSL if I'm going to implement the required TLS profile for RFC 3081. Eventually, I'd like to have a nice implementation of RFC 3341, 3342 and 3343 using Iom. >What is pagoda project ? It's a project I fart around with in my limited spare time, mostly for research purposes. The Iox library came from research early in my Pagoda project. I called it "Pagoda" because that was where I started stacking up all my bits and bobs of componentry that I hope will be useful in building distributed network service applications. In actuality, it appears to be a dark, mysterious tower filled with shiny bits of seemingly useless artifacts whose guardians regard as sacred relics. A pagoda.
CamlTemplate is a small template processor library for Objective Caml. It can be used to generate web pages, scripts, SQL queries, XML documents and other sorts of text. Version 0.7.0 has been released, and can be downloaded from: http://saucecode.org/camltemplate New in version 0.7.0: * Added support for floating-point values. * Implemented nested scopes: macros have their own scope. Setting values in a template no longer changes the model. * Added a simple macro namespace system. Each template provides a namespace for its macros; to use macros defined in another template, you now have to use the new #open statement. * Added a bracket operator for calculating a hash key at run time. * Added a virtual class to replace the two separate functions for loading and checking template source code. * Shortened template model type names. * Added some design documentation. * Added licence exception allowing CamlTemplate to be linked with Apache. * Several bug fixes. For full details of the changes, please see the ChangeLog.
I have just released version 1.0 of findlib, the library manager for O'Caml. This is a rather big step, as the list of changes is very long. Nevertheless, this version of findlib is backward-compatible with previous versions. However, O'Caml 3.07 is required for installation. The most prominent changes: - It is now possible that a package has subpackages. This is very useful to express intra-package dependencies. - There are a number of new features for META files, e.g. it is possible to append to variables, and to negate predicates. - There is now ocamldoc documentation - There is a subversion repository (https://gps.dynxs.de/svn/lib-findlib) The detailed list of changes is included in the README file, see here: http://www.ocaml-programming.de/packages/documentation/findlib/README.html The whole (updated) documentation is available here: http://www.ocaml-programming.de/packages/documentation/findlib/ Download: http://www.ocaml-programming.de/packages/findlib-1.0.tar.gzGerd Stolpmann added:
There is now also a new version of findlib-browser. Unfortunately, I had to fix one file in findlib to do this, so there is again a new version of findlib, sorry. http://www.ocaml-programming.de/packages/findlib-1.0.1.tar.gz http://www.ocaml-programming.de/packages/findlib-browser-0.2.tar.gz
Although it has been already available since December 6, the announcement of Equeue-2.0 was still missing. Now, here it is. The list of changes: - This release incorporates the modules of the previous Shell package (which is no longer continued as such). You can now run shell commands within a Unixqueue. - A new concept is introduced as a means to structure bigger event-based programs: engines. After the engine is attached to a Unixqueue, it performs a previously specified task in an autonomous way, and when the task is done, it reports the result. It is possible to combine basic engines to larger engines (as a program construction principle). - Documentation is available in ocamldoc format - There is a subversion repository: https://gps.dynxs.de/svn/lib-equeue Documentation is available here: http://www.ocaml-programming.de/packages/documentation/equeue/ Download: http://www.ocaml-programming.de/packages/equeue-2.0.tar.gz
GODI, the O'Caml source distribution, has been updated with the following packages: - godi-findlib Version 1.0.1 - godi-findlib-browser Version 0.2 - godi-equeue Version 2.0 - apps-ledit Version 1.11 (contributed by Alain Frisch) To install these packages, just go into the godi_console, get the new list of available packages, and select the mentioned packages for build. Sorry, but I found no time yet to include Owen's and William's PLIST patch. This is still on my list and not forgotten.
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.