On Thu, 06 Mar 2008, Sisyphus wrote: > > PERL_CORE is a superset: everything is visible when you define PERL_CORE > > (but may still not be linkable if your code isn't statically linked into > > the core). PERL_EXT exposes fewer symbols, but all symbols those symbols > > are always available under PERL_CORE too. I think it is a mistake that > > Alias.xs uses PERL_CORE. > > Except that if PERL_EXT is defined instead of PERL_CORE, then Data::Alias > won't build on 5.10 on Win32 - and the author clearly intends that > Data::Alias should build on 5.10 on Win32. (Maybe he shouldn't be doing > hat - until Data::Alias actually becomes core, at least.) > If PERL_EXT is defined instead of PERL_CORE, the 'dmake' process terminates > with: > > gcc -c -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -D__NO_ISOCEXT > -DPERL_IMPLICIT_ > CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_READFIX -s -O2 > -DVERSION=\"1.07\" -DXS_VERSION=\"1.07\" > "-IC:\perl510_M\5.10.0\lib\CORE" > Alias.c > Alias.xs: In function `da_ck_rv2cv': > Alias.xs:1686: error: `DO' undeclared (first use in this function) > Alias.xs:1686: error: (Each undeclared identifier is reported only once > Alias.xs:1686: error: for each function it appears in.) > dmake: Error code 129, while making 'Alias.o'
I had a quick look, and "DO" is not even a function, it is constant specifying a particular token type inside the Perl parser. Code not being part of the core really doesn't have any business playing with that. Which is probably part of the argument why Data::Alias should be part of the core so that any core changes won't break it. > > Nothing is preventing you from breaking the rules, except that on > > Windows and AIX you won't be able to access non-exported symbols, > > thereby protecting the inner layer (1) above. > > I know one guy who is particularly rankled by the fact that *nix users can > cheat to a greater extent than can Windows and AIX users. He feels that the > capacity to cheat should be equal on *all* operating systems. Note that being able to cheat here is a *bug* or *limitation*, not a feature. The sad thing is that you don't even get a warning when you start using stuff that you are not supposed to. Cheers, -Jan _______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs