Tuesday, June 15, 2010

Cocoa Update

Is Cocoa ever going to ship? I'm sure that is the question that many of you are asking.

This is really getting old. Every few months I write to you with an update on our progress moving our Mac OS X framework to Cocoa. I'm always conflicted when I write these updates because I'm sure you are interested in hearing about our progress but at the same time, I'm also sure that waiting for us to ship Cocoa support is as frustrating for you as it is for us.

There is a rule that is often true in software development that the last 20% takes 80% of the time. It sure feels like that's the case here. We do continue to work on it every day. For the most part, we are only fixing bugs at this point. Many of our beta testers tell us that their projects work now with few or no problems at all. For example, here's a screenshot from a project I personally wrote for a friend of mine. The Carbon version is on the left and the Cocoa version is on the right. They are nearly identical.

Of course the Cocoa version of this app has a few issues you can't see from the screenshots. The about box isn't working and there is an issue with the Print dialog (but it does print). Aside from that, this app works perfectly in Cocoa and gets a few benefits from Cocoa as well. For example, spell and grammar checking just works. I don't have to do anything to get that benefit. You will likely find that your projects, once recompiled for Cocoa, use less CPU time as well.

We are also hard at work on the Cocoa version of the REAL Studio IDE because of course the REAL Studio IDE is written in REAL Studio. It's coming along and we are seeing improvements in it each day.

And while our primary focus is on making sure that your existing projects will work with few if any changes when recompiled for Cocoa, we occasionally find opportunities to introduce some new Cocoa-specific features. For example, the Pushbutton class now has a ButtonStyle property that allows you to choose from nine additional types of pushbuttons:

When using drag and drop, you now get a ghosted image rather than a simple rectangle. View Carbon example movie. View Cocoa example movie.

For those of you that need to access Cocoa APIs for things that are not built-in to our framework, we have also added a new CocoaObject class to make it easier to use Cocoa APIs.

So progress continues. We know how important Cocoa support is for you and want it to be in great shape before we ship it. As always, if you want to follow our progress more closely and check your projects, please join the
beta program.

Your patience is greatly appreciated,

Geoff Perlman
Founder and CEO
REAL Software, Inc.


Anonymous said...

I'd like to see an update to the guide lines offered by the IDE for control separations, etc. While they do nicely for the separation between controls and the borders of windows, they are absent for the separations needed between controls and the edges of group boxes and tab panels. I'd also love to see control sizes and separations (and therefore control placement and window, groupbox and tab panel sizes) stored for each platform so the GUI will automatically look right on each platform when a program is run. At present, this all has to be done manually.

Geoff Perlman said...

Those are good suggestions. Make sure you submit feature requests via our Feedback application. Regarding making control placement and size changes for different platforms, we have a good idea of how to implement that so I'm sure we will eventually.

Forrest Grump said...

Is this new version a combination of Cocoa and LVM or will we see these changes in different releases

Geoff Perlman said...

Cocoa and LLVM are separate features. Cocoa will come before our conversion to LLVM is completed.