1 IDL Compiler Release Notes
1.1 IC 4.2.1, Release Notes
1.1.1 Improvements and new features
1.1.2 Fixed bugs and malfunctions
- A scoping problem (IC could not find typedefs contained inherited interfaces) in the C-backend solved.
Own Id: OTP-4758
1.1.3 Incompatibilities
1.1.4 Known bugs and problems
1.2 IC 4.2, Release Notes
1.2.1 Improvements and new features
- The CORBA stub/skeleton-files generated by IC have been improved, i.e., depending on the IDL-files, reduced the size of the erl- and beam-files and decreased dependencies off Orber's Interface Repository. It is necessary to re-compile all IDL-files and use COS-applications, including Orber, compiled with IC-4.2.
Own Id: OTP-4576
1.2.2 Fixed bugs and malfunctions
1.2.3 Incompatibilities
1.2.4 Known bugs and problems
1.3 IC 4.1.8, Release Notes
1.3.1 Improvements and new features
1.3.2 Fixed bugs and malfunctions
- IDL-files containing
result
orResult
as, for example, parameter name, caused an exit with reasonbad_match
.
Own Id: OTP-4532
- Uninitialized variables were used in
ic_init_ref
for C backends.
Own Id: OTP-4537
Aux Id: seq7666, ETOtr17107
CORBA_Environment_alloc()
left some fields uninitialized in the returned pointer to anCORBA_Environment
for C backends.
Own Id: OTP-4538
- The function
ic_compare_refs()
for C backends could find two unequal references to be equal.
Own Id: OTP-4539
1.3.3 Incompatibilities
1.3.4 Known bugs and problems
1.4 IC 4.1.7, Release Notes
1.4.1 Improvements and new features
1.4.2 Fixed bugs and malfunctions
- Operation names were always scoped in C server backend, irrespective of the setting of the option
scoped_op_calls
.
Own Id: OTP-4521
Aux Id: seq7643, ETOtr16925
1.4.3 Incompatibilities
1.4.4 Known bugs and problems
1.5 IC 4.1.6, Release Notes
1.5.1 Improvements and new features
- For C backends generated code checks that the
_length
field of bounded sequences (i.e. specified assequence <TYPE, MAX>
) does not exceed the specified maximum length. If so, an exception is raised.
Own Id: OTP-4471
1.5.2 Fixed bugs and malfunctions
- The
_maximum
field was not set for sequence structs generated by the C backends.
Own Id: OTP-4471
Aux Id: seq7600, ETOtr16308
- There was a memory leak in C backends in case there was a decoding error in a sequence with elements of basic type.
Own Id: OTP-4475
- For for C backends, IDL structs defined within an interface were not mapped into C structs in appropriate include files.
Own Id: OTP-4481
Aux Id: seq7617
- If the user, incorrectly, trap exit's but did not use the 'handle_info' compile option it would cause the server to terminate. The same problem occurred if someone, illegally, sent a message to the server. It could also happen for illegal oneway operations.
Own Id: OTP-4488
1.5.3 Incompatibilities
1.5.4 Known bugs and problems
1.6 IC 4.1.5, Release Notes
1.6.1 Improvements and new features
1.6.2 Fixed bugs and malfunctions
- Invalid C code was generated for type short.
Own Id: OTP-4450
Aux Id: seq7582
1.6.3 Incompatibilities
1.6.4 Known bugs and problems
1.7 IC 4.1.4, Release Notes
1.7.1 Improvements and new features
1.7.2 Fixed bugs and malfunctions
- Operation functions inherited by an interface were not placed in the map table in generated code for the C server backend. As a result such functions were not found by the switch function of the interface.
Own Id: OTP-4448
Aux Id: seq7582
1.7.3 Incompatibilities
1.7.4 Known bugs and problems
1.8 IC 4.1.3.1, Release Notes
1.8.1 Improvements and new features
- -
1.8.2 Fixed bugs and malfunctions
- A non-ANSI compliant construct in libic.a was changed.
Own Id: -
1.8.3 Incompatibilities
1.8.4 Known bugs and problems
- -
1.9 IC 4.1.3, Release Notes
1.9.1 Improvements and new features
- For Erlang and C back-ends an IC version stamp has been added to generated source code. This stamp i preserved in compiled target code.
- For C backends an
assert()
expression has been added to generated code. That expression asserts that the result of a memory allocation size calculation is strictly positive. An error will result in a printout and anabort()
. The assertion can be inhibited by defining the macroNDEBUG
(according to ANSI C).
If the assertion is inhibited, and a size calculation error is detected, an INTERNAL CORBA exception is set.
- An internal reorganisation of C backend generator code has been done (addition of module
ic_cclient
). Several changes has been done in generated C code:
- The typedef
___generic___
has been replaced by the typedef___exec_function___
, which has been made more strict; for backward compatibility the___genereric___
typedef is now an alias for___exec_function___
.
- Function parameters that are arrays, has been changed to be pointers to array slices, which are equivalent according to ANSI C.
- The storage class specifier
extern
has been removed from function prototypes in header files.
- Redundant type casts have been removed from generated code. Also some local "generic" variables have been renamed.
1.9.2 Fixed bugs and malfunctions
- Module info vsn replaced by app_vsn.
Own Id: OTP-4341
- IC-4.1.2 disabled the definition of float constants beginning with a zero (e.g.
0.14
).
Own Id: OTP-4367
- IC did not handle constant definitions correctly for char, string, wchar and wstring.
Own Id: OTP-4067, OTP-3222
- IC did not recognize all reserved words defined in the OMG specification (2.3.1). The new keywords are
fixed, abstract, custom, factory, local, native, private, public, supports, truncatable, 'ValueBase'
andvaluetype
. But for now this is only active for theerl_corba
backend and only incorrect usage offixed
, since this datatype is now supported, triggers an error for this backend.
Own Id: OTP-4368
- It was not possible to use wchar or wstring inside a union body when using the Java backend.
Own Id: OTP-4365
- The compile options
this
andhandle_info
did not behave as described in the documentation. Thetimeout
now behaves as, for example,handle_info
.
Own Id: OTP-4386, OTP-3231
- If we typedef a sequence, which contains a struct or a union, the access function
id/0
returned an incorrect IFR Id if a prefix pragma was used.
Own Id: OTP-4387
- If an IDL file contained a prefix pragma, incorrecct IFR-id's was generated in the IFR-registration operation
oe_register
for aliases (typedef) and attributes.
Own Id: OTP-4388, OTP-4392
- For C back-ends, when encodings/decodings failed, memory allocated for variable size parameter types was not freed.
Own Id: OTP-4391
Aux Id: seq7438, ETOtr14009
- If an IDL file contained a multiple typedef (e.g. typedef string str1, str2;), the
oe_unregister
operation failed to remove all data, in this case str2, from the IFR.
Own Id: OTP-4393
- IC did not recognize octet-constants (e.g. const octet octetmax = 255;).
Own Id: OTP-4400
- Negative 'long long' constants was not accepted (e.g. const long long MyConstant = -1;).
Own Id: OTP-4401
1.9.3 Incompatibilities
1.9.4 Known bugs and problems
- -
1.10 IC 4.1.2, Release Notes
1.10.1 Improvements and new features
- -
1.10.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.10.3 Incompatibilities
1.10.4 Known bugs and problems
- -
1.11 IC 4.1.1, Release Notes
1.11.1 Improvements and new features
- A new option 'multiple_be' is added that allows multiple backend generation for the same IDL file.
1.11.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.11.3 Incompatibilities
1.11.4 Known bugs and problems
- -
1.12 IC 4.0.7, Release Notes
1.12.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.12.2 Fixed bugs and malfunctions
- -
1.12.3 Incompatibilities
1.12.4 Known bugs and problems
- The same as in previous version.
1.13 IC 4.0.6, Release Notes
1.13.1 Improvements and new features
- -
1.13.2 Fixed bugs and malfunctions
- A bug is fixed on noc backend which caused generation of errornous code.
Own Id: OTP-3812
1.13.3 Incompatibilities
1.13.4 Known bugs and problems
- The same as in previous version.
1.14 IC 4.0.5, Release Notes
1.14.1 Improvements and new features
- The pragma code option is extended to point specific functions on NOC backent, not only interfaces.
1.14.2 Fixed bugs and malfunctions
- -
1.14.3 Incompatibilities
1.14.4 Known bugs and problems
- The same as in previous version.
1.15 IC 4.0.4, Release Notes
1.15.1 Improvements and new features
- -
1.15.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.15.3 Incompatibilities
1.15.4 Known bugs and problems
- The same as in previous version.
1.16 IC 4.0.3, Release Notes
1.16.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.16.2 Fixed bugs and malfunctions
- -
1.16.3 Incompatibilities
1.16.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.17 IC 4.0.2, Release Notes
1.17.1 Improvements and new features
1.17.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.17.3 Incompatibilities
1.17.4 Known bugs and problems
- The same as in previous version.
1.18 IC 4.0.1, Release Notes
1.18.1 Improvements and new features
- New functionality added on Java and Erl_genserv backends.
Own Id: OTP-3433
- On the Java client stub :
The Environment variable is now declared as
- 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.
public
.
- On the Java server skeleton :
The Environment variable is now declared as
boolean __isStopped()
which returns true if astop
message where received, false otherwise. The user must check if this function returns true, and in this case exit the implemented server loop.
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_serverstop
function. This will always terminate the Erlang gen_server, while it will set the stop flag for the Java server stub.
1.18.2 Fixed bugs and malfunctions
1.18.3 Incompatibilities
1.18.4 Known bugs and problems
- The same as in previous version.
1.19 IC 4.0, Release Notes
1.19.1 Improvements and new features
- New types handled by IC.
The following OMG-IDL types are added in this compiler version :
Own Id: OTP-3331
- long long
unsigned long long
wchar
wstring
- TypeCode as built in type and access code files for array and sequence types.
Own Id: OTP-3392
- 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.
1.19.2 Fixed bugs and malfunctions
1.19.3 Incompatibilities
1.19.4 Known bugs and problems
- The same as in previous version.
1.20 IC 3.8.2, Release Notes
1.20.1 Improvements and new features
1.20.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.
1.20.3 Incompatibilities
1.20.4 Known bugs and problems
- The same as in previous version.
1.21 IC 3.8.1, Release Notes
1.21.1 Improvements and new features
- Build in Erlang types support for java-backends
The built-in Erlang typesterm, port, ref
andpid
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 thecom.ericsson.otp.ic
interface :
Term,TermHelper,TermHolder
which represents the built-in Erlang typeterm
Ref,RefHelper,RefHolder
which represents the built-in Erlang typeref
Port,PortHelper, PortHolder
which represents the built-in Erlang typeport
Pid, PidHelper and PidHolder
which represents the built-in Erlang typepid
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.21.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.
1.21.3 Incompatibilities
1.21.4 Known bugs and problems
- The same as in previous version.
1.22 IC 3.8, Release Notes
1.22.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.22.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.
1.22.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 anEnvironment
variable instead for anOtpErlangTuple
.
- 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.22.4 Known bugs and problems
- The same as in previous version.
1.23 IC 3.7.1, Release Notes
1.23.1 Improvements and new features
Some memory usage optimizations for the compiler were done.
1.23.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.23.3 Incompatibilities
1.23.4 Known bugs and problems
- The same as in previous version.
1.24 IC 3.7, Release Notes
1.24.1 Improvements and new features
1.24.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.24.3 Incompatibilities
1.24.4 Known bugs and problems
- The same as in previous version.
1.25 IC 3.6, Release Notes
1.25.1 Improvements and new features
1.25.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.25.3 Incompatibilities
1.25.4 Known bugs and problems
- The same as in previous version.
1.26 IC 3.5, Release Notes
1.26.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.26.2 Fixed bugs and malfunctions
- General java backend bugfixes
Protocol errors on user defined structures and union types are corrected.
1.26.3 Incompatibilities
1.26.4 Known bugs and problems
- The same as in previous version.
1.27 IC 3.4, Release Notes
1.27.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.27.2 Fixed bugs and malfunctions
- General java backend bugfixes
Several bugs were fixed on user defined types.
Own Id: OTP-3156
- 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.
1.27.3 Incompatibilities
1.27.4 Known bugs and problems
- The same as in previous version.
1.28 IC 3.3, Release Notes
1.28.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.28.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.28.3 Incompatibilities
1.28.4 Known bugs and problems
- The same as in previous version.
1.29 IC 3.2.2, Release Notes
1.29.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.29.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.29.3 Incompatibilities
1.29.4 Known bugs and problems
- The same as in previous version.
1.30 IC 3.2.1, Release Notes
1.30.1 Improvements and new features
1.30.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.30.3 Incompatibilities
1.30.4 Known bugs and problems
- The same as in previous version.
1.31 IC 3.2, Release Notes
1.31.1 Improvements and new features
1.31.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.31.3 Incompatibilities
The CORBA_Environment structure has now two new fields, the buffers for in/output must now be dynamically allocated.
1.31.4 Known bugs and problems
- The same as in previous version.
1.32 IC 3.1.2, Release Notes
1.32.1 Improvements and new features
1.32.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.32.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.32.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<sequence<long> > ex;are not generated correctly.
Nested sequences can be used if the innermost sequence is separately typedefined.
typedef sequence<long> lseq; typedef sequence<lseq> ex;
1.33 IC 3.1.1, Release Notes
1.33.1 Improvements and new features
- Improvements on error repport on unsupported types by
propagating warning when declaring unions in C -backends
1.33.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.33.3 Incompatibilities
- Changes in C-generation on enumerant values.
1.33.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.34 IC 3.1, Release Notes
1.34.1 Improvements and new features
- No new features are added
1.34.2 Changes in compiler usage and code generation.
- No changes since last version.
1.34.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.34.4 Incompatibilities
- Included structures inside a struct are no longer pointers.
1.34.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.35 IC 3.0, Release Notes
1.35.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.35.2 Changes in compiler usage and code generation.
- No changes since last version.
1.35.3 Fixed bugs and malfunctions
- Several serious bugs on decoding and memory allocation are fixed.
1.35.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.35.5 Known bugs and problems
- The same as in version 2.5.1
1.36 IC 2.5.1, Release Notes
1.36.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
Own Id: OTP-2712
- 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..
1.36.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.36.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.36.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.36.5 Known bugs and problems
- The same as in version 2.1
1.37 IC 2.1, Release Notes
1.37.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.37.2 Changes in compiler usage and code generation.
- No changes since version 2.0
1.37.3 Fixed bugs and malfunctions
- No changes since version 2.0
1.37.4 Incompatibilities
- The same as in version 2.0
1.37.5 Known bugs and problems
- The same as in version 2.0
1.38 IC 2.0, Release Notes
1.38.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 :
The pragma effect is the same for both scope and basic pragma rules.
- 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.
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 :
Own Id: OTP-2473
- tc/0 - returns the record type code,
- id/0 - returns the record id,
- name - returns the record name.
- Changes in compiler usage and code generation.
Own Id: OTP-2474
- 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.
- 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.38.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.38.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:
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
- oe_filename:oe_register().
1.38.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.39 Previous Release Notes
For release notes on previous versions see the release notes on Orber (version previous to 1.0.3).