blob: 0532212e89c3e3bb16f3badecb9fb7e09ae548b3 [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002
Guido van Rossum5049bcb1995-03-13 16:55:23 +00003% XXX PM Modulator
4
Guido van Rossum6938f061994-08-01 12:22:53 +00005\title{Extending and Embedding the Python Interpreter}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00006
Guido van Rossum16cd7f91994-10-06 10:29:26 +00007\input{boilerplate}
Guido van Rossum83eb9621993-11-23 16:28:45 +00008
Guido van Rossum7a2dba21993-11-05 14:45:11 +00009% Tell \index to actually write the .idx file
10\makeindex
11
12\begin{document}
13
Guido van Rossum7a2dba21993-11-05 14:45:11 +000014\maketitle
15
Guido van Rossum16cd7f91994-10-06 10:29:26 +000016\input{copyright}
17
Guido van Rossum7a2dba21993-11-05 14:45:11 +000018\begin{abstract}
19
20\noindent
Guido van Rossumb92112d1995-03-20 14:24:09 +000021Python is an interpreted, object-oriented programming language. This
Fred Drake0fd82681998-01-09 05:39:38 +000022document describes how to write modules in \C{} or \Cpp{} to extend the
Guido van Rossumb92112d1995-03-20 14:24:09 +000023Python interpreter with new modules. Those modules can define new
24functions but also new object types and their methods. The document
25also describes how to embed the Python interpreter in another
26application, for use as an extension language. Finally, it shows how
27to compile and link extension modules so that they can be loaded
28dynamically (at run time) into the interpreter, if the underlying
29operating system supports this feature.
30
31This document assumes basic knowledge about Python. For an informal
Fred Drake3da06a61998-02-26 18:49:12 +000032introduction to the language, see the Python Tutorial. The \emph{Python
33Reference Manual} gives a more formal definition of the language. The
34\emph{Python Library Reference} documents the existing object types,
Guido van Rossumb92112d1995-03-20 14:24:09 +000035functions and modules (both built-in and written in Python) that give
36the language its wide application range.
Guido van Rossum7a2dba21993-11-05 14:45:11 +000037
Fred Drake0fd82681998-01-09 05:39:38 +000038For a detailed description of the whole Python/\C{} API, see the separate
Fred Drake3da06a61998-02-26 18:49:12 +000039\emph{Python/\C{} API Reference Manual}. \strong{Note:} While that
40manual is still in a state of flux, it is safe to say that it is much
41more up to date than the manual you're reading currently (which has
42been in need for an upgrade for some time now).
Guido van Rossumfdacc581997-10-07 14:40:16 +000043
44
Guido van Rossum7a2dba21993-11-05 14:45:11 +000045\end{abstract}
46
Fred Drake4d4f9e71998-01-13 22:25:02 +000047\tableofcontents
Guido van Rossum7a2dba21993-11-05 14:45:11 +000048
Guido van Rossumdb65a6c1993-11-05 17:11:16 +000049
Fred Drake0fd82681998-01-09 05:39:38 +000050\chapter{Extending Python with \C{} or \Cpp{} code}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000051
Guido van Rossum6f0132f1993-11-19 13:13:22 +000052
Fred Drake3da06a61998-02-26 18:49:12 +000053%\section{Introduction}
54\label{intro}
Guido van Rossum6f0132f1993-11-19 13:13:22 +000055
Guido van Rossumb92112d1995-03-20 14:24:09 +000056It is quite easy to add new built-in modules to Python, if you know
Fred Drake0fd82681998-01-09 05:39:38 +000057how to program in \C{}. Such \dfn{extension modules} can do two things
Guido van Rossumb92112d1995-03-20 14:24:09 +000058that can't be done directly in Python: they can implement new built-in
Fred Drake0fd82681998-01-09 05:39:38 +000059object types, and they can call \C{} library functions and system calls.
Guido van Rossum6938f061994-08-01 12:22:53 +000060
Guido van Rossum5049bcb1995-03-13 16:55:23 +000061To support extensions, the Python API (Application Programmers
Guido van Rossumb92112d1995-03-20 14:24:09 +000062Interface) defines a set of functions, macros and variables that
63provide access to most aspects of the Python run-time system. The
Fred Drake0fd82681998-01-09 05:39:38 +000064Python API is incorporated in a \C{} source file by including the header
Guido van Rossumb92112d1995-03-20 14:24:09 +000065\code{"Python.h"}.
Guido van Rossum6938f061994-08-01 12:22:53 +000066
Guido van Rossumb92112d1995-03-20 14:24:09 +000067The compilation of an extension module depends on its intended use as
68well as on your system setup; details are given in a later section.
Guido van Rossum6938f061994-08-01 12:22:53 +000069
Guido van Rossum7a2dba21993-11-05 14:45:11 +000070
Guido van Rossum5049bcb1995-03-13 16:55:23 +000071\section{A Simple Example}
Fred Drake3da06a61998-02-26 18:49:12 +000072\label{simpleExample}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000073
Guido van Rossumb92112d1995-03-20 14:24:09 +000074Let's create an extension module called \samp{spam} (the favorite food
75of Monty Python fans...) and let's say we want to create a Python
Fred Draked7bb3031998-03-03 17:52:07 +000076interface to the \C{} library function \cfunction{system()}.\footnote{An
Guido van Rossumb92112d1995-03-20 14:24:09 +000077interface for this function already exists in the standard module
Fred Draked7bb3031998-03-03 17:52:07 +000078\module{os} --- it was chosen as a simple and straightfoward example.}
Guido van Rossumb92112d1995-03-20 14:24:09 +000079This function takes a null-terminated character string as argument and
80returns an integer. We want this function to be callable from Python
81as follows:
82
Fred Drake1e11a5c1998-02-13 07:11:32 +000083\begin{verbatim}
84>>> import spam
85>>> status = spam.system("ls -l")
86\end{verbatim}
87
Guido van Rossumb92112d1995-03-20 14:24:09 +000088Begin by creating a file \samp{spammodule.c}. (In general, if a
Fred Drake0fd82681998-01-09 05:39:38 +000089module is called \samp{spam}, the \C{} file containing its implementation
Guido van Rossumb92112d1995-03-20 14:24:09 +000090is called \file{spammodule.c}; if the module name is very long, like
91\samp{spammify}, the module name can be just \file{spammify.c}.)
92
93The first line of our file can be:
Guido van Rossum7a2dba21993-11-05 14:45:11 +000094
Fred Drake1e11a5c1998-02-13 07:11:32 +000095\begin{verbatim}
96#include "Python.h"
97\end{verbatim}
98
Guido van Rossum5049bcb1995-03-13 16:55:23 +000099which pulls in the Python API (you can add a comment describing the
100purpose of the module and a copyright notice if you like).
101
Guido van Rossumb92112d1995-03-20 14:24:09 +0000102All user-visible symbols defined by \code{"Python.h"} have a prefix of
103\samp{Py} or \samp{PY}, except those defined in standard header files.
104For convenience, and since they are used extensively by the Python
105interpreter, \code{"Python.h"} includes a few standard header files:
106\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
107\code{<stdlib.h>}. If the latter header file does not exist on your
Fred Draked7bb3031998-03-03 17:52:07 +0000108system, it declares the functions \cfunction{malloc()},
109\cfunction{free()} and \cfunction{realloc()} directly.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000110
Fred Drake0fd82681998-01-09 05:39:38 +0000111The next thing we add to our module file is the \C{} function that will
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000112be called when the Python expression \samp{spam.system(\var{string})}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000113is evaluated (we'll see shortly how it ends up being called):
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000114
Fred Drake1e11a5c1998-02-13 07:11:32 +0000115\begin{verbatim}
116static PyObject *
117spam_system(self, args)
118 PyObject *self;
119 PyObject *args;
120{
121 char *command;
122 int sts;
123 if (!PyArg_ParseTuple(args, "s", &command))
124 return NULL;
125 sts = system(command);
126 return Py_BuildValue("i", sts);
127}
128\end{verbatim}
129
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000130There is a straightforward translation from the argument list in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000131Python (e.g.\ the single expression \code{"ls -l"}) to the arguments
Fred Drake0fd82681998-01-09 05:39:38 +0000132passed to the \C{} function. The \C{} function always has two arguments,
Guido van Rossumb92112d1995-03-20 14:24:09 +0000133conventionally named \var{self} and \var{args}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000134
Fred Drake0fd82681998-01-09 05:39:38 +0000135The \var{self} argument is only used when the \C{} function implements a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000136builtin method. This will be discussed later. In the example,
Fred Drake0fd82681998-01-09 05:39:38 +0000137\var{self} will always be a \NULL{} pointer, since we are defining
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000138a function, not a method. (This is done so that the interpreter
Fred Drake0fd82681998-01-09 05:39:38 +0000139doesn't have to understand two different types of \C{} functions.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000140
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000141The \var{args} argument will be a pointer to a Python tuple object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000142containing the arguments. Each item of the tuple corresponds to an
143argument in the call's argument list. The arguments are Python
Fred Drake1aedbd81998-02-16 14:47:27 +0000144objects --- in order to do anything with them in our \C{} function we have
Fred Drake3da06a61998-02-26 18:49:12 +0000145to convert them to \C{} values. The function \cfunction{PyArg_ParseTuple()}
Fred Drake0fd82681998-01-09 05:39:38 +0000146in the Python API checks the argument types and converts them to \C{}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000147values. It uses a template string to determine the required types of
Fred Drake0fd82681998-01-09 05:39:38 +0000148the arguments as well as the types of the \C{} variables into which to
Guido van Rossumb92112d1995-03-20 14:24:09 +0000149store the converted values. More about this later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000150
Fred Drake3da06a61998-02-26 18:49:12 +0000151\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
Guido van Rossumb92112d1995-03-20 14:24:09 +0000152the right type and its components have been stored in the variables
153whose addresses are passed. It returns false (zero) if an invalid
154argument list was passed. In the latter case it also raises an
155appropriate exception by so the calling function can return
Fred Drake0fd82681998-01-09 05:39:38 +0000156\NULL{} immediately (as we saw in the example).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000157
158
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000159\section{Intermezzo: Errors and Exceptions}
Fred Drake3da06a61998-02-26 18:49:12 +0000160\label{errors}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000161
162An important convention throughout the Python interpreter is the
163following: when a function fails, it should set an exception condition
Fred Drake0fd82681998-01-09 05:39:38 +0000164and return an error value (usually a \NULL{} pointer). Exceptions
Guido van Rossumb92112d1995-03-20 14:24:09 +0000165are stored in a static global variable inside the interpreter; if this
Fred Drake0fd82681998-01-09 05:39:38 +0000166variable is \NULL{} no exception has occurred. A second global
Guido van Rossumb92112d1995-03-20 14:24:09 +0000167variable stores the ``associated value'' of the exception (the second
Fred Draked7bb3031998-03-03 17:52:07 +0000168argument to \keyword{raise}). A third variable contains the stack
Guido van Rossumb92112d1995-03-20 14:24:09 +0000169traceback in case the error originated in Python code. These three
Fred Drake0fd82681998-01-09 05:39:38 +0000170variables are the \C{} equivalents of the Python variables
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000171\code{sys.exc_type}, \code{sys.exc_value} and \code{sys.exc_traceback}
Fred Draked7bb3031998-03-03 17:52:07 +0000172(see the section on module \module{sys} in the \emph{Python Library
173Reference}). It is important to know about them to understand how
174errors are passed around.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000175
Guido van Rossumb92112d1995-03-20 14:24:09 +0000176The Python API defines a number of functions to set various types of
177exceptions.
178
Fred Draked7bb3031998-03-03 17:52:07 +0000179The most common one is \cfunction{PyErr_SetString()}. Its arguments
180are an exception object and a \C{} string. The exception object is
181usually a predefined object like \cdata{PyExc_ZeroDivisionError}. The
182\C{} string indicates the cause of the error and is converted to a
183Python string object and stored as the ``associated value'' of the
184exception.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000185
Fred Draked7bb3031998-03-03 17:52:07 +0000186Another useful function is \cfunction{PyErr_SetFromErrno()}, which only
Guido van Rossumb92112d1995-03-20 14:24:09 +0000187takes an exception argument and constructs the associated value by
Fred Draked7bb3031998-03-03 17:52:07 +0000188inspection of the (\UNIX{}) global variable \cdata{errno}. The most
189general function is \cfunction{PyErr_SetObject()}, which takes two object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000190arguments, the exception and its associated value. You don't need to
Fred Draked7bb3031998-03-03 17:52:07 +0000191\cfunction{Py_INCREF()} the objects passed to any of these functions.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000192
193You can test non-destructively whether an exception has been set with
Fred Draked7bb3031998-03-03 17:52:07 +0000194\cfunction{PyErr_Occurred()}. This returns the current exception object,
Fred Drake0fd82681998-01-09 05:39:38 +0000195or \NULL{} if no exception has occurred. You normally don't need
Fred Draked7bb3031998-03-03 17:52:07 +0000196to call \cfunction{PyErr_Occurred()} to see whether an error occurred in a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000197function call, since you should be able to tell from the return value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000198
Guido van Rossumd16ddb61996-12-13 02:38:17 +0000199When a function \var{f} that calls another function \var{g} detects
Guido van Rossumb92112d1995-03-20 14:24:09 +0000200that the latter fails, \var{f} should itself return an error value
Fred Drake0fd82681998-01-09 05:39:38 +0000201(e.g. \NULL{} or \code{-1}). It should \emph{not} call one of the
Fred Draked7bb3031998-03-03 17:52:07 +0000202\cfunction{PyErr_*()} functions --- one has already been called by \var{g}.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000203\var{f}'s caller is then supposed to also return an error indication
Fred Draked7bb3031998-03-03 17:52:07 +0000204to \emph{its} caller, again \emph{without} calling \cfunction{PyErr_*()},
Guido van Rossumb92112d1995-03-20 14:24:09 +0000205and so on --- the most detailed cause of the error was already
206reported by the function that first detected it. Once the error
207reaches the Python interpreter's main loop, this aborts the currently
208executing Python code and tries to find an exception handler specified
209by the Python programmer.
Guido van Rossum6938f061994-08-01 12:22:53 +0000210
211(There are situations where a module can actually give a more detailed
Fred Draked7bb3031998-03-03 17:52:07 +0000212error message by calling another \cfunction{PyErr_*()} function, and in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000213such cases it is fine to do so. As a general rule, however, this is
214not necessary, and can cause information about the cause of the error
215to be lost: most operations can fail for a variety of reasons.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000216
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000217To ignore an exception set by a function call that failed, the exception
Fred Draked7bb3031998-03-03 17:52:07 +0000218condition must be cleared explicitly by calling \cfunction{PyErr_Clear()}.
219The only time \C{} code should call \cfunction{PyErr_Clear()} is if it doesn't
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000220want to pass the error on to the interpreter but wants to handle it
221completely by itself (e.g. by trying something else or pretending
222nothing happened).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000223
Fred Draked7bb3031998-03-03 17:52:07 +0000224Note that a failing \cfunction{malloc()} call must be turned into an
225exception --- the direct caller of \cfunction{malloc()} (or
226\cfunction{realloc()}) must call \cfunction{PyErr_NoMemory()} and
227return a failure indicator itself. All the object-creating functions
228(\cfunction{PyInt_FromLong()} etc.) already do this, so only if you
229call \cfunction{malloc()} directly this note is of importance.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000230
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000231Also note that, with the important exception of
Fred Drake3da06a61998-02-26 18:49:12 +0000232\cfunction{PyArg_ParseTuple()} and friends, functions that return an
Guido van Rossumb92112d1995-03-20 14:24:09 +0000233integer status usually return a positive value or zero for success and
234\code{-1} for failure, like \UNIX{} system calls.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000235
Fred Draked7bb3031998-03-03 17:52:07 +0000236Finally, be careful to clean up garbage (by making
237\cfunction{Py_XDECREF()} or \cfunction{Py_DECREF()} calls for objects
238you have already created) when you return an error indicator!
Guido van Rossum6938f061994-08-01 12:22:53 +0000239
240The choice of which exception to raise is entirely yours. There are
Fred Drake0fd82681998-01-09 05:39:38 +0000241predeclared \C{} objects corresponding to all built-in Python exceptions,
Fred Draked7bb3031998-03-03 17:52:07 +0000242e.g. \cdata{PyExc_ZeroDevisionError} which you can use directly. Of
Guido van Rossumb92112d1995-03-20 14:24:09 +0000243course, you should choose exceptions wisely --- don't use
Fred Draked7bb3031998-03-03 17:52:07 +0000244\cdata{PyExc_TypeError} to mean that a file couldn't be opened (that
245should probably be \cdata{PyExc_IOError}). If something's wrong with
Fred Drake3da06a61998-02-26 18:49:12 +0000246the argument list, the \cfunction{PyArg_ParseTuple()} function usually
Fred Draked7bb3031998-03-03 17:52:07 +0000247raises \cdata{PyExc_TypeError}. If you have an argument whose value
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000248which must be in a particular range or must satisfy other conditions,
Fred Draked7bb3031998-03-03 17:52:07 +0000249\cdata{PyExc_ValueError} is appropriate.
Guido van Rossum6938f061994-08-01 12:22:53 +0000250
251You can also define a new exception that is unique to your module.
252For this, you usually declare a static object variable at the
253beginning of your file, e.g.
254
Fred Drake1e11a5c1998-02-13 07:11:32 +0000255\begin{verbatim}
256static PyObject *SpamError;
257\end{verbatim}
258
Guido van Rossum6938f061994-08-01 12:22:53 +0000259and initialize it in your module's initialization function
Fred Draked7bb3031998-03-03 17:52:07 +0000260(\cfunction{initspam()}) with an exception object, e.g. (leaving out
261the error checking for now):
Guido van Rossum6938f061994-08-01 12:22:53 +0000262
Fred Drake1e11a5c1998-02-13 07:11:32 +0000263\begin{verbatim}
264void
265initspam()
266{
267 PyObject *m, *d;
268 m = Py_InitModule("spam", SpamMethods);
269 d = PyModule_GetDict(m);
Fred Draked7bb3031998-03-03 17:52:07 +0000270 SpamError = PyErr_NewException("spam.error", NULL, NULL);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000271 PyDict_SetItemString(d, "error", SpamError);
272}
273\end{verbatim}
274
Guido van Rossumb92112d1995-03-20 14:24:09 +0000275Note that the Python name for the exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000276\exception{spam.error}. The \cfunction{PyErr_NewException()} function
277may create either a string or class, depending on whether the
278\samp{-X} flag was passed to the interpreter. If \samp{-X} was used,
279\cdata{SpamError} will be a string object, otherwise it will be a
280class object with the base class being \exception{Exception},
281described in the \emph{Python Library Reference} under ``Built-in
282Exceptions.''
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000283
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000284
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000285\section{Back to the Example}
Fred Drake3da06a61998-02-26 18:49:12 +0000286\label{backToExample}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000287
288Going back to our example function, you should now be able to
289understand this statement:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000290
Fred Drake1e11a5c1998-02-13 07:11:32 +0000291\begin{verbatim}
292 if (!PyArg_ParseTuple(args, "s", &command))
293 return NULL;
294\end{verbatim}
295
Fred Drake0fd82681998-01-09 05:39:38 +0000296It returns \NULL{} (the error indicator for functions returning
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000297object pointers) if an error is detected in the argument list, relying
Fred Drake3da06a61998-02-26 18:49:12 +0000298on the exception set by \cfunction{PyArg_ParseTuple()}. Otherwise the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000299string value of the argument has been copied to the local variable
Fred Draked7bb3031998-03-03 17:52:07 +0000300\cdata{command}. This is a pointer assignment and you are not supposed
Fred Drake0fd82681998-01-09 05:39:38 +0000301to modify the string to which it points (so in Standard \C{}, the variable
Fred Draked7bb3031998-03-03 17:52:07 +0000302\cdata{command} should properly be declared as \samp{const char
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000303*command}).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000304
Fred Draked7bb3031998-03-03 17:52:07 +0000305The next statement is a call to the \UNIX{} function
306\cfunction{system()}, passing it the string we just got from
307\cfunction{PyArg_ParseTuple()}:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000308
Fred Drake1e11a5c1998-02-13 07:11:32 +0000309\begin{verbatim}
310 sts = system(command);
311\end{verbatim}
312
Fred Draked7bb3031998-03-03 17:52:07 +0000313Our \function{spam.system()} function must return the value of
314\cdata{sts} as a Python object. This is done using the function
315\cfunction{Py_BuildValue()}, which is something like the inverse of
316\cfunction{PyArg_ParseTuple()}: it takes a format string and an
317arbitrary number of \C{} values, and returns a new Python object.
318More info on \cfunction{Py_BuildValue()} is given later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000319
Fred Drake1e11a5c1998-02-13 07:11:32 +0000320\begin{verbatim}
321 return Py_BuildValue("i", sts);
322\end{verbatim}
323
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000324In this case, it will return an integer object. (Yes, even integers
325are objects on the heap in Python!)
Guido van Rossum6938f061994-08-01 12:22:53 +0000326
Fred Drake0fd82681998-01-09 05:39:38 +0000327If you have a \C{} function that returns no useful argument (a function
Fred Draked7bb3031998-03-03 17:52:07 +0000328returning \ctype{void}), the corresponding Python function must return
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000329\code{None}. You need this idiom to do so:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000330
Fred Drake1e11a5c1998-02-13 07:11:32 +0000331\begin{verbatim}
332 Py_INCREF(Py_None);
333 return Py_None;
334\end{verbatim}
335
Fred Draked7bb3031998-03-03 17:52:07 +0000336\cdata{Py_None} is the \C{} name for the special Python object
Fred Drake0fd82681998-01-09 05:39:38 +0000337\code{None}. It is a genuine Python object (not a \NULL{}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000338pointer, which means ``error'' in most contexts, as we have seen).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000339
340
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000341\section{The Module's Method Table and Initialization Function}
Fred Drake3da06a61998-02-26 18:49:12 +0000342\label{methodTable}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000343
Fred Draked7bb3031998-03-03 17:52:07 +0000344I promised to show how \cfunction{spam_system()} is called from Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000345programs. First, we need to list its name and address in a ``method
346table'':
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000347
Fred Drake1e11a5c1998-02-13 07:11:32 +0000348\begin{verbatim}
349static PyMethodDef SpamMethods[] = {
350 ...
351 {"system", spam_system, METH_VARARGS},
352 ...
353 {NULL, NULL} /* Sentinel */
354};
355\end{verbatim}
356
Fred Drake0fd82681998-01-09 05:39:38 +0000357Note the third entry (\samp{METH_VARARGS}). This is a flag telling
358the interpreter the calling convention to be used for the \C{}
359function. It should normally always be \samp{METH_VARARGS} or
360\samp{METH_VARARGS | METH_KEYWORDS}; a value of \samp{0} means that an
Fred Drake3da06a61998-02-26 18:49:12 +0000361obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000362
Fred Drakeb6e50321998-02-04 20:26:31 +0000363When using only \samp{METH_VARARGS}, the function should expect
364the Python-level parameters to be passed in as a tuple acceptable for
365parsing via \cfunction{PyArg_ParseTuple()}; more information on this
366function is provided below.
367
Fred Draked7bb3031998-03-03 17:52:07 +0000368The \constant{METH_KEYWORDS} bit may be set in the third field if keyword
Fred Drake0fd82681998-01-09 05:39:38 +0000369arguments should be passed to the function. In this case, the \C{}
370function should accept a third \samp{PyObject *} parameter which will
Fred Drake3da06a61998-02-26 18:49:12 +0000371be a dictionary of keywords. Use \cfunction{PyArg_ParseTupleAndKeywords()}
Fred Drake0fd82681998-01-09 05:39:38 +0000372to parse the arguemts to such a function.
373
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000374The method table must be passed to the interpreter in the module's
375initialization function (which should be the only non-\code{static}
376item defined in the module file):
377
Fred Drake1e11a5c1998-02-13 07:11:32 +0000378\begin{verbatim}
379void
380initspam()
381{
382 (void) Py_InitModule("spam", SpamMethods);
383}
384\end{verbatim}
385
Fred Draked7bb3031998-03-03 17:52:07 +0000386When the Python program imports module \module{spam} for the first
387time, \cfunction{initspam()} is called. It calls
388\cfunction{Py_InitModule()}, which creates a ``module object'' (which
389is inserted in the dictionary \code{sys.modules} under the key
390\code{"spam"}), and inserts built-in function objects into the newly
391created module based upon the table (an array of \ctype{PyMethodDef}
392structures) that was passed as its second argument.
393\cfunction{Py_InitModule()} returns a pointer to the module object
394that it creates (which is unused here). It aborts with a fatal error
395if the module could not be initialized satisfactorily, so the caller
396doesn't need to check for errors.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000397
398
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000399\section{Compilation and Linkage}
Fred Drake3da06a61998-02-26 18:49:12 +0000400\label{compilation}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000401
Guido van Rossumb92112d1995-03-20 14:24:09 +0000402There are two more things to do before you can use your new extension:
403compiling and linking it with the Python system. If you use dynamic
404loading, the details depend on the style of dynamic loading your
405system uses; see the chapter on Dynamic Loading for more info about
406this.
Guido van Rossum6938f061994-08-01 12:22:53 +0000407
408If you can't use dynamic loading, or if you want to make your module a
409permanent part of the Python interpreter, you will have to change the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000410configuration setup and rebuild the interpreter. Luckily, this is
411very simple: just place your file (\file{spammodule.c} for example) in
412the \file{Modules} directory, add a line to the file
413\file{Modules/Setup} describing your file:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000414
Fred Drake1e11a5c1998-02-13 07:11:32 +0000415\begin{verbatim}
416spam spammodule.o
417\end{verbatim}
418
Fred Draked7bb3031998-03-03 17:52:07 +0000419and rebuild the interpreter by running \program{make} in the toplevel
420directory. You can also run \program{make} in the \file{Modules}
Guido van Rossum6938f061994-08-01 12:22:53 +0000421subdirectory, but then you must first rebuilt the \file{Makefile}
Fred Draked7bb3031998-03-03 17:52:07 +0000422there by running `\program{make} Makefile'. (This is necessary each
423time you change the \file{Setup} file.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000424
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000425If your module requires additional libraries to link with, these can
426be listed on the line in the \file{Setup} file as well, for instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000427
Fred Drake1e11a5c1998-02-13 07:11:32 +0000428\begin{verbatim}
429spam spammodule.o -lX11
430\end{verbatim}
431
Fred Drake0fd82681998-01-09 05:39:38 +0000432\section{Calling Python Functions From \C{}}
Fred Drake3da06a61998-02-26 18:49:12 +0000433\label{callingPython}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000434
Fred Drake0fd82681998-01-09 05:39:38 +0000435So far we have concentrated on making \C{} functions callable from
436Python. The reverse is also useful: calling Python functions from \C{}.
Guido van Rossum6938f061994-08-01 12:22:53 +0000437This is especially the case for libraries that support so-called
Fred Drake0fd82681998-01-09 05:39:38 +0000438``callback'' functions. If a \C{} interface makes use of callbacks, the
Guido van Rossum6938f061994-08-01 12:22:53 +0000439equivalent Python often needs to provide a callback mechanism to the
440Python programmer; the implementation will require calling the Python
Fred Drake0fd82681998-01-09 05:39:38 +0000441callback functions from a \C{} callback. Other uses are also imaginable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000442
443Fortunately, the Python interpreter is easily called recursively, and
Guido van Rossum6938f061994-08-01 12:22:53 +0000444there is a standard interface to call a Python function. (I won't
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000445dwell on how to call the Python parser with a particular string as
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000446input --- if you're interested, have a look at the implementation of
Guido van Rossum6938f061994-08-01 12:22:53 +0000447the \samp{-c} command line option in \file{Python/pythonmain.c}.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000448
449Calling a Python function is easy. First, the Python program must
450somehow pass you the Python function object. You should provide a
451function (or some other interface) to do this. When this function is
452called, save a pointer to the Python function object (be careful to
Fred Draked7bb3031998-03-03 17:52:07 +0000453\cfunction{Py_INCREF()} it!) in a global variable --- or whereever you
454see fit. For example, the following function might be part of a module
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000455definition:
456
Fred Drake1e11a5c1998-02-13 07:11:32 +0000457\begin{verbatim}
458static PyObject *my_callback = NULL;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000459
Fred Drake1e11a5c1998-02-13 07:11:32 +0000460static PyObject *
461my_set_callback(dummy, arg)
462 PyObject *dummy, *arg;
463{
464 Py_XDECREF(my_callback); /* Dispose of previous callback */
465 Py_XINCREF(arg); /* Add a reference to new callback */
466 my_callback = arg; /* Remember new callback */
467 /* Boilerplate to return "None" */
468 Py_INCREF(Py_None);
469 return Py_None;
470}
471\end{verbatim}
472
Fred Draked7bb3031998-03-03 17:52:07 +0000473The macros \cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()}
474increment/decrement the reference count of an object and are safe in
475the presence of \NULL{} pointers. More info on them in the section on
476Reference Counts below.
Guido van Rossum6938f061994-08-01 12:22:53 +0000477
Fred Drake0fd82681998-01-09 05:39:38 +0000478Later, when it is time to call the function, you call the \C{} function
Fred Draked7bb3031998-03-03 17:52:07 +0000479\cfunction{PyEval_CallObject()}. This function has two arguments, both
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000480pointers to arbitrary Python objects: the Python function, and the
481argument list. The argument list must always be a tuple object, whose
482length is the number of arguments. To call the Python function with
483no arguments, pass an empty tuple; to call it with one argument, pass
Fred Draked7bb3031998-03-03 17:52:07 +0000484a singleton tuple. \cfunction{Py_BuildValue()} returns a tuple when its
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000485format string consists of zero or more format codes between
486parentheses. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000487
Fred Drake1e11a5c1998-02-13 07:11:32 +0000488\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000489 int arg;
490 PyObject *arglist;
491 PyObject *result;
492 ...
493 arg = 123;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000494 ...
495 /* Time to call the callback */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000496 arglist = Py_BuildValue("(i)", arg);
497 result = PyEval_CallObject(my_callback, arglist);
498 Py_DECREF(arglist);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000499\end{verbatim}
500
Fred Draked7bb3031998-03-03 17:52:07 +0000501\cfunction{PyEval_CallObject()} returns a Python object pointer: this is
502the return value of the Python function. \cfunction{PyEval_CallObject()} is
Guido van Rossumb92112d1995-03-20 14:24:09 +0000503``reference-count-neutral'' with respect to its arguments. In the
Guido van Rossum6938f061994-08-01 12:22:53 +0000504example a new tuple was created to serve as the argument list, which
Fred Draked7bb3031998-03-03 17:52:07 +0000505is \cfunction{Py_DECREF()}-ed immediately after the call.
Guido van Rossum6938f061994-08-01 12:22:53 +0000506
Fred Draked7bb3031998-03-03 17:52:07 +0000507The return value of \cfunction{PyEval_CallObject()} is ``new'': either it
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000508is a brand new object, or it is an existing object whose reference
509count has been incremented. So, unless you want to save it in a
Fred Draked7bb3031998-03-03 17:52:07 +0000510global variable, you should somehow \cfunction{Py_DECREF()} the result,
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000511even (especially!) if you are not interested in its value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000512
513Before you do this, however, it is important to check that the return
Fred Draked7bb3031998-03-03 17:52:07 +0000514value isn't \NULL{}. If it is, the Python function terminated by
515raising an exception. If the \C{} code that called
516\cfunction{PyEval_CallObject()} is called from Python, it should now
517return an error indication to its Python caller, so the interpreter
518can print a stack trace, or the calling Python code can handle the
519exception. If this is not possible or desirable, the exception should
520be cleared by calling \cfunction{PyErr_Clear()}. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000521
Fred Drake1e11a5c1998-02-13 07:11:32 +0000522\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000523 if (result == NULL)
524 return NULL; /* Pass error back */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000525 ...use result...
526 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000527\end{verbatim}
528
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000529Depending on the desired interface to the Python callback function,
Fred Draked7bb3031998-03-03 17:52:07 +0000530you may also have to provide an argument list to
531\cfunction{PyEval_CallObject()}. In some cases the argument list is
532also provided by the Python program, through the same interface that
533specified the callback function. It can then be saved and used in the
534same manner as the function object. In other cases, you may have to
535construct a new tuple to pass as the argument list. The simplest way
536to do this is to call \cfunction{Py_BuildValue()}. For example, if
537you want to pass an integral event code, you might use the following
538code:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000539
Fred Drake1e11a5c1998-02-13 07:11:32 +0000540\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000541 PyObject *arglist;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000542 ...
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000543 arglist = Py_BuildValue("(l)", eventcode);
544 result = PyEval_CallObject(my_callback, arglist);
545 Py_DECREF(arglist);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000546 if (result == NULL)
547 return NULL; /* Pass error back */
548 /* Here maybe use the result */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000549 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000550\end{verbatim}
551
Fred Draked7bb3031998-03-03 17:52:07 +0000552Note the placement of \samp{Py_DECREF(arglist)} immediately after the
553call, before the error check! Also note that strictly spoken this
554code is not complete: \cfunction{Py_BuildValue()} may run out of
555memory, and this should be checked.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000556
557
Fred Drake53396f61998-01-19 02:48:37 +0000558\section{Format Strings for \sectcode{PyArg_ParseTuple()}}
Fred Drake3da06a61998-02-26 18:49:12 +0000559\label{parseTuple}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000560
Fred Drake3da06a61998-02-26 18:49:12 +0000561The \cfunction{PyArg_ParseTuple()} function is declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000562
Fred Drake1e11a5c1998-02-13 07:11:32 +0000563\begin{verbatim}
564int PyArg_ParseTuple(PyObject *arg, char *format, ...);
565\end{verbatim}
566
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000567The \var{arg} argument must be a tuple object containing an argument
Fred Drake0fd82681998-01-09 05:39:38 +0000568list passed from Python to a \C{} function. The \var{format} argument
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000569must be a format string, whose syntax is explained below. The
570remaining arguments must be addresses of variables whose type is
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000571determined by the format string. For the conversion to succeed, the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000572\var{arg} object must match the format and the format must be
573exhausted.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000574
Fred Drake3da06a61998-02-26 18:49:12 +0000575Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000576arguments have the required types, it cannot check the validity of the
Fred Drake0fd82681998-01-09 05:39:38 +0000577addresses of \C{} variables passed to the call: if you make mistakes
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000578there, your code will probably crash or at least overwrite random bits
579in memory. So be careful!
580
581A format string consists of zero or more ``format units''. A format
582unit describes one Python object; it is usually a single character or
583a parenthesized sequence of format units. With a few exceptions, a
584format unit that is not a parenthesized sequence normally corresponds
Fred Drake3da06a61998-02-26 18:49:12 +0000585to a single address argument to \cfunction{PyArg_ParseTuple()}. In the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000586following description, the quoted form is the format unit; the entry
587in (round) parentheses is the Python object type that matches the
Fred Drake0fd82681998-01-09 05:39:38 +0000588format unit; and the entry in [square] brackets is the type of the \C{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000589variable(s) whose address should be passed. (Use the \samp{\&}
590operator to pass a variable's address.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000591
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000592\begin{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000593
Fred Drake3fe985f1998-03-04 03:51:42 +0000594\item[\samp{s} (string) {[char *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000595Convert a Python string to a \C{} pointer to a character string. You
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000596must not provide storage for the string itself; a pointer to an
597existing string is stored into the character pointer variable whose
Fred Drake0fd82681998-01-09 05:39:38 +0000598address you pass. The \C{} string is null-terminated. The Python string
Fred Drake3da06a61998-02-26 18:49:12 +0000599must not contain embedded null bytes; if it does, a \exception{TypeError}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000600exception is raised.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000601
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000602\item[\samp{s\#} (string) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000603This variant on \samp{s} stores into two \C{} variables, the first one
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000604a pointer to a character string, the second one its length. In this
605case the Python string may contain embedded null bytes.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000606
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000607\item[\samp{z} (string or \code{None}) {[char *]}]
608Like \samp{s}, but the Python object may also be \code{None}, in which
Fred Drake0fd82681998-01-09 05:39:38 +0000609case the \C{} pointer is set to \NULL{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000610
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000611\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000612This is to \samp{s\#} as \samp{z} is to \samp{s}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000613
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000614\item[\samp{b} (integer) {[char]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000615Convert a Python integer to a tiny int, stored in a \C{} \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000616
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000617\item[\samp{h} (integer) {[short int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000618Convert a Python integer to a \C{} \ctype{short int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000619
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000620\item[\samp{i} (integer) {[int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000621Convert a Python integer to a plain \C{} \ctype{int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000622
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000623\item[\samp{l} (integer) {[long int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000624Convert a Python integer to a \C{} \ctype{long int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000625
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000626\item[\samp{c} (string of length 1) {[char]}]
627Convert a Python character, represented as a string of length 1, to a
Fred Draked7bb3031998-03-03 17:52:07 +0000628\C{} \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000629
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000630\item[\samp{f} (float) {[float]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000631Convert a Python floating point number to a \C{} \ctype{float}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000632
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000633\item[\samp{d} (float) {[double]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000634Convert a Python floating point number to a \C{} \ctype{double}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000635
Fred Drakeb6e50321998-02-04 20:26:31 +0000636\item[\samp{D} (complex) {[Py_complex]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000637Convert a Python complex number to a \C{} \ctype{Py_complex} structure.
Fred Drakeb6e50321998-02-04 20:26:31 +0000638
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000639\item[\samp{O} (object) {[PyObject *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000640Store a Python object (without any conversion) in a \C{} object pointer.
641The \C{} program thus receives the actual object that was passed. The
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000642object's reference count is not increased. The pointer stored is not
Fred Drake0fd82681998-01-09 05:39:38 +0000643\NULL{}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000644
Fred Drake3fe985f1998-03-04 03:51:42 +0000645\item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000646Store a Python object in a \C{} object pointer. This is similar to
647\samp{O}, but takes two \C{} arguments: the first is the address of a
648Python type object, the second is the address of the \C{} variable (of
Fred Draked7bb3031998-03-03 17:52:07 +0000649type \ctype{PyObject *}) into which the object pointer is stored.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000650If the Python object does not have the required type, a
Fred Draked7bb3031998-03-03 17:52:07 +0000651\exception{TypeError} exception is raised.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000652
Fred Drake3fe985f1998-03-04 03:51:42 +0000653\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000654Convert a Python object to a \C{} variable through a \var{converter}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000655function. This takes two arguments: the first is a function, the
Fred Drake0fd82681998-01-09 05:39:38 +0000656second is the address of a \C{} variable (of arbitrary type), converted
Fred Draked7bb3031998-03-03 17:52:07 +0000657to \ctype{void *}. The \var{converter} function in turn is called as
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000658follows:
659
660\code{\var{status} = \var{converter}(\var{object}, \var{address});}
661
662where \var{object} is the Python object to be converted and
Fred Draked7bb3031998-03-03 17:52:07 +0000663\var{address} is the \ctype{void *} argument that was passed to
664\cfunction{PyArg_ConvertTuple()}. The returned \var{status} should be
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000665\code{1} for a successful conversion and \code{0} if the conversion
666has failed. When the conversion fails, the \var{converter} function
667should raise an exception.
668
669\item[\samp{S} (string) {[PyStringObject *]}]
Guido van Rossum2474d681998-02-26 17:07:11 +0000670Like \samp{O} but requires that the Python object is a string object.
Fred Draked7bb3031998-03-03 17:52:07 +0000671Raises a \exception{TypeError} exception if the object is not a string
672object. The \C{} variable may also be declared as \ctype{PyObject *}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000673
Fred Drake3fe985f1998-03-04 03:51:42 +0000674\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000675The object must be a Python tuple whose length is the number of format
Fred Drake0fd82681998-01-09 05:39:38 +0000676units in \var{items}. The \C{} arguments must correspond to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000677individual format units in \var{items}. Format units for tuples may
678be nested.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000679
680\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000681
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000682It is possible to pass Python long integers where integers are
Fred Drake1aedbd81998-02-16 14:47:27 +0000683requested; however no proper range checking is done --- the most
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000684significant bits are silently truncated when the receiving field is
685too small to receive the value (actually, the semantics are inherited
Fred Drake0fd82681998-01-09 05:39:38 +0000686from downcasts in \C{} --- your milage may vary).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000687
688A few other characters have a meaning in a format string. These may
689not occur inside nested parentheses. They are:
690
691\begin{description}
692
693\item[\samp{|}]
694Indicates that the remaining arguments in the Python argument list are
Fred Drake0fd82681998-01-09 05:39:38 +0000695optional. The \C{} variables corresponding to optional arguments should
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000696be initialized to their default value --- when an optional argument is
Fred Drake40e72f71998-03-03 19:37:38 +0000697not specified, \cfunction{PyArg_ParseTuple()} does not touch the contents
Fred Drake0fd82681998-01-09 05:39:38 +0000698of the corresponding \C{} variable(s).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000699
700\item[\samp{:}]
701The list of format units ends here; the string after the colon is used
702as the function name in error messages (the ``associated value'' of
Fred Draked7bb3031998-03-03 17:52:07 +0000703the exceptions that \cfunction{PyArg_ParseTuple()} raises).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000704
705\item[\samp{;}]
706The list of format units ends here; the string after the colon is used
707as the error message \emph{instead} of the default error message.
708Clearly, \samp{:} and \samp{;} mutually exclude each other.
709
710\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000711
712Some example calls:
713
Fred Drake0fd82681998-01-09 05:39:38 +0000714\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000715 int ok;
716 int i, j;
717 long k, l;
718 char *s;
719 int size;
720
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000721 ok = PyArg_ParseTuple(args, ""); /* No arguments */
Guido van Rossum6938f061994-08-01 12:22:53 +0000722 /* Python call: f() */
Fred Drake0fd82681998-01-09 05:39:38 +0000723
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000724 ok = PyArg_ParseTuple(args, "s", &s); /* A string */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000725 /* Possible Python call: f('whoops!') */
726
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000727 ok = PyArg_ParseTuple(args, "lls", &k, &l, &s); /* Two longs and a string */
Guido van Rossum6938f061994-08-01 12:22:53 +0000728 /* Possible Python call: f(1, 2, 'three') */
Fred Drake0fd82681998-01-09 05:39:38 +0000729
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000730 ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000731 /* A pair of ints and a string, whose size is also returned */
Guido van Rossum7e924dd1997-02-10 16:51:52 +0000732 /* Possible Python call: f((1, 2), 'three') */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000733
734 {
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000735 char *file;
736 char *mode = "r";
737 int bufsize = 0;
738 ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);
739 /* A string, and optionally another string and an integer */
740 /* Possible Python calls:
741 f('spam')
742 f('spam', 'w')
743 f('spam', 'wb', 100000) */
744 }
745
746 {
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000747 int left, top, right, bottom, h, v;
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000748 ok = PyArg_ParseTuple(args, "((ii)(ii))(ii)",
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000749 &left, &top, &right, &bottom, &h, &v);
750 /* A rectangle and a point */
751 /* Possible Python call:
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000752 f(((0, 0), (400, 300)), (10, 10)) */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000753 }
Fred Drakeb6e50321998-02-04 20:26:31 +0000754
755 {
756 Py_complex c;
757 ok = PyArg_ParseTuple(args, "D:myfunction", &c);
758 /* a complex, also providing a function name for errors */
759 /* Possible Python call: myfunction(1+2j) */
760 }
Fred Drake0fd82681998-01-09 05:39:38 +0000761\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000762
763
764\section{Keyword Parsing with \sectcode{PyArg_ParseTupleAndKeywords()}}
Fred Drake3da06a61998-02-26 18:49:12 +0000765\label{parseTupleAndKeywords}
Fred Drakeb6e50321998-02-04 20:26:31 +0000766
767The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
768follows:
769
Fred Drake1e11a5c1998-02-13 07:11:32 +0000770\begin{verbatim}
771int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
772 char *format, char **kwlist, ...);
773\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000774
775The \var{arg} and \var{format} parameters are identical to those of the
776\cfunction{PyArg_ParseTuple()} function. The \var{kwdict} parameter
777is the dictionary of keywords received as the third parameter from the
778Python runtime. The \var{kwlist} parameter is a \NULL{}-terminated
779list of strings which identify the parameters; the names are matched
780with the type information from \var{format} from left to right.
781
782\strong{Note:} Nested tuples cannot be parsed when using keyword
783arguments! Keyword parameters passed in which are not present in the
Fred Drakecd05ca91998-03-07 05:32:08 +0000784\var{kwlist} will cause \exception{TypeError} to be raised.
Fred Drakeb6e50321998-02-04 20:26:31 +0000785
786Here is an example module which uses keywords, based on an example by
787Geoff Philbrick (\email{philbrick@hks.com}):
788
789\begin{verbatim}
790#include <stdio.h>
791#include "Python.h"
792
793static PyObject *
794keywdarg_parrot(self, args, keywds)
795 PyObject *self;
796 PyObject *args;
797 PyObject *keywds;
798{
799 int voltage;
800 char *state = "a stiff";
801 char *action = "voom";
802 char *type = "Norwegian Blue";
803
804 static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
805
806 if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
807 &voltage, &state, &action, &type))
808 return NULL;
809
810 printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
811 action, voltage);
812 printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
813
814 Py_INCREF(Py_None);
815
816 return Py_None;
817}
818
819static PyMethodDef keywdarg_methods[] = {
820 {"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS|METH_KEYWORDS},
821 {NULL, NULL} /* sentinel */
822};
823
824void
825initkeywdarg()
826{
827 /* Create the module and add the functions */
Fred Drakecd05ca91998-03-07 05:32:08 +0000828 Py_InitModule("keywdarg", keywdarg_methods);
Fred Drakeb6e50321998-02-04 20:26:31 +0000829}
830\end{verbatim}
831
832
Fred Drake53396f61998-01-19 02:48:37 +0000833\section{The \sectcode{Py_BuildValue()} Function}
Fred Drake3da06a61998-02-26 18:49:12 +0000834\label{buildValue}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000835
Fred Draked7bb3031998-03-03 17:52:07 +0000836This function is the counterpart to \cfunction{PyArg_ParseTuple()}. It is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000837declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000838
Fred Drake1e11a5c1998-02-13 07:11:32 +0000839\begin{verbatim}
840PyObject *Py_BuildValue(char *format, ...);
841\end{verbatim}
842
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000843It recognizes a set of format units similar to the ones recognized by
Fred Draked7bb3031998-03-03 17:52:07 +0000844\cfunction{PyArg_ParseTuple()}, but the arguments (which are input to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000845function, not output) must not be pointers, just values. It returns a
Fred Drake0fd82681998-01-09 05:39:38 +0000846new Python object, suitable for returning from a \C{} function called
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000847from Python.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000848
Fred Draked7bb3031998-03-03 17:52:07 +0000849One difference with \cfunction{PyArg_ParseTuple()}: while the latter
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000850requires its first argument to be a tuple (since Python argument lists
Fred Draked7bb3031998-03-03 17:52:07 +0000851are always represented as tuples internally),
852\cfunction{Py_BuildValue()} does not always build a tuple. It builds
853a tuple only if its format string contains two or more format units.
854If the format string is empty, it returns \code{None}; if it contains
855exactly one format unit, it returns whatever object is described by
856that format unit. To force it to return a tuple of size 0 or one,
857parenthesize the format string.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000858
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000859In the following description, the quoted form is the format unit; the
860entry in (round) parentheses is the Python object type that the format
861unit will return; and the entry in [square] brackets is the type of
Fred Drake0fd82681998-01-09 05:39:38 +0000862the \C{} value(s) to be passed.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000863
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000864The characters space, tab, colon and comma are ignored in format
865strings (but not within format units such as \samp{s\#}). This can be
866used to make long format strings a tad more readable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000867
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000868\begin{description}
869
870\item[\samp{s} (string) {[char *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000871Convert a null-terminated \C{} string to a Python object. If the \C{}
872string pointer is \NULL{}, \code{None} is returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000873
874\item[\samp{s\#} (string) {[char *, int]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000875Convert a \C{} string and its length to a Python object. If the \C{} string
876pointer is \NULL{}, the length is ignored and \code{None} is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000877returned.
878
879\item[\samp{z} (string or \code{None}) {[char *]}]
880Same as \samp{s}.
881
882\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
883Same as \samp{s\#}.
884
885\item[\samp{i} (integer) {[int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000886Convert a plain \C{} \ctype{int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000887
888\item[\samp{b} (integer) {[char]}]
889Same as \samp{i}.
890
891\item[\samp{h} (integer) {[short int]}]
892Same as \samp{i}.
893
894\item[\samp{l} (integer) {[long int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000895Convert a \C{} \ctype{long int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000896
897\item[\samp{c} (string of length 1) {[char]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000898Convert a \C{} \ctype{int} representing a character to a Python string of
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000899length 1.
900
901\item[\samp{d} (float) {[double]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000902Convert a \C{} \ctype{double} to a Python floating point number.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000903
904\item[\samp{f} (float) {[float]}]
905Same as \samp{d}.
906
907\item[\samp{O} (object) {[PyObject *]}]
908Pass a Python object untouched (except for its reference count, which
Fred Drake0fd82681998-01-09 05:39:38 +0000909is incremented by one). If the object passed in is a \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000910pointer, it is assumed that this was caused because the call producing
911the argument found an error and set an exception. Therefore,
Fred Draked7bb3031998-03-03 17:52:07 +0000912\cfunction{Py_BuildValue()} will return \NULL{} but won't raise an
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000913exception. If no exception has been raised yet,
Fred Draked7bb3031998-03-03 17:52:07 +0000914\cdata{PyExc_SystemError} is set.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000915
916\item[\samp{S} (object) {[PyObject *]}]
917Same as \samp{O}.
918
919\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
920Convert \var{anything} to a Python object through a \var{converter}
921function. The function is called with \var{anything} (which should be
Fred Draked7bb3031998-03-03 17:52:07 +0000922compatible with \ctype{void *}) as its argument and should return a
Fred Drake0fd82681998-01-09 05:39:38 +0000923``new'' Python object, or \NULL{} if an error occurred.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000924
925\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000926Convert a sequence of \C{} values to a Python tuple with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000927of items.
928
929\item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000930Convert a sequence of \C{} values to a Python list with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000931of items.
932
933\item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000934Convert a sequence of \C{} values to a Python dictionary. Each pair of
935consecutive \C{} values adds one item to the dictionary, serving as key
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000936and value, respectively.
937
938\end{description}
939
940If there is an error in the format string, the
Fred Draked7bb3031998-03-03 17:52:07 +0000941\cdata{PyExc_SystemError} exception is raised and \NULL{} returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000942
943Examples (to the left the call, to the right the resulting Python value):
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000944
Fred Drake1e11a5c1998-02-13 07:11:32 +0000945\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000946 Py_BuildValue("") None
947 Py_BuildValue("i", 123) 123
Guido van Rossumf23e0fe1995-03-18 11:04:29 +0000948 Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000949 Py_BuildValue("s", "hello") 'hello'
950 Py_BuildValue("ss", "hello", "world") ('hello', 'world')
951 Py_BuildValue("s#", "hello", 4) 'hell'
952 Py_BuildValue("()") ()
953 Py_BuildValue("(i)", 123) (123,)
954 Py_BuildValue("(ii)", 123, 456) (123, 456)
955 Py_BuildValue("(i,i)", 123, 456) (123, 456)
956 Py_BuildValue("[i,i]", 123, 456) [123, 456]
Guido van Rossumf23e0fe1995-03-18 11:04:29 +0000957 Py_BuildValue("{s:i,s:i}",
958 "abc", 123, "def", 456) {'abc': 123, 'def': 456}
959 Py_BuildValue("((ii)(ii)) (ii)",
960 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))
Fred Drake1e11a5c1998-02-13 07:11:32 +0000961\end{verbatim}
962
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000963\section{Reference Counts}
Fred Drake3da06a61998-02-26 18:49:12 +0000964\label{refcounts}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000965
Fred Drake3da06a61998-02-26 18:49:12 +0000966%\subsection{Introduction}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000967
Fred Drake0fd82681998-01-09 05:39:38 +0000968In languages like \C{} or \Cpp{}, the programmer is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +0000969dynamic allocation and deallocation of memory on the heap. In \C{},
970this is done using the functions \cfunction{malloc()} and
971\cfunction{free()}. In \Cpp{}, the operators \keyword{new} and
972\keyword{delete} are used with essentially the same meaning; they are
973actually implemented using \cfunction{malloc()} and
974\cfunction{free()}, so we'll restrict the following discussion to the
975latter.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000976
Fred Draked7bb3031998-03-03 17:52:07 +0000977Every block of memory allocated with \cfunction{malloc()} should
978eventually be returned to the pool of available memory by exactly one
979call to \cfunction{free()}. It is important to call
980\cfunction{free()} at the right time. If a block's address is
981forgotten but \cfunction{free()} is not called for it, the memory it
982occupies cannot be reused until the program terminates. This is
983called a \dfn{memory leak}. On the other hand, if a program calls
984\cfunction{free()} for a block and then continues to use the block, it
985creates a conflict with re-use of the block through another
986\cfunction{malloc()} call. This is called \dfn{using freed memory}.
987It has the same bad consequences as referencing uninitialized data ---
988core dumps, wrong results, mysterious crashes.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000989
990Common causes of memory leaks are unusual paths through the code. For
991instance, a function may allocate a block of memory, do some
992calculation, and then free the block again. Now a change in the
993requirements for the function may add a test to the calculation that
994detects an error condition and can return prematurely from the
995function. It's easy to forget to free the allocated memory block when
996taking this premature exit, especially when it is added later to the
997code. Such leaks, once introduced, often go undetected for a long
998time: the error exit is taken only in a small fraction of all calls,
999and most modern machines have plenty of virtual memory, so the leak
1000only becomes apparent in a long-running process that uses the leaking
1001function frequently. Therefore, it's important to prevent leaks from
1002happening by having a coding convention or strategy that minimizes
1003this kind of errors.
1004
Fred Draked7bb3031998-03-03 17:52:07 +00001005Since Python makes heavy use of \cfunction{malloc()} and
1006\cfunction{free()}, it needs a strategy to avoid memory leaks as well
1007as the use of freed memory. The chosen method is called
1008\dfn{reference counting}. The principle is simple: every object
1009contains a counter, which is incremented when a reference to the
1010object is stored somewhere, and which is decremented when a reference
1011to it is deleted. When the counter reaches zero, the last reference
1012to the object has been deleted and the object is freed.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001013
1014An alternative strategy is called \dfn{automatic garbage collection}.
1015(Sometimes, reference counting is also referred to as a garbage
1016collection strategy, hence my use of ``automatic'' to distinguish the
1017two.) The big advantage of automatic garbage collection is that the
Fred Draked7bb3031998-03-03 17:52:07 +00001018user doesn't need to call \cfunction{free()} explicitly. (Another claimed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001019advantage is an improvement in speed or memory usage --- this is no
Fred Drake0fd82681998-01-09 05:39:38 +00001020hard fact however.) The disadvantage is that for \C{}, there is no
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001021truly portable automatic garbage collector, while reference counting
Fred Draked7bb3031998-03-03 17:52:07 +00001022can be implemented portably (as long as the functions \cfunction{malloc()}
1023and \cfunction{free()} are available --- which the \C{} Standard guarantees).
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001024Maybe some day a sufficiently portable automatic garbage collector
Fred Drake0fd82681998-01-09 05:39:38 +00001025will be available for \C{}. Until then, we'll have to live with
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001026reference counts.
1027
1028\subsection{Reference Counting in Python}
Fred Drake3da06a61998-02-26 18:49:12 +00001029\label{refcountsInPython}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001030
1031There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
1032which handle the incrementing and decrementing of the reference count.
Fred Draked7bb3031998-03-03 17:52:07 +00001033\cfunction{Py_DECREF()} also frees the object when the count reaches zero.
1034For flexibility, it doesn't call \cfunction{free()} directly --- rather, it
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001035makes a call through a function pointer in the object's \dfn{type
1036object}. For this purpose (and others), every object also contains a
1037pointer to its type object.
1038
1039The big question now remains: when to use \code{Py_INCREF(x)} and
1040\code{Py_DECREF(x)}? Let's first introduce some terms. Nobody
1041``owns'' an object; however, you can \dfn{own a reference} to an
1042object. An object's reference count is now defined as the number of
1043owned references to it. The owner of a reference is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +00001044calling \cfunction{Py_DECREF()} when the reference is no longer
1045needed. Ownership of a reference can be transferred. There are three
1046ways to dispose of an owned reference: pass it on, store it, or call
1047\cfunction{Py_DECREF()}. Forgetting to dispose of an owned reference
1048creates a memory leak.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001049
1050It is also possible to \dfn{borrow}\footnote{The metaphor of
1051``borrowing'' a reference is not completely correct: the owner still
1052has a copy of the reference.} a reference to an object. The borrower
Fred Draked7bb3031998-03-03 17:52:07 +00001053of a reference should not call \cfunction{Py_DECREF()}. The borrower must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001054not hold on to the object longer than the owner from which it was
1055borrowed. Using a borrowed reference after the owner has disposed of
1056it risks using freed memory and should be avoided
1057completely.\footnote{Checking that the reference count is at least 1
1058\strong{does not work} --- the reference count itself could be in
1059freed memory and may thus be reused for another object!}
1060
1061The advantage of borrowing over owning a reference is that you don't
1062need to take care of disposing of the reference on all possible paths
1063through the code --- in other words, with a borrowed reference you
1064don't run the risk of leaking when a premature exit is taken. The
1065disadvantage of borrowing over leaking is that there are some subtle
1066situations where in seemingly correct code a borrowed reference can be
1067used after the owner from which it was borrowed has in fact disposed
1068of it.
1069
1070A borrowed reference can be changed into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001071\cfunction{Py_INCREF()}. This does not affect the status of the owner from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001072which the reference was borrowed --- it creates a new owned reference,
1073and gives full owner responsibilities (i.e., the new owner must
1074dispose of the reference properly, as well as the previous owner).
1075
1076\subsection{Ownership Rules}
Fred Drake3da06a61998-02-26 18:49:12 +00001077\label{ownershipRules}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001078
1079Whenever an object reference is passed into or out of a function, it
1080is part of the function's interface specification whether ownership is
1081transferred with the reference or not.
1082
1083Most functions that return a reference to an object pass on ownership
1084with the reference. In particular, all functions whose function it is
Fred Draked7bb3031998-03-03 17:52:07 +00001085to create a new object, e.g.\ \cfunction{PyInt_FromLong()} and
1086\cfunction{Py_BuildValue()}, pass ownership to the receiver. Even if in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001087fact, in some cases, you don't receive a reference to a brand new
1088object, you still receive ownership of the reference. For instance,
Fred Draked7bb3031998-03-03 17:52:07 +00001089\cfunction{PyInt_FromLong()} maintains a cache of popular values and can
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001090return a reference to a cached item.
1091
1092Many functions that extract objects from other objects also transfer
1093ownership with the reference, for instance
Fred Draked7bb3031998-03-03 17:52:07 +00001094\cfunction{PyObject_GetAttrString()}. The picture is less clear, here,
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001095however, since a few common routines are exceptions:
Fred Draked7bb3031998-03-03 17:52:07 +00001096\cfunction{PyTuple_GetItem()}, \cfunction{PyList_GetItem()},
1097\cfunction{PyDict_GetItem()}, and \cfunction{PyDict_GetItemString()}
1098all return references that you borrow from the tuple, list or
1099dictionary.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001100
Fred Draked7bb3031998-03-03 17:52:07 +00001101The function \cfunction{PyImport_AddModule()} also returns a borrowed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001102reference, even though it may actually create the object it returns:
1103this is possible because an owned reference to the object is stored in
1104\code{sys.modules}.
1105
1106When you pass an object reference into another function, in general,
1107the function borrows the reference from you --- if it needs to store
Fred Draked7bb3031998-03-03 17:52:07 +00001108it, it will use \cfunction{Py_INCREF()} to become an independent
1109owner. There are exactly two important exceptions to this rule:
1110\cfunction{PyTuple_SetItem()} and \cfunction{PyList_SetItem()}. These
1111functions take over ownership of the item passed to them --- even if
1112they fail! (Note that \cfunction{PyDict_SetItem()} and friends don't
1113take over ownership --- they are ``normal''.)
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001114
Fred Drake0fd82681998-01-09 05:39:38 +00001115When a \C{} function is called from Python, it borrows references to its
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001116arguments from the caller. The caller owns a reference to the object,
1117so the borrowed reference's lifetime is guaranteed until the function
1118returns. Only when such a borrowed reference must be stored or passed
1119on, it must be turned into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001120\cfunction{Py_INCREF()}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001121
Fred Drake0fd82681998-01-09 05:39:38 +00001122The object reference returned from a \C{} function that is called from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001123Python must be an owned reference --- ownership is tranferred from the
1124function to its caller.
1125
1126\subsection{Thin Ice}
Fred Drake3da06a61998-02-26 18:49:12 +00001127\label{thinIce}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001128
1129There are a few situations where seemingly harmless use of a borrowed
1130reference can lead to problems. These all have to do with implicit
1131invocations of the interpreter, which can cause the owner of a
1132reference to dispose of it.
1133
1134The first and most important case to know about is using
Fred Draked7bb3031998-03-03 17:52:07 +00001135\cfunction{Py_DECREF()} on an unrelated object while borrowing a
1136reference to a list item. For instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001137
Fred Drake1e11a5c1998-02-13 07:11:32 +00001138\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001139bug(PyObject *list) {
1140 PyObject *item = PyList_GetItem(list, 0);
1141 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1142 PyObject_Print(item, stdout, 0); /* BUG! */
1143}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001144\end{verbatim}
1145
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001146This function first borrows a reference to \code{list[0]}, then
1147replaces \code{list[1]} with the value \code{0}, and finally prints
1148the borrowed reference. Looks harmless, right? But it's not!
1149
Fred Draked7bb3031998-03-03 17:52:07 +00001150Let's follow the control flow into \cfunction{PyList_SetItem()}. The list
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001151owns references to all its items, so when item 1 is replaced, it has
1152to dispose of the original item 1. Now let's suppose the original
1153item 1 was an instance of a user-defined class, and let's further
Fred Draked7bb3031998-03-03 17:52:07 +00001154suppose that the class defined a \method{__del__()} method. If this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001155class instance has a reference count of 1, disposing of it will call
Fred Draked7bb3031998-03-03 17:52:07 +00001156its \method{__del__()} method.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001157
Fred Draked7bb3031998-03-03 17:52:07 +00001158Since it is written in Python, the \method{__del__()} method can execute
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001159arbitrary Python code. Could it perhaps do something to invalidate
Fred Draked7bb3031998-03-03 17:52:07 +00001160the reference to \code{item} in \cfunction{bug()}? You bet! Assuming
1161that the list passed into \cfunction{bug()} is accessible to the
1162\method{__del__()} method, it could execute a statement to the effect of
1163\samp{del list[0]}, and assuming this was the last reference to that
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001164object, it would free the memory associated with it, thereby
1165invalidating \code{item}.
1166
1167The solution, once you know the source of the problem, is easy:
1168temporarily increment the reference count. The correct version of the
1169function reads:
1170
Fred Drake1e11a5c1998-02-13 07:11:32 +00001171\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001172no_bug(PyObject *list) {
1173 PyObject *item = PyList_GetItem(list, 0);
1174 Py_INCREF(item);
1175 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1176 PyObject_Print(item, stdout, 0);
1177 Py_DECREF(item);
1178}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001179\end{verbatim}
1180
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001181This is a true story. An older version of Python contained variants
Fred Drake0fd82681998-01-09 05:39:38 +00001182of this bug and someone spent a considerable amount of time in a \C{}
Fred Draked7bb3031998-03-03 17:52:07 +00001183debugger to figure out why his \method{__del__()} methods would fail...
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001184
1185The second case of problems with a borrowed reference is a variant
1186involving threads. Normally, multiple threads in the Python
1187interpreter can't get in each other's way, because there is a global
1188lock protecting Python's entire object space. However, it is possible
1189to temporarily release this lock using the macro
1190\code{Py_BEGIN_ALLOW_THREADS}, and to re-acquire it using
1191\code{Py_END_ALLOW_THREADS}. This is common around blocking I/O
1192calls, to let other threads use the CPU while waiting for the I/O to
1193complete. Obviously, the following function has the same problem as
1194the previous one:
1195
Fred Drake1e11a5c1998-02-13 07:11:32 +00001196\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001197bug(PyObject *list) {
1198 PyObject *item = PyList_GetItem(list, 0);
1199 Py_BEGIN_ALLOW_THREADS
1200 ...some blocking I/O call...
1201 Py_END_ALLOW_THREADS
1202 PyObject_Print(item, stdout, 0); /* BUG! */
1203}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001204\end{verbatim}
1205
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001206\subsection{NULL Pointers}
Fred Drake3da06a61998-02-26 18:49:12 +00001207\label{nullPointers}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001208
1209In general, functions that take object references as arguments don't
Fred Drake0fd82681998-01-09 05:39:38 +00001210expect you to pass them \NULL{} pointers, and will dump core (or
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001211cause later core dumps) if you do so. Functions that return object
Fred Drake0fd82681998-01-09 05:39:38 +00001212references generally return \NULL{} only to indicate that an
1213exception occurred. The reason for not testing for \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001214arguments is that functions often pass the objects they receive on to
Fred Drake0fd82681998-01-09 05:39:38 +00001215other function --- if each function were to test for \NULL{},
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001216there would be a lot of redundant tests and the code would run slower.
1217
Fred Drake0fd82681998-01-09 05:39:38 +00001218It is better to test for \NULL{} only at the ``source'', i.e.\
1219when a pointer that may be \NULL{} is received, e.g.\ from
Fred Draked7bb3031998-03-03 17:52:07 +00001220\cfunction{malloc()} or from a function that may raise an exception.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001221
Fred Draked7bb3031998-03-03 17:52:07 +00001222The macros \cfunction{Py_INCREF()} and \cfunction{Py_DECREF()}
Fred Drake0fd82681998-01-09 05:39:38 +00001223don't check for \NULL{} pointers --- however, their variants
Fred Draked7bb3031998-03-03 17:52:07 +00001224\cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()} do.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001225
1226The macros for checking for a particular object type
Fred Drake0fd82681998-01-09 05:39:38 +00001227(\code{Py\var{type}_Check()}) don't check for \NULL{} pointers ---
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001228again, there is much code that calls several of these in a row to test
1229an object against various different expected types, and this would
Fred Drake0fd82681998-01-09 05:39:38 +00001230generate redundant tests. There are no variants with \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001231checking.
1232
Fred Drake0fd82681998-01-09 05:39:38 +00001233The \C{} function calling mechanism guarantees that the argument list
1234passed to \C{} functions (\code{args} in the examples) is never
1235\NULL{} --- in fact it guarantees that it is always a tuple.%
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001236\footnote{These guarantees don't hold when you use the ``old'' style
1237calling convention --- this is still found in much existing code.}
1238
Fred Drake0fd82681998-01-09 05:39:38 +00001239It is a severe error to ever let a \NULL{} pointer ``escape'' to
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001240the Python user.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001241
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001242
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001243\section{Writing Extensions in \Cpp{}}
Fred Drake3da06a61998-02-26 18:49:12 +00001244\label{cplusplus}
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001245
Guido van Rossum16d6e711994-08-08 12:30:22 +00001246It is possible to write extension modules in \Cpp{}. Some restrictions
Guido van Rossumed39cd01995-10-08 00:17:19 +00001247apply. If the main program (the Python interpreter) is compiled and
Fred Drake0fd82681998-01-09 05:39:38 +00001248linked by the \C{} compiler, global or static objects with constructors
Guido van Rossumed39cd01995-10-08 00:17:19 +00001249cannot be used. This is not a problem if the main program is linked
Guido van Rossumafcd5891998-02-05 19:59:39 +00001250by the \Cpp{} compiler. Functions that will be called by the
1251Python interpreter (in particular, module initalization functions)
1252have to be declared using \code{extern "C"}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001253It is unnecessary to enclose the Python header files in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001254\code{extern "C" \{...\}} --- they use this form already if the symbol
Fred Drake0fd82681998-01-09 05:39:38 +00001255\samp{__cplusplus} is defined (all recent \Cpp{} compilers define this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001256symbol).
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001257
1258\chapter{Embedding Python in another application}
Fred Drake3da06a61998-02-26 18:49:12 +00001259\label{embedding}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001260
1261Embedding Python is similar to extending it, but not quite. The
1262difference is that when you extend Python, the main program of the
Guido van Rossum16d6e711994-08-08 12:30:22 +00001263application is still the Python interpreter, while if you embed
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001264Python, the main program may have nothing to do with Python ---
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001265instead, some parts of the application occasionally call the Python
1266interpreter to run some Python code.
1267
1268So if you are embedding Python, you are providing your own main
1269program. One of the things this main program has to do is initialize
1270the Python interpreter. At the very least, you have to call the
Fred Draked7bb3031998-03-03 17:52:07 +00001271function \cfunction{Py_Initialize()}. There are optional calls to
1272pass command line arguments to Python. Then later you can call the
1273interpreter from any part of the application.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001274
1275There are several different ways to call the interpreter: you can pass
Fred Draked7bb3031998-03-03 17:52:07 +00001276a string containing Python statements to
1277\cfunction{PyRun_SimpleString()}, or you can pass a stdio file pointer
1278and a file name (for identification in error messages only) to
1279\cfunction{PyRun_SimpleFile()}. You can also call the lower-level
1280operations described in the previous chapters to construct and use
1281Python objects.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001282
1283A simple demo of embedding Python can be found in the directory
Guido van Rossum6938f061994-08-01 12:22:53 +00001284\file{Demo/embed}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001285
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001286
Guido van Rossum16d6e711994-08-08 12:30:22 +00001287\section{Embedding Python in \Cpp{}}
Fred Drake3da06a61998-02-26 18:49:12 +00001288\label{embeddingInCplusplus}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001289
Guido van Rossum16d6e711994-08-08 12:30:22 +00001290It is also possible to embed Python in a \Cpp{} program; precisely how this
1291is done will depend on the details of the \Cpp{} system used; in general you
1292will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
1293to compile and link your program. There is no need to recompile Python
1294itself using \Cpp{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001295
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001296
1297\chapter{Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001298\label{dynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001299
Guido van Rossum6938f061994-08-01 12:22:53 +00001300On most modern systems it is possible to configure Python to support
Fred Drake0fd82681998-01-09 05:39:38 +00001301dynamic loading of extension modules implemented in \C{}. When shared
Guido van Rossum6938f061994-08-01 12:22:53 +00001302libraries are used dynamic loading is configured automatically;
1303otherwise you have to select it as a build option (see below). Once
1304configured, dynamic loading is trivial to use: when a Python program
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001305executes \code{import spam}, the search for modules tries to find a
1306file \file{spammodule.o} (\file{spammodule.so} when using shared
Guido van Rossum6938f061994-08-01 12:22:53 +00001307libraries) in the module search path, and if one is found, it is
1308loaded into the executing binary and executed. Once loaded, the
1309module acts just like a built-in extension module.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001310
Guido van Rossumb92112d1995-03-20 14:24:09 +00001311The advantages of dynamic loading are twofold: the ``core'' Python
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001312binary gets smaller, and users can extend Python with their own
Fred Drake0fd82681998-01-09 05:39:38 +00001313modules implemented in \C{} without having to build and maintain their
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001314own copy of the Python interpreter. There are also disadvantages:
1315dynamic loading isn't available on all systems (this just means that
1316on some systems you have to use static loading), and dynamically
1317loading a module that was compiled for a different version of Python
Guido van Rossum6938f061994-08-01 12:22:53 +00001318(e.g. with a different representation of objects) may dump core.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001319
1320
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001321\section{Configuring and Building the Interpreter for Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001322\label{dynloadConfig}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001323
Guido van Rossum6938f061994-08-01 12:22:53 +00001324There are three styles of dynamic loading: one using shared libraries,
1325one using SGI IRIX 4 dynamic loading, and one using GNU dynamic
1326loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001327
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001328\subsection{Shared Libraries}
Fred Drake3da06a61998-02-26 18:49:12 +00001329\label{sharedlibs}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001330
Guido van Rossum16d6e711994-08-08 12:30:22 +00001331The following systems support dynamic loading using shared libraries:
Guido van Rossum6938f061994-08-01 12:22:53 +00001332SunOS 4; Solaris 2; SGI IRIX 5 (but not SGI IRIX 4!); and probably all
1333systems derived from SVR4, or at least those SVR4 derivatives that
1334support shared libraries (are there any that don't?).
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001335
Guido van Rossum6938f061994-08-01 12:22:53 +00001336You don't need to do anything to configure dynamic loading on these
1337systems --- the \file{configure} detects the presence of the
1338\file{<dlfcn.h>} header file and automatically configures dynamic
1339loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001340
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001341\subsection{SGI IRIX 4 Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001342\label{irixDynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001343
Guido van Rossum6938f061994-08-01 12:22:53 +00001344Only SGI IRIX 4 supports dynamic loading of modules using SGI dynamic
1345loading. (SGI IRIX 5 might also support it but it is inferior to
1346using shared libraries so there is no reason to; a small test didn't
1347work right away so I gave up trying to support it.)
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001348
Fred Draked7bb3031998-03-03 17:52:07 +00001349Before you build Python, you first need to fetch and build the
1350\code{dl} package written by Jack Jansen. This is available by
1351anonymous ftp from \url{ftp://ftp.cwi.nl/pub/dynload}, file
Guido van Rossum6938f061994-08-01 12:22:53 +00001352\file{dl-1.6.tar.Z}. (The version number may change.) Follow the
1353instructions in the package's \file{README} file to build it.
1354
1355Once you have built \code{dl}, you can configure Python to use it. To
1356this end, you run the \file{configure} script with the option
1357\code{--with-dl=\var{directory}} where \var{directory} is the absolute
1358pathname of the \code{dl} directory.
1359
1360Now build and install Python as you normally would (see the
1361\file{README} file in the toplevel Python directory.)
1362
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001363\subsection{GNU Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001364\label{gnuDynload}
Guido van Rossum6938f061994-08-01 12:22:53 +00001365
1366GNU dynamic loading supports (according to its \file{README} file) the
1367following hardware and software combinations: VAX (Ultrix), Sun 3
1368(SunOS 3.4 and 4.0), Sparc (SunOS 4.0), Sequent Symmetry (Dynix), and
1369Atari ST. There is no reason to use it on a Sparc; I haven't seen a
1370Sun 3 for years so I don't know if these have shared libraries or not.
1371
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001372You need to fetch and build two packages.
1373One is GNU DLD. All development of this code has been done with DLD
Fred Drakeca6567f1998-01-22 20:44:18 +00001374version 3.2.3, which is available by anonymous ftp from
1375\url{ftp://ftp.cwi.nl/pub/dynload}, file
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001376\file{dld-3.2.3.tar.Z}. (A more recent version of DLD is available
Fred Drakeca6567f1998-01-22 20:44:18 +00001377via \url{http://www-swiss.ai.mit.edu/~jaffer/DLD.html} but this has
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001378not been tested.)
1379The other package needed is an
Guido van Rossum6938f061994-08-01 12:22:53 +00001380emulation of Jack Jansen's \code{dl} package that I wrote on top of
1381GNU DLD 3.2.3. This is available from the same host and directory,
Guido van Rossum98046b91997-08-14 19:50:18 +00001382file \file{dl-dld-1.1.tar.Z}. (The version number may change --- but I doubt
Guido van Rossum6938f061994-08-01 12:22:53 +00001383it will.) Follow the instructions in each package's \file{README}
Guido van Rossum98046b91997-08-14 19:50:18 +00001384file to configure and build them.
Guido van Rossum6938f061994-08-01 12:22:53 +00001385
1386Now configure Python. Run the \file{configure} script with the option
1387\code{--with-dl-dld=\var{dl-directory},\var{dld-directory}} where
1388\var{dl-directory} is the absolute pathname of the directory where you
1389have built the \file{dl-dld} package, and \var{dld-directory} is that
1390of the GNU DLD package. The Python interpreter you build hereafter
1391will support GNU dynamic loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001392
1393
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001394\section{Building a Dynamically Loadable Module}
Fred Drake3da06a61998-02-26 18:49:12 +00001395\label{makedynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001396
Guido van Rossum6938f061994-08-01 12:22:53 +00001397Since there are three styles of dynamic loading, there are also three
1398groups of instructions for building a dynamically loadable module.
1399Instructions common for all three styles are given first. Assuming
Fred Draked7bb3031998-03-03 17:52:07 +00001400your module is called \module{spam}, the source filename must be
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001401\file{spammodule.c}, so the object name is \file{spammodule.o}. The
Guido van Rossum6938f061994-08-01 12:22:53 +00001402module must be written as a normal Python extension module (as
1403described earlier).
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001404
Guido van Rossum6938f061994-08-01 12:22:53 +00001405Note that in all cases you will have to create your own Makefile that
1406compiles your module file(s). This Makefile will have to pass two
Fred Drake0fd82681998-01-09 05:39:38 +00001407\samp{-I} arguments to the \C{} compiler which will make it find the
Guido van Rossum6938f061994-08-01 12:22:53 +00001408Python header files. If the Make variable \var{PYTHONTOP} points to
1409the toplevel Python directory, your \var{CFLAGS} Make variable should
1410contain the options \samp{-I\$(PYTHONTOP) -I\$(PYTHONTOP)/Include}.
1411(Most header files are in the \file{Include} subdirectory, but the
Guido van Rossum305ed111996-08-19 22:59:46 +00001412\file{config.h} header lives in the toplevel directory.)
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001413
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001414
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001415\subsection{Shared Libraries}
Fred Drake3da06a61998-02-26 18:49:12 +00001416\label{linking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001417
Fred Drakeaf8a0151998-01-14 14:51:31 +00001418You must link the \file{.o} file to produce a shared library. This is
1419done using a special invocation of the \UNIX{} loader/linker,
1420\emph{ld}(1). Unfortunately the invocation differs slightly per
1421system.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001422
Guido van Rossum6938f061994-08-01 12:22:53 +00001423On SunOS 4, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001424\begin{verbatim}
1425ld spammodule.o -o spammodule.so
1426\end{verbatim}
1427
Guido van Rossum6938f061994-08-01 12:22:53 +00001428On Solaris 2, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001429\begin{verbatim}
1430ld -G spammodule.o -o spammodule.so
1431\end{verbatim}
1432
Guido van Rossum6938f061994-08-01 12:22:53 +00001433On SGI IRIX 5, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001434\begin{verbatim}
1435ld -shared spammodule.o -o spammodule.so
1436\end{verbatim}
1437
Fred Draked7bb3031998-03-03 17:52:07 +00001438On other systems, consult the manual page for \manpage{ld}{1} to find
1439what flags, if any, must be used.
Guido van Rossum6938f061994-08-01 12:22:53 +00001440
1441If your extension module uses system libraries that haven't already
1442been linked with Python (e.g. a windowing system), these must be
Fred Draked7bb3031998-03-03 17:52:07 +00001443passed to the \program{ld} command as \samp{-l} options after the
Guido van Rossum6938f061994-08-01 12:22:53 +00001444\samp{.o} file.
1445
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001446The resulting file \file{spammodule.so} must be copied into a directory
Guido van Rossum6938f061994-08-01 12:22:53 +00001447along the Python module search path.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001448
1449
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001450\subsection{SGI IRIX 4 Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001451\label{irixLinking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001452
Fred Drakeaf8a0151998-01-14 14:51:31 +00001453\strong{IMPORTANT:} You must compile your extension module with the
Fred Drake0fd82681998-01-09 05:39:38 +00001454additional \C{} flag \samp{-G0} (or \samp{-G 0}). This instruct the
Guido van Rossum6938f061994-08-01 12:22:53 +00001455assembler to generate position-independent code.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001456
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001457You don't need to link the resulting \file{spammodule.o} file; just
Guido van Rossum6938f061994-08-01 12:22:53 +00001458copy it into a directory along the Python module search path.
1459
1460The first time your extension is loaded, it takes some extra time and
1461a few messages may be printed. This creates a file
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001462\file{spammodule.ld} which is an image that can be loaded quickly into
Guido van Rossum6938f061994-08-01 12:22:53 +00001463the Python interpreter process. When a new Python interpreter is
1464installed, the \code{dl} package detects this and rebuilds
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001465\file{spammodule.ld}. The file \file{spammodule.ld} is placed in the
1466directory where \file{spammodule.o} was found, unless this directory is
Guido van Rossum6938f061994-08-01 12:22:53 +00001467unwritable; in that case it is placed in a temporary
1468directory.\footnote{Check the manual page of the \code{dl} package for
1469details.}
1470
1471If your extension modules uses additional system libraries, you must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001472create a file \file{spammodule.libs} in the same directory as the
1473\file{spammodule.o}. This file should contain one or more lines with
Guido van Rossum6938f061994-08-01 12:22:53 +00001474whitespace-separated options that will be passed to the linker ---
1475normally only \samp{-l} options or absolute pathnames of libraries
1476(\samp{.a} files) should be used.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001477
1478
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001479\subsection{GNU Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001480\label{gnuLinking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001481
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001482Just copy \file{spammodule.o} into a directory along the Python module
Guido van Rossum6938f061994-08-01 12:22:53 +00001483search path.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001484
Guido van Rossum6938f061994-08-01 12:22:53 +00001485If your extension modules uses additional system libraries, you must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001486create a file \file{spammodule.libs} in the same directory as the
1487\file{spammodule.o}. This file should contain one or more lines with
Guido van Rossum6938f061994-08-01 12:22:53 +00001488whitespace-separated absolute pathnames of libraries (\samp{.a}
1489files). No \samp{-l} options can be used.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001490
1491
Fred Drakef3aa0e01998-03-17 06:23:13 +00001492\input{ext.ind}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001493
1494\end{document}