Version 0.9.10 - Migration advices (due to some API and compilation process changes) * as MLGMPIDL is not included anymore, you may want to consider - either apron-dist-XXX.tgz packages - or svn co http://svn.cri.ensmp.fr/svn/apron/apron-dist/trunk apron-dist that include it. * Makefile.config: ° new variables HAS_SHARED and OCAMLMKLIB * C API: ° ap_pkgrid_manager_alloc has a new signature * OCaml API: ° PolkaGrid.manager_alloc_(loose|strict) are replaced by PolkaGrid.manager_alloc with a new signature. * OCaml compilation and Makefiles ° Typical commands ocamlc -o mlexample.byte bigarray.cma gmp.cma apron.cma box.cma -cclib "-lboxMPQ" mlexample.ml ocamlopt -o mlexample.opt bigarray.cmxa gmp.cmxa apron.cmxa box.cmxa -cclib "-lboxMPQ" mlexample.ml are replaced by ocamlc -o mlexample.byte bigarray.cma gmp.cma apron.cma boxMPQ.cma mlexample.ml ocamlopt -o mlexample.opt bigarray.cmxa gmp.cmxa apron.cmxa boxMPQ.cmxa mlexample.ml - Distribution/Packaging * MLGMPIDL not included anymore. If you want to include it with apron, consider: - either apron-dist-XXX.tgz packages - or svn co http://svn.cri.ensmp.fr/svn/apron/apron-dist/trunk apron-dist * Optional interface to PPL upgraded to 0.10 (but still support only polyhedra and linear congruences). No need with version 0.10 to apply a patch (see ppl/README for more details. - Compilation and linking process * Support for dynamic libraries added (new HAS_SHARED flag in Makefile.config) * IMPORTANT CHANGE for OCaml compilation: (see migration advices) - OCaml library files box.cma, polka.cma become now boxMPQ.cma, boxRll.cma, polkaRll.cma, etc... ° No need any more to use the -cclib option to choose the underlying number representation. ° Former box.cma, oct.cma, polka.cma are soft links to MPQ versions (for compatibility - Use of dynamic libraries when possible, with -dllib feature of ocamlc for bytecode executables. ° No need for custom bytecode interpreter and toplevel ° Enable the use of pretty-printer depending on C code in ocamldebug - API * Better (correct) signature for Abstract0.permute_dimensions: old: permute_dimensions : 'a Manager.t -> 'a t -> Dim.perm option -> 'a t new: permute_dimensions : 'a Manager.t -> 'a t -> Dim.perm -> 'a t * pkgrid/PolkaGrid product library: new signature for the manager allocation function * New ap_dimchange2_t datatype, for specifying addition followed by removal of dimensions. Generated by ap_environment_dimchange2 function and used by ap_abstract0_apply_dimchange2 function. * Octagon domain now supports hashing * Newpolka library: real canonical form for strict polyhedra, compatible with the hash function. * OCaml API for domains (box,oct,polka,ppl,polkaGrid): new functions allowing type conversion (for instance between Oct.t Apron.Manager.t and 'a Apron.Manager.t). - Bugs corrected: several - Internal API * Change of signature for itv_join (now requires itv_internal_t* object); Version 0.9.9: - API: * Important change: tbool_t replaced by bool in tests in flags exact and best (C modules ap_abstractX and ap_manager, OCaml modules AbstractX and Manager) In source code, * tbool_top,tbool_false should be replaced by false, * f(...)==tbool_true by f(...) * f(...)!=tbool_true by !f(...) * MPFR numbers added as possible numerical types (besides GMP MPQ and C double) * hash functions added in most places: * bound_hash, itv_hash, linexpr0_hash, texpr0_hash, ap_abstract0_hash, ap_abstract1_hash, ap_environment_hash, ap_var_hash * in libraries, hash implemented for itv and newpolka (for others, raises not implemented). * in OCaml API, used as a custom hash function for corresponding abstract types. * Functions added * OCaml: Linexpr0.of_list, Linexpr0.of_array, Environment.lce_change, Environment.rename_perm * Internal functions added/modified * num: num_integer, numrat_inv added * apron: spec of ap_texpr0_max_dim modified - Distribution/Packaging * Instruction files REAME.windows and README.mac files, some problems corrected. * Makefile.config.model simplified - Bugs corrected: several, in particular: * Special cases with abstract values in dimension 0, and null arrays in nassign/substitution functions and add_dimensions/remove_dimensions * ap_fpu_init for Mac * itv_lincons_reduce_integer (normalisation of integer constraints) Version 0.9.8 * ap_linexpr0_compare - New C++ interface, still experimental - Instructions for compilation under Windows - Clarification of license issues related to the PPL (under GPL license, whereas APRON is LGPL) - Several bugs corrections Version 0.9.7 Many changes ! General: - Addition of the reduced product of linear inequalities (from Polka library) and linear congruences (from PPL library). - Addition of tree expressions and constraints, generalizing linear expressions and constraints with * non-linear operations (multiplication, division, square root, ...) * integer, rational/real and floating-point semantics C interface: - API: * Addition of ap_abstract1_unify function * Modification of the signature of ap_environment_remove - some (redundant) functions removed from the API requested from underlying domains, but still provided through the APRON interface (level 0 and 1) for compatibility reasons: * of_lincons_array * assign_linexpr, substitute_linexpr (superseded by assign_linexpr_array, substitute_linexpr_array). - Suffixes of C libraries names indicating internal number representation made more systematic and uniform among various underlying libraries: * Il, Ill, MPZ: denotes resp. long int, long long int, mpz_t (GMP) * Rl, Rll, MPQ: denotes resp. rationals using long int, long long int, and mpq_t (GMP) * D, Dl: denotes resp. double and long double C library name without suffix (eg, libpolka.a) corresponds to the default suffix MPQ. - Other changes in library organisation: * libitv.a integrated in libapron.a * libapron_ppl.a renamed in libap_ppl.a, libppl_caml.a renamed in libap_ppl_caml.a OCaml interface - Linking simplified thanks to the change in C libraries (see above). - API: * Addition of Environment.lce, Abstract1.unify (Abstract1.unify_with) functions * Modification of the signature of Environment.remove Version 0.9.6 OCaml interface - PPL module - Parsing extended for congruence equalities and congruence generators. General: - Addition of PPL *convex polyhedra* and *linear congruences* (grids) abstract domains - Some internal reorganisation apron/ap_linearize module added - Full support for interval linear expressions and linearisation to (quasi-)linear expressions in NewPolka and PPL libraries. Well tested for quasilinear expressions, not yet for full interval linear expressions. - Many bugs corrected. Version 0.9.5 OCaml interface - Better type systems, similar to the system used by the [Bigarray] library of the OCaml standard distribution. - Generation and installation in $(APRON_PREFIX)/bin of apronrun and aprontop executables in the main Makefile. C interface: - Use of const qualifier removed in the API, except for strings (const char *) General: - mpfr library now required in addition to gmp library. - conversions between mpq_t and double are now safer, thanks to the use of mpfr. - itv becomes box. - package num extended with a new package itv, used currently by box. - support for linear congruences added in constraints and generators. - NewPolka offers a layer for linear equalities only, in addition to more general linear inequalities. - Improved Makefiles and Makefile.config.model - Bugs corrected, in particular in Box and Newpolka. Version 0.9.4 - Modification of Makefile and Makefile.config.model - Updated documentation - OCaml linking: apron.cmo, polka.cmo, oct.cmo... become libraries apron.cma, polka.cma,... that reference needed C libraries, with the exception of libpolkaXX, liboctXX, ... This is documented in READMEs and doc. - mlapronidl: Added string parsing (module Parser) - newpolka: * Stronger normalization in widening for strict constraints * Bug fixed (some of them were severe)