aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ic/doc/src/old_notes.xml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ic/doc/src/old_notes.xml')
-rw-r--r--lib/ic/doc/src/old_notes.xml1565
1 files changed, 1565 insertions, 0 deletions
diff --git a/lib/ic/doc/src/old_notes.xml b/lib/ic/doc/src/old_notes.xml
new file mode 100644
index 0000000000..9ba0262573
--- /dev/null
+++ b/lib/ic/doc/src/old_notes.xml
@@ -0,0 +1,1565 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2003</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ 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.
+
+ </legalnotice>
+
+ <title>IDL Compiler Release Notes</title>
+ <prepared></prepared>
+ <docno></docno>
+ <checked></checked>
+ <date>2003-11-19</date>
+ <rev>AB</rev>
+ </header>
+
+ <section>
+ <title>IC 4.1.8</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>IDL-files containing <c>result</c> or <c>Result</c> as,
+ for example, parameter name, caused an exit with reason
+ <c>bad_match</c>.</p>
+ <p>Own Id: OTP-4532</p>
+ </item>
+ <item>
+ <p>Uninitialized variables were used in <c>ic_init_ref</c> for
+ C backends. </p>
+ <p>Own Id: OTP-4537 <br></br>
+
+ Aux Id: seq7666, ETOtr17107</p>
+ </item>
+ <item>
+ <p><c>CORBA_Environment_alloc()</c> left some fields
+ uninitialized in the returned pointer to an
+ <c>CORBA_Environment</c> for C backends.</p>
+ <p>Own Id: OTP-4538</p>
+ </item>
+ <item>
+ <p>The function <c>ic_compare_refs()</c> for C backends
+ could find two unequal references to be equal.</p>
+ <p>Own Id: OTP-4539</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.1.7</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Operation names were always scoped in C server backend,
+ irrespective of the setting of the option
+ <c>scoped_op_calls</c>.</p>
+ <p>Own Id: OTP-4521 <br></br>
+
+ Aux Id: seq7643, ETOtr16925</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.1.6</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>For C backends generated code checks that the
+ <c>_length</c> field of bounded sequences (i.e. specified
+ as <c><![CDATA[sequence <TYPE, MAX>]]></c>) does not exceed the
+ specified maximum length. If so, an exception is raised.</p>
+ <p>Own Id: OTP-4471</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>The <c>_maximum</c> field was not set for sequence structs
+ generated by the C backends.</p>
+ <p>Own Id: OTP-4471 <br></br>
+
+ Aux Id: seq7600, ETOtr16308</p>
+ </item>
+ <item>
+ <p>There was a memory leak in C backends in case there was a
+ decoding error in a sequence with elements of basic type.</p>
+ <p>Own Id: OTP-4475</p>
+ </item>
+ <item>
+ <p>For for C backends, IDL structs defined within an
+ interface were not mapped into C structs in appropriate
+ include files.</p>
+ <p>Own Id: OTP-4481 <br></br>
+
+ Aux Id: seq7617</p>
+ </item>
+ <item>
+ <p>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.</p>
+ <p>Own Id: OTP-4488</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.1.5</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Invalid C code was generated for type short. </p>
+ <p>Own Id: OTP-4450 <br></br>
+
+ Aux Id: seq7582</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.1.4</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>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.</p>
+ <p>Own Id: OTP-4448 <br></br>
+
+ Aux Id: seq7582</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.1.3.1</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A non-ANSI compliant construct in libic.a was changed.</p>
+ <p>Own Id: -</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.1.3</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>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.</p>
+ </item>
+ <item>
+ <p>For C backends an <c>assert()</c> 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
+ <c>abort()</c>. The assertion can be inhibited by defining
+ the macro <c>NDEBUG</c> (according to ANSI C).</p>
+ <p>If the assertion is inhibited, and a size calculation error
+ is detected, an INTERNAL CORBA exception is set. </p>
+ </item>
+ <item>
+ <p>An internal reorganization of C backend generator code has
+ been done (addition of module <c>ic_cclient</c>). Several
+ changes has been done in generated C code:</p>
+ <list type="bulleted">
+ <item>
+ <p>The typedef <c>___generic___</c> has been replaced by
+ the typedef <c>___exec_function___</c>, which has been
+ made more strict; for backward compatibility the
+ <c>___generic___</c> typedef is now an alias for
+ <c>___exec_function___</c>.</p>
+ </item>
+ <item>
+ <p>Function parameters that are arrays, has been changed
+ to be pointers to array slices, which are equivalent
+ according to ANSI C. </p>
+ </item>
+ <item>
+ <p>The storage class specifier <c>extern</c> has been
+ removed from function prototypes in header files.</p>
+ </item>
+ <item>
+ <p>Redundant type casts have been removed from generated code.
+ Also some local "generic" variables have been renamed.</p>
+ </item>
+ </list>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Module info vsn replaced by app_vsn.</p>
+ <p>Own Id: OTP-4341</p>
+ </item>
+ <item>
+ <p>IC-4.1.2 disabled the definition of float constants
+ beginning with a zero (e.g. <c>0.14</c>).</p>
+ <p>Own Id: OTP-4367</p>
+ </item>
+ <item>
+ <p>IC did not handle constant definitions correctly for
+ char, string, wchar and wstring.</p>
+ <p>Own Id: OTP-4067, OTP-3222</p>
+ </item>
+ <item>
+ <p>IC did not recognize all reserved words defined in the
+ OMG specification (2.3.1). The new keywords are <c>fixed, abstract, custom, factory, local, native, private, public, supports, truncatable, 'ValueBase'</c> and
+ <c>valuetype</c>. But for now this is only active for the
+ <c>erl_corba</c> backend and only incorrect usage of
+ <c>fixed</c>, since this datatype is now supported,
+ triggers an error for this backend.</p>
+ <p>Own Id: OTP-4368</p>
+ </item>
+ <item>
+ <p>It was not possible to use wchar or wstring inside a
+ union body when using the Java backend.</p>
+ <p>Own Id:
+ OTP-4365</p>
+ </item>
+ <item>
+ <p>The compile options <c>this</c> and <c>handle_info</c>
+ did not behave as described in the documentation. The
+ <c>timeout</c> now behaves as, for example,
+ <c>handle_info</c>.</p>
+ <p>Own Id: OTP-4386, OTP-3231</p>
+ </item>
+ <item>
+ <p>If we typedef a sequence, which contains a struct or a union,
+ the access function <c>id/0</c> returned an incorrect IFR Id
+ if a prefix pragma was used.</p>
+ <p>Own Id: OTP-4387</p>
+ </item>
+ <item>
+ <p>If an IDL file contained a prefix pragma, incorrect
+ IFR-id's was generated in the IFR-registration operation
+ <c>oe_register</c> for aliases (typedef) and
+ attributes.</p>
+ <p>Own Id: OTP-4388, OTP-4392</p>
+ </item>
+ <item>
+ <p>For C back-ends, when encodings/decodings failed, memory
+ allocated for variable size parameter types was not freed.</p>
+ <p>Own Id: OTP-4391
+ <br></br>
+Aux Id: seq7438, ETOtr14009</p>
+ </item>
+ <item>
+ <p>If an IDL file contained a multiple typedef
+ (e.g. typedef string str1, str2;), the <c>oe_unregister</c>
+ operation failed to remove all data, in this case str2,
+ from the IFR.</p>
+ <p>Own Id: OTP-4393</p>
+ </item>
+ <item>
+ <p>IC did not recognize octet-constants
+ (e.g. const octet octetmax = 255;).</p>
+ <p>Own Id: OTP-4400</p>
+ </item>
+ <item>
+ <p>Negative 'long long' constants was not accepted
+ (e.g. const long long MyConstant = -1;).</p>
+ <p>Own Id: OTP-4401</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.1.2</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Merging of map's (<em>___map___</em>) using the
+ <em>___merge___</em> function does not work.</p>
+ <p>Own Id: OTP-4323</p>
+ </item>
+ <item>
+ <p>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:</p>
+ <pre>
+\011 union OptXList switch(boolean) {
+\011 case TRUE: integer val;
+ };
+ </pre>
+ <p>Own Id: OTP-4322</p>
+ </item>
+ <item>
+ <p>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).</p>
+ <p>Own Id: OTP-4310</p>
+ </item>
+ <item>
+ <p>A bug is fixed on C-IDL erlang binaries that caused
+ pointer error when residing inside sequences.</p>
+ <p>Own Id: OTP-4303</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.1.1</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>A new option 'multiple_be' is added that allows multiple backend
+ generation for the same IDL file.</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug is fixed on IDL types that contain underscore '_'.</p>
+ <p>Own Id: OTP-3710</p>
+ </item>
+ <item>
+ <p>A bug is fixed on IDL structs that caused scope confusion
+ when types and fields of a struct had the same name.</p>
+ <p>Own Id: OTP-2893</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.0.7</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>The Erlang binary special type is introduced, that
+ allows efficient transfer of binaries between Erlang and C. </p>
+ <p>Own Id:OTP-4107</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.0.6</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug is fixed on noc backend which caused generation of erroneous code.</p>
+ <p>Own Id: OTP-3812</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.0.5</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>The pragma code option is extended to point
+ specific functions on NOC backend, not only
+ interfaces.</p>
+ <p></p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.0.4</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug in pragma prefix when including IDL files is fixed.
+ This caused problems for Erlang-corba IFR registrations.</p>
+ <p>Own Id: OTP-3620</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.0.3</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Limited support on multiple file module definitions.</p>
+ <p>The current version supports multiple file module definitions all
+ backends except the c oriented backends.</p>
+ <p>Own Id: OTP-3550</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.0.2</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug is fixed on Erlang backends.</p>
+ <p>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.</p>
+ <p>Own Id: OTP-3485</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.0.1</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>New functionality added on Java and Erl_genserv backends.</p>
+ <p></p>
+ <list type="bulleted">
+ <item>
+ <p>On the Java client stub :</p>
+ <p></p>
+ <list type="bulleted">
+ <item>
+ <p>The Java client have now one more constructor function,
+ that allows to continue with an already started connection.</p>
+ </item>
+ <item>
+ <p><c>void __stop()</c> 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.</p>
+ </item>
+ <item>
+ <p><c>void __reconnect()</c> which closes the current client connection
+ if open and then connects to the same server.</p>
+ </item>
+ </list>
+ <p>The Environment variable is now declared as <c>public</c>. </p>
+ </item>
+ <item>
+ <p>On the Java server skeleton :</p>
+ <p></p>
+ <list type="bulleted">
+ <item>
+ <p><c>boolean __isStopped()</c> which returns true if a <c>stop</c>
+ message where received, false otherwise. The user must check if
+ this function returns true, and in this case exit the implemented
+ server loop.</p>
+ </item>
+ </list>
+ <p>The Environment variable is now declared as <c>protected</c> which
+ allows the implementation that extends the stub to access it.</p>
+ </item>
+ <item>
+ <p>On the Erlang gen_server stub :</p>
+ <p></p>
+ <list type="bulleted">
+ <item>
+ <p><c>stop(Server)</c> which yields to a cast call to the standard
+ gen_server <c>stop</c> function. This will always terminate the
+ Erlang gen_server, while it will set the stop flag for the
+ Java server stub.</p>
+ </item>
+ </list>
+ </item>
+ </list>
+ <p>Own Id: OTP-3433</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 4.0</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>New types handled by IC.</p>
+ <p>The following OMG-IDL types are added in this compiler version :</p>
+ <list type="bulleted">
+ <item>
+ <p>long long</p>
+ <p>unsigned long long</p>
+ <p>wchar</p>
+ <p>wstring</p>
+ </item>
+ </list>
+ <p>Own Id: OTP-3331</p>
+ <p></p>
+ </item>
+ <item>
+ <p>TypeCode as built in type and access code files for array and sequence types.</p>
+ <list type="bulleted">
+ <item>
+ <p>As TypeCode is a <c>pseudo</c>-interface, it is now is a built-in type on IC.</p>
+ </item>
+ <item>
+ <p>Access code files which contain information about TypeCode, ID and Name are
+ now generated for user defined arrays and sequences.</p>
+ </item>
+ </list>
+ <p>Own Id: OTP-3392</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.8.2</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <p>A bug is fixed on preprocessor directive expansion.</p>
+ <p>When nested #ifdef - #ifndef directives, a bug caused
+ improper included file expansion. This is fixed by
+ repairing the preprocessor expansion function.</p>
+ <p>Own Id: OTP-3472</p>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.8.1</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Build in Erlang types support for java-backends</p>
+ <p>The built-in Erlang types <c>term, port, ref</c> and <c>pid</c>
+ 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 <c>com.ericsson.otp.ic</c> interface :</p>
+ <list type="bulleted">
+ <item>
+ <p><c>Term,TermHelper,TermHolder</c> which represents the
+ built-in Erlang type <c>term</c></p>
+ </item>
+ <item>
+ <p><c>Ref,RefHelper,RefHolder</c> which represents the
+ built-in Erlang type <c>ref</c></p>
+ </item>
+ <item>
+ <p><c>Port,PortHelper, PortHolder</c> which represents the
+ built-in Erlang type <c>port</c></p>
+ </item>
+ <item><c>Pid, PidHelper and PidHolder</c> which represents the
+ built-in Erlang type <c>pid</c></item>
+ </list>
+ <p></p>
+ <p>Own Id: OTP-3348</p>
+ <p></p>
+ </item>
+ <item>
+ <p>Compile time preprocessor macro variable definitions</p>
+ <p>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.</p>
+ <p>Supported flags : </p>
+ <list type="bulleted">
+ <item>
+ <p><c><![CDATA["-D< Variable >"]]></c> which defines a variable</p>
+ </item>
+ <item>
+ <p><c><![CDATA["-U< Variable >"]]></c> which undefines a variable</p>
+ </item>
+ </list>
+ <p></p>
+ <p>Own Id: OTP-3349</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <p>A bug on comment type expansion is fixed.</p>
+ <p>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.</p>
+ <p>Own Id: OTP-3346</p>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.8</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>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.</p>
+ <p>Own Id: OTP-3310</p>
+ <p></p>
+ </item>
+ <item>
+ <p>The <c>any</c> type is now supported for java backend.</p>
+ <p>Own Id: OTP-3311</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>A bug on C generated constants is fixed</title>
+ <p>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 :</p>
+ <list type="bulleted">
+ <item>
+ <p>the declared C definition were erroneous ( the name did not always agree
+ with the scope the constant were declared in ).</p>
+ </item>
+ <item>
+ <p>there were no C- definition generated for the c-server backend when
+ the constants were declared inside an interface.</p>
+ </item>
+ </list>
+ <p>Own Id: OTP-3219</p>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <p>Due to optimizations in java backend, the stub initialization and usage
+ differs than the previous version.</p>
+ <p>Client stub interface changes:</p>
+ <list type="bulleted">
+ <item>
+ <p>Client disconnects by calling the <c>__disconnect()</c> function instead
+ for the old <c>_closeConnection()</c></p>
+ <p></p>
+ </item>
+ <item>
+ <p>All <c>marshal</c> operation functions have now the interface :</p>
+ <p><c><![CDATA[void _< OpName >_marshal(Environment<, Param |, Params >)]]></c></p>
+ <p>instead for</p>
+ <p><c><![CDATA[OtpErlangTuple _< OpName >_marshal(< Param, | Params, >OtpErlangPid, OtpErlangRef)]]></c></p>
+ <p></p>
+ </item>
+ <item>
+ <p>All <c>unmarshal</c> operation functions have now the interface :</p>
+ <p><c><![CDATA[< Ret value > _< OpName >_unmarshal(Environment<, Param |, Params >)]]></c></p>
+ <p>instead for</p>
+ <p><c><![CDATA[< Ret value > _< OpName >_unmarshal(< Param, | Params, >OtpErlangTuple, OtpErlangRef)]]></c></p>
+ <p></p>
+ </item>
+ <item>
+ <p>Call reference extraction is available by the client function :</p>
+ <p><c>OtpErlangRef __getRef()</c></p>
+ <p>instead for previous function :</p>
+ <p><c>OtpErlangRef _getReference(OtpErlangTuple)</c></p>
+ <p></p>
+ </item>
+ </list>
+ <p>Server skeleton interface changes:</p>
+ <list type="bulleted">
+ <item>
+ <p>The implementation function no longer have to contain the
+ two (2) contractor functions (with <c>super()</c>). This is due
+ to the fact that there is only one contractor function for each
+ skeleton file :</p>
+ <p><c><![CDATA[public _< interface name >ImplBase()]]></c></p>
+ <p></p>
+ </item>
+ <item>
+ <p>The parameter for the caller identity extraction function <c>_getCallerPid</c>
+ is now an <c>Environment</c> variable instead for an <c>OtpErlangTuple</c>.</p>
+ <p></p>
+ </item>
+ <item>
+ <p>There is a new <c>invoke</c> function :</p>
+ <p><c>OtpOutputStream invoke(OtpInputStream)</c></p>
+ <p>instead for the old one :</p>
+ <p><c>OtpErlangTuple invoke(OtpErlangTuple)</c></p>
+ <p></p>
+ </item>
+ <item>
+ <p>The <c>OtpConnection</c> class function used for receiving messages is now :</p>
+ <p><c>OtpInputStream receiveBuf()</c></p>
+ <p>instead for the old one :</p>
+ <p><c>OtpErlangTuple receive()</c></p>
+ <p></p>
+ </item>
+ <item>
+ <p>The <c>OtpConnection</c> class function used for sending messages is now :</p>
+ <p><c>void sendBuf(OtpErlangPid, OtpOutputStream)</c></p>
+ <p>instead for the old one :</p>
+ <p><c>void send(OtpErlangPid, OtpErlangTuple)</c></p>
+ <p></p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.7.1</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <p>Some memory usage optimizations for the compiler were done.</p>
+ </section>
+
+ <section>
+ <title>Fixed bugs and malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug is fixed when C backend is used.</p>
+ <p>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. </p>
+ <p>Own Id: OTP-3215</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.7</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug is fixed when C backend is used.</p>
+ <p>When unions with enumerant discriminator
+ were decoded, an error encountered in the
+ union size calculation. </p>
+ <p>Own Id: OTP-3209</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.6</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug is fixed when NOC backend is used.</p>
+ <p>When several functions with the same name
+ were found in the included file tree,
+ a compile time failure occurred.</p>
+ <p>Own Id: OTP-3203</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.5</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Noc backend optimization</p>
+ <p>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.</p>
+ <p>Own Id: OTP-3196</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>General java backend bug fixes </p>
+ <p>Protocol errors on user defined structures and
+ union types are corrected.</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.4</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Semantic test enhancements.</p>
+ <p>The compiler detects now semantic errors when enumerant
+ values collide with user defined types on the same name scope.</p>
+ <p>Own Id: OTP-3157 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>General java backend bug-fixes </p>
+ <p>Several bugs were fixed on user defined types.</p>
+ <list type="bulleted">
+ <item>
+ <p>Union discriminators work better when
+ all possible case values are defined.</p>
+ </item>
+ <item>
+ <p>A bug on Interface inherited operations is
+ fixed that cause errors on generated server switch.</p>
+ </item>
+ <item>
+ <p>Type definitions on included files are better generated. </p>
+ </item>
+ </list>
+ <p>Own Id: OTP-3156 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.3</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>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.</p>
+ <p>Own Id: OTP-2779 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Fixed the bug that the c code backends sometimes generated incorrect code for
+ struct arguments. They shall always be pointers. </p>
+ <p>Own Id: OTP-2732 <br></br>
+</p>
+ </item>
+ <item>
+ <p>The code generation is fixed so the array parameters now follow the
+ CORBA V2.0 C mapping.</p>
+ <p>Own Id: OTP-2873 <br></br>
+</p>
+ </item>
+ <item>
+ <p>Fixed the problem that the checking of the numbers of out-parameters always was true.</p>
+ <p>Own Id: OTP-2944 <br></br>
+</p>
+ </item>
+ <item>
+ <p>Fixed the bug that some temporary variables was not declared when c code.</p>
+ <p>Own Id: OTP-2950 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.2.2</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Unions are now supported to agree with OMG's C mapping.</p>
+ <p>Own Id: OTP-2868 <br></br>
+</p>
+ </item>
+ <item>
+ <p>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).</p>
+ <p>Own Id: OTP-3068 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>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. </p>
+ <p>Own Id: OTP-3052 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.2.1</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Wrong C code was generated for limited strings when they where included
+ from another IDL specification.</p>
+ <p>Own Id: OTP-3033 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.2</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>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.</p>
+ <p>Own Id: OTP-3001 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <p>The CORBA_Environment structure has now two new fields, the buffers for in/output
+ must now be dynamically allocated.</p>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.1.2</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>The generated IFR registration function for constants has been fixed
+ so the parameters are correct.</p>
+ <p>Own Id: OTP-2856 <br></br>
+</p>
+ </item>
+ <item>
+ <p>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.</p>
+ <p>Own Id: OTP-2909 <br></br>
+</p>
+ </item>
+ <item>
+ <p>Type problems on floats and booleans fixed.</p>
+ <p>Erroneous code for runtime checks on float was removed and
+ the internal format of the data representing the boolean value
+ is upgraded.</p>
+ <p>Own Id: OTP-2925 <br></br>
+</p>
+ </item>
+ <item>
+ <p>The generated code for arrays of typedefined strings were
+ erroneous in the C-backends due to a failure in the compiler internal type
+ checking.</p>
+ <p>Own Id: OTP-2936 <br></br>
+</p>
+ </item>
+ <item>
+ <p>The generated code for typedefined nested sequences were erroneous
+ in the C-backends. Pointer mismatches caused compilation failure.</p>
+ <p>Own Id: OTP-2937 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <p>The IDL specifications must be regenerated for C due to changes in the code generation.</p>
+ <p>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).</p>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.1.1</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Improvements on error report on unsupported types by</p>
+ <p>propagating warning when declaring unions in C -backends</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug is fixed when arrays that contained variable size data
+ on C-backends</p>
+ <p>The compiler generated erroneous code when IDL
+ defined arrays that contained variable size data such
+ as strings, variable size structs or sequences.</p>
+ <p>Own Id: OTP-2900 <br></br>
+</p>
+ </item>
+ <item>
+ <p>A bug is fixed when sequences that contained variable size data
+ on C_backends</p>
+ <p>The compiler generated erroneous code when IDL
+ defined arrays that contained variable size data such
+ as strings, variable size structs or other sequences.</p>
+ <p>Own Id: OTP-2901 <br></br>
+</p>
+ </item>
+ <item>
+ <p>A bug concerning bounded strings on C-backends is fixed.</p>
+ <p>The compiler generated erroneous code for IDL
+ defined bounded strings. Syntax errors were generated
+ in special cases of typdedefined strings.</p>
+ <p>Own Id: OTP-2898 <br></br>
+</p>
+ </item>
+ <item>
+ <p>A runtime error when sequences that contained integer types is fixed.</p>
+ <p>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.</p>
+ <p>Own Id: OTP-2899 <br></br>
+</p>
+ </item>
+ <item>
+ <p>An OMG IDL - C mapping problem on enumerant values is fixed.</p>
+ <p>The enumerant values names is now prefixed by the current scope,
+ as defined in the specification.</p>
+ <p>Own Id: OTP-2902 <br></br>
+</p>
+ </item>
+ <item>
+ <p>A problem when using constants in array declarations is fixed.</p>
+ <p>Array dimensions declared with constants generated erroneous code.</p>
+ <p>Own Id: OTP-2864 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <list type="bulleted">
+ <item>
+ <p>Changes in C-generation on enumerant values.</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.1</title>
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug is fixed on the generated structures. </p>
+ <p>The generated C code for the structures corresponds now
+ to direct mapping of C-structs. </p>
+ <p>Own Id: OTP-2843 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <list type="bulleted">
+ <item>
+ <p>Included structures inside a struct are no longer pointers.</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 3.0</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Interface change for C-backends</p>
+ <p>Major interface change. The new interface is CORBA 2.0
+ compliant.</p>
+ <p>Own Id: OTP-2845 <br></br>
+</p>
+ </item>
+ <item>
+ <p>The C-backends functionality is improved</p>
+ <list type="bulleted">
+ <item>
+ <p>Due to interface change and some unneeded error
+ checks,the C-generated code is fairly optimized.</p>
+ </item>
+ </list>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Several serious bugs on decoding and memory allocation are fixed. </p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <list type="bulleted">
+ <item>
+ <p>Interface change on the C-backends</p>
+ <p>In order to be CORBA 2.0 compatible, the new version
+ generates fully incompatible C code.</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 2.5.1</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>A new backend is added : C-server</p>
+ <p>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.</p>
+ <p>Own Id: OTP-2713 <br></br>
+</p>
+ </item>
+ <item>
+ <p>The C-client functionality is improved</p>
+ <list type="bulleted">
+ <item>
+ <p>The static buffer used for input/output is removed along
+ with the <c>memset</c> function that initiated it.
+ The new client is at least 20-30 percent faster.</p>
+ </item>
+ <item>
+ <p>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.</p>
+ </item>
+ <item>
+ <p>The static buffer used for input/output is remove along
+ with the <c>memset</c> function that initiated it.
+ The new client is at least 20-30 percent faster.</p>
+ </item>
+ <item>
+ <p>The code generated is generally improved, warnings are
+ (almost) eliminated, while no unidentified variable
+ errors occur.</p>
+ </item>
+ <item>
+ <p>The IDL types unsigned shorts, shorts, floats are supported now.</p>
+ </item>
+ <item>
+ <p>All generated functions are exported in client header files..</p>
+ </item>
+ </list>
+ <p>Own Id: OTP-2712 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Changes in compiler usage and code generation.</title>
+ <list type="bulleted">
+ <item>
+ <p>A new option is added for the C-server back-end : <c>c_server</c>.</p>
+ </item>
+ <item>
+ <p>A new option is added : <c>scoped_op_calls</c>.</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>A bug oneway operations on erl_corba and erl_genserv that caused
+ en exit due to internal interface error is fixed. </p>
+ </item>
+ <item>
+ <p>A bug on oneway operations on c_genserv back-end that caused several
+ variables to be unidentified is fixed. </p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <list type="bulleted">
+ <item>
+ <p>Interface change on the C-client</p>
+ <p>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</p>
+ </item>
+ <item>
+ <p>The IDL type <c>attribute</c> is disabled, due to some implementation problems.</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 2.1</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>The compiler now provides more in depth information (printouts) when errors occur.</p>
+ <p>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.</p>
+ <p>Own Id: OTP-2565 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>IC 2.0</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>The IDL compiler is now a separate application and is longer a part of Orber.</p>
+ </item>
+ <item>
+ <p>Pragma handling implementation.</p>
+ <p>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. <br></br>
+ In this implementation,
+ pragmas are accepted by the parser and applied by the use
+ of ic_pragma functions. <br></br>
+ 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. <br></br>
+</p>
+ <p>There two major pragma categories :</p>
+ <list type="bulleted">
+ <item>
+ <p>Normal pragmas, are used in the code where
+ basic definitions and statements appear. </p>
+ </item>
+ <item>
+ <p>Under certain circumstances, ugly pragmas can now
+ appear inside code, parameter lists, structure
+ definitions ... etc. <br></br>
+ 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. <br></br>
+ 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. </p>
+ </item>
+ </list>
+ <p>The pragma effect is the same for both scope and basic
+ pragma rules. </p>
+ <p>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. </p>
+ <p>Own Id: OTP-2128 <br></br>
+</p>
+ </item>
+ <item>
+ <p>Code for interface inheritance registration for the IFR
+ registration code .</p>
+ <p>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 </p>
+ <p>Own Id:
+ OTP-2134 <br></br>
+</p>
+ </item>
+ <item>
+ <p>IFR registration checks for included IDL files.</p>
+ <p>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. </p>
+ <p>Own Id: OTP-2138 <br></br>
+</p>
+ </item>
+ <item>
+ <p>Exception registration under IFR-operation creation.</p>
+ <p>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" ). </p>
+ <p>Own Id: OTP-2102 <br></br>
+</p>
+ </item>
+ <item>
+ <p>New back-end to IDL compiler : Plain Erlang.</p>
+ <p>The new back-end just translates IDL specifications
+ to Erlang module calls. No pragmas are allowed.</p>
+ <p>Own Id: OTP-2471 <br></br>
+</p>
+ </item>
+ <item>
+ <p>New back-end to IDL compiler : generic server.</p>
+ <p>A new back-end that translates IDL specifications
+ to a standard OTP generic server.</p>
+ <p>Own Id: OTP-2482 <br></br>
+</p>
+ </item>
+ <item>
+ <p>New back-end to IDL compiler : c client generation</p>
+ <p>A new back-end that translates IDL specifications
+ to a C API for accessing servers in Erlang. </p>
+ <p>Own Id: OTP-1511 <br></br>
+</p>
+ </item>
+ <item>
+ <p>All records in generated files reveal own Erlang modules.</p>
+ <p>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. <br></br>
+
+ The Erlang file which contain these functions is
+ named after the scope of the record (similar
+ to the generated module and interface files). <br></br>
+
+ Three functions are available :</p>
+ <list type="bulleted">
+ <item>
+ <p>tc/0 - returns the record type code,</p>
+ </item>
+ <item>
+ <p>id/0 - returns the record id,</p>
+ </item>
+ <item>
+ <p>name - returns the record name.</p>
+ </item>
+ </list>
+ <p>Own Id: OTP-2473 <br></br>
+</p>
+ </item>
+ <item>
+ <p>Changes in compiler usage and code generation.</p>
+ <list type="bulleted">
+ <item>
+ <p>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.</p>
+ </item>
+ <item>
+ <p>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. </p>
+ </item>
+ </list>
+ <p>Own Id: OTP-2474 <br></br>
+</p>
+ </item>
+ <item>
+ <p>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.</p>
+ <p>Own Id: OTP-2485 <br></br>
+</p>
+ </item>
+ <item>
+ <p>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".</p>
+ <p>Own Id: OTP-2487 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>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.</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <list type="bulleted">
+ <item>
+ <p>Changes in generated files.</p>
+ <p>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:</p>
+ <list type="bulleted">
+ <item>
+ <p>'OE_filename':'OE_register'().</p>
+ </item>
+ </list>
+ <p>This is changed by using the prefix "oe_"
+ instead for "OE_" for the above.
+ A registration call in Orber is now written:</p>
+ <list type="bulleted">
+ <item>
+ <p>oe_filename:oe_register(). </p>
+ </item>
+ </list>
+ <p>Own Id: OTP-2440 <br></br>
+</p>
+ </item>
+ </list>
+ </section>
+ </section>
+</chapter>
+