Problems with erl_interface/ei in R9C?

Kent Boortz <>
Thu Feb 12 22:05:41 CET 2004


We separated the header files for the 'erl_interface' and 'ei' API
from the header files internal to erl_interface/ei in R9C. The main
base for this separation was the manual, i.e. the documented include
files, functions and symbols was considered the API.

For different reasons (for example missing documentation and the use
of undocumented functions in code examples) header files, functions
and symbols not documented seem to be in use making erl_interface/ei
in R9C incompatible with earlier versions for some users.

If you have problems upgrading from using erl_interface/ei in R9B or
earlier to R9C because of this, please let me know and we will try to
solve these problems in R9C-1.

All *known* bugs in erl_interface/ei are solved (except the bad
documentation and rpc not responding to ticks). If you know about
a bug in R9C erl_interface/ei not listed below, please let me know,

kent



The erl_interface/ei convenience functions *_gethostby* are now
documented and added to "erl_interface.h" and "ei.h". The following
are reintroduced and are actually wrappers for the corresponding
functions in 'ei'

  erl_gethostbyname()
  erl_gethostbyname_r()
  erl_gethostbyaddr()
  erl_gethostbyname_r()

Some "ei_x" variants missing for the encoding functions were added

  ei_x_encode_boolean()
  ei_x_encode_char()
  ei_x_encode_port()
  ei_x_encode_ref()
  ei_x_encode_trace()

A bug in ei_connect_init() was corrected where it may incorrectly
result in a long node name (bug introduced in R9C).

The special "res_gethostbyname()" code enabled if the ERL_RESOLV
environment variable was set has been removed.

Now all integer decoding functions can handle correct but unexpected
encodings according to the external format specification (the emulator
or erl_inteface will never create them).

There where a potential problem on Solaris if the Solaris linker was used.
Even if no "long long" functions were used in the user code the linkage
could break because of the dependency for some "long long" operations to
"libgcc.a", an gcc internal library.

A bignum bug in erl_compare_ext() has been corrected.

Several bugs in the "long long" encode and decode functions where
corrected (test cases added and the functions now actually work).

Now ei_decode_ulong() returns -1 when decoding 28 bit negative numbers.

ei_encode_atom() is documented to truncate the name to MAXATOMLEN (256)
characters. It now does.

ei_encode_string() will now encode the empty string the same compact way
the emulator does, as the empty list/nil [].

ei_encode_string() now terminates the list created for strings > 65535
characters, i.e. adds the ending [] to the list.

This communication is confidential and intended solely for the addressee(s). Any unauthorized review, use, disclosure or distribution is prohibited. If you believe this message has been sent to you in error, please notify the sender by replying to this transmission and delete the message without disclosing it. Thank you.

E-mail including attachments is susceptible to data corruption, interruption, unauthorized amendment, tampering and viruses, and we only send and receive e-mails on the basis that we are not liable for any such corruption, interception, amendment, tampering or viruses or any consequences thereof.




More information about the erlang-questions mailing list