Bill Allombert on Sat, 29 Jun 2002 18:57:34 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Interface definition for PARI/GP


Hello PARI/GP developers,

Currently most of the interface between the library and the language is built-in
the file src/language/init.c as the function_basic array.

This scheme has several short-comings:
1) External programs that rely on this interface need to parse this file which
is not installed on the system (src/language/init.c, etc). This may cause
version mismatch
2) Only the information needed by GP is available.
3) To extend the interface, you need to change several files.

We are planning to change this to the following scheme:

1) We put the definition in a database in easy to parse plain text format.

2) We write script that rebuild the tables in src/language/init.c (and other)
from the database.

3) We make sure 'make distrib' put the updated src/language/init.c in the
tarball, so that only CVS users will need to effectively rebuild the source
files. This allows use to write the scripts in perl without requiring perl
to rebuild the tarball.

4) `make install' will install the database in /usr/share/pari so that
external programs can get the database.

5) External programs not aware of the database can still use the sources
directly. Well it may happen that we move functions_basic to a separate file
though.

6) We provide scripts to parse the database by external programs.

We plan to have the database in RFC 822 format (the mail header format).
This format is easily extensible by adding new keys/value pairs.
Our current implementation output for bnfinit

Function: bnfinit
List: basic
Section: 6
C-Name: bnfinit0
Prototype: GD0,L,DGp
Type: gen

Cheers,

Bill.