Google Admob Update

For the next version of MBS Xojo Plugins we include an update for Google Admob to the version 10.14 of the SDK. With the update, we get new classes to show a consent form to ask user whether he likes to get tracked for advertisement. To quote Google's documentation:

Under the Google EU User Consent Policy, you must make certain disclosures to your users in the European Economic Area (EEA) along with the UK and obtain their consent to use cookies or other local storage, where legally required, and to use personal data (such as AdID) to serve ads. This policy reflects the requirements of the EU ePrivacy Directive and the General Data Protection Regulation (GDPR). To support publishers in meeting their duties under this policy, Google offers the User Messaging Platform (UMP) SDK. The UMP SDK has been updated to support the latest IAB standards. All of these configurations can now conveniently be handled in Interactive Media Ads privacy & messaging.

MBS Xojo Plugins, version 23.6pr5

New in this prerelease of the 23.6 plugins:
  • Updated to Xcode 15.1.
  • Fixed issue with RowSet iterator to not skip first row.
  • Fixed an issue with MoveFirst in our SQL cursor.
  • Updated Visual Studio to version 2022.
  • Disabled old tesseract 3 for Windows ARM 64-bit as that doesn't compile currently.
  • Updated Google AdMob SDK to version 10.14. You may need to adjust your project.
  • Removed tagForUnderAgeOfConsent and tagForChildDirectedTreatment methods in GADRequestConfigurationMBS class.
  • Added tagForUnderAgeOfConsent and tagForChildDirectedTreatment properties for GADRequestConfigurationMBS class.
  • Added new classes for consent dialog: UMPRequestParametersMBS, UMPDebugSettingsMBS, UMPConsentInformationMBS and UMPConsentFormMBS.
  • Added new loadWithAdUnitID method to GADAppOpenAdMBS class.
  • Added automatic rerun of SQL SELECT if you call MoveFirst on a RowSet/RecordSet, which doesn't support moving because it is not cached or scrollable.
  • Added checks for SQL Plugin in multiple places to avoid crashes if SQL command text is empty.
Download: or from DropBox.
Or ask us to be added to our shared DropBox folder.

Four months until MBS Xojo Developer Conference

Just four months left until we start our MBS Xojo Developer Conference in Andernach, Germany. We already got a couple speaker proposals and already over 25 registrations from nine different countries: 🇩🇪, 🇳🇱, 🇬🇧, 🇺🇸, 🇫🇷, 🇪🇸, 🇨🇭, 🇵🇱 and 🇨🇦.

In January we start to fill in sessions for the conference. Already listed are the sessions with Xojo staff: Geoff Perlman, CEO of Xojo Inc. will join us to talk about what is new in the Xojo world for 2024. Ricardo Cruz and Javier Menendez from Xojo Inc. will join us to present about mobile and web development.

The Geyser tour is booked and anyone who likes to join the tour on Saturday is welcome to let me know. We encourage you to not leave Friday evening, but maybe Saturday afternoon.

The Skybar at Einstein Hotel.


iCloud Sync Tips

If you use iCloud drive for document synchronization, you may run into various issues. The big problem is that Apple doesn't really provide control or information on what is happening. It should all work seamless, but it often doesn't.

For Apple, I can recommend to test it not just with a few documents, but with e.g. a million documents in Documents folder and then change 5000 of them on a day.


Merry Christmas

Frohe Weihnachten und ein gutes neues Jahr!

Merry Christmas & Happy New Year

Joyeux Noël et Bonne Année

Buon Natale e Felice Anno Nuovo

Franziska, Sebastian, Michael, Monika & Christian Schmitz

MBS Xojo Plugins, version 23.6pr4

New in this prerelease of the 23.6 plugins:
  • Updated DynaPDF to version
  • Updated Chromium classes for Xojo 2023r4.
  • Added checks for SQLDatabaseMBS class to raise an exception if you try to close, SQLExecute or SQLSelect while a background thread runs a SQL query.
  • Added more render functions to WindowsPDFPageMBS for synchronous and asynchronous modes.
Download: or from DropBox.
Or ask us to be added to our shared DropBox folder.

Xojo Web signal handling

For a Xojo web project, the framework registers signal handlers to catch various signals from the OS. This seems to include at least KILL and INT signals, which are used to force quit an application or interrupt it. In both cases Xojo framework quits the application.

Let's check the event order:

App.Stopping: False
App.Stopping: False

Looks confusing?
Yes, it is. So the app launches and we log the call to Opening event. Then the web app runs and waits for work. Then the signal happens and a signal handler is invoked. We made a stack trace by raising an exception and got this:


Upcoming changes for 2024 in MBS Plugins

For 2024, we plan to change a few things and we let you know here:

Claris Product line goes away
The use of MBS Plugin in Claris Pro/Server has been deprecated in September and will be removed for 14.x releases. We concentrate on FileMaker Pro/Server in the future. Customers still using the Claris product line should let us know.

