HISTORY 9.96 KB
Newer Older
OiL 0.4 work1 [Tue, 27 Mar 2007]

(a) Better architectural organization;
(b) Deferred calls;
(c) ORB shutdown operation;
(d) Interception support;
(e) More functional API;
    	oil.main(function)
    	oil.sleep(number)
    	oil.newthread(function, ...)
    	oil.newencoder()
    	oil.newdecoder(string)
(f) Better integrated CORBA IR:
    	Ability to change IR definitions;
    	Ability to load module parts using different 'oil.loadidl*' calls;
    	Consistent storage of all IDL definitions, not only interfaces;
    	Ability to import any definition from the remote delegated IR (oil.setIR);
(g) Support for IDL large numbers: long long, unsigned long long, long double.
    Lua must be changed so lua_Number is 'long double'.
(h) Unix shell scripts for execution of demos.

OiL 0.4 work2 [Fri, 06 Apr 2007]

(a) Bugfix in single request processing (oil.step);
(b) Bugfix in 'oil.narrow' without interface specification;
(c) Bugfixes in 'union' marshal;
(d) Better verbose message for calls with string arguments that contains
    non-printable characters;
(e) Better verbose level distribution:
    	1: operation invocation and dispatching;
    	2: GIOP request and reply processing;
    	3: mutual exclusion channel access (concurrent mode);
    	4: GIOP message creation and handling (i.e. send and receive);
    	5: socket channels creation and handling (i.e. connection and reuse);
    	6: value (un)marshaling;
    	7: hexadecimal view of marshaled streams;
    	8: creation of IDL table descriptors;
(f) Automatically generated object keys always start with '\0';
(g) A single Lua object can be used as implementation of different CORBA objects
    created with automatic keys as long as they implement different interfaces
    because object keys now contains the interface table hash-code. As a result
    each time a Lua object is used as an object with a different interface
    a new CORBA object is created for each interface, which will be the actual
    (i.e. most specific) interface of the new CORBA object. To avoid implicit
    creation of different CORBA objects with different interfaces for a simgle
    Lua object, set the '__type' field of the objet meta-table (i.e. its
    class) to the interface (repID, absolute name, IDL descriptor, or remote IR
    object) that should be used;

OiL 0.4 work2 (emergency update for OpenBus) [Thu, 19 Apr 2007]

(a) Bugfix in 'loop.thread.Timer' that prevents the timer thread to end after
    first execution;
(b) Bugfix in channel mutual exclusion control for receiving replies;
(c) Addition of field 'oil.tasker' to get the coroutine scheduler component
    used by OiL;
(d) Better verbose message in request invocation;

OiL 0.4 work3 [Wed, 25 Apr 2007]

(a) New version of LUAIDL (0.7.4b);
(b) Bugfix: possible name collision of a host name 'retrieve' with an internal
    method of a data structure that holds information about hosts;
(c) Bugfix: missing upvalue in 'reset' method of non-wrapped sockets
    (non-concurrent mode);
(d) Bugfix: allow creation to proxies to 'CORBA::Object' references;
(e) Bugfix in channel mutual exclusion control for sending replies of erroneous
    requests (e.g. invalid object key, wrong interface, location forward, etc);
(f) Bugfix: correction of verbose messages for invocation and dispatch of
    methods that take string parameters;
(g) 'oil.narrow' and 'proxy:_narrow' now accepts any valid interface
    specification, i.e. repID, absoulute name, IDL descriptor, or remote IR
    object;
(h) Support for marshaling of typecode 'null' and therefore anys containing
    values of type 'null';
(i) 'nil' values used as 'any' are automatically coded as 'null';
(j) The interface of an implicitly created CORBA object can also be defined by
    field '__type' of the object implementation itself (in older versions,
    only the '__type' field of the metatable could be used);
