blob: a281a6d13dd1dd5576cdc8cc8839a4a173df6e1d [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
Fred Drake9f86b661998-07-28 21:55:19 +000016\ifhtml
17\chapter*{Front Matter\label{front}}
18\fi
19
Guido van Rossum16cd7f91994-10-06 10:29:26 +000020\input{copyright}
21
Guido van Rossum7a2dba21993-11-05 14:45:11 +000022\begin{abstract}
23
24\noindent
Guido van Rossumb92112d1995-03-20 14:24:09 +000025Python is an interpreted, object-oriented programming language. This
Fred Drake0fd82681998-01-09 05:39:38 +000026document describes how to write modules in \C{} or \Cpp{} to extend the
Guido van Rossumb92112d1995-03-20 14:24:09 +000027Python interpreter with new modules. Those modules can define new
28functions but also new object types and their methods. The document
29also describes how to embed the Python interpreter in another
30application, for use as an extension language. Finally, it shows how
31to compile and link extension modules so that they can be loaded
32dynamically (at run time) into the interpreter, if the underlying
33operating system supports this feature.
34
35This document assumes basic knowledge about Python. For an informal
Fred Drake3da06a61998-02-26 18:49:12 +000036introduction to the language, see the Python Tutorial. The \emph{Python
37Reference Manual} gives a more formal definition of the language. The
38\emph{Python Library Reference} documents the existing object types,
Guido van Rossumb92112d1995-03-20 14:24:09 +000039functions and modules (both built-in and written in Python) that give
40the language its wide application range.
Guido van Rossum7a2dba21993-11-05 14:45:11 +000041
Fred Drake0fd82681998-01-09 05:39:38 +000042For a detailed description of the whole Python/\C{} API, see the separate
Fred Drake3da06a61998-02-26 18:49:12 +000043\emph{Python/\C{} API Reference Manual}. \strong{Note:} While that
44manual is still in a state of flux, it is safe to say that it is much
45more up to date than the manual you're reading currently (which has
46been in need for an upgrade for some time now).
Guido van Rossumfdacc581997-10-07 14:40:16 +000047
48
Guido van Rossum7a2dba21993-11-05 14:45:11 +000049\end{abstract}
50
Fred Drake4d4f9e71998-01-13 22:25:02 +000051\tableofcontents
Guido van Rossum7a2dba21993-11-05 14:45:11 +000052
Guido van Rossumdb65a6c1993-11-05 17:11:16 +000053
Fred Drake0fd82681998-01-09 05:39:38 +000054\chapter{Extending Python with \C{} or \Cpp{} code}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000055
Guido van Rossum6f0132f1993-11-19 13:13:22 +000056
Fred Drake3da06a61998-02-26 18:49:12 +000057%\section{Introduction}
58\label{intro}
Guido van Rossum6f0132f1993-11-19 13:13:22 +000059
Guido van Rossumb92112d1995-03-20 14:24:09 +000060It is quite easy to add new built-in modules to Python, if you know
Fred Drake0fd82681998-01-09 05:39:38 +000061how to program in \C{}. Such \dfn{extension modules} can do two things
Guido van Rossumb92112d1995-03-20 14:24:09 +000062that can't be done directly in Python: they can implement new built-in
Fred Drake0fd82681998-01-09 05:39:38 +000063object types, and they can call \C{} library functions and system calls.
Guido van Rossum6938f061994-08-01 12:22:53 +000064
Guido van Rossum5049bcb1995-03-13 16:55:23 +000065To support extensions, the Python API (Application Programmers
Guido van Rossumb92112d1995-03-20 14:24:09 +000066Interface) defines a set of functions, macros and variables that
67provide access to most aspects of the Python run-time system. The
Fred Drake0fd82681998-01-09 05:39:38 +000068Python API is incorporated in a \C{} source file by including the header
Guido van Rossumb92112d1995-03-20 14:24:09 +000069\code{"Python.h"}.
Guido van Rossum6938f061994-08-01 12:22:53 +000070
Guido van Rossumb92112d1995-03-20 14:24:09 +000071The compilation of an extension module depends on its intended use as
72well as on your system setup; details are given in a later section.
Guido van Rossum6938f061994-08-01 12:22:53 +000073
Guido van Rossum7a2dba21993-11-05 14:45:11 +000074
Guido van Rossum5049bcb1995-03-13 16:55:23 +000075\section{A Simple Example}
Fred Drake3da06a61998-02-26 18:49:12 +000076\label{simpleExample}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000077
Guido van Rossumb92112d1995-03-20 14:24:09 +000078Let's create an extension module called \samp{spam} (the favorite food
79of Monty Python fans...) and let's say we want to create a Python
Fred Draked7bb3031998-03-03 17:52:07 +000080interface to the \C{} library function \cfunction{system()}.\footnote{An
Guido van Rossumb92112d1995-03-20 14:24:09 +000081interface for this function already exists in the standard module
Fred Draked7bb3031998-03-03 17:52:07 +000082\module{os} --- it was chosen as a simple and straightfoward example.}
Guido van Rossumb92112d1995-03-20 14:24:09 +000083This function takes a null-terminated character string as argument and
84returns an integer. We want this function to be callable from Python
85as follows:
86
Fred Drake1e11a5c1998-02-13 07:11:32 +000087\begin{verbatim}
88>>> import spam
89>>> status = spam.system("ls -l")
90\end{verbatim}
91
Fred Drakea0dbddf1998-04-02 06:50:02 +000092Begin by creating a file \file{spammodule.c}. (In general, if a
Fred Drake0fd82681998-01-09 05:39:38 +000093module is called \samp{spam}, the \C{} file containing its implementation
Guido van Rossumb92112d1995-03-20 14:24:09 +000094is called \file{spammodule.c}; if the module name is very long, like
95\samp{spammify}, the module name can be just \file{spammify.c}.)
96
97The first line of our file can be:
Guido van Rossum7a2dba21993-11-05 14:45:11 +000098
Fred Drake1e11a5c1998-02-13 07:11:32 +000099\begin{verbatim}
100#include "Python.h"
101\end{verbatim}
102
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000103which pulls in the Python API (you can add a comment describing the
104purpose of the module and a copyright notice if you like).
105
Guido van Rossumb92112d1995-03-20 14:24:09 +0000106All user-visible symbols defined by \code{"Python.h"} have a prefix of
107\samp{Py} or \samp{PY}, except those defined in standard header files.
108For convenience, and since they are used extensively by the Python
109interpreter, \code{"Python.h"} includes a few standard header files:
110\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
111\code{<stdlib.h>}. If the latter header file does not exist on your
Fred Draked7bb3031998-03-03 17:52:07 +0000112system, it declares the functions \cfunction{malloc()},
113\cfunction{free()} and \cfunction{realloc()} directly.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000114
Fred Drake0fd82681998-01-09 05:39:38 +0000115The next thing we add to our module file is the \C{} function that will
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000116be called when the Python expression \samp{spam.system(\var{string})}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000117is evaluated (we'll see shortly how it ends up being called):
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000118
Fred Drake1e11a5c1998-02-13 07:11:32 +0000119\begin{verbatim}
120static PyObject *
121spam_system(self, args)
122 PyObject *self;
123 PyObject *args;
124{
125 char *command;
126 int sts;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000127
Fred Drake1e11a5c1998-02-13 07:11:32 +0000128 if (!PyArg_ParseTuple(args, "s", &command))
129 return NULL;
130 sts = system(command);
131 return Py_BuildValue("i", sts);
132}
133\end{verbatim}
134
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000135There is a straightforward translation from the argument list in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000136Python (e.g.\ the single expression \code{"ls -l"}) to the arguments
Fred Drake0fd82681998-01-09 05:39:38 +0000137passed to the \C{} function. The \C{} function always has two arguments,
Guido van Rossumb92112d1995-03-20 14:24:09 +0000138conventionally named \var{self} and \var{args}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000139
Fred Drake0fd82681998-01-09 05:39:38 +0000140The \var{self} argument is only used when the \C{} function implements a
Fred Drakedc409041998-04-02 18:54:54 +0000141built-in method. This will be discussed later. In the example,
Fred Drake0fd82681998-01-09 05:39:38 +0000142\var{self} will always be a \NULL{} pointer, since we are defining
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000143a function, not a method. (This is done so that the interpreter
Fred Drake0fd82681998-01-09 05:39:38 +0000144doesn't have to understand two different types of \C{} functions.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000145
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000146The \var{args} argument will be a pointer to a Python tuple object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000147containing the arguments. Each item of the tuple corresponds to an
148argument in the call's argument list. The arguments are Python
Fred Drake1aedbd81998-02-16 14:47:27 +0000149objects --- in order to do anything with them in our \C{} function we have
Fred Drake3da06a61998-02-26 18:49:12 +0000150to convert them to \C{} values. The function \cfunction{PyArg_ParseTuple()}
Fred Drake0fd82681998-01-09 05:39:38 +0000151in the Python API checks the argument types and converts them to \C{}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000152values. It uses a template string to determine the required types of
Fred Drake0fd82681998-01-09 05:39:38 +0000153the arguments as well as the types of the \C{} variables into which to
Guido van Rossumb92112d1995-03-20 14:24:09 +0000154store the converted values. More about this later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000155
Fred Drake3da06a61998-02-26 18:49:12 +0000156\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
Guido van Rossumb92112d1995-03-20 14:24:09 +0000157the right type and its components have been stored in the variables
158whose addresses are passed. It returns false (zero) if an invalid
159argument list was passed. In the latter case it also raises an
160appropriate exception by so the calling function can return
Fred Drake0fd82681998-01-09 05:39:38 +0000161\NULL{} immediately (as we saw in the example).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000162
163
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000164\section{Intermezzo: Errors and Exceptions}
Fred Drake3da06a61998-02-26 18:49:12 +0000165\label{errors}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000166
167An important convention throughout the Python interpreter is the
168following: when a function fails, it should set an exception condition
Fred Drake0fd82681998-01-09 05:39:38 +0000169and return an error value (usually a \NULL{} pointer). Exceptions
Guido van Rossumb92112d1995-03-20 14:24:09 +0000170are stored in a static global variable inside the interpreter; if this
Fred Drake0fd82681998-01-09 05:39:38 +0000171variable is \NULL{} no exception has occurred. A second global
Guido van Rossumb92112d1995-03-20 14:24:09 +0000172variable stores the ``associated value'' of the exception (the second
Fred Draked7bb3031998-03-03 17:52:07 +0000173argument to \keyword{raise}). A third variable contains the stack
Guido van Rossumb92112d1995-03-20 14:24:09 +0000174traceback in case the error originated in Python code. These three
Fred Drake0fd82681998-01-09 05:39:38 +0000175variables are the \C{} equivalents of the Python variables
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000176\code{sys.exc_type}, \code{sys.exc_value} and \code{sys.exc_traceback}
Fred Draked7bb3031998-03-03 17:52:07 +0000177(see the section on module \module{sys} in the \emph{Python Library
178Reference}). It is important to know about them to understand how
179errors are passed around.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000180
Guido van Rossumb92112d1995-03-20 14:24:09 +0000181The Python API defines a number of functions to set various types of
182exceptions.
183
Fred Draked7bb3031998-03-03 17:52:07 +0000184The most common one is \cfunction{PyErr_SetString()}. Its arguments
185are an exception object and a \C{} string. The exception object is
186usually a predefined object like \cdata{PyExc_ZeroDivisionError}. The
187\C{} string indicates the cause of the error and is converted to a
188Python string object and stored as the ``associated value'' of the
189exception.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000190
Fred Draked7bb3031998-03-03 17:52:07 +0000191Another useful function is \cfunction{PyErr_SetFromErrno()}, which only
Guido van Rossumb92112d1995-03-20 14:24:09 +0000192takes an exception argument and constructs the associated value by
Fred Draked7bb3031998-03-03 17:52:07 +0000193inspection of the (\UNIX{}) global variable \cdata{errno}. The most
194general function is \cfunction{PyErr_SetObject()}, which takes two object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000195arguments, the exception and its associated value. You don't need to
Fred Draked7bb3031998-03-03 17:52:07 +0000196\cfunction{Py_INCREF()} the objects passed to any of these functions.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000197
198You can test non-destructively whether an exception has been set with
Fred Draked7bb3031998-03-03 17:52:07 +0000199\cfunction{PyErr_Occurred()}. This returns the current exception object,
Fred Drake0fd82681998-01-09 05:39:38 +0000200or \NULL{} if no exception has occurred. You normally don't need
Fred Draked7bb3031998-03-03 17:52:07 +0000201to call \cfunction{PyErr_Occurred()} to see whether an error occurred in a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000202function call, since you should be able to tell from the return value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000203
Guido van Rossumd16ddb61996-12-13 02:38:17 +0000204When a function \var{f} that calls another function \var{g} detects
Guido van Rossumb92112d1995-03-20 14:24:09 +0000205that the latter fails, \var{f} should itself return an error value
Fred Drake0fd82681998-01-09 05:39:38 +0000206(e.g. \NULL{} or \code{-1}). It should \emph{not} call one of the
Fred Draked7bb3031998-03-03 17:52:07 +0000207\cfunction{PyErr_*()} functions --- one has already been called by \var{g}.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000208\var{f}'s caller is then supposed to also return an error indication
Fred Draked7bb3031998-03-03 17:52:07 +0000209to \emph{its} caller, again \emph{without} calling \cfunction{PyErr_*()},
Guido van Rossumb92112d1995-03-20 14:24:09 +0000210and so on --- the most detailed cause of the error was already
211reported by the function that first detected it. Once the error
212reaches the Python interpreter's main loop, this aborts the currently
213executing Python code and tries to find an exception handler specified
214by the Python programmer.
Guido van Rossum6938f061994-08-01 12:22:53 +0000215
216(There are situations where a module can actually give a more detailed
Fred Draked7bb3031998-03-03 17:52:07 +0000217error message by calling another \cfunction{PyErr_*()} function, and in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000218such cases it is fine to do so. As a general rule, however, this is
219not necessary, and can cause information about the cause of the error
220to be lost: most operations can fail for a variety of reasons.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000221
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000222To ignore an exception set by a function call that failed, the exception
Fred Draked7bb3031998-03-03 17:52:07 +0000223condition must be cleared explicitly by calling \cfunction{PyErr_Clear()}.
224The only time \C{} code should call \cfunction{PyErr_Clear()} is if it doesn't
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000225want to pass the error on to the interpreter but wants to handle it
226completely by itself (e.g. by trying something else or pretending
227nothing happened).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000228
Fred Draked7bb3031998-03-03 17:52:07 +0000229Note that a failing \cfunction{malloc()} call must be turned into an
230exception --- the direct caller of \cfunction{malloc()} (or
231\cfunction{realloc()}) must call \cfunction{PyErr_NoMemory()} and
232return a failure indicator itself. All the object-creating functions
233(\cfunction{PyInt_FromLong()} etc.) already do this, so only if you
234call \cfunction{malloc()} directly this note is of importance.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000235
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000236Also note that, with the important exception of
Fred Drake3da06a61998-02-26 18:49:12 +0000237\cfunction{PyArg_ParseTuple()} and friends, functions that return an
Guido van Rossumb92112d1995-03-20 14:24:09 +0000238integer status usually return a positive value or zero for success and
239\code{-1} for failure, like \UNIX{} system calls.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000240
Fred Draked7bb3031998-03-03 17:52:07 +0000241Finally, be careful to clean up garbage (by making
242\cfunction{Py_XDECREF()} or \cfunction{Py_DECREF()} calls for objects
243you have already created) when you return an error indicator!
Guido van Rossum6938f061994-08-01 12:22:53 +0000244
245The choice of which exception to raise is entirely yours. There are
Fred Drake0fd82681998-01-09 05:39:38 +0000246predeclared \C{} objects corresponding to all built-in Python exceptions,
Fred Drakeb85fbec1998-04-13 00:50:04 +0000247e.g. \cdata{PyExc_ZeroDivisionError} which you can use directly. Of
Guido van Rossumb92112d1995-03-20 14:24:09 +0000248course, you should choose exceptions wisely --- don't use
Fred Draked7bb3031998-03-03 17:52:07 +0000249\cdata{PyExc_TypeError} to mean that a file couldn't be opened (that
250should probably be \cdata{PyExc_IOError}). If something's wrong with
Fred Drake3da06a61998-02-26 18:49:12 +0000251the argument list, the \cfunction{PyArg_ParseTuple()} function usually
Fred Draked7bb3031998-03-03 17:52:07 +0000252raises \cdata{PyExc_TypeError}. If you have an argument whose value
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000253which must be in a particular range or must satisfy other conditions,
Fred Draked7bb3031998-03-03 17:52:07 +0000254\cdata{PyExc_ValueError} is appropriate.
Guido van Rossum6938f061994-08-01 12:22:53 +0000255
256You can also define a new exception that is unique to your module.
257For this, you usually declare a static object variable at the
258beginning of your file, e.g.
259
Fred Drake1e11a5c1998-02-13 07:11:32 +0000260\begin{verbatim}
261static PyObject *SpamError;
262\end{verbatim}
263
Guido van Rossum6938f061994-08-01 12:22:53 +0000264and initialize it in your module's initialization function
Fred Draked7bb3031998-03-03 17:52:07 +0000265(\cfunction{initspam()}) with an exception object, e.g. (leaving out
266the error checking for now):
Guido van Rossum6938f061994-08-01 12:22:53 +0000267
Fred Drake1e11a5c1998-02-13 07:11:32 +0000268\begin{verbatim}
269void
270initspam()
271{
272 PyObject *m, *d;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000273
Fred Drake1e11a5c1998-02-13 07:11:32 +0000274 m = Py_InitModule("spam", SpamMethods);
275 d = PyModule_GetDict(m);
Fred Draked7bb3031998-03-03 17:52:07 +0000276 SpamError = PyErr_NewException("spam.error", NULL, NULL);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000277 PyDict_SetItemString(d, "error", SpamError);
278}
279\end{verbatim}
280
Guido van Rossumb92112d1995-03-20 14:24:09 +0000281Note that the Python name for the exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000282\exception{spam.error}. The \cfunction{PyErr_NewException()} function
283may create either a string or class, depending on whether the
284\samp{-X} flag was passed to the interpreter. If \samp{-X} was used,
285\cdata{SpamError} will be a string object, otherwise it will be a
286class object with the base class being \exception{Exception},
287described in the \emph{Python Library Reference} under ``Built-in
288Exceptions.''
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000289
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000290
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000291\section{Back to the Example}
Fred Drake3da06a61998-02-26 18:49:12 +0000292\label{backToExample}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000293
294Going back to our example function, you should now be able to
295understand this statement:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000296
Fred Drake1e11a5c1998-02-13 07:11:32 +0000297\begin{verbatim}
298 if (!PyArg_ParseTuple(args, "s", &command))
299 return NULL;
300\end{verbatim}
301
Fred Drake0fd82681998-01-09 05:39:38 +0000302It returns \NULL{} (the error indicator for functions returning
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000303object pointers) if an error is detected in the argument list, relying
Fred Drake3da06a61998-02-26 18:49:12 +0000304on the exception set by \cfunction{PyArg_ParseTuple()}. Otherwise the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000305string value of the argument has been copied to the local variable
Fred Draked7bb3031998-03-03 17:52:07 +0000306\cdata{command}. This is a pointer assignment and you are not supposed
Fred Drake0fd82681998-01-09 05:39:38 +0000307to modify the string to which it points (so in Standard \C{}, the variable
Fred Draked7bb3031998-03-03 17:52:07 +0000308\cdata{command} should properly be declared as \samp{const char
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000309*command}).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000310
Fred Draked7bb3031998-03-03 17:52:07 +0000311The next statement is a call to the \UNIX{} function
312\cfunction{system()}, passing it the string we just got from
313\cfunction{PyArg_ParseTuple()}:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000314
Fred Drake1e11a5c1998-02-13 07:11:32 +0000315\begin{verbatim}
316 sts = system(command);
317\end{verbatim}
318
Fred Draked7bb3031998-03-03 17:52:07 +0000319Our \function{spam.system()} function must return the value of
320\cdata{sts} as a Python object. This is done using the function
321\cfunction{Py_BuildValue()}, which is something like the inverse of
322\cfunction{PyArg_ParseTuple()}: it takes a format string and an
323arbitrary number of \C{} values, and returns a new Python object.
324More info on \cfunction{Py_BuildValue()} is given later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000325
Fred Drake1e11a5c1998-02-13 07:11:32 +0000326\begin{verbatim}
327 return Py_BuildValue("i", sts);
328\end{verbatim}
329
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000330In this case, it will return an integer object. (Yes, even integers
331are objects on the heap in Python!)
Guido van Rossum6938f061994-08-01 12:22:53 +0000332
Fred Drake0fd82681998-01-09 05:39:38 +0000333If you have a \C{} function that returns no useful argument (a function
Fred Draked7bb3031998-03-03 17:52:07 +0000334returning \ctype{void}), the corresponding Python function must return
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000335\code{None}. You need this idiom to do so:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000336
Fred Drake1e11a5c1998-02-13 07:11:32 +0000337\begin{verbatim}
338 Py_INCREF(Py_None);
339 return Py_None;
340\end{verbatim}
341
Fred Draked7bb3031998-03-03 17:52:07 +0000342\cdata{Py_None} is the \C{} name for the special Python object
Fred Drakea0dbddf1998-04-02 06:50:02 +0000343\code{None}. It is a genuine Python object rather than a \NULL{}
344pointer, which means ``error'' in most contexts, as we have seen.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000345
346
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000347\section{The Module's Method Table and Initialization Function}
Fred Drake3da06a61998-02-26 18:49:12 +0000348\label{methodTable}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000349
Fred Draked7bb3031998-03-03 17:52:07 +0000350I promised to show how \cfunction{spam_system()} is called from Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000351programs. First, we need to list its name and address in a ``method
352table'':
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000353
Fred Drake1e11a5c1998-02-13 07:11:32 +0000354\begin{verbatim}
355static PyMethodDef SpamMethods[] = {
356 ...
357 {"system", spam_system, METH_VARARGS},
358 ...
359 {NULL, NULL} /* Sentinel */
360};
361\end{verbatim}
362
Fred Drake0fd82681998-01-09 05:39:38 +0000363Note the third entry (\samp{METH_VARARGS}). This is a flag telling
364the interpreter the calling convention to be used for the \C{}
365function. It should normally always be \samp{METH_VARARGS} or
Fred Drakea0dbddf1998-04-02 06:50:02 +0000366\samp{METH_VARARGS | METH_KEYWORDS}; a value of \code{0} means that an
Fred Drake3da06a61998-02-26 18:49:12 +0000367obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000368
Fred Drakeb6e50321998-02-04 20:26:31 +0000369When using only \samp{METH_VARARGS}, the function should expect
370the Python-level parameters to be passed in as a tuple acceptable for
371parsing via \cfunction{PyArg_ParseTuple()}; more information on this
372function is provided below.
373
Fred Draked7bb3031998-03-03 17:52:07 +0000374The \constant{METH_KEYWORDS} bit may be set in the third field if keyword
Fred Drake0fd82681998-01-09 05:39:38 +0000375arguments should be passed to the function. In this case, the \C{}
376function should accept a third \samp{PyObject *} parameter which will
Fred Drake3da06a61998-02-26 18:49:12 +0000377be a dictionary of keywords. Use \cfunction{PyArg_ParseTupleAndKeywords()}
Fred Drake0fd82681998-01-09 05:39:38 +0000378to parse the arguemts to such a function.
379
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000380The method table must be passed to the interpreter in the module's
381initialization function (which should be the only non-\code{static}
382item defined in the module file):
383
Fred Drake1e11a5c1998-02-13 07:11:32 +0000384\begin{verbatim}
385void
386initspam()
387{
388 (void) Py_InitModule("spam", SpamMethods);
389}
390\end{verbatim}
391
Fred Draked7bb3031998-03-03 17:52:07 +0000392When the Python program imports module \module{spam} for the first
393time, \cfunction{initspam()} is called. It calls
394\cfunction{Py_InitModule()}, which creates a ``module object'' (which
395is inserted in the dictionary \code{sys.modules} under the key
396\code{"spam"}), and inserts built-in function objects into the newly
397created module based upon the table (an array of \ctype{PyMethodDef}
398structures) that was passed as its second argument.
399\cfunction{Py_InitModule()} returns a pointer to the module object
400that it creates (which is unused here). It aborts with a fatal error
401if the module could not be initialized satisfactorily, so the caller
402doesn't need to check for errors.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000403
404
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000405\section{Compilation and Linkage}
Fred Drake3da06a61998-02-26 18:49:12 +0000406\label{compilation}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000407
Guido van Rossumb92112d1995-03-20 14:24:09 +0000408There are two more things to do before you can use your new extension:
409compiling and linking it with the Python system. If you use dynamic
410loading, the details depend on the style of dynamic loading your
Fred Drakea0dbddf1998-04-02 06:50:02 +0000411system uses; see the chapter ``Dynamic Loading'' for more information
412about this.
Guido van Rossum6938f061994-08-01 12:22:53 +0000413
414If you can't use dynamic loading, or if you want to make your module a
415permanent part of the Python interpreter, you will have to change the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000416configuration setup and rebuild the interpreter. Luckily, this is
417very simple: just place your file (\file{spammodule.c} for example) in
418the \file{Modules} directory, add a line to the file
Fred Drakea0dbddf1998-04-02 06:50:02 +0000419\file{Modules/Setup.local} describing your file:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000420
Fred Drake1e11a5c1998-02-13 07:11:32 +0000421\begin{verbatim}
422spam spammodule.o
423\end{verbatim}
424
Fred Draked7bb3031998-03-03 17:52:07 +0000425and rebuild the interpreter by running \program{make} in the toplevel
426directory. You can also run \program{make} in the \file{Modules}
Fred Drakea0dbddf1998-04-02 06:50:02 +0000427subdirectory, but then you must first rebuild \file{Makefile}
Fred Draked7bb3031998-03-03 17:52:07 +0000428there by running `\program{make} Makefile'. (This is necessary each
429time you change the \file{Setup} file.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000430
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000431If your module requires additional libraries to link with, these can
Fred Drakea0dbddf1998-04-02 06:50:02 +0000432be listed on the line in the configuration file as well, for instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000433
Fred Drake1e11a5c1998-02-13 07:11:32 +0000434\begin{verbatim}
435spam spammodule.o -lX11
436\end{verbatim}
437
Fred Drake0fd82681998-01-09 05:39:38 +0000438\section{Calling Python Functions From \C{}}
Fred Drake3da06a61998-02-26 18:49:12 +0000439\label{callingPython}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000440
Fred Drake0fd82681998-01-09 05:39:38 +0000441So far we have concentrated on making \C{} functions callable from
442Python. The reverse is also useful: calling Python functions from \C{}.
Guido van Rossum6938f061994-08-01 12:22:53 +0000443This is especially the case for libraries that support so-called
Fred Drake0fd82681998-01-09 05:39:38 +0000444``callback'' functions. If a \C{} interface makes use of callbacks, the
Guido van Rossum6938f061994-08-01 12:22:53 +0000445equivalent Python often needs to provide a callback mechanism to the
446Python programmer; the implementation will require calling the Python
Fred Drake0fd82681998-01-09 05:39:38 +0000447callback functions from a \C{} callback. Other uses are also imaginable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000448
449Fortunately, the Python interpreter is easily called recursively, and
Guido van Rossum6938f061994-08-01 12:22:53 +0000450there is a standard interface to call a Python function. (I won't
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000451dwell on how to call the Python parser with a particular string as
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000452input --- if you're interested, have a look at the implementation of
Guido van Rossum6938f061994-08-01 12:22:53 +0000453the \samp{-c} command line option in \file{Python/pythonmain.c}.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000454
455Calling a Python function is easy. First, the Python program must
456somehow pass you the Python function object. You should provide a
457function (or some other interface) to do this. When this function is
458called, save a pointer to the Python function object (be careful to
Fred Draked7bb3031998-03-03 17:52:07 +0000459\cfunction{Py_INCREF()} it!) in a global variable --- or whereever you
460see fit. For example, the following function might be part of a module
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000461definition:
462
Fred Drake1e11a5c1998-02-13 07:11:32 +0000463\begin{verbatim}
464static PyObject *my_callback = NULL;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000465
Fred Drake1e11a5c1998-02-13 07:11:32 +0000466static PyObject *
467my_set_callback(dummy, arg)
468 PyObject *dummy, *arg;
469{
470 Py_XDECREF(my_callback); /* Dispose of previous callback */
471 Py_XINCREF(arg); /* Add a reference to new callback */
472 my_callback = arg; /* Remember new callback */
473 /* Boilerplate to return "None" */
474 Py_INCREF(Py_None);
475 return Py_None;
476}
477\end{verbatim}
478
Fred Draked7bb3031998-03-03 17:52:07 +0000479The macros \cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()}
480increment/decrement the reference count of an object and are safe in
481the presence of \NULL{} pointers. More info on them in the section on
482Reference Counts below.
Guido van Rossum6938f061994-08-01 12:22:53 +0000483
Fred Drake0fd82681998-01-09 05:39:38 +0000484Later, when it is time to call the function, you call the \C{} function
Fred Draked7bb3031998-03-03 17:52:07 +0000485\cfunction{PyEval_CallObject()}. This function has two arguments, both
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000486pointers to arbitrary Python objects: the Python function, and the
487argument list. The argument list must always be a tuple object, whose
488length is the number of arguments. To call the Python function with
489no arguments, pass an empty tuple; to call it with one argument, pass
Fred Draked7bb3031998-03-03 17:52:07 +0000490a singleton tuple. \cfunction{Py_BuildValue()} returns a tuple when its
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000491format string consists of zero or more format codes between
492parentheses. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000493
Fred Drake1e11a5c1998-02-13 07:11:32 +0000494\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000495 int arg;
496 PyObject *arglist;
497 PyObject *result;
498 ...
499 arg = 123;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000500 ...
501 /* Time to call the callback */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000502 arglist = Py_BuildValue("(i)", arg);
503 result = PyEval_CallObject(my_callback, arglist);
504 Py_DECREF(arglist);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000505\end{verbatim}
506
Fred Draked7bb3031998-03-03 17:52:07 +0000507\cfunction{PyEval_CallObject()} returns a Python object pointer: this is
508the return value of the Python function. \cfunction{PyEval_CallObject()} is
Guido van Rossumb92112d1995-03-20 14:24:09 +0000509``reference-count-neutral'' with respect to its arguments. In the
Guido van Rossum6938f061994-08-01 12:22:53 +0000510example a new tuple was created to serve as the argument list, which
Fred Draked7bb3031998-03-03 17:52:07 +0000511is \cfunction{Py_DECREF()}-ed immediately after the call.
Guido van Rossum6938f061994-08-01 12:22:53 +0000512
Fred Draked7bb3031998-03-03 17:52:07 +0000513The return value of \cfunction{PyEval_CallObject()} is ``new'': either it
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000514is a brand new object, or it is an existing object whose reference
515count has been incremented. So, unless you want to save it in a
Fred Draked7bb3031998-03-03 17:52:07 +0000516global variable, you should somehow \cfunction{Py_DECREF()} the result,
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000517even (especially!) if you are not interested in its value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000518
519Before you do this, however, it is important to check that the return
Fred Draked7bb3031998-03-03 17:52:07 +0000520value isn't \NULL{}. If it is, the Python function terminated by
521raising an exception. If the \C{} code that called
522\cfunction{PyEval_CallObject()} is called from Python, it should now
523return an error indication to its Python caller, so the interpreter
524can print a stack trace, or the calling Python code can handle the
525exception. If this is not possible or desirable, the exception should
526be cleared by calling \cfunction{PyErr_Clear()}. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000527
Fred Drake1e11a5c1998-02-13 07:11:32 +0000528\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000529 if (result == NULL)
530 return NULL; /* Pass error back */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000531 ...use result...
532 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000533\end{verbatim}
534
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000535Depending on the desired interface to the Python callback function,
Fred Draked7bb3031998-03-03 17:52:07 +0000536you may also have to provide an argument list to
537\cfunction{PyEval_CallObject()}. In some cases the argument list is
538also provided by the Python program, through the same interface that
539specified the callback function. It can then be saved and used in the
540same manner as the function object. In other cases, you may have to
541construct a new tuple to pass as the argument list. The simplest way
542to do this is to call \cfunction{Py_BuildValue()}. For example, if
543you want to pass an integral event code, you might use the following
544code:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000545
Fred Drake1e11a5c1998-02-13 07:11:32 +0000546\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000547 PyObject *arglist;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000548 ...
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000549 arglist = Py_BuildValue("(l)", eventcode);
550 result = PyEval_CallObject(my_callback, arglist);
551 Py_DECREF(arglist);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000552 if (result == NULL)
553 return NULL; /* Pass error back */
554 /* Here maybe use the result */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000555 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000556\end{verbatim}
557
Fred Draked7bb3031998-03-03 17:52:07 +0000558Note the placement of \samp{Py_DECREF(arglist)} immediately after the
559call, before the error check! Also note that strictly spoken this
560code is not complete: \cfunction{Py_BuildValue()} may run out of
561memory, and this should be checked.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000562
563
Fred Drakee7957181998-04-04 07:17:47 +0000564\section{Format Strings for \cfunction{PyArg_ParseTuple()}}
Fred Drake3da06a61998-02-26 18:49:12 +0000565\label{parseTuple}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000566
Fred Drake3da06a61998-02-26 18:49:12 +0000567The \cfunction{PyArg_ParseTuple()} function is declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000568
Fred Drake1e11a5c1998-02-13 07:11:32 +0000569\begin{verbatim}
570int PyArg_ParseTuple(PyObject *arg, char *format, ...);
571\end{verbatim}
572
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000573The \var{arg} argument must be a tuple object containing an argument
Fred Drake0fd82681998-01-09 05:39:38 +0000574list passed from Python to a \C{} function. The \var{format} argument
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000575must be a format string, whose syntax is explained below. The
576remaining arguments must be addresses of variables whose type is
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000577determined by the format string. For the conversion to succeed, the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000578\var{arg} object must match the format and the format must be
579exhausted.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000580
Fred Drake3da06a61998-02-26 18:49:12 +0000581Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000582arguments have the required types, it cannot check the validity of the
Fred Drake0fd82681998-01-09 05:39:38 +0000583addresses of \C{} variables passed to the call: if you make mistakes
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000584there, your code will probably crash or at least overwrite random bits
585in memory. So be careful!
586
587A format string consists of zero or more ``format units''. A format
588unit describes one Python object; it is usually a single character or
589a parenthesized sequence of format units. With a few exceptions, a
590format unit that is not a parenthesized sequence normally corresponds
Fred Drake3da06a61998-02-26 18:49:12 +0000591to a single address argument to \cfunction{PyArg_ParseTuple()}. In the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000592following description, the quoted form is the format unit; the entry
593in (round) parentheses is the Python object type that matches the
Fred Drake0fd82681998-01-09 05:39:38 +0000594format unit; and the entry in [square] brackets is the type of the \C{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000595variable(s) whose address should be passed. (Use the \samp{\&}
596operator to pass a variable's address.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000597
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000598\begin{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000599
Fred Drake3fe985f1998-03-04 03:51:42 +0000600\item[\samp{s} (string) {[char *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000601Convert a Python string to a \C{} pointer to a character string. You
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000602must not provide storage for the string itself; a pointer to an
603existing string is stored into the character pointer variable whose
Fred Drake0fd82681998-01-09 05:39:38 +0000604address you pass. The \C{} string is null-terminated. The Python string
Fred Drake3da06a61998-02-26 18:49:12 +0000605must not contain embedded null bytes; if it does, a \exception{TypeError}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000606exception is raised.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000607
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000608\item[\samp{s\#} (string) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000609This variant on \samp{s} stores into two \C{} variables, the first one
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000610a pointer to a character string, the second one its length. In this
611case the Python string may contain embedded null bytes.
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 *]}]
614Like \samp{s}, but the Python object may also be \code{None}, in which
Fred Drake0fd82681998-01-09 05:39:38 +0000615case the \C{} pointer is set to \NULL{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000616
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000617\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000618This is to \samp{s\#} as \samp{z} is to \samp{s}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000619
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000620\item[\samp{b} (integer) {[char]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000621Convert a Python integer to a tiny int, stored in a \C{} \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000622
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000623\item[\samp{h} (integer) {[short int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000624Convert a Python integer to a \C{} \ctype{short int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000625
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000626\item[\samp{i} (integer) {[int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000627Convert a Python integer to a plain \C{} \ctype{int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000628
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000629\item[\samp{l} (integer) {[long int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000630Convert a Python integer to a \C{} \ctype{long int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000631
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000632\item[\samp{c} (string of length 1) {[char]}]
633Convert a Python character, represented as a string of length 1, to a
Fred Draked7bb3031998-03-03 17:52:07 +0000634\C{} \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000635
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000636\item[\samp{f} (float) {[float]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000637Convert a Python floating point number to a \C{} \ctype{float}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000638
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000639\item[\samp{d} (float) {[double]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000640Convert a Python floating point number to a \C{} \ctype{double}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000641
Fred Drakeb6e50321998-02-04 20:26:31 +0000642\item[\samp{D} (complex) {[Py_complex]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000643Convert a Python complex number to a \C{} \ctype{Py_complex} structure.
Fred Drakeb6e50321998-02-04 20:26:31 +0000644
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000645\item[\samp{O} (object) {[PyObject *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000646Store a Python object (without any conversion) in a \C{} object pointer.
647The \C{} program thus receives the actual object that was passed. The
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000648object's reference count is not increased. The pointer stored is not
Fred Drake0fd82681998-01-09 05:39:38 +0000649\NULL{}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000650
Fred Drake3fe985f1998-03-04 03:51:42 +0000651\item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000652Store a Python object in a \C{} object pointer. This is similar to
653\samp{O}, but takes two \C{} arguments: the first is the address of a
654Python type object, the second is the address of the \C{} variable (of
Fred Draked7bb3031998-03-03 17:52:07 +0000655type \ctype{PyObject *}) into which the object pointer is stored.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000656If the Python object does not have the required type, a
Fred Draked7bb3031998-03-03 17:52:07 +0000657\exception{TypeError} exception is raised.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000658
Fred Drake3fe985f1998-03-04 03:51:42 +0000659\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000660Convert a Python object to a \C{} variable through a \var{converter}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000661function. This takes two arguments: the first is a function, the
Fred Drake0fd82681998-01-09 05:39:38 +0000662second is the address of a \C{} variable (of arbitrary type), converted
Fred Draked7bb3031998-03-03 17:52:07 +0000663to \ctype{void *}. The \var{converter} function in turn is called as
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000664follows:
665
666\code{\var{status} = \var{converter}(\var{object}, \var{address});}
667
668where \var{object} is the Python object to be converted and
Fred Draked7bb3031998-03-03 17:52:07 +0000669\var{address} is the \ctype{void *} argument that was passed to
670\cfunction{PyArg_ConvertTuple()}. The returned \var{status} should be
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000671\code{1} for a successful conversion and \code{0} if the conversion
672has failed. When the conversion fails, the \var{converter} function
673should raise an exception.
674
675\item[\samp{S} (string) {[PyStringObject *]}]
Guido van Rossum2474d681998-02-26 17:07:11 +0000676Like \samp{O} but requires that the Python object is a string object.
Fred Draked7bb3031998-03-03 17:52:07 +0000677Raises a \exception{TypeError} exception if the object is not a string
678object. The \C{} variable may also be declared as \ctype{PyObject *}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000679
Fred Drake3fe985f1998-03-04 03:51:42 +0000680\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000681The object must be a Python tuple whose length is the number of format
Fred Drake0fd82681998-01-09 05:39:38 +0000682units in \var{items}. The \C{} arguments must correspond to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000683individual format units in \var{items}. Format units for tuples may
684be nested.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000685
686\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000687
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000688It is possible to pass Python long integers where integers are
Fred Drake1aedbd81998-02-16 14:47:27 +0000689requested; however no proper range checking is done --- the most
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000690significant bits are silently truncated when the receiving field is
691too small to receive the value (actually, the semantics are inherited
Fred Drake0fd82681998-01-09 05:39:38 +0000692from downcasts in \C{} --- your milage may vary).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000693
694A few other characters have a meaning in a format string. These may
695not occur inside nested parentheses. They are:
696
697\begin{description}
698
699\item[\samp{|}]
700Indicates that the remaining arguments in the Python argument list are
Fred Drake0fd82681998-01-09 05:39:38 +0000701optional. The \C{} variables corresponding to optional arguments should
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000702be initialized to their default value --- when an optional argument is
Fred Drake40e72f71998-03-03 19:37:38 +0000703not specified, \cfunction{PyArg_ParseTuple()} does not touch the contents
Fred Drake0fd82681998-01-09 05:39:38 +0000704of the corresponding \C{} variable(s).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000705
706\item[\samp{:}]
707The list of format units ends here; the string after the colon is used
708as the function name in error messages (the ``associated value'' of
Fred Draked7bb3031998-03-03 17:52:07 +0000709the exceptions that \cfunction{PyArg_ParseTuple()} raises).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000710
711\item[\samp{;}]
712The list of format units ends here; the string after the colon is used
713as the error message \emph{instead} of the default error message.
714Clearly, \samp{:} and \samp{;} mutually exclude each other.
715
716\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000717
718Some example calls:
719
Fred Drake0fd82681998-01-09 05:39:38 +0000720\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000721 int ok;
722 int i, j;
723 long k, l;
724 char *s;
725 int size;
726
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000727 ok = PyArg_ParseTuple(args, ""); /* No arguments */
Guido van Rossum6938f061994-08-01 12:22:53 +0000728 /* Python call: f() */
Fred Drake0fd82681998-01-09 05:39:38 +0000729
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000730 ok = PyArg_ParseTuple(args, "s", &s); /* A string */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000731 /* Possible Python call: f('whoops!') */
732
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000733 ok = PyArg_ParseTuple(args, "lls", &k, &l, &s); /* Two longs and a string */
Guido van Rossum6938f061994-08-01 12:22:53 +0000734 /* Possible Python call: f(1, 2, 'three') */
Fred Drake0fd82681998-01-09 05:39:38 +0000735
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000736 ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000737 /* A pair of ints and a string, whose size is also returned */
Guido van Rossum7e924dd1997-02-10 16:51:52 +0000738 /* Possible Python call: f((1, 2), 'three') */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000739
740 {
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000741 char *file;
742 char *mode = "r";
743 int bufsize = 0;
744 ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);
745 /* A string, and optionally another string and an integer */
746 /* Possible Python calls:
747 f('spam')
748 f('spam', 'w')
749 f('spam', 'wb', 100000) */
750 }
751
752 {
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000753 int left, top, right, bottom, h, v;
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000754 ok = PyArg_ParseTuple(args, "((ii)(ii))(ii)",
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000755 &left, &top, &right, &bottom, &h, &v);
Fred Drakea0dbddf1998-04-02 06:50:02 +0000756 /* A rectangle and a point */
757 /* Possible Python call:
758 f(((0, 0), (400, 300)), (10, 10)) */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000759 }
Fred Drakeb6e50321998-02-04 20:26:31 +0000760
761 {
762 Py_complex c;
763 ok = PyArg_ParseTuple(args, "D:myfunction", &c);
764 /* a complex, also providing a function name for errors */
765 /* Possible Python call: myfunction(1+2j) */
766 }
Fred Drake0fd82681998-01-09 05:39:38 +0000767\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000768
769
Fred Drakee7957181998-04-04 07:17:47 +0000770\section{Keyword Parsing with \cfunction{PyArg_ParseTupleAndKeywords()}}
Fred Drake3da06a61998-02-26 18:49:12 +0000771\label{parseTupleAndKeywords}
Fred Drakeb6e50321998-02-04 20:26:31 +0000772
773The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
774follows:
775
Fred Drake1e11a5c1998-02-13 07:11:32 +0000776\begin{verbatim}
777int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
778 char *format, char **kwlist, ...);
779\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000780
781The \var{arg} and \var{format} parameters are identical to those of the
782\cfunction{PyArg_ParseTuple()} function. The \var{kwdict} parameter
783is the dictionary of keywords received as the third parameter from the
784Python runtime. The \var{kwlist} parameter is a \NULL{}-terminated
785list of strings which identify the parameters; the names are matched
786with the type information from \var{format} from left to right.
787
788\strong{Note:} Nested tuples cannot be parsed when using keyword
789arguments! Keyword parameters passed in which are not present in the
Fred Drakecd05ca91998-03-07 05:32:08 +0000790\var{kwlist} will cause \exception{TypeError} to be raised.
Fred Drakeb6e50321998-02-04 20:26:31 +0000791
792Here is an example module which uses keywords, based on an example by
Fred Drakea0dbddf1998-04-02 06:50:02 +0000793Geoff Philbrick (\email{philbrick@hks.com}):%
794\index{Philbrick, Geoff}
Fred Drakeb6e50321998-02-04 20:26:31 +0000795
796\begin{verbatim}
797#include <stdio.h>
798#include "Python.h"
799
800static PyObject *
801keywdarg_parrot(self, args, keywds)
802 PyObject *self;
803 PyObject *args;
804 PyObject *keywds;
805{
806 int voltage;
807 char *state = "a stiff";
808 char *action = "voom";
809 char *type = "Norwegian Blue";
810
811 static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
812
813 if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
814 &voltage, &state, &action, &type))
815 return NULL;
816
817 printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
818 action, voltage);
819 printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
820
821 Py_INCREF(Py_None);
822
823 return Py_None;
824}
825
826static PyMethodDef keywdarg_methods[] = {
827 {"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS|METH_KEYWORDS},
828 {NULL, NULL} /* sentinel */
829};
830
831void
832initkeywdarg()
833{
834 /* Create the module and add the functions */
Fred Drakecd05ca91998-03-07 05:32:08 +0000835 Py_InitModule("keywdarg", keywdarg_methods);
Fred Drakeb6e50321998-02-04 20:26:31 +0000836}
837\end{verbatim}
838
839
Fred Drakee7957181998-04-04 07:17:47 +0000840\section{The \cfunction{Py_BuildValue()} Function}
Fred Drake3da06a61998-02-26 18:49:12 +0000841\label{buildValue}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000842
Fred Draked7bb3031998-03-03 17:52:07 +0000843This function is the counterpart to \cfunction{PyArg_ParseTuple()}. It is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000844declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000845
Fred Drake1e11a5c1998-02-13 07:11:32 +0000846\begin{verbatim}
847PyObject *Py_BuildValue(char *format, ...);
848\end{verbatim}
849
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000850It recognizes a set of format units similar to the ones recognized by
Fred Draked7bb3031998-03-03 17:52:07 +0000851\cfunction{PyArg_ParseTuple()}, but the arguments (which are input to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000852function, not output) must not be pointers, just values. It returns a
Fred Drake0fd82681998-01-09 05:39:38 +0000853new Python object, suitable for returning from a \C{} function called
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000854from Python.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000855
Fred Draked7bb3031998-03-03 17:52:07 +0000856One difference with \cfunction{PyArg_ParseTuple()}: while the latter
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000857requires its first argument to be a tuple (since Python argument lists
Fred Draked7bb3031998-03-03 17:52:07 +0000858are always represented as tuples internally),
859\cfunction{Py_BuildValue()} does not always build a tuple. It builds
860a tuple only if its format string contains two or more format units.
861If the format string is empty, it returns \code{None}; if it contains
862exactly one format unit, it returns whatever object is described by
863that format unit. To force it to return a tuple of size 0 or one,
864parenthesize the format string.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000865
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000866In the following description, the quoted form is the format unit; the
867entry in (round) parentheses is the Python object type that the format
868unit will return; and the entry in [square] brackets is the type of
Fred Drake0fd82681998-01-09 05:39:38 +0000869the \C{} value(s) to be passed.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000870
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000871The characters space, tab, colon and comma are ignored in format
872strings (but not within format units such as \samp{s\#}). This can be
873used to make long format strings a tad more readable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000874
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000875\begin{description}
876
877\item[\samp{s} (string) {[char *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000878Convert a null-terminated \C{} string to a Python object. If the \C{}
879string pointer is \NULL{}, \code{None} is returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000880
881\item[\samp{s\#} (string) {[char *, int]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000882Convert a \C{} string and its length to a Python object. If the \C{} string
883pointer is \NULL{}, the length is ignored and \code{None} is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000884returned.
885
886\item[\samp{z} (string or \code{None}) {[char *]}]
887Same as \samp{s}.
888
889\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
890Same as \samp{s\#}.
891
892\item[\samp{i} (integer) {[int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000893Convert a plain \C{} \ctype{int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000894
895\item[\samp{b} (integer) {[char]}]
896Same as \samp{i}.
897
898\item[\samp{h} (integer) {[short int]}]
899Same as \samp{i}.
900
901\item[\samp{l} (integer) {[long int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000902Convert a \C{} \ctype{long int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000903
904\item[\samp{c} (string of length 1) {[char]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000905Convert a \C{} \ctype{int} representing a character to a Python string of
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000906length 1.
907
908\item[\samp{d} (float) {[double]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000909Convert a \C{} \ctype{double} to a Python floating point number.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000910
911\item[\samp{f} (float) {[float]}]
912Same as \samp{d}.
913
914\item[\samp{O} (object) {[PyObject *]}]
915Pass a Python object untouched (except for its reference count, which
Fred Drake0fd82681998-01-09 05:39:38 +0000916is incremented by one). If the object passed in is a \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000917pointer, it is assumed that this was caused because the call producing
918the argument found an error and set an exception. Therefore,
Fred Draked7bb3031998-03-03 17:52:07 +0000919\cfunction{Py_BuildValue()} will return \NULL{} but won't raise an
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000920exception. If no exception has been raised yet,
Fred Draked7bb3031998-03-03 17:52:07 +0000921\cdata{PyExc_SystemError} is set.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000922
923\item[\samp{S} (object) {[PyObject *]}]
924Same as \samp{O}.
925
926\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
927Convert \var{anything} to a Python object through a \var{converter}
928function. The function is called with \var{anything} (which should be
Fred Draked7bb3031998-03-03 17:52:07 +0000929compatible with \ctype{void *}) as its argument and should return a
Fred Drake0fd82681998-01-09 05:39:38 +0000930``new'' Python object, or \NULL{} if an error occurred.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000931
932\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000933Convert a sequence of \C{} values to a Python tuple with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000934of items.
935
936\item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000937Convert a sequence of \C{} values to a Python list with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000938of items.
939
940\item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000941Convert a sequence of \C{} values to a Python dictionary. Each pair of
942consecutive \C{} values adds one item to the dictionary, serving as key
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000943and value, respectively.
944
945\end{description}
946
947If there is an error in the format string, the
Fred Draked7bb3031998-03-03 17:52:07 +0000948\cdata{PyExc_SystemError} exception is raised and \NULL{} returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000949
950Examples (to the left the call, to the right the resulting Python value):
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000951
Fred Drake1e11a5c1998-02-13 07:11:32 +0000952\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000953 Py_BuildValue("") None
954 Py_BuildValue("i", 123) 123
Guido van Rossumf23e0fe1995-03-18 11:04:29 +0000955 Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000956 Py_BuildValue("s", "hello") 'hello'
957 Py_BuildValue("ss", "hello", "world") ('hello', 'world')
958 Py_BuildValue("s#", "hello", 4) 'hell'
959 Py_BuildValue("()") ()
960 Py_BuildValue("(i)", 123) (123,)
961 Py_BuildValue("(ii)", 123, 456) (123, 456)
962 Py_BuildValue("(i,i)", 123, 456) (123, 456)
963 Py_BuildValue("[i,i]", 123, 456) [123, 456]
Guido van Rossumf23e0fe1995-03-18 11:04:29 +0000964 Py_BuildValue("{s:i,s:i}",
965 "abc", 123, "def", 456) {'abc': 123, 'def': 456}
966 Py_BuildValue("((ii)(ii)) (ii)",
967 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))
Fred Drake1e11a5c1998-02-13 07:11:32 +0000968\end{verbatim}
969
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000970\section{Reference Counts}
Fred Drake3da06a61998-02-26 18:49:12 +0000971\label{refcounts}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000972
Fred Drake3da06a61998-02-26 18:49:12 +0000973%\subsection{Introduction}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000974
Fred Drake0fd82681998-01-09 05:39:38 +0000975In languages like \C{} or \Cpp{}, the programmer is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +0000976dynamic allocation and deallocation of memory on the heap. In \C{},
977this is done using the functions \cfunction{malloc()} and
978\cfunction{free()}. In \Cpp{}, the operators \keyword{new} and
979\keyword{delete} are used with essentially the same meaning; they are
980actually implemented using \cfunction{malloc()} and
981\cfunction{free()}, so we'll restrict the following discussion to the
982latter.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000983
Fred Draked7bb3031998-03-03 17:52:07 +0000984Every block of memory allocated with \cfunction{malloc()} should
985eventually be returned to the pool of available memory by exactly one
986call to \cfunction{free()}. It is important to call
987\cfunction{free()} at the right time. If a block's address is
988forgotten but \cfunction{free()} is not called for it, the memory it
989occupies cannot be reused until the program terminates. This is
990called a \dfn{memory leak}. On the other hand, if a program calls
991\cfunction{free()} for a block and then continues to use the block, it
992creates a conflict with re-use of the block through another
993\cfunction{malloc()} call. This is called \dfn{using freed memory}.
994It has the same bad consequences as referencing uninitialized data ---
995core dumps, wrong results, mysterious crashes.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000996
997Common causes of memory leaks are unusual paths through the code. For
998instance, a function may allocate a block of memory, do some
999calculation, and then free the block again. Now a change in the
1000requirements for the function may add a test to the calculation that
1001detects an error condition and can return prematurely from the
1002function. It's easy to forget to free the allocated memory block when
1003taking this premature exit, especially when it is added later to the
1004code. Such leaks, once introduced, often go undetected for a long
1005time: the error exit is taken only in a small fraction of all calls,
1006and most modern machines have plenty of virtual memory, so the leak
1007only becomes apparent in a long-running process that uses the leaking
1008function frequently. Therefore, it's important to prevent leaks from
1009happening by having a coding convention or strategy that minimizes
1010this kind of errors.
1011
Fred Draked7bb3031998-03-03 17:52:07 +00001012Since Python makes heavy use of \cfunction{malloc()} and
1013\cfunction{free()}, it needs a strategy to avoid memory leaks as well
1014as the use of freed memory. The chosen method is called
1015\dfn{reference counting}. The principle is simple: every object
1016contains a counter, which is incremented when a reference to the
1017object is stored somewhere, and which is decremented when a reference
1018to it is deleted. When the counter reaches zero, the last reference
1019to the object has been deleted and the object is freed.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001020
1021An alternative strategy is called \dfn{automatic garbage collection}.
1022(Sometimes, reference counting is also referred to as a garbage
1023collection strategy, hence my use of ``automatic'' to distinguish the
1024two.) The big advantage of automatic garbage collection is that the
Fred Draked7bb3031998-03-03 17:52:07 +00001025user doesn't need to call \cfunction{free()} explicitly. (Another claimed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001026advantage is an improvement in speed or memory usage --- this is no
Fred Drake0fd82681998-01-09 05:39:38 +00001027hard fact however.) The disadvantage is that for \C{}, there is no
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001028truly portable automatic garbage collector, while reference counting
Fred Draked7bb3031998-03-03 17:52:07 +00001029can be implemented portably (as long as the functions \cfunction{malloc()}
1030and \cfunction{free()} are available --- which the \C{} Standard guarantees).
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001031Maybe some day a sufficiently portable automatic garbage collector
Fred Drake0fd82681998-01-09 05:39:38 +00001032will be available for \C{}. Until then, we'll have to live with
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001033reference counts.
1034
1035\subsection{Reference Counting in Python}
Fred Drake3da06a61998-02-26 18:49:12 +00001036\label{refcountsInPython}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001037
1038There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
1039which handle the incrementing and decrementing of the reference count.
Fred Draked7bb3031998-03-03 17:52:07 +00001040\cfunction{Py_DECREF()} also frees the object when the count reaches zero.
1041For flexibility, it doesn't call \cfunction{free()} directly --- rather, it
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001042makes a call through a function pointer in the object's \dfn{type
1043object}. For this purpose (and others), every object also contains a
1044pointer to its type object.
1045
1046The big question now remains: when to use \code{Py_INCREF(x)} and
1047\code{Py_DECREF(x)}? Let's first introduce some terms. Nobody
1048``owns'' an object; however, you can \dfn{own a reference} to an
1049object. An object's reference count is now defined as the number of
1050owned references to it. The owner of a reference is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +00001051calling \cfunction{Py_DECREF()} when the reference is no longer
1052needed. Ownership of a reference can be transferred. There are three
1053ways to dispose of an owned reference: pass it on, store it, or call
1054\cfunction{Py_DECREF()}. Forgetting to dispose of an owned reference
1055creates a memory leak.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001056
1057It is also possible to \dfn{borrow}\footnote{The metaphor of
1058``borrowing'' a reference is not completely correct: the owner still
1059has a copy of the reference.} a reference to an object. The borrower
Fred Draked7bb3031998-03-03 17:52:07 +00001060of a reference should not call \cfunction{Py_DECREF()}. The borrower must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001061not hold on to the object longer than the owner from which it was
1062borrowed. Using a borrowed reference after the owner has disposed of
1063it risks using freed memory and should be avoided
1064completely.\footnote{Checking that the reference count is at least 1
1065\strong{does not work} --- the reference count itself could be in
1066freed memory and may thus be reused for another object!}
1067
1068The advantage of borrowing over owning a reference is that you don't
1069need to take care of disposing of the reference on all possible paths
1070through the code --- in other words, with a borrowed reference you
1071don't run the risk of leaking when a premature exit is taken. The
1072disadvantage of borrowing over leaking is that there are some subtle
1073situations where in seemingly correct code a borrowed reference can be
1074used after the owner from which it was borrowed has in fact disposed
1075of it.
1076
1077A borrowed reference can be changed into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001078\cfunction{Py_INCREF()}. This does not affect the status of the owner from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001079which the reference was borrowed --- it creates a new owned reference,
1080and gives full owner responsibilities (i.e., the new owner must
1081dispose of the reference properly, as well as the previous owner).
1082
1083\subsection{Ownership Rules}
Fred Drake3da06a61998-02-26 18:49:12 +00001084\label{ownershipRules}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001085
1086Whenever an object reference is passed into or out of a function, it
1087is part of the function's interface specification whether ownership is
1088transferred with the reference or not.
1089
1090Most functions that return a reference to an object pass on ownership
1091with the reference. In particular, all functions whose function it is
Fred Draked7bb3031998-03-03 17:52:07 +00001092to create a new object, e.g.\ \cfunction{PyInt_FromLong()} and
1093\cfunction{Py_BuildValue()}, pass ownership to the receiver. Even if in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001094fact, in some cases, you don't receive a reference to a brand new
1095object, you still receive ownership of the reference. For instance,
Fred Draked7bb3031998-03-03 17:52:07 +00001096\cfunction{PyInt_FromLong()} maintains a cache of popular values and can
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001097return a reference to a cached item.
1098
1099Many functions that extract objects from other objects also transfer
1100ownership with the reference, for instance
Fred Draked7bb3031998-03-03 17:52:07 +00001101\cfunction{PyObject_GetAttrString()}. The picture is less clear, here,
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001102however, since a few common routines are exceptions:
Fred Draked7bb3031998-03-03 17:52:07 +00001103\cfunction{PyTuple_GetItem()}, \cfunction{PyList_GetItem()},
1104\cfunction{PyDict_GetItem()}, and \cfunction{PyDict_GetItemString()}
1105all return references that you borrow from the tuple, list or
1106dictionary.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001107
Fred Draked7bb3031998-03-03 17:52:07 +00001108The function \cfunction{PyImport_AddModule()} also returns a borrowed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001109reference, even though it may actually create the object it returns:
1110this is possible because an owned reference to the object is stored in
1111\code{sys.modules}.
1112
1113When you pass an object reference into another function, in general,
1114the function borrows the reference from you --- if it needs to store
Fred Draked7bb3031998-03-03 17:52:07 +00001115it, it will use \cfunction{Py_INCREF()} to become an independent
1116owner. There are exactly two important exceptions to this rule:
1117\cfunction{PyTuple_SetItem()} and \cfunction{PyList_SetItem()}. These
1118functions take over ownership of the item passed to them --- even if
1119they fail! (Note that \cfunction{PyDict_SetItem()} and friends don't
Fred Drakea0dbddf1998-04-02 06:50:02 +00001120take over ownership --- they are ``normal.'')
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001121
Fred Drake0fd82681998-01-09 05:39:38 +00001122When a \C{} function is called from Python, it borrows references to its
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001123arguments from the caller. The caller owns a reference to the object,
1124so the borrowed reference's lifetime is guaranteed until the function
1125returns. Only when such a borrowed reference must be stored or passed
1126on, it must be turned into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001127\cfunction{Py_INCREF()}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001128
Fred Drake0fd82681998-01-09 05:39:38 +00001129The object reference returned from a \C{} function that is called from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001130Python must be an owned reference --- ownership is tranferred from the
1131function to its caller.
1132
1133\subsection{Thin Ice}
Fred Drake3da06a61998-02-26 18:49:12 +00001134\label{thinIce}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001135
1136There are a few situations where seemingly harmless use of a borrowed
1137reference can lead to problems. These all have to do with implicit
1138invocations of the interpreter, which can cause the owner of a
1139reference to dispose of it.
1140
1141The first and most important case to know about is using
Fred Draked7bb3031998-03-03 17:52:07 +00001142\cfunction{Py_DECREF()} on an unrelated object while borrowing a
1143reference to a list item. For instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001144
Fred Drake1e11a5c1998-02-13 07:11:32 +00001145\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001146bug(PyObject *list) {
1147 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001148
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001149 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1150 PyObject_Print(item, stdout, 0); /* BUG! */
1151}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001152\end{verbatim}
1153
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001154This function first borrows a reference to \code{list[0]}, then
1155replaces \code{list[1]} with the value \code{0}, and finally prints
1156the borrowed reference. Looks harmless, right? But it's not!
1157
Fred Draked7bb3031998-03-03 17:52:07 +00001158Let's follow the control flow into \cfunction{PyList_SetItem()}. The list
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001159owns references to all its items, so when item 1 is replaced, it has
1160to dispose of the original item 1. Now let's suppose the original
1161item 1 was an instance of a user-defined class, and let's further
Fred Draked7bb3031998-03-03 17:52:07 +00001162suppose that the class defined a \method{__del__()} method. If this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001163class instance has a reference count of 1, disposing of it will call
Fred Draked7bb3031998-03-03 17:52:07 +00001164its \method{__del__()} method.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001165
Fred Draked7bb3031998-03-03 17:52:07 +00001166Since it is written in Python, the \method{__del__()} method can execute
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001167arbitrary Python code. Could it perhaps do something to invalidate
Fred Draked7bb3031998-03-03 17:52:07 +00001168the reference to \code{item} in \cfunction{bug()}? You bet! Assuming
1169that the list passed into \cfunction{bug()} is accessible to the
1170\method{__del__()} method, it could execute a statement to the effect of
1171\samp{del list[0]}, and assuming this was the last reference to that
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001172object, it would free the memory associated with it, thereby
1173invalidating \code{item}.
1174
1175The solution, once you know the source of the problem, is easy:
1176temporarily increment the reference count. The correct version of the
1177function reads:
1178
Fred Drake1e11a5c1998-02-13 07:11:32 +00001179\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001180no_bug(PyObject *list) {
1181 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001182
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001183 Py_INCREF(item);
1184 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1185 PyObject_Print(item, stdout, 0);
1186 Py_DECREF(item);
1187}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001188\end{verbatim}
1189
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001190This is a true story. An older version of Python contained variants
Fred Drake0fd82681998-01-09 05:39:38 +00001191of this bug and someone spent a considerable amount of time in a \C{}
Fred Draked7bb3031998-03-03 17:52:07 +00001192debugger to figure out why his \method{__del__()} methods would fail...
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001193
1194The second case of problems with a borrowed reference is a variant
1195involving threads. Normally, multiple threads in the Python
1196interpreter can't get in each other's way, because there is a global
1197lock protecting Python's entire object space. However, it is possible
1198to temporarily release this lock using the macro
1199\code{Py_BEGIN_ALLOW_THREADS}, and to re-acquire it using
1200\code{Py_END_ALLOW_THREADS}. This is common around blocking I/O
1201calls, to let other threads use the CPU while waiting for the I/O to
1202complete. Obviously, the following function has the same problem as
1203the previous one:
1204
Fred Drake1e11a5c1998-02-13 07:11:32 +00001205\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001206bug(PyObject *list) {
1207 PyObject *item = PyList_GetItem(list, 0);
1208 Py_BEGIN_ALLOW_THREADS
1209 ...some blocking I/O call...
1210 Py_END_ALLOW_THREADS
1211 PyObject_Print(item, stdout, 0); /* BUG! */
1212}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001213\end{verbatim}
1214
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001215\subsection{NULL Pointers}
Fred Drake3da06a61998-02-26 18:49:12 +00001216\label{nullPointers}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001217
Fred Drakea0dbddf1998-04-02 06:50:02 +00001218In general, functions that take object references as arguments do not
Fred Drake0fd82681998-01-09 05:39:38 +00001219expect you to pass them \NULL{} pointers, and will dump core (or
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001220cause later core dumps) if you do so. Functions that return object
Fred Drake0fd82681998-01-09 05:39:38 +00001221references generally return \NULL{} only to indicate that an
1222exception occurred. The reason for not testing for \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001223arguments is that functions often pass the objects they receive on to
Fred Drake0fd82681998-01-09 05:39:38 +00001224other function --- if each function were to test for \NULL{},
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001225there would be a lot of redundant tests and the code would run slower.
1226
Fred Drake0fd82681998-01-09 05:39:38 +00001227It is better to test for \NULL{} only at the ``source'', i.e.\
1228when a pointer that may be \NULL{} is received, e.g.\ from
Fred Draked7bb3031998-03-03 17:52:07 +00001229\cfunction{malloc()} or from a function that may raise an exception.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001230
Fred Draked7bb3031998-03-03 17:52:07 +00001231The macros \cfunction{Py_INCREF()} and \cfunction{Py_DECREF()}
Fred Drakea0dbddf1998-04-02 06:50:02 +00001232do not check for \NULL{} pointers --- however, their variants
Fred Draked7bb3031998-03-03 17:52:07 +00001233\cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()} do.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001234
1235The macros for checking for a particular object type
Fred Drake0fd82681998-01-09 05:39:38 +00001236(\code{Py\var{type}_Check()}) don't check for \NULL{} pointers ---
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001237again, there is much code that calls several of these in a row to test
1238an object against various different expected types, and this would
Fred Drake0fd82681998-01-09 05:39:38 +00001239generate redundant tests. There are no variants with \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001240checking.
1241
Fred Drake0fd82681998-01-09 05:39:38 +00001242The \C{} function calling mechanism guarantees that the argument list
1243passed to \C{} functions (\code{args} in the examples) is never
1244\NULL{} --- in fact it guarantees that it is always a tuple.%
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001245\footnote{These guarantees don't hold when you use the ``old'' style
1246calling convention --- this is still found in much existing code.}
1247
Fred Drake0fd82681998-01-09 05:39:38 +00001248It is a severe error to ever let a \NULL{} pointer ``escape'' to
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001249the Python user.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001250
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001251
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001252\section{Writing Extensions in \Cpp{}}
Fred Drake3da06a61998-02-26 18:49:12 +00001253\label{cplusplus}
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001254
Guido van Rossum16d6e711994-08-08 12:30:22 +00001255It is possible to write extension modules in \Cpp{}. Some restrictions
Guido van Rossumed39cd01995-10-08 00:17:19 +00001256apply. If the main program (the Python interpreter) is compiled and
Fred Drake0fd82681998-01-09 05:39:38 +00001257linked by the \C{} compiler, global or static objects with constructors
Guido van Rossumed39cd01995-10-08 00:17:19 +00001258cannot be used. This is not a problem if the main program is linked
Guido van Rossumafcd5891998-02-05 19:59:39 +00001259by the \Cpp{} compiler. Functions that will be called by the
1260Python interpreter (in particular, module initalization functions)
1261have to be declared using \code{extern "C"}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001262It is unnecessary to enclose the Python header files in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001263\code{extern "C" \{...\}} --- they use this form already if the symbol
Fred Drake0fd82681998-01-09 05:39:38 +00001264\samp{__cplusplus} is defined (all recent \Cpp{} compilers define this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001265symbol).
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001266
1267\chapter{Embedding Python in another application}
Fred Drake3da06a61998-02-26 18:49:12 +00001268\label{embedding}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001269
1270Embedding Python is similar to extending it, but not quite. The
1271difference is that when you extend Python, the main program of the
Guido van Rossum16d6e711994-08-08 12:30:22 +00001272application is still the Python interpreter, while if you embed
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001273Python, the main program may have nothing to do with Python ---
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001274instead, some parts of the application occasionally call the Python
1275interpreter to run some Python code.
1276
1277So if you are embedding Python, you are providing your own main
1278program. One of the things this main program has to do is initialize
1279the Python interpreter. At the very least, you have to call the
Fred Draked7bb3031998-03-03 17:52:07 +00001280function \cfunction{Py_Initialize()}. There are optional calls to
1281pass command line arguments to Python. Then later you can call the
1282interpreter from any part of the application.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001283
1284There are several different ways to call the interpreter: you can pass
Fred Draked7bb3031998-03-03 17:52:07 +00001285a string containing Python statements to
1286\cfunction{PyRun_SimpleString()}, or you can pass a stdio file pointer
1287and a file name (for identification in error messages only) to
1288\cfunction{PyRun_SimpleFile()}. You can also call the lower-level
1289operations described in the previous chapters to construct and use
1290Python objects.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001291
1292A simple demo of embedding Python can be found in the directory
Guido van Rossum6938f061994-08-01 12:22:53 +00001293\file{Demo/embed}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001294
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001295
Guido van Rossum16d6e711994-08-08 12:30:22 +00001296\section{Embedding Python in \Cpp{}}
Fred Drake3da06a61998-02-26 18:49:12 +00001297\label{embeddingInCplusplus}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001298
Guido van Rossum16d6e711994-08-08 12:30:22 +00001299It is also possible to embed Python in a \Cpp{} program; precisely how this
1300is done will depend on the details of the \Cpp{} system used; in general you
1301will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
1302to compile and link your program. There is no need to recompile Python
1303itself using \Cpp{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001304
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001305
1306\chapter{Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001307\label{dynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001308
Guido van Rossum6938f061994-08-01 12:22:53 +00001309On most modern systems it is possible to configure Python to support
Fred Drake0fd82681998-01-09 05:39:38 +00001310dynamic loading of extension modules implemented in \C{}. When shared
Guido van Rossum6938f061994-08-01 12:22:53 +00001311libraries are used dynamic loading is configured automatically;
1312otherwise you have to select it as a build option (see below). Once
1313configured, dynamic loading is trivial to use: when a Python program
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001314executes \code{import spam}, the search for modules tries to find a
1315file \file{spammodule.o} (\file{spammodule.so} when using shared
Fred Drakeb789c701998-04-02 16:19:15 +00001316libraries) in the module search path,%
1317\indexiii{module}{search}{path}
1318and if one is found, it is loaded into the executing binary and
1319executed. Once loaded, the module acts just like a built-in extension
1320module.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001321
Guido van Rossumb92112d1995-03-20 14:24:09 +00001322The advantages of dynamic loading are twofold: the ``core'' Python
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001323binary gets smaller, and users can extend Python with their own
Fred Drake0fd82681998-01-09 05:39:38 +00001324modules implemented in \C{} without having to build and maintain their
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001325own copy of the Python interpreter. There are also disadvantages:
1326dynamic loading isn't available on all systems (this just means that
1327on some systems you have to use static loading), and dynamically
1328loading a module that was compiled for a different version of Python
Guido van Rossum6938f061994-08-01 12:22:53 +00001329(e.g. with a different representation of objects) may dump core.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001330
1331
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001332\section{Configuring and Building the Interpreter for Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001333\label{dynloadConfig}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001334
Guido van Rossum6938f061994-08-01 12:22:53 +00001335There are three styles of dynamic loading: one using shared libraries,
1336one using SGI IRIX 4 dynamic loading, and one using GNU dynamic
1337loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001338
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001339\subsection{Shared Libraries}
Fred Drake3da06a61998-02-26 18:49:12 +00001340\label{sharedlibs}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001341
Guido van Rossum16d6e711994-08-08 12:30:22 +00001342The following systems support dynamic loading using shared libraries:
Fred Drakea0dbddf1998-04-02 06:50:02 +00001343SunOS 4; Solaris 2; SGI IRIX 5 (but not SGI IRIX 4!), Linux, FreeBSD,
1344NetBSD; and probably all systems derived from SVR4, or at least those
1345SVR4 derivatives that support shared libraries (are there any that
1346don't?).
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001347
Guido van Rossum6938f061994-08-01 12:22:53 +00001348You don't need to do anything to configure dynamic loading on these
1349systems --- the \file{configure} detects the presence of the
Fred Drakea0dbddf1998-04-02 06:50:02 +00001350\code{<dlfcn.h>} header file and automatically configures dynamic
Guido van Rossum6938f061994-08-01 12:22:53 +00001351loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001352
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001353\subsection{SGI IRIX 4 Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001354\label{irixDynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001355
Guido van Rossum6938f061994-08-01 12:22:53 +00001356Only SGI IRIX 4 supports dynamic loading of modules using SGI dynamic
1357loading. (SGI IRIX 5 might also support it but it is inferior to
1358using shared libraries so there is no reason to; a small test didn't
1359work right away so I gave up trying to support it.)
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001360
Fred Draked7bb3031998-03-03 17:52:07 +00001361Before you build Python, you first need to fetch and build the
1362\code{dl} package written by Jack Jansen. This is available by
Fred Drakea0dbddf1998-04-02 06:50:02 +00001363anonymous ftp from \url{ftp://ftp.cwi.nl/pub/dynload/}, file
Guido van Rossum6938f061994-08-01 12:22:53 +00001364\file{dl-1.6.tar.Z}. (The version number may change.) Follow the
1365instructions in the package's \file{README} file to build it.
1366
1367Once you have built \code{dl}, you can configure Python to use it. To
Fred Drakea0dbddf1998-04-02 06:50:02 +00001368this end, you run the \program{configure} script with the option
Guido van Rossum6938f061994-08-01 12:22:53 +00001369\code{--with-dl=\var{directory}} where \var{directory} is the absolute
1370pathname of the \code{dl} directory.
1371
1372Now build and install Python as you normally would (see the
1373\file{README} file in the toplevel Python directory.)
1374
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001375\subsection{GNU Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001376\label{gnuDynload}
Guido van Rossum6938f061994-08-01 12:22:53 +00001377
1378GNU dynamic loading supports (according to its \file{README} file) the
1379following hardware and software combinations: VAX (Ultrix), Sun 3
1380(SunOS 3.4 and 4.0), Sparc (SunOS 4.0), Sequent Symmetry (Dynix), and
1381Atari ST. There is no reason to use it on a Sparc; I haven't seen a
1382Sun 3 for years so I don't know if these have shared libraries or not.
1383
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001384You need to fetch and build two packages.
1385One is GNU DLD. All development of this code has been done with DLD
Fred Drakeca6567f1998-01-22 20:44:18 +00001386version 3.2.3, which is available by anonymous ftp from
1387\url{ftp://ftp.cwi.nl/pub/dynload}, file
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001388\file{dld-3.2.3.tar.Z}. (A more recent version of DLD is available
Fred Drakeca6567f1998-01-22 20:44:18 +00001389via \url{http://www-swiss.ai.mit.edu/~jaffer/DLD.html} but this has
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001390not been tested.)
1391The other package needed is an
Guido van Rossum6938f061994-08-01 12:22:53 +00001392emulation of Jack Jansen's \code{dl} package that I wrote on top of
1393GNU DLD 3.2.3. This is available from the same host and directory,
Guido van Rossum98046b91997-08-14 19:50:18 +00001394file \file{dl-dld-1.1.tar.Z}. (The version number may change --- but I doubt
Guido van Rossum6938f061994-08-01 12:22:53 +00001395it will.) Follow the instructions in each package's \file{README}
Guido van Rossum98046b91997-08-14 19:50:18 +00001396file to configure and build them.
Guido van Rossum6938f061994-08-01 12:22:53 +00001397
1398Now configure Python. Run the \file{configure} script with the option
1399\code{--with-dl-dld=\var{dl-directory},\var{dld-directory}} where
1400\var{dl-directory} is the absolute pathname of the directory where you
1401have built the \file{dl-dld} package, and \var{dld-directory} is that
1402of the GNU DLD package. The Python interpreter you build hereafter
1403will support GNU dynamic loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001404
1405
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001406\section{Building a Dynamically Loadable Module}
Fred Drake3da06a61998-02-26 18:49:12 +00001407\label{makedynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001408
Guido van Rossum6938f061994-08-01 12:22:53 +00001409Since there are three styles of dynamic loading, there are also three
1410groups of instructions for building a dynamically loadable module.
1411Instructions common for all three styles are given first. Assuming
Fred Draked7bb3031998-03-03 17:52:07 +00001412your module is called \module{spam}, the source filename must be
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001413\file{spammodule.c}, so the object name is \file{spammodule.o}. The
Guido van Rossum6938f061994-08-01 12:22:53 +00001414module must be written as a normal Python extension module (as
1415described earlier).
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001416
Guido van Rossum6938f061994-08-01 12:22:53 +00001417Note that in all cases you will have to create your own Makefile that
1418compiles your module file(s). This Makefile will have to pass two
Fred Drake0fd82681998-01-09 05:39:38 +00001419\samp{-I} arguments to the \C{} compiler which will make it find the
Fred Drakeb789c701998-04-02 16:19:15 +00001420Python header files. If the Make variable \makevar{PYTHONTOP} points to
1421the toplevel Python directory, your \makevar{CFLAGS} Make variable should
Guido van Rossum6938f061994-08-01 12:22:53 +00001422contain the options \samp{-I\$(PYTHONTOP) -I\$(PYTHONTOP)/Include}.
Fred Drakeb789c701998-04-02 16:19:15 +00001423(Most header files are in the \file{Include/} subdirectory, but the
Guido van Rossum305ed111996-08-19 22:59:46 +00001424\file{config.h} header lives in the toplevel directory.)
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001425
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001426
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001427\subsection{Shared Libraries}
Fred Drake3da06a61998-02-26 18:49:12 +00001428\label{linking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001429
Fred Drakeaf8a0151998-01-14 14:51:31 +00001430You must link the \file{.o} file to produce a shared library. This is
1431done using a special invocation of the \UNIX{} loader/linker,
Fred Drakea0dbddf1998-04-02 06:50:02 +00001432\manpage{ld}{1}. Unfortunately the invocation differs slightly per
Fred Drakeaf8a0151998-01-14 14:51:31 +00001433system.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001434
Guido van Rossum6938f061994-08-01 12:22:53 +00001435On SunOS 4, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001436\begin{verbatim}
1437ld spammodule.o -o spammodule.so
1438\end{verbatim}
1439
Guido van Rossum6938f061994-08-01 12:22:53 +00001440On Solaris 2, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001441\begin{verbatim}
1442ld -G spammodule.o -o spammodule.so
1443\end{verbatim}
1444
Guido van Rossum6938f061994-08-01 12:22:53 +00001445On SGI IRIX 5, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001446\begin{verbatim}
1447ld -shared spammodule.o -o spammodule.so
1448\end{verbatim}
1449
Fred Draked7bb3031998-03-03 17:52:07 +00001450On other systems, consult the manual page for \manpage{ld}{1} to find
1451what flags, if any, must be used.
Guido van Rossum6938f061994-08-01 12:22:53 +00001452
1453If your extension module uses system libraries that haven't already
1454been linked with Python (e.g. a windowing system), these must be
Fred Draked7bb3031998-03-03 17:52:07 +00001455passed to the \program{ld} command as \samp{-l} options after the
Guido van Rossum6938f061994-08-01 12:22:53 +00001456\samp{.o} file.
1457
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001458The resulting file \file{spammodule.so} must be copied into a directory
Guido van Rossum6938f061994-08-01 12:22:53 +00001459along the Python module search path.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001460
1461
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001462\subsection{SGI IRIX 4 Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001463\label{irixLinking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001464
Fred Drakeaf8a0151998-01-14 14:51:31 +00001465\strong{IMPORTANT:} You must compile your extension module with the
Fred Drakea0dbddf1998-04-02 06:50:02 +00001466additional \C{} flag \samp{-G0} (or \samp{-G 0}). This instructs the
Guido van Rossum6938f061994-08-01 12:22:53 +00001467assembler to generate position-independent code.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001468
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001469You don't need to link the resulting \file{spammodule.o} file; just
Fred Drakeb789c701998-04-02 16:19:15 +00001470copy it into a directory along the Python module search path.%
1471\indexiii{module}{search}{path}
Guido van Rossum6938f061994-08-01 12:22:53 +00001472
1473The first time your extension is loaded, it takes some extra time and
1474a few messages may be printed. This creates a file
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001475\file{spammodule.ld} which is an image that can be loaded quickly into
Guido van Rossum6938f061994-08-01 12:22:53 +00001476the Python interpreter process. When a new Python interpreter is
1477installed, the \code{dl} package detects this and rebuilds
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001478\file{spammodule.ld}. The file \file{spammodule.ld} is placed in the
1479directory where \file{spammodule.o} was found, unless this directory is
Guido van Rossum6938f061994-08-01 12:22:53 +00001480unwritable; in that case it is placed in a temporary
1481directory.\footnote{Check the manual page of the \code{dl} package for
1482details.}
1483
1484If your extension modules uses additional system libraries, you must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001485create a file \file{spammodule.libs} in the same directory as the
1486\file{spammodule.o}. This file should contain one or more lines with
Guido van Rossum6938f061994-08-01 12:22:53 +00001487whitespace-separated options that will be passed to the linker ---
1488normally only \samp{-l} options or absolute pathnames of libraries
1489(\samp{.a} files) should be used.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001490
1491
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001492\subsection{GNU Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001493\label{gnuLinking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001494
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001495Just copy \file{spammodule.o} into a directory along the Python module
Fred Drakeb789c701998-04-02 16:19:15 +00001496search path.%
1497\indexiii{module}{search}{path}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001498
Guido van Rossum6938f061994-08-01 12:22:53 +00001499If your extension modules uses additional system libraries, you must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001500create a file \file{spammodule.libs} in the same directory as the
1501\file{spammodule.o}. This file should contain one or more lines with
Guido van Rossum6938f061994-08-01 12:22:53 +00001502whitespace-separated absolute pathnames of libraries (\samp{.a}
1503files). No \samp{-l} options can be used.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001504
1505
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001506\end{document}