Announcements / DigitalLith · April 30, 2022

DigitalLith 4.11 released

Today I published DigitalLith version 4.11: Click!

This was long overdue as the program itself was finished for a long time already. Good though, since it took me so long to cleanup the documentation I was also able to produce a version for the new Apple silicon machines and to improve performance. More about that later (why you might be better with using the Intel version even on M1 machines).

4.11 does not sound like something great coming from 4.10 but it is one of the bigger releases. I was about making this a version 5.0, but then decided to stick with version 4.x until some really big change happens – like bringing it to tablet computers.

Here is a quick overview of the main features/fixes of the new version:

  • The UI now looks a bit more modern and comes with a light and a dark mode.
  • The documentation got updated and now covers the current program version instead of running behind several versions.
  • There is a new standard process which is a bit cleaned up, the old process is still there.
  • The streaking modules and process modules now are built-in and you do not have to download them. Once there is an update or a fix in a module you are still able to download the module which overrides the built-in modules.
  • Performance is significantly improved.
  • The images written now are written in sRGB profile instead of … no profile.
  • Many smaller fixes (see the changelog)

I already use this version for quite some time and am glad that you also can use it now since I like the new UI look&feel. A lot happened in the last few months since I now have an M1 MacBook which allowed me to also produce an Apple M1 version of the program. But I still run the Intel version and here is the short story about this:

When I bought that new Mac the first thing was to download an M1 aware Java Development Kit and I adjusted the built and produced an M1 version. I developed a few images and honestly, it did not impress me at all. I could develop the same images in the same time on my old 2012 MacMini. So I thought: see, all that hype and in the end: no improvement. But to get at least a bit of performance boost in the new version I went back to the implementation of the process and realized that my program had very bad data locality which means a lot of page-in and page-out from main memory to CPU caches. I could easily fix this and was able to now compute the image in half the time. That is good improvement.

Then out of curiosity I thought lets see how Apples Rosetta2 handles DigitalLith. And that was eye opening. Rosetta2 ran the Intel version of DigitalLith almost twice as fast than natively run on the MacMini. That means Rosetta2+Intel-JDK did a better job than the M1 native JDK. The only explanation I can come up with is: Intel-JDK and the Hotspot compiler produce better native code than the M1 native JDK. And: Rosetta2 does a pretty good job. This is not a surprise since I think that the M1 native JDK is pretty new and of course way more resources went into the Intel-JDK.

But does that mean that the M1 JDK is crap? Certainly not. First of all, I think this is a very DigitalLith specific finding and has to do with how the different compilers deal with numbers. All else runs better in the native M1 JDK. I do use the M1 JDK for all the compilation on the MacBook because that is really faster compared to the Intel-JDK on an M1 machine. But running DigitalLith … for that I use the Intel version.

Compared to version 4.10 running on a 2012 MacMini, version 4.11 on a 2021 M1Pro runs about four times faster.

As always: Have fun with it and I am open to any feedback.

OK, one little note: I wanted to also have a German documentation as there are people requesting it every now and then. I am on it, but only half way through. Stay tuned, it is coming.