Number of releases
Currently we do a release every two months. There may be the chance to optimize this and maybe do just 5 instead of 6 releases a year. For example the release in July always gets less feedback as clients are going to vacation. If we don't need to have something new to show for a summer conference, we may skip this. And the September release is often a smaller update because our team is regularly on vacation in August. (more)

Benchmarking improvements in Xojo 2023r4

A few weeks ago, I had a blog post about Performance improvements in Xojo. Now that Xojo 2023r4 version is available, we got a few benchmarks to verify if things are faster.

Stack Overflow Check

Let's test the improved stack overflow check. The test application basically performs a few loops to run about one million function calls. Each function call performs a stack check, so doing a million stack checks takes some time. Our test shows this improvement for StackOverflowChecking:

SecondsWhereXojo Version
57.876DebuggerXojo 2022r4
31.566Built AppXojo 2022r4
19.456DebuggerXojo 2023r4
0.620Built AppXojo 2023r4

MBS Xojo Plugins, version 23.6pr3

New in this prerelease of the 23.6 plugins:
  • Improvements for Xojo 2023r4.
  • Fixed problem in LargeNumberMBS class when parsing too long string. We now raise an exception.
  • Improved JavaScriptEngineMBS class to handle arrays of Int32, Int64, Double, Single, Boolean, Color, String and Currency for conversion from Variant to JavaScript.
  • Improved handling of arrays for our JSON to HTML conversion for JSONMBS class.
  • Updated SQLAPI to version 5.3.
  • Added PairAsyncCompleted and UnpairAsyncCompleted events for WindowsBluetoothLEDeviceMBS class to catch the events from WindowsDeviceInformationPairingMBS easier.
Download: or from DropBox.
Or ask us to be added to our shared DropBox folder.

Xojo Delegate Change

There has been a problem in our plugins and in Xojo when handling target flags for delegates for some time. The bug was found and is already fixed for the Xojo 2023r4 and our plugins. You may need to use newer plugins 23.6prX (or later 24.x) for the newer Xojo to build some of your projects in some cases.

On our part, we didn't set the flags correctly for a lot of delegates in our plugin. Sorry for the inconvenience this may cause. This seems to affect the following plugins:
  • CURL
  • iOS
  • Mac64bit
  • MacBase
  • MacCF
  • MacFrameworks
  • Picture
The problems are corrected with all builds from 22nd November or later as well as Xojo version after build 61716. (more)

Xojo 2023r4 released

The new release was just posted by Xojo Inc. As usual we have a few new items and a lot of bug fixes.

Release Notes - Download - Order license

There is a new Xojo version available and I expect everyone will quickly jump onto it: The reason is performance.

The improved code for StackOverflow checking will speed up all your applications, especially for macOS. Beside that you see improvements for thread switching, main thread checks and other places. The IDE itself and the web framework benefit heavily from the changes, so things may feel snappier. In an upcoming blog post, I'll show some numbers, but until that please try the new version and check the details in my blog post here: Performance improvements in Xojo.

You will need newer MBS Xojo Plugins, e.g. 23.6 beta or later 24.0 release: Download here. Due to change in delegate handling, we had to adjust our plugins. Most developers may not notice, but if you build a console, web or worker project, then you may get a compilation error with our older plugins. See also Xojo Delegate Change. What we enjoy is the improved cache handling for the plugins. Xojo loads the plugins faster and avoids issues with cache not being up to date. If you use RowSet with our MBS Xojo SQL Plugin, please use the newer plugin version with the fix related to the RowSet class.


Three weeks till year's end

The year 2023 will end in less than three weeks. Do you need some more licenses?
  • You can order licenses for 2024 or later and have invoice, delivery and payment done in 2023.
    This way you secure the current pricing and the possibility to keep upgradeability for older licenses.
  • And of course you can order updates for several years in advance for all your MBS products.
    Multi Year Updates can provide a discount or extra months.
  • As all our Xojo and DynaPDF plugin licenses are per developer, you should check if you got a new developer in your team this year and adjust licenses to match team size.
  • For MBS FileMaker Plugin please check if you have enough license for the number of seats or servers you have in use.
    If you upgrade to unlimited seats or servers, the plugin won't need to check the usage counts.
  • For LibXL you can check if you like to upgrade from individual developer licenses to the Enterprise level. We can assist and may apply a special upgrade price.
Especially if you run on a budget and you want to spend some money in the old year, you can buy updates for several years in advance.
If you need help to decide what Xojo, FileMaker or plugin license you need, we may be able to assist you.

Xojo Meeting in Austin

I am coming to Austin in early February and I may organize a casual get-together with Xojo developers.

Something like a meet-up for dinner in a restaurant to talk about Xojo in North Austin.

I made a survey with doodle to find a date: Survey to find a date

We previously had meetings as well as a Xojo conference in previous years. See also forum post.

MBS Xojo Plugins, version 23.6pr2

New in this prerelease of the 23.6 plugins: Download:
Or ask us to be added to our shared DropBox folder.