(k) Restore object implementation when an IOR is found that references the ORB
    itself. If the object was created implicitly or with an automatic object key
    then the object implementation is returned otherwise the CORBA object table
    is returned (i.e. not a proxy but the object originally returned by
(l) The function used to handle exceptions can be defined for all proxies of a
    given interface by function 'oil.setexcepthandler(handler [, interface])'.
    If no interface is provided then the handler is set for all proxies.
    Previously, this handler could only be set for individual proxies by field
    '__exceptions';
(m) Now, if the exception handler function returns (i.e. not raise a Lua error)
    then the exception is ignored and the values returned are used as the
    results of the invocation that raised in the original exception;
(n) Addition of 'oil.deactivate(<corbaobj | implobj | objkey> [, interface])'
    that removes an object from the ORB;

OiL 0.4 work4 [Fri, 08 Jun 2007]

(a) Bugfix: addition of missing required libraries;
(b) Bugfix: exceptions members were not loaded into the repository;
(c) Bugfix: verbose message generation;
(d) Bugfix: correction of the object returned by interception;
(e) Bugfix: local CORBA exceptions are generated with proper repID;
(f) Bugfix: handling of object forwarding in concurrent mode;
(g) Support for proper handling of location request messages;
(h) Automatic reconnections when connection is closed. WARNING: Operation
    invocation may be issued many times if no reply is sent (no at-most-once
    guarantees);

OiL 0.4 work5 [Fri, 18 Jul 2007]

(a) Bugfix in invocation error handling.
(b) Bugfix in oneway invocations.
(c) Bugfix in verbose message generation.
(d) Bugfix in generation of local exceptions' repID.
(e) Bugfix in verification of values being marshaled.
(f) Bugfix in marshal of 'any'.
(g) Bugfix in interface definition import from a remote Interface Repository
(h) Bugfix in union field access.
(i) Bugfix in absolute name resolution ('lookup' operation).
(j) Bugfix in stream read when operation yields due to a full buffer.
(k) Bugfix to allow servants to implement implicit operations (e.g. CORBA's
    operations that start with '_')
(l) Any's now provide the field _anytype to identify the IDL type of the value.
(m) Utility script to create Lua scripts that feed the internal IR from IDL files.
(n) OiL internal components are available through the 'oil' module itself
    instead of field 'oil.Components'.
(o) API operation 'oil.newobject' becomes 'oil.newservant'. However, the alias
    'oil.newobject' is provided for compatibility.
(p) OiL internal coroutine scheduler is accessible through field  'oil.tasks'
    instead of 'oil.scheduler'.
(q) OiL internal interface repository is accessible through field  'oil.types'.
(r) CORBA interception is disabled by default. See demo 'interceptors' for
    information about how to enable it.
(s) Rules to strip and reinsert verbose support from OiL's code.

OiL 0.4 work6 [Wed, 1 Aug 2007]

(a) Bugfix in array description registration in the internal Interface
    Repository.
(b) Bugfix in 'oil.pcall' in CORBA interception mode.
(c) Bugfix in script 'idl2lua.lua' by an improvement to avoid that global
    functions be serialized as module members.
(d) Bugfix in select function wrapper. The error was not detected before due to
    strange behavior of LuaSocket that returned ordinary tables inserted in
    function arguments just like ready sockets.
(e) Bugfix in importation of remote exception's members.
(f) Bugfix in builder error handling.
(g) Bugfix in verbose message generation and removal of redundant verbose
    messages.
(h) Bugfix: select calls that executed without yielding returned socket objects
    instead of socket wrappers that implement scheduler integration.
(i) Bugfix in TypeCode marshaling with indirections. Indirections cannot span
    across the top-most TypeCode boundaries. Improvement in verbose messages to
    avoid printing non-printable characters.
(j) Exceptions created with oil.newexcept now can contain exceptions's abosule
    name instead of repID.
(k) oil.setexcatch(func, iface) receives any interface identification (repID,
    absolute name, remote IR object, etc.)
(l) Performance improvement by use of 'tcp-nodelay' option.

OiL 0.4 work7 [Tue, 21 Aug 2007 - r66613]

(a) Bugfix in handling of system exceptions raised by servants.
(b) Bugfix in verbose message generation
(c) Bugfix in serialization of long long type descriptor in 'idl2lua' script.
(d) Bugfix to avoid that attributes be indexed through proxies.
(e) Bugfix: channel is stored in the reference object to avoid retrieve the
    channel at each new invocation.
(f) Bugfix: Verbose class use a specific Viewer instance to avoid changing the
    Viewer class' behavior.
(g) Standard system exceptions are loaded into the internal IR.
(h) Improvement to allow creation of GIOP Exceptions without body.
(i) Sequences containing 'nil' can have the 'n' field to indicate the number of
    elements.
(j) Implementation of _is_equivalent operation of CORBA references.
(k) Object references with unknown types are created with field 'type_id' set to
    ''.
(l) Improvement by addition of 'cosocket' verbose tag as a new level of verbose
    in Scheduler verbose.
(m) New demo about exception handling.

OiL 0.4 work8 [Tue, 4 Sep 2007 - r67052]

(a) Bugfix in Ludo protocol to work with object keys that contains null
    characters.
(b) Bugfix to allow use with typeless protocols like Ludo.
(c) New operation 'oil.tasks:halt()' to stop the coroutine scheduling.
(d) Operation 'oil.deactivate' fails quietly allowing the application to
    deactivate an servant many times without getting an error.
(e) Sequences returned by OiL now have the 'n' field set properly to handle
    sequences with nil values like sequence of objects or anys.
(f) Support for commands 'step', 'step"in"', 'step"out"' and break points
    ('mkbp(<file>,<line>)', 'rmbp(<file>,<line>)', 'lsbp') in debug console of
    'oil.verbose:debug()'.
(g) Use of package 'socket.core' instead of 'socket' package due to unused
    functions provided by the former package.
(h) Update of the demo 'hello_simple' to use the Ludo protocol.