Release Notes for omniORBpy 1.0  (14 July 2000)
===============================

This is omniORBpy 1.0, a robust high-performance CORBA ORB for Python.

The bindings adhere to the standard IDL to Python mapping which you
may find at http://www.omg.org/cgi-bin/doc?ptc/00-04-08.


----------------------------------------------------------------------
                               WARNING!

The mapping for server-side skeletons has changed since pre-release 2.
Server-side code written for omniORBpy before pre-release 3 MUST be
updated to work with omniORBpy 1.0.

This unfortunate state of affairs is due to an internal contradiction
in drafts of the Python mapping. See below for full details.

----------------------------------------------------------------------


omniORBpy makes use of the C++ omniORB library. It can use either
omniORB 3.0 or omniORB 2.8. If you use omniORB 3.0, the full POA
functionality is available; with omniORB 2.8 many POA functions are
not supported.

omniORBpy is currently available for Linux, Solaris, and Windows NT.
It has been ported to a number of other operating systems by outside
contributors.

It is a good idea to subscribe to the omniORB mailing list. See

    http://www.uk.research.att.com/omniORB/intouch.html


Please report any bugs you find to the mailing list, or directly to
Duncan Grisby,
                                         dgrisby@uk.research.att.com


Summary of changes from pre-release 3
-------------------------------------

- A few small tweaks.


Summary of changes from pre-release 2
-------------------------------------

- Skeleton package names have changed

    The draft Python mapping specification contradicted itself about
    whether the skeleton package for IDL module M should be named
    POA_M or M__POA. Previous omniORBpy pre-releases used the POA_M
    mapping. Unfortunately, the Python mapping has now been clarified
    to use M__POA.

    To avoid the runtime and development overhead of
    backwards-compatibility, the old naming scheme is no longer
    supported. omniidl will issue a warning if it encounters packages
    with the old names, and code which imports the packages will fail
    with an ImportError.

    To update your code, simply replace all occurrences of
    POA_<module> with <module>__POA. Note that for interfaces in
    nested modules, M1::M2::I is mapped to M1__POA.M2.I.

- Performance improvements

    Server-side operation dispatch is now around twice as fast as it
    was before.

- Full mapping compliance

    Minor details to meet the finalized Python mapping specification.
    All changes (other than the skeleton naming) are additions, so no
    code needs to be changed. All facilities offered by omniORBpy now
    follow the standard mapping.

- omniORB API additions

    Support for exception handler functions, URI handling functions,
    and other minor things.

- Bug fixes

    Mostly fixes for obscure contrived situations which will almost
    certainly never arise in real life.

- Manual

    A full user guide.



Building
--------

You must install the omniORBpy source in the $TOP/src/lib directory of
a working omniORB 3.0 or 2.8 tree. Then, in the $TOP/src/lib/omniORBpy
directory, simply do a gnumake export.

On Windows only, if you are using omniORB 2.8, one of the omniORB
header files (omniInternal.h) has to be updated. You must get the
latest version of the omni2_8_develop branch from CVS or the ftp
snapshots.


Using omniORBpy
---------------

To use omniORBpy, simply add two paths to your PYTHONPATH environment
variable, like:

  export PYTHONPATH=$PYTHONPATH:$TOP/lib/python:$TOP/lib/$FARCH

where $TOP is the root of your omniORB tree and $FARCH is the platform
name you selected in config.mk.

You should also have $TOP/bin/$FARCH in your PATH, so you can run the
IDL compiler, omniidl.

omniORBpy requires Python version 1.5.2. The Python interpreter must
be compiled with thread support.

Full documentation, in a variety of formats, can be found in the
src/lib/omniORBpy/doc directory.


Missing features
----------------

The following features are currently missing from omniORBpy.


1. There is no support for DII and DSI. Since you can write IDL and
   Python code on-the-fly, this is not a significant limitation.

2. The long long, unsigned long long, long double, wchar, and wstring
   types are not yet supported.

3. When using omniORB 2.8, the majority of POA functions are not
   supported, since the Python POA is actually implemented with the
   C++ BOA. With omniORB 3.0, the full POA functionality is available.

4. Context is not supported.

5. Objects by value are not supported.
