## 1 IDL Compiler Release Notes

### 1.1 IC 4.1.2, Release Notes

#### 1.1.1 Improvements and new features

- -

#### 1.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 desciminator where the union has no value for all descriminator values. E.g. a union with descriminator boolean where only the descriminator value TRUE has a corresponding union value. Here is how such a thing would look in IDL:

                  union OptXList switch(boolean) {
                     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

#### 1.1.3 Incompatibilities

-

#### 1.1.4 Known bugs and problems

- -

### 1.2 IC 4.1.1, Release Notes

#### 1.2.1 Improvements and new features

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

#### 1.2.2 Fixed bugs and malfunctions

- A bug is fixed on IDL types that contain undrescore '_'.
  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

#### 1.2.3 Incompatibilities

-

#### 1.2.4 Known bugs and problems

- -

### 1.3 IC 4.0.7, Release Notes

#### 1.3.1 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

#### 1.3.2 Fixed bugs and malfunctions

- -

#### 1.3.3 Incompatibilities

-

#### 1.3.4 Known bugs and problems

- The same as in previous version.

### 1.4 IC 4.0.6, Release Notes

#### 1.4.1 Improvements and new features

- -

#### 1.4.2 Fixed bugs and malfunctions

- A bug is fixed on noc backend which caused generation of errornous code.
  Own Id: OTP-3812

#### 1.4.3 Incompatibilities

-

#### 1.4.4 Known bugs and problems

- The same as in previous version.

### 1.5 IC 4.0.5, Release Notes

#### 1.5.1 Improvements and new features

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

#### 1.5.2 Fixed bugs and malfunctions

- -

#### 1.5.3 Incompatibilities

-

#### 1.5.4 Known bugs and problems

- The same as in previous version.

### 1.6 IC 4.0.4, Release Notes

#### 1.6.1 Improvements and new features

- -

#### 1.6.2 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

#### 1.6.3 Incompatibilities

-

#### 1.6.4 Known bugs and problems

- The same as in previous version.

### 1.7 IC 4.0.3, Release Notes

#### 1.7.1 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

#### 1.7.2 Fixed bugs and malfunctions

- -

#### 1.7.3 Incompatibilities

-

#### 1.7.4 Known bugs and problems

- Multiple file definition of a module is not supported on c oriented backends.
- Type definitions on multiple file module level are limited to containers, such as modules and interfaces. This is true on corba and Erlang backends.

### 1.8 IC 4.0.2, Release Notes

#### 1.8.1 Improvements and new features

-

#### 1.8.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

#### 1.8.3 Incompatibilities

-

#### 1.8.4 Known bugs and problems

- The same as in previous version.

### 1.9 IC 4.0.1, Release Notes

#### 1.9.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 costructor function, that allows to continue with an allready 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

#### 1.9.2 Fixed bugs and malfunctions

-

#### 1.9.3 Incompatibilities

-

#### 1.9.4 Known bugs and problems

- The same as in previous version.

### 1.10 IC 4.0, Release Notes

#### 1.10.1 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 `psevdo`-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

#### 1.10.2 Fixed bugs and malfunctions

-

#### 1.10.3 Incompatibilities

-

#### 1.10.4 Known bugs and problems

- The same as in previous version.

### 1.11 IC 3.8.2, Release Notes

#### 1.11.1 Improvements and new features

-

#### 1.11.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

#### 1.11.3 Incompatibilities

-

#### 1.11.4 Known bugs and problems

- The same as in previous version.

### 1.12 IC 3.8.1, Release Notes

#### 1.12.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 :
  - `"-D< Variable >"` which defines a variable
  - `"-U< Variable >"` which undefines a variable
  Own Id: OTP-3349

#### 1.12.2 Fixed bugs and malfunctions

A bug on comment type expansion is fixed.

The comment type expansion were errornous 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

#### 1.12.3 Incompatibilities

-

#### 1.12.4 Known bugs and problems

- The same as in previous version.

### 1.13 IC 3.8, Release Notes

#### 1.13.1 Improvements and new features

- The code generated for java backend is optimized due to use of streams insead for tuple classes when (un)marshalling message calls. Support for building clients using asynchronous client calls and effective multithreaded servers.
  Own Id: OTP-3310
- The `any` type is now supported for java backend.
  Own Id: OTP-3311

#### 1.13.2 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 errornous ( 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

#### 1.13.3 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 :
  `void _< OpName >_marshal(Environment<, Param |, Params >)`
  instead for
  `OtpErlangTuple _< OpName >_marshal(< Param, | Params, >OtpErlangPid, OtpErlangRef)`
- All `unmarshal` operation functions have now the interface :
  `< Ret value > _< OpName >_unmarshal(Environment<, Param |, Params >)`
  instead for
  `< Ret value > _< 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) contructor functions (with `super()`). This is due to the fact that there is only one contructor function for each skeleton file :
  `public _< interface name >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)`

#### 1.13.4 Known bugs and problems

- The same as in previous version.

### 1.14 IC 3.7.1, Release Notes

#### 1.14.1 Improvements and new features

Some memory usage optimizations for the compiler were done.

#### 1.14.2 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 errornous. This lead to the sideeffect that only the first case of the union were alowed. The error were fixed by fixing the size calculation of the discriminator.
  Own Id: OTP-3215

#### 1.14.3 Incompatibilities

-

#### 1.14.4 Known bugs and problems

- The same as in previous version.

### 1.15 IC 3.7, Release Notes

#### 1.15.1 Improvements and new features

-

#### 1.15.2 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

#### 1.15.3 Incompatibilities

-

#### 1.15.4 Known bugs and problems

- The same as in previous version.

### 1.16 IC 3.6, Release Notes

#### 1.16.1 Improvements and new features

-

#### 1.16.2 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 occured.
  Own Id: OTP-3203

#### 1.16.3 Incompatibilities

-

#### 1.16.4 Known bugs and problems

- The same as in previous version.

### 1.17 IC 3.5, Release Notes

#### 1.17.1 Improvements and new features

- Noc backend optimization
  When NOC backend is choosed, the type code information on the stub functions is reduced to a single atom "no_tk". This is the default behaviour. The typecode generation is enabled by the "use_tk" switch.
  Own Id: OTP-3196

#### 1.17.2 Fixed bugs and malfunctions

- General java backend bugfixes
  Protocol errors on user defined structures and union types are corrected.

#### 1.17.3 Incompatibilities

-

#### 1.17.4 Known bugs and problems

- The same as in previous version.

### 1.18 IC 3.4, Release Notes

#### 1.18.1 Improvements and new features

- Semantic test enhancements.
  The compiler detects now semantic errors when enumerant values colide with user defined types on the same name scope.
  Own Id: OTP-3157

#### 1.18.2 Fixed bugs and malfunctions

- General java backend bugfixes
  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

#### 1.18.3 Incompatibilities

-

#### 1.18.4 Known bugs and problems

- The same as in previous version.

### 1.19 IC 3.3, Release Notes

#### 1.19.1 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

#### 1.19.2 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 outparameters always was true.
  Own Id: OTP-2944
- Fixed the bug that some temporary variables was not declared when c code.
  Own Id: OTP-2950

#### 1.19.3 Incompatibilities

-

#### 1.19.4 Known bugs and problems

- The same as in previous version.

### 1.20 IC 3.2.2, Release Notes

#### 1.20.1 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

#### 1.20.2 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 (unkown) pragma directive were missing.
  Own Id: OTP-3052

#### 1.20.3 Incompatibilities

-

#### 1.20.4 Known bugs and problems

- The same as in previous version.

### 1.21 IC 3.2.1, Release Notes

#### 1.21.1 Improvements and new features

-

#### 1.21.2 Fixed bugs and malfunctions

- Wrong C code was generated for limited strings when they where included from another IDL specification.
  Own Id: OTP-3033

#### 1.21.3 Incompatibilities

-

#### 1.21.4 Known bugs and problems

- The same as in previous version.

### 1.22 IC 3.2, Release Notes

#### 1.22.1 Improvements and new features

-

#### 1.22.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/sended do not fit in buffers.
  Own Id: OTP-3001

#### 1.22.3 Incompatibilities

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

#### 1.22.4 Known bugs and problems

- The same as in previous version.

### 1.23 IC 3.1.2, Release Notes

#### 1.23.1 Improvements and new features

-

#### 1.23.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 uppgraded.
  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

#### 1.23.3 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).

#### 1.23.4 Known bugs and problems

- OMG IDL - C mapping is not consistent on sequnce naming.
  There is som inconsistencies around sequence naming in the specification which must be investigated further.
- Problems with nested sequences
  Nested sequences on the form:

      typedef sequence&lt;sequence&lt;long&gt; &gt; ex;

  are not generated correctly.
  Nested sequences can be used if the innermost sequence is separately typedefined.

                  typedef sequence&lt;long&gt; lseq;
                  typedef sequence&lt;lseq&gt; ex;

### 1.24 IC 3.1.1, Release Notes

#### 1.24.1 Improvements and new features

- Improvements on error repport on unsupported types by
  propagating warning when declaring unions in C -backends

#### 1.24.2 Fixed bugs and malfunctions

- A bug is fixed when arrays that contained variable size data on C-backends
  The compiler generated errornous code when IDL defined arrays that contained variable size data such as strings, varible 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 errornous 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 errornous 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 dimentions declared with contants generated erroneous code.
  Own Id: OTP-2864

#### 1.24.3 Incompatibilities

- Changes in C-generation on enumerant values.

#### 1.24.4 Known bugs and problems

- OMG IDL - C mapping is not consistent on sequnce naming.
  There is som inconsistencies around sequence naming in the specification which must be investigated further.

### 1.25 IC 3.1, Release Notes

#### 1.25.1 Improvements and new features

- No new features are added

#### 1.25.2 Changes in compiler usage and code generation.

- No changes since last version.

#### 1.25.3 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

#### 1.25.4 Incompatibilities

- Included structures inside a struct are no longer pointers.

#### 1.25.5 Known bugs and problems

- Runtime error when list that contain longs, shorts
  When C-clients/server that communicates with Erlang clients/servers, and the data send by Erlang part is a list of small numbers, the Erlang runtime compacts the list to a string
  This is only actual in case of numbers with value less than 256
- Compiler failure when arrays that contain dynamic data.
  The compiler fails to compile IDL defined arrays that contain complex data.

### 1.26 IC 3.0, Release Notes

#### 1.26.1 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.

#### 1.26.2 Changes in compiler usage and code generation.

- No changes since last version.

#### 1.26.3 Fixed bugs and malfunctions

- Several serious bugs on decoding and memory allocation are fixed.

#### 1.26.4 Incompatibilities

- Interface change on the C-backends
  In order to be CORBA 2.0 compatible, the new version generates fully incompatible C code.

#### 1.26.5 Known bugs and problems

- The same as in version 2.5.1

### 1.27 IC 2.5.1, Release Notes

#### 1.27.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 procent faster.
  - The internal structure of the client is changed. The client fuctions 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 asynchonous 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 procent 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

#### 1.27.2 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`.

