Subject: | new release - version 0.69 |
This is my upgrade to Win32::API. It includes the fixed by me original
Callback.xs right before I tossed the original Callback.xs since my
rewrite of Callback.xs is taking much longer than I thought so I put
back the original fixed Callback.xs so it would not crash on -Od. I
tested 0.69 on ActivePerl 5.10 32 bit, homebrew VC 5.12 32 bits,
Strawberry Perl 5.12 32 bit, ActivePerl 5.14 64 bits, Strawberry Perl
5.14 64 bits. The 32 bit VC compiler was VS 2003. The 64 bit VC compiler
was VS 2008. Strawberry Perls were whatever GCC they came with.
The only problem with this patch is it doesn't include binary blob
api_test.dlls. The existing ones in 0.68 wont work. There is a comment
in the source that api_test dll should be compiled at the same time as
Win32::API by the module user. I disagree, I think it should be
distributed compiled, since the point of Win32::API is to use already
compiled, source not available, DLLs. If a module user's compiler or his
perl's Config.pm has different compiler flags than "normal" people or
normal DLLs use, he can create a very broken Win32::API that passes all
its tests since api_test got the exact same flags. I'm thinking of flags
as default calling convention, TCHARs, bitfields, default
alignment/packing on MSVC. Mingw/GCC has 1000s of compiler flags that
can break Win32::API (turn all floats and doubles to SSE 128 bit FP
nums, pass by pointer int 64s, a secret this pointer for return int64s
instead of EAX EDX combo for example). A known good DLL is needed. I
have the api_test dlls that I compiled myself. I compiled then with
debugging on, so security cookie and runtime checks are on. I think
those 2 features of VC are very useful for api_test, since they caught
my own mistakes a couple times. I didn't change the VS-specific
project/solution files for api_test on purpose so I don't accidentally
upgrade them to VS 2008 format locking out older VSes so the patch
doesn't touch those files. Do you want to compile api_test yourself or
should I attach my 2 dlls and you'll include them in 0.69?
My total rewrite of ::Callback will be another release and a higher
version number, 0.70 I guess.
Subject: | patch069.diff |
Message body is not shown because it is too large.