Xojo 2017 R2.1 and Updated Roadmap

I’ve had a hellacious travel schedule the past six months so I apologize that I’ve not been up to snuff on Xojo news. Last week Xojo 2017 Release 2.1 was made public and earlier this week Xojo CEO, Geoff Perlman, penned a blog post about the short-term roadmap for Xojo. Let’s dig in!

First, the 2.1 release has a mere 16 bug fixes in it. This dot release fixes some critical Linux, and Windows bugs. A few IDE bugs were addressed and the PostgreSQLDatabase plugin was updated. Many of these bugs won’t affect everyone but it’s definitely worth upgrading from R2 if you have not already done so.

Now on to Geoff’s short-term roadmap. You can read the entire blog at https://blog.xojo.com/2017/09/19/the-short-term-xojo-roadmap/. To summarize it in a nutshell: 64-bit is taking them longer than expected.

To this I say, ‘Duh’. Anyone who expected 64-bit to be done by this time hasn’t been around very long. Xojo has consistently blown their estimates for most (all?) of their big projects. The transition to Cocoa from Carbon took a lot longer than originally announced. iOS took longer than expected. The introduction of the Xojo IDE from the Real Studio IDE was also delayed (as a side note I’m still amused at the accusation that I personally caused a 6-month delay in the Xojo IDE due to a blog post).

The point isn’t, ‘Oh my gosh, Xojo has yet another delay’ it’s that Xojo is very bad at estimating this stuff. Some of this is on them but some of it is beyond their control. Supporting mac OS, Windows, Linux, iOS, Raspberry Pi, desktop, console, and web apps is a mammoth undertaking. I am constantly amazed at the magic Xojo performs without my knowledge. To me it ‘just works’.

Apple, bless their hearts, changes things on a whim every year at a minimum (sometimes even more often than that) and causes Xojo to play catch up. And they usually do this with little notice. The current change being that the iOS Simulator will no longer support 32-bit apps so guess who has to scramble to make it work now?

Linux distributions seem to change daily. Xojo has to scramble to catch up with those changes too. They recently updated Xojo to use GTK3 and that was a big deal. They sort of had to do this upgrade because GTK2 was pretty long in the tooth. I can only imagine the internal efforts they did for testing.

Windows doesn’t change much for better and worse. The technology from ten years ago still works but that’s not necessarily the best ‘modern’ approach for Windows. Many users complain about flicker when windows are resized. This is a valid complaint but because Windows does not double-buffer their windows like Mac and Linux the older Win32 controls flicker like mad under many circumstances.

Regardless, 64-bit is the roadblock for other things. If you were hoping for Android, interops, or plugins compiled in Xojo to be released in 2017 you’re out of luck. This is what happens with a small development team. There simply isn’t enough man-hours to work around delays in some projects. This happens in ALL software development products but with a small team this impacts everything.

The only bit of good news from Geoff’s blog post is that the Windows framework is getting a big update. This update will ‘dramatically’ reduce flicker according to Geoff. No word on what exactly they’re changing though a thread on the forums from Aug 9 might give a little clue. Changing transparency seems like a little thing but perhaps they plan on implementing a double-buffering scheme. Until we find out more it’s not worth speculating. It seems like this new scheme might make it by the end of this year. So either this has been in the works for a long time or it’s not huge from a coding standpoint.

Promising services based on a product feature that doesn’t yet exist is dangerous. If you were promising Cocoa, iOS, or 64-bit versions before they were actually released you did your customers a disservice. I remember one XDC where a database ORM (Object Relational Model), similar to ActiveRecord, was shown with a lot of interest by those attending. I’m still waiting on it. The lesson is to not depend on vaporware!

So what are your thoughts on R2.1 and the Short-term Roadmap?

Xojo 2017 Release 2

Last week Xojo 2017 Release 2 hit the download servers. This release has the usual mix of new, changes, and bug fixes. At first blush it doesn’t seem like there is a lot to mention but there is, but I’ll get to that in a minute.

