improve treatment of multi-line replies, ignore empty lines
[python/dscho.git] / Doc / ext.tex
blob3dc3c45588d0acbf6d614f174c488477b798ccd0
1 \documentstyle[twoside,11pt,myformat]{report}
3 \title{Extending and Embedding the Python Interpreter}
5 \input{boilerplate}
7 % Tell \index to actually write the .idx file
8 \makeindex
10 \begin{document}
12 \pagenumbering{roman}
14 \maketitle
16 \input{copyright}
18 \begin{abstract}
20 \noindent
21 This document describes how to write modules in C or \Cpp{} to extend the
22 Python interpreter. It also describes how to use Python as an
23 `embedded' language, and how extension modules can be loaded
24 dynamically (at run time) into the interpreter, if the operating
25 system supports this feature.
27 \end{abstract}
29 \pagebreak
32 \parskip = 0mm
33 \tableofcontents
36 \pagebreak
38 \pagenumbering{arabic}
41 \chapter{Extending Python with C or \Cpp{} code}
44 \section{Introduction}
46 It is quite easy to add non-standard built-in modules to Python, if
47 you know how to program in C. A built-in module known to the Python
48 programmer as \code{foo} is generally implemented by a file called
49 \file{foomodule.c}. All but the two most essential standard built-in
50 modules also adhere to this convention, and in fact some of them form
51 excellent examples of how to create an extension.
53 Extension modules can do two things that can't be done directly in
54 Python: they can implement new data types (which are different from
55 classes, by the way), and they can make system calls or call C library
56 functions. We'll see how both types of extension are implemented by
57 examining the code for a Python curses interface.
59 Note: unless otherwise mentioned, all file references in this
60 document are relative to the toplevel directory of the Python
61 distribution --- i.e. the directory that contains the \file{configure}
62 script.
64 The compilation of an extension module depends on your system setup
65 and the intended use of the module; details are given in a later
66 section.
69 \section{A first look at the code}
71 It is important not to be impressed by the size and complexity of
72 the average extension module; much of this is straightforward
73 `boilerplate' code (starting right with the copyright notice)!
75 Let's skip the boilerplate and have a look at an interesting function
76 in \file{posixmodule.c} first:
78 \begin{verbatim}
79 static object *
80 posix_system(self, args)
81 object *self;
82 object *args;
84 char *command;
85 int sts;
86 if (!getargs(args, "s", &command))
87 return NULL;
88 sts = system(command);
89 return mkvalue("i", sts);
91 \end{verbatim}
93 This is the prototypical top-level function in an extension module.
94 It will be called (we'll see later how) when the Python program
95 executes statements like
97 \begin{verbatim}
98 >>> import posix
99 >>> sts = posix.system('ls -l')
100 \end{verbatim}
102 There is a straightforward translation from the arguments to the call
103 in Python (here the single expression \code{'ls -l'}) to the arguments that
104 are passed to the C function. The C function always has two
105 parameters, conventionally named \var{self} and \var{args}. The
106 \var{self} argument is used when the C function implements a builtin
107 method---this will be discussed later.
108 In the example, \var{self} will always be a \code{NULL} pointer, since
109 we are defining a function, not a method (this is done so that the
110 interpreter doesn't have to understand two different types of C
111 functions).
113 The \var{args} parameter will be a pointer to a Python object, or
114 \code{NULL} if the Python function/method was called without
115 arguments. It is necessary to do full argument type checking on each
116 call, since otherwise the Python user would be able to cause the
117 Python interpreter to `dump core' by passing invalid arguments to a
118 function in an extension module. Because argument checking and
119 converting arguments to C are such common tasks, there's a general
120 function in the Python interpreter that combines them:
121 \code{getargs()}. It uses a template string to determine both the
122 types of the Python argument and the types of the C variables into
123 which it should store the converted values.\footnote{There are
124 convenience macros \code{getnoarg()}, \code{getstrarg()},
125 \code{getintarg()}, etc., for many common forms of \code{getargs()}
126 templates. These are relics from the past; the recommended practice
127 is to call \code{getargs()} directly.} (More about this later.)
129 If \code{getargs()} returns nonzero, the argument list has the right
130 type and its components have been stored in the variables whose
131 addresses are passed. If it returns zero, an error has occurred. In
132 the latter case it has already raised an appropriate exception by so
133 the calling function should return \code{NULL} immediately --- see the
134 next section.
137 \section{Intermezzo: errors and exceptions}
139 An important convention throughout the Python interpreter is the
140 following: when a function fails, it should set an exception condition
141 and return an error value (often a \code{NULL} pointer). Exceptions
142 are stored in a static global variable in \file{Python/errors.c}; if
143 this variable is \code{NULL} no exception has occurred. A second
144 static global variable stores the `associated value' of the exception
145 --- the second argument to \code{raise}.
147 The file \file{errors.h} declares a host of functions to set various
148 types of exceptions. The most common one is \code{err_setstr()} ---
149 its arguments are an exception object (e.g. \code{RuntimeError} ---
150 actually it can be any string object) and a C string indicating the
151 cause of the error (this is converted to a string object and stored as
152 the `associated value' of the exception). Another useful function is
153 \code{err_errno()}, which only takes an exception argument and
154 constructs the associated value by inspection of the (UNIX) global
155 variable errno. The most general function is \code{err_set()}, which
156 takes two object arguments, the exception and its associated value.
157 You don't need to \code{INCREF()} the objects passed to any of these
158 functions.
160 You can test non-destructively whether an exception has been set with
161 \code{err_occurred()}. However, most code never calls
162 \code{err_occurred()} to see whether an error occurred or not, but
163 relies on error return values from the functions it calls instead.
165 When a function that calls another function detects that the called
166 function fails, it should return an error value (e.g. \code{NULL} or
167 \code{-1}) but not call one of the \code{err_*} functions --- one has
168 already been called. The caller is then supposed to also return an
169 error indication to {\em its} caller, again {\em without} calling
170 \code{err_*()}, and so on --- the most detailed cause of the error was
171 already reported by the function that first detected it. Once the
172 error has reached Python's interpreter main loop, this aborts the
173 currently executing Python code and tries to find an exception handler
174 specified by the Python programmer.
176 (There are situations where a module can actually give a more detailed
177 error message by calling another \code{err_*} function, and in such
178 cases it is fine to do so. As a general rule, however, this is not
179 necessary, and can cause information about the cause of the error to
180 be lost: most operations can fail for a variety of reasons.)
182 To ignore an exception set by a function call that failed, the
183 exception condition must be cleared explicitly by calling
184 \code{err_clear()}. The only time C code should call
185 \code{err_clear()} is if it doesn't want to pass the error on to the
186 interpreter but wants to handle it completely by itself (e.g. by
187 trying something else or pretending nothing happened).
189 Finally, the function \code{err_get()} gives you both error variables
190 {\em and clears them}. Note that even if an error occurred the second
191 one may be \code{NULL}. You have to \code{XDECREF()} both when you
192 are finished with them. I doubt you will need to use this function.
194 Note that a failing \code{malloc()} call must also be turned into an
195 exception --- the direct caller of \code{malloc()} (or
196 \code{realloc()}) must call \code{err_nomem()} and return a failure
197 indicator itself. All the object-creating functions
198 (\code{newintobject()} etc.) already do this, so only if you call
199 \code{malloc()} directly this note is of importance.
201 Also note that, with the important exception of \code{getargs()},
202 functions that return an integer status usually return \code{0} or a
203 positive value for success and \code{-1} for failure.
205 Finally, be careful about cleaning up garbage (making \code{XDECREF()}
206 or \code{DECREF()} calls for objects you have already created) when
207 you return an error!
209 The choice of which exception to raise is entirely yours. There are
210 predeclared C objects corresponding to all built-in Python exceptions,
211 e.g. \code{ZeroDevisionError} which you can use directly. Of course,
212 you should chose exceptions wisely --- don't use \code{TypeError} to
213 mean that a file couldn't be opened (that should probably be
214 \code{IOError}). If anything's wrong with the argument list the
215 \code{getargs()} function raises \code{TypeError}. If you have an
216 argument whose value which must be in a particular range or must
217 satisfy other conditions, \code{ValueError} is appropriate.
219 You can also define a new exception that is unique to your module.
220 For this, you usually declare a static object variable at the
221 beginning of your file, e.g.
223 \begin{verbatim}
224 static object *FooError;
225 \end{verbatim}
227 and initialize it in your module's initialization function
228 (\code{initfoo()}) with a string object, e.g. (leaving out the error
229 checking for simplicity):
231 \begin{verbatim}
232 void
233 initfoo()
235 object *m, *d;
236 m = initmodule("foo", foo_methods);
237 d = getmoduledict(m);
238 FooError = newstringobject("foo.error");
239 dictinsert(d, "error", FooError);
241 \end{verbatim}
244 \section{Back to the example}
246 Going back to \code{posix_system()}, you should now be able to
247 understand this bit:
249 \begin{verbatim}
250 if (!getargs(args, "s", &command))
251 return NULL;
252 \end{verbatim}
254 It returns \code{NULL} (the error indicator for functions of this
255 kind) if an error is detected in the argument list, relying on the
256 exception set by \code{getargs()}. Otherwise the string value of the
257 argument has been copied to the local variable \code{command} --- this
258 is in fact just a pointer assignment and you are not supposed to
259 modify the string to which it points.
261 If a function is called with multiple arguments, the argument list
262 (the argument \code{args}) is turned into a tuple. If it is called
263 without arguments, \code{args} is \code{NULL}. \code{getargs()} knows
264 about this; see later.
266 The next statement in \code{posix_system()} is a call to the C library
267 function \code{system()}, passing it the string we just got from
268 \code{getargs()}:
270 \begin{verbatim}
271 sts = system(command);
272 \end{verbatim}
274 Finally, \code{posix.system()} must return a value: the integer status
275 returned by the C library \code{system()} function. This is done
276 using the function \code{mkvalue()}, which is something like the
277 inverse of \code{getargs()}: it takes a format string and a variable
278 number of C values and returns a new Python object.
280 \begin{verbatim}
281 return mkvalue("i", sts);
282 \end{verbatim}
284 In this case, it returns an integer object (yes, even integers are
285 objects on the heap in Python!). More info on \code{mkvalue()} is
286 given later.
288 If you had a function that returned no useful argument (a.k.a. a
289 procedure), you would need this idiom:
291 \begin{verbatim}
292 INCREF(None);
293 return None;
294 \end{verbatim}
296 \code{None} is a unique Python object representing `no value'. It
297 differs from \code{NULL}, which means `error' in most contexts.
300 \section{The module's function table}
302 I promised to show how I made the function \code{posix_system()}
303 callable from Python programs. This is shown later in
304 \file{Modules/posixmodule.c}:
306 \begin{verbatim}
307 static struct methodlist posix_methods[] = {
309 {"system", posix_system},
311 {NULL, NULL} /* Sentinel */
314 void
315 initposix()
317 (void) initmodule("posix", posix_methods);
319 \end{verbatim}
321 (The actual \code{initposix()} is somewhat more complicated, but many
322 extension modules can be as simple as shown here.) When the Python
323 program first imports module \code{posix}, \code{initposix()} is
324 called, which calls \code{initmodule()} with specific parameters.
325 This creates a `module object' (which is inserted in the table
326 \code{sys.modules} under the key \code{'posix'}), and adds
327 built-in-function objects to the newly created module based upon the
328 table (of type struct methodlist) that was passed as its second
329 parameter. The function \code{initmodule()} returns a pointer to the
330 module object that it creates (which is unused here). It aborts with
331 a fatal error if the module could not be initialized satisfactorily,
332 so you don't need to check for errors.
335 \section{Compilation and linkage}
337 There are two more things to do before you can use your new extension
338 module: compiling and linking it with the Python system. If you use
339 dynamic loading, the details depend on the style of dynamic loading
340 your system uses; see the chapter on Dynamic Loading for more info
341 about this.
343 If you can't use dynamic loading, or if you want to make your module a
344 permanent part of the Python interpreter, you will have to change the
345 configuration setup and rebuild the interpreter. Luckily, in the 1.0
346 release this is very simple: just place your file (named
347 \file{foomodule.c} for example) in the \file{Modules} directory, add a
348 line to the file \file{Modules/Setup} describing your file:
350 \begin{verbatim}
351 foo foomodule.o
352 \end{verbatim}
354 and rebuild the interpreter by running \code{make} in the toplevel
355 directory. You can also run \code{make} in the \file{Modules}
356 subdirectory, but then you must first rebuilt the \file{Makefile}
357 there by running \code{make Makefile}. (This is necessary each time
358 you change the \file{Setup} file.)
361 \section{Calling Python functions from C}
363 So far we have concentrated on making C functions callable from
364 Python. The reverse is also useful: calling Python functions from C.
365 This is especially the case for libraries that support so-called
366 `callback' functions. If a C interface makes use of callbacks, the
367 equivalent Python often needs to provide a callback mechanism to the
368 Python programmer; the implementation will require calling the Python
369 callback functions from a C callback. Other uses are also imaginable.
371 Fortunately, the Python interpreter is easily called recursively, and
372 there is a standard interface to call a Python function. (I won't
373 dwell on how to call the Python parser with a particular string as
374 input --- if you're interested, have a look at the implementation of
375 the \samp{-c} command line option in \file{Python/pythonmain.c}.)
377 Calling a Python function is easy. First, the Python program must
378 somehow pass you the Python function object. You should provide a
379 function (or some other interface) to do this. When this function is
380 called, save a pointer to the Python function object (be careful to
381 \code{INCREF()} it!) in a global variable --- or whereever you see fit.
382 For example, the following function might be part of a module
383 definition:
385 \begin{verbatim}
386 static object *my_callback = NULL;
388 static object *
389 my_set_callback(dummy, arg)
390 object *dummy, *arg;
392 XDECREF(my_callback); /* Dispose of previous callback */
393 my_callback = arg;
394 XINCREF(my_callback); /* Remember new callback */
395 /* Boilerplate for "void" return */
396 INCREF(None);
397 return None;
399 \end{verbatim}
401 This particular function doesn't do any typechecking on its argument
402 --- that will be done by \code{call_object()}, which is a bit late but
403 at least protects the Python interpreter from shooting itself in its
404 foot. (The problem with typechecking functions is that there are at
405 least five different Python object types that can be called, so the
406 test would be somewhat cumbersome.)
408 The macros \code{XINCREF()} and \code{XDECREF()} increment/decrement
409 the reference count of an object and are safe in the presence of
410 \code{NULL} pointers. More info on them in the section on Reference
411 Counts below.
413 Later, when it is time to call the function, you call the C function
414 \code{call_object()}. This function has two arguments, both pointers
415 to arbitrary Python objects: the Python function, and the argument
416 list. The argument list must always be a tuple object, whose length
417 is the number of arguments. To call the Python function with no
418 arguments, you must pass an empty tuple. For example:
420 \begin{verbatim}
421 object *arglist;
422 object *result;
424 /* Time to call the callback */
425 arglist = newtupleobject(0);
426 result = call_object(my_callback, arglist);
427 DECREF(arglist);
428 \end{verbatim}
430 \code{call_object()} returns a Python object pointer: this is
431 the return value of the Python function. \code{call_object()} is
432 `reference-count-neutral' with respect to its arguments. In the
433 example a new tuple was created to serve as the argument list, which
434 is \code{DECREF()}-ed immediately after the call.
436 The return value of \code{call_object()} is `new': either it is a
437 brand new object, or it is an existing object whose reference count
438 has been incremented. So, unless you want to save it in a global
439 variable, you should somehow \code{DECREF()} the result, even
440 (especially!) if you are not interested in its value.
442 Before you do this, however, it is important to check that the return
443 value isn't \code{NULL}. If it is, the Python function terminated by raising
444 an exception. If the C code that called \code{call_object()} is
445 called from Python, it should now return an error indication to its
446 Python caller, so the interpreter can print a stack trace, or the
447 calling Python code can handle the exception. If this is not possible
448 or desirable, the exception should be cleared by calling
449 \code{err_clear()}. For example:
451 \begin{verbatim}
452 if (result == NULL)
453 return NULL; /* Pass error back */
454 /* Here maybe use the result */
455 DECREF(result);
456 \end{verbatim}
458 Depending on the desired interface to the Python callback function,
459 you may also have to provide an argument list to \code{call_object()}.
460 In some cases the argument list is also provided by the Python
461 program, through the same interface that specified the callback
462 function. It can then be saved and used in the same manner as the
463 function object. In other cases, you may have to construct a new
464 tuple to pass as the argument list. The simplest way to do this is to
465 call \code{mkvalue()}. For example, if you want to pass an integral
466 event code, you might use the following code:
468 \begin{verbatim}
469 object *arglist;
471 arglist = mkvalue("(l)", eventcode);
472 result = call_object(my_callback, arglist);
473 DECREF(arglist);
474 if (result == NULL)
475 return NULL; /* Pass error back */
476 /* Here maybe use the result */
477 DECREF(result);
478 \end{verbatim}
480 Note the placement of DECREF(argument) immediately after the call,
481 before the error check! Also note that strictly spoken this code is
482 not complete: \code{mkvalue()} may run out of memory, and this should
483 be checked.
486 \section{Format strings for {\tt getargs()}}
488 The \code{getargs()} function is declared in \file{modsupport.h} as
489 follows:
491 \begin{verbatim}
492 int getargs(object *arg, char *format, ...);
493 \end{verbatim}
495 The remaining arguments must be addresses of variables whose type is
496 determined by the format string. For the conversion to succeed, the
497 \var{arg} object must match the format and the format must be exhausted.
498 Note that while \code{getargs()} checks that the Python object really
499 is of the specified type, it cannot check the validity of the
500 addresses of C variables provided in the call: if you make mistakes
501 there, your code will probably dump core.
503 A non-empty format string consists of a single `format unit'. A
504 format unit describes one Python object; it is usually a single
505 character or a parenthesized sequence of format units. The type of a
506 format units is determined from its first character, the `format
507 letter':
509 \begin{description}
511 \item[\samp{s} (string)]
512 The Python object must be a string object. The C argument must be a
513 \code{(char**)} (i.e. the address of a character pointer), and a pointer
514 to the C string contained in the Python object is stored into it. You
515 must not provide storage to store the string; a pointer to an existing
516 string is stored into the character pointer variable whose address you
517 pass. If the next character in the format string is \samp{\#},
518 another C argument of type \code{(int*)} must be present, and the
519 length of the Python string (not counting the trailing zero byte) is
520 stored into it.
522 \item[\samp{z} (string or zero, i.e. \code{NULL})]
523 Like \samp{s}, but the object may also be None. In this case the
524 string pointer is set to \code{NULL} and if a \samp{\#} is present the
525 size is set to 0.
527 \item[\samp{b} (byte, i.e. char interpreted as tiny int)]
528 The object must be a Python integer. The C argument must be a
529 \code{(char*)}.
531 \item[\samp{h} (half, i.e. short)]
532 The object must be a Python integer. The C argument must be a
533 \code{(short*)}.
535 \item[\samp{i} (int)]
536 The object must be a Python integer. The C argument must be an
537 \code{(int*)}.
539 \item[\samp{l} (long)]
540 The object must be a (plain!) Python integer. The C argument must be
541 a \code{(long*)}.
543 \item[\samp{c} (char)]
544 The Python object must be a string of length 1. The C argument must
545 be a \code{(char*)}. (Don't pass an \code{(int*)}!)
547 \item[\samp{f} (float)]
548 The object must be a Python int or float. The C argument must be a
549 \code{(float*)}.
551 \item[\samp{d} (double)]
552 The object must be a Python int or float. The C argument must be a
553 \code{(double*)}.
555 \item[\samp{S} (string object)]
556 The object must be a Python string. The C argument must be an
557 \code{(object**)} (i.e. the address of an object pointer). The C
558 program thus gets back the actual string object that was passed, not
559 just a pointer to its array of characters and its size as for format
560 character \samp{s}. The reference count of the object has not been
561 increased.
563 \item[\samp{O} (object)]
564 The object can be any Python object, including None, but not
565 \code{NULL}. The C argument must be an \code{(object**)}. This can be
566 used if an argument list must contain objects of a type for which no
567 format letter exist: the caller must then check that it has the right
568 type. The reference count of the object has not been increased.
570 \item[\samp{(} (tuple)]
571 The object must be a Python tuple. Following the \samp{(} character
572 in the format string must come a number of format units describing the
573 elements of the tuple, followed by a \samp{)} character. Tuple
574 format units may be nested. (There are no exceptions for empty and
575 singleton tuples; \samp{()} specifies an empty tuple and \samp{(i)} a
576 singleton of one integer. Normally you don't want to use the latter,
577 since it is hard for the Python user to specify.
579 \end{description}
581 More format characters will probably be added as the need arises. It
582 should (but currently isn't) be allowed to use Python long integers
583 whereever integers are expected, and perform a range check. (A range
584 check is in fact always necessary for the \samp{b}, \samp{h} and
585 \samp{i} format letters, but this is currently not implemented.)
587 Some example calls:
589 \begin{verbatim}
590 int ok;
591 int i, j;
592 long k, l;
593 char *s;
594 int size;
596 ok = getargs(args, ""); /* No arguments */
597 /* Python call: f() */
599 ok = getargs(args, "s", &s); /* A string */
600 /* Possible Python call: f('whoops!') */
602 ok = getargs(args, "(lls)", &k, &l, &s); /* Two longs and a string */
603 /* Possible Python call: f(1, 2, 'three') */
605 ok = getargs(args, "((ii)s#)", &i, &j, &s, &size);
606 /* A pair of ints and a string, whose size is also returned */
607 /* Possible Python call: f(1, 2, 'three') */
610 int left, top, right, bottom, h, v;
611 ok = getargs(args, "(((ii)(ii))(ii))",
612 &left, &top, &right, &bottom, &h, &v);
613 /* A rectangle and a point */
614 /* Possible Python call:
615 f( ((0, 0), (400, 300)), (10, 10)) */
617 \end{verbatim}
619 Note that the `top level' of a non-empty format string must consist of
620 a single unit; strings like \samp{is} and \samp{(ii)s\#} are not valid
621 format strings. (But \samp{s\#} is.) If you have multiple arguments,
622 the format must therefore always be enclosed in parentheses, as in the
623 examples \samp{((ii)s\#)} and \samp{(((ii)(ii))(ii)}. (The current
624 implementation does not complain when more than one unparenthesized
625 format unit is given. Sorry.)
627 The \code{getargs()} function does not support variable-length
628 argument lists. In simple cases you can fake these by trying several
629 calls to
630 \code{getargs()} until one succeeds, but you must take care to call
631 \code{err_clear()} before each retry. For example:
633 \begin{verbatim}
634 static object *my_method(self, args) object *self, *args; {
635 int i, j, k;
637 if (getargs(args, "(ii)", &i, &j)) {
638 k = 0; /* Use default third argument */
640 else {
641 err_clear();
642 if (!getargs(args, "(iii)", &i, &j, &k))
643 return NULL;
645 /* ... use i, j and k here ... */
646 INCREF(None);
647 return None;
649 \end{verbatim}
651 (It is possible to think of an extension to the definition of format
652 strings to accommodate this directly, e.g. placing a \samp{|} in a
653 tuple might specify that the remaining arguments are optional.
654 \code{getargs()} should then return one more than the number of
655 variables stored into.)
657 Advanced users note: If you set the `varargs' flag in the method list
658 for a function, the argument will always be a tuple (the `raw argument
659 list'). In this case you must enclose single and empty argument lists
660 in parentheses, e.g. \samp{(s)} and \samp{()}.
663 \section{The {\tt mkvalue()} function}
665 This function is the counterpart to \code{getargs()}. It is declared
666 in \file{Include/modsupport.h} as follows:
668 \begin{verbatim}
669 object *mkvalue(char *format, ...);
670 \end{verbatim}
672 It supports exactly the same format letters as \code{getargs()}, but
673 the arguments (which are input to the function, not output) must not
674 be pointers, just values. If a byte, short or float is passed to a
675 varargs function, it is widened by the compiler to int or double, so
676 \samp{b} and \samp{h} are treated as \samp{i} and \samp{f} is
677 treated as \samp{d}. \samp{S} is treated as \samp{O}, \samp{s} is
678 treated as \samp{z}. \samp{z\#} and \samp{s\#} are supported: a
679 second argument specifies the length of the data (negative means use
680 \code{strlen()}). \samp{S} and \samp{O} add a reference to their
681 argument (so you should \code{DECREF()} it if you've just created it
682 and aren't going to use it again).
684 If the argument for \samp{O} or \samp{S} is a \code{NULL} pointer, it is
685 assumed that this was caused because the call producing the argument
686 found an error and set an exception. Therefore, \code{mkvalue()} will
687 return \code{NULL} but won't set an exception if one is already set.
688 If no exception is set, \code{SystemError} is set.
690 If there is an error in the format string, the \code{SystemError}
691 exception is set, since it is the calling C code's fault, not that of
692 the Python user who sees the exception.
694 Example:
696 \begin{verbatim}
697 return mkvalue("(ii)", 0, 0);
698 \end{verbatim}
700 returns a tuple containing two zeros. (Outer parentheses in the
701 format string are actually superfluous, but you can use them for
702 compatibility with \code{getargs()}, which requires them if more than
703 one argument is expected.)
706 \section{Reference counts}
708 Here's a useful explanation of \code{INCREF()} and \code{DECREF()}
709 (after an original by Sjoerd Mullender).
711 Use \code{XINCREF()} or \code{XDECREF()} instead of \code{INCREF()} or
712 \code{DECREF()} when the argument may be \code{NULL} --- the versions
713 without \samp{X} are faster but wull dump core when they encounter a
714 \code{NULL} pointer.
716 The basic idea is, if you create an extra reference to an object, you
717 must \code{INCREF()} it, if you throw away a reference to an object,
718 you must \code{DECREF()} it. Functions such as
719 \code{newstringobject()}, \code{newsizedstringobject()},
720 \code{newintobject()}, etc. create a reference to an object. If you
721 want to throw away the object thus created, you must use
722 \code{DECREF()}.
724 If you put an object into a tuple or list using \code{settupleitem()}
725 or \code{setlistitem()}, the idea is that you usually don't want to
726 keep a reference of your own around, so Python does not
727 \code{INCREF()} the elements. It does \code{DECREF()} the old value.
728 This means that if you put something into such an object using the
729 functions Python provides for this, you must \code{INCREF()} the
730 object if you also want to keep a separate reference to the object around.
731 Also, if you replace an element, you should \code{INCREF()} the old
732 element first if you want to keep it. If you didn't \code{INCREF()}
733 it before you replaced it, you are not allowed to look at it anymore,
734 since it may have been freed.
736 Returning an object to Python (i.e. when your C function returns)
737 creates a reference to an object, but it does not change the reference
738 count. When your code does not keep another reference to the object,
739 you should not \code{INCREF()} or \code{DECREF()} it (assuming it is a
740 newly created object). When you do keep a reference around, you
741 should \code{INCREF()} the object. Also, when you return a global
742 object such as \code{None}, you should \code{INCREF()} it.
744 If you want to return a tuple, you should consider using
745 \code{mkvalue()}. This function creates a new tuple with a reference
746 count of 1 which you can return. If any of the elements you put into
747 the tuple are objects (format codes \samp{O} or \samp{S}), they
748 are \code{INCREF()}'ed by \code{mkvalue()}. If you don't want to keep
749 references to those elements around, you should \code{DECREF()} them
750 after having called \code{mkvalue()}.
752 Usually you don't have to worry about arguments. They are
753 \code{INCREF()}'ed before your function is called and
754 \code{DECREF()}'ed after your function returns. When you keep a
755 reference to an argument, you should \code{INCREF()} it and
756 \code{DECREF()} when you throw it away. Also, when you return an
757 argument, you should \code{INCREF()} it, because returning the
758 argument creates an extra reference to it.
760 If you use \code{getargs()} to parse the arguments, you can get a
761 reference to an object (by using \samp{O} in the format string). This
762 object was not \code{INCREF()}'ed, so you should not \code{DECREF()}
763 it. If you want to keep the object, you must \code{INCREF()} it
764 yourself.
766 If you create your own type of objects, you should use \code{NEWOBJ()}
767 to create the object. This sets the reference count to 1. If you
768 want to throw away the object, you should use \code{DECREF()}. When
769 the reference count reaches zero, your type's \code{dealloc()}
770 function is called. In it, you should \code{DECREF()} all object to
771 which you keep references in your object, but you should not use
772 \code{DECREF()} on your object. You should use \code{DEL()} instead.
775 \section{Writing extensions in \Cpp{}}
777 It is possible to write extension modules in \Cpp{}. Some restrictions
778 apply: since the main program (the Python interpreter) is compiled and
779 linked by the C compiler, global or static objects with constructors
780 cannot be used. All functions that will be called directly or
781 indirectly (i.e. via function pointers) by the Python interpreter will
782 have to be declared using \code{extern "C"}; this applies to all
783 `methods' as well as to the module's initialization function.
784 It is unnecessary to enclose the Python header files in
785 \code{extern "C" \{...\}} --- they do this already.
788 \chapter{Embedding Python in another application}
790 Embedding Python is similar to extending it, but not quite. The
791 difference is that when you extend Python, the main program of the
792 application is still the Python interpreter, while if you embed
793 Python, the main program may have nothing to do with Python ---
794 instead, some parts of the application occasionally call the Python
795 interpreter to run some Python code.
797 So if you are embedding Python, you are providing your own main
798 program. One of the things this main program has to do is initialize
799 the Python interpreter. At the very least, you have to call the
800 function \code{initall()}. There are optional calls to pass command
801 line arguments to Python. Then later you can call the interpreter
802 from any part of the application.
804 There are several different ways to call the interpreter: you can pass
805 a string containing Python statements to \code{run_command()}, or you
806 can pass a stdio file pointer and a file name (for identification in
807 error messages only) to \code{run_script()}. You can also call the
808 lower-level operations described in the previous chapters to construct
809 and use Python objects.
811 A simple demo of embedding Python can be found in the directory
812 \file{Demo/embed}.
815 \section{Embedding Python in \Cpp{}}
817 It is also possible to embed Python in a \Cpp{} program; precisely how this
818 is done will depend on the details of the \Cpp{} system used; in general you
819 will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
820 to compile and link your program. There is no need to recompile Python
821 itself using \Cpp{}.
824 \chapter{Dynamic Loading}
826 On most modern systems it is possible to configure Python to support
827 dynamic loading of extension modules implemented in C. When shared
828 libraries are used dynamic loading is configured automatically;
829 otherwise you have to select it as a build option (see below). Once
830 configured, dynamic loading is trivial to use: when a Python program
831 executes \code{import foo}, the search for modules tries to find a
832 file \file{foomodule.o} (\file{foomodule.so} when using shared
833 libraries) in the module search path, and if one is found, it is
834 loaded into the executing binary and executed. Once loaded, the
835 module acts just like a built-in extension module.
837 The advantages of dynamic loading are twofold: the `core' Python
838 binary gets smaller, and users can extend Python with their own
839 modules implemented in C without having to build and maintain their
840 own copy of the Python interpreter. There are also disadvantages:
841 dynamic loading isn't available on all systems (this just means that
842 on some systems you have to use static loading), and dynamically
843 loading a module that was compiled for a different version of Python
844 (e.g. with a different representation of objects) may dump core.
847 \section{Configuring and building the interpreter for dynamic loading}
849 There are three styles of dynamic loading: one using shared libraries,
850 one using SGI IRIX 4 dynamic loading, and one using GNU dynamic
851 loading.
853 \subsection{Shared libraries}
855 The following systems support dynamic loading using shared libraries:
856 SunOS 4; Solaris 2; SGI IRIX 5 (but not SGI IRIX 4!); and probably all
857 systems derived from SVR4, or at least those SVR4 derivatives that
858 support shared libraries (are there any that don't?).
860 You don't need to do anything to configure dynamic loading on these
861 systems --- the \file{configure} detects the presence of the
862 \file{<dlfcn.h>} header file and automatically configures dynamic
863 loading.
865 \subsection{SGI dynamic loading}
867 Only SGI IRIX 4 supports dynamic loading of modules using SGI dynamic
868 loading. (SGI IRIX 5 might also support it but it is inferior to
869 using shared libraries so there is no reason to; a small test didn't
870 work right away so I gave up trying to support it.)
872 Before you build Python, you first need to fetch and build the \code{dl}
873 package written by Jack Jansen. This is available by anonymous ftp
874 from host \file{ftp.cwi.nl}, directory \file{pub/dynload}, file
875 \file{dl-1.6.tar.Z}. (The version number may change.) Follow the
876 instructions in the package's \file{README} file to build it.
878 Once you have built \code{dl}, you can configure Python to use it. To
879 this end, you run the \file{configure} script with the option
880 \code{--with-dl=\var{directory}} where \var{directory} is the absolute
881 pathname of the \code{dl} directory.
883 Now build and install Python as you normally would (see the
884 \file{README} file in the toplevel Python directory.)
886 \subsection{GNU dynamic loading}
888 GNU dynamic loading supports (according to its \file{README} file) the
889 following hardware and software combinations: VAX (Ultrix), Sun 3
890 (SunOS 3.4 and 4.0), Sparc (SunOS 4.0), Sequent Symmetry (Dynix), and
891 Atari ST. There is no reason to use it on a Sparc; I haven't seen a
892 Sun 3 for years so I don't know if these have shared libraries or not.
894 You need to fetch and build two packages. One is GNU DLD 3.2.3,
895 available by anonymous ftp from host \file{ftp.cwi.nl}, directory
896 \file{pub/dynload}, file \file{dld-3.2.3.tar.Z}. (As far as I know,
897 no further development on GNU DLD is being done.) The other is an
898 emulation of Jack Jansen's \code{dl} package that I wrote on top of
899 GNU DLD 3.2.3. This is available from the same host and directory,
900 file dl-dld-1.1.tar.Z. (The version number may change --- but I doubt
901 it will.) Follow the instructions in each package's \file{README}
902 file to configure build them.
904 Now configure Python. Run the \file{configure} script with the option
905 \code{--with-dl-dld=\var{dl-directory},\var{dld-directory}} where
906 \var{dl-directory} is the absolute pathname of the directory where you
907 have built the \file{dl-dld} package, and \var{dld-directory} is that
908 of the GNU DLD package. The Python interpreter you build hereafter
909 will support GNU dynamic loading.
912 \section{Building a dynamically loadable module}
914 Since there are three styles of dynamic loading, there are also three
915 groups of instructions for building a dynamically loadable module.
916 Instructions common for all three styles are given first. Assuming
917 your module is called \code{foo}, the source filename must be
918 \file{foomodule.c}, so the object name is \file{foomodule.o}. The
919 module must be written as a normal Python extension module (as
920 described earlier).
922 Note that in all cases you will have to create your own Makefile that
923 compiles your module file(s). This Makefile will have to pass two
924 \samp{-I} arguments to the C compiler which will make it find the
925 Python header files. If the Make variable \var{PYTHONTOP} points to
926 the toplevel Python directory, your \var{CFLAGS} Make variable should
927 contain the options \samp{-I\$(PYTHONTOP) -I\$(PYTHONTOP)/Include}.
928 (Most header files are in the \file{Include} subdirectory, but the
929 \file{config.h} header lives in the toplevel directory.) You must
930 also add \samp{-DHAVE_CONFIG_H} to the definition of \var{CFLAGS} to
931 direct the Python headers to include \file{config.h}.
934 \subsection{Shared libraries}
936 You must link the \samp{.o} file to produce a shared library. This is
937 done using a special invocation of the \UNIX{} loader/linker, {\em
938 ld}(1). Unfortunately the invocation differs slightly per system.
940 On SunOS 4, use
941 \begin{verbatim}
942 ld foomodule.o -o foomodule.so
943 \end{verbatim}
945 On Solaris 2, use
946 \begin{verbatim}
947 ld -G foomodule.o -o foomodule.so
948 \end{verbatim}
950 On SGI IRIX 5, use
951 \begin{verbatim}
952 ld -shared foomodule.o -o foomodule.so
953 \end{verbatim}
955 On other systems, consult the manual page for {\em ld}(1) to find what
956 flags, if any, must be used.
958 If your extension module uses system libraries that haven't already
959 been linked with Python (e.g. a windowing system), these must be
960 passed to the {\em ld} command as \samp{-l} options after the
961 \samp{.o} file.
963 The resulting file \file{foomodule.so} must be copied into a directory
964 along the Python module search path.
967 \subsection{SGI dynamic loading}
969 {bf IMPORTANT:} You must compile your extension module with the
970 additional C flag \samp{-G0} (or \samp{-G 0}). This instruct the
971 assembler to generate position-independent code.
973 You don't need to link the resulting \file{foomodule.o} file; just
974 copy it into a directory along the Python module search path.
976 The first time your extension is loaded, it takes some extra time and
977 a few messages may be printed. This creates a file
978 \file{foomodule.ld} which is an image that can be loaded quickly into
979 the Python interpreter process. When a new Python interpreter is
980 installed, the \code{dl} package detects this and rebuilds
981 \file{foomodule.ld}. The file \file{foomodule.ld} is placed in the
982 directory where \file{foomodule.o} was found, unless this directory is
983 unwritable; in that case it is placed in a temporary
984 directory.\footnote{Check the manual page of the \code{dl} package for
985 details.}
987 If your extension modules uses additional system libraries, you must
988 create a file \file{foomodule.libs} in the same directory as the
989 \file{foomodule.o}. This file should contain one or more lines with
990 whitespace-separated options that will be passed to the linker ---
991 normally only \samp{-l} options or absolute pathnames of libraries
992 (\samp{.a} files) should be used.
995 \subsection{GNU dynamic loading}
997 Just copy \file{foomodule.o} into a directory along the Python module
998 search path.
1000 If your extension modules uses additional system libraries, you must
1001 create a file \file{foomodule.libs} in the same directory as the
1002 \file{foomodule.o}. This file should contain one or more lines with
1003 whitespace-separated absolute pathnames of libraries (\samp{.a}
1004 files). No \samp{-l} options can be used.
1007 \input{ext.ind}
1009 \end{document}