Version française
Home     About     Download     Resources     Contact us    
Browse thread
Wink releases Hydro-0.6
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Gerd Stolpmann <info@g...>
Subject: Wink releases Hydro-0.6
Hi list,

Wink Technologies, Inc., the makers of the soon-to-be-famous people
search engine (http://wink.com), have just released a new version of the Hydro
library, which is an implementation of the ICE protocol.

This version adds support for servers, and also includes a lot of bug fixes.

--------------------------------------------------------
>From the README:
--------------------------------------------------------

Hydro is an independent implementation of ICE, the object-oriented RPC
protocol by ZeroC, for the O'Caml programming language. This is an
early, not yet complete release, but the code is already stable and
usable. For the restrictions of this release, see below.

Hydro (like ICE) allows you to bridge language barriers by letting
components written in different programming languages communicate with
each other. ZeroC's ICE product currently includes implementations for C
++, Java, C#, Python, Ruby, VB, and PHP.  Hydro adds support for O'Caml.
The ICE protocol is rich enough to make the representation of the data
to communicate easy and convenient to use, and adopts an object-oriented
type system. ZeroC sees ICE as a superior successor to CORBA.

Hydro includes a runtime, and a generator called hydrogen. The runtime
is fully asynchronous, based on Ocamlnet's event queues. The generator
is used to create a thin layer on top of the runtime that maps abstract
Hydro types to specific O'Caml types.  The Hydro engine therefore
appears to the programmer as if it was typed using the input IDL file.
Unlike the generators shipped by ZeroC, hydrogen does not create
marshalling code -- we see this as the task of the runtime and not of
the language mapping layer. Because of this design decision we have high
confidence in the correctness of the generator.

Although we want Hydro to be an implementation whose protocol is fully
compatible with ICE and that can process all its IDL files, we take some
freedom to deviate from what is described in ZeroC's "ICE manual". ICE
was designed with mainstream object-oriented languages in mind, and
therefore lacks many of the advanced constructs available in O'Caml
(variants, for example).  Conversely, ICE includes constructs such as
hierarchical exceptions and downcasts which do not exist in O'Caml (and
for good reason!).  To deal with the "impedance mismatch," we
implemented emulations for these concepts.  On the other hand, O'Caml
offers advanced features which ought to be exploited by a good
implementation.  For example, in O'Caml, asynchronous networking code is
quite natural, so we have chosen to make this the default style. So
while Hydro is quite straightforward, the O'Caml programmer should not
expect a design which is a perfect one-to-one translation of what ZeroC
describes.

*** Features ***

      * Support for clients (proxies) and servers
      * The whole ICE type system is implemented, and can be marshalled.
        This includes graphs of objects.
      * The whole ICE type system can be mapped to O'Caml types. The
        mapping is quite flexible and configurable, e.g. you can choose
        whether you prefer arrays or lists as representations of ICE
        sequences. Where necessary, the properties of the ICE type
        system are emulated. For example, hydrogen generates special
        code for downcasts of objects.
      * IDL files are dynamically represented at runtime
      * The runtime supports both asynchronous and synchronous method
        invocation
      * The runtime can be integrated with other libraries that also
        base on Ocamlnet's event queues, e.g. with Ocamlnet's HTTP
        clients, or SunRPC.
      * Fully automatic connection management
      * The generated code is properly indented
      * Liberal license conditions

*** Restrictions ***

      * Hydro only supports twoway calls over TCP for now
      * Hydro does not support separate compilation (i.e. you cannot
        split an .ice file into several parts, hydrogen every part
        alone, and then merge them later). This is a fundamental
        restriction we'll never be able to improve.
      * There is no support for Slice checksums
      * There is no support for checked proxy casts (will follow
        soon)
      * There is no support for configuration files
      * There is no support for stringified proxies and endpoints
      * The runtime and the generated language mapping layer are both
        reentrant. However, there is no specific support for
        multi-threaded programming beyond this
      * There is no support for compression
      * Except of calling the locator service of IceGrid, there is no
        support for add-on technologies like IceGrid, Freeze, etc. We
        have some interest in IceGrid, so this may also follow at some
        time.

[... rest of README omitted...]

--------------------------------------------------------
Download, and documentation
--------------------------------------------------------

Download link: http://oss.wink.com/hydro/

Manual:  http://oss.wink.com/hydro/hydro-0.6/doc/html/index.html

A GODI package godi-hydro exists.

For general information about ICE, see ZeroC's homepage:
http://zeroc.com


Gerd
-- 
------------------------------------------------------------
Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany 
gerd@gerd-stolpmann.de          http://www.gerd-stolpmann.de
Phone: +49-6151-153855                  Fax: +49-6151-997714
------------------------------------------------------------