blob: 01d2428a35c4f15e058fad590010d4f4b752f14d [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002
Guido van Rossum5049bcb1995-03-13 16:55:23 +00003% XXX PM Modulator
4
Guido van Rossum6938f061994-08-01 12:22:53 +00005\title{Extending and Embedding the Python Interpreter}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00006
Guido van Rossum16cd7f91994-10-06 10:29:26 +00007\input{boilerplate}
Guido van Rossum83eb9621993-11-23 16:28:45 +00008
Guido van Rossum7a2dba21993-11-05 14:45:11 +00009% Tell \index to actually write the .idx file
10\makeindex
11
12\begin{document}
13
Guido van Rossum7a2dba21993-11-05 14:45:11 +000014\maketitle
15
Guido van Rossum16cd7f91994-10-06 10:29:26 +000016\input{copyright}
17
Guido van Rossum7a2dba21993-11-05 14:45:11 +000018\begin{abstract}
19
20\noindent
Guido van Rossumb92112d1995-03-20 14:24:09 +000021Python is an interpreted, object-oriented programming language. This
Fred Drake0fd82681998-01-09 05:39:38 +000022document describes how to write modules in \C{} or \Cpp{} to extend the
Guido van Rossumb92112d1995-03-20 14:24:09 +000023Python interpreter with new modules. Those modules can define new
24functions but also new object types and their methods. The document
25also describes how to embed the Python interpreter in another
26application, for use as an extension language. Finally, it shows how
27to compile and link extension modules so that they can be loaded
28dynamically (at run time) into the interpreter, if the underlying
29operating system supports this feature.
30
31This document assumes basic knowledge about Python. For an informal
Fred Drake3da06a61998-02-26 18:49:12 +000032introduction to the language, see the Python Tutorial. The \emph{Python
33Reference Manual} gives a more formal definition of the language. The
34\emph{Python Library Reference} documents the existing object types,
Guido van Rossumb92112d1995-03-20 14:24:09 +000035functions and modules (both built-in and written in Python) that give
36the language its wide application range.
Guido van Rossum7a2dba21993-11-05 14:45:11 +000037
Fred Drake0fd82681998-01-09 05:39:38 +000038For a detailed description of the whole Python/\C{} API, see the separate
Fred Drake3da06a61998-02-26 18:49:12 +000039\emph{Python/\C{} API Reference Manual}. \strong{Note:} While that
40manual is still in a state of flux, it is safe to say that it is much
41more up to date than the manual you're reading currently (which has
42been in need for an upgrade for some time now).
Guido van Rossumfdacc581997-10-07 14:40:16 +000043
44
Guido van Rossum7a2dba21993-11-05 14:45:11 +000045\end{abstract}
46
Fred Drake4d4f9e71998-01-13 22:25:02 +000047\tableofcontents
Guido van Rossum7a2dba21993-11-05 14:45:11 +000048
Guido van Rossumdb65a6c1993-11-05 17:11:16 +000049
Fred Drake0fd82681998-01-09 05:39:38 +000050\chapter{Extending Python with \C{} or \Cpp{} code}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000051
Guido van Rossum6f0132f1993-11-19 13:13:22 +000052
Fred Drake3da06a61998-02-26 18:49:12 +000053%\section{Introduction}
54\label{intro}
Guido van Rossum6f0132f1993-11-19 13:13:22 +000055
Guido van Rossumb92112d1995-03-20 14:24:09 +000056It is quite easy to add new built-in modules to Python, if you know
Fred Drake0fd82681998-01-09 05:39:38 +000057how to program in \C{}. Such \dfn{extension modules} can do two things
Guido van Rossumb92112d1995-03-20 14:24:09 +000058that can't be done directly in Python: they can implement new built-in
Fred Drake0fd82681998-01-09 05:39:38 +000059object types, and they can call \C{} library functions and system calls.
Guido van Rossum6938f061994-08-01 12:22:53 +000060
Guido van Rossum5049bcb1995-03-13 16:55:23 +000061To support extensions, the Python API (Application Programmers
Guido van Rossumb92112d1995-03-20 14:24:09 +000062Interface) defines a set of functions, macros and variables that
63provide access to most aspects of the Python run-time system. The
Fred Drake0fd82681998-01-09 05:39:38 +000064Python API is incorporated in a \C{} source file by including the header
Guido van Rossumb92112d1995-03-20 14:24:09 +000065\code{"Python.h"}.
Guido van Rossum6938f061994-08-01 12:22:53 +000066
Guido van Rossumb92112d1995-03-20 14:24:09 +000067The compilation of an extension module depends on its intended use as
68well as on your system setup; details are given in a later section.
Guido van Rossum6938f061994-08-01 12:22:53 +000069
Guido van Rossum7a2dba21993-11-05 14:45:11 +000070
Guido van Rossum5049bcb1995-03-13 16:55:23 +000071\section{A Simple Example}
Fred Drake3da06a61998-02-26 18:49:12 +000072\label{simpleExample}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000073
Guido van Rossumb92112d1995-03-20 14:24:09 +000074Let's create an extension module called \samp{spam} (the favorite food
75of Monty Python fans...) and let's say we want to create a Python
Fred Draked7bb3031998-03-03 17:52:07 +000076interface to the \C{} library function \cfunction{system()}.\footnote{An
Guido van Rossumb92112d1995-03-20 14:24:09 +000077interface for this function already exists in the standard module
Fred Draked7bb3031998-03-03 17:52:07 +000078\module{os} --- it was chosen as a simple and straightfoward example.}
Guido van Rossumb92112d1995-03-20 14:24:09 +000079This function takes a null-terminated character string as argument and
80returns an integer. We want this function to be callable from Python
81as follows:
82
Fred Drake1e11a5c1998-02-13 07:11:32 +000083\begin{verbatim}
84>>> import spam
85>>> status = spam.system("ls -l")
86\end{verbatim}
87
Fred Drakea0dbddf1998-04-02 06:50:02 +000088Begin by creating a file \file{spammodule.c}. (In general, if a
Fred Drake0fd82681998-01-09 05:39:38 +000089module is called \samp{spam}, the \C{} file containing its implementation
Guido van Rossumb92112d1995-03-20 14:24:09 +000090is called \file{spammodule.c}; if the module name is very long, like
91\samp{spammify}, the module name can be just \file{spammify.c}.)
92
93The first line of our file can be:
Guido van Rossum7a2dba21993-11-05 14:45:11 +000094
Fred Drake1e11a5c1998-02-13 07:11:32 +000095\begin{verbatim}
96#include "Python.h"
97\end{verbatim}
98
Guido van Rossum5049bcb1995-03-13 16:55:23 +000099which pulls in the Python API (you can add a comment describing the
100purpose of the module and a copyright notice if you like).
101
Guido van Rossumb92112d1995-03-20 14:24:09 +0000102All user-visible symbols defined by \code{"Python.h"} have a prefix of
103\samp{Py} or \samp{PY}, except those defined in standard header files.
104For convenience, and since they are used extensively by the Python
105interpreter, \code{"Python.h"} includes a few standard header files:
106\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
107\code{<stdlib.h>}. If the latter header file does not exist on your
Fred Draked7bb3031998-03-03 17:52:07 +0000108system, it declares the functions \cfunction{malloc()},
109\cfunction{free()} and \cfunction{realloc()} directly.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000110
Fred Drake0fd82681998-01-09 05:39:38 +0000111The next thing we add to our module file is the \C{} function that will
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000112be called when the Python expression \samp{spam.system(\var{string})}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000113is evaluated (we'll see shortly how it ends up being called):
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000114
Fred Drake1e11a5c1998-02-13 07:11:32 +0000115\begin{verbatim}
116static PyObject *
117spam_system(self, args)
118 PyObject *self;
119 PyObject *args;
120{
121 char *command;
122 int sts;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000123
Fred Drake1e11a5c1998-02-13 07:11:32 +0000124 if (!PyArg_ParseTuple(args, "s", &command))
125 return NULL;
126 sts = system(command);
127 return Py_BuildValue("i", sts);
128}
129\end{verbatim}
130
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000131There is a straightforward translation from the argument list in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000132Python (e.g.\ the single expression \code{"ls -l"}) to the arguments
Fred Drake0fd82681998-01-09 05:39:38 +0000133passed to the \C{} function. The \C{} function always has two arguments,
Guido van Rossumb92112d1995-03-20 14:24:09 +0000134conventionally named \var{self} and \var{args}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000135
Fred Drake0fd82681998-01-09 05:39:38 +0000136The \var{self} argument is only used when the \C{} function implements a
Fred Drakedc409041998-04-02 18:54:54 +0000137built-in method. This will be discussed later. In the example,
Fred Drake0fd82681998-01-09 05:39:38 +0000138\var{self} will always be a \NULL{} pointer, since we are defining
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000139a function, not a method. (This is done so that the interpreter
Fred Drake0fd82681998-01-09 05:39:38 +0000140doesn't have to understand two different types of \C{} functions.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000141
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000142The \var{args} argument will be a pointer to a Python tuple object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000143containing the arguments. Each item of the tuple corresponds to an
144argument in the call's argument list. The arguments are Python
Fred Drake1aedbd81998-02-16 14:47:27 +0000145objects --- in order to do anything with them in our \C{} function we have
Fred Drake3da06a61998-02-26 18:49:12 +0000146to convert them to \C{} values. The function \cfunction{PyArg_ParseTuple()}
Fred Drake0fd82681998-01-09 05:39:38 +0000147in the Python API checks the argument types and converts them to \C{}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000148values. It uses a template string to determine the required types of
Fred Drake0fd82681998-01-09 05:39:38 +0000149the arguments as well as the types of the \C{} variables into which to
Guido van Rossumb92112d1995-03-20 14:24:09 +0000150store the converted values. More about this later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000151
Fred Drake3da06a61998-02-26 18:49:12 +0000152\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
Guido van Rossumb92112d1995-03-20 14:24:09 +0000153the right type and its components have been stored in the variables
154whose addresses are passed. It returns false (zero) if an invalid
155argument list was passed. In the latter case it also raises an
156appropriate exception by so the calling function can return
Fred Drake0fd82681998-01-09 05:39:38 +0000157\NULL{} immediately (as we saw in the example).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000158
159
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000160\section{Intermezzo: Errors and Exceptions}
Fred Drake3da06a61998-02-26 18:49:12 +0000161\label{errors}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000162
163An important convention throughout the Python interpreter is the
164following: when a function fails, it should set an exception condition
Fred Drake0fd82681998-01-09 05:39:38 +0000165and return an error value (usually a \NULL{} pointer). Exceptions
Guido van Rossumb92112d1995-03-20 14:24:09 +0000166are stored in a static global variable inside the interpreter; if this
Fred Drake0fd82681998-01-09 05:39:38 +0000167variable is \NULL{} no exception has occurred. A second global
Guido van Rossumb92112d1995-03-20 14:24:09 +0000168variable stores the ``associated value'' of the exception (the second
Fred Draked7bb3031998-03-03 17:52:07 +0000169argument to \keyword{raise}). A third variable contains the stack
Guido van Rossumb92112d1995-03-20 14:24:09 +0000170traceback in case the error originated in Python code. These three
Fred Drake0fd82681998-01-09 05:39:38 +0000171variables are the \C{} equivalents of the Python variables
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000172\code{sys.exc_type}, \code{sys.exc_value} and \code{sys.exc_traceback}
Fred Draked7bb3031998-03-03 17:52:07 +0000173(see the section on module \module{sys} in the \emph{Python Library
174Reference}). It is important to know about them to understand how
175errors are passed around.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000176
Guido van Rossumb92112d1995-03-20 14:24:09 +0000177The Python API defines a number of functions to set various types of
178exceptions.
179
Fred Draked7bb3031998-03-03 17:52:07 +0000180The most common one is \cfunction{PyErr_SetString()}. Its arguments
181are an exception object and a \C{} string. The exception object is
182usually a predefined object like \cdata{PyExc_ZeroDivisionError}. The
183\C{} string indicates the cause of the error and is converted to a
184Python string object and stored as the ``associated value'' of the
185exception.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000186
Fred Draked7bb3031998-03-03 17:52:07 +0000187Another useful function is \cfunction{PyErr_SetFromErrno()}, which only
Guido van Rossumb92112d1995-03-20 14:24:09 +0000188takes an exception argument and constructs the associated value by
Fred Draked7bb3031998-03-03 17:52:07 +0000189inspection of the (\UNIX{}) global variable \cdata{errno}. The most
190general function is \cfunction{PyErr_SetObject()}, which takes two object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000191arguments, the exception and its associated value. You don't need to
Fred Draked7bb3031998-03-03 17:52:07 +0000192\cfunction{Py_INCREF()} the objects passed to any of these functions.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000193
194You can test non-destructively whether an exception has been set with
Fred Draked7bb3031998-03-03 17:52:07 +0000195\cfunction{PyErr_Occurred()}. This returns the current exception object,
Fred Drake0fd82681998-01-09 05:39:38 +0000196or \NULL{} if no exception has occurred. You normally don't need
Fred Draked7bb3031998-03-03 17:52:07 +0000197to call \cfunction{PyErr_Occurred()} to see whether an error occurred in a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000198function call, since you should be able to tell from the return value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000199
Guido van Rossumd16ddb61996-12-13 02:38:17 +0000200When a function \var{f} that calls another function \var{g} detects
Guido van Rossumb92112d1995-03-20 14:24:09 +0000201that the latter fails, \var{f} should itself return an error value
Fred Drake0fd82681998-01-09 05:39:38 +0000202(e.g. \NULL{} or \code{-1}). It should \emph{not} call one of the
Fred Draked7bb3031998-03-03 17:52:07 +0000203\cfunction{PyErr_*()} functions --- one has already been called by \var{g}.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000204\var{f}'s caller is then supposed to also return an error indication
Fred Draked7bb3031998-03-03 17:52:07 +0000205to \emph{its} caller, again \emph{without} calling \cfunction{PyErr_*()},
Guido van Rossumb92112d1995-03-20 14:24:09 +0000206and so on --- the most detailed cause of the error was already
207reported by the function that first detected it. Once the error
208reaches the Python interpreter's main loop, this aborts the currently
209executing Python code and tries to find an exception handler specified
210by the Python programmer.
Guido van Rossum6938f061994-08-01 12:22:53 +0000211
212(There are situations where a module can actually give a more detailed
Fred Draked7bb3031998-03-03 17:52:07 +0000213error message by calling another \cfunction{PyErr_*()} function, and in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000214such cases it is fine to do so. As a general rule, however, this is
215not necessary, and can cause information about the cause of the error
216to be lost: most operations can fail for a variety of reasons.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000217
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000218To ignore an exception set by a function call that failed, the exception
Fred Draked7bb3031998-03-03 17:52:07 +0000219condition must be cleared explicitly by calling \cfunction{PyErr_Clear()}.
220The only time \C{} code should call \cfunction{PyErr_Clear()} is if it doesn't
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000221want to pass the error on to the interpreter but wants to handle it
222completely by itself (e.g. by trying something else or pretending
223nothing happened).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000224
Fred Draked7bb3031998-03-03 17:52:07 +0000225Note that a failing \cfunction{malloc()} call must be turned into an
226exception --- the direct caller of \cfunction{malloc()} (or
227\cfunction{realloc()}) must call \cfunction{PyErr_NoMemory()} and
228return a failure indicator itself. All the object-creating functions
229(\cfunction{PyInt_FromLong()} etc.) already do this, so only if you
230call \cfunction{malloc()} directly this note is of importance.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000231
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000232Also note that, with the important exception of
Fred Drake3da06a61998-02-26 18:49:12 +0000233\cfunction{PyArg_ParseTuple()} and friends, functions that return an
Guido van Rossumb92112d1995-03-20 14:24:09 +0000234integer status usually return a positive value or zero for success and
235\code{-1} for failure, like \UNIX{} system calls.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000236
Fred Draked7bb3031998-03-03 17:52:07 +0000237Finally, be careful to clean up garbage (by making
238\cfunction{Py_XDECREF()} or \cfunction{Py_DECREF()} calls for objects
239you have already created) when you return an error indicator!
Guido van Rossum6938f061994-08-01 12:22:53 +0000240
241The choice of which exception to raise is entirely yours. There are
Fred Drake0fd82681998-01-09 05:39:38 +0000242predeclared \C{} objects corresponding to all built-in Python exceptions,
Fred Drakeb85fbec1998-04-13 00:50:04 +0000243e.g. \cdata{PyExc_ZeroDivisionError} which you can use directly. Of
Guido van Rossumb92112d1995-03-20 14:24:09 +0000244course, you should choose exceptions wisely --- don't use
Fred Draked7bb3031998-03-03 17:52:07 +0000245\cdata{PyExc_TypeError} to mean that a file couldn't be opened (that
246should probably be \cdata{PyExc_IOError}). If something's wrong with
Fred Drake3da06a61998-02-26 18:49:12 +0000247the argument list, the \cfunction{PyArg_ParseTuple()} function usually
Fred Draked7bb3031998-03-03 17:52:07 +0000248raises \cdata{PyExc_TypeError}. If you have an argument whose value
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000249which must be in a particular range or must satisfy other conditions,
Fred Draked7bb3031998-03-03 17:52:07 +0000250\cdata{PyExc_ValueError} is appropriate.
Guido van Rossum6938f061994-08-01 12:22:53 +0000251
252You can also define a new exception that is unique to your module.
253For this, you usually declare a static object variable at the
254beginning of your file, e.g.
255
Fred Drake1e11a5c1998-02-13 07:11:32 +0000256\begin{verbatim}
257static PyObject *SpamError;
258\end{verbatim}
259
Guido van Rossum6938f061994-08-01 12:22:53 +0000260and initialize it in your module's initialization function
Fred Draked7bb3031998-03-03 17:52:07 +0000261(\cfunction{initspam()}) with an exception object, e.g. (leaving out
262the error checking for now):
Guido van Rossum6938f061994-08-01 12:22:53 +0000263
Fred Drake1e11a5c1998-02-13 07:11:32 +0000264\begin{verbatim}
265void
266initspam()
267{
268 PyObject *m, *d;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000269
Fred Drake1e11a5c1998-02-13 07:11:32 +0000270 m = Py_InitModule("spam", SpamMethods);
271 d = PyModule_GetDict(m);
Fred Draked7bb3031998-03-03 17:52:07 +0000272 SpamError = PyErr_NewException("spam.error", NULL, NULL);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000273 PyDict_SetItemString(d, "error", SpamError);
274}
275\end{verbatim}
276
Guido van Rossumb92112d1995-03-20 14:24:09 +0000277Note that the Python name for the exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000278\exception{spam.error}. The \cfunction{PyErr_NewException()} function
279may create either a string or class, depending on whether the
280\samp{-X} flag was passed to the interpreter. If \samp{-X} was used,
281\cdata{SpamError} will be a string object, otherwise it will be a
282class object with the base class being \exception{Exception},
283described in the \emph{Python Library Reference} under ``Built-in
284Exceptions.''
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000285
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000286
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000287\section{Back to the Example}
Fred Drake3da06a61998-02-26 18:49:12 +0000288\label{backToExample}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000289
290Going back to our example function, you should now be able to
291understand this statement:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000292
Fred Drake1e11a5c1998-02-13 07:11:32 +0000293\begin{verbatim}
294 if (!PyArg_ParseTuple(args, "s", &command))
295 return NULL;
296\end{verbatim}
297
Fred Drake0fd82681998-01-09 05:39:38 +0000298It returns \NULL{} (the error indicator for functions returning
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000299object pointers) if an error is detected in the argument list, relying
Fred Drake3da06a61998-02-26 18:49:12 +0000300on the exception set by \cfunction{PyArg_ParseTuple()}. Otherwise the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000301string value of the argument has been copied to the local variable
Fred Draked7bb3031998-03-03 17:52:07 +0000302\cdata{command}. This is a pointer assignment and you are not supposed
Fred Drake0fd82681998-01-09 05:39:38 +0000303to modify the string to which it points (so in Standard \C{}, the variable
Fred Draked7bb3031998-03-03 17:52:07 +0000304\cdata{command} should properly be declared as \samp{const char
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000305*command}).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000306
Fred Draked7bb3031998-03-03 17:52:07 +0000307The next statement is a call to the \UNIX{} function
308\cfunction{system()}, passing it the string we just got from
309\cfunction{PyArg_ParseTuple()}:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000310
Fred Drake1e11a5c1998-02-13 07:11:32 +0000311\begin{verbatim}
312 sts = system(command);
313\end{verbatim}
314
Fred Draked7bb3031998-03-03 17:52:07 +0000315Our \function{spam.system()} function must return the value of
316\cdata{sts} as a Python object. This is done using the function
317\cfunction{Py_BuildValue()}, which is something like the inverse of
318\cfunction{PyArg_ParseTuple()}: it takes a format string and an
319arbitrary number of \C{} values, and returns a new Python object.
320More info on \cfunction{Py_BuildValue()} is given later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000321
Fred Drake1e11a5c1998-02-13 07:11:32 +0000322\begin{verbatim}
323 return Py_BuildValue("i", sts);
324\end{verbatim}
325
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000326In this case, it will return an integer object. (Yes, even integers
327are objects on the heap in Python!)
Guido van Rossum6938f061994-08-01 12:22:53 +0000328
Fred Drake0fd82681998-01-09 05:39:38 +0000329If you have a \C{} function that returns no useful argument (a function
Fred Draked7bb3031998-03-03 17:52:07 +0000330returning \ctype{void}), the corresponding Python function must return
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000331\code{None}. You need this idiom to do so:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000332
Fred Drake1e11a5c1998-02-13 07:11:32 +0000333\begin{verbatim}
334 Py_INCREF(Py_None);
335 return Py_None;
336\end{verbatim}
337
Fred Draked7bb3031998-03-03 17:52:07 +0000338\cdata{Py_None} is the \C{} name for the special Python object
Fred Drakea0dbddf1998-04-02 06:50:02 +0000339\code{None}. It is a genuine Python object rather than a \NULL{}
340pointer, which means ``error'' in most contexts, as we have seen.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000341
342
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000343\section{The Module's Method Table and Initialization Function}
Fred Drake3da06a61998-02-26 18:49:12 +0000344\label{methodTable}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000345
Fred Draked7bb3031998-03-03 17:52:07 +0000346I promised to show how \cfunction{spam_system()} is called from Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000347programs. First, we need to list its name and address in a ``method
348table'':
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000349
Fred Drake1e11a5c1998-02-13 07:11:32 +0000350\begin{verbatim}
351static PyMethodDef SpamMethods[] = {
352 ...
353 {"system", spam_system, METH_VARARGS},
354 ...
355 {NULL, NULL} /* Sentinel */
356};
357\end{verbatim}
358
Fred Drake0fd82681998-01-09 05:39:38 +0000359Note the third entry (\samp{METH_VARARGS}). This is a flag telling
360the interpreter the calling convention to be used for the \C{}
361function. It should normally always be \samp{METH_VARARGS} or
Fred Drakea0dbddf1998-04-02 06:50:02 +0000362\samp{METH_VARARGS | METH_KEYWORDS}; a value of \code{0} means that an
Fred Drake3da06a61998-02-26 18:49:12 +0000363obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000364
Fred Drakeb6e50321998-02-04 20:26:31 +0000365When using only \samp{METH_VARARGS}, the function should expect
366the Python-level parameters to be passed in as a tuple acceptable for
367parsing via \cfunction{PyArg_ParseTuple()}; more information on this
368function is provided below.
369
Fred Draked7bb3031998-03-03 17:52:07 +0000370The \constant{METH_KEYWORDS} bit may be set in the third field if keyword
Fred Drake0fd82681998-01-09 05:39:38 +0000371arguments should be passed to the function. In this case, the \C{}
372function should accept a third \samp{PyObject *} parameter which will
Fred Drake3da06a61998-02-26 18:49:12 +0000373be a dictionary of keywords. Use \cfunction{PyArg_ParseTupleAndKeywords()}
Fred Drake0fd82681998-01-09 05:39:38 +0000374to parse the arguemts to such a function.
375
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000376The method table must be passed to the interpreter in the module's
377initialization function (which should be the only non-\code{static}
378item defined in the module file):
379
Fred Drake1e11a5c1998-02-13 07:11:32 +0000380\begin{verbatim}
381void
382initspam()
383{
384 (void) Py_InitModule("spam", SpamMethods);
385}
386\end{verbatim}
387
Fred Draked7bb3031998-03-03 17:52:07 +0000388When the Python program imports module \module{spam} for the first
389time, \cfunction{initspam()} is called. It calls
390\cfunction{Py_InitModule()}, which creates a ``module object'' (which
391is inserted in the dictionary \code{sys.modules} under the key
392\code{"spam"}), and inserts built-in function objects into the newly
393created module based upon the table (an array of \ctype{PyMethodDef}
394structures) that was passed as its second argument.
395\cfunction{Py_InitModule()} returns a pointer to the module object
396that it creates (which is unused here). It aborts with a fatal error
397if the module could not be initialized satisfactorily, so the caller
398doesn't need to check for errors.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000399
400
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000401\section{Compilation and Linkage}
Fred Drake3da06a61998-02-26 18:49:12 +0000402\label{compilation}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000403
Guido van Rossumb92112d1995-03-20 14:24:09 +0000404There are two more things to do before you can use your new extension:
405compiling and linking it with the Python system. If you use dynamic
406loading, the details depend on the style of dynamic loading your
Fred Drakea0dbddf1998-04-02 06:50:02 +0000407system uses; see the chapter ``Dynamic Loading'' for more information
408about this.
Guido van Rossum6938f061994-08-01 12:22:53 +0000409
410If you can't use dynamic loading, or if you want to make your module a
411permanent part of the Python interpreter, you will have to change the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000412configuration setup and rebuild the interpreter. Luckily, this is
413very simple: just place your file (\file{spammodule.c} for example) in
414the \file{Modules} directory, add a line to the file
Fred Drakea0dbddf1998-04-02 06:50:02 +0000415\file{Modules/Setup.local} describing your file:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000416
Fred Drake1e11a5c1998-02-13 07:11:32 +0000417\begin{verbatim}
418spam spammodule.o
419\end{verbatim}
420
Fred Draked7bb3031998-03-03 17:52:07 +0000421and rebuild the interpreter by running \program{make} in the toplevel
422directory. You can also run \program{make} in the \file{Modules}
Fred Drakea0dbddf1998-04-02 06:50:02 +0000423subdirectory, but then you must first rebuild \file{Makefile}
Fred Draked7bb3031998-03-03 17:52:07 +0000424there by running `\program{make} Makefile'. (This is necessary each
425time you change the \file{Setup} file.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000426
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000427If your module requires additional libraries to link with, these can
Fred Drakea0dbddf1998-04-02 06:50:02 +0000428be listed on the line in the configuration file as well, for instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000429
Fred Drake1e11a5c1998-02-13 07:11:32 +0000430\begin{verbatim}
431spam spammodule.o -lX11
432\end{verbatim}
433
Fred Drake0fd82681998-01-09 05:39:38 +0000434\section{Calling Python Functions From \C{}}
Fred Drake3da06a61998-02-26 18:49:12 +0000435\label{callingPython}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000436
Fred Drake0fd82681998-01-09 05:39:38 +0000437So far we have concentrated on making \C{} functions callable from
438Python. The reverse is also useful: calling Python functions from \C{}.
Guido van Rossum6938f061994-08-01 12:22:53 +0000439This is especially the case for libraries that support so-called
Fred Drake0fd82681998-01-09 05:39:38 +0000440``callback'' functions. If a \C{} interface makes use of callbacks, the
Guido van Rossum6938f061994-08-01 12:22:53 +0000441equivalent Python often needs to provide a callback mechanism to the
442Python programmer; the implementation will require calling the Python
Fred Drake0fd82681998-01-09 05:39:38 +0000443callback functions from a \C{} callback. Other uses are also imaginable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000444
445Fortunately, the Python interpreter is easily called recursively, and
Guido van Rossum6938f061994-08-01 12:22:53 +0000446there is a standard interface to call a Python function. (I won't
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000447dwell on how to call the Python parser with a particular string as
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000448input --- if you're interested, have a look at the implementation of
Guido van Rossum6938f061994-08-01 12:22:53 +0000449the \samp{-c} command line option in \file{Python/pythonmain.c}.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000450
451Calling a Python function is easy. First, the Python program must
452somehow pass you the Python function object. You should provide a
453function (or some other interface) to do this. When this function is
454called, save a pointer to the Python function object (be careful to
Fred Draked7bb3031998-03-03 17:52:07 +0000455\cfunction{Py_INCREF()} it!) in a global variable --- or whereever you
456see fit. For example, the following function might be part of a module
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000457definition:
458
Fred Drake1e11a5c1998-02-13 07:11:32 +0000459\begin{verbatim}
460static PyObject *my_callback = NULL;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000461
Fred Drake1e11a5c1998-02-13 07:11:32 +0000462static PyObject *
463my_set_callback(dummy, arg)
464 PyObject *dummy, *arg;
465{
466 Py_XDECREF(my_callback); /* Dispose of previous callback */
467 Py_XINCREF(arg); /* Add a reference to new callback */
468 my_callback = arg; /* Remember new callback */
469 /* Boilerplate to return "None" */
470 Py_INCREF(Py_None);
471 return Py_None;
472}
473\end{verbatim}
474
Fred Draked7bb3031998-03-03 17:52:07 +0000475The macros \cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()}
476increment/decrement the reference count of an object and are safe in
477the presence of \NULL{} pointers. More info on them in the section on
478Reference Counts below.
Guido van Rossum6938f061994-08-01 12:22:53 +0000479
Fred Drake0fd82681998-01-09 05:39:38 +0000480Later, when it is time to call the function, you call the \C{} function
Fred Draked7bb3031998-03-03 17:52:07 +0000481\cfunction{PyEval_CallObject()}. This function has two arguments, both
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000482pointers to arbitrary Python objects: the Python function, and the
483argument list. The argument list must always be a tuple object, whose
484length is the number of arguments. To call the Python function with
485no arguments, pass an empty tuple; to call it with one argument, pass
Fred Draked7bb3031998-03-03 17:52:07 +0000486a singleton tuple. \cfunction{Py_BuildValue()} returns a tuple when its
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000487format string consists of zero or more format codes between
488parentheses. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000489
Fred Drake1e11a5c1998-02-13 07:11:32 +0000490\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000491 int arg;
492 PyObject *arglist;
493 PyObject *result;
494 ...
495 arg = 123;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000496 ...
497 /* Time to call the callback */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000498 arglist = Py_BuildValue("(i)", arg);
499 result = PyEval_CallObject(my_callback, arglist);
500 Py_DECREF(arglist);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000501\end{verbatim}
502
Fred Draked7bb3031998-03-03 17:52:07 +0000503\cfunction{PyEval_CallObject()} returns a Python object pointer: this is
504the return value of the Python function. \cfunction{PyEval_CallObject()} is
Guido van Rossumb92112d1995-03-20 14:24:09 +0000505``reference-count-neutral'' with respect to its arguments. In the
Guido van Rossum6938f061994-08-01 12:22:53 +0000506example a new tuple was created to serve as the argument list, which
Fred Draked7bb3031998-03-03 17:52:07 +0000507is \cfunction{Py_DECREF()}-ed immediately after the call.
Guido van Rossum6938f061994-08-01 12:22:53 +0000508
Fred Draked7bb3031998-03-03 17:52:07 +0000509The return value of \cfunction{PyEval_CallObject()} is ``new'': either it
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000510is a brand new object, or it is an existing object whose reference
511count has been incremented. So, unless you want to save it in a
Fred Draked7bb3031998-03-03 17:52:07 +0000512global variable, you should somehow \cfunction{Py_DECREF()} the result,
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000513even (especially!) if you are not interested in its value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000514
515Before you do this, however, it is important to check that the return
Fred Draked7bb3031998-03-03 17:52:07 +0000516value isn't \NULL{}. If it is, the Python function terminated by
517raising an exception. If the \C{} code that called
518\cfunction{PyEval_CallObject()} is called from Python, it should now
519return an error indication to its Python caller, so the interpreter
520can print a stack trace, or the calling Python code can handle the
521exception. If this is not possible or desirable, the exception should
522be cleared by calling \cfunction{PyErr_Clear()}. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000523
Fred Drake1e11a5c1998-02-13 07:11:32 +0000524\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000525 if (result == NULL)
526 return NULL; /* Pass error back */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000527 ...use result...
528 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000529\end{verbatim}
530
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000531Depending on the desired interface to the Python callback function,
Fred Draked7bb3031998-03-03 17:52:07 +0000532you may also have to provide an argument list to
533\cfunction{PyEval_CallObject()}. In some cases the argument list is
534also provided by the Python program, through the same interface that
535specified the callback function. It can then be saved and used in the
536same manner as the function object. In other cases, you may have to
537construct a new tuple to pass as the argument list. The simplest way
538to do this is to call \cfunction{Py_BuildValue()}. For example, if
539you want to pass an integral event code, you might use the following
540code:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000541
Fred Drake1e11a5c1998-02-13 07:11:32 +0000542\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000543 PyObject *arglist;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000544 ...
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000545 arglist = Py_BuildValue("(l)", eventcode);
546 result = PyEval_CallObject(my_callback, arglist);
547 Py_DECREF(arglist);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000548 if (result == NULL)
549 return NULL; /* Pass error back */
550 /* Here maybe use the result */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000551 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000552\end{verbatim}
553
Fred Draked7bb3031998-03-03 17:52:07 +0000554Note the placement of \samp{Py_DECREF(arglist)} immediately after the
555call, before the error check! Also note that strictly spoken this
556code is not complete: \cfunction{Py_BuildValue()} may run out of
557memory, and this should be checked.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000558
559
Fred Drakee7957181998-04-04 07:17:47 +0000560\section{Format Strings for \cfunction{PyArg_ParseTuple()}}
Fred Drake3da06a61998-02-26 18:49:12 +0000561\label{parseTuple}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000562
Fred Drake3da06a61998-02-26 18:49:12 +0000563The \cfunction{PyArg_ParseTuple()} function is declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000564
Fred Drake1e11a5c1998-02-13 07:11:32 +0000565\begin{verbatim}
566int PyArg_ParseTuple(PyObject *arg, char *format, ...);
567\end{verbatim}
568
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000569The \var{arg} argument must be a tuple object containing an argument
Fred Drake0fd82681998-01-09 05:39:38 +0000570list passed from Python to a \C{} function. The \var{format} argument
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000571must be a format string, whose syntax is explained below. The
572remaining arguments must be addresses of variables whose type is
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000573determined by the format string. For the conversion to succeed, the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000574\var{arg} object must match the format and the format must be
575exhausted.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000576
Fred Drake3da06a61998-02-26 18:49:12 +0000577Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000578arguments have the required types, it cannot check the validity of the
Fred Drake0fd82681998-01-09 05:39:38 +0000579addresses of \C{} variables passed to the call: if you make mistakes
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000580there, your code will probably crash or at least overwrite random bits
581in memory. So be careful!
582
583A format string consists of zero or more ``format units''. A format
584unit describes one Python object; it is usually a single character or
585a parenthesized sequence of format units. With a few exceptions, a
586format unit that is not a parenthesized sequence normally corresponds
Fred Drake3da06a61998-02-26 18:49:12 +0000587to a single address argument to \cfunction{PyArg_ParseTuple()}. In the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000588following description, the quoted form is the format unit; the entry
589in (round) parentheses is the Python object type that matches the
Fred Drake0fd82681998-01-09 05:39:38 +0000590format unit; and the entry in [square] brackets is the type of the \C{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000591variable(s) whose address should be passed. (Use the \samp{\&}
592operator to pass a variable's address.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000593
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000594\begin{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000595
Fred Drake3fe985f1998-03-04 03:51:42 +0000596\item[\samp{s} (string) {[char *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000597Convert a Python string to a \C{} pointer to a character string. You
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000598must not provide storage for the string itself; a pointer to an
599existing string is stored into the character pointer variable whose
Fred Drake0fd82681998-01-09 05:39:38 +0000600address you pass. The \C{} string is null-terminated. The Python string
Fred Drake3da06a61998-02-26 18:49:12 +0000601must not contain embedded null bytes; if it does, a \exception{TypeError}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000602exception is raised.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000603
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000604\item[\samp{s\#} (string) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000605This variant on \samp{s} stores into two \C{} variables, the first one
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000606a pointer to a character string, the second one its length. In this
607case the Python string may contain embedded null bytes.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000608
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000609\item[\samp{z} (string or \code{None}) {[char *]}]
610Like \samp{s}, but the Python object may also be \code{None}, in which
Fred Drake0fd82681998-01-09 05:39:38 +0000611case the \C{} pointer is set to \NULL{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000612
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000613\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000614This is to \samp{s\#} as \samp{z} is to \samp{s}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000615
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000616\item[\samp{b} (integer) {[char]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000617Convert a Python integer to a tiny int, stored in a \C{} \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000618
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000619\item[\samp{h} (integer) {[short int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000620Convert a Python integer to a \C{} \ctype{short int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000621
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000622\item[\samp{i} (integer) {[int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000623Convert a Python integer to a plain \C{} \ctype{int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000624
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000625\item[\samp{l} (integer) {[long int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000626Convert a Python integer to a \C{} \ctype{long int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000627
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000628\item[\samp{c} (string of length 1) {[char]}]
629Convert a Python character, represented as a string of length 1, to a
Fred Draked7bb3031998-03-03 17:52:07 +0000630\C{} \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000631
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000632\item[\samp{f} (float) {[float]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000633Convert a Python floating point number to a \C{} \ctype{float}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000634
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000635\item[\samp{d} (float) {[double]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000636Convert a Python floating point number to a \C{} \ctype{double}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000637
Fred Drakeb6e50321998-02-04 20:26:31 +0000638\item[\samp{D} (complex) {[Py_complex]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000639Convert a Python complex number to a \C{} \ctype{Py_complex} structure.
Fred Drakeb6e50321998-02-04 20:26:31 +0000640
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000641\item[\samp{O} (object) {[PyObject *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000642Store a Python object (without any conversion) in a \C{} object pointer.
643The \C{} program thus receives the actual object that was passed. The
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000644object's reference count is not increased. The pointer stored is not
Fred Drake0fd82681998-01-09 05:39:38 +0000645\NULL{}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000646
Fred Drake3fe985f1998-03-04 03:51:42 +0000647\item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000648Store a Python object in a \C{} object pointer. This is similar to
649\samp{O}, but takes two \C{} arguments: the first is the address of a
650Python type object, the second is the address of the \C{} variable (of
Fred Draked7bb3031998-03-03 17:52:07 +0000651type \ctype{PyObject *}) into which the object pointer is stored.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000652If the Python object does not have the required type, a
Fred Draked7bb3031998-03-03 17:52:07 +0000653\exception{TypeError} exception is raised.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000654
Fred Drake3fe985f1998-03-04 03:51:42 +0000655\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000656Convert a Python object to a \C{} variable through a \var{converter}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000657function. This takes two arguments: the first is a function, the
Fred Drake0fd82681998-01-09 05:39:38 +0000658second is the address of a \C{} variable (of arbitrary type), converted
Fred Draked7bb3031998-03-03 17:52:07 +0000659to \ctype{void *}. The \var{converter} function in turn is called as
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000660follows:
661
662\code{\var{status} = \var{converter}(\var{object}, \var{address});}
663
664where \var{object} is the Python object to be converted and
Fred Draked7bb3031998-03-03 17:52:07 +0000665\var{address} is the \ctype{void *} argument that was passed to
666\cfunction{PyArg_ConvertTuple()}. The returned \var{status} should be
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000667\code{1} for a successful conversion and \code{0} if the conversion
668has failed. When the conversion fails, the \var{converter} function
669should raise an exception.
670
671\item[\samp{S} (string) {[PyStringObject *]}]
Guido van Rossum2474d681998-02-26 17:07:11 +0000672Like \samp{O} but requires that the Python object is a string object.
Fred Draked7bb3031998-03-03 17:52:07 +0000673Raises a \exception{TypeError} exception if the object is not a string
674object. The \C{} variable may also be declared as \ctype{PyObject *}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000675
Fred Drake3fe985f1998-03-04 03:51:42 +0000676\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000677The object must be a Python tuple whose length is the number of format
Fred Drake0fd82681998-01-09 05:39:38 +0000678units in \var{items}. The \C{} arguments must correspond to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000679individual format units in \var{items}. Format units for tuples may
680be nested.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000681
682\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000683
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000684It is possible to pass Python long integers where integers are
Fred Drake1aedbd81998-02-16 14:47:27 +0000685requested; however no proper range checking is done --- the most
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000686significant bits are silently truncated when the receiving field is
687too small to receive the value (actually, the semantics are inherited
Fred Drake0fd82681998-01-09 05:39:38 +0000688from downcasts in \C{} --- your milage may vary).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000689
690A few other characters have a meaning in a format string. These may
691not occur inside nested parentheses. They are:
692
693\begin{description}
694
695\item[\samp{|}]
696Indicates that the remaining arguments in the Python argument list are
Fred Drake0fd82681998-01-09 05:39:38 +0000697optional. The \C{} variables corresponding to optional arguments should
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000698be initialized to their default value --- when an optional argument is
Fred Drake40e72f71998-03-03 19:37:38 +0000699not specified, \cfunction{PyArg_ParseTuple()} does not touch the contents
Fred Drake0fd82681998-01-09 05:39:38 +0000700of the corresponding \C{} variable(s).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000701
702\item[\samp{:}]
703The list of format units ends here; the string after the colon is used
704as the function name in error messages (the ``associated value'' of
Fred Draked7bb3031998-03-03 17:52:07 +0000705the exceptions that \cfunction{PyArg_ParseTuple()} raises).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000706
707\item[\samp{;}]
708The list of format units ends here; the string after the colon is used
709as the error message \emph{instead} of the default error message.
710Clearly, \samp{:} and \samp{;} mutually exclude each other.
711
712\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000713
714Some example calls:
715
Fred Drake0fd82681998-01-09 05:39:38 +0000716\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000717 int ok;
718 int i, j;
719 long k, l;
720 char *s;
721 int size;
722
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000723 ok = PyArg_ParseTuple(args, ""); /* No arguments */
Guido van Rossum6938f061994-08-01 12:22:53 +0000724 /* Python call: f() */
Fred Drake0fd82681998-01-09 05:39:38 +0000725
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000726 ok = PyArg_ParseTuple(args, "s", &s); /* A string */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000727 /* Possible Python call: f('whoops!') */
728
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000729 ok = PyArg_ParseTuple(args, "lls", &k, &l, &s); /* Two longs and a string */
Guido van Rossum6938f061994-08-01 12:22:53 +0000730 /* Possible Python call: f(1, 2, 'three') */
Fred Drake0fd82681998-01-09 05:39:38 +0000731
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000732 ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000733 /* A pair of ints and a string, whose size is also returned */
Guido van Rossum7e924dd1997-02-10 16:51:52 +0000734 /* Possible Python call: f((1, 2), 'three') */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000735
736 {
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000737 char *file;
738 char *mode = "r";
739 int bufsize = 0;
740 ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);
741 /* A string, and optionally another string and an integer */
742 /* Possible Python calls:
743 f('spam')
744 f('spam', 'w')
745 f('spam', 'wb', 100000) */
746 }
747
748 {
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000749 int left, top, right, bottom, h, v;
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000750 ok = PyArg_ParseTuple(args, "((ii)(ii))(ii)",
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000751 &left, &top, &right, &bottom, &h, &v);
Fred Drakea0dbddf1998-04-02 06:50:02 +0000752 /* A rectangle and a point */
753 /* Possible Python call:
754 f(((0, 0), (400, 300)), (10, 10)) */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000755 }
Fred Drakeb6e50321998-02-04 20:26:31 +0000756
757 {
758 Py_complex c;
759 ok = PyArg_ParseTuple(args, "D:myfunction", &c);
760 /* a complex, also providing a function name for errors */
761 /* Possible Python call: myfunction(1+2j) */
762 }
Fred Drake0fd82681998-01-09 05:39:38 +0000763\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000764
765
Fred Drakee7957181998-04-04 07:17:47 +0000766\section{Keyword Parsing with \cfunction{PyArg_ParseTupleAndKeywords()}}
Fred Drake3da06a61998-02-26 18:49:12 +0000767\label{parseTupleAndKeywords}
Fred Drakeb6e50321998-02-04 20:26:31 +0000768
769The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
770follows:
771
Fred Drake1e11a5c1998-02-13 07:11:32 +0000772\begin{verbatim}
773int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
774 char *format, char **kwlist, ...);
775\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000776
777The \var{arg} and \var{format} parameters are identical to those of the
778\cfunction{PyArg_ParseTuple()} function. The \var{kwdict} parameter
779is the dictionary of keywords received as the third parameter from the
780Python runtime. The \var{kwlist} parameter is a \NULL{}-terminated
781list of strings which identify the parameters; the names are matched
782with the type information from \var{format} from left to right.
783
784\strong{Note:} Nested tuples cannot be parsed when using keyword
785arguments! Keyword parameters passed in which are not present in the
Fred Drakecd05ca91998-03-07 05:32:08 +0000786\var{kwlist} will cause \exception{TypeError} to be raised.
Fred Drakeb6e50321998-02-04 20:26:31 +0000787
788Here is an example module which uses keywords, based on an example by
Fred Drakea0dbddf1998-04-02 06:50:02 +0000789Geoff Philbrick (\email{philbrick@hks.com}):%
790\index{Philbrick, Geoff}
Fred Drakeb6e50321998-02-04 20:26:31 +0000791
792\begin{verbatim}
793#include <stdio.h>
794#include "Python.h"
795
796static PyObject *
797keywdarg_parrot(self, args, keywds)
798 PyObject *self;
799 PyObject *args;
800 PyObject *keywds;
801{
802 int voltage;
803 char *state = "a stiff";
804 char *action = "voom";
805 char *type = "Norwegian Blue";
806
807 static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
808
809 if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
810 &voltage, &state, &action, &type))
811 return NULL;
812
813 printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
814 action, voltage);
815 printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
816
817 Py_INCREF(Py_None);
818
819 return Py_None;
820}
821
822static PyMethodDef keywdarg_methods[] = {
823 {"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS|METH_KEYWORDS},
824 {NULL, NULL} /* sentinel */
825};
826
827void
828initkeywdarg()
829{
830 /* Create the module and add the functions */
Fred Drakecd05ca91998-03-07 05:32:08 +0000831 Py_InitModule("keywdarg", keywdarg_methods);
Fred Drakeb6e50321998-02-04 20:26:31 +0000832}
833\end{verbatim}
834
835
Fred Drakee7957181998-04-04 07:17:47 +0000836\section{The \cfunction{Py_BuildValue()} Function}
Fred Drake3da06a61998-02-26 18:49:12 +0000837\label{buildValue}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000838
Fred Draked7bb3031998-03-03 17:52:07 +0000839This function is the counterpart to \cfunction{PyArg_ParseTuple()}. It is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000840declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000841
Fred Drake1e11a5c1998-02-13 07:11:32 +0000842\begin{verbatim}
843PyObject *Py_BuildValue(char *format, ...);
844\end{verbatim}
845
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000846It recognizes a set of format units similar to the ones recognized by
Fred Draked7bb3031998-03-03 17:52:07 +0000847\cfunction{PyArg_ParseTuple()}, but the arguments (which are input to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000848function, not output) must not be pointers, just values. It returns a
Fred Drake0fd82681998-01-09 05:39:38 +0000849new Python object, suitable for returning from a \C{} function called
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000850from Python.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000851
Fred Draked7bb3031998-03-03 17:52:07 +0000852One difference with \cfunction{PyArg_ParseTuple()}: while the latter
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000853requires its first argument to be a tuple (since Python argument lists
Fred Draked7bb3031998-03-03 17:52:07 +0000854are always represented as tuples internally),
855\cfunction{Py_BuildValue()} does not always build a tuple. It builds
856a tuple only if its format string contains two or more format units.
857If the format string is empty, it returns \code{None}; if it contains
858exactly one format unit, it returns whatever object is described by
859that format unit. To force it to return a tuple of size 0 or one,
860parenthesize the format string.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000861
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000862In the following description, the quoted form is the format unit; the
863entry in (round) parentheses is the Python object type that the format
864unit will return; and the entry in [square] brackets is the type of
Fred Drake0fd82681998-01-09 05:39:38 +0000865the \C{} value(s) to be passed.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000866
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000867The characters space, tab, colon and comma are ignored in format
868strings (but not within format units such as \samp{s\#}). This can be
869used to make long format strings a tad more readable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000870
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000871\begin{description}
872
873\item[\samp{s} (string) {[char *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000874Convert a null-terminated \C{} string to a Python object. If the \C{}
875string pointer is \NULL{}, \code{None} is returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000876
877\item[\samp{s\#} (string) {[char *, int]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000878Convert a \C{} string and its length to a Python object. If the \C{} string
879pointer is \NULL{}, the length is ignored and \code{None} is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000880returned.
881
882\item[\samp{z} (string or \code{None}) {[char *]}]
883Same as \samp{s}.
884
885\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
886Same as \samp{s\#}.
887
888\item[\samp{i} (integer) {[int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000889Convert a plain \C{} \ctype{int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000890
891\item[\samp{b} (integer) {[char]}]
892Same as \samp{i}.
893
894\item[\samp{h} (integer) {[short int]}]
895Same as \samp{i}.
896
897\item[\samp{l} (integer) {[long int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000898Convert a \C{} \ctype{long int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000899
900\item[\samp{c} (string of length 1) {[char]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000901Convert a \C{} \ctype{int} representing a character to a Python string of
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000902length 1.
903
904\item[\samp{d} (float) {[double]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000905Convert a \C{} \ctype{double} to a Python floating point number.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000906
907\item[\samp{f} (float) {[float]}]
908Same as \samp{d}.
909
910\item[\samp{O} (object) {[PyObject *]}]
911Pass a Python object untouched (except for its reference count, which
Fred Drake0fd82681998-01-09 05:39:38 +0000912is incremented by one). If the object passed in is a \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000913pointer, it is assumed that this was caused because the call producing
914the argument found an error and set an exception. Therefore,
Fred Draked7bb3031998-03-03 17:52:07 +0000915\cfunction{Py_BuildValue()} will return \NULL{} but won't raise an
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000916exception. If no exception has been raised yet,
Fred Draked7bb3031998-03-03 17:52:07 +0000917\cdata{PyExc_SystemError} is set.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000918
919\item[\samp{S} (object) {[PyObject *]}]
920Same as \samp{O}.
921
922\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
923Convert \var{anything} to a Python object through a \var{converter}
924function. The function is called with \var{anything} (which should be
Fred Draked7bb3031998-03-03 17:52:07 +0000925compatible with \ctype{void *}) as its argument and should return a
Fred Drake0fd82681998-01-09 05:39:38 +0000926``new'' Python object, or \NULL{} if an error occurred.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000927
928\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000929Convert a sequence of \C{} values to a Python tuple with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000930of items.
931
932\item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000933Convert a sequence of \C{} values to a Python list with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000934of items.
935
936\item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000937Convert a sequence of \C{} values to a Python dictionary. Each pair of
938consecutive \C{} values adds one item to the dictionary, serving as key
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000939and value, respectively.
940
941\end{description}
942
943If there is an error in the format string, the
Fred Draked7bb3031998-03-03 17:52:07 +0000944\cdata{PyExc_SystemError} exception is raised and \NULL{} returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000945
946Examples (to the left the call, to the right the resulting Python value):
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000947
Fred Drake1e11a5c1998-02-13 07:11:32 +0000948\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000949 Py_BuildValue("") None
950 Py_BuildValue("i", 123) 123
Guido van Rossumf23e0fe1995-03-18 11:04:29 +0000951 Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000952 Py_BuildValue("s", "hello") 'hello'
953 Py_BuildValue("ss", "hello", "world") ('hello', 'world')
954 Py_BuildValue("s#", "hello", 4) 'hell'
955 Py_BuildValue("()") ()
956 Py_BuildValue("(i)", 123) (123,)
957 Py_BuildValue("(ii)", 123, 456) (123, 456)
958 Py_BuildValue("(i,i)", 123, 456) (123, 456)
959 Py_BuildValue("[i,i]", 123, 456) [123, 456]
Guido van Rossumf23e0fe1995-03-18 11:04:29 +0000960 Py_BuildValue("{s:i,s:i}",
961 "abc", 123, "def", 456) {'abc': 123, 'def': 456}
962 Py_BuildValue("((ii)(ii)) (ii)",
963 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))
Fred Drake1e11a5c1998-02-13 07:11:32 +0000964\end{verbatim}
965
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000966\section{Reference Counts}
Fred Drake3da06a61998-02-26 18:49:12 +0000967\label{refcounts}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000968
Fred Drake3da06a61998-02-26 18:49:12 +0000969%\subsection{Introduction}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000970
Fred Drake0fd82681998-01-09 05:39:38 +0000971In languages like \C{} or \Cpp{}, the programmer is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +0000972dynamic allocation and deallocation of memory on the heap. In \C{},
973this is done using the functions \cfunction{malloc()} and
974\cfunction{free()}. In \Cpp{}, the operators \keyword{new} and
975\keyword{delete} are used with essentially the same meaning; they are
976actually implemented using \cfunction{malloc()} and
977\cfunction{free()}, so we'll restrict the following discussion to the
978latter.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000979
Fred Draked7bb3031998-03-03 17:52:07 +0000980Every block of memory allocated with \cfunction{malloc()} should
981eventually be returned to the pool of available memory by exactly one
982call to \cfunction{free()}. It is important to call
983\cfunction{free()} at the right time. If a block's address is
984forgotten but \cfunction{free()} is not called for it, the memory it
985occupies cannot be reused until the program terminates. This is
986called a \dfn{memory leak}. On the other hand, if a program calls
987\cfunction{free()} for a block and then continues to use the block, it
988creates a conflict with re-use of the block through another
989\cfunction{malloc()} call. This is called \dfn{using freed memory}.
990It has the same bad consequences as referencing uninitialized data ---
991core dumps, wrong results, mysterious crashes.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000992
993Common causes of memory leaks are unusual paths through the code. For
994instance, a function may allocate a block of memory, do some
995calculation, and then free the block again. Now a change in the
996requirements for the function may add a test to the calculation that
997detects an error condition and can return prematurely from the
998function. It's easy to forget to free the allocated memory block when
999taking this premature exit, especially when it is added later to the
1000code. Such leaks, once introduced, often go undetected for a long
1001time: the error exit is taken only in a small fraction of all calls,
1002and most modern machines have plenty of virtual memory, so the leak
1003only becomes apparent in a long-running process that uses the leaking
1004function frequently. Therefore, it's important to prevent leaks from
1005happening by having a coding convention or strategy that minimizes
1006this kind of errors.
1007
Fred Draked7bb3031998-03-03 17:52:07 +00001008Since Python makes heavy use of \cfunction{malloc()} and
1009\cfunction{free()}, it needs a strategy to avoid memory leaks as well
1010as the use of freed memory. The chosen method is called
1011\dfn{reference counting}. The principle is simple: every object
1012contains a counter, which is incremented when a reference to the
1013object is stored somewhere, and which is decremented when a reference
1014to it is deleted. When the counter reaches zero, the last reference
1015to the object has been deleted and the object is freed.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001016
1017An alternative strategy is called \dfn{automatic garbage collection}.
1018(Sometimes, reference counting is also referred to as a garbage
1019collection strategy, hence my use of ``automatic'' to distinguish the
1020two.) The big advantage of automatic garbage collection is that the
Fred Draked7bb3031998-03-03 17:52:07 +00001021user doesn't need to call \cfunction{free()} explicitly. (Another claimed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001022advantage is an improvement in speed or memory usage --- this is no
Fred Drake0fd82681998-01-09 05:39:38 +00001023hard fact however.) The disadvantage is that for \C{}, there is no
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001024truly portable automatic garbage collector, while reference counting
Fred Draked7bb3031998-03-03 17:52:07 +00001025can be implemented portably (as long as the functions \cfunction{malloc()}
1026and \cfunction{free()} are available --- which the \C{} Standard guarantees).
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001027Maybe some day a sufficiently portable automatic garbage collector
Fred Drake0fd82681998-01-09 05:39:38 +00001028will be available for \C{}. Until then, we'll have to live with
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001029reference counts.
1030
1031\subsection{Reference Counting in Python}
Fred Drake3da06a61998-02-26 18:49:12 +00001032\label{refcountsInPython}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001033
1034There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
1035which handle the incrementing and decrementing of the reference count.
Fred Draked7bb3031998-03-03 17:52:07 +00001036\cfunction{Py_DECREF()} also frees the object when the count reaches zero.
1037For flexibility, it doesn't call \cfunction{free()} directly --- rather, it
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001038makes a call through a function pointer in the object's \dfn{type
1039object}. For this purpose (and others), every object also contains a
1040pointer to its type object.
1041
1042The big question now remains: when to use \code{Py_INCREF(x)} and
1043\code{Py_DECREF(x)}? Let's first introduce some terms. Nobody
1044``owns'' an object; however, you can \dfn{own a reference} to an
1045object. An object's reference count is now defined as the number of
1046owned references to it. The owner of a reference is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +00001047calling \cfunction{Py_DECREF()} when the reference is no longer
1048needed. Ownership of a reference can be transferred. There are three
1049ways to dispose of an owned reference: pass it on, store it, or call
1050\cfunction{Py_DECREF()}. Forgetting to dispose of an owned reference
1051creates a memory leak.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001052
1053It is also possible to \dfn{borrow}\footnote{The metaphor of
1054``borrowing'' a reference is not completely correct: the owner still
1055has a copy of the reference.} a reference to an object. The borrower
Fred Draked7bb3031998-03-03 17:52:07 +00001056of a reference should not call \cfunction{Py_DECREF()}. The borrower must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001057not hold on to the object longer than the owner from which it was
1058borrowed. Using a borrowed reference after the owner has disposed of
1059it risks using freed memory and should be avoided
1060completely.\footnote{Checking that the reference count is at least 1
1061\strong{does not work} --- the reference count itself could be in
1062freed memory and may thus be reused for another object!}
1063
1064The advantage of borrowing over owning a reference is that you don't
1065need to take care of disposing of the reference on all possible paths
1066through the code --- in other words, with a borrowed reference you
1067don't run the risk of leaking when a premature exit is taken. The
1068disadvantage of borrowing over leaking is that there are some subtle
1069situations where in seemingly correct code a borrowed reference can be
1070used after the owner from which it was borrowed has in fact disposed
1071of it.
1072
1073A borrowed reference can be changed into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001074\cfunction{Py_INCREF()}. This does not affect the status of the owner from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001075which the reference was borrowed --- it creates a new owned reference,
1076and gives full owner responsibilities (i.e., the new owner must
1077dispose of the reference properly, as well as the previous owner).
1078
1079\subsection{Ownership Rules}
Fred Drake3da06a61998-02-26 18:49:12 +00001080\label{ownershipRules}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001081
1082Whenever an object reference is passed into or out of a function, it
1083is part of the function's interface specification whether ownership is
1084transferred with the reference or not.
1085
1086Most functions that return a reference to an object pass on ownership
1087with the reference. In particular, all functions whose function it is
Fred Draked7bb3031998-03-03 17:52:07 +00001088to create a new object, e.g.\ \cfunction{PyInt_FromLong()} and
1089\cfunction{Py_BuildValue()}, pass ownership to the receiver. Even if in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001090fact, in some cases, you don't receive a reference to a brand new
1091object, you still receive ownership of the reference. For instance,
Fred Draked7bb3031998-03-03 17:52:07 +00001092\cfunction{PyInt_FromLong()} maintains a cache of popular values and can
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001093return a reference to a cached item.
1094
1095Many functions that extract objects from other objects also transfer
1096ownership with the reference, for instance
Fred Draked7bb3031998-03-03 17:52:07 +00001097\cfunction{PyObject_GetAttrString()}. The picture is less clear, here,
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001098however, since a few common routines are exceptions:
Fred Draked7bb3031998-03-03 17:52:07 +00001099\cfunction{PyTuple_GetItem()}, \cfunction{PyList_GetItem()},
1100\cfunction{PyDict_GetItem()}, and \cfunction{PyDict_GetItemString()}
1101all return references that you borrow from the tuple, list or
1102dictionary.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001103
Fred Draked7bb3031998-03-03 17:52:07 +00001104The function \cfunction{PyImport_AddModule()} also returns a borrowed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001105reference, even though it may actually create the object it returns:
1106this is possible because an owned reference to the object is stored in
1107\code{sys.modules}.
1108
1109When you pass an object reference into another function, in general,
1110the function borrows the reference from you --- if it needs to store
Fred Draked7bb3031998-03-03 17:52:07 +00001111it, it will use \cfunction{Py_INCREF()} to become an independent
1112owner. There are exactly two important exceptions to this rule:
1113\cfunction{PyTuple_SetItem()} and \cfunction{PyList_SetItem()}. These
1114functions take over ownership of the item passed to them --- even if
1115they fail! (Note that \cfunction{PyDict_SetItem()} and friends don't
Fred Drakea0dbddf1998-04-02 06:50:02 +00001116take over ownership --- they are ``normal.'')
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001117
Fred Drake0fd82681998-01-09 05:39:38 +00001118When a \C{} function is called from Python, it borrows references to its
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001119arguments from the caller. The caller owns a reference to the object,
1120so the borrowed reference's lifetime is guaranteed until the function
1121returns. Only when such a borrowed reference must be stored or passed
1122on, it must be turned into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001123\cfunction{Py_INCREF()}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001124
Fred Drake0fd82681998-01-09 05:39:38 +00001125The object reference returned from a \C{} function that is called from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001126Python must be an owned reference --- ownership is tranferred from the
1127function to its caller.
1128
1129\subsection{Thin Ice}
Fred Drake3da06a61998-02-26 18:49:12 +00001130\label{thinIce}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001131
1132There are a few situations where seemingly harmless use of a borrowed
1133reference can lead to problems. These all have to do with implicit
1134invocations of the interpreter, which can cause the owner of a
1135reference to dispose of it.
1136
1137The first and most important case to know about is using
Fred Draked7bb3031998-03-03 17:52:07 +00001138\cfunction{Py_DECREF()} on an unrelated object while borrowing a
1139reference to a list item. For instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001140
Fred Drake1e11a5c1998-02-13 07:11:32 +00001141\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001142bug(PyObject *list) {
1143 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001144
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001145 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1146 PyObject_Print(item, stdout, 0); /* BUG! */
1147}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001148\end{verbatim}
1149
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001150This function first borrows a reference to \code{list[0]}, then
1151replaces \code{list[1]} with the value \code{0}, and finally prints
1152the borrowed reference. Looks harmless, right? But it's not!
1153
Fred Draked7bb3031998-03-03 17:52:07 +00001154Let's follow the control flow into \cfunction{PyList_SetItem()}. The list
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001155owns references to all its items, so when item 1 is replaced, it has
1156to dispose of the original item 1. Now let's suppose the original
1157item 1 was an instance of a user-defined class, and let's further
Fred Draked7bb3031998-03-03 17:52:07 +00001158suppose that the class defined a \method{__del__()} method. If this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001159class instance has a reference count of 1, disposing of it will call
Fred Draked7bb3031998-03-03 17:52:07 +00001160its \method{__del__()} method.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001161
Fred Draked7bb3031998-03-03 17:52:07 +00001162Since it is written in Python, the \method{__del__()} method can execute
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001163arbitrary Python code. Could it perhaps do something to invalidate
Fred Draked7bb3031998-03-03 17:52:07 +00001164the reference to \code{item} in \cfunction{bug()}? You bet! Assuming
1165that the list passed into \cfunction{bug()} is accessible to the
1166\method{__del__()} method, it could execute a statement to the effect of
1167\samp{del list[0]}, and assuming this was the last reference to that
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001168object, it would free the memory associated with it, thereby
1169invalidating \code{item}.
1170
1171The solution, once you know the source of the problem, is easy:
1172temporarily increment the reference count. The correct version of the
1173function reads:
1174
Fred Drake1e11a5c1998-02-13 07:11:32 +00001175\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001176no_bug(PyObject *list) {
1177 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001178
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001179 Py_INCREF(item);
1180 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1181 PyObject_Print(item, stdout, 0);
1182 Py_DECREF(item);
1183}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001184\end{verbatim}
1185
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001186This is a true story. An older version of Python contained variants
Fred Drake0fd82681998-01-09 05:39:38 +00001187of this bug and someone spent a considerable amount of time in a \C{}
Fred Draked7bb3031998-03-03 17:52:07 +00001188debugger to figure out why his \method{__del__()} methods would fail...
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001189
1190The second case of problems with a borrowed reference is a variant
1191involving threads. Normally, multiple threads in the Python
1192interpreter can't get in each other's way, because there is a global
1193lock protecting Python's entire object space. However, it is possible
1194to temporarily release this lock using the macro
1195\code{Py_BEGIN_ALLOW_THREADS}, and to re-acquire it using
1196\code{Py_END_ALLOW_THREADS}. This is common around blocking I/O
1197calls, to let other threads use the CPU while waiting for the I/O to
1198complete. Obviously, the following function has the same problem as
1199the previous one:
1200
Fred Drake1e11a5c1998-02-13 07:11:32 +00001201\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001202bug(PyObject *list) {
1203 PyObject *item = PyList_GetItem(list, 0);
1204 Py_BEGIN_ALLOW_THREADS
1205 ...some blocking I/O call...
1206 Py_END_ALLOW_THREADS
1207 PyObject_Print(item, stdout, 0); /* BUG! */
1208}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001209\end{verbatim}
1210
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001211\subsection{NULL Pointers}
Fred Drake3da06a61998-02-26 18:49:12 +00001212\label{nullPointers}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001213
Fred Drakea0dbddf1998-04-02 06:50:02 +00001214In general, functions that take object references as arguments do not
Fred Drake0fd82681998-01-09 05:39:38 +00001215expect you to pass them \NULL{} pointers, and will dump core (or
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001216cause later core dumps) if you do so. Functions that return object
Fred Drake0fd82681998-01-09 05:39:38 +00001217references generally return \NULL{} only to indicate that an
1218exception occurred. The reason for not testing for \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001219arguments is that functions often pass the objects they receive on to
Fred Drake0fd82681998-01-09 05:39:38 +00001220other function --- if each function were to test for \NULL{},
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001221there would be a lot of redundant tests and the code would run slower.
1222
Fred Drake0fd82681998-01-09 05:39:38 +00001223It is better to test for \NULL{} only at the ``source'', i.e.\
1224when a pointer that may be \NULL{} is received, e.g.\ from
Fred Draked7bb3031998-03-03 17:52:07 +00001225\cfunction{malloc()} or from a function that may raise an exception.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001226
Fred Draked7bb3031998-03-03 17:52:07 +00001227The macros \cfunction{Py_INCREF()} and \cfunction{Py_DECREF()}
Fred Drakea0dbddf1998-04-02 06:50:02 +00001228do not check for \NULL{} pointers --- however, their variants
Fred Draked7bb3031998-03-03 17:52:07 +00001229\cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()} do.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001230
1231The macros for checking for a particular object type
Fred Drake0fd82681998-01-09 05:39:38 +00001232(\code{Py\var{type}_Check()}) don't check for \NULL{} pointers ---
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001233again, there is much code that calls several of these in a row to test
1234an object against various different expected types, and this would
Fred Drake0fd82681998-01-09 05:39:38 +00001235generate redundant tests. There are no variants with \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001236checking.
1237
Fred Drake0fd82681998-01-09 05:39:38 +00001238The \C{} function calling mechanism guarantees that the argument list
1239passed to \C{} functions (\code{args} in the examples) is never
1240\NULL{} --- in fact it guarantees that it is always a tuple.%
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001241\footnote{These guarantees don't hold when you use the ``old'' style
1242calling convention --- this is still found in much existing code.}
1243
Fred Drake0fd82681998-01-09 05:39:38 +00001244It is a severe error to ever let a \NULL{} pointer ``escape'' to
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001245the Python user.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001246
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001247
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001248\section{Writing Extensions in \Cpp{}}
Fred Drake3da06a61998-02-26 18:49:12 +00001249\label{cplusplus}
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001250
Guido van Rossum16d6e711994-08-08 12:30:22 +00001251It is possible to write extension modules in \Cpp{}. Some restrictions
Guido van Rossumed39cd01995-10-08 00:17:19 +00001252apply. If the main program (the Python interpreter) is compiled and
Fred Drake0fd82681998-01-09 05:39:38 +00001253linked by the \C{} compiler, global or static objects with constructors
Guido van Rossumed39cd01995-10-08 00:17:19 +00001254cannot be used. This is not a problem if the main program is linked
Guido van Rossumafcd5891998-02-05 19:59:39 +00001255by the \Cpp{} compiler. Functions that will be called by the
1256Python interpreter (in particular, module initalization functions)
1257have to be declared using \code{extern "C"}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001258It is unnecessary to enclose the Python header files in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001259\code{extern "C" \{...\}} --- they use this form already if the symbol
Fred Drake0fd82681998-01-09 05:39:38 +00001260\samp{__cplusplus} is defined (all recent \Cpp{} compilers define this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001261symbol).
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001262
1263\chapter{Embedding Python in another application}
Fred Drake3da06a61998-02-26 18:49:12 +00001264\label{embedding}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001265
1266Embedding Python is similar to extending it, but not quite. The
1267difference is that when you extend Python, the main program of the
Guido van Rossum16d6e711994-08-08 12:30:22 +00001268application is still the Python interpreter, while if you embed
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001269Python, the main program may have nothing to do with Python ---
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001270instead, some parts of the application occasionally call the Python
1271interpreter to run some Python code.
1272
1273So if you are embedding Python, you are providing your own main
1274program. One of the things this main program has to do is initialize
1275the Python interpreter. At the very least, you have to call the
Fred Draked7bb3031998-03-03 17:52:07 +00001276function \cfunction{Py_Initialize()}. There are optional calls to
1277pass command line arguments to Python. Then later you can call the
1278interpreter from any part of the application.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001279
1280There are several different ways to call the interpreter: you can pass
Fred Draked7bb3031998-03-03 17:52:07 +00001281a string containing Python statements to
1282\cfunction{PyRun_SimpleString()}, or you can pass a stdio file pointer
1283and a file name (for identification in error messages only) to
1284\cfunction{PyRun_SimpleFile()}. You can also call the lower-level
1285operations described in the previous chapters to construct and use
1286Python objects.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001287
1288A simple demo of embedding Python can be found in the directory
Guido van Rossum6938f061994-08-01 12:22:53 +00001289\file{Demo/embed}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001290
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001291
Guido van Rossum16d6e711994-08-08 12:30:22 +00001292\section{Embedding Python in \Cpp{}}
Fred Drake3da06a61998-02-26 18:49:12 +00001293\label{embeddingInCplusplus}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001294
Guido van Rossum16d6e711994-08-08 12:30:22 +00001295It is also possible to embed Python in a \Cpp{} program; precisely how this
1296is done will depend on the details of the \Cpp{} system used; in general you
1297will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
1298to compile and link your program. There is no need to recompile Python
1299itself using \Cpp{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001300
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001301
1302\chapter{Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001303\label{dynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001304
Guido van Rossum6938f061994-08-01 12:22:53 +00001305On most modern systems it is possible to configure Python to support
Fred Drake0fd82681998-01-09 05:39:38 +00001306dynamic loading of extension modules implemented in \C{}. When shared
Guido van Rossum6938f061994-08-01 12:22:53 +00001307libraries are used dynamic loading is configured automatically;
1308otherwise you have to select it as a build option (see below). Once
1309configured, dynamic loading is trivial to use: when a Python program
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001310executes \code{import spam}, the search for modules tries to find a
1311file \file{spammodule.o} (\file{spammodule.so} when using shared
Fred Drakeb789c701998-04-02 16:19:15 +00001312libraries) in the module search path,%
1313\indexiii{module}{search}{path}
1314and if one is found, it is loaded into the executing binary and
1315executed. Once loaded, the module acts just like a built-in extension
1316module.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001317
Guido van Rossumb92112d1995-03-20 14:24:09 +00001318The advantages of dynamic loading are twofold: the ``core'' Python
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001319binary gets smaller, and users can extend Python with their own
Fred Drake0fd82681998-01-09 05:39:38 +00001320modules implemented in \C{} without having to build and maintain their
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001321own copy of the Python interpreter. There are also disadvantages:
1322dynamic loading isn't available on all systems (this just means that
1323on some systems you have to use static loading), and dynamically
1324loading a module that was compiled for a different version of Python
Guido van Rossum6938f061994-08-01 12:22:53 +00001325(e.g. with a different representation of objects) may dump core.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001326
1327
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001328\section{Configuring and Building the Interpreter for Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001329\label{dynloadConfig}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001330
Guido van Rossum6938f061994-08-01 12:22:53 +00001331There are three styles of dynamic loading: one using shared libraries,
1332one using SGI IRIX 4 dynamic loading, and one using GNU dynamic
1333loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001334
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001335\subsection{Shared Libraries}
Fred Drake3da06a61998-02-26 18:49:12 +00001336\label{sharedlibs}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001337
Guido van Rossum16d6e711994-08-08 12:30:22 +00001338The following systems support dynamic loading using shared libraries:
Fred Drakea0dbddf1998-04-02 06:50:02 +00001339SunOS 4; Solaris 2; SGI IRIX 5 (but not SGI IRIX 4!), Linux, FreeBSD,
1340NetBSD; and probably all systems derived from SVR4, or at least those
1341SVR4 derivatives that support shared libraries (are there any that
1342don't?).
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001343
Guido van Rossum6938f061994-08-01 12:22:53 +00001344You don't need to do anything to configure dynamic loading on these
1345systems --- the \file{configure} detects the presence of the
Fred Drakea0dbddf1998-04-02 06:50:02 +00001346\code{<dlfcn.h>} header file and automatically configures dynamic
Guido van Rossum6938f061994-08-01 12:22:53 +00001347loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001348
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001349\subsection{SGI IRIX 4 Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001350\label{irixDynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001351
Guido van Rossum6938f061994-08-01 12:22:53 +00001352Only SGI IRIX 4 supports dynamic loading of modules using SGI dynamic
1353loading. (SGI IRIX 5 might also support it but it is inferior to
1354using shared libraries so there is no reason to; a small test didn't
1355work right away so I gave up trying to support it.)
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001356
Fred Draked7bb3031998-03-03 17:52:07 +00001357Before you build Python, you first need to fetch and build the
1358\code{dl} package written by Jack Jansen. This is available by
Fred Drakea0dbddf1998-04-02 06:50:02 +00001359anonymous ftp from \url{ftp://ftp.cwi.nl/pub/dynload/}, file
Guido van Rossum6938f061994-08-01 12:22:53 +00001360\file{dl-1.6.tar.Z}. (The version number may change.) Follow the
1361instructions in the package's \file{README} file to build it.
1362
1363Once you have built \code{dl}, you can configure Python to use it. To
Fred Drakea0dbddf1998-04-02 06:50:02 +00001364this end, you run the \program{configure} script with the option
Guido van Rossum6938f061994-08-01 12:22:53 +00001365\code{--with-dl=\var{directory}} where \var{directory} is the absolute
1366pathname of the \code{dl} directory.
1367
1368Now build and install Python as you normally would (see the
1369\file{README} file in the toplevel Python directory.)
1370
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001371\subsection{GNU Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001372\label{gnuDynload}
Guido van Rossum6938f061994-08-01 12:22:53 +00001373
1374GNU dynamic loading supports (according to its \file{README} file) the
1375following hardware and software combinations: VAX (Ultrix), Sun 3
1376(SunOS 3.4 and 4.0), Sparc (SunOS 4.0), Sequent Symmetry (Dynix), and
1377Atari ST. There is no reason to use it on a Sparc; I haven't seen a
1378Sun 3 for years so I don't know if these have shared libraries or not.
1379
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001380You need to fetch and build two packages.
1381One is GNU DLD. All development of this code has been done with DLD
Fred Drakeca6567f1998-01-22 20:44:18 +00001382version 3.2.3, which is available by anonymous ftp from
1383\url{ftp://ftp.cwi.nl/pub/dynload}, file
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001384\file{dld-3.2.3.tar.Z}. (A more recent version of DLD is available
Fred Drakeca6567f1998-01-22 20:44:18 +00001385via \url{http://www-swiss.ai.mit.edu/~jaffer/DLD.html} but this has
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001386not been tested.)
1387The other package needed is an
Guido van Rossum6938f061994-08-01 12:22:53 +00001388emulation of Jack Jansen's \code{dl} package that I wrote on top of
1389GNU DLD 3.2.3. This is available from the same host and directory,
Guido van Rossum98046b91997-08-14 19:50:18 +00001390file \file{dl-dld-1.1.tar.Z}. (The version number may change --- but I doubt
Guido van Rossum6938f061994-08-01 12:22:53 +00001391it will.) Follow the instructions in each package's \file{README}
Guido van Rossum98046b91997-08-14 19:50:18 +00001392file to configure and build them.
Guido van Rossum6938f061994-08-01 12:22:53 +00001393
1394Now configure Python. Run the \file{configure} script with the option
1395\code{--with-dl-dld=\var{dl-directory},\var{dld-directory}} where
1396\var{dl-directory} is the absolute pathname of the directory where you
1397have built the \file{dl-dld} package, and \var{dld-directory} is that
1398of the GNU DLD package. The Python interpreter you build hereafter
1399will support GNU dynamic loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001400
1401
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001402\section{Building a Dynamically Loadable Module}
Fred Drake3da06a61998-02-26 18:49:12 +00001403\label{makedynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001404
Guido van Rossum6938f061994-08-01 12:22:53 +00001405Since there are three styles of dynamic loading, there are also three
1406groups of instructions for building a dynamically loadable module.
1407Instructions common for all three styles are given first. Assuming
Fred Draked7bb3031998-03-03 17:52:07 +00001408your module is called \module{spam}, the source filename must be
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001409\file{spammodule.c}, so the object name is \file{spammodule.o}. The
Guido van Rossum6938f061994-08-01 12:22:53 +00001410module must be written as a normal Python extension module (as
1411described earlier).
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001412
Guido van Rossum6938f061994-08-01 12:22:53 +00001413Note that in all cases you will have to create your own Makefile that
1414compiles your module file(s). This Makefile will have to pass two
Fred Drake0fd82681998-01-09 05:39:38 +00001415\samp{-I} arguments to the \C{} compiler which will make it find the
Fred Drakeb789c701998-04-02 16:19:15 +00001416Python header files. If the Make variable \makevar{PYTHONTOP} points to
1417the toplevel Python directory, your \makevar{CFLAGS} Make variable should
Guido van Rossum6938f061994-08-01 12:22:53 +00001418contain the options \samp{-I\$(PYTHONTOP) -I\$(PYTHONTOP)/Include}.
Fred Drakeb789c701998-04-02 16:19:15 +00001419(Most header files are in the \file{Include/} subdirectory, but the
Guido van Rossum305ed111996-08-19 22:59:46 +00001420\file{config.h} header lives in the toplevel directory.)
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001421
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001422
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001423\subsection{Shared Libraries}
Fred Drake3da06a61998-02-26 18:49:12 +00001424\label{linking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001425
Fred Drakeaf8a0151998-01-14 14:51:31 +00001426You must link the \file{.o} file to produce a shared library. This is
1427done using a special invocation of the \UNIX{} loader/linker,
Fred Drakea0dbddf1998-04-02 06:50:02 +00001428\manpage{ld}{1}. Unfortunately the invocation differs slightly per
Fred Drakeaf8a0151998-01-14 14:51:31 +00001429system.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001430
Guido van Rossum6938f061994-08-01 12:22:53 +00001431On SunOS 4, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001432\begin{verbatim}
1433ld spammodule.o -o spammodule.so
1434\end{verbatim}
1435
Guido van Rossum6938f061994-08-01 12:22:53 +00001436On Solaris 2, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001437\begin{verbatim}
1438ld -G spammodule.o -o spammodule.so
1439\end{verbatim}
1440
Guido van Rossum6938f061994-08-01 12:22:53 +00001441On SGI IRIX 5, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001442\begin{verbatim}
1443ld -shared spammodule.o -o spammodule.so
1444\end{verbatim}
1445
Fred Draked7bb3031998-03-03 17:52:07 +00001446On other systems, consult the manual page for \manpage{ld}{1} to find
1447what flags, if any, must be used.
Guido van Rossum6938f061994-08-01 12:22:53 +00001448
1449If your extension module uses system libraries that haven't already
1450been linked with Python (e.g. a windowing system), these must be
Fred Draked7bb3031998-03-03 17:52:07 +00001451passed to the \program{ld} command as \samp{-l} options after the
Guido van Rossum6938f061994-08-01 12:22:53 +00001452\samp{.o} file.
1453
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001454The resulting file \file{spammodule.so} must be copied into a directory
Guido van Rossum6938f061994-08-01 12:22:53 +00001455along the Python module search path.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001456
1457
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001458\subsection{SGI IRIX 4 Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001459\label{irixLinking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001460
Fred Drakeaf8a0151998-01-14 14:51:31 +00001461\strong{IMPORTANT:} You must compile your extension module with the
Fred Drakea0dbddf1998-04-02 06:50:02 +00001462additional \C{} flag \samp{-G0} (or \samp{-G 0}). This instructs the
Guido van Rossum6938f061994-08-01 12:22:53 +00001463assembler to generate position-independent code.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001464
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001465You don't need to link the resulting \file{spammodule.o} file; just
Fred Drakeb789c701998-04-02 16:19:15 +00001466copy it into a directory along the Python module search path.%
1467\indexiii{module}{search}{path}
Guido van Rossum6938f061994-08-01 12:22:53 +00001468
1469The first time your extension is loaded, it takes some extra time and
1470a few messages may be printed. This creates a file
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001471\file{spammodule.ld} which is an image that can be loaded quickly into
Guido van Rossum6938f061994-08-01 12:22:53 +00001472the Python interpreter process. When a new Python interpreter is
1473installed, the \code{dl} package detects this and rebuilds
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001474\file{spammodule.ld}. The file \file{spammodule.ld} is placed in the
1475directory where \file{spammodule.o} was found, unless this directory is
Guido van Rossum6938f061994-08-01 12:22:53 +00001476unwritable; in that case it is placed in a temporary
1477directory.\footnote{Check the manual page of the \code{dl} package for
1478details.}
1479
1480If your extension modules uses additional system libraries, you must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001481create a file \file{spammodule.libs} in the same directory as the
1482\file{spammodule.o}. This file should contain one or more lines with
Guido van Rossum6938f061994-08-01 12:22:53 +00001483whitespace-separated options that will be passed to the linker ---
1484normally only \samp{-l} options or absolute pathnames of libraries
1485(\samp{.a} files) should be used.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001486
1487
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001488\subsection{GNU Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001489\label{gnuLinking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001490
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001491Just copy \file{spammodule.o} into a directory along the Python module
Fred Drakeb789c701998-04-02 16:19:15 +00001492search path.%
1493\indexiii{module}{search}{path}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001494
Guido van Rossum6938f061994-08-01 12:22:53 +00001495If your extension modules uses additional system libraries, you must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001496create a file \file{spammodule.libs} in the same directory as the
1497\file{spammodule.o}. This file should contain one or more lines with
Guido van Rossum6938f061994-08-01 12:22:53 +00001498whitespace-separated absolute pathnames of libraries (\samp{.a}
1499files). No \samp{-l} options can be used.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001500
1501
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001502\end{document}