#### 1.27.3 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 unidentifined is fixed.

#### 1.27.4 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.

#### 1.27.5 Known bugs and problems

- The same as in version 2.1

### 1.28 IC 2.1, Release Notes

#### 1.28.1 Improvements and new features

- The compiler now provides more in depth information (outprints) 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

#### 1.28.2 Changes in compiler usage and code generation.

- No changes since version 2.0

#### 1.28.3 Fixed bugs and malfunctions

- No changes since version 2.0

#### 1.28.4 Incompatibilities

- The same as in version 2.0

#### 1.28.5 Known bugs and problems

- The same as in version 2.0

### 1.29 IC 2.0, Release Notes

#### 1.29.1 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

#### 1.29.2 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.

#### 1.29.3 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

#### 1.29.4 Known bugs and problems

- No checks are made to ensure reference integrity. IDL specifies that identifiers must have only one meaning in each scope.
- Files are not closed properly when the compiler has detected errors. This may result in an `emfiles` error code from the Erlang runtime system when the maximum number of open files has been exceeded. The solution is to restart the Erlang emulator when the file error occurs.
- If inline enumerator discriminator types are used, then the name of the enumeration is on the same scope as the name of the union type. This does not apply when the discriminator type is written using a type reference.
- Parser failure with syntax error when "standard" preprocessor directives such as #ifndef and #include (not pragmas) are used in other than top level scope.

### 1.30 Previous Release Notes

For release notes on previous versions see the release notes on Orber (version previous to 1.0.3).

Copyright © 1991-2002 Ericsson Utvecklings AB