# Change log

The list below gives a human-readable overview of the changes from one version to the next. For details of precisely what is changed at the code level, consult the github repository. Odd patch levels correspond to versions in development, even numbered ones are released in packaged form.

### github master

- Fix to make simplify see the Mathematica backend again.
- Fix export of notebooks to LaTeX.
- Fix display of LaTeXForm property declaration.
- Added Python methods to traverse the expression tree.
- Fix for power simplification bug (github/85)
- Fix to make command line version accept primes in expression input (github/85)
- Fix for indices being treated as dependencies (github/89)
- Various improvements
for
`replace_match`. - Optional syntax highlighting in input cells.
- Added
`lower_free_indices`and`raise_free_indices`. - Various small fixes for terminal output.
- 'Evaulate to cursor' in the notebook now works.
- Substituting now properly distinguishes between indices and non-indices, see this Q&A post.
- Added
`einsteinify`. - Do not attempt to write out sums over index values
in
`evaluate`if the range is not known, simply keep them unevaluated (instead of throwing an error). - Introducing
`zoom`/unzoom as a more friendly and powerful alternative to`take_match`/`replace_match`. - Fix for display of LaTeXForm'ed objects in sub/superscripts.

### 2.2.0 "Easter Bunny" (released 29-Mar-2018)

- Now builds on Windows.
- Experimental support for modifying the expression tree directly from Python (see e.g. Fourier transforms).
- Now building on OpenBSD.
- Fix for integration by parts (github/71)
- Fix for incorrect conversion to sympy expressions.
- Optionally build with support for (experimental!) Mathematica scalar
backend; see
`map_mma`. - Many bugfixes for expression display and sympy conversion.
- Now using pybind instead of boost.python, in preparation for Windows port, and to enable building against Anaconda.
- Copy/paste of output cells added.
- New
`simplify`command, which simplifies the scalar parts of expressions, and can be switched to use either Sympy or Mathematica. - Fix to treat derivatives with respect to explicit coordinates as
scalars in
`evaluate`; see this Q&A post. - Fix for failure to flag errors for WeightInherit property.
- Fixed: vary on single-term expressions (github/57)
- Fixed: evaluate with dense factors and no 'values' property on indices (github/68)

### 2.1.7

- Various bugfixes.

### 2.1.6

- Make the wedge product distributable.
- Fix printing of wedge products with sums in factors.
- Fixed printing of index brackets.
- Add RPATH to binaries to avoid having to run
`ldconfig`after installation. - Fix for the theming to avoid invisible text with dark themes.

### 2.1.5 (released 6-Aug-2017)

- Introduced
`map_sympy`which can be used to apply Sympy functions to Cadabra expressions, acting in-place. - Fixed: expressions with powers often lack brackets.

### 2.1.4 (released 14-Apr-2017)

- Enable packages to be written using Cadabra notation, instead of only pure Python (still experimental).
- Young tableaux
properties
`Tableau`and`FilledTableau`the related algorithm`lr_tensor`are available again. - Sorting Majorana spinors possible again using
`sort_spinors`. - Extended
`rename_dummies`with capability to rename indices to different set. - Make
`vary`work on powers of expressions with dummy indices. - Substitution of sub-sums now available
(e.g. substitute of
`A+B=C`in`ex:=A+B+C+D`). - Improved LaTeX export to make printed notebooks look much better.
- Many improvements to the component engine, in particular for handling of derivatives and fractions involving tensors.
- Better line spacing for line-wrapped equations.
- Smarter scroll-to-cell behaviour of the notebook.
- Canonicalising expressions with component values for indices now works again.
- The
`unwrap`algorithm can now be guided about what to unwrap, and also knows about spinors and Dirac bars. - Experimental support to use Cadabra directly from C++ code, as a
library (see
the
`c++lib`directory). - Fixes for using a custom
`post_process`defined as a function nested inside another. - Rudimentary timing logic, try
`server.totals();` - Fixed: pasting text in the notebook sometimes double-pastes.
- Fixed:
`split_index`does not work properly on left- and right-hand side of equations. - Fixed:
`sort_product`does not always sort expressions. - Fixed:
`eliminate_metric`only acts at top level of an expression, should have`deep=True`by default. - Fixed: a bug which would lead to a segfault when using
`deep=True`.

### 2.1.2

- Bug fix: Crash on opening of a notebook on Ubuntu 16.04 and possibly others, related to minor differences in gtk versions.
- Bug fix: Installation paths of Debian/Ubuntu/Mint binary
packages changed from
`/usr/local`to`/usr`.

### 2.1.1

- Bug fix: Compilation error on gtk versions lower than 3.10.0.

### 2.1.0

- First properly versioned release after a series of 2.0.x releases which were meant for testing.