This is the release note of v0.18.0. See [here](https://github.com/pfnet/optuna/milestone/15?closed=1) for the complete list of solved issues and merged PRs.
Upcoming Python 2 Support Drop
----------------------------
Due to the end-of-life (EOL) of Python 2 in January 2020, Optuna will drop Python 2 support in December 2019.
This decision was made considering the following facts:
- Python 2 will become end-of-life (EOL) in [January 2020](https://www.python.org/dev/peps/pep-0373/#maintenance-releases).
- Many scientific computation packages, including NumPy, which is one of the core dependency of Optuna, are [planning or already started to drop support for Python 2](https://python3statement.org/).
We plan to drop Python 2 support in the first release in December 2019.
Compatibility
-------------
- Remove `OptunaConfig`. (653)
- Catch no exceptions in `optimize` by default. (638)
New Features
------------
- Add function for high-dimensional parameter relationships visualization. (594, thanks suecharo!)
- Add function for parameter relationships visualization as slice plot. (540, thanks suecharo!)
- Add function for parameter relationships visualization as contour plot. (539, thanks suecharo!)
- Add a PyTorch Ignite handler for pruning. (561)
- Add PyTorch Lightning pruning integration. (597)
- Add FastAI Callback for pruning. (585, thanks crcrpar!)
- Add public APIs for checking visualization availability. (607)
- [Experimental] Add a prototype version of automatic LightGBM tuner with stepwise logic. (549)
Enhancements
------------
- Improve handling of reported values. (659)
- Avoid iterating through all trials unnecessarily. (641, thanks dwiel!)
- Remove `TrialModel.where_study_id`. (640)
- Record all error raising trials as failures. (637)
- Speed up Parzen Estimator. (554, thanks oda!)
- Cache best `trial_id`. (535, thanks oda!)
- Add an option to `force_garbage_collection` for every trial. (533, thanks oda!)
- Fix plot_optimization_history. (631, thanks cafeal!)
Bug Fixes
---------
- Add type casting to float. (644)
- Add missing call to check function. (598)
Documents
---------
- Add `PULL_REQUEST_TEMPLATE.md` file. (651)
- Update issue template. (652)
- Update `CONTRIBUTING.md` file. (649)
- Update the experimental warning of `OptunaSearchCV`. (639)
- Update `BaseStudy.trials` doc to specify order constraint. (634)
- Add visualization functions to API reference doc. (615)
- Apply a small fix to the docstring of `Study`. (591)
- Add links to nbviewer. (590, thanks upura!)
Examples
--------
- Add a distributed optimization example on Kubernetes. (643, thanks AnesBenmerzoug!)
- Add `--pruning` option to the PyTorch Ignite example. (633)
- Fix an example for `tensorflow==1.15.0`. (620)
- Add pruning to Chainer example. (614, thanks Crissman!)
- Enclose `plot_slice()` of slice plot example in backquotes. (608, thanks crcrpar!)
- Add PyTorch Lightning example. (584)
Tests
-----
- Fix assertions in `test_optimize_with_catch`. (650)
- Fix the module of type variables. (636)
- Add `ValueError` test to `test_get_contour_plot()`. (616, thanks crcrpar!)
Continuous Integration
----------------------
- Skip XGBoost tests and examples with Python 2.7 in CircleCI. (654)
- Hide `pip` progress bar from CircleCI log. (648)
- Align CircleCI `install-examples` step name to anchor. (618)
Code Fixes
----------
- Use indices to align with the others. (621, thanks crcrpar!)
- Replace useless `None` check with assertion. (610)