[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