20032009 Ericsson AB. All Rights Reserved. The contents of this file are subject to the Erlang Public License, Version 1.1, (the "License"); you may not use this file except in compliance with the License. You should have received a copy of the Erlang Public License along with this software. If not, it can be retrieved online at http://www.erlang.org/. Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. IDL Compiler Release Notes 2003-11-19 AB
IC 4.1.8
Fixed Bugs and Malfunctions

IDL-files containing result or Result as, for example, parameter name, caused an exit with reason bad_match.

Own Id: OTP-4532

Uninitialized variables were used in ic_init_ref for C backends.

Own Id: OTP-4537

Aux Id: seq7666, ETOtr17107

CORBA_Environment_alloc() left some fields uninitialized in the returned pointer to an CORBA_Environment for C backends.

Own Id: OTP-4538

The function ic_compare_refs() for C backends could find two unequal references to be equal.

Own Id: OTP-4539

IC 4.1.7
Fixed Bugs and Malfunctions

Operation names were always scoped in C server backend, irrespective of the setting of the option scoped_op_calls.

Own Id: OTP-4521

Aux Id: seq7643, ETOtr16925

IC 4.1.6
Improvements and New Features

For C backends generated code checks that the _length field of bounded sequences (i.e. specified as ]]>) does not exceed the specified maximum length. If so, an exception is raised.

Own Id: OTP-4471

Fixed Bugs and Malfunctions

The _maximum field was not set for sequence structs generated by the C backends.

Own Id: OTP-4471

Aux Id: seq7600, ETOtr16308

There was a memory leak in C backends in case there was a decoding error in a sequence with elements of basic type.

Own Id: OTP-4475

For for C backends, IDL structs defined within an interface were not mapped into C structs in appropriate include files.

Own Id: OTP-4481

Aux Id: seq7617

If the user, incorrectly, trap exit's but did not use the 'handle_info' compile option it would cause the server to terminate. The same problem occurred if someone, illegally, sent a message to the server. It could also happen for illegal oneway operations.

Own Id: OTP-4488

IC 4.1.5
Fixed Bugs and Malfunctions

Invalid C code was generated for type short.

Own Id: OTP-4450

Aux Id: seq7582

IC 4.1.4
Fixed Bugs and Malfunctions

Operation functions inherited by an interface were not placed in the map table in generated code for the C server backend. As a result such functions were not found by the switch function of the interface.

Own Id: OTP-4448

Aux Id: seq7582

IC 4.1.3.1
Fixed Bugs and Malfunctions

A non-ANSI compliant construct in libic.a was changed.

Own Id: -

IC 4.1.3
Improvements and New Features

For Erlang and C back-ends an IC version stamp has been added to generated source code. This stamp i preserved in compiled target code.

For C backends an assert() expression has been added to generated code. That expression asserts that the result of a memory allocation size calculation is strictly positive. An error will result in a printout and an abort(). The assertion can be inhibited by defining the macro NDEBUG (according to ANSI C).

If the assertion is inhibited, and a size calculation error is detected, an INTERNAL CORBA exception is set.

An internal reorganization of C backend generator code has been done (addition of module ic_cclient). Several changes has been done in generated C code:

The typedef ___generic___ has been replaced by the typedef ___exec_function___, which has been made more strict; for backward compatibility the ___generic___ typedef is now an alias for ___exec_function___.

Function parameters that are arrays, has been changed to be pointers to array slices, which are equivalent according to ANSI C.

The storage class specifier extern has been removed from function prototypes in header files.

Redundant type casts have been removed from generated code. Also some local "generic" variables have been renamed.

Fixed Bugs and Malfunctions

Module info vsn replaced by app_vsn.

Own Id: OTP-4341

IC-4.1.2 disabled the definition of float constants beginning with a zero (e.g. 0.14).

Own Id: OTP-4367

IC did not handle constant definitions correctly for char, string, wchar and wstring.

Own Id: OTP-4067, OTP-3222

IC did not recognize all reserved words defined in the OMG specification (2.3.1). The new keywords are fixed, abstract, custom, factory, local, native, private, public, supports, truncatable, 'ValueBase' and valuetype. But for now this is only active for the erl_corba backend and only incorrect usage of fixed, since this datatype is now supported, triggers an error for this backend.

Own Id: OTP-4368

It was not possible to use wchar or wstring inside a union body when using the Java backend.

Own Id: OTP-4365

