Xojo Release 3

The third release of Xojo hit the internet this morning.  This release continues the incremental improvement and bug squashing that Release 2 did.  In addition, some nice new features were added that should make everyone happy although there is one major item that’s bound to give many users (or at least those not building for Cocoa) some heartburn.

The big change is that Windows and Linux desktop app developers can no longer access user interface elements from within a thread.  The behavior was always discouraged but not outright banned.  Now it is.  Just as it does in Cocoa, accessing any UI element from within a thread will cause a Thread Accessing UI exception to be thrown.  To workaround, you will have to have your thread fire a timer on your window or class which then updates the UI.  To see an example, look the Examples/Desktop/Threading/Threaded UI Update project.

Some good news for Web Edition users.  WebFiles can now point directly at FolderItems and can download incrementally in 64k chunks rather than having to load everything in RAM first before downloading.  The WebFileUploader can also take advantage of this new functionality as long as it has permissions to write to the temporary folder.

Another change that might affect a lot of developers was to the database server plugins.  Large queries could sometimes hang your application (because it was blocking the main thread).  I’m not sure when the Multi-threaded flag was added (Real Studio 2011-ish?) but it proved to be unsafe and caused occasional hard crashes.  In Release 3, if you call a large query on the main thread it will block (i.e. freeze) your application.  If you call it from a thread it will ‘just work’ but in a safe way so crashes don’t occur.

The number of IDE bugs squashed in this release is huge.  There are dozens of changes that fix some of the more annoying habits of the Navigator.  The entire IDE feels more solid and the Navigator much less twitchy.  Deleting children items in the Navigator no longer moves the focus back to the top of the Project tree.  Instead, it will try to select the next level up.  Converting methods to and from shared updates the Navigator properly now too.

Due to bugs caused by Navigator animation, it’s now been turned off until those bugs can be squashed.  The animations seemed useless to me by wasting cpu cycles.  Sure, it looked pretty but it didn’t DO anything for me as a developer.  Good riddance, in my opinion, and I hope they don’t come back.

The main IDE toolbar can be hidden and shown.  We still don’t have the ability to change the icon sizes, but it’s a start.    For Mac OS X users that like to run in fullscreen mode, hiding the toolbar seems to be impossible.  I’m not sure if this is an OS X issue or a bug but it seems pretty minor to me.

The Library filter has now been moved to the top to match the location of the Navigator filter.  I always thought it was silly to be on the bottom and I’m glad they’ve moved it.  In addition to that, both the Library/Inspector and Navigators can be made much smaller now.  The labels in the Inspector aren’t perfect but this a much needed improvement, in my opinion.

Also new is a new Run tab is opened when debugging an application.  When in the debugger and you select Edit Code it will take you to another tab so you don’t lose the Run tab.

A long term debugger issue was solved in this release.  If you stepped through code quickly (I call it spaz clicking) the debug app would usually crash.  This is no longer the case.

Windows users received some love in this release.  Windows flicker appears to have been reduced by being smarter on when to refresh the window.  Typing in the Code Editor seems to be much improved.  Memory leaks in graphics that use transparency are also fixed.

All in all, this release gives us some nice improvements for Desktop and Web Apps.  The IDE, Navigator and all, are shaping up (it still needs improvement but that’s a different post).  This is a recommend update to Release 2.

The full revision list is at  http://docs.xojo.com/index.php/Changes_2013r3

What’s your favorite addition/fix for Release 3?  Do you know of any bugs that made it through beta?

[Updated:  The IDE didn’t crash when spaz clicking in the debugger it was the debug app that crashed.]

12 thoughts on “Xojo Release 3

  1. Slowly so very slowly Xojo gets better. I think I had only 2 crashes today. Copy and paste now mostly works. Why can’t I paste methods and properties when I have Method or Property selected in a class? And the $%&/ lock icon still doesn’t work. After 3 versions this must be a bug from hell.

  2. One thing I forgot to mention (because it’s technically not part of the IDE release) was that Feedback queries are now much, much, much smarter/better. Big win for team Xojo IMO.

  3. Besides tab locking working, Tab management (close all, close others) and being ablr to again tear off a tab into a new window would help a lot.

  4. Yes, it is a little bit better, but the improvement process is very slow.
    But it is still not as good as it should be to migrate my current projects to Xojo.

    The whole process remembers me on Windows Vista or Windows 8 … an unfinished product thrown on the market, which forces customers to stick to the old system …

  5. The new release looks and feels perfect, but the new thread accessing UI restrictions make it unusable for me. I only build windows applications, and they work perfectly with no crashes or exceptions. Now I would love to use r3, but I won’t be able to do that. I won’t be able to use any future releases as well, since there is not even a pragma I could use to disable thread exceptions …

    • Well, if you’ve done any Cocoa apps you’ve had to deal with this for a while now. We’ve decided that any new projects going forward, or any major updates to apps, will be Cocoa instead of Carbon. Yes, it’s a pain, but the threads accessing the UI have never been a good idea even if you could get away with it.

  6. I actually know that accessing the UI via a thread is not a good idea, but in my opinion, a way to disable the exception should be available.
    For example in most of my applications, I update a listbox with thousands of rows. Add rows, modify cells, etc. How will I be able to access the listbox, with a timer, without writing timer subclass?
    This is just an example. I will be able to find a way someday, but it will require a lot of work, which I am not prepared or have the time to do.

  7. ” How will I be able to access the listbox, with a timer, without writing timer subclass?”


  8. I am in the same situation and I need threads to load listboxes but now it does not work. So I am not going to be able to upgrade to Xojo from RealStudio as I just don’t have the time to go back and completely rewrite over 70 different software tools that I have written to run my company. I am not a full time programmer and Xojo gave me the freedom to roll my own solutions. Now its been yanked away from me. This is a disaster for me.

Comments are closed.