Skip to content

11.3.0 Major release

Compare
Choose a tag to compare
@wirew0rm wirew0rm released this 30 Sep 15:47
· 8 commits to main since this release

Hello everyone 👋

It's been quite some time since the last release and the announcement of starting to work on a major release to fix some of the outstanding maintainability issues, but now we are finally at a state to release ChartFx 11.3.0! The release brings a lot of performance and stability improvements, cleans up a lot of the organically grown code to make it easier to maintain and fix bugs within in the future and fixes some long outstanding bugs some of which were deeply rooted in the way things were set up previously.

Major Improvements:

  • New layout and event system #594. This is by far the biggest improvement and change and we're very thankful for all the hard work @ennerf has put into this.
    • layout: removes lots of notorious rendering inconsistencies by using a global preLayout listener to update all the chart wide state
    • event system: DirtyBit based event system for chart events. this ensures that expensive computations and rendering steps are in in
      almost all cases performed exactly once.
      • before/after comparisons: #530 (comment)
      • all datasets now belong to a renderer. The shared datasets were removed from the chart.
      • the error surface hatch is now shifted and can show overlapping error surfaces
    • for technical details take a look at the individual PRs/issues and the Architecture.md file.
  • Consistent CSS styling for all chart components #598
    • Several renderer styling parameters moved to the datasets (line width, color, etc)
    • replaces custom ColorScheme classes and Style parsers
    • might need some adjustments where ChartFx used non-standard CSS property names before
    • follow-up PR also allows complete style control for datasets using CSS #603. Because DataSets can be in multiple Renderers/Charts, but stylable nodes can be in the scene graph only once, a DatasetNode unique to the renderer is created. This is transparent to the user but it can be accessed to change the style from code. For more Details see the PR description.
  • improved axis label generation based on the schubfach algorithm removing the huge (20Mb) icu4j dependency #575
  • use controlsfx's sampler to display our samples instead of having the launcher with a list of buttons #578 + #593 (thanks at @uosis for the followup fix #581)
  • added code to optionally collect and/or display latency histogram data for different parts of the code #604, #614, #618

Bugfixes:

  • fix 2d histogram getGrid() #628, thanks to @ajackson2681
  • ErrorDataSetRenderer: fix bubble chart error value handling #596, thanks @protogenes for finding the bug and solution.
  • make ChartFx applications and samples terminate properly #598
  • Zoomer: perform zoom actions based on display coordinates #602. This allows to properly zoom in logarithmic plots.
  • DragResizerUtil: fix copy and paste error #606, thanks to @rsuna
  • Allow CSS styling of line cap and join for line charts and add sensible defaults, javafx defaults can create display artifacts outside of the acutal data range #626, thanks @protogenes for bringing this up

CI:

  • changed the package names from de.gsi.chart to io.fair_acc.chartfx. This should by far be the biggest user facing change but unfortunately was necessary for deployment reasons. Sorry for the inconvenience, but the changes should be mostly mechanical.
  • changed code level to java 17 and added a java 20 build, dropping java 11 support
  • code-formatting: switch to clang-format-16, disable restyler PRs (apply fixes by downloading the diff by clicking on "Details" for the failed CI check) and apply consistent formatting to the whole project
  • Added a logo, banner and updated outdated badges #619, thanks to @milo-gsi for the original logo design and iterations!
  • conveyor packaging for the sample application to easily showcase ChartFx on different systems #580
  • remove fastutil dependency by sharding the few classes used by ChartFx #576

Please let us know if there are any bigger problems in upgrading, any regressions we missed or just your (hopefully positive) experience with the new release in the linked discussion.