The compile options this and handle_info did not behave as described in the documentation. The timeout now behaves as, for example, handle_info.

Own Id: OTP-4386, OTP-3231

If we typedef a sequence, which contains a struct or a union, the access function id/0 returned an incorrect IFR Id if a prefix pragma was used.

Own Id: OTP-4387

If an IDL file contained a prefix pragma, incorrect IFR-id's was generated in the IFR-registration operation oe_register for aliases (typedef) and attributes.

Own Id: OTP-4388, OTP-4392

For C back-ends, when encodings/decodings failed, memory allocated for variable size parameter types was not freed.

Own Id: OTP-4391

Aux Id: seq7438, ETOtr14009

If an IDL file contained a multiple typedef (e.g. typedef string str1, str2;), the oe_unregister operation failed to remove all data, in this case str2, from the IFR.

Own Id: OTP-4393

IC did not recognize octet-constants (e.g. const octet octetmax = 255;).

Own Id: OTP-4400

Negative 'long long' constants was not accepted (e.g. const long long MyConstant = -1;).

Own Id: OTP-4401

IC 4.1.2
Fixed Bugs and Malfunctions

Merging of map's (___map___) using the ___merge___ function does not work.

Own Id: OTP-4323

Error in generated C decode/encode functions for union's with discriminator where the union has no value for all discriminator values. E.g. a union with discriminator boolean where only the discriminator value TRUE has a corresponding union value. Here is how such a thing would look in IDL:

\011    union OptXList switch(boolean) {
\011       case TRUE: integer  val;
            };
          

Own Id: OTP-4322

Scoped op calls ('{scoped_op_calls, true}') does not handle module/function names beginning with capital letter (e.g. Megaco should be 'Megaco') for oneway operations (handle_cast).

Own Id: OTP-4310

A bug is fixed on C-IDL erlang binaries that caused pointer error when residing inside sequences.

Own Id: OTP-4303

IC 4.1.1
Improvements and New Features

A new option 'multiple_be' is added that allows multiple backend generation for the same IDL file.

Fixed Bugs and Malfunctions

A bug is fixed on IDL types that contain underscore '_'.

Own Id: OTP-3710

A bug is fixed on IDL structs that caused scope confusion when types and fields of a struct had the same name.

Own Id: OTP-2893

IC 4.0.7
Improvements and New Features

The Erlang binary special type is introduced, that allows efficient transfer of binaries between Erlang and C.

Own Id:OTP-4107

IC 4.0.6
Fixed Bugs and Malfunctions

A bug is fixed on noc backend which caused generation of erroneous code.

Own Id: OTP-3812

IC 4.0.5
Improvements and New Features

The pragma code option is extended to point specific functions on NOC backend, not only interfaces.

IC 4.0.4
Fixed Bugs and Malfunctions

A bug in pragma prefix when including IDL files is fixed. This caused problems for Erlang-corba IFR registrations.

Own Id: OTP-3620

IC 4.0.3
Improvements and New Features

Limited support on multiple file module definitions.

The current version supports multiple file module definitions all backends except the c oriented backends.

Own Id: OTP-3550

IC 4.0.2
Fixed Bugs and Malfunctions

A bug is fixed on Erlang backends.

The (recently) introduced generation of files describing sequence and array files were even true for included interfaces. In the case of some Erlang backends this were unnecessary.

Own Id: OTP-3485

IC 4.0.1
Improvements and New Features

New functionality added on Java and Erl_genserv backends.

On the Java client stub :

The Java client have now one more constructor function, that allows to continue with an already started connection.

void __stop() which sends a stop cast call to the server. While this causes the Erlang server to terminate, it sets a stop flag to the Java server environment, requesting the server to terminate.

void __reconnect() which closes the current client connection if open and then connects to the same server.

The Environment variable is now declared as public.

On the Java server skeleton :

boolean __isStopped() which returns true if a stop message where received, false otherwise. The user must check if this function returns true, and in this case exit the implemented server loop.

The Environment variable is now declared as protected which allows the implementation that extends the stub to access it.

On the Erlang gen_server stub :

stop(Server) which yields to a cast call to the standard gen_server stop function. This will always terminate the Erlang gen_server, while it will set the stop flag for the Java server stub.

Own Id: OTP-3433

IC 4.0
Improvements and New Features

New types handled by IC.

The following OMG-IDL types are added in this compiler version :

