[CLN-list] CLN 1.2.2 released

Bruno Haible bruno at clisp.org
Sun Apr 6 07:21:02 CEST 2008


Hi Richy,

> This release re-establishes binary compatibility with CLN-1.2.0 and 
> fixes the ARM build, both inadvertently broken in the previous release.

The binary compatibility is restored for 32-bit platforms. For 64-bit platforms
there is another binary-incompatible change. Doing a diff between the include
files of cln-1.2.0 and cln-1.2.2 I found the attached differences. The
decorated name of the functions read_integer, read_rational, read_float have
changed.

To reproduce: On a Linux/x86_64 machine (I used td189.testdrive.hp.com),
do
  $ export CPPFLAGS="m64" LDFLAGS="-m64"
and configure & build cln-1.2.0 and cln-1.2.2.

  $ nm cln-1.2.0/src/cl_I_readparsed.o | grep ' T '
  00000000000000ae T _ZN3cln12read_integerEjiPKcjj
  $ nm cln-1.2.2/src/cl_I_readparsed.o | grep ' T '
  00000000000000ae T _ZN3cln12read_integerEjiPKcmm

and finally

  $ diff <(nm cln-1.2.0/src/.libs/libcln.so.5.0.0 | grep ' T ' | awk '{print $3}' | sort) \
         <(nm cln-1.2.2/src/.libs/libcln.so.5.0.2 | grep ' T ' | awk '{print $3}' | sort)
  145c145
  < _ZN3cln10cl_sstringEPKcj
  ---
  > _ZN3cln10cl_sstringEPKcm
  172c172
  < _ZN3cln10read_floatEjNS_14float_format_tEiPKcjjjj
  ---
  > _ZN3cln10read_floatEjNS_14float_format_tEiPKcmmmm
  275c275
  < _ZN3cln12read_integerEjiPKcjj
  ---
  > _ZN3cln12read_integerEjiPKcmm
  310c310
  < _ZN3cln13read_rationalEjiPKcjjj
  ---
  > _ZN3cln13read_rationalEjiPKcmmm
  463a464
  > _ZN3cln22cl_float_to_FF_pointerEf
  468a470
  > _ZN3cln23cl_double_to_DF_pointerEd

Maintaining binary compatibility is more work than one would think...

Bruno


*** include/cln/integer_io.h	15 Sep 2007 21:34:15 -0000	1.3
--- include/cln/integer_io.h	22 Feb 2008 21:30:26 -0000	1.4
***************
*** 21,27 ****
  //   (also index2-index1 Ziffern, incl. evtl. Dezimalpunkt am Schluß)
  // < ergebnis: Integer
  extern const cl_I read_integer (unsigned int base,
!                   cl_signean sign, const char * string, uintL index1, uintL index2);
  
  // The following does strictly the same as the general read_complex.
  // It is here only so that you don't need the rational, complex and float number
--- 21,27 ----
  //   (also index2-index1 Ziffern, incl. evtl. Dezimalpunkt am Schluß)
  // < ergebnis: Integer
  extern const cl_I read_integer (unsigned int base,
!                   cl_signean sign, const char * string, uintC index1, uintC index2);
  
  // The following does strictly the same as the general read_complex.
  // It is here only so that you don't need the rational, complex and float number
*** include/cln/rational_io.h	15 Sep 2007 21:34:15 -0000	1.3
--- include/cln/rational_io.h	22 Feb 2008 21:30:26 -0000	1.4
***************
*** 21,27 ****
  //   (also index3-index1 Zähler-Ziffern, index2-index3-1 Nenner-Ziffern)
  // < ergebnis: rationale Zahl
  extern const cl_RA read_rational (unsigned int base,
!                    cl_signean sign, const char * string, uintL index1, uintL index3, uintL index2);
  
  // The following does strictly the same as the general read_complex.
  // It is here only so that you don't need the complex and float number
--- 21,27 ----
  //   (also index3-index1 Zähler-Ziffern, index2-index3-1 Nenner-Ziffern)
  // < ergebnis: rationale Zahl
  extern const cl_RA read_rational (unsigned int base,
!                    cl_signean sign, const char * string, uintC index1, uintC index3, uintC index2);
  
  // The following does strictly the same as the general read_complex.
  // It is here only so that you don't need the complex and float number
*** include/cln/float_io.h	15 Sep 2007 21:34:15 -0000	1.3
--- include/cln/float_io.h	22 Feb 2008 21:30:26 -0000	1.4
***************
*** 26,32 ****
  //    Exponenten-Ziffer)
  // < ergebnis: Float
  extern const cl_F read_float (unsigned int base, float_format_t prec,
!                   cl_signean sign, const char * string, uintL index1, uintL index4, uintL index2, uintL index3);
  
  // The following does strictly the same as the general read_complex.
  // It is here only so that you don't need the complex and rational number
--- 26,32 ----
  //    Exponenten-Ziffer)
  // < ergebnis: Float
  extern const cl_F read_float (unsigned int base, float_format_t prec,
!                   cl_signean sign, const char * string, uintC index1, uintC index4, uintC index2, uintC index3);
  
  // The following does strictly the same as the general read_complex.
  // It is here only so that you don't need the complex and rational number



More information about the CLN-list mailing list