Catel 5 nearing feature-complete state

The last few weeks we’ve been taking big steps on Catel 5. The biggest goals for Catel 5 are to improve performance, decrease memory usage and remove feature that aren’t used much. This all in an effort to make Catel more lightweight, easier to maintain and easier to contribute to.

At the beginning of this journey, we’ve been creating a benchmark solution so we can easily compare different versions of Catel on both performance and memory usage. This solution is based on BenchmarkDotNet and can be found at the Catel.Benchmarks repository. We have written a comparison exporter to make it very easy to see where we still have work to do or where we made some good progress.

ModelBase improvements

One of the downsides of Catel was the super powerful but immense ModelBase class. It got so many features over the years that using millions of objects would result in high memory usage, slow performance and complex maintainability. Catel 5 solves this issue by splitting up the ModelBase into ComparableModelBase, SerializableModelBase and ValidatableModelBase. There are also a few features that were cut from the ModelBase implementation (nothing that should have an extreme impact on end-developers). Thanks to the benchmarks, we can see a very positive result.

Performance – 23% faster

image

Memory (per 1K operations) – 43% less memory usage

image

Time to give it a try

Catel 5 is nearly feature complete, and believe we have finished all the tasks that result in breaking changes. This means that if you would like to see what we’ve done so far, this is a great time. Note that the alpha versions are only available on MyGet.

Follow the process or help out

If you are interested, you can follow the process on GitHub (5.0.0 milestone). If you want to help developing Catel, pick any task with the up-for-grabs label.