From: Richard Kreckel Date: Tue, 5 Apr 2016 20:51:12 +0000 (+0200) Subject: Merge branch 'c++11' in preparation for version 1.7.0. X-Git-Tag: release_1-7-0~7 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=9413cd14faaf2980de3884915e22a5beda068ecc;hp=75eb4d8abee66a844c9d1b23f1e001c860e8de7d Merge branch 'c++11' in preparation for version 1.7.0. --- diff --git a/NEWS b/NEWS index c8220f42..aa6d33c7 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,45 @@ This file records noteworthy changes. +1.7.0 (TDB) +* Make use of C++11 features: + - Use new language features 'auto', 'nullptr', 'constexpr', range-based for + loops, the contextual keyword 'override', static 'noexcept' operator, etc. + - Add initializer list ctors for container<>, lst and nested initializer + lists ctor for class matrix. + - Add many rvalue reference overloads for ctors from std containers. (Note + that whether they really speed up things depends on whether evaluation + leaves the container unchanged or not.) + - Rvalue reference overloads for ctors from std containers made it possible + to remove the manual 'discardable' hack and std::auto_ptr for good. + - New dynallocate(args...) helper functions obsolete manual allocation + on the heap and setting the dynallocated status flag. + - Got rid of C++98ish algorithm features (bind2nd, etc.) and replaced them + with lambdas. +* Make add::eval(), mul::eval() more careful so they return an evaluated, + canonical expression without compromise. +* Remove 'level' argument of all .eval() methods. This has become possible by + ensuring that add::eval() and mul::eval() evaluate their own structure + without compromise (this was not guaranteed before). If all ex are evaluated, + any object which is an aggregate of such ex will only ever have to + evaluate itself, obsoleting the need for recursing. +* Remove 'level' arguments of all .evalf() and .normal() methods. They were + modeled after the .eval() methods. +* Make relational::rhs() and lhs() nonvirtual. +* Add support for power::info(info_flags::real). +* Remove broken info_flags::algebraic. +* Remove unmaintained support for Cint. +* Remove unfinished andcode for hash table-based expairseq. +* Remove deprecated ex::to_rational(lst) and ex::to_polynomial(lst). +* ginac-excompiler installs in $LIBEXECDIR now, not in $BINDIR. +* Many minor performance enhancements. + +1.6.7 (29 February 2016) +* Fix elusive bug in sqrfree(), normal(), numer(), and denom(). + +1.6.6 (20 December 2015) +* Fix elusive bug in add::eval(). +* Several minor performance enhancements. + 1.6.5 (27 July 2015) * Fix pow(+(...),2).expand() where the sum contained roots of expressions. * Speed-up pow(+(...),n).expand() where n > 3. diff --git a/ginac/version.h b/ginac/version.h index ba16c2ac..8a62970d 100644 --- a/ginac/version.h +++ b/ginac/version.h @@ -27,10 +27,10 @@ #define GINACLIB_MAJOR_VERSION 1 /* Minor version of GiNaC */ -#define GINACLIB_MINOR_VERSION 6 +#define GINACLIB_MINOR_VERSION 7 /* Micro version of GiNaC */ -#define GINACLIB_MICRO_VERSION 5 +#define GINACLIB_MICRO_VERSION 0 // GiNaC library version information. It has very little to do with GiNaC // version number. In particular, library version is OS dependent. @@ -49,8 +49,8 @@ // increasing. This doesn't matter, though: there is not incurred cost // for numbers that are omitted, except for shrinking the available space // of leftover numbers. Not something we need to worry about yet. ;-) -#define GINAC_LT_CURRENT 5 -#define GINAC_LT_REVISION 1 +#define GINAC_LT_CURRENT 6 +#define GINAC_LT_REVISION 0 #define GINAC_LT_AGE 0 /*