------------------------------------------------------------------------------
--                                                                          --
--                           POLYORB COMPONENTS                             --
--                                                                          --
--         Copyright (C) 1999-2006 Free Software Foundation, Inc.           --
--                                                                          --
-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
-- under terms of the  GNU General Public License as published by the  Free --
-- Software Foundation;  either version 2,  or (at your option)  any  later --
-- version. PolyORB is distributed  in the hope that it will be  useful,    --
-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License  for more details.  You should have received  a copy of the GNU  --
-- General Public License distributed with PolyORB; see file COPYING. If    --
-- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
-- Boston, MA 02111-1307, USA.                                              --
--                                                                          --
-- As a special exception,  if other files  instantiate  generics from this --
-- unit, or you link  this unit with other files  to produce an executable, --
-- this  unit  does not  by itself cause  the resulting  executable  to  be --
-- covered  by the  GNU  General  Public  License.  This exception does not --
-- however invalidate  any other reasons why  the executable file  might be --
-- covered by the  GNU Public License.                                      --
--                                                                          --
--                  PolyORB is maintained by AdaCore.                       --
--                     (email: sales@adacore.com)                           --
--                                                                          --
------------------------------------------------------------------------------

* PolyORB 2.1.0 (branched on 2006-05-11)
========================================

This release contains a CORBA-compatible instantiation of the PolyORB
generic middleware. In addition to the 2.0 release, it includes:

New features
------------

Exceptions raised during modules initialization are now caught and reported.
(9795)

EXTRA_GNATMAKE_FLAGS are now honored throughout the PolyORB build process,
not just for examples and the test suite. (9846)

ORB Controllers now support multiple event source monitors. This allows one
partition to simultaneously support plain TCP/IP and SSL sockets, e.g. CORBA
node using both IIOP and SSLIOP. (9850)

Idlac does not generate with or use clauses in package bodies anymore if the
same clause already appears in the corresponding package spec. (9853)

Idlac can now generate only client-side or server-side code on
demand. (9899)

The blocking variant of ORB.Shutdown is now implemented: when ORB shutdown
with wait for request completion is requested, the ORB blocks until the ORB
controller signals completion of all remaining tasks. (9912)

GIOP now supports Unicode UTF-8 and UTF-16 code sets; a new configuration
parameter has been added to force the inclusion of fallback GIOP code sets
converters in the object reference. (9954)

Documention PolyORB's framework to support new GIOP code sets has been
added. (9955)

An implementation object type is provided for CORBA::Current, allowing
users to implement derived interfaces of CORBA::Current using the default
implementation template. (9960)

Bug fixes
---------

A missing initialization dependency of helpers upon "any" has been fixed.
(9811)

A race condition in the client-side processing of oneway requests could
cause a oneway call executed from a partition using tasks to hang. (9837)

Transport errors occurring on a session that has pending requests are now
correctly reported to the caller. When such an error occurs, each pending
request is now marked as completed with an error condition, and its target
reference is marked as unbound, allowing further calls to rebind them. (9882)

The CORBA::Object::non_existent implementation was incorrect on the server
side and has been fixed. (9888, 9892)

For a locality-constrained interface, generation of the Is_A primitive must
be under control of the Implement flag, not the Generate_Client_Code flag.
(9947)

Corrected several inconsistencies in PolyORB local shutdown facility
that prevent the correct shutdown of the ORB. (9937, 9938) 

Reordered error condition testing in
PortableServer.POA.Activate_Object_With_Id to prevent introducing
consistencies in the CORBA's personality POA. (9942)

Actually store user-defined POA policies in the POA. (9967)

Incompatible changes
--------------------

By default, the SOAP personality will now bind on an available port number.
To force it to bind to the previous default of 8080, use the
  polyorb.protocols.soap.default_addr
in the [soap] section of the configuration. (9793)

A typo has been fixed in the name of formal parameter ORB_Identifier of
procedure CORBA.ORB.Init (it was previously misspelt "ORB_Indentifier").
User code that uses a named parameter association for this parameter will
need to be fixed accordingly. (9919)

CORBA.Current.Ref was changed to Local_Ref to adjust to a change in the
CORBA specifications (between CORBA 2.3 and CORBA 3.0). (9951)

* PolyORB 2.0 (released 2006-03-07)
===================================

This new major release of PolyORB comes as the conclusion of a series of
extensive reviews and reorganisations of the middleware components,
improving the architecture's performances and flexibility. Development
has taken place in both the generic core and the various application
and protocol personalities.

This release contains the PolyORB generic middleware and its CORBA and MOMA
instances. In addition to the 1.3 release, it includes:

New features
------------

