]> 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 333f226838240f5422be0034f1f45e2631eac749..da87a2bbcc9cf27bfe7cd2aaf96a1a5a2c376405 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,22 +3,33 @@ 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.
-* <visitors>
-* <new-style printing>
-* <noncommutative symbols>
-* Improved the speed of subs() and normal() by the use of maps instead of
-  lists.
+* 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>
-* Many internal reorganizations and optimizations.
+* 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() and basic::normal() take an 'exmap &' instead of two
-     'lst &'.
+   - 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