Bill Allombert on Sun, 15 May 2005 22:02:38 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
GP2C-0.0.4 released |
Hello PARI-dev, I have just released GP2C 0.0.4, the GP to C compiler You can get it here: <http://pari.math.u-bordeaux.fr/pub/pari/GP2C/gp2c-0.0.4.tar.gz> This is a major release, The main goal being to generate nicer code that follow the current libpari interface and the C standard. There are some changes to the interface, only the first being backward incompatible: 1) Variables declared with a type do not have a default value anymore. See "Effect of types declaration on default values" in the manual. This means the following is not allowed anymore: func(x:gen)=x^2+1 f() /*argument missing*/ If you want to allow x to be omitted, you need to specify a default value explicitly: func(x:gen=0)=x^2+1 f() /*OK*/ However, if you do not specify a type, the old behaviour is preserved: func(x)=x^2+1 f() /*OK*/ 2) PARI/GP 2.1 is still supported but will not pass the test-suite, because it has a bug in the prototype parser and it does not support forvec in library mode. 3) You can now redefine a function. this is not very useful since only the second definition is used, and GP2C will emit a warning, but this allow the code below to compile: foo(x)=; addhelp(foo,"Meta-syntatic function") foo(x)= { ... } 4) ./configure now support a option --with-paricfg.dbg. This allow to specify the pari.cfg file of a PARI installation compiled with ./Configure -g and is used by gp2c-dbg, so you can have at the same time gp2c-run using optimised PARI binaries and gp2c-dbg using debugging PARI binaries. 5) You can add custom GP2C descriptions to desc/override.desc to tweak gp2c behaviour. 6) You can define the types of several variables at once using the following syntax: local(var1,var2,var3):type this is a short-hand for local(var1:type,var2:type,var3:type) 7) Now gp2c support complex expressions as default values: For example f(x=[1,2])=local(z=vector(2,i,i));x+z will compile. However beware tat the semantic might not match GP semantic in self-referential cases: f(x,y=x)=[x,y] f(2) will return [2,2], while GP would return [2,x]. 8) prodeuler is now supported. 9) This release was checked to work on a 64-bit plateform. Additionally, a lot of other changes were made to make gp2c generate code that follows the current libpari style (in particular it use gel(), gerepileall(), NEXT_PRIME_VIA_DIFF() when available). Cheers, Bill.