What's Changed
* Backend version update in https://github.com/MilesCranmer/PySR/pull/389. Includes:
* Dimensional analysis (see docs examples page)
* Printing improvements
* Many misc changes (see below)
Backend Changes
* https://github.com/MilesCranmer/SymbolicRegression.jl/pull/228 and https://github.com/MilesCranmer/SymbolicRegression.jl/pull/230 and https://github.com/MilesCranmer/SymbolicRegression.jl/pull/231 and https://github.com/MilesCranmer/SymbolicRegression.jl/pull/235
- **Dimensional analysis** ([228](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/228))
- Allows you to (softly) constrain discovered expressions to those that respect physical dimensions
- Specify `X_units` and `y_units` (see https://astroautomata.com/PySR/examples/#10-dimensional-constraints)
- **Printing improvements** ([228](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/228))
- By default, only 5 significant digits are now printed, rather than the entire float. You can change this with the `print_precision` option.
- In the default printed equations, `x₁` is used rather than `x1`.
- `y = ` is printed at the start (or `y₁ = ` for multi-output). With units this becomes, for example, `y[kg] =`.
- **Misc**
- Easier to convert from MLJ interface to SymbolicUtils (via `node_to_symbolic(::Node, ::AbstractSRRegressor)`) ([228](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/228))
- Improved precompilation ([228](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/228))
- Various performance and type stability improvements ([228](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/228))
- Inlined the recording option to speedup compilation ([230](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/230))
- Updated Julia tutorials to use MLJ rather than low-level interface ([228](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/228))
- Moved JSON3.jl to extension ([231](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/231))
- Use PackageExtensionsCompat.jl over Requires.jl ([231](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/231))
- Require LossFunctions.jl to be 0.10 ([231](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/231))
- Batching inside optimization loop + batching support for custom objectives by ([235](https://github.com/MilesCranmer/SymbolicRegression.jl/pull/235))
- Update docker defaults: Julia=1.9.1; Python=3.10.11 in https://github.com/MilesCranmer/PySR/pull/371
**Backend Changelog**: https://github.com/MilesCranmer/SymbolicRegression.jl/compare/v0.20.0...v0.21.0
**PySR Changelog**: https://github.com/MilesCranmer/PySR/compare/v0.14.3...v0.15.0