Skip Menu |

This queue is for tickets about the Class-XSAccessor CPAN distribution.

Report information
The Basics
Id: 51190
Status: resolved
Priority: 0/
Queue: Class-XSAccessor

People
Owner: Nobody in particular
Requestors: AGRUNDMA [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Wishlist
Broken in: 1.04_04
Fixed in: 1.04_05



Subject: 5.8 compat broken
The latest dev release doesn't seem to compile under 5.8.8: cc -c -I. -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict- aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 - DVERSION=\"1.04_04\" -DXS_VERSION=\"1.04_04\" -fPIC "-I/usr/lib/perl/5.8/CORE" XSAccessor.c In file included from XSAccessor.xs:8: CXSAccessor.h: In function ‘_new_hashkey’: CXSAccessor.h:122: warning: comparison is always false due to limited range of data type CXSAccessor.h:123: warning: comparison is always false due to limited range of data type CXSAccessor.h: In function ‘_resize_array’: CXSAccessor.h:137: warning: comparison is always false due to limited range of data type CXSAccessor.h: In function ‘_resize_array_init’: CXSAccessor.h:147: warning: comparison is always false due to limited range of data type XS/Hash.xs: In function ‘XS_Class__XSAccessor_getter_init’: XS/Hash.xs:21: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:21: error: (Each undeclared identifier is reported only once XS/Hash.xs:21: error: for each function it appears in.) XS/Hash.xs:21: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_getter’: XS/Hash.xs:37: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:37: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_accessor_init’: XS/Hash.xs:123: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:123: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_accessor’: XS/Hash.xs:147: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:147: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_chained_accessor_init’: XS/Hash.xs:172: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:172: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_chained_accessor’: XS/Hash.xs:196: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:196: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_predicate_init’: XS/Hash.xs:214: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:214: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_predicate’: XS/Hash.xs:230: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:230: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_test_init’: XS/Hash.xs:354: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:354: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_test’: XS/Hash.xs:379: error: ‘HV_FETCH_JUST_SV’ undeclared (first use in this function) XS/Hash.xs:379: warning: assignment makes pointer from integer without a cast XS/Hash.xs: In function ‘XS_Class__XSAccessor_newxs_getter’: XS/Hash.xs:390: warning: comparison is always false due to limited range of data type XS/Hash.xs:390: warning: comparison is always false due to limited range of data type XS/Hash.xs: In function ‘XS_Class__XSAccessor_newxs_setter’: XS/Hash.xs:399: warning: comparison is always false due to limited range of data type XS/Hash.xs:399: warning: comparison is always false due to limited range of data type XS/Hash.xs:401: warning: comparison is always false due to limited range of data type XS/Hash.xs:401: warning: comparison is always false due to limited range of data type XS/Hash.xs: In function ‘XS_Class__XSAccessor_newxs_accessor’: XS/Hash.xs:410: warning: comparison is always false due to limited range of data type XS/Hash.xs:410: warning: comparison is always false due to limited range of data type XS/Hash.xs:412: warning: comparison is always false due to limited range of data type XS/Hash.xs:412: warning: comparison is always false due to limited range of data type XS/Hash.xs: In function ‘XS_Class__XSAccessor_newxs_predicate’: XS/Hash.xs:419: warning: comparison is always false due to limited range of data type XS/Hash.xs:419: warning: comparison is always false due to limited range of data type XS/Hash.xs: In function ‘XS_Class__XSAccessor_newxs_test’: XS/Hash.xs:442: warning: comparison is always false due to limited range of data type XS/Hash.xs:442: warning: comparison is always false due to limited range of data type make: *** [XSAccessor.o] Error 1
Hi Andy, thanks for report. Indeed, it's a critical issue that will need to be addressed before the next stable release. I know you're competent* in XS and I'm very short on time to work on it, so any help in fixing this would be much appreciated. Of course, I do understand you're likely as busy as I am. Best regards, Steffen * That is, at the very least as competent as I am.
OK I will take a look. I hoped you might know of a quick fix. :)
On Sun Nov 08 11:29:50 2009, AGRUNDMA wrote: Show quoted text
> OK I will take a look. I hoped you might know of a quick fix. :)
Current status is that Chocolateboy fixed this by making use of the faster hv_common only on 5.10+. That means on 5.8, we currently a) use the slower hv_fetch without the precomputed hash b) do not have Chocolateboy's grand entersub optimization. Considering that the accessors are still >2x faster than pure-perl ones on 5.8 and that 5.8 should *slowly* fade away, I think this is an acceptable situation. Thus, I'm changing this ticket to "stalled" as I'd love to provide the best implementation for the widest range of perls, but even with some digging, I couldn't come up with a better/faster workaround for 5.8. Maybe somewhen, somebody will come up with a proper fix. Cheers, Steffen
Yeah I'm totally fine with the current situation for < 5.10. Good work guys. :)