Before we get into the highlights it’s worth mentioning, again, that R2 does not have 64-bit debugging for Windows. As Xojo mentioned in their blog post (http://blog.xojo.com/2017/07/26/the-best-laid-plans-64-windows-debugging/) the LLVM compiler and toolset just wasn’t ready to be included in R2.

Despite the lack of a 64-bit debugger for Windows a number of things were corrected in 64-bit Windows builds. Icons are now applied correctly and they also show the correct version information. The 64-bit MS SQL Server database plugin now works when compiled on the Mac. Game Input Manager also works in 64-bit now. Images assigned to an ImageWell are now drawn properly.

Also related to 64-bit builds, the Split and Join functions for Unicode strings is much faster and Replace and ReplaceAll behaves like the 32-bit versions. Exceptions no longer leak memory. Virtual Volumes now work. Copying a picture to the clipboard now works. XojoScript is now available in 64-bit builds.

Linux GTK3. See Xojo blog post (http://blog.xojo.com/2017/08/15/goodbye-gtk-2-hello-gtk-3/) detailing some of the changes. The switch to GTK3 was necessary for HiDPI support and now scales automatically on integral scale factors (i.e. 1x, 2x, 3x, etc). This also lets child controls clip properly on parent controls whereas they did not always clip properly in prior versions.

Be aware, though, that this switch may affect how your controls draw. While it’s always been true that default control sizes are bigger in Linux you could sometimes cheat and use the open events (or subclass the controls) and make them slightly larger in Linux and perhaps make the system font a little smaller and things would look good enough to not require a bigger UI change. With this switch to GTK3, however, it seems like some controls, PopupMenu and Pushbutton come readily to mind, in that their caption location is definitely lower than the prior version thus making them look odd without more work. For me, what worked in R1.1 just doesn’t look good in R2.

This change begs the question that if we could make a Xojo theme for Linux that would make control heights smaller, text sizes smaller, and change the caption locations to make this a non-issue. Perhaps someone with more knowledge about Linux themes could answer that.

A few other things that might ruin your day in Linux is that not all Linux distributions now allow you to remove the border of TextFields. It wouldn’t surprise me if additional issues are found in GTK3 as time goes on.

iOS has a couple of important changes. The first is that the AutoLayout Priority property in prior versions was calculated on its own. In R2 new constraints get the ‘Required’ priority. Any existing projects should get thoroughly tested on multiple sized devices to make sure nothing needs to be fixed. In our own testing we had to simply change the priority to Required to fix any issues.

Another iOS change that may affect you is that setting the CopyFileStep to the “Frameworks” destination now properly creates the Frameworks folder inside the iOS package and puts the files there. Before you had to create a manual directory for it to work properly.

Another nice fix is that a numeric suffix is no longer added to copied iOS controls unless they need it. This was an annoying bug. Not hard to fix but annoying nonetheless.

The web framework received some attention in this release as well. The WebPage width and height properties are now correctly updated before the Shown event is fired. A number of WebMapViewer errors were fixed including an annoying JavaScript error on the first refresh and where it would fail if there was more than one instance used in the app at a time.

The Session timeout now takes touch events into account when figuring out the last interaction with the app. In addition to that, web apps now try to reconnect if they’ve lost connection to the web app and will continue to do so for three minutes or until the user navigates away from the disconnect screen.

The Listbox control received some updates. For Linux, HelpTags are now positioned properly and in Windows they disappear properly when the mouse leaves the control Also in Windows the endcap is drawn correctly and headers no longer flicker when hovered over by the mouse or when clicked on.

A regression was reported for R2 that affects dragging items to the Listbox. In Windows the X & Y coordinates are incorrect. This was reported in Feedback 49190.

New Drag events were added to the Listbox. Except for a jumbled paragraph in the release notes I’m not sure anyone would notice. I would spend more time talking about it but as far as I can tell these are not documented in the Language Reference, either local or online and there is no example. I find it inexcusable to have a major change to such an important control not be documented. This seems like it should automatically make it into the documentation. Do better Xojo!

The IDE received a bunch of bug fixes and changes. New items in the Menu Editor no longer ‘fly in’ and arrow keys work now. Long error messages are wrapped and row heights adjusted in the error reporter are adjusted as needed (as a side note does this forebode variable height list boxes?) Recent Items in the Project Chooser now show size, date created, and date modified when possible. Pressing the Escape key now acts as a “Revert Now” to changes.

It also appears that a regression bug was introduced in Raspberry Pi. Button.Action events don’t fire if using a touchscreen. They appear to work properly when using a mouse. Feedback 49221.

As always, look through the release notes to see what else has changed. It’s also a good idea to test your applications thoroughly when upgrading to a new version.

Xojo 2017 Release 2 was chock full of new things and changes. I hope a dot release is issued to fix some of the bigger regressions. Up next is 64-bit debugging and remote debugging, the new plugin format, interops, and Android. Think they can get it all done in 2017?

Sorry for the delay in getting this out. Those pesky clients sometimes want on-site help and the last thing I feel like doing is writing after a long day of coding.

 

Xojo 2017 Release 1.1

Xojo 2017 Release 1.1 hit the web today.  This dot release contains some very important Windows framework bug fixes related to printing and is recommended for all users.  There are a few other changes as well.

For those that are trying to print reports in Xojo this release fixes some critical bugs.  First, the Printer.Landscape property is now honored whereas before it used the default printer orientation.  Second, the PrinterSetup.Setup string is now built and restored properly and works when set.  These fixes now allow reporting tools like BKS Shorts to print properly in landscape mode when restoring the PrinterSetup.SetupString.

A couple of exceptions were fixed in the IDE.  Toggling the line number display in Windows no longer disables the cursor.  You can now toggle the line numbers in IDE scripts.  Duplicating an instance of a container control no longer create an invalid control set.

It is important to recognize the value of this dot release.  For many developers this isn’t an important release but for those of us that rely on printing this was a big deal.  2016 R4 broke printing almost entirely and it was mostly corrected in 2017 R1.  Each release of Xojo brings new features and many bug fixes it’s often very difficult to revert to an older version.  So kudos to Xojo Inc. for doing a dot release.

Xojo 2017 Release 1

The road to 64-bit took another step forward today with the release of Xojo 2017 R1.  This important release let’s you do 64-bit Remote Debugging for some targets with some important caveats.  It also adds the ability to Remote Debug Raspberry Pi applications.  And, as with every Xojo release there are a mix of new features and important bug fixes.

64-bit Remote Debugging

2017 R1 lets you remote debug 64 desktop, console, and web applications on macOS and Linux assuming that neither one uses XojoScript.  64-bit XojoScript is still missing in action which is preventing the IDE itself from being 64-bit.  I believe this is scheduled for Release 2.

Missing is the ability to remote debug 64-bit iOS, and 64-bit Windows applications.  Presumably iOS shouldn’t take long since macOS is already working.  From what I gather the LLVM compiler for Windows isn’t as far along as macOS and Linux so it’s taking longer to get working.

The Remote Debugger Stub has been updated to version 2.1 and now has 32-bit and 64-bit versions for Mac, Windows, and Linux, and a Linux ARM version for the Raspberry Pi.  The 64-bit version can switch between 32-bit and 64-bit correctly depending on the target setting in the IDE.

Major Changes

One of the important updates to the web framework is causing major issues with HTMLViewer controls that depend on StatusChanged events.  The web standards group decided that the StatusChanged can no longer be fired via javascript any more and the updated WebKit engine in R1 breaks code that depended on the old functionality.  For developers using Tim Parnel’s HTML Edit you will have to wait for an update before upgrading to R1.

The web framework now allows developers to use HTML in many of the controls.  WebLabel, RadioGroup, Listbox, Toolbar items, and SegmentedControl can use HTML tags in their captions.  Example:  Label1.Text = “This is a line with <raw><b>bold</b></raw> text in it.”

The Listbox has been updated for all desktop targets and now allows you to customize the disclosure widget.  This seems like an odd change.  Could this be prep work for something in a future release?

SSLv3 on Xojo Cloud services is deprecated and will be disabled on all servers in summer of 2017.

One of the new options in the Preferences is to force Standardized Format after every line.  This mirrors the contextual menu command Standardize Format which looks at the current selection and changes the case of every Xojo keyword to match it’s default.  So if you typed ‘recordset’ it will change the case to ‘RecordSet’.  It does nothing for your own variables (which would be more useful, in my opinion, and it looks like a future release may allow for that).

Also new in the preferences is the ability to change the keyboard shortcuts of all of the menus in Xojo.  If you don’t like the Remote Debugging key combination you can change it to something else.  One that I think I will change is the Build (command/control B) to something (perhaps command-option-B) since I often accidentally build once or twice a week when simply trying to paste code.

Bug Fixes

A number of Windows framework bugs were fixed.  Probably one of the more important ones is with Xojo.Net.HTTPSocket.  The socket events are now called when it is created within a thread.

Another big Windows bug fix is in Direct2D printing (broken in 2016 R4).  Font sizes were incorrectly reported by the graphics object and thus caused all printing to be messed up.  BKS Shorts (our reporting tool for Xojo) works properly in 2017 R1 when printing in Windows.

Windows received a number of important HiDPI updates.  Note that the application icon for 64-bit builds is still not being set.  One workaround is to set the associated icon via your installer.  If you want an example of how to set this via an Innosetup script, let me know and I’ll share it with you.

The IDE received a really big batch of bug fixes in R1.  The amount of them makes it impossible to list them all here, but one that’s been around for a long time is that ellipses (…) are no longer saved when creating the method signature.  That bug hits me every now and then.  For the entire list of IDE bug fixes, please see the release notes.

Conclusions

The road to full 64-bit compatibility is happening incrementally.  R1 is another step in the journey and it’s nice to see progress.  It is my hope that 2017 R2 will have Windows and iOS 64-bit remote debugging (in the iOS Simulator – I doubt remote debugging on an actual iOS device will ever happen).

Xojo has said that the Windows IDE will require 64-bit at some point in the future (even though it will still be able to build 32-bit Windows apps) and that future might be sooner than we expect.  I’m curious on how many people think this is a good or bad?

This release has some nice goodies in it.  The remote debugging for the Raspberry Pi has been awesome.  I’m working on a project right now that advanced in a number of days what had taken me months of work to do before.  The work in Windows to correct the Direct2D printing issues is most welcome and the number of HiDPI fixes is nice too.

I’ve been using R1 in regular production work for a number of weeks for macOS, Windows, Raspberry Pi, and iOS development and I’ve been pretty happy with it.  It’s been stable and I have no complaints with it.  The only thing I didn’t spend any time on in this release cycle was web.

Anything new in 2017 R1 that you are happy about?  Anything that disappointed you?

Xojo 2016 R4.1

Xojo 2016 R4.1 was released today.  The 4.1 release mostly contains Windows fixes related to the switch in drawing engines.  Gone is GDI Plus and Direct2D is now used instead.

GDI Plus wasn’t only deprecated but removed so that is a little different than most Xojo releases.  It is highly recommend that you test your Windows apps thoroughly before release.  It’s also recommended that you test your 64 bit builds as well since it’s a newer framework and has received less attention.  Just today I found out that SegmentedControls don’t draw right in Windows 64 bit builds.  Feedback id 46268

As always, take a look at the full release notes for pertinent information.

Monkeybread Software released version 16.5 of their plugins today http://www.mbsplugins.de/archive/2016-12-12/MBS_Xojo__Real_Studio_plug-ins and is recommended for all users.  Einhugur http://www.einhugur.com has released a number of updated plugins for R4 and has indicated that more are updates are coming.

Xojo 2016 R4 (The Xojo IDE I Always Needed)

Xojo 2016 Release 4 hit the web today.  In many respects this is the IDE that I wish had been released three and a half years ago as a few of the more insidious features bugs have been fixed.  And, as usual, there is a plethora of new features, changes and bug fixes that make R4 a must-have release.  Let’s get to it!

First, the tabs in the IDE now work like most of us want them too.  Open an object, say a window, into a new tab.  By default this tab is locked and it will stay in that window.  The small back and forward arrows at the top of the navigator are not even visible.  To ‘use’ the tab for another object click on the lock symbol in the tab to unlock it.  It might take a click on the name of the Window at the top of the navigator but the arrows come back and you can navigate back to the project stack.  Or, as I tend to do just close the tab and open another object.

In a somewhat related fix, the Back and Forward arrows in the toolbar now work properly per tab.  As you navigate through an object, choosing the back button remembers where you’ve been in that object.  In previous releases the Back and Forward arrows seemed to be a exercise in random number theory as it seemed to go to locations in the IDE I had never visited.  There might have been a pattern to it but usually I just never bothered to use the buttons.

If nothing else, these two changes are a compelling reason to use R4.  The locked tab feature and the back/forward buttons never worked the way I wanted to use them.  It is sad that it took this long to get it right.

The Navigator filter received some updates too.  Now you can use type’s like ‘type:property’ will only find properties.  ‘Type:shared%’ will only find anything that’s shared.  It’s pretty powerful and I recommend playing with it a bit to get used to it.

There is now a contextual menu item for Pictures to convert them to an Image Set and put the selected picture in the first image slot.  This eliminates multiple steps with the mouse and is a very useful addition.

For Windows users there has been some changes.  UseGDIPlus has been deprecated and is replaced with Direct2D drawing.  Make sure to test any of your Windows apps that use a lot of drawing in a graphics object as things might have changed a little with the switch to Direct2D.

New Picture only creates 32 bit depth pictures and this now matches what the other target platforms do by default.  This also means that NewPicture method is deprecated.  HiDPI builds for Windows are no longer beta.

Xojo cloud received a major update.  Uploads to Xojo Cloud are now much faster.  Libraries are now cached by the server so only code and image resources are uploaded.  For example, in R3 one of our largest web projects took over three minutes to upload.  The first time I used R4 it took a little over two minutes (it was caching new libraries) but every time I uploaded the project thereafter it took a mere 44 seconds to upload.  That’s a significant time savings!

The WebListbox now has a CellPicture method that allows you to assign a WebPicture to it.  The WebSession shutdown mechanism has been refactored to help keep sessions from getting stuck and not quitting.  Exceptions in Websession.close no longer keep subsequent sessions from closing.

Due to changes, especially on the Windows side, you might want to check on updated versions of your plugins.  MonkeyBread software recommends version 16.5, or newer with R4.  16.5 is currently in preview and they expect to release it next week.  Einhugur has a couple of updated plugins for Release 4 as well.

As with any major Xojo release, you should test your projects thoroughly before releasing anything into the wild.  The beta program catches a lot of bugs but it’s not a perfect program.  One such bug that got through is an Application crash when using the Super button in the Inspector.  Until a fix is released type the class super by hand rather than using the dialog.

R4 is a small, but significant release.  It moves Windows forward using Direct2D drawing, and Xojo Cloud is significantly faster for deployment, but perhaps the changes to the IDE are the most important.  The Navigator is not nearly as horrible as it was in previous releases and, in my opinion, makes it as useful, now, as the Real Studio IDE.  If you are still using Real Studio I recommend checking out R4 as I think it takes most of the pain out of using Xojo.

What’s new, changed, or fixed, that makes you happy?

Iconographer Review

iconographerscreensnapz001

If you’ve spent any amount of time making cross-platform applications in Xojo you probably hate icons as much as I do.  I’m no graphic artist and because of this I’ve paid good money for several icon sets.  These icon set are fine but they’re pretty basic/generic and don’t tend to look right in macOS, Windows 8 and above, or even iOS.  And that’s just for application icons.  Making icons for documents, disks, folders, and the like, are just as big a pain to make.  Each platform has several different styles and getting it right is awful.

Ohanaware introduced Iconographer last week.  This is the tool I’ve been waiting for!  Iconographer lets you easily make icons that are consistent for their target platforms all while keeping the overall identity intact.  Not having to use a high-end graphic tool, like PhotoShop is worth it to a developer geek like me.

Using it is easy.  Simply drag your starting image into the editor window and start manipulating it.  At the top left of the window there is an expanding toolbar, for lack of a better word, that lets you pick the Icon Type:  Application, Folder, Disk, Document, and Web Icon.  Below that you have options for the target.  Depending upon the Icon Type you have the option to pick the Target.  For Application you have macOS, Windows, and iOS but for the Folder Target you only have macOS and Windows.

screen-shot-2016-11-10-at-7-09-32-pmTo the right of the drawing canvas you can pick the style of the icon.  For macOS you have Blank, Circular, Rounded Rectangle, Tilted, Rounded Square, and Plugin.  For Windows you have Blank, Windows Tile, and Use Different Application Icon.  Similar styles are there for iOS.

Below the Styles is the Layers list that lists the layers in the selected Style.  I will be honest, I had issues figuring out how to manipulate the layers.  You can add layers using the ‘+ Layer’ button where you can add Shapes, Images, and Text.

Adding Text also was problematic for me.  Once I added a Text object I couldn’t always select it until I had rotated it and then reset it to zero.  Then, if I had two text objects I never was able to edit and change the text of the first one.  I chalk this up to possibly not understanding what the shared label is.  At times I also had a weird purple selection rectangle that I was never able to get rid of.
At the bottom of the drawing canvas is, perhaps, one of the more useful features of Iconographer.  The Eye lets you select from a number of environments to preview your icon in an About Window, the macOS dock, and even the Mac App Store, to name a few.  This is a great way to preview your app in an actual environment and lets you make decisions while in the application instead of having to leave and use a graphics application.

screen-shot-2016-11-10-at-7-09-49-pmOnce you’re done you can build your icons.  It takes the currently selected Icon Type and all of the selected Targets and outputs them into the directory of your choice.  For macOS it will create an icns file and for Windows an ico file.  It really is that easy.  It would be nice to have the ability to export SVG format too.  If you’re creating a suite of icons, say for application, document, and disk, you have to do it in several steps but that I suspect that most developers won’t have an issue with that.

Iconographer is a must have for any cross-platform developer.  It’s ability to make consistent application and document icons for macOS, Windows, web, and iOS easily and quickly make this an invaluable tool.

Iconographer works on macOS X 10.10 and better.  It normally costs $19.99 but Ohanaware has an introductory price of $9.99.  More information can be found at http://ohanaware.com/iconographer/.

Xojo 2016 Release 3

Xojo 2016 R3 was released today.  This release is a much smaller release than either R1 and R2 and despite not having any major new features has some nifty new small features and changes that will probably make your life easier.

You can now create a new event definition by right-clicking on an existing event and choosing “Create New Definition From Event”.  If you have ever subclassed a control you know what a pain this can be.  You need the Open event for your subclass, but you need to create a mirror Open event so the user could do something.  Before this release you had to create the definition manually and then hope the parameters (if there were any) matched.

Making ImageSets from existing pictures is easier.  Right-click on the picture and choose “Convert to Image” where it will create an ImageSet and put this image at the base image.  The only caveat to this feature is that you must have the Supports Hi-DPI setting in Shared Build Settings checked.  This seems like a needless restriction in my opinion.

You can now right-click an item in the Library and be able to create a new subclass from that menu item.  You no longer have to add a class and then change its super to the class you want.

Extract Super is a new right-click option on a class that lets you extract code items.  If you have a subclass , like the Listbox, you can now extract the super and tell the IDE which methods, properties, constants, delegates, enumerations, etc it should have.  To do this before would have been an extremely tedious and time consuming task.

Right-clicking on the Contents headers in the Navigator lets you insert things into your project.  In a similar fashion, right-clicking on a header of an object lets you add another of the same type.  If you right-click on Methods the only thing active in the contextual menu is the Add method.

The contextual menu in the Code Editor has two new additions.  You can now “Wrap in #if false #endif” and “Wrap In For Next”.  Both of these will options will wrap currently selected code in that code.  Another interesting adoption, “Convert to Constant” will take the currently selected code and bring up a Constant dialog allowing you to change the Name, Scope, Type, and Value of the constant before saving it and replacing the code with the new constant.

The icon for the Xojo Project file now has a solid color that helps distinguish it from the other Xojo text files.

The Library now has two “All” entries.  One is “All Controls” which shows every control including custom subclasses in the project.  The second is the “All Built-In Controls” which is just the native controls for the project type.  There is a new attribute you can add to a control, “HideFromLibrary” that you can add to a control subclass that keeps it from listing in the library.

If you like to have non-standard code editor colors you can now import and export color themes in preferences.  Also in preferences you can set how many “Recent Items” there are in the menu of the same name in the File menu.

As with every Xojo release, R3 has a not insignificant number of pure bug fixes.  I encourage you to look at the entire list and decide for yourself if anything important to you has been fixed.

An important bug concerning MySQL was fixed.  In the R2.x series using a MySQL connection in a thread would just ‘hang’ and never come back.

In my own testing R3 has been solid.  I did run into an issue with a web project that I opened in R3, saved it, and then tried to reopened it in R2.  I got the infamous “You might lose data” message that’s always scary.  In R2 I did an analyze project and saved it with on further issue.  So remember kids, backwards compatibility is a blessing – not a guarantee.

I enjoyed this beta cycle.  It was much smaller and easier to test.  Without major new features it seemed a less rushed cycle.  Hopefully R4 will be as good.  Will we finally see 64 bit debugging?  Man, I hope so as a current Raspberry Pi project really could use it.

Anything in R3 that you’re particularly happy to see?

Edit:  As Tiago points out in the comments section I forgot to mention the compiler optimization settings!  This dropdown in Shared Build Settings area will choose an optimization level (Default, Moderate, and Aggressive) for Raspberry Pi and any other project built for 64-bit.  Early reports suggest that it does a good job on math intensive projects as well as projects that are using a lot of loops.

It missed my initial list because we’re not building for 64-bit yet – waiting on that debugger.  I apologize for the omission.

Xojo 2016 Release 2.1

Release 2.1 of Xojo 2016 was released yesterday.  This version fixes a few bugs discovered in Release 2 and fixes couple of serious regressions regarding threads.  Sadly, it also introduces a couple of new bugs that might affect your project.

A number of bugs were squashed in iOSTable and for web apps.  If you use either I recommend checking the release notes.

I am unsure of exactly what changed in Release 2 but Threads had issues.  Release 2.1 fixes quite a few (most?) of them.  Resuming a suspended thread now works properly on sleeping or suspended threads.  Blocked threads waiting for locks will stay waiting.  Some applications were hanging when the last non-main thread exited and the main thread had recently been unblocked.

If you are MySQL user the thread issue may have affected you as well.  Certain queries that create detached threads would cause assertions.

The DMG’s distributed by Xojo are now code signed so they will open in Sierra.

A product as big as Xojo will inevitably have bugs not found during the beta process.  I usually joke it takes about thirty seconds after release for the first bug to be found and Release 2.1 is no exception.  These Windows bugs, however, are no joking matter.

If you use RTFData in a Windows application you may experience problems.  As you reload the rtf data back into the control the text sizes get smaller.  Feedback 44852.  This may be related to Feedback 44878 where using SelTextSize and TextSize results in the wrong size being reported.  So if you have 10 point text it will report back as 9.5.

I think it’s always a good idea to peruse the Newest and Recent Activity lists to see what other developers are seeing.  There are a few other minors regressions being reported as well as a couple of Windows only regressions.

Should you upgrade to R2.1?  If you are already using R2 you most definitely should as R2.1 fixes some serious issues..  If you are on an earlier version it’s a bit more murky.  The answer is a definite maybe but only after some doing real testing – especially if you are using threads or MySQL.

What say you Xojo friends?  What do you think of R2 and R2.1?

Xojo 2016 Release 2

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?