This file lists the incompatible changes between Version 2.x and older versions

%%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

* The calculator GP:
====================
  - Default args for user defined functions now evaluated when function is
    called (used to be: at definition time)
    E.g f(x) = local(z = x); z. 
    Before: f(2) --> x
    Now:    f(2) --> 2
  
  - rnfisnorm() input format has changed. Older version was complicated and
    only worked if rnfequation(bnf, p, 1)[3] == 0  [otherwise, crash].
    Use rnfisnorminit() now.

  - rnfidealreltoabs, rnfidealup: now return a Z-basis as a vector of
    elements in the relative extension, instead of a meaningless HNF matrix
    wrt an unknown basis. Was especially dangerous if the extension also existed
    in nfinit form, since the HNF matrices were _not_ ideals wrt this nf
    structure. [ also consistent with rnfeltreltoabs ]. Use the following
    construction instead, referring to an explicit NF structure:

      \\ return y = rnfidealup(rnf,...) as an ideal in HNF form associated to
      \\ nf = nfinit(rnf.pol);
      idealgentoHNF(nf, y) =
      {
        local(z); z = nfalgtobasis(nf, y);
        z[1] = Mat(z[1]); mathnf( concat(z) );
      }

  - the "bitaccuracy component" for computations of principal ideal generators
    (bnfisprincipal), units (bnfunit), and some of the bnf structures has
    been removed.

  - the "technical parameter" to bnfinit() has been shortened to 3 components
    (the others were deprecated / useless): [c, c2, nrpid].


* The library PARI:
===================
  - gsize() renamed to sizedigit()  [conflict with gtk]
  - hnfhavas removed (didn't work properly, hnflll provides an alternative)
  - real zeroes are now coded on 2 words. Beware of constructs like
    t = cgetg(lg(x), t_REAL); gaffect(y, t). If x = 0, so will be t
  - polgalois(): old format deprecated. New preferred format for result 
    has 3rd component giving numbering among all transitive subgroups of S_n
    [ was ad hoc up to 7, as described above for n >= 8 ]. Old format is
    still the default, but will eventually change. Use
    default(new_galois_format, 1) or, in library mode, set global variable
    new_galois_format to 1 to enable the new format.
  - The nf structure output by nfinit has changed: 
    *) nf.zk is now T2-LLL-reduced, not in HNF wrt the power basis
    *) the internal components of nf[5] have changed (MC and T2 not needed
       anymore)
  - polred & polredabs do not take a 'prec' argument anymore [was unused]
  - gentimer / genmsgtimer have been removed. They are superseded by TIMER
    and msgTIMER which are fully reentrant and easier to use.
  - (undocumented) macros buch[gen | genfu | init | iniftu]
  - rnfisnorm() prototype has changed [ + need to call rnfisnorminit first ]
  - incgam4 renamed to incgam0, incgam3 renamed to incgamc
  - prototypes of buchall and smallbuchinit have changed (much simpler)

%%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

* The calculator GP:
====================
 - most function names have changed (see misc/new.dic or use whatnow under GP)
 - lowercase / uppercase letters distinguished.
 - the syntax \var = value is not recognized anymore. Use standard
   metacommands instead.
(setting the compatibility level "compatible" to 3, with "default" will give
you those three back).

 - strict parenthesis matching before executing the command
(set strictmatch to 0 to get old behaviour)

 - functions label / goto have been removed (use break/next/return instead).
 - conjugation x_ has been removed. '_' can be freely used in identifiers.
 - \k metacommand removed

 - result history is now cyclic (older results are erased when the maximal
   size "histsize" is reached).
 - the Set() function turns objects into strings (so that set functions are
   able to treat arbitrary objects). Use eval to turn them back to GENs.
 - the type() function returns a string and not a number.
 - sum(X=a,b,...,x) yields x if b<a. Analogous statement for prod.

* The library PARI:
===================
 - use symbolic type names (t_INT, etc.). Don't use any explicit type number
   in your programs since these are liable to change (they have not, but will).
 - the codewords of GEN objects have a different internal structure. The
   components should only be accessed through the documented macros. When
   creating codeword x[1] for the GEN x, use the eval* macros (the set* ones
   don't fill the codeword completely).
 - the following constant names have changed ("pari" prepended): C1, C2, C3, K,
   K1, K2, K4. The constant C31 has disappeared.
 - prec and defaultpadicprecision are no longer global. The latter has
   disapeared.
 - char *pariversion not set anymore (use the macros PARIVERSION/PARIINFO)
 - LONG_IS_32BIT is never defined (test whether LONG_IS_64BIT is defined
   or not).
 - gen2str() renamed to GENtostr().
 - gitoascii() suppressed, use GENtostr().
 - init() renamed to pari_init().
 - the macro mant() has been suppressed.
 - imprimer() suppressed. output() is now a function and can be used under
   all debuggers.
 - the prototypes and behaviour of gredsp() and normalize() have changed.
   They are not documented anymore.
 - the install() function has been modified (use codes instead of valence).
 - gpuigs only has two arguments.
 - integ now takes two arguments, like deriv.
 - setrand, getrand, getstack, gettime, glength return a C long, and not a GEN.
 - pari_randseed no longer global, use setrand/getrand
 - gerepile(ltop,lbot,0) no longer returns ltop - lbot
 - nf[5][7] stored in two element form (was Z-basis) for faster inversion
 - t_POL and t_POLMOD can be freely mixed as long as main variables are the
   same (result is the expected POLMOD)