long long

unsigned long long

wchar

wstring

Own Id: OTP-3331

TypeCode as built in type and access code files for array and sequence types.

As TypeCode is a pseudo-interface, it is now is a built-in type on IC.

Access code files which contain information about TypeCode, ID and Name are now generated for user defined arrays and sequences.

Own Id: OTP-3392

IC 3.8.2
Fixed Bugs and Malfunctions

A bug is fixed on preprocessor directive expansion.

When nested #ifdef - #ifndef directives, a bug caused improper included file expansion. This is fixed by repairing the preprocessor expansion function.

Own Id: OTP-3472

IC 3.8.1
Improvements and New Features

Build in Erlang types support for java-backends

The built-in Erlang types term, port, ref and pid are needed in Java backends in order to support an efficient mapping between the two languages. The new types are also supported by additional helpers and holders to match with OMGs Java mapping As a result of this, the following classes are added to the com.ericsson.otp.ic interface :

Term,TermHelper,TermHolder which represents the built-in Erlang type term

Ref,RefHelper,RefHolder which represents the built-in Erlang type ref

Port,PortHelper, PortHolder which represents the built-in Erlang type port

Pid, PidHelper and PidHolder which represents the built-in Erlang type pid

Own Id: OTP-3348

Compile time preprocessor macro variable definitions

The preprocessor lacked possibility to accept user defined variables other than the one defined in IDL files. This limited the use of command-ruled IDL specifications. Now the build-in preprocessor allows the user to set variables by using the "preproc_flags" option the same way as using the "gcc" preprocessor.

Supported flags :

"]]> which defines a variable

"]]> which undefines a variable

Own Id: OTP-3349

Fixed Bugs and Malfunctions

A bug on comment type expansion is fixed.

The comment type expansion were erroneous when inherited types (NOC backend). This is now fixed and the type naming agree with the scope of the inheritor interface.

Own Id: OTP-3346

IC 3.8
Improvements and New Features

The code generated for java backend is optimized due to use of streams instead for tuple classes when (un)marshalling message calls. Support for building clients using asynchronous client calls and effective multi-threaded servers.

Own Id: OTP-3310

The any type is now supported for java backend.

Own Id: OTP-3311

A bug on C generated constants is fixed

While the constants are evaluated and behave well when used inside an IDL specification their C-export were not working properly. The constant export definitions were not generated well :

the declared C definition were erroneous ( the name did not always agree with the scope the constant were declared in ).

there were no C- definition generated for the c-server backend when the constants were declared inside an interface.

Own Id: OTP-3219

Incompatibilities

Due to optimizations in java backend, the stub initialization and usage differs than the previous version.

Client stub interface changes:

Client disconnects by calling the __disconnect() function instead for the old _closeConnection()

All marshal operation functions have now the interface :

_marshal(Environment<, Param |, Params >)]]>

instead for

_marshal(< Param, | Params, >OtpErlangPid, OtpErlangRef)]]>

All unmarshal operation functions have now the interface :

_< OpName >_unmarshal(Environment<, Param |, Params >)]]>

instead for

_< OpName >_unmarshal(< Param, | Params, >OtpErlangTuple, OtpErlangRef)]]>

Call reference extraction is available by the client function :

OtpErlangRef __getRef()

instead for previous function :

OtpErlangRef _getReference(OtpErlangTuple)

Server skeleton interface changes:

The implementation function no longer have to contain the two (2) contractor functions (with super()). This is due to the fact that there is only one contractor function for each skeleton file :

ImplBase()]]>

The parameter for the caller identity extraction function _getCallerPid is now an Environment variable instead for an OtpErlangTuple.

There is a new invoke function :

OtpOutputStream invoke(OtpInputStream)

instead for the old one :

OtpErlangTuple invoke(OtpErlangTuple)

The OtpConnection class function used for receiving messages is now :

OtpInputStream receiveBuf()

instead for the old one :

OtpErlangTuple receive()

The OtpConnection class function used for sending messages is now :

void sendBuf(OtpErlangPid, OtpOutputStream)

instead for the old one :

void send(OtpErlangPid, OtpErlangTuple)

IC 3.7.1
Improvements and New Features

Some memory usage optimizations for the compiler were done.

Fixed bugs and malfunctions

A bug is fixed when C backend is used.

When C-union with enumerant discriminator, the size calculation of the discriminator value were erroneous. This lead to the side effect that only the first case of the union were allowed. The error were fixed by fixing the size calculation of the discriminator.

