[cwn] Attn: Development Editor, Latest Caml Weekly News

Alan Schmitt alan.schmitt at polytechnique.org
Tue Aug 2 01:55:04 PDT 2005


Hello,

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.

1) OCaml NAE release cf-0.7 and iom-0.2
2) Games
3) Netclient 0.91
4) OCamlDuce
5) OCaml meets lego bricks
6) CodeWiki.net Announcement

========================================================================
1) OCaml NAE release cf-0.7 and iom-0.2
------------------------------------------------------------------------
** James Woodyatt announced:

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.

========================================================================
2) Games
------------------------------------------------------------------------
** Deep in this thread, Gerd Stolpmann said (this is only part of the  
message):

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.

========================================================================
3) Netclient 0.91
------------------------------------------------------------------------
** Gerd Stolpmann announced:

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>

========================================================================
4) OCamlDuce
------------------------------------------------------------------------
** Alain Frisch announced:

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!

========================================================================
5) OCaml meets lego bricks
------------------------------------------------------------------------
** Damien announced:

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/>

========================================================================
6) CodeWiki.net Announcement
------------------------------------------------------------------------
** Jonathan Bryant announced:

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!

========================================================================
Using folding to read the cwn in vim 6+
------------------------------------------------------------------------
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.

========================================================================
Old cwn
------------------------------------------------------------------------

If you happen to miss a CWN, you can send me a message
(alan.schmitt at polytechnique.org) and I'll mail it to you, or go take  
a look at
the archive (<http://sardes.inrialpes.fr/~aschmitt/cwn/>) or the RSS  
feed of the
archives (<http://sardes.inrialpes.fr/~aschmitt/cwn/cwn.rss>). If you  
also wish
to receive it every week by mail, you may subscribe online at
<http://lists.idyll.org/listinfo/caml-news-weekly/> .

========================================================================

Alan Schmitt, <http://sardes.inrialpes.fr/~aschmitt/>

-- 
The hacker: someone who figured this out and made something cool happen.
.O.
..O
OOO


-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20050802/111a9781/PGP.bin


More information about the caml-news-weekly mailing list