Reducing the number of plugin parts for Xojo

For our next pre-release, we did a big change. We reduced the number of plugin parts from about 500 to now about 400. About a 20% reduction. This saves us some build times. We build each plugin part for 13 targets and thus building 5200 dylib/dll/so files is better than build 6500 ones.

How did we do this?

Well, we merged over 100 plugins parts together internally. For example if you build a Windows app using our Windows USB classes, we had several plugin parts. But it is quite likely you would refercence all the parts for Windows USB if you would write such an application. Since these three plugin parts had common code, merging them reduced the size of the total code. Often merging three parts makes the resulting plugin part smaller than 2 of them.

Old size of all 52 plugins was 879 MB and now is 832 MB, a 47 MB saving. You may check if your application become bigger or smaller as your milage may vary. Due to the reduced number of plugin libraries to load, the IDE needs about 20% less time to start.

Please let us know if you find issues with your projects. Everything should just work fine like before.

Static Variables in Xojo

In Xojo variable declaration somewhere inside a piece of code, you can use the static keyword. Whether you are in an event handler, a menu handler, a method or a global function doesn't matter. Just swap your "var" or "dim" with a "static" and you get a global variable. Instead of allocating memory for the variable on the stack and thus loosing the value on the end of the current code block, the static variable will remember the value. You can easily use it as counter for how often a method is called or for a global dictionary to cache results.

Here is a sample for a method which counts how often it gets invoked:

Sub testCounter() Static counter As Integer counter = counter + 1 System.DebugLog CurrentMethodName+" called already "+counter.ToString+" times." End Sub

MBS Xojo Plugins, version 23.6pr1

New in this prerelease of the 23.6 plugins:
  • Updated DynaPDF to version
  • Updated SQLAPI to version 5.3.
  • Added FullyQualifiedFieldName property to DynaPDFFieldExMBS class.
  • Added karFormData and kaffNonPDFA_4e constants to DynaPDFMBS class.
  • Added Hidden attribute to JSONIteratorMBS, XMLIterateAttributeNodesMBS, XMLIterateChildNodesMBS, XMLIterateElementsMBS, DynaPDFIteratorMBS and PCRE2IteratorMBS classes to hide it from auto complete. Since you use it via for each loops indirectly, you never need to use these classes directly.
  • Changed CallDelegateOnMainThreadMBS delegates to be hidden for auto complete.
  • Fixed GetDelegateParametersMBS, GetDelegateTargetMBS and GetDelegateWeakMBS functions to work better in newer Xojo versions.
  • Fixed an endless loop in JSONMBS class when running Search function with a bad query. Now propergates the exception properly.
  • Fixed JSON, DynaPDF and plugin to compile again with Xojo 2019r1.
  • Added SortArrayMBS methods to sort with/without a delegate and ascending or descending.
  • Updated openssl library to version 3.1.4.
  • Optimized text handling to be faster, which affects various string functions like ContainsWholeWordMBS.
  • Added CopyArrayMBS methods to copy array data to second array of same type.
  • Added target flags to our delegates to make sure they are available on the right targets.
  • Updated to LCMS 2.16fc1.
  • Improved array access for the plugins.
  • Added checks for fillSeries and fillDateSeries in CDRanSeriesMBS class to better handle if arrays are nil.
  • Improved array conversion from Xojo array to JSONMBS array.
  • Fixed crash in NSIndexPathMBS when passing nil array to Constructor or indexPathWithIndexes method.
  • Improved NSSearchFieldControlMBS to scroll horizontally.
  • Added DynaPDFParserMBS class.
  • Fixed some flags for delegates to work better in the future.
  • Added cmsV2Unicode function to LCMS2ProfileMBS class.
  • Added Scrollable property to NSSearchFieldMBS class.
  • Added more properties to CURLEmailMBS class for debugger.
  • Updated SQLite to version 3.44.1.
  • Added ApplyMergePatch, ApplyPatch, MergePatchFromDiff, PatchFromDiff to JSONMBS class.
  • Fixed string parser in LargeNumberMBS to not break on a minus sign sometimes.
  • Added BigNumberConversionMBS class.
  • Added new GetStringValue and SetStringValue methods to BigNumberMBS class.
  • Added new GetStringValue and SetStringValue methods to LargeNumberMBS class with more options.
  • Fixed OpenMTInputFile method in CURLSMBS class to remove InputData first.
  • Fixed SetupAWS and SetupOAuth in CURLSMBS class to reset NoBody flag if new transfer is not head.
  • Implemented EOF and BOF for SQL Plugin for RowSets to make for-each loops work better, but AutoCache may need to be enabled if the database doesn't allow MoveFirst like SQLite.
  • Added isBOF and isEOF to SQLCommandMBS class.
  • Improved WindowsDeviceInformationPairingMBS class to keep reference to the device object.
  • Fixed a possible crash in SQLConnectionMBS destructor.
Or ask us to be added to our shared DropBox folder.
The biggest plugin in space...


Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008