Own Id: OTP-3215

IC 3.7
Fixed Bugs and Malfunctions

A bug is fixed when C backend is used.

When unions with enumerant discriminator were decoded, an error encountered in the union size calculation.

Own Id: OTP-3209

IC 3.6
Fixed Bugs and Malfunctions

A bug is fixed when NOC backend is used.

When several functions with the same name were found in the included file tree, a compile time failure occurred.

Own Id: OTP-3203

IC 3.5
Improvements and New Features

Noc backend optimization

When NOC backend is choosen, the type code information on the stub functions is reduced to a single atom "no_tk". This is the default behavior. The typecode generation is enabled by the "use_tk" switch.

Own Id: OTP-3196

Fixed Bugs and Malfunctions

General java backend bug fixes

Protocol errors on user defined structures and union types are corrected.

IC 3.4
Improvements and New Features

Semantic test enhancements.

The compiler detects now semantic errors when enumerant values collide with user defined types on the same name scope.

Own Id: OTP-3157

Fixed Bugs and Malfunctions

General java backend bug-fixes

Several bugs were fixed on user defined types.

Union discriminators work better when all possible case values are defined.

A bug on Interface inherited operations is fixed that cause errors on generated server switch.

Type definitions on included files are better generated.

Own Id: OTP-3156

IC 3.3
Improvements and New Features

A new back-end which generates Java code according to the CORBA IDL to Java mapping for communication with the Erlang distribution protocol has been added to IC. For the moment there is no support for the Erlang types Pid, Ref, Port and Term but this will be added later.

Own Id: OTP-2779

Fixed Bugs and Malfunctions

Fixed the bug that the c code backends sometimes generated incorrect code for struct arguments. They shall always be pointers.

Own Id: OTP-2732

The code generation is fixed so the array parameters now follow the CORBA V2.0 C mapping.

Own Id: OTP-2873

Fixed the problem that the checking of the numbers of out-parameters always was true.

Own Id: OTP-2944

Fixed the bug that some temporary variables was not declared when c code.

Own Id: OTP-2950

IC 3.2.2
Improvements and New Features

Unions are now supported to agree with OMG's C mapping.

Own Id: OTP-2868

There is now a possibility to use pre- and postcondition methods on the server side for IC generated Corba Objects. The compiler option is documented in the ic reference manual and an example of how the pre- and postcondition methods should be designed and used is added to ic example directory (an ReadMe.txt file exists with some instructions for running the example code).

Own Id: OTP-3068

Fixed Bugs and Malfunctions

The compiler ignores unknown/non supported pragma directives. A warning is raised while the generated code will then be the same as if the corresponding (unknown) pragma directive were missing.

Own Id: OTP-3052

IC 3.2.1
Fixed Bugs and Malfunctions

Wrong C code was generated for limited strings when they where included from another IDL specification.

Own Id: OTP-3033

IC 3.2
Fixed Bugs and Malfunctions

The buffers for in/output used by C-stubs are now expandable. This fixes buffer overflow problems when messages received/sent do not fit in buffers.

Own Id: OTP-3001

Incompatibilities

The CORBA_Environment structure has now two new fields, the buffers for in/output must now be dynamically allocated.

IC 3.1.2
Fixed Bugs and Malfunctions

The generated IFR registration function for constants has been fixed so the parameters are correct.

Own Id: OTP-2856

Error in the C code generation of ONEWAY operations without parameters The bug was an decoding error in the operation header. The generated code expected one parameter instead of zero. This is now fixed.

Own Id: OTP-2909

Type problems on floats and booleans fixed.

Erroneous code for runtime checks on float was removed and the internal format of the data representing the boolean value is upgraded.

Own Id: OTP-2925

The generated code for arrays of typedefined strings were erroneous in the C-backends due to a failure in the compiler internal type checking.

Own Id: OTP-2936

The generated code for typedefined nested sequences were erroneous in the C-backends. Pointer mismatches caused compilation failure.

Own Id: OTP-2937

Incompatibilities

The IDL specifications must be regenerated for C due to changes in the code generation.

One must regenerate IDL specifications for Erlang CORBA if there are constants in the specification due to previous errors in the IFR registration functions (OTP-2856).

IC 3.1.1
Improvements and New Features

Improvements on error report on unsupported types by

