<!-- Release notes generated using configuration in .github/release.yml at main -->
Highlights
- Important bug fix on iterative execution of simulation by `World.exec_simulation(duration_t)` and `World.check_simulation_ongoing()`
- In the previous versions, there is a bug that they fail to terminate the simulation properly under certain conditions. This bug is now fixed by updating the simulation termination procedure. Please note that this fix may slightly change the simulation result from the previous versions around the final timestep
- This resolves https://github.com/toruseo/UXsim/issues/117
- Added customizable function that is automatically executed during a simulation run: `user_function` to `World`, `Node`, `Link`, and `Vehicle`
- If specified, they are automatically called when timestep is incremented. This would be useful for incorporating user-defined traffic data collection or control methods.
- For a use-case, please see https://github.com/toruseo/UXsim/blob/main/demos_and_examples/example_24en_user_defined_functions.py
Other changes
* docstring by toruseo in https://github.com/toruseo/UXsim/pull/116
* Analyzer: Optimize `area_to_pandas` method by EwoutH in https://github.com/toruseo/UXsim/pull/119
* Analyzer: Return average_speed and vehicle_density with area_to_pandas by EwoutH in https://github.com/toruseo/UXsim/pull/121
* Add customizable `user_function` to `World`, `Node`, `Link`, and `Vehicle` by toruseo in https://github.com/toruseo/UXsim/pull/124
* fix typo by toruseo in https://github.com/toruseo/UXsim/pull/125
* Fix simulation termination procedure by toruseo in https://github.com/toruseo/UXsim/pull/126
* minor updates by toruseo in https://github.com/toruseo/UXsim/pull/127
**Full Changelog**: https://github.com/toruseo/UXsim/compare/v1.5.0...v1.6.0