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.]