Blog from December, 2014

class members generally go through method_wrap or function_wrap, both of which call pyApplyToAlias.

standalone functions are registered by def, which goes through function_wrap – pyApplyToAlias.

delegates and function pointers go through PydWrappedFunc_Ready, which goes through pyApplyToDelegate

accessing D objects goes through get_d_reference (hey, this includes delegates and functions!)

 

  1. get coffimplib (its at http://ftp.digitalmars.com/coffimplib.zip)
  2. run coffimplib

    coffimplib.exe C:\Python34\libs\python34.lib python34_digitalmars.lib
The windows builder

First things first, install chocolatey.

set-executionpolicy unrestricted
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
choco install dmd -version 2.066

download https://www.python.org/ftp/python/2.7/python-2.7.msi
do install
download http://sourceforge.net/projects/numpy/files/NumPy/1.9.1/numpy-1.9.1-win32-superpack-python2.7.exe/download

etc etc same for 3.3, 3.4

Turns out, when you create a windows image from an instance, aws loses the ability to retrieve your password. So write it down!

we also need pip to install nose and nose-exclude.

3.4 apparently ships with pip. looks like 2.7.9 does too. for other versions, download get-pip at https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py and run it with the target python. there should then be a pip.exe in \PythonXY\Scripts.

Install the packages we need:

\Python27\Scripts\pip.exe install nose nose-exclude
threading

Seems we got our first user who tried to do something with multithreading:

http://forum.dlang.org/thread/vqqihinjxqzcrlibjfbw@forum.dlang.org

It didn't work out too good. ketmar pointed out you need to register non-D threads with thread_attachThis and thread_detachThis, and in fact you do.

So, are there any hooks in python that can be used to call these when python creates a thread?

Supposedly you also need to register non-python threads: https://docs.python.org/2/c-api/init.html#non-python-created-threads. TODO: what happens if you don't do this?