propagating warning when declaring unions in C -backends

Fixed Bugs and Malfunctions

A bug is fixed when arrays that contained variable size data on C-backends

The compiler generated erroneous code when IDL defined arrays that contained variable size data such as strings, variable size structs or sequences.

Own Id: OTP-2900

A bug is fixed when sequences that contained variable size data on C_backends

The compiler generated erroneous code when IDL defined arrays that contained variable size data such as strings, variable size structs or other sequences.

Own Id: OTP-2901

A bug concerning bounded strings on C-backends is fixed.

The compiler generated erroneous code for IDL defined bounded strings. Syntax errors were generated in special cases of typdedefined strings.

Own Id: OTP-2898

A runtime error when sequences that contained integer types is fixed.

When C-clients/server that communicated with Erlang clients/servers, and the data send by Erlang part were a list of small numbers, the Erlang runtime compacts the list to a string. This caused a runtime error when sending sequences of integer types and all had value less than 256.

Own Id: OTP-2899

An OMG IDL - C mapping problem on enumerant values is fixed.

The enumerant values names is now prefixed by the current scope, as defined in the specification.

Own Id: OTP-2902

A problem when using constants in array declarations is fixed.

Array dimensions declared with constants generated erroneous code.

Own Id: OTP-2864

Incompatibilities

Changes in C-generation on enumerant values.

IC 3.1
Fixed Bugs and Malfunctions

A bug is fixed on the generated structures.

The generated C code for the structures corresponds now to direct mapping of C-structs.

Own Id: OTP-2843

Incompatibilities

Included structures inside a struct are no longer pointers.

IC 3.0
Improvements and New Features

Interface change for C-backends

Major interface change. The new interface is CORBA 2.0 compliant.

Own Id: OTP-2845

The C-backends functionality is improved

Due to interface change and some unneeded error checks,the C-generated code is fairly optimized.

Fixed Bugs and Malfunctions

Several serious bugs on decoding and memory allocation are fixed.

Incompatibilities

Interface change on the C-backends

In order to be CORBA 2.0 compatible, the new version generates fully incompatible C code.

IC 2.5.1
Improvements and New Features

A new backend is added : C-server

This back-ends can be used to create servers, compatible to c-clients, and Erlang genserver clients. The code produced is a collection of functions for encoding and decoding messages and a switch that coordinates them. These parts can be used to create other servers as well. All functions are exported to header files.

Own Id: OTP-2713

The C-client functionality is improved

The static buffer used for input/output is removed along with the memset function that initiated it. The new client is at least 20-30 percent faster.

The internal structure of the client is changed. The client functions are now a collection of encoding and decoding message functions ruled by a specific call function. While the basic client generated is a synchronous client, the exported functions support the implementation of threaded asynchronous clients.

The static buffer used for input/output is remove along with the memset function that initiated it. The new client is at least 20-30 percent faster.

The code generated is generally improved, warnings are (almost) eliminated, while no unidentified variable errors occur.

The IDL types unsigned shorts, shorts, floats are supported now.

All generated functions are exported in client header files..

Own Id: OTP-2712

Changes in compiler usage and code generation.

A new option is added for the C-server back-end : c_server.

A new option is added : scoped_op_calls.

Fixed Bugs and Malfunctions

A bug oneway operations on erl_corba and erl_genserv that caused en exit due to internal interface error is fixed.

A bug on oneway operations on c_genserv back-end that caused several variables to be unidentified is fixed.

Incompatibilities

Interface change on the C-client

The client functions are called with two extra variables, a pointer to an array of char - used for storage and an integer - the array size

The IDL type attribute is disabled, due to some implementation problems.

IC 2.1
Improvements and New Features

The compiler now provides more in depth information (printouts) when errors occur.

In some cases the compiler stops compiling due to an abnormal exit or incompatible input. In this situation, a "fatal error" may occur but the compiler will generate information explaining the problem.

Own Id: OTP-2565

IC 2.0
Improvements and New Features

The IDL compiler is now a separate application and is longer a part of Orber.

Pragma handling implementation.

Pragma ID, prefix and version are implemented to agree with CORBA revision 2.0. The compiler accepts and applies these on the behavior of the compiled code.

In this implementation, pragmas are accepted by the parser and applied by the use of ic_pragma functions.

All IFR-identity handling now passes through pragma table. As pragma handling in OMG-IDL is affecting the identity of an ifr-object, all identity handling and registration is now controlled by pragma functions. A hash table called "pragmatab" contains vital identity information used under compilation.

