This is a long awaited alpha release of Narval-1.2. We are using Narval daily
at logilab, and we feel it is quite stable. However, we need you to give it a
good shake before we can release a real version.

We're working on bringing the documentation up to date. In the meanwhile,
here's some technical details about what changed since Narval 1.1, so that you
can adapt the existing documentation to this alpha release.

So, what has changed since 1.1 ?

 * The XML format for a recipe has changed:
   - All the elements should now belong to the narval namespace, which is
   http://www.logilab.org/namespaces/Narval/1.2. This is a big step forward,
   because it removes a number of reserved words, and lessens confusion. The
   standard attributes of the narval elements belong to the empty namespace,
   as is the case for most XML-based languages
   - It is no longer necessary to give a start-step and an end-step. Narval is
   now able to determine that the start step is the step that has no incoming
   transition, and the end step is the one that has no outgoing
   transition. Narval will fail to instanciate a plan from a recipe for which
   the start step and the end step cannot be found.
 
 * There has been some changes in actions and transitions too:
   - Each declared input *must* have an id attribute
   - The prototype of the python function implementing the action has
   changed. The function is now given a dictionnary of arguments and a DOM
   document. It can use the DOM document to create the output elements. The
   dictionnary keys are the input ids. If the input has the list attribute set
   to 'yes', then the value is a list of elements matching the input
   prototype; if not, it is the element itself. You can give a look at the
   standard library to see how things work the new way. We believe that this
   reallt eases the task of coding new actions.

 * Changes in the interpreter:
   - PyRO is now the prefered communication layer between Narval and the outer
   world, but xmlrpc is still supported. Be aware that the speed gain of using
   PyRO is quite noticeable. Instead of --listen-on [port], use 
   --pyro-port [port] or --xmlrpc-port [port]
   - The SocketManager no longer exists. No more --socket-manager command line
   option
   - We have introduced the concept of ProtocolHandlers to replace the
   SocketManager. This means that if you want to have a simple HTTP server
   implemented with Narval, you no longer have to implement the HTTP protocol
   in the recipe. The HttpProtocolHandler does the translation from HTTP
   requests to Narval memory elements and back to the HTTP client. Narval
   comes with protocol handlers for Http and Jabber (you'll need jabber.py to
   use this one). If you want to implement your own, you can have a look at
   the Narval Evolution Proposal #1 that should be part of the distribution
   (look in doc/NEP).
   - We have added a file called narvalrc.xml in $NARVAL_HOME/data, which you
   can use to tune the startup of Narval, especially exclude some
   modules/transformations/recipes from loading, specify which encoding you
   want to use, and which protocol handlers you want Narval to launch. Give a
   look at the narvalrc.xml file that's included in the distribution and edit
   it to suite your needs. You can have several such file, and choose which
   one to use from the command line, by using --rcfile [file].

We thank you for trying out this alpha release. Please send us some feedback
about your experience using narval on the narval-en mailing list (see
http://lists.logilab.org/mailman/listinfo/narval-en for more info)
   