The stubs and skeletons generated by idlac now evaluate operation and argument
names only once at elaboration time, for improved efficiency. (9753)

The low-level mutex facility used under full tasking has been reimplemented
to take advantage of internal facilities provided by the GNAT runtime library,
providing a significant performance improvement. (9744)

The memory footprint of simply chained lists used internally has been reduced
by not storing a 'Prev' pointer in each list node for that case. (9719)

The output function used by the internal traces logging system is now set to
its default value (output to the standard error file descriptor) only if it is
unset. This makes it easier for users to override this value. (9717)

Added support for CORBA bounded strings and bounded wide strings.
(9696, 9697, 9701)

Support for SSLIOP, an instance of the GIOP generic protocol on top of the
SSL transport layer. (9520)

The Thread_Pool ORB tasking policy can now dynamically allocates new tasks
to handle higher workload. It uses three different parameters to control
minimum number of threads, maximum number of spare threads, maximum total
number of threads. See the PolyORB's User Guide for more details. (9515)

Support for 'file://' URL scheme. This allows stringified references (e.g.
IOR, corbaloc) to be read from a file. (9485)

Support for the Tag_Alternate_IIOP_Address GIOP tagged component. This allows
a node to listen on multiple sockets when using the GIOP/IIOP protocol
personality. (9473)

Idlac now annotates client stubs with comments indicating in which interface
each inherited operation has been declared (whether it is implicitly inherited
from the primary parent or redeclared from a secondary parent).
(9458, 9459, 9460)

Added support for the G++ 4.1.0 preprocessor. (9438)

New contrib/ directory to store contributed code. (9376)

Added idlac_wrapper, a script contributed by Vadim Godunko to avoid
unnecessary recompilation of idlac generated files. (9376)

Incompatible changes
--------------------

For a bounded sequence, the associated instance of CORBA.Sequences.Bounded is
now named IDL_Sequence_<size>_<type> in conformance with the example par. 3.8
of the IDL-to-Ada mapping. (9690)

Idlac now builds the names of accessor for attributes with the same casing as
in the specification for the IDL-to-Ada mapping: the accessors names are built
by prepending "Get_" and "Set_" to the the attribute name. (9636)

The casing of sequences packages is now "IDL_SEQUENCE", instead of
"IDL_Sequence" in conformance with section 3.8 of the IDL-to-Ada
mapping. (9632)

./configure now searches '--with-corba-services' instead of
'--with-services' for CORBA Services to build. (9597)

polyorb-config now returns list of CORBA services using
'--with-corba-services' instead of '--with-services'. (9597)

The "polyorb.tasking.threads.storage_size" parameter in section
[tasking] has been renamed to just "storage_size". Accordingly,
the environment variable to be used to override this value is now
POLYORB_TASKING_STORAGE_SIZE instead of
POLYORB_TASKING_POLYORB_TASKING_THREADS_STORAGE_SIZE. (9504)

The "polyorb.orb.thread_pool.threads" parameter in section [tasking] is
deprecated. The Thread_Pool ORB tasking policy is now configured using a set
of three parameters: min_spare_threads, max_spare_threads, and max_threads.
(9504)

CORBA specifications mandate that all standard minor exception codes should be
or'ed with the OMGVMCID constant (CORBA3 A.5). The CORBA and GIOP personalities
now handle this correctly. (9415)

The implementation of the PortableServer::ObjectId has been corrected to match
the IDL-to-Ada specifications, resulting in changes in the API. (9352)

Fixed bugs
----------

CORBA.ORB.String_To_Object used to raise non-CORBA exceptions for some cases
of malformed corbaloc URIs. This has been fixed. (9750)

The helpers for union types occasionally contained lines whose length
exceeded the default maximum length for GNAT (255 characters). The layout
of the generated code has been adapted to avoid exceeding this implementation
limit. (9710)

When a GIOP reply has been received, call Expect_GIOP_Header prior to
notifying the caller. Otherwise, the underlying binding object may disappear
too early, causing SOCKET_ERROR to be raised due to calling select(2) on a
closed socket fd. (9507)

When closing a socket, remove it from the monitored set prior to closing it.
Otherwise, a race condition occurs that can cause SOCKET_ERROR to be raised
due to calling select(2) on a closed socket fd. (9496)

Correct helper generation for typedefs. (9435)

In some cases, integer constants greater than 2**31 would not be processed
correctly and cause idlac to crash or generate incorrect code. (9377)

Correct handling of nested (anonymous) arrays. (9412)

Correct skeleton generation for functions returning references. (9411, 9424)

* PolyORB 1.3 (released 2005-06-20)
===================================

This release contains a CORBA-compatible instantiation of the PolyORB
generic middleware. In addition to the 1.2r release, it includes:

