Last week Xojo 2016 Release 2 was unleashed to the masses. There are a lot of changes and tweaks in this version and if you are creating web or iOS applications there is a lot of like about this release. There are also a myriad of changes and enhancements that should satisfy most developers.
iOS Stuff
The biggest changes in R2 is for iOS and these are things that developers have been requesting since its initial release. Support for iOS 7 has been dropped because its market share is less than 20% and the minimum required version is now iOS 8. This also means that Xcode 7 or Xcode 8 needs to be installed.
The Xojo engineers added iOSScrollableArea which allows you to view and display content that is larger than the view. This is a very welcome addition and is worth the upgrade for this feature alone.
R2 also adds the iOSLocation class that allows your application to request location coordinates as well as get updates from the device. Once your application gets permission to access the device location you receive changes via the LocationChanged event that gives you latitude, longitude, altitude, course and speed parameters. An Accuracy property lets you change the desired accuracy. In addition to iOSLocation Xojo has added the iOSMotion class that allows developers to access the accelerometer and gyroscope.
iOSTable was arguably the most useful and least powerful control in iOS for Xojo and this release definitely gives it some love. You can now embed controls in the cells of iOSTable by using the iOSCustomTableCell class. This allows you to create some very rich and powerful UI that lives in the cell of an iOSTable. I guess the best equivalent in desktop and web terms is that the iOSCustomTableCell is a specialized ContainerControl you can put into an iOSTable cell. I’m looking forward to using this.
They’ve also added support for Row Actions in the iOSTable. The new ActionsForRow event passes in the section and row and you have to supply the iOSTableRowAction array. The iOSTableRowAction has a title, an Auto tag and a Style. The style can be either Normal or Destructive with Destructive changing the background of the Action to red (does this ever vary? – not sure).
The new iOSSharingPanel allows you to share pictures, text and URL’s with any registered system service or app. That’s a fancy way of saying you can share this data between applications. It’s the iOS version of the clipboard available to desktop applications.
The iOSPicturePicker class allows you to select images on the device or take pictures with the camera.
To avoid confusion for users, the old SQLiteDatabase class for iOS has been renamed iOSSQLiteDatabase. The corresponding recordset class is now named iOSSQLiteRecordSet.
Non-IOS stuff
The Web framework is now HiDPI capable. It works similarly as desktop apps in that it queries the browser for the scaling factor. Then, the application serves up the proper image if it can. You can change how this works by changing the Supports HiDPI in the Shared Build Settings.
In Windows there are a number of significant HiDPI changes that make it work better in Windows 8.1 and 10. Perhaps the biggest Windows change is that Xojo.Net.HTTPSocket is no longer much slower than HTTPSecureSocket. I have not had a chance to look at this one in detail yet so if you’ve had success or failure with it, please leave a comment below.
Always check the release notes that are in every release. I’m just hitting the highlights out of hundreds of line items and you never know what might be there that affects your application.
As with any new release it’s better to test your project against it before releasing it into the wild. In my own testing I had some instability with converting an old web project (started around the very first public beta of Web Edition) to use HiDPI graphics. This involved adding an ImageSet and adding the 1x and 2x graphics, deleting the old graphic, and then fixing it in all locations in the project. I was able to crash the IDE but all of the crashes were different and, of course, none of it was reproducible.
The Future
The 800 pound gorilla in the room is a 64 bit IDE and 64 bit debugging. Things like XojoScript are holding back the IDE from being 64 bit. I would also imagine that not having an integrated debugger available in 64 bit is holding back that as well. I know we are avoiding releasing some 64 bit projects because of these limitations. We’ve also been playing around with the Raspberry Pi and it’s definitely not very useful without the debugger.
We need the 64 bit debugger. Let’s hope that R3 provides us with some relief in that area!
How has your experience been with R2 so far?