blob: 57223d4e3e0a15838a0a8d5fc70a5a043190c412 [file] [log] [blame]
Fred Drakedca87921998-01-13 16:53:23 +00001\documentclass[twoside,openright]{report}
Fred Drake0fd82681998-01-09 05:39:38 +00002\usepackage{myformat}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00003
Guido van Rossum5049bcb1995-03-13 16:55:23 +00004% XXX PM Modulator
5
Guido van Rossum6938f061994-08-01 12:22:53 +00006\title{Extending and Embedding the Python Interpreter}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00007
Guido van Rossum16cd7f91994-10-06 10:29:26 +00008\input{boilerplate}
Guido van Rossum83eb9621993-11-23 16:28:45 +00009
Guido van Rossum7a2dba21993-11-05 14:45:11 +000010% Tell \index to actually write the .idx file
11\makeindex
12
13\begin{document}
14
Guido van Rossum7a2dba21993-11-05 14:45:11 +000015\maketitle
16
Guido van Rossum16cd7f91994-10-06 10:29:26 +000017\input{copyright}
18
Guido van Rossum7a2dba21993-11-05 14:45:11 +000019\begin{abstract}
20
21\noindent
Guido van Rossumb92112d1995-03-20 14:24:09 +000022Python is an interpreted, object-oriented programming language. This
Fred Drake0fd82681998-01-09 05:39:38 +000023document describes how to write modules in \C{} or \Cpp{} to extend the
Guido van Rossumb92112d1995-03-20 14:24:09 +000024Python interpreter with new modules. Those modules can define new
25functions but also new object types and their methods. The document
26also describes how to embed the Python interpreter in another
27application, for use as an extension language. Finally, it shows how
28to compile and link extension modules so that they can be loaded
29dynamically (at run time) into the interpreter, if the underlying
30operating system supports this feature.
31
32This document assumes basic knowledge about Python. For an informal
Fred Drake3da06a61998-02-26 18:49:12 +000033introduction to the language, see the Python Tutorial. The \emph{Python
34Reference Manual} gives a more formal definition of the language. The
35\emph{Python Library Reference} documents the existing object types,
Guido van Rossumb92112d1995-03-20 14:24:09 +000036functions and modules (both built-in and written in Python) that give
37the language its wide application range.
Guido van Rossum7a2dba21993-11-05 14:45:11 +000038
Fred Drake0fd82681998-01-09 05:39:38 +000039For a detailed description of the whole Python/\C{} API, see the separate
Fred Drake3da06a61998-02-26 18:49:12 +000040\emph{Python/\C{} API Reference Manual}. \strong{Note:} While that
41manual is still in a state of flux, it is safe to say that it is much
42more up to date than the manual you're reading currently (which has
43been in need for an upgrade for some time now).
Guido van Rossumfdacc581997-10-07 14:40:16 +000044
45
Guido van Rossum7a2dba21993-11-05 14:45:11 +000046\end{abstract}
47
Fred Drake4d4f9e71998-01-13 22:25:02 +000048\tableofcontents
Guido van Rossum7a2dba21993-11-05 14:45:11 +000049
Guido van Rossumdb65a6c1993-11-05 17:11:16 +000050
Fred Drake0fd82681998-01-09 05:39:38 +000051\chapter{Extending Python with \C{} or \Cpp{} code}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000052
Guido van Rossum6f0132f1993-11-19 13:13:22 +000053
Fred Drake3da06a61998-02-26 18:49:12 +000054%\section{Introduction}
55\label{intro}
Guido van Rossum6f0132f1993-11-19 13:13:22 +000056
Guido van Rossumb92112d1995-03-20 14:24:09 +000057It is quite easy to add new built-in modules to Python, if you know
Fred Drake0fd82681998-01-09 05:39:38 +000058how to program in \C{}. Such \dfn{extension modules} can do two things
Guido van Rossumb92112d1995-03-20 14:24:09 +000059that can't be done directly in Python: they can implement new built-in
Fred Drake0fd82681998-01-09 05:39:38 +000060object types, and they can call \C{} library functions and system calls.
Guido van Rossum6938f061994-08-01 12:22:53 +000061
Guido van Rossum5049bcb1995-03-13 16:55:23 +000062To support extensions, the Python API (Application Programmers
Guido van Rossumb92112d1995-03-20 14:24:09 +000063Interface) defines a set of functions, macros and variables that
64provide access to most aspects of the Python run-time system. The
Fred Drake0fd82681998-01-09 05:39:38 +000065Python API is incorporated in a \C{} source file by including the header
Guido van Rossumb92112d1995-03-20 14:24:09 +000066\code{"Python.h"}.
Guido van Rossum6938f061994-08-01 12:22:53 +000067
Guido van Rossumb92112d1995-03-20 14:24:09 +000068The compilation of an extension module depends on its intended use as
69well as on your system setup; details are given in a later section.
Guido van Rossum6938f061994-08-01 12:22:53 +000070
Guido van Rossum7a2dba21993-11-05 14:45:11 +000071
Guido van Rossum5049bcb1995-03-13 16:55:23 +000072\section{A Simple Example}
Fred Drake3da06a61998-02-26 18:49:12 +000073\label{simpleExample}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000074
Guido van Rossumb92112d1995-03-20 14:24:09 +000075Let's create an extension module called \samp{spam} (the favorite food
76of Monty Python fans...) and let's say we want to create a Python
Fred Draked7bb3031998-03-03 17:52:07 +000077interface to the \C{} library function \cfunction{system()}.\footnote{An
Guido van Rossumb92112d1995-03-20 14:24:09 +000078interface for this function already exists in the standard module
Fred Draked7bb3031998-03-03 17:52:07 +000079\module{os} --- it was chosen as a simple and straightfoward example.}
Guido van Rossumb92112d1995-03-20 14:24:09 +000080This function takes a null-terminated character string as argument and
81returns an integer. We want this function to be callable from Python
82as follows:
83
Fred Drake1e11a5c1998-02-13 07:11:32 +000084\begin{verbatim}
85>>> import spam
86>>> status = spam.system("ls -l")
87\end{verbatim}
88
Guido van Rossumb92112d1995-03-20 14:24:09 +000089Begin by creating a file \samp{spammodule.c}. (In general, if a
Fred Drake0fd82681998-01-09 05:39:38 +000090module is called \samp{spam}, the \C{} file containing its implementation
Guido van Rossumb92112d1995-03-20 14:24:09 +000091is called \file{spammodule.c}; if the module name is very long, like
92\samp{spammify}, the module name can be just \file{spammify.c}.)
93
94The first line of our file can be:
Guido van Rossum7a2dba21993-11-05 14:45:11 +000095
Fred Drake1e11a5c1998-02-13 07:11:32 +000096\begin{verbatim}
97#include "Python.h"
98\end{verbatim}
99
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000100which pulls in the Python API (you can add a comment describing the
101purpose of the module and a copyright notice if you like).
102
Guido van Rossumb92112d1995-03-20 14:24:09 +0000103All user-visible symbols defined by \code{"Python.h"} have a prefix of
104\samp{Py} or \samp{PY}, except those defined in standard header files.
105For convenience, and since they are used extensively by the Python
106interpreter, \code{"Python.h"} includes a few standard header files:
107\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
108\code{<stdlib.h>}. If the latter header file does not exist on your
Fred Draked7bb3031998-03-03 17:52:07 +0000109system, it declares the functions \cfunction{malloc()},
110\cfunction{free()} and \cfunction{realloc()} directly.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000111
Fred Drake0fd82681998-01-09 05:39:38 +0000112The next thing we add to our module file is the \C{} function that will
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000113be called when the Python expression \samp{spam.system(\var{string})}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000114is evaluated (we'll see shortly how it ends up being called):
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000115
Fred Drake1e11a5c1998-02-13 07:11:32 +0000116\begin{verbatim}
117static PyObject *
118spam_system(self, args)
119 PyObject *self;
120 PyObject *args;
121{
122 char *command;
123 int sts;
124 if (!PyArg_ParseTuple(args, "s", &command))
125 return NULL;
126 sts = system(command);
127 return Py_BuildValue("i", sts);
128}
129\end{verbatim}
130
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000131There is a straightforward translation from the argument list in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000132Python (e.g.\ the single expression \code{"ls -l"}) to the arguments
Fred Drake0fd82681998-01-09 05:39:38 +0000133passed to the \C{} function. The \C{} function always has two arguments,
Guido van Rossumb92112d1995-03-20 14:24:09 +0000134conventionally named \var{self} and \var{args}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000135
Fred Drake0fd82681998-01-09 05:39:38 +0000136The \var{self} argument is only used when the \C{} function implements a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000137builtin method. This will be discussed later. In the example,
Fred Drake0fd82681998-01-09 05:39:38 +0000138\var{self} will always be a \NULL{} pointer, since we are defining
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000139a function, not a method. (This is done so that the interpreter
Fred Drake0fd82681998-01-09 05:39:38 +0000140doesn't have to understand two different types of \C{} functions.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000141
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000142The \var{args} argument will be a pointer to a Python tuple object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000143containing the arguments. Each item of the tuple corresponds to an
144argument in the call's argument list. The arguments are Python
Fred Drake1aedbd81998-02-16 14:47:27 +0000145objects --- in order to do anything with them in our \C{} function we have
Fred Drake3da06a61998-02-26 18:49:12 +0000146to convert them to \C{} values. The function \cfunction{PyArg_ParseTuple()}
Fred Drake0fd82681998-01-09 05:39:38 +0000147in the Python API checks the argument types and converts them to \C{}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000148values. It uses a template string to determine the required types of
Fred Drake0fd82681998-01-09 05:39:38 +0000149the arguments as well as the types of the \C{} variables into which to
Guido van Rossumb92112d1995-03-20 14:24:09 +0000150store the converted values. More about this later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000151
Fred Drake3da06a61998-02-26 18:49:12 +0000152\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
Guido van Rossumb92112d1995-03-20 14:24:09 +0000153the right type and its components have been stored in the variables
154whose addresses are passed. It returns false (zero) if an invalid
155argument list was passed. In the latter case it also raises an
156appropriate exception by so the calling function can return
Fred Drake0fd82681998-01-09 05:39:38 +0000157\NULL{} immediately (as we saw in the example).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000158
159
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000160\section{Intermezzo: Errors and Exceptions}
Fred Drake3da06a61998-02-26 18:49:12 +0000161\label{errors}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000162
163An important convention throughout the Python interpreter is the
164following: when a function fails, it should set an exception condition
Fred Drake0fd82681998-01-09 05:39:38 +0000165and return an error value (usually a \NULL{} pointer). Exceptions
Guido van Rossumb92112d1995-03-20 14:24:09 +0000166are stored in a static global variable inside the interpreter; if this
Fred Drake0fd82681998-01-09 05:39:38 +0000167variable is \NULL{} no exception has occurred. A second global
Guido van Rossumb92112d1995-03-20 14:24:09 +0000168variable stores the ``associated value'' of the exception (the second
Fred Draked7bb3031998-03-03 17:52:07 +0000169argument to \keyword{raise}). A third variable contains the stack
Guido van Rossumb92112d1995-03-20 14:24:09 +0000170traceback in case the error originated in Python code. These three
Fred Drake0fd82681998-01-09 05:39:38 +0000171variables are the \C{} equivalents of the Python variables
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000172\code{sys.exc_type}, \code{sys.exc_value} and \code{sys.exc_traceback}
Fred Draked7bb3031998-03-03 17:52:07 +0000173(see the section on module \module{sys} in the \emph{Python Library
174Reference}). It is important to know about them to understand how
175errors are passed around.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000176
Guido van Rossumb92112d1995-03-20 14:24:09 +0000177The Python API defines a number of functions to set various types of
178exceptions.
179
Fred Draked7bb3031998-03-03 17:52:07 +0000180The most common one is \cfunction{PyErr_SetString()}. Its arguments
181are an exception object and a \C{} string. The exception object is
182usually a predefined object like \cdata{PyExc_ZeroDivisionError}. The
183\C{} string indicates the cause of the error and is converted to a
184Python string object and stored as the ``associated value'' of the
185exception.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000186
Fred Draked7bb3031998-03-03 17:52:07 +0000187Another useful function is \cfunction{PyErr_SetFromErrno()}, which only
Guido van Rossumb92112d1995-03-20 14:24:09 +0000188takes an exception argument and constructs the associated value by
Fred Draked7bb3031998-03-03 17:52:07 +0000189inspection of the (\UNIX{}) global variable \cdata{errno}. The most
190general function is \cfunction{PyErr_SetObject()}, which takes two object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000191arguments, the exception and its associated value. You don't need to
Fred Draked7bb3031998-03-03 17:52:07 +0000192\cfunction{Py_INCREF()} the objects passed to any of these functions.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000193
194You can test non-destructively whether an exception has been set with
Fred Draked7bb3031998-03-03 17:52:07 +0000195\cfunction{PyErr_Occurred()}. This returns the current exception object,
Fred Drake0fd82681998-01-09 05:39:38 +0000196or \NULL{} if no exception has occurred. You normally don't need
Fred Draked7bb3031998-03-03 17:52:07 +0000197to call \cfunction{PyErr_Occurred()} to see whether an error occurred in a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000198function call, since you should be able to tell from the return value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000199
Guido van Rossumd16ddb61996-12-13 02:38:17 +0000200When a function \var{f} that calls another function \var{g} detects
Guido van Rossumb92112d1995-03-20 14:24:09 +0000201that the latter fails, \var{f} should itself return an error value
Fred Drake0fd82681998-01-09 05:39:38 +0000202(e.g. \NULL{} or \code{-1}). It should \emph{not} call one of the
Fred Draked7bb3031998-03-03 17:52:07 +0000203\cfunction{PyErr_*()} functions --- one has already been called by \var{g}.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000204\var{f}'s caller is then supposed to also return an error indication
Fred Draked7bb3031998-03-03 17:52:07 +0000205to \emph{its} caller, again \emph{without} calling \cfunction{PyErr_*()},
Guido van Rossumb92112d1995-03-20 14:24:09 +0000206and so on --- the most detailed cause of the error was already
207reported by the function that first detected it. Once the error
208reaches the Python interpreter's main loop, this aborts the currently
209executing Python code and tries to find an exception handler specified
210by the Python programmer.
Guido van Rossum6938f061994-08-01 12:22:53 +0000211
212(There are situations where a module can actually give a more detailed
Fred Draked7bb3031998-03-03 17:52:07 +0000213error message by calling another \cfunction{PyErr_*()} function, and in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000214such cases it is fine to do so. As a general rule, however, this is
215not necessary, and can cause information about the cause of the error
216to be lost: most operations can fail for a variety of reasons.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000217
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000218To ignore an exception set by a function call that failed, the exception
Fred Draked7bb3031998-03-03 17:52:07 +0000219condition must be cleared explicitly by calling \cfunction{PyErr_Clear()}.
220The only time \C{} code should call \cfunction{PyErr_Clear()} is if it doesn't
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000221want to pass the error on to the interpreter but wants to handle it
222completely by itself (e.g. by trying something else or pretending
223nothing happened).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000224
Fred Draked7bb3031998-03-03 17:52:07 +0000225Note that a failing \cfunction{malloc()} call must be turned into an
226exception --- the direct caller of \cfunction{malloc()} (or
227\cfunction{realloc()}) must call \cfunction{PyErr_NoMemory()} and
228return a failure indicator itself. All the object-creating functions
229(\cfunction{PyInt_FromLong()} etc.) already do this, so only if you
230call \cfunction{malloc()} directly this note is of importance.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000231
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000232Also note that, with the important exception of
Fred Drake3da06a61998-02-26 18:49:12 +0000233\cfunction{PyArg_ParseTuple()} and friends, functions that return an
Guido van Rossumb92112d1995-03-20 14:24:09 +0000234integer status usually return a positive value or zero for success and
235\code{-1} for failure, like \UNIX{} system calls.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000236
Fred Draked7bb3031998-03-03 17:52:07 +0000237Finally, be careful to clean up garbage (by making
238\cfunction{Py_XDECREF()} or \cfunction{Py_DECREF()} calls for objects
239you have already created) when you return an error indicator!
Guido van Rossum6938f061994-08-01 12:22:53 +0000240
241The choice of which exception to raise is entirely yours. There are
Fred Drake0fd82681998-01-09 05:39:38 +0000242predeclared \C{} objects corresponding to all built-in Python exceptions,
Fred Draked7bb3031998-03-03 17:52:07 +0000243e.g. \cdata{PyExc_ZeroDevisionError} which you can use directly. Of
Guido van Rossumb92112d1995-03-20 14:24:09 +0000244course, you should choose exceptions wisely --- don't use
Fred Draked7bb3031998-03-03 17:52:07 +0000245\cdata{PyExc_TypeError} to mean that a file couldn't be opened (that
246should probably be \cdata{PyExc_IOError}). If something's wrong with
Fred Drake3da06a61998-02-26 18:49:12 +0000247the argument list, the \cfunction{PyArg_ParseTuple()} function usually
Fred Draked7bb3031998-03-03 17:52:07 +0000248raises \cdata{PyExc_TypeError}. If you have an argument whose value
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000249which must be in a particular range or must satisfy other conditions,
Fred Draked7bb3031998-03-03 17:52:07 +0000250\cdata{PyExc_ValueError} is appropriate.
Guido van Rossum6938f061994-08-01 12:22:53 +0000251
252You can also define a new exception that is unique to your module.
253For this, you usually declare a static object variable at the
254beginning of your file, e.g.
255
Fred Drake1e11a5c1998-02-13 07:11:32 +0000256\begin{verbatim}
257static PyObject *SpamError;
258\end{verbatim}
259
Guido van Rossum6938f061994-08-01 12:22:53 +0000260and initialize it in your module's initialization function
Fred Draked7bb3031998-03-03 17:52:07 +0000261(\cfunction{initspam()}) with an exception object, e.g. (leaving out
262the error checking for now):
Guido van Rossum6938f061994-08-01 12:22:53 +0000263
Fred Drake1e11a5c1998-02-13 07:11:32 +0000264\begin{verbatim}
265void
266initspam()
267{
268 PyObject *m, *d;
269 m = Py_InitModule("spam", SpamMethods);
270 d = PyModule_GetDict(m);
Fred Draked7bb3031998-03-03 17:52:07 +0000271 SpamError = PyErr_NewException("spam.error", NULL, NULL);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000272 PyDict_SetItemString(d, "error", SpamError);
273}
274\end{verbatim}
275
Guido van Rossumb92112d1995-03-20 14:24:09 +0000276Note that the Python name for the exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000277\exception{spam.error}. The \cfunction{PyErr_NewException()} function
278may create either a string or class, depending on whether the
279\samp{-X} flag was passed to the interpreter. If \samp{-X} was used,
280\cdata{SpamError} will be a string object, otherwise it will be a
281class object with the base class being \exception{Exception},
282described in the \emph{Python Library Reference} under ``Built-in
283Exceptions.''
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000284
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000285
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000286\section{Back to the Example}
Fred Drake3da06a61998-02-26 18:49:12 +0000287\label{backToExample}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000288
289Going back to our example function, you should now be able to
290understand this statement:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000291
Fred Drake1e11a5c1998-02-13 07:11:32 +0000292\begin{verbatim}
293 if (!PyArg_ParseTuple(args, "s", &command))
294 return NULL;
295\end{verbatim}
296
Fred Drake0fd82681998-01-09 05:39:38 +0000297It returns \NULL{} (the error indicator for functions returning
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000298object pointers) if an error is detected in the argument list, relying
Fred Drake3da06a61998-02-26 18:49:12 +0000299on the exception set by \cfunction{PyArg_ParseTuple()}. Otherwise the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000300string value of the argument has been copied to the local variable
Fred Draked7bb3031998-03-03 17:52:07 +0000301\cdata{command}. This is a pointer assignment and you are not supposed
Fred Drake0fd82681998-01-09 05:39:38 +0000302to modify the string to which it points (so in Standard \C{}, the variable
Fred Draked7bb3031998-03-03 17:52:07 +0000303\cdata{command} should properly be declared as \samp{const char
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000304*command}).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000305
Fred Draked7bb3031998-03-03 17:52:07 +0000306The next statement is a call to the \UNIX{} function
307\cfunction{system()}, passing it the string we just got from
308\cfunction{PyArg_ParseTuple()}:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000309
Fred Drake1e11a5c1998-02-13 07:11:32 +0000310\begin{verbatim}
311 sts = system(command);
312\end{verbatim}
313
Fred Draked7bb3031998-03-03 17:52:07 +0000314Our \function{spam.system()} function must return the value of
315\cdata{sts} as a Python object. This is done using the function
316\cfunction{Py_BuildValue()}, which is something like the inverse of
317\cfunction{PyArg_ParseTuple()}: it takes a format string and an
318arbitrary number of \C{} values, and returns a new Python object.
319More info on \cfunction{Py_BuildValue()} is given later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000320
Fred Drake1e11a5c1998-02-13 07:11:32 +0000321\begin{verbatim}
322 return Py_BuildValue("i", sts);
323\end{verbatim}
324
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000325In this case, it will return an integer object. (Yes, even integers
326are objects on the heap in Python!)
Guido van Rossum6938f061994-08-01 12:22:53 +0000327
Fred Drake0fd82681998-01-09 05:39:38 +0000328If you have a \C{} function that returns no useful argument (a function
Fred Draked7bb3031998-03-03 17:52:07 +0000329returning \ctype{void}), the corresponding Python function must return
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000330\code{None}. You need this idiom to do so:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000331
Fred Drake1e11a5c1998-02-13 07:11:32 +0000332\begin{verbatim}
333 Py_INCREF(Py_None);
334 return Py_None;
335\end{verbatim}
336
Fred Draked7bb3031998-03-03 17:52:07 +0000337\cdata{Py_None} is the \C{} name for the special Python object
Fred Drake0fd82681998-01-09 05:39:38 +0000338\code{None}. It is a genuine Python object (not a \NULL{}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000339pointer, which means ``error'' in most contexts, as we have seen).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000340
341
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000342\section{The Module's Method Table and Initialization Function}
Fred Drake3da06a61998-02-26 18:49:12 +0000343\label{methodTable}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000344
Fred Draked7bb3031998-03-03 17:52:07 +0000345I promised to show how \cfunction{spam_system()} is called from Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000346programs. First, we need to list its name and address in a ``method
347table'':
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000348
Fred Drake1e11a5c1998-02-13 07:11:32 +0000349\begin{verbatim}
350static PyMethodDef SpamMethods[] = {
351 ...
352 {"system", spam_system, METH_VARARGS},
353 ...
354 {NULL, NULL} /* Sentinel */
355};
356\end{verbatim}
357
Fred Drake0fd82681998-01-09 05:39:38 +0000358Note the third entry (\samp{METH_VARARGS}). This is a flag telling
359the interpreter the calling convention to be used for the \C{}
360function. It should normally always be \samp{METH_VARARGS} or
361\samp{METH_VARARGS | METH_KEYWORDS}; a value of \samp{0} means that an
Fred Drake3da06a61998-02-26 18:49:12 +0000362obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000363
Fred Drakeb6e50321998-02-04 20:26:31 +0000364When using only \samp{METH_VARARGS}, the function should expect
365the Python-level parameters to be passed in as a tuple acceptable for
366parsing via \cfunction{PyArg_ParseTuple()}; more information on this
367function is provided below.
368
Fred Draked7bb3031998-03-03 17:52:07 +0000369The \constant{METH_KEYWORDS} bit may be set in the third field if keyword
Fred Drake0fd82681998-01-09 05:39:38 +0000370arguments should be passed to the function. In this case, the \C{}
371function should accept a third \samp{PyObject *} parameter which will
Fred Drake3da06a61998-02-26 18:49:12 +0000372be a dictionary of keywords. Use \cfunction{PyArg_ParseTupleAndKeywords()}
Fred Drake0fd82681998-01-09 05:39:38 +0000373to parse the arguemts to such a function.
374
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000375The method table must be passed to the interpreter in the module's
376initialization function (which should be the only non-\code{static}
377item defined in the module file):
378
Fred Drake1e11a5c1998-02-13 07:11:32 +0000379\begin{verbatim}
380void
381initspam()
382{
383 (void) Py_InitModule("spam", SpamMethods);
384}
385\end{verbatim}
386
Fred Draked7bb3031998-03-03 17:52:07 +0000387When the Python program imports module \module{spam} for the first
388time, \cfunction{initspam()} is called. It calls
389\cfunction{Py_InitModule()}, which creates a ``module object'' (which
390is inserted in the dictionary \code{sys.modules} under the key
391\code{"spam"}), and inserts built-in function objects into the newly
392created module based upon the table (an array of \ctype{PyMethodDef}
393structures) that was passed as its second argument.
394\cfunction{Py_InitModule()} returns a pointer to the module object
395that it creates (which is unused here). It aborts with a fatal error
396if the module could not be initialized satisfactorily, so the caller
397doesn't need to check for errors.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000398
399
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000400\section{Compilation and Linkage}
Fred Drake3da06a61998-02-26 18:49:12 +0000401\label{compilation}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000402
Guido van Rossumb92112d1995-03-20 14:24:09 +0000403There are two more things to do before you can use your new extension:
404compiling and linking it with the Python system. If you use dynamic
405loading, the details depend on the style of dynamic loading your
406system uses; see the chapter on Dynamic Loading for more info about
407this.
Guido van Rossum6938f061994-08-01 12:22:53 +0000408
409If you can't use dynamic loading, or if you want to make your module a
410permanent part of the Python interpreter, you will have to change the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000411configuration setup and rebuild the interpreter. Luckily, this is
412very simple: just place your file (\file{spammodule.c} for example) in
413the \file{Modules} directory, add a line to the file
414\file{Modules/Setup} describing your file:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000415
Fred Drake1e11a5c1998-02-13 07:11:32 +0000416\begin{verbatim}
417spam spammodule.o
418\end{verbatim}
419
Fred Draked7bb3031998-03-03 17:52:07 +0000420and rebuild the interpreter by running \program{make} in the toplevel
421directory. You can also run \program{make} in the \file{Modules}
Guido van Rossum6938f061994-08-01 12:22:53 +0000422subdirectory, but then you must first rebuilt the \file{Makefile}
Fred Draked7bb3031998-03-03 17:52:07 +0000423there by running `\program{make} Makefile'. (This is necessary each
424time you change the \file{Setup} file.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000425
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000426If your module requires additional libraries to link with, these can
427be listed on the line in the \file{Setup} file as well, for instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000428
Fred Drake1e11a5c1998-02-13 07:11:32 +0000429\begin{verbatim}
430spam spammodule.o -lX11
431\end{verbatim}
432
Fred Drake0fd82681998-01-09 05:39:38 +0000433\section{Calling Python Functions From \C{}}
Fred Drake3da06a61998-02-26 18:49:12 +0000434\label{callingPython}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000435
Fred Drake0fd82681998-01-09 05:39:38 +0000436So far we have concentrated on making \C{} functions callable from
437Python. The reverse is also useful: calling Python functions from \C{}.
Guido van Rossum6938f061994-08-01 12:22:53 +0000438This is especially the case for libraries that support so-called
Fred Drake0fd82681998-01-09 05:39:38 +0000439``callback'' functions. If a \C{} interface makes use of callbacks, the
Guido van Rossum6938f061994-08-01 12:22:53 +0000440equivalent Python often needs to provide a callback mechanism to the
441Python programmer; the implementation will require calling the Python
Fred Drake0fd82681998-01-09 05:39:38 +0000442callback functions from a \C{} callback. Other uses are also imaginable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000443
444Fortunately, the Python interpreter is easily called recursively, and
Guido van Rossum6938f061994-08-01 12:22:53 +0000445there is a standard interface to call a Python function. (I won't
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000446dwell on how to call the Python parser with a particular string as
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000447input --- if you're interested, have a look at the implementation of
Guido van Rossum6938f061994-08-01 12:22:53 +0000448the \samp{-c} command line option in \file{Python/pythonmain.c}.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000449
450Calling a Python function is easy. First, the Python program must
451somehow pass you the Python function object. You should provide a
452function (or some other interface) to do this. When this function is
453called, save a pointer to the Python function object (be careful to
Fred Draked7bb3031998-03-03 17:52:07 +0000454\cfunction{Py_INCREF()} it!) in a global variable --- or whereever you
455see fit. For example, the following function might be part of a module
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000456definition:
457
Fred Drake1e11a5c1998-02-13 07:11:32 +0000458\begin{verbatim}
459static PyObject *my_callback = NULL;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000460
Fred Drake1e11a5c1998-02-13 07:11:32 +0000461static PyObject *
462my_set_callback(dummy, arg)
463 PyObject *dummy, *arg;
464{
465 Py_XDECREF(my_callback); /* Dispose of previous callback */
466 Py_XINCREF(arg); /* Add a reference to new callback */
467 my_callback = arg; /* Remember new callback */
468 /* Boilerplate to return "None" */
469 Py_INCREF(Py_None);
470 return Py_None;
471}
472\end{verbatim}
473
Fred Draked7bb3031998-03-03 17:52:07 +0000474The macros \cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()}
475increment/decrement the reference count of an object and are safe in
476the presence of \NULL{} pointers. More info on them in the section on
477Reference Counts below.
Guido van Rossum6938f061994-08-01 12:22:53 +0000478
Fred Drake0fd82681998-01-09 05:39:38 +0000479Later, when it is time to call the function, you call the \C{} function
Fred Draked7bb3031998-03-03 17:52:07 +0000480\cfunction{PyEval_CallObject()}. This function has two arguments, both
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000481pointers to arbitrary Python objects: the Python function, and the
482argument list. The argument list must always be a tuple object, whose
483length is the number of arguments. To call the Python function with
484no arguments, pass an empty tuple; to call it with one argument, pass
Fred Draked7bb3031998-03-03 17:52:07 +0000485a singleton tuple. \cfunction{Py_BuildValue()} returns a tuple when its
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000486format string consists of zero or more format codes between
487parentheses. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000488
Fred Drake1e11a5c1998-02-13 07:11:32 +0000489\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000490 int arg;
491 PyObject *arglist;
492 PyObject *result;
493 ...
494 arg = 123;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000495 ...
496 /* Time to call the callback */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000497 arglist = Py_BuildValue("(i)", arg);
498 result = PyEval_CallObject(my_callback, arglist);
499 Py_DECREF(arglist);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000500\end{verbatim}
501
Fred Draked7bb3031998-03-03 17:52:07 +0000502\cfunction{PyEval_CallObject()} returns a Python object pointer: this is
503the return value of the Python function. \cfunction{PyEval_CallObject()} is
Guido van Rossumb92112d1995-03-20 14:24:09 +0000504``reference-count-neutral'' with respect to its arguments. In the
Guido van Rossum6938f061994-08-01 12:22:53 +0000505example a new tuple was created to serve as the argument list, which
Fred Draked7bb3031998-03-03 17:52:07 +0000506is \cfunction{Py_DECREF()}-ed immediately after the call.
Guido van Rossum6938f061994-08-01 12:22:53 +0000507
Fred Draked7bb3031998-03-03 17:52:07 +0000508The return value of \cfunction{PyEval_CallObject()} is ``new'': either it
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000509is a brand new object, or it is an existing object whose reference
510count has been incremented. So, unless you want to save it in a
Fred Draked7bb3031998-03-03 17:52:07 +0000511global variable, you should somehow \cfunction{Py_DECREF()} the result,
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000512even (especially!) if you are not interested in its value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000513
514Before you do this, however, it is important to check that the return
Fred Draked7bb3031998-03-03 17:52:07 +0000515value isn't \NULL{}. If it is, the Python function terminated by
516raising an exception. If the \C{} code that called
517\cfunction{PyEval_CallObject()} is called from Python, it should now
518return an error indication to its Python caller, so the interpreter
519can print a stack trace, or the calling Python code can handle the
520exception. If this is not possible or desirable, the exception should
521be cleared by calling \cfunction{PyErr_Clear()}. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000522
Fred Drake1e11a5c1998-02-13 07:11:32 +0000523\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000524 if (result == NULL)
525 return NULL; /* Pass error back */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000526 ...use result...
527 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000528\end{verbatim}
529
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000530Depending on the desired interface to the Python callback function,
Fred Draked7bb3031998-03-03 17:52:07 +0000531you may also have to provide an argument list to
532\cfunction{PyEval_CallObject()}. In some cases the argument list is
533also provided by the Python program, through the same interface that
534specified the callback function. It can then be saved and used in the
535same manner as the function object. In other cases, you may have to
536construct a new tuple to pass as the argument list. The simplest way
537to do this is to call \cfunction{Py_BuildValue()}. For example, if
538you want to pass an integral event code, you might use the following
539code:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000540
Fred Drake1e11a5c1998-02-13 07:11:32 +0000541\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000542 PyObject *arglist;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000543 ...
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000544 arglist = Py_BuildValue("(l)", eventcode);
545 result = PyEval_CallObject(my_callback, arglist);
546 Py_DECREF(arglist);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000547 if (result == NULL)
548 return NULL; /* Pass error back */
549 /* Here maybe use the result */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000550 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000551\end{verbatim}
552
Fred Draked7bb3031998-03-03 17:52:07 +0000553Note the placement of \samp{Py_DECREF(arglist)} immediately after the
554call, before the error check! Also note that strictly spoken this
555code is not complete: \cfunction{Py_BuildValue()} may run out of
556memory, and this should be checked.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000557
558
Fred Drake53396f61998-01-19 02:48:37 +0000559\section{Format Strings for \sectcode{PyArg_ParseTuple()}}
Fred Drake3da06a61998-02-26 18:49:12 +0000560\label{parseTuple}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000561
Fred Drake3da06a61998-02-26 18:49:12 +0000562The \cfunction{PyArg_ParseTuple()} function is declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000563
Fred Drake1e11a5c1998-02-13 07:11:32 +0000564\begin{verbatim}
565int PyArg_ParseTuple(PyObject *arg, char *format, ...);
566\end{verbatim}
567
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000568The \var{arg} argument must be a tuple object containing an argument
Fred Drake0fd82681998-01-09 05:39:38 +0000569list passed from Python to a \C{} function. The \var{format} argument
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000570must be a format string, whose syntax is explained below. The
571remaining arguments must be addresses of variables whose type is
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000572determined by the format string. For the conversion to succeed, the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000573\var{arg} object must match the format and the format must be
574exhausted.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000575
Fred Drake3da06a61998-02-26 18:49:12 +0000576Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000577arguments have the required types, it cannot check the validity of the
Fred Drake0fd82681998-01-09 05:39:38 +0000578addresses of \C{} variables passed to the call: if you make mistakes
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000579there, your code will probably crash or at least overwrite random bits
580in memory. So be careful!
581
582A format string consists of zero or more ``format units''. A format
583unit describes one Python object; it is usually a single character or
584a parenthesized sequence of format units. With a few exceptions, a
585format unit that is not a parenthesized sequence normally corresponds
Fred Drake3da06a61998-02-26 18:49:12 +0000586to a single address argument to \cfunction{PyArg_ParseTuple()}. In the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000587following description, the quoted form is the format unit; the entry
588in (round) parentheses is the Python object type that matches the
Fred Drake0fd82681998-01-09 05:39:38 +0000589format unit; and the entry in [square] brackets is the type of the \C{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000590variable(s) whose address should be passed. (Use the \samp{\&}
591operator to pass a variable's address.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000592
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000593\begin{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000594
Fred Drake628f5981998-02-25 15:48:16 +0000595\item[\samp{s} (string) [char *{]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000596Convert a Python string to a \C{} pointer to a character string. You
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000597must not provide storage for the string itself; a pointer to an
598existing string is stored into the character pointer variable whose
Fred Drake0fd82681998-01-09 05:39:38 +0000599address you pass. The \C{} string is null-terminated. The Python string
Fred Drake3da06a61998-02-26 18:49:12 +0000600must not contain embedded null bytes; if it does, a \exception{TypeError}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000601exception is raised.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000602
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000603\item[\samp{s\#} (string) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000604This variant on \samp{s} stores into two \C{} variables, the first one
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000605a pointer to a character string, the second one its length. In this
606case the Python string may contain embedded null bytes.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000607
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000608\item[\samp{z} (string or \code{None}) {[char *]}]
609Like \samp{s}, but the Python object may also be \code{None}, in which
Fred Drake0fd82681998-01-09 05:39:38 +0000610case the \C{} pointer is set to \NULL{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000611
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000612\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000613This is to \samp{s\#} as \samp{z} is to \samp{s}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000614
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000615\item[\samp{b} (integer) {[char]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000616Convert a Python integer to a tiny int, stored in a \C{} \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000617
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000618\item[\samp{h} (integer) {[short int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000619Convert a Python integer to a \C{} \ctype{short int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000620
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000621\item[\samp{i} (integer) {[int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000622Convert a Python integer to a plain \C{} \ctype{int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000623
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000624\item[\samp{l} (integer) {[long int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000625Convert a Python integer to a \C{} \ctype{long int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000626
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000627\item[\samp{c} (string of length 1) {[char]}]
628Convert a Python character, represented as a string of length 1, to a
Fred Draked7bb3031998-03-03 17:52:07 +0000629\C{} \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000630
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000631\item[\samp{f} (float) {[float]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000632Convert a Python floating point number to a \C{} \ctype{float}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000633
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000634\item[\samp{d} (float) {[double]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000635Convert a Python floating point number to a \C{} \ctype{double}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000636
Fred Drakeb6e50321998-02-04 20:26:31 +0000637\item[\samp{D} (complex) {[Py_complex]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000638Convert a Python complex number to a \C{} \ctype{Py_complex} structure.
Fred Drakeb6e50321998-02-04 20:26:31 +0000639
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000640\item[\samp{O} (object) {[PyObject *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000641Store a Python object (without any conversion) in a \C{} object pointer.
642The \C{} program thus receives the actual object that was passed. The
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000643object's reference count is not increased. The pointer stored is not
Fred Drake0fd82681998-01-09 05:39:38 +0000644\NULL{}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000645
Fred Draked7bb3031998-03-03 17:52:07 +0000646\item[\samp{O!} (object) {[\var{typeobject}, PyObject *{]}}]
Fred Drake0fd82681998-01-09 05:39:38 +0000647Store a Python object in a \C{} object pointer. This is similar to
648\samp{O}, but takes two \C{} arguments: the first is the address of a
649Python type object, the second is the address of the \C{} variable (of
Fred Draked7bb3031998-03-03 17:52:07 +0000650type \ctype{PyObject *}) into which the object pointer is stored.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000651If the Python object does not have the required type, a
Fred Draked7bb3031998-03-03 17:52:07 +0000652\exception{TypeError} exception is raised.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000653
Fred Draked7bb3031998-03-03 17:52:07 +0000654\item[\samp{O\&} (object) {[\var{converter}, \var{anything}{]}}]
Fred Drake0fd82681998-01-09 05:39:38 +0000655Convert a Python object to a \C{} variable through a \var{converter}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000656function. This takes two arguments: the first is a function, the
Fred Drake0fd82681998-01-09 05:39:38 +0000657second is the address of a \C{} variable (of arbitrary type), converted
Fred Draked7bb3031998-03-03 17:52:07 +0000658to \ctype{void *}. The \var{converter} function in turn is called as
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000659follows:
660
661\code{\var{status} = \var{converter}(\var{object}, \var{address});}
662
663where \var{object} is the Python object to be converted and
Fred Draked7bb3031998-03-03 17:52:07 +0000664\var{address} is the \ctype{void *} argument that was passed to
665\cfunction{PyArg_ConvertTuple()}. The returned \var{status} should be
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000666\code{1} for a successful conversion and \code{0} if the conversion
667has failed. When the conversion fails, the \var{converter} function
668should raise an exception.
669
670\item[\samp{S} (string) {[PyStringObject *]}]
Guido van Rossum2474d681998-02-26 17:07:11 +0000671Like \samp{O} but requires that the Python object is a string object.
Fred Draked7bb3031998-03-03 17:52:07 +0000672Raises a \exception{TypeError} exception if the object is not a string
673object. The \C{} variable may also be declared as \ctype{PyObject *}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000674
Fred Draked7bb3031998-03-03 17:52:07 +0000675\item[\samp{(\var{items})} (tuple) {[\var{matching-items}{]}}]
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000676The object must be a Python tuple whose length is the number of format
Fred Drake0fd82681998-01-09 05:39:38 +0000677units in \var{items}. The \C{} arguments must correspond to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000678individual format units in \var{items}. Format units for tuples may
679be nested.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000680
681\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000682
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000683It is possible to pass Python long integers where integers are
Fred Drake1aedbd81998-02-16 14:47:27 +0000684requested; however no proper range checking is done --- the most
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000685significant bits are silently truncated when the receiving field is
686too small to receive the value (actually, the semantics are inherited
Fred Drake0fd82681998-01-09 05:39:38 +0000687from downcasts in \C{} --- your milage may vary).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000688
689A few other characters have a meaning in a format string. These may
690not occur inside nested parentheses. They are:
691
692\begin{description}
693
694\item[\samp{|}]
695Indicates that the remaining arguments in the Python argument list are
Fred Drake0fd82681998-01-09 05:39:38 +0000696optional. The \C{} variables corresponding to optional arguments should
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000697be initialized to their default value --- when an optional argument is
Fred Draked7bb3031998-03-03 17:52:07 +0000698not specified, \cfuntion{PyArg_ParseTuple()} does not touch the contents
Fred Drake0fd82681998-01-09 05:39:38 +0000699of the corresponding \C{} variable(s).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000700
701\item[\samp{:}]
702The list of format units ends here; the string after the colon is used
703as the function name in error messages (the ``associated value'' of
Fred Draked7bb3031998-03-03 17:52:07 +0000704the exceptions that \cfunction{PyArg_ParseTuple()} raises).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000705
706\item[\samp{;}]
707The list of format units ends here; the string after the colon is used
708as the error message \emph{instead} of the default error message.
709Clearly, \samp{:} and \samp{;} mutually exclude each other.
710
711\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000712
713Some example calls:
714
Fred Drake0fd82681998-01-09 05:39:38 +0000715\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000716 int ok;
717 int i, j;
718 long k, l;
719 char *s;
720 int size;
721
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000722 ok = PyArg_ParseTuple(args, ""); /* No arguments */
Guido van Rossum6938f061994-08-01 12:22:53 +0000723 /* Python call: f() */
Fred Drake0fd82681998-01-09 05:39:38 +0000724
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000725 ok = PyArg_ParseTuple(args, "s", &s); /* A string */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000726 /* Possible Python call: f('whoops!') */
727
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000728 ok = PyArg_ParseTuple(args, "lls", &k, &l, &s); /* Two longs and a string */
Guido van Rossum6938f061994-08-01 12:22:53 +0000729 /* Possible Python call: f(1, 2, 'three') */
Fred Drake0fd82681998-01-09 05:39:38 +0000730
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000731 ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000732 /* A pair of ints and a string, whose size is also returned */
Guido van Rossum7e924dd1997-02-10 16:51:52 +0000733 /* Possible Python call: f((1, 2), 'three') */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000734
735 {
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000736 char *file;
737 char *mode = "r";
738 int bufsize = 0;
739 ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);
740 /* A string, and optionally another string and an integer */
741 /* Possible Python calls:
742 f('spam')
743 f('spam', 'w')
744 f('spam', 'wb', 100000) */
745 }
746
747 {
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000748 int left, top, right, bottom, h, v;
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000749 ok = PyArg_ParseTuple(args, "((ii)(ii))(ii)",
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000750 &left, &top, &right, &bottom, &h, &v);
751 /* A rectangle and a point */
752 /* Possible Python call:
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000753 f(((0, 0), (400, 300)), (10, 10)) */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000754 }
Fred Drakeb6e50321998-02-04 20:26:31 +0000755
756 {
757 Py_complex c;
758 ok = PyArg_ParseTuple(args, "D:myfunction", &c);
759 /* a complex, also providing a function name for errors */
760 /* Possible Python call: myfunction(1+2j) */
761 }
Fred Drake0fd82681998-01-09 05:39:38 +0000762\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000763
764
765\section{Keyword Parsing with \sectcode{PyArg_ParseTupleAndKeywords()}}
Fred Drake3da06a61998-02-26 18:49:12 +0000766\label{parseTupleAndKeywords}
Fred Drakeb6e50321998-02-04 20:26:31 +0000767
768The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
769follows:
770
Fred Drake1e11a5c1998-02-13 07:11:32 +0000771\begin{verbatim}
772int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
773 char *format, char **kwlist, ...);
774\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000775
776The \var{arg} and \var{format} parameters are identical to those of the
777\cfunction{PyArg_ParseTuple()} function. The \var{kwdict} parameter
778is the dictionary of keywords received as the third parameter from the
779Python runtime. The \var{kwlist} parameter is a \NULL{}-terminated
780list of strings which identify the parameters; the names are matched
781with the type information from \var{format} from left to right.
782
783\strong{Note:} Nested tuples cannot be parsed when using keyword
784arguments! Keyword parameters passed in which are not present in the
785\var{kwlist} will cause a \exception{TypeError} to be raised.
786
787Here is an example module which uses keywords, based on an example by
788Geoff Philbrick (\email{philbrick@hks.com}):
789
790\begin{verbatim}
791#include <stdio.h>
792#include "Python.h"
793
794static PyObject *
795keywdarg_parrot(self, args, keywds)
796 PyObject *self;
797 PyObject *args;
798 PyObject *keywds;
799{
800 int voltage;
801 char *state = "a stiff";
802 char *action = "voom";
803 char *type = "Norwegian Blue";
804
805 static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
806
807 if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
808 &voltage, &state, &action, &type))
809 return NULL;
810
811 printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
812 action, voltage);
813 printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
814
815 Py_INCREF(Py_None);
816
817 return Py_None;
818}
819
820static PyMethodDef keywdarg_methods[] = {
821 {"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS|METH_KEYWORDS},
822 {NULL, NULL} /* sentinel */
823};
824
825void
826initkeywdarg()
827{
828 /* Create the module and add the functions */
829 Py_InitModule("keywdarg", keywdarg_methods);
830
831}
832\end{verbatim}
833
834
Fred Drake53396f61998-01-19 02:48:37 +0000835\section{The \sectcode{Py_BuildValue()} Function}
Fred Drake3da06a61998-02-26 18:49:12 +0000836\label{buildValue}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000837
Fred Draked7bb3031998-03-03 17:52:07 +0000838This function is the counterpart to \cfunction{PyArg_ParseTuple()}. It is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000839declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000840
Fred Drake1e11a5c1998-02-13 07:11:32 +0000841\begin{verbatim}
842PyObject *Py_BuildValue(char *format, ...);
843\end{verbatim}
844
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000845It recognizes a set of format units similar to the ones recognized by
Fred Draked7bb3031998-03-03 17:52:07 +0000846\cfunction{PyArg_ParseTuple()}, but the arguments (which are input to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000847function, not output) must not be pointers, just values. It returns a
Fred Drake0fd82681998-01-09 05:39:38 +0000848new Python object, suitable for returning from a \C{} function called
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000849from Python.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000850
Fred Draked7bb3031998-03-03 17:52:07 +0000851One difference with \cfunction{PyArg_ParseTuple()}: while the latter
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000852requires its first argument to be a tuple (since Python argument lists
Fred Draked7bb3031998-03-03 17:52:07 +0000853are always represented as tuples internally),
854\cfunction{Py_BuildValue()} does not always build a tuple. It builds
855a tuple only if its format string contains two or more format units.
856If the format string is empty, it returns \code{None}; if it contains
857exactly one format unit, it returns whatever object is described by
858that format unit. To force it to return a tuple of size 0 or one,
859parenthesize the format string.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000860
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000861In the following description, the quoted form is the format unit; the
862entry in (round) parentheses is the Python object type that the format
863unit will return; and the entry in [square] brackets is the type of
Fred Drake0fd82681998-01-09 05:39:38 +0000864the \C{} value(s) to be passed.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000865
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000866The characters space, tab, colon and comma are ignored in format
867strings (but not within format units such as \samp{s\#}). This can be
868used to make long format strings a tad more readable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000869
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000870\begin{description}
871
872\item[\samp{s} (string) {[char *]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000873Convert a null-terminated \C{} string to a Python object. If the \C{}
874string pointer is \NULL{}, \code{None} is returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000875
876\item[\samp{s\#} (string) {[char *, int]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000877Convert a \C{} string and its length to a Python object. If the \C{} string
878pointer is \NULL{}, the length is ignored and \code{None} is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000879returned.
880
881\item[\samp{z} (string or \code{None}) {[char *]}]
882Same as \samp{s}.
883
884\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
885Same as \samp{s\#}.
886
887\item[\samp{i} (integer) {[int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000888Convert a plain \C{} \ctype{int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000889
890\item[\samp{b} (integer) {[char]}]
891Same as \samp{i}.
892
893\item[\samp{h} (integer) {[short int]}]
894Same as \samp{i}.
895
896\item[\samp{l} (integer) {[long int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000897Convert a \C{} \ctype{long int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000898
899\item[\samp{c} (string of length 1) {[char]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000900Convert a \C{} \ctype{int} representing a character to a Python string of
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000901length 1.
902
903\item[\samp{d} (float) {[double]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000904Convert a \C{} \ctype{double} to a Python floating point number.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000905
906\item[\samp{f} (float) {[float]}]
907Same as \samp{d}.
908
909\item[\samp{O} (object) {[PyObject *]}]
910Pass a Python object untouched (except for its reference count, which
Fred Drake0fd82681998-01-09 05:39:38 +0000911is incremented by one). If the object passed in is a \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000912pointer, it is assumed that this was caused because the call producing
913the argument found an error and set an exception. Therefore,
Fred Draked7bb3031998-03-03 17:52:07 +0000914\cfunction{Py_BuildValue()} will return \NULL{} but won't raise an
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000915exception. If no exception has been raised yet,
Fred Draked7bb3031998-03-03 17:52:07 +0000916\cdata{PyExc_SystemError} is set.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000917
918\item[\samp{S} (object) {[PyObject *]}]
919Same as \samp{O}.
920
921\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
922Convert \var{anything} to a Python object through a \var{converter}
923function. The function is called with \var{anything} (which should be
Fred Draked7bb3031998-03-03 17:52:07 +0000924compatible with \ctype{void *}) as its argument and should return a
Fred Drake0fd82681998-01-09 05:39:38 +0000925``new'' Python object, or \NULL{} if an error occurred.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000926
927\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000928Convert a sequence of \C{} values to a Python tuple with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000929of items.
930
931\item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000932Convert a sequence of \C{} values to a Python list with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000933of items.
934
935\item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
Fred Drake0fd82681998-01-09 05:39:38 +0000936Convert a sequence of \C{} values to a Python dictionary. Each pair of
937consecutive \C{} values adds one item to the dictionary, serving as key
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000938and value, respectively.
939
940\end{description}
941
942If there is an error in the format string, the
Fred Draked7bb3031998-03-03 17:52:07 +0000943\cdata{PyExc_SystemError} exception is raised and \NULL{} returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000944
945Examples (to the left the call, to the right the resulting Python value):
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000946
Fred Drake1e11a5c1998-02-13 07:11:32 +0000947\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000948 Py_BuildValue("") None
949 Py_BuildValue("i", 123) 123
Guido van Rossumf23e0fe1995-03-18 11:04:29 +0000950 Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000951 Py_BuildValue("s", "hello") 'hello'
952 Py_BuildValue("ss", "hello", "world") ('hello', 'world')
953 Py_BuildValue("s#", "hello", 4) 'hell'
954 Py_BuildValue("()") ()
955 Py_BuildValue("(i)", 123) (123,)
956 Py_BuildValue("(ii)", 123, 456) (123, 456)
957 Py_BuildValue("(i,i)", 123, 456) (123, 456)
958 Py_BuildValue("[i,i]", 123, 456) [123, 456]
Guido van Rossumf23e0fe1995-03-18 11:04:29 +0000959 Py_BuildValue("{s:i,s:i}",
960 "abc", 123, "def", 456) {'abc': 123, 'def': 456}
961 Py_BuildValue("((ii)(ii)) (ii)",
962 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))
Fred Drake1e11a5c1998-02-13 07:11:32 +0000963\end{verbatim}
964
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000965\section{Reference Counts}
Fred Drake3da06a61998-02-26 18:49:12 +0000966\label{refcounts}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000967
Fred Drake3da06a61998-02-26 18:49:12 +0000968%\subsection{Introduction}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000969
Fred Drake0fd82681998-01-09 05:39:38 +0000970In languages like \C{} or \Cpp{}, the programmer is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +0000971dynamic allocation and deallocation of memory on the heap. In \C{},
972this is done using the functions \cfunction{malloc()} and
973\cfunction{free()}. In \Cpp{}, the operators \keyword{new} and
974\keyword{delete} are used with essentially the same meaning; they are
975actually implemented using \cfunction{malloc()} and
976\cfunction{free()}, so we'll restrict the following discussion to the
977latter.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000978
Fred Draked7bb3031998-03-03 17:52:07 +0000979Every block of memory allocated with \cfunction{malloc()} should
980eventually be returned to the pool of available memory by exactly one
981call to \cfunction{free()}. It is important to call
982\cfunction{free()} at the right time. If a block's address is
983forgotten but \cfunction{free()} is not called for it, the memory it
984occupies cannot be reused until the program terminates. This is
985called a \dfn{memory leak}. On the other hand, if a program calls
986\cfunction{free()} for a block and then continues to use the block, it
987creates a conflict with re-use of the block through another
988\cfunction{malloc()} call. This is called \dfn{using freed memory}.
989It has the same bad consequences as referencing uninitialized data ---
990core dumps, wrong results, mysterious crashes.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000991
992Common causes of memory leaks are unusual paths through the code. For
993instance, a function may allocate a block of memory, do some
994calculation, and then free the block again. Now a change in the
995requirements for the function may add a test to the calculation that
996detects an error condition and can return prematurely from the
997function. It's easy to forget to free the allocated memory block when
998taking this premature exit, especially when it is added later to the
999code. Such leaks, once introduced, often go undetected for a long
1000time: the error exit is taken only in a small fraction of all calls,
1001and most modern machines have plenty of virtual memory, so the leak
1002only becomes apparent in a long-running process that uses the leaking
1003function frequently. Therefore, it's important to prevent leaks from
1004happening by having a coding convention or strategy that minimizes
1005this kind of errors.
1006
Fred Draked7bb3031998-03-03 17:52:07 +00001007Since Python makes heavy use of \cfunction{malloc()} and
1008\cfunction{free()}, it needs a strategy to avoid memory leaks as well
1009as the use of freed memory. The chosen method is called
1010\dfn{reference counting}. The principle is simple: every object
1011contains a counter, which is incremented when a reference to the
1012object is stored somewhere, and which is decremented when a reference
1013to it is deleted. When the counter reaches zero, the last reference
1014to the object has been deleted and the object is freed.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001015
1016An alternative strategy is called \dfn{automatic garbage collection}.
1017(Sometimes, reference counting is also referred to as a garbage
1018collection strategy, hence my use of ``automatic'' to distinguish the
1019two.) The big advantage of automatic garbage collection is that the
Fred Draked7bb3031998-03-03 17:52:07 +00001020user doesn't need to call \cfunction{free()} explicitly. (Another claimed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001021advantage is an improvement in speed or memory usage --- this is no
Fred Drake0fd82681998-01-09 05:39:38 +00001022hard fact however.) The disadvantage is that for \C{}, there is no
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001023truly portable automatic garbage collector, while reference counting
Fred Draked7bb3031998-03-03 17:52:07 +00001024can be implemented portably (as long as the functions \cfunction{malloc()}
1025and \cfunction{free()} are available --- which the \C{} Standard guarantees).
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001026Maybe some day a sufficiently portable automatic garbage collector
Fred Drake0fd82681998-01-09 05:39:38 +00001027will be available for \C{}. Until then, we'll have to live with
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001028reference counts.
1029
1030\subsection{Reference Counting in Python}
Fred Drake3da06a61998-02-26 18:49:12 +00001031\label{refcountsInPython}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001032
1033There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
1034which handle the incrementing and decrementing of the reference count.
Fred Draked7bb3031998-03-03 17:52:07 +00001035\cfunction{Py_DECREF()} also frees the object when the count reaches zero.
1036For flexibility, it doesn't call \cfunction{free()} directly --- rather, it
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001037makes a call through a function pointer in the object's \dfn{type
1038object}. For this purpose (and others), every object also contains a
1039pointer to its type object.
1040
1041The big question now remains: when to use \code{Py_INCREF(x)} and
1042\code{Py_DECREF(x)}? Let's first introduce some terms. Nobody
1043``owns'' an object; however, you can \dfn{own a reference} to an
1044object. An object's reference count is now defined as the number of
1045owned references to it. The owner of a reference is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +00001046calling \cfunction{Py_DECREF()} when the reference is no longer
1047needed. Ownership of a reference can be transferred. There are three
1048ways to dispose of an owned reference: pass it on, store it, or call
1049\cfunction{Py_DECREF()}. Forgetting to dispose of an owned reference
1050creates a memory leak.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001051
1052It is also possible to \dfn{borrow}\footnote{The metaphor of
1053``borrowing'' a reference is not completely correct: the owner still
1054has a copy of the reference.} a reference to an object. The borrower
Fred Draked7bb3031998-03-03 17:52:07 +00001055of a reference should not call \cfunction{Py_DECREF()}. The borrower must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001056not hold on to the object longer than the owner from which it was
1057borrowed. Using a borrowed reference after the owner has disposed of
1058it risks using freed memory and should be avoided
1059completely.\footnote{Checking that the reference count is at least 1
1060\strong{does not work} --- the reference count itself could be in
1061freed memory and may thus be reused for another object!}
1062
1063The advantage of borrowing over owning a reference is that you don't
1064need to take care of disposing of the reference on all possible paths
1065through the code --- in other words, with a borrowed reference you
1066don't run the risk of leaking when a premature exit is taken. The
1067disadvantage of borrowing over leaking is that there are some subtle
1068situations where in seemingly correct code a borrowed reference can be
1069used after the owner from which it was borrowed has in fact disposed
1070of it.
1071
1072A borrowed reference can be changed into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001073\cfunction{Py_INCREF()}. This does not affect the status of the owner from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001074which the reference was borrowed --- it creates a new owned reference,
1075and gives full owner responsibilities (i.e., the new owner must
1076dispose of the reference properly, as well as the previous owner).
1077
1078\subsection{Ownership Rules}
Fred Drake3da06a61998-02-26 18:49:12 +00001079\label{ownershipRules}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001080
1081Whenever an object reference is passed into or out of a function, it
1082is part of the function's interface specification whether ownership is
1083transferred with the reference or not.
1084
1085Most functions that return a reference to an object pass on ownership
1086with the reference. In particular, all functions whose function it is
Fred Draked7bb3031998-03-03 17:52:07 +00001087to create a new object, e.g.\ \cfunction{PyInt_FromLong()} and
1088\cfunction{Py_BuildValue()}, pass ownership to the receiver. Even if in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001089fact, in some cases, you don't receive a reference to a brand new
1090object, you still receive ownership of the reference. For instance,
Fred Draked7bb3031998-03-03 17:52:07 +00001091\cfunction{PyInt_FromLong()} maintains a cache of popular values and can
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001092return a reference to a cached item.
1093
1094Many functions that extract objects from other objects also transfer
1095ownership with the reference, for instance
Fred Draked7bb3031998-03-03 17:52:07 +00001096\cfunction{PyObject_GetAttrString()}. The picture is less clear, here,
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001097however, since a few common routines are exceptions:
Fred Draked7bb3031998-03-03 17:52:07 +00001098\cfunction{PyTuple_GetItem()}, \cfunction{PyList_GetItem()},
1099\cfunction{PyDict_GetItem()}, and \cfunction{PyDict_GetItemString()}
1100all return references that you borrow from the tuple, list or
1101dictionary.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001102
Fred Draked7bb3031998-03-03 17:52:07 +00001103The function \cfunction{PyImport_AddModule()} also returns a borrowed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001104reference, even though it may actually create the object it returns:
1105this is possible because an owned reference to the object is stored in
1106\code{sys.modules}.
1107
1108When you pass an object reference into another function, in general,
1109the function borrows the reference from you --- if it needs to store
Fred Draked7bb3031998-03-03 17:52:07 +00001110it, it will use \cfunction{Py_INCREF()} to become an independent
1111owner. There are exactly two important exceptions to this rule:
1112\cfunction{PyTuple_SetItem()} and \cfunction{PyList_SetItem()}. These
1113functions take over ownership of the item passed to them --- even if
1114they fail! (Note that \cfunction{PyDict_SetItem()} and friends don't
1115take over ownership --- they are ``normal''.)
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001116
Fred Drake0fd82681998-01-09 05:39:38 +00001117When a \C{} function is called from Python, it borrows references to its
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001118arguments from the caller. The caller owns a reference to the object,
1119so the borrowed reference's lifetime is guaranteed until the function
1120returns. Only when such a borrowed reference must be stored or passed
1121on, it must be turned into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001122\cfunction{Py_INCREF()}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001123
Fred Drake0fd82681998-01-09 05:39:38 +00001124The object reference returned from a \C{} function that is called from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001125Python must be an owned reference --- ownership is tranferred from the
1126function to its caller.
1127
1128\subsection{Thin Ice}
Fred Drake3da06a61998-02-26 18:49:12 +00001129\label{thinIce}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001130
1131There are a few situations where seemingly harmless use of a borrowed
1132reference can lead to problems. These all have to do with implicit
1133invocations of the interpreter, which can cause the owner of a
1134reference to dispose of it.
1135
1136The first and most important case to know about is using
Fred Draked7bb3031998-03-03 17:52:07 +00001137\cfunction{Py_DECREF()} on an unrelated object while borrowing a
1138reference to a list item. For instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001139
Fred Drake1e11a5c1998-02-13 07:11:32 +00001140\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001141bug(PyObject *list) {
1142 PyObject *item = PyList_GetItem(list, 0);
1143 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1144 PyObject_Print(item, stdout, 0); /* BUG! */
1145}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001146\end{verbatim}
1147
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001148This function first borrows a reference to \code{list[0]}, then
1149replaces \code{list[1]} with the value \code{0}, and finally prints
1150the borrowed reference. Looks harmless, right? But it's not!
1151
Fred Draked7bb3031998-03-03 17:52:07 +00001152Let's follow the control flow into \cfunction{PyList_SetItem()}. The list
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001153owns references to all its items, so when item 1 is replaced, it has
1154to dispose of the original item 1. Now let's suppose the original
1155item 1 was an instance of a user-defined class, and let's further
Fred Draked7bb3031998-03-03 17:52:07 +00001156suppose that the class defined a \method{__del__()} method. If this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001157class instance has a reference count of 1, disposing of it will call
Fred Draked7bb3031998-03-03 17:52:07 +00001158its \method{__del__()} method.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001159
Fred Draked7bb3031998-03-03 17:52:07 +00001160Since it is written in Python, the \method{__del__()} method can execute
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001161arbitrary Python code. Could it perhaps do something to invalidate
Fred Draked7bb3031998-03-03 17:52:07 +00001162the reference to \code{item} in \cfunction{bug()}? You bet! Assuming
1163that the list passed into \cfunction{bug()} is accessible to the
1164\method{__del__()} method, it could execute a statement to the effect of
1165\samp{del list[0]}, and assuming this was the last reference to that
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001166object, it would free the memory associated with it, thereby
1167invalidating \code{item}.
1168
1169The solution, once you know the source of the problem, is easy:
1170temporarily increment the reference count. The correct version of the
1171function reads:
1172
Fred Drake1e11a5c1998-02-13 07:11:32 +00001173\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001174no_bug(PyObject *list) {
1175 PyObject *item = PyList_GetItem(list, 0);
1176 Py_INCREF(item);
1177 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1178 PyObject_Print(item, stdout, 0);
1179 Py_DECREF(item);
1180}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001181\end{verbatim}
1182
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001183This is a true story. An older version of Python contained variants
Fred Drake0fd82681998-01-09 05:39:38 +00001184of this bug and someone spent a considerable amount of time in a \C{}
Fred Draked7bb3031998-03-03 17:52:07 +00001185debugger to figure out why his \method{__del__()} methods would fail...
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001186
1187The second case of problems with a borrowed reference is a variant
1188involving threads. Normally, multiple threads in the Python
1189interpreter can't get in each other's way, because there is a global
1190lock protecting Python's entire object space. However, it is possible
1191to temporarily release this lock using the macro
1192\code{Py_BEGIN_ALLOW_THREADS}, and to re-acquire it using
1193\code{Py_END_ALLOW_THREADS}. This is common around blocking I/O
1194calls, to let other threads use the CPU while waiting for the I/O to
1195complete. Obviously, the following function has the same problem as
1196the previous one:
1197
Fred Drake1e11a5c1998-02-13 07:11:32 +00001198\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001199bug(PyObject *list) {
1200 PyObject *item = PyList_GetItem(list, 0);
1201 Py_BEGIN_ALLOW_THREADS
1202 ...some blocking I/O call...
1203 Py_END_ALLOW_THREADS
1204 PyObject_Print(item, stdout, 0); /* BUG! */
1205}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001206\end{verbatim}
1207
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001208\subsection{NULL Pointers}
Fred Drake3da06a61998-02-26 18:49:12 +00001209\label{nullPointers}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001210
1211In general, functions that take object references as arguments don't
Fred Drake0fd82681998-01-09 05:39:38 +00001212expect you to pass them \NULL{} pointers, and will dump core (or
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001213cause later core dumps) if you do so. Functions that return object
Fred Drake0fd82681998-01-09 05:39:38 +00001214references generally return \NULL{} only to indicate that an
1215exception occurred. The reason for not testing for \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001216arguments is that functions often pass the objects they receive on to
Fred Drake0fd82681998-01-09 05:39:38 +00001217other function --- if each function were to test for \NULL{},
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001218there would be a lot of redundant tests and the code would run slower.
1219
Fred Drake0fd82681998-01-09 05:39:38 +00001220It is better to test for \NULL{} only at the ``source'', i.e.\
1221when a pointer that may be \NULL{} is received, e.g.\ from
Fred Draked7bb3031998-03-03 17:52:07 +00001222\cfunction{malloc()} or from a function that may raise an exception.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001223
Fred Draked7bb3031998-03-03 17:52:07 +00001224The macros \cfunction{Py_INCREF()} and \cfunction{Py_DECREF()}
Fred Drake0fd82681998-01-09 05:39:38 +00001225don't check for \NULL{} pointers --- however, their variants
Fred Draked7bb3031998-03-03 17:52:07 +00001226\cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()} do.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001227
1228The macros for checking for a particular object type
Fred Drake0fd82681998-01-09 05:39:38 +00001229(\code{Py\var{type}_Check()}) don't check for \NULL{} pointers ---
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001230again, there is much code that calls several of these in a row to test
1231an object against various different expected types, and this would
Fred Drake0fd82681998-01-09 05:39:38 +00001232generate redundant tests. There are no variants with \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001233checking.
1234
Fred Drake0fd82681998-01-09 05:39:38 +00001235The \C{} function calling mechanism guarantees that the argument list
1236passed to \C{} functions (\code{args} in the examples) is never
1237\NULL{} --- in fact it guarantees that it is always a tuple.%
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001238\footnote{These guarantees don't hold when you use the ``old'' style
1239calling convention --- this is still found in much existing code.}
1240
Fred Drake0fd82681998-01-09 05:39:38 +00001241It is a severe error to ever let a \NULL{} pointer ``escape'' to
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001242the Python user.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001243
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001244
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001245\section{Writing Extensions in \Cpp{}}
Fred Drake3da06a61998-02-26 18:49:12 +00001246\label{cplusplus}
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001247
Guido van Rossum16d6e711994-08-08 12:30:22 +00001248It is possible to write extension modules in \Cpp{}. Some restrictions
Guido van Rossumed39cd01995-10-08 00:17:19 +00001249apply. If the main program (the Python interpreter) is compiled and
Fred Drake0fd82681998-01-09 05:39:38 +00001250linked by the \C{} compiler, global or static objects with constructors
Guido van Rossumed39cd01995-10-08 00:17:19 +00001251cannot be used. This is not a problem if the main program is linked
Guido van Rossumafcd5891998-02-05 19:59:39 +00001252by the \Cpp{} compiler. Functions that will be called by the
1253Python interpreter (in particular, module initalization functions)
1254have to be declared using \code{extern "C"}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001255It is unnecessary to enclose the Python header files in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001256\code{extern "C" \{...\}} --- they use this form already if the symbol
Fred Drake0fd82681998-01-09 05:39:38 +00001257\samp{__cplusplus} is defined (all recent \Cpp{} compilers define this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001258symbol).
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001259
1260\chapter{Embedding Python in another application}
Fred Drake3da06a61998-02-26 18:49:12 +00001261\label{embedding}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001262
1263Embedding Python is similar to extending it, but not quite. The
1264difference is that when you extend Python, the main program of the
Guido van Rossum16d6e711994-08-08 12:30:22 +00001265application is still the Python interpreter, while if you embed
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001266Python, the main program may have nothing to do with Python ---
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001267instead, some parts of the application occasionally call the Python
1268interpreter to run some Python code.
1269
1270So if you are embedding Python, you are providing your own main
1271program. One of the things this main program has to do is initialize
1272the Python interpreter. At the very least, you have to call the
Fred Draked7bb3031998-03-03 17:52:07 +00001273function \cfunction{Py_Initialize()}. There are optional calls to
1274pass command line arguments to Python. Then later you can call the
1275interpreter from any part of the application.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001276
1277There are several different ways to call the interpreter: you can pass
Fred Draked7bb3031998-03-03 17:52:07 +00001278a string containing Python statements to
1279\cfunction{PyRun_SimpleString()}, or you can pass a stdio file pointer
1280and a file name (for identification in error messages only) to
1281\cfunction{PyRun_SimpleFile()}. You can also call the lower-level
1282operations described in the previous chapters to construct and use
1283Python objects.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001284
1285A simple demo of embedding Python can be found in the directory
Guido van Rossum6938f061994-08-01 12:22:53 +00001286\file{Demo/embed}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001287
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001288
Guido van Rossum16d6e711994-08-08 12:30:22 +00001289\section{Embedding Python in \Cpp{}}
Fred Drake3da06a61998-02-26 18:49:12 +00001290\label{embeddingInCplusplus}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001291
Guido van Rossum16d6e711994-08-08 12:30:22 +00001292It is also possible to embed Python in a \Cpp{} program; precisely how this
1293is done will depend on the details of the \Cpp{} system used; in general you
1294will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
1295to compile and link your program. There is no need to recompile Python
1296itself using \Cpp{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001297
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001298
1299\chapter{Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001300\label{dynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001301
Guido van Rossum6938f061994-08-01 12:22:53 +00001302On most modern systems it is possible to configure Python to support
Fred Drake0fd82681998-01-09 05:39:38 +00001303dynamic loading of extension modules implemented in \C{}. When shared
Guido van Rossum6938f061994-08-01 12:22:53 +00001304libraries are used dynamic loading is configured automatically;
1305otherwise you have to select it as a build option (see below). Once
1306configured, dynamic loading is trivial to use: when a Python program
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001307executes \code{import spam}, the search for modules tries to find a
1308file \file{spammodule.o} (\file{spammodule.so} when using shared
Guido van Rossum6938f061994-08-01 12:22:53 +00001309libraries) in the module search path, and if one is found, it is
1310loaded into the executing binary and executed. Once loaded, the
1311module acts just like a built-in extension module.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001312
Guido van Rossumb92112d1995-03-20 14:24:09 +00001313The advantages of dynamic loading are twofold: the ``core'' Python
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001314binary gets smaller, and users can extend Python with their own
Fred Drake0fd82681998-01-09 05:39:38 +00001315modules implemented in \C{} without having to build and maintain their
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001316own copy of the Python interpreter. There are also disadvantages:
1317dynamic loading isn't available on all systems (this just means that
1318on some systems you have to use static loading), and dynamically
1319loading a module that was compiled for a different version of Python
Guido van Rossum6938f061994-08-01 12:22:53 +00001320(e.g. with a different representation of objects) may dump core.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001321
1322
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001323\section{Configuring and Building the Interpreter for Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001324\label{dynloadConfig}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001325
Guido van Rossum6938f061994-08-01 12:22:53 +00001326There are three styles of dynamic loading: one using shared libraries,
1327one using SGI IRIX 4 dynamic loading, and one using GNU dynamic
1328loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001329
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001330\subsection{Shared Libraries}
Fred Drake3da06a61998-02-26 18:49:12 +00001331\label{sharedlibs}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001332
Guido van Rossum16d6e711994-08-08 12:30:22 +00001333The following systems support dynamic loading using shared libraries:
Guido van Rossum6938f061994-08-01 12:22:53 +00001334SunOS 4; Solaris 2; SGI IRIX 5 (but not SGI IRIX 4!); and probably all
1335systems derived from SVR4, or at least those SVR4 derivatives that
1336support shared libraries (are there any that don't?).
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001337
Guido van Rossum6938f061994-08-01 12:22:53 +00001338You don't need to do anything to configure dynamic loading on these
1339systems --- the \file{configure} detects the presence of the
1340\file{<dlfcn.h>} header file and automatically configures dynamic
1341loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001342
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001343\subsection{SGI IRIX 4 Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001344\label{irixDynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001345
Guido van Rossum6938f061994-08-01 12:22:53 +00001346Only SGI IRIX 4 supports dynamic loading of modules using SGI dynamic
1347loading. (SGI IRIX 5 might also support it but it is inferior to
1348using shared libraries so there is no reason to; a small test didn't
1349work right away so I gave up trying to support it.)
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001350
Fred Draked7bb3031998-03-03 17:52:07 +00001351Before you build Python, you first need to fetch and build the
1352\code{dl} package written by Jack Jansen. This is available by
1353anonymous ftp from \url{ftp://ftp.cwi.nl/pub/dynload}, file
Guido van Rossum6938f061994-08-01 12:22:53 +00001354\file{dl-1.6.tar.Z}. (The version number may change.) Follow the
1355instructions in the package's \file{README} file to build it.
1356
1357Once you have built \code{dl}, you can configure Python to use it. To
1358this end, you run the \file{configure} script with the option
1359\code{--with-dl=\var{directory}} where \var{directory} is the absolute
1360pathname of the \code{dl} directory.
1361
1362Now build and install Python as you normally would (see the
1363\file{README} file in the toplevel Python directory.)
1364
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001365\subsection{GNU Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001366\label{gnuDynload}
Guido van Rossum6938f061994-08-01 12:22:53 +00001367
1368GNU dynamic loading supports (according to its \file{README} file) the
1369following hardware and software combinations: VAX (Ultrix), Sun 3
1370(SunOS 3.4 and 4.0), Sparc (SunOS 4.0), Sequent Symmetry (Dynix), and
1371Atari ST. There is no reason to use it on a Sparc; I haven't seen a
1372Sun 3 for years so I don't know if these have shared libraries or not.
1373
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001374You need to fetch and build two packages.
1375One is GNU DLD. All development of this code has been done with DLD
Fred Drakeca6567f1998-01-22 20:44:18 +00001376version 3.2.3, which is available by anonymous ftp from
1377\url{ftp://ftp.cwi.nl/pub/dynload}, file
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001378\file{dld-3.2.3.tar.Z}. (A more recent version of DLD is available
Fred Drakeca6567f1998-01-22 20:44:18 +00001379via \url{http://www-swiss.ai.mit.edu/~jaffer/DLD.html} but this has
Guido van Rossum7e924dd1997-02-10 16:51:52 +00001380not been tested.)
1381The other package needed is an
Guido van Rossum6938f061994-08-01 12:22:53 +00001382emulation of Jack Jansen's \code{dl} package that I wrote on top of
1383GNU DLD 3.2.3. This is available from the same host and directory,
Guido van Rossum98046b91997-08-14 19:50:18 +00001384file \file{dl-dld-1.1.tar.Z}. (The version number may change --- but I doubt
Guido van Rossum6938f061994-08-01 12:22:53 +00001385it will.) Follow the instructions in each package's \file{README}
Guido van Rossum98046b91997-08-14 19:50:18 +00001386file to configure and build them.
Guido van Rossum6938f061994-08-01 12:22:53 +00001387
1388Now configure Python. Run the \file{configure} script with the option
1389\code{--with-dl-dld=\var{dl-directory},\var{dld-directory}} where
1390\var{dl-directory} is the absolute pathname of the directory where you
1391have built the \file{dl-dld} package, and \var{dld-directory} is that
1392of the GNU DLD package. The Python interpreter you build hereafter
1393will support GNU dynamic loading.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001394
1395
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001396\section{Building a Dynamically Loadable Module}
Fred Drake3da06a61998-02-26 18:49:12 +00001397\label{makedynload}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001398
Guido van Rossum6938f061994-08-01 12:22:53 +00001399Since there are three styles of dynamic loading, there are also three
1400groups of instructions for building a dynamically loadable module.
1401Instructions common for all three styles are given first. Assuming
Fred Draked7bb3031998-03-03 17:52:07 +00001402your module is called \module{spam}, the source filename must be
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001403\file{spammodule.c}, so the object name is \file{spammodule.o}. The
Guido van Rossum6938f061994-08-01 12:22:53 +00001404module must be written as a normal Python extension module (as
1405described earlier).
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001406
Guido van Rossum6938f061994-08-01 12:22:53 +00001407Note that in all cases you will have to create your own Makefile that
1408compiles your module file(s). This Makefile will have to pass two
Fred Drake0fd82681998-01-09 05:39:38 +00001409\samp{-I} arguments to the \C{} compiler which will make it find the
Guido van Rossum6938f061994-08-01 12:22:53 +00001410Python header files. If the Make variable \var{PYTHONTOP} points to
1411the toplevel Python directory, your \var{CFLAGS} Make variable should
1412contain the options \samp{-I\$(PYTHONTOP) -I\$(PYTHONTOP)/Include}.
1413(Most header files are in the \file{Include} subdirectory, but the
Guido van Rossum305ed111996-08-19 22:59:46 +00001414\file{config.h} header lives in the toplevel directory.)
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001415
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001416
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001417\subsection{Shared Libraries}
Fred Drake3da06a61998-02-26 18:49:12 +00001418\label{linking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001419
Fred Drakeaf8a0151998-01-14 14:51:31 +00001420You must link the \file{.o} file to produce a shared library. This is
1421done using a special invocation of the \UNIX{} loader/linker,
1422\emph{ld}(1). Unfortunately the invocation differs slightly per
1423system.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001424
Guido van Rossum6938f061994-08-01 12:22:53 +00001425On SunOS 4, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001426\begin{verbatim}
1427ld spammodule.o -o spammodule.so
1428\end{verbatim}
1429
Guido van Rossum6938f061994-08-01 12:22:53 +00001430On Solaris 2, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001431\begin{verbatim}
1432ld -G spammodule.o -o spammodule.so
1433\end{verbatim}
1434
Guido van Rossum6938f061994-08-01 12:22:53 +00001435On SGI IRIX 5, use
Fred Drake1e11a5c1998-02-13 07:11:32 +00001436\begin{verbatim}
1437ld -shared spammodule.o -o spammodule.so
1438\end{verbatim}
1439
Fred Draked7bb3031998-03-03 17:52:07 +00001440On other systems, consult the manual page for \manpage{ld}{1} to find
1441what flags, if any, must be used.
Guido van Rossum6938f061994-08-01 12:22:53 +00001442
1443If your extension module uses system libraries that haven't already
1444been linked with Python (e.g. a windowing system), these must be
Fred Draked7bb3031998-03-03 17:52:07 +00001445passed to the \program{ld} command as \samp{-l} options after the
Guido van Rossum6938f061994-08-01 12:22:53 +00001446\samp{.o} file.
1447
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001448The resulting file \file{spammodule.so} must be copied into a directory
Guido van Rossum6938f061994-08-01 12:22:53 +00001449along the Python module search path.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001450
1451
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001452\subsection{SGI IRIX 4 Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001453\label{irixLinking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001454
Fred Drakeaf8a0151998-01-14 14:51:31 +00001455\strong{IMPORTANT:} You must compile your extension module with the
Fred Drake0fd82681998-01-09 05:39:38 +00001456additional \C{} flag \samp{-G0} (or \samp{-G 0}). This instruct the
Guido van Rossum6938f061994-08-01 12:22:53 +00001457assembler to generate position-independent code.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001458
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001459You don't need to link the resulting \file{spammodule.o} file; just
Guido van Rossum6938f061994-08-01 12:22:53 +00001460copy it into a directory along the Python module search path.
1461
1462The first time your extension is loaded, it takes some extra time and
1463a few messages may be printed. This creates a file
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001464\file{spammodule.ld} which is an image that can be loaded quickly into
Guido van Rossum6938f061994-08-01 12:22:53 +00001465the Python interpreter process. When a new Python interpreter is
1466installed, the \code{dl} package detects this and rebuilds
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001467\file{spammodule.ld}. The file \file{spammodule.ld} is placed in the
1468directory where \file{spammodule.o} was found, unless this directory is
Guido van Rossum6938f061994-08-01 12:22:53 +00001469unwritable; in that case it is placed in a temporary
1470directory.\footnote{Check the manual page of the \code{dl} package for
1471details.}
1472
1473If your extension modules uses additional system libraries, you must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001474create a file \file{spammodule.libs} in the same directory as the
1475\file{spammodule.o}. This file should contain one or more lines with
Guido van Rossum6938f061994-08-01 12:22:53 +00001476whitespace-separated options that will be passed to the linker ---
1477normally only \samp{-l} options or absolute pathnames of libraries
1478(\samp{.a} files) should be used.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001479
1480
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001481\subsection{GNU Dynamic Loading}
Fred Drake3da06a61998-02-26 18:49:12 +00001482\label{gnuLinking}
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001483
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001484Just copy \file{spammodule.o} into a directory along the Python module
Guido van Rossum6938f061994-08-01 12:22:53 +00001485search path.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001486
Guido van Rossum6938f061994-08-01 12:22:53 +00001487If your extension modules uses additional system libraries, you must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001488create a file \file{spammodule.libs} in the same directory as the
1489\file{spammodule.o}. This file should contain one or more lines with
Guido van Rossum6938f061994-08-01 12:22:53 +00001490whitespace-separated absolute pathnames of libraries (\samp{.a}
1491files). No \samp{-l} options can be used.
Guido van Rossum6f0132f1993-11-19 13:13:22 +00001492
1493
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001494%\input{extref}
Guido van Rossum267e80d1996-08-09 21:01:07 +00001495
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001496\input{ext.ind}
1497
1498\end{document}