]> www.ginac.de Git - ginac.git/blobdiff - NEWS
some attempts to squeeze performance out of mul::expand()
[ginac.git] / NEWS
diff --git a/NEWS b/NEWS
index 13d6253997974a5f15a19d5bc4a05c11255653ed..da87a2bbcc9cf27bfe7cd2aaf96a1a5a2c376405 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,15 +3,41 @@ This file records noteworthy changes.
 1.2.0 (<insert date>)
 * Added a structure<T> template class for the easy creation of user-defined
   algebraic classes.
-* Many internal reorganizations and optimizations.
+* Added support for (acyclic) visitors, to allow cleaner implementations of
+  algebraic algorithms.
+* <iterators>
+* Completely revamped the implementation of expression output. It is now
+  possible to add new output formats, to change the behavior of predefined
+  formats at run-time, and to have different output styles for algebraic
+  functions.
+* Symbols can be made non-commutative.
+* Improved the speed of subs(), normal(), to_rational() and to_polynomial()
+  by the use of maps instead of lists. The old forms
+    subs(const lst & ls, const lst & lr, unsigned options)
+    to_rational/to_polynomial(lst & repl)
+  are still available for compatibility, but using the new forms
+    subs(const exmap & m, unsigned options)
+    to_rational/to_polynomial(exmap & repl)
+  is more efficient, especially when the number of replacements is large.
+* quo(), rem(), prem(), sprem(), decomp_rational(), unit(), content(),
+  primpart() and matrix::charpoly() now take a "const ex &" instead of a
+  "const symbol &".
+* <object fusion>
+* Lots of internal streamlining and optimizations.
 * Caveats for class implementors:
    - basic::copy() and basic::destroy() are gone; classes derived from
      basic can use the defaults for the assignment operator and copy
      constructor.
+   - basic::subs(), basic::normal(), basic::to_rational() and
+     basic::to_polynomial() take 'exmap' objects instead of lists.
    - basic::subs() now descends into subexpressions (if accessible via
      nops()/op()/let_op()). If you have a custom implementation of subs()
      that calls basic::subs() after substituting subexpressions, this needs
      to be changed to a call to subs_one_level().
+   - lst::thislst() and exprseq::thisexprseq() renamed to thiscontainer().
+   - thiscontainer() and associated constructors now take a std::auto_ptr.
+   - Overloading basic::print() is now deprecated. You should use
+     print_func<>() class options instead.
 
 1.1.0 (3 April 2003)
 * Removed deprecated macros is_ex_a, is_ex_exactly_a and friends for good.