Hi libwin32@,
The project to port Win32::API to 64 bits has started.
I'm the current maintainer for this module, and I want to
be able for users to use it on 64 bit systems.
This seems to be rather difficult, so I'm looking for
help and contributions on several aspects of the project.
I've already been contacted by several interested users.
If you're interested in this, or want to provide help
with documentation, hardware, licenses, links, whatever...
please reply to this message.
Why is the porting so difficult? (at least for me?)
1) Win32::API uses inline x86 assembly code to interface
with Windows DLL APIs. That assembly code would need to
be adapted to 64 bit architectures.
The problem is that 64 bit MSVCs dropped support for inline
assembly. This can be replaced by:
a) using external assembly files, to be assembled with MASM64
or
b) using the so-called intrinsic functions, special compiler
functions that loosely "map" to x86 assembly instructions.
An in-depth article about this subject:
http://www.codeproject.com/KB/vista/vista_x64.aspx
2) Windows x86-64 architecture uses the _fastcall_ calling
convention.
See also:
http://msdn.microsoft.com/en-us/library/ms235286(VS.80).aspx
3) I don't have enough knowledge about 64-bits porting and
my assembly is a bit weak. Some users provided useful links
and possibility access to additional documentation.
The more, the better.
4) Currently all Win32-API development happens on my personal
laptop, which has a 32-bit Vista OS. The ideal would be to
have a dedicated 64-bit machine for me to work on.
In this blog post:
http://use.perl.org/~Alias/journal/38036
Adam Kennedy announced that Microsoft would make available
to CPAN developers some testing machines, specifically for
development and testing of CPAN/Perl modules.
Current status is that I asked Adam about this 2 weeks ago,
and "this could happen anyday soon".
5) I don't have a license for a 64-bit MSVC compiler, but it seems
this is not really a problem.
There's the "Windows Server 2003 SP1 Platform SDK" which contains
all the compiler tools, for AMD64 and IA64, which are basically
modified versions of MSVC 2005. It also contains the 64-bit version
of the good old MASM assembler.
This SDK can be downloaded here:
http://www.microsoft.com/downloads/details.aspx?familyid=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
This is the same tool used to build ActivePerl 64-bit.
There is a public svn repository where we're planning to
start a 64-bit development branch of Win32::API.
This is the libwin32 repository, which hosts all the source code
for the main Win32 CPAN modules, and it's maintained by Jan Dubois,
ActiveState Lead Developer.
libwin32 project hosted on google code:
http://code.google.com/p/libwin32/
Win32::API trunk:
http://code.google.com/p/libwin32/source/browse/#svn/trunk/Win32-API
--
Cosimo