Download Microsoft C/C++ compiler for use with Python 2.6/2.7 ASAP

Alf P. Steinbach /Usenet alf.p.steinbach+usenet at gmail.com
Wed Jul 7 00:54:41 EDT 2010


* sturlamolden, on 06.07.2010 19:35:
> On 6 Jul, 19:09, Thomas Jollans<tho... at jollans.com>  wrote:
>
>> Okay, you need to be careful with FILE*s. But malloc and free? You'd
>> normally only alloc&  free something within the same module, using the
>> same functions (ie not mixing PyMem_Malloc and malloc), would you not?
>
> You have to be sure PyMem_Malloc is not an preprocessor alias for
> malloc (I haven't chaecked).

Python 3.1.1, file [pymem.h]:

PyAPI_FUNC(void *) PyMem_Malloc(size_t);

#define PyMem_MALLOC(n)		(((n) < 0 || (n) > PY_SSIZE_T_MAX) ? NULL \
				: malloc((n) ? (n) : 1))

The problem with the latter that it seems that it's intended for safety but does 
the opposite...

Perhaps (if it isn't intentional) this is a bug of the oversight type, that 
nobody remembered to update the macro?


   ***


Except for the problems with file descriptors I think a practical interim 
solution for extensions implemented in C could be to just link the runtime lib 
statically. For a minimal extension this increased the size from 8 KiB to 49 
KiB. And generally with MS tools the size is acceptably small.

I think that this would be safe because since the C API has to access things in 
the interpreter I think it's a given that all the relevant functions delegate to 
shared library (DLL) implementations, but I have not checked the source code.

As a more longterm solution, perhaps python.org could make available the 
redistributables for various MSVC versions, and then one could introduce some 
scheme for indicating the runtime lib dependencies of any given extension. Then 
when installing an extension the installer (distutils package functionality) 
could just check whether the required runtime is present, and if not give the 
user the choice of automatically downloading from python.org, or perhaps direct 
from Microsoft. This scheme would support dependencies on new runtime lib 
versions not yet conceived when the user's version of Python was installed.


Cheers,

- Alf

-- 
blog at <url: http://alfps.wordpress.com>



More information about the Python-list mailing list