in reply to perl 5.14.0-RC1 is available for testing!

Ok, I found another one, though I'm not quite sure what the problem is
$ perl -e "print pack 'Q',1" Invalid type 'Q' in pack at -e line 1.
In perl\win32\config.h I have
/* HAS_QUAD: * This symbol, if defined, tells that there's a 64-bit integer typ +e, * Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be +one * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT6 +4_T. */ #define HAS_QUAD /**/ #ifdef HAS_QUAD # define Quad_t long long /**/ # define Uquad_t unsigned long long /**/ # define QUADKIND 3 /**/ # define QUAD_IS_INT 1 # define QUAD_IS_LONG 2 # define QUAD_IS_LONG_LONG 3 # define QUAD_IS_INT64_T 4 #endif
And it seems to have made it into Config
$ perl "-V:.*?quad.*?" d_quad='define'; quadkind='3'; quadtype='long long'; uquadtype='unsigned long long';
So q/Q for pack/unpack should work, right?

Replies are listed 'Best First'.
Re^2: perl 5.14.0-RC1 is available for testing!
by BrowserUk (Patriarch) on May 02, 2011 at 00:44 UTC

    I cannot reproduce you finding here on 5.14 built for Vista 64-bit:

    C:\test\perl-5.14.0-RC1>.\perl -V Summary of my perl5 (revision 5 version 14 subversion 0) configuration +: Platform: osname=MSWin32, osvers=6.0, archname=MSWin32-x64-multi-thread uname='' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=und +ef use64bitint=define, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -fp:pr +ecise - optimize='-MD -Zi -DNDEBUG -Ox -GL -fp:precise', cppflags='-DWIN32' ccversion='15.00.21022.08', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8 ivtype='__int64', ivsize=8, nvtype='double', nvsize=8, Off_t='__in +t64', l alignbytes=8, prototype=define Linker and Libraries: ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -lt +cg -li libpth=\lib libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib +comdlg3 perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.l +ib com libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl514.lib gnulibc_version='' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt: +ref,icf Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PL_OP_SLAB +_ALLOC USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF Locally applied patches: RC1 Built under MSWin32 Compiled at Apr 21 2011 08:07:59 @INC: C:/test/perl-5.14.0-RC1/lib . C:\test\perl-5.14.0-RC1>.\perl.exe -E"print pack 'Q', 1 " ☺ C:\test\perl-5.14.0-RC1>.\perl.exe -E"print length pack 'Q', 1 " 8

    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
Re^2: perl 5.14.0-RC1 is available for testing!
by syphilis (Archbishop) on May 02, 2011 at 02:26 UTC
    So q/Q for pack/unpack should work, right?

    On the basis of what you've shown us, that is right.
    What's your full perl -V output ?

    Cheers,
    Rob
      Difference from BrowserUks -V is presence of use64bitint=define, but HAVE_QUAD doesn't appear to depend on it.

      The other difference is I'm using gcc on 32bit OS, but I have 64-bit processor, but I think it should still work :)

      I'm recompiling now, will update with full -V.

      update:

      update: well, use64bitint=define seems to make Q/q available, and the simple test matches BrowserUks results.

      update: hmm, it compiles, Q/q is available, but some failing tests, awww :)

      And the other new test failures Oh well :) Thanks
        The other difference is I'm using gcc on 32bit OS, but I have 64-bit processor

        Getting proper quad and 64-bit int support for that particular mix is largely "unchartered waters", afaik. I believe it should be do-able (and do-able also with a 32-bit processor), but I know how to achieve it only with a 64-bit compiler and a 64-bit processor.
        As you've discovered, there's a bit more involved than just getting %Config to report what you want it to.

        Cheers,
        Rob