**Breaking changes**
This release includes a few minor breaking changes:
1. ProbabilisticModel is now a pure interface (797)
- `ProbabilisticModel.log` is now an abstract method and needs to be explicitly specified in any concrete model class implementation (though it can be empty)
- `ProbabilisticModel.get_module_with_variables` is now a utility function in `trieste.models.utils`
2. TREGO (TrustRegion) and TURBO were reimplemented using the new batch-trust-region classes (778, 791)
- a TURBO rule must now be initialised as `BatchTrustRegionBox(TURBOBox(search_space))` instead of `TURBO(search_space)`
- a TREGO rule must now be initialised as `BatchTrustRegionBox(TREGOBox(search_space))` instead of `TrustRegion()`
- the internal `State` structures exposed by these rules are now also different: `BatchTrustRegion.State` instead of `Turbo.State` or `TrustRegion.State`, with additional values such as `eps` accessible via the subspaces in `rule._subspaces` instead.
**New features**
Multi trust region acquisition rules (773, 777, 778, 783)
Local models and datasets (788, 791)
Expose model optimization result in `optimize` method and `get_last_optimization_result` function (774, 797)
**Improvements/fixes**
Stop trajectory sampling ignoring active-dims in the kernel (790)
Stop `randomize_hyperparameters` generating repeating values (785)
Handle unconstrained priors in `randomize_hyperparameters` (796)
Support optimization of multiple points in batch spaces (787)
Allow Boxes with zero width (780)
Deepcopy search spaces (776)
Use int64 when calculating data size in `split_acquisition_function` (795)
Start using `check_shape` for shape checking (770)
Cleanup tutorials (769, 771)
**Build changes**
Parallelise integration test run (775)
Integration test fragility (786, 798)
**Full Changelog**: https://github.com/secondmind-labs/trieste/compare/v1.2.0...v2.0.0