New features
------------

Base support for the DynamicAny interface. (9282)

The modularity of the Neutral Core Layer has been increased, leading
to better configurability of log output (8968), and parameter sources
(9258).

Support for CORBA Policy management, including Domain policy management.
A domain policy manager can be specified using configuration variable
policy_domain_manager in section [corba].

idlac now returns an exit status of 2 in the case of an illegal
IDL specification. (9213)

idlac now supports typeid declarations. (9212)

Some inefficiencies in the buffer management subsystem have been fixed,
giving a major improvement in performances when large data is passed
in request parameters.

Update of the implementation of the CORBA Interface Repository,
PortableInterceptors API.

Update of idlac to support IDL as defined by CORBA 3.0 standards.

Update all CORBA IDL specification to match latest release by the
OMG.

Implementation of the CORBA COS Notification Service (beta stage)
(9121), the RTCosScheduling service (RT-CORBA 1.1) (9016),

Several additions to the User's Guide.

Incompatible changes
--------------------

The implementation of CORBA POA's servant managers has been corrected
to match the IDL-to-Ada specifications, resulting in changes in the
API. (9322)

PolyORB.ORB_Controller.Basic has been renamed and is now
PolyORB.ORB_Controller.Workers. (9243)

idlac does not generate Interface Repository code by default anymore.
The '-ir' command line switch can be used to specifically request IR
code generation. The '-noir' command line switch is now a no-op and
will be removed in a future release. (9211)

idlac is now quiet by default. The '-v' command line switch can be used
to make it verbose. The '-q' command line switch is now a no-op and will
be removed in a future release. (9210)

The runtime configuration parameters that control the references
to well-known services (naming and interface repository) now support
corbaloc URIs as a possible notation (in addition to IORs). Consequently,
they have been renamed as follows:
  * In section [corba]:
    naming_ior -> name_service
    ir_ior     -> ir_service
  * In section [dsa]:
    naming_ior -> name_service
(9160)

Fixed bugs
----------

Fixes for several code generation issues in idlac, the IDL-to-Ada
compiler.

Fixes for memory leaks in GIOP code sets negotiation. (9228)

* PolyORB 1.2r (released 2004-12-17)
====================================

This release contains a CORBA-compatible instantiation of the PolyORB
generic middleware. In addition to the 1.1r release, it includes:
- extended support for CORBA and GIOP specifications,
- support for PortableInterceptors,
- support for RT-CORBA 1.1,
- fixes for several bugs and memory leaks,
- several additions to the User's Guide.

PolyORB now includes the Message Oriented Middleware for Ada (MOMA)
personality. It proposes an API comparable to Sun's Java Message
Service (JMS). It supports Publish/Subscribe and Point-to-Point.

PolyORB neutral core middleware now supports more concurrency
policies. It implements the No Tasking, Basic, Leader/Followers and
Half Sync/Half Async design patterns.

Release branched on 2004-12-17. (8922)

* PolyORB 1.1r (released 2004-06-07)
====================================

This release contains a CORBA-compatible instantiation of the PolyORB
generic middleware. In addition to the 1.0 release, it includes:
- a significant increase in performance (30%-40%),
- fixes for several bugs and memory leaks,
- extended support for CORBA and GIOP specifications,
- the PolyORB User's Guide,
- the MIOP/UIPMC protocol stack, Unreliable Multicast Inter-ORB Protocol,
  following the OMG standard,
- the DIOP protocol stack, Datagram-based Inter-ORB Protocol, a
  specialization of GIOP for oneway requests.

* PolyORB 1.0 (released 2003-06-16)
===================================

This release contains a CORBA-compliant instantiation of the PolyORB
generic middleware. It includes:
- an IDL to Ada 95 compiler,
- Portable Object Adapter (POA),
Dynamic Skeleton Interface (DSI),
Dynamic Invocation Interface (DII), and
Interface Repository (IR) implementations,
- COS Naming, COS Event and COS Time services implementations,
- GIOP 1.0, 1.1, and 1.2 implementations.

This CORBA implementation can be configured for full tasking,
Ravenscar tasking or no tasking runtime, depending on the level
of desired functionality for the application, and on the resource
constraints for the target.

This release should be considered as a stable implementation of
CORBA middleware over PolyORB.

Release branched on 2003-05-16. (6783)

* PolyORB 0.1 (released 2001-12-04)
===================================

This is the first public release of PolyORB code. This release
contains the personality-neutral middleware core, the CORBA
application personality (including our IDL -> Ada 95 compiler idlac),
and CORBA and SOAP protocol personalities.  This should be considered
as test-phase software.
