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 which you can only get by building from source, while even-numbered ones are released in packaged/installer form.
github devel branch (2.5.9)
- Add caching to the processing of substitution rules (Daniel).
- Fixes for inline execution of Python functions in maths expressions.
- Do not gobble normal output when an error occurs notebook execution.
- Fix inconsistent behaviour and crashes with split-view mode.
- Fix display of LaTeXForm properties.
- Documentation updates.
- Close LaTeX input cells on running them (configurable).
- Cleanup and document kernel options.
2.5.8 (released 25-Oct-2024)
- Fix handling of spurious backslashes (#240) and double backslashes (#155).
- Fix handling of backslash names (e.g. Greek characters) appearing without curly brackets as sub- or superscripts (#312).
- Fix the path to our python files in the Docker container build.
- When an expression is fed through the sympy bridge, make sure to not remove outer parent relations (so that the expression remains a sub/superscript if it was one before entering the bridge).
- Fix several bugs with the undo system, and add redo.
- Fix split-view mode.
- Added optional partial=False flag to zoom to enable zooming on exact matches (Daniel).
- Add some more standard keybindings (ctrl-k, ctrl-a, ctrl-e) to input cells.
- Generate source tarball asset with microtex included.
2.5.6 (released 29-Sep-2024)
- Windows build is working again, now using MSYS2 because that's the only system that provides binary packages of our dependencies and also still carries gtkmm-3.0. An installer is now auto-generated by the CI on every release.
- Updates to the AppImage build to fix issues with sympy and matplotlib.
- Many other small fixes and updates to ensure that all binaries can be built by the CI.
2.5.2 (released 14-Jun-2024)
- Fix simplification of pow nodes.
- Make ExNode iterators skip nodes hidden by zoom.
- Fix canonicalise acting on expressions with self-anticommuting objects and derivatives (Daniel).
- Fix crash when comparing with empty expressions.
- Make zoom accept a list of patterns (Daniel).
- Fix bugs in getting Weight values from Python, and setting multipliers in Python.
- Add LaTeXString object to display LaTeX formatted strings on capable frontends.
- Fix a bug with canonicalise acting on vector-spinor objects.
- Enable the use of Unicode greek characters as input (which will get converted to LaTeX automatically) to enable cut-n-paste in the terminal (Connor).
- Fix handling of multi-line expressions (newlines now count as a whitespace).
- Fix canonicalise to allow for factors which are sums, as long as these do not have indices.
- Ability to use builtin MicroTeX for typesetting (the default in 2.5.x), which removes the requirement to have a LaTeX installation.
- Experimental AppImages now available for Linux on both x86-64 and aarch64 architectures.
- Removed deprecated GTK-3 features and cleaned up the UI.
- Fix bug in code to interrupt a running computation.
- Added dynamical cell updates, e.g. to create animations.
2.4.4 (released 20-Sep-2023)
- Fix canonicalisation of rationals.
- Make expand_power work on zero and negative powers.
- Prevent dummy indices from leaking out of \pow nodes.
2.4.2 (released 22-Oct-2022)
- Add missing trig functions for display and passthrough to sympy (Oscar).
- Allow for index values to be specified as an integer range.
- Expanded nevaluate to numerically evaluate more expressions.
- New package cdb.sympy.calculus to make it easy to apply SymPy calculus functions on Cadabra expressions.
- New package cdb.graphics.plot for easy plotting of functions of one or two variables.
- Fix compatibility issues with Python-3.11.
2.4.0 (released 25-Aug-2022)
- Version to accompany the publication of the paper about the meld algorithm.
- Several fixes to meld (Dominic).
- Make typesetting run in a separate thread to prevent the UI from feeling sluggish.
- Some changes in the behaviour of list addition/multiplication, to match Mathematica's behaviour.
- New nevaluate algorithm for fast numerical evaluation of expressions (work-in-progress).
- Fix for Python 3.10.x.
- Fix for automatic cleanup of Diagonal objects.
- Fix crash with tab-completion.
- Make '+' operator add lists component-wise, and introduce the tie operator '~' and join function to join lists.
- Fix printing of objects with LaTeXForm which are wrapped in another LaTeX operator.
2.3.8 (released 21-Nov-2021)
- Option to display negative powers as fractions (Dominic).
- New algorithm slot_asym to (anti-)symmetrise objects in indices by giving index positions instead of names.
- New functionality to implement algorithms in Python (Dominic).
- Faster re-implementation of get_component using new C++ function modules (Dominic).
- New cdb.numeric.evaluate and cdb.numeric.integrate modules to evaluate expressions numerically or integrate differential equations numerically (Dominic).
- Updates to cdb.utils.indices and cdb.core.manip.
- Add warnings functionality to the kernel (Dominic).
- Add infrastructure to let algorithms display progress information while running (Dominic).
- Add cell cursor position to status bar (Dominic).
- Fix bug in expand_delta when the delta occurs at top-level in an expression.
- Many meld fixes and improvements (Dominic).
- Fix handling of auto-declare names (names with a '#' character).
- Keep LaTeX log/aux files on error to aid debugging.
- Fix LaTeX code to avoid some global variable name clashes.
- Fix for compilation on Apple silicon.
2.3.6 (released 30-Dec-2020)
- Once further change to the installation path of the cadabra2.so module, so that it conforms with standard conventions, in particular Debian packaging rules. On Debian-based systems, you should now be able to use the Cadabra python module without path settings, and the Jupyter kernel will work nicely with the Jupyter package in Debian.
- Fix display of lists containing Ex objects.
- Fix import of Jupyter notebooks.
- Fix bug related to automatic dummy index relabelling.
- Fix tab-completion.
- Fix build issues on recent versions of HomeBrew/macOS.
2.3.4 (released 16-Nov-2020)
- Fix a display bug which turned all products into tensor products.
- Enable attaching properties queried with Property.get to new symbols.
- Fix bug pulling with @(...) operator.
- Add option redundant to eliminate_metric to only eliminate metrics which have two dummy indices (David).
- Added option to export notebooks to Jupyter, and a command-line utility to do the same.
2.3.2 (released 31-Oct-2020)
- Fixed bug in pattern matching logic used in integrate_by_parts; see this Q&A post.
- Fixed bug which would prevent assignment to node multiplier from Python.
- Tab-completion on command line and in the notebook.
- Install the cadabra2 python module in a standard location (Atri). You may still need to set PYTHONPATH if you are on Debian/Ubuntu.
- Fixes for the Mathematica scalar backend.
- Make expand_delta much faster when the Kronecker delta is contracted with objects which have anti-symmetry.
- Make meld work correctly with non/anti-commuting objects (Dominic).
- Make numbered indices like a1 display with a subscript automatically a1.
- Provide pickle functionality for expressions (Dominic).
- Fixes for compatibility with newer SymPy versions.
- Added a 'find' function in the notebook, to search input cells.
- New Jupyter kernel (enabled by default) which does not require Xeus; you can now get access to Cadabra on Jupyter on all supported systems, not just Conda (Fergus).
- Various improvements and fixed for handling and display of Young tableaux.
- Added ExNode::ex() to obtain an Ex object from an ExNode iterator.
2.3.0 (released 10-Jun-2020)
- Fix bug which would collect powers of objects with indices and then report an error.
- Functionality to read Cadabra Cloud notebooks into the desktop Cadabra.
- Use a better hash function for expression trees (avoiding a bug in factor_in).
- Expose index symmetries through traces, so that canonicalise and related algorithms work correctly. Introduced a new property TableauInherit.
- More flexible LaTeXForm property, to enable more flexible object display in the notebook.
- Various fixes for behaviour of unwrap with anti- or non-commuting arguments.
- New meld algorithm for canonicalisation (Dominic).
2.2.8 (released 10-Dec-2019)
- More versatile handling of Trace, including sorting using cyclic symmetry (Connor).
- Fixes for combine (Connor).
- Save command-line history (Connor).
- Make imported notebooks use the default post_process function.
- Make unwrap move scalars out of exterior (wedge) products, see this Q&A post.
- Fix bug with indices with accents (github/166).
- Added a cadabra2latex command to convert notebooks to LaTeX.
- Fixed issue building with latest Homebrew on macOS.
- Fixed Windows build issues and add python path settings at runtime.
- Fixed bug with multipliers not reducing to canonical form.
2.2.7 (released 25-Jun-2019)
- Added cdb.utils.develop and cdb.relativity.abstract.
- Added authentication token to all client-server communication.
- Various extensions to the Trace property.
- Make property info available from Python (Dominic).
- Fixed integration by parts with index-less derivatives.
- Added eliminate_vielbein.
- Fixed display of lists of sympy expressions.
- Fixed (finally) UTF8 input for non-English symbols.
2.2.6 (released 16-Apr-2019)
- Experimental notebook diff viewer (Dominic).
- Warn when about to overwrite an existing notebook.
- Improvements for HiDPI screens especially on macOS.
- Fix crash in sym/asym.
- Fix undo/redo crash in notebook when deleting cells.
- Improvements to the cdb.core.manip package (Dominic).
- Fix in young_project_tensor.
- Fix pattern matching for anti-commuting factors.
- Added explicit_indices to convert expressions with implicit indices to their explicit form.
- Add option to build a Jupyter kernel.
- Fix bug in split_index (acted on wrong parts of expressions).
- Fix bug with substitute not checking constraints for single-factor patterns.
- Add partial option to substitute to require that products or sums match all terms, not just a partial sum or partial product.
2.2.5 (released 05-Feb-2019)
- Fix issues with Derivative objects going through Sympy.
- Fix a bug with LaTeX export.
- Enable build against system-supplied JSONCPP.
2.2.4 (released 19-Dec-2018)
- 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 (Dominic).
- Added lower_free_indices and raise_free_indices.
- Various small fixes for terminal output.
- 'Evaluate 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.
- New build system using Ninja on Windows (Dominic).
- Fix bug in unwrap with derivatives with respect to explicit coordinates (see Unwrap applied...).
- It is now possible to import notebooks into other notebooks (Dominic).
- New system package for expression manipulation (cdb.core.manip).
- Export to LaTeX fixed, and now also exports figures.
- Added a debugging console to the notebook interface (Dominic).
2.2.0 "Easter Bunny" (released 29-Mar-2018)
- Now builds on Windows (Dominic).
- 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 (released 20-Nov-2017)
- Various bugfixes.
2.1.6 (released 1-Nov-2017)
- 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 (released 4-Jan-2017)
- 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 (released 3-Jan-2017)
- Bug fix: Compilation error on gtk versions lower than 3.10.0.
2.1.0 (released 3-Jan-2017)
- First properly versioned release after a series of 2.0.x releases which were meant for testing.