For macOS and iOS we have new functions for data detectors. That is the feature Apple provides for applications like Safari or Mail to identify data within the text. With our NSDataDetectorMBS class you can detect phone numbers, email addresses, URLs, postal addresses and dates in Xojo. On that way we implemented NSRegularExpressionMBS class to do regular expressions using Apple's frameworks.
You may know our BigNumberMBS class, a 320bit floating point number. For scientific math we were asked for a something bigger, so we created BiggerNumberMBS class. The new class provides a 2560bit floating point number with a 512 bit exponent and a 2014 mantissa. This provides about 600 digits of precision. For both classes we added 30 new trigonometry functions.
To use high level APIs for macOS and iOS applications we got NSNetServiceMBS and NSNetServiceBrowserMBS classes. You can publish a service and find other services, e.g. have your iOS app find the companion macOS app.
Recently we found DuckDB, an open source database engine similar to SQLite, but with column based data storage (instead of row based like SQLite). Depending on what you do with the database, this implementation may be much faster since it is optimized to quickly walk over values in a column. Check out DuckDatabaseMBS class in Xojo to use both in-memory or file based databases.
We upgraded our PDFKit classes to have over 200 additional methods and properties to work with annotations. We added PDFAppearanceCharacteristicsMBS class to specify more options for appearance streams.
For Windows we got HTMLText or PlainText methods for WebView2ControlMBS control. The WindowsShellExecuteAsAdminMBS function may help to run an executable with admin privileges.
We improved the DeclareCallBackMBS class to work on Windows and Linux for callbacks received in a thread. The plugin routes them to main thread and calls your delegate there. We improved DirectShow plugin and added DirectShowAMVideoControlMBS class. The DirectShowCaptureGraphBuilderMBS class now got a FindPin function and GetStreamConfig can accept an GUID to identify the category for a pin.
For our SQL Plugin, we implemented Edit/Update for SQLDatabaseMBS class. We added ErrorMessage property for iOS. To embrace RowSet we added more methods related to it: SQLSelectAsRowSetMT and SQLSelectAsRowSet for SQLConnectionMBS class and BuildRowSetMBS global function.
To help debugging memory leaks we got a new MemoryStatisticsMBS class and the Leak Finder example project. With AllObjectsOfClassMBS function you can quickly find all objects of a class.
We upgraded NSCollectionViewControlMBS control to work better and improved the example. Please try the control to get a grid control in your solution to show various container based controls.
For iOS we got a new iOSPictureMBS module with helper functions specific for iOS. You can export an image or video to the camera roll and get an event when the export finshed from the plugin.
We added more properties to JSONMBS class, added SetLogEventMask to GMImageMBS class to enable logging in GraphicsMagick, a new ReadFromPkcs7 function for X509MBS class and an extra version number line to CURL debug output. Use the NormInvMBS function to calculate NormInv like in Excel. The new IncludeDataInDebugMessages property for FMConnectionMBS class helps debugging your requests. And enjoy high resolution drag images on macOS with InstallDragImageMBS function.
Finally we updated CURL library to version 7.75.0, DukTape to 2.6, DynaPDF to 18.104.22.168 including ZUGFeRD 2.1.1, dyncall to 1.2, LCMS to 2.12, LibXL to 3.9.4, LibXML to 2.9.10, LibXSLT to 1.1.34, openssl to 1.1.1i, Rockey4ND, SQLAPI to 5.1.4b5 and Xcode to version 12.4.
See release notes for a complete list of changes.