There two major pragma categories :

Normal pragmas, are used in the code where basic definitions and statements appear.

Under certain circumstances, ugly pragmas can now appear inside code, parameter lists, structure definitions ... etc.

It is quite challenging to allow ugly pragmas, but the effects of unlimited ugly pragma implementation on the parser can be enormous. Ugly pragmas can cause the parser source code to become time consuming and user unreadable.

In order to allow ugly pragmas but not destroy the current structure of the parser, the use of ugly pragmas is limited. Multiple pragma directives are allowed inside parameter lists, unions, exceptions, enumerated type, structures... as long as they are do not appear between two keywords or between keywords and identifiers.

The pragma effect is the same for both scope and basic pragma rules.

When compiling, an IFR-identity must be looked up several times but by storing identity aliases inside the pragma table there this an increase in both speed and flexibility.

Own Id: OTP-2128

Code for interface inheritance registration for the IFR registration code .

Inherited interfaces can now be registered as a list of interface descriptions by entering code for inherited interface registration under new interface creation. This is achieved by correcting the function reg2/6 and adding two more functions, get_base_interfaces/2 and call_fun_str/2

Own Id: OTP-2134

IFR registration checks for included IDL files.

All top level definitions (with respect to the scope) - modules, interfaces, constants, types or exceptions - found in an IDL file are either defined inside the compiled IDL file or inside included files. By having an extended registration of all top level definitions it becomes possible to simply produce checks for those included by the current IDL file. A function call include_reg_test/1 is added in all OE_* files that checks for IFR-registration on all included IDL files. The code for that function is added inside the OE_* file, while the function is called under OE_*:OE_register/0 operation.

Own Id: OTP-2138

Exception registration under IFR-operation creation.

By entering code for exception registration under operation creation, the exceptions of an operation can be checked now. This is done by correcting the function get_exceptions/4 and adding two more functions, excdef/5 and get_EXC_ID/5 ( the last two are cooperating with the first one and all three are defined in the module "ictk" ).

Own Id: OTP-2102

New back-end to IDL compiler : Plain Erlang.

The new back-end just translates IDL specifications to Erlang module calls. No pragmas are allowed.

Own Id: OTP-2471

New back-end to IDL compiler : generic server.

A new back-end that translates IDL specifications to a standard OTP generic server.

Own Id: OTP-2482

New back-end to IDL compiler : c client generation

A new back-end that translates IDL specifications to a C API for accessing servers in Erlang.

Own Id: OTP-1511

All records in generated files reveal own Erlang modules.

In Erlang related back-ends, every structure which generates definition form is a record, (such as union, struct, exception.... ). These records are held in a generated Erlang files which contain functions that reveal record information.

The Erlang file which contain these functions is named after the scope of the record (similar to the generated module and interface files).

Three functions are available :

tc/0 - returns the record type code,

id/0 - returns the record id,

name - returns the record name.

Own Id: OTP-2473

Changes in compiler usage and code generation.

New compilation flags. New flag be ( = back-end ) which is used by the compiler to choose back-end. Default back-end is set to erl_corba.

Stub files have an extra function oe_dependency/0 indicating file dependency. This helps the user to determine which IDL files should to be compiled beside the compiled file.

Own Id: OTP-2474

The IDL generation for CORBA is changed so standard gen_server return values can be used from the implementation module. The change is compatible so that old values remain valid.

Own Id: OTP-2485

It's now possible to generate an API to a CORBA object that accepts timeout values in the calls in the same manner as gen_server. The option to the compiler is "timeout".

Own Id: OTP-2487

Fixed Bugs and Malfunctions

Empty file generation problem is fixed. When the IDL module definition did not contain constant definitions, the generated stub file for that module definition was empty. After checking the module body, these files will not be generated anymore.

Incompatibilities

Changes in generated files.

Stub-files generated by the compiler had prefix "OE_" and those used by Orber had also a register/unregister function called "OE_register"/"OE_unregister" and a directive "OE_get_interface" passed to the gen_server. This made it difficult/irritating to use, for example call to the register function in Orber would appear as shown below:

'OE_filename':'OE_register'().

This is changed by using the prefix "oe_" instead for "OE_" for the above. A registration call in Orber is now written:

oe_filename:oe_register().

Own Id: OTP-2440