For many years, Xojo included prebuilt ICU libraries (International Components for Unicode) on Windows to ensure consistent Unicode behavior across platforms. However, maintaining and updating ICU manually required rebuilding it with each release, and users wouldn’t receive updates unless they updated Xojo itself.
With Windows 10 version 1703, Microsoft introduced built-in ICU support, allowing applications to use the system provided ICU instead of bundling their own. By leveraging this, Xojo now benefits from automatic updates, a reduced app footprint, and improved compatibility with the latest Unicode and locale data.
Which parts of the framework use ICU?
One of the main areas where ICU is used is the DateTime class, which includes Locale and TimeZone support. This helps with formatting dates and times and handling timezone differences reliably. ICU is also used for number formatting and string manipulation, particularly when working with characters like emojis and other complex Unicode symbols.
What benefits can be observed?
- Fewer DLLs
- 45MB smaller app sizes
- Faster execution times, i.e. DateTime.Now is roughly 10% faster
- Daylight saving time no longer requires a rebuild of your Xojo app
What are the new requirements?
As mentioned, Windows began including prebuilt ICU libraries starting with Windows 10 version 1703, so your apps won’t run on earlier versions. However, if you’re using Windows Server 2019, you’ll need to be on at least version 1809.
Conclusion
By shifting to Windows’ built-in ICU libraries, Xojo has eliminated the need for manual ICU updates and reducing app file sizes. This change means your apps will always have the latest updates for date/time, locale, and character handling, thanks to Windows updates.
William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo’s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.