diff options
Diffstat (limited to 'lib/ic/doc/src/old_notes.xml')
-rw-r--r-- | lib/ic/doc/src/old_notes.xml | 1565 |
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> + |