23 October 2012

Mac OS X and Simultaneous Multi Platform Runtime Compiling

With the help of the lightweight cross platform GL windowing library GLFW and the Simple File Watcher, we've added Mac OS X support to Runtime Compiled C++. As an added benefit, you can now run multiple platforms from a shared directory, using one of them to code on the fly. Turn around times on Mac OS X with XCode 4 and Clang++ are excellent, better than windows on a similar system.


RCC++ on OS X and Windows 7 simultaneously
Mac OS X 10.8 with XCode 4 running the SimpleTest example natively top right along with a Windows 7 Parallels Desktop Coherence mode version of the example running bottom right. The apps in each OS have just compiled changes made from XCode. Turn-around times are significantly faster when not running the VM.

For the moment you'll need OS X 10.8 and XCode 4 to run the code on the Mac (we've not tested with OS X 10.7 but it might work). If you change the debugger to GDB the exception handling mechanism doesn't work as smoothly as with the default LLDB debugger, since GDB doesn't pass the exception signal on to the app.

We'll have more information on the port, the changes and our plans for the future soon.

Please do give us your feedback on the OS X version, as we've had limited ability to test this on other systems as yet.

10 comments:

  1. Wow really nice blog. I'm impressed. I've just started to write C++ Tutorials so if you are interested please check my blog. Thanks in advance. http://megacplusplustutorials.blogspot.com

    ReplyDelete
  2. This is really neat.

    Thanks for making the OS X version, I found it useful.

    I've only had a few minutes to play with it so far, but I have one small comment. You have a "SimpleDemo" that's actually not that simple. Why not have a really simple barebones demo, something that is less than 100 lines of code? That'd make porting an existing project to run within this environment much easier.

    ReplyDelete
    Replies
    1. Thanks!

      There is a simpler command line/console demo called ConsoleExample which should fit your needs. I may make a simple graphics example at some point.

      The name is a little misleading as it started out simpler historically - we intend to change it at some point to Pulse once we have time along with a few other organisational changes.

      Delete
  3. If it works on OSX does that mean it can also work on linux?

    ReplyDelete
    Replies
    1. It won't work without some changes, which I've explained a bit in a post here: https://groups.google.com/forum/?fromgroups=#!topic/runtimecompiledcplusplus/l29Os4BPEes

      I intend to port it to linux at some point, but that's a few months off at least.

      Delete
    2. Note that Linux is now supported.

      Delete
  4. very cool.

    Another quick question. Is it possible to 'ship' an application that utilizes this library in a fully compiled state where it is runnable with a base set of binaries, such that the modification and compiling of changes(and the toolsets required to support that), are optional on the users machine?

    In other words, suppose you had an app that supported user 'scripting' using this library, but it was optional for users. Can you release the app with binaries already built and it would use without necessitating the user have compiling tools installed/configured?

    ReplyDelete
  5. You can indeed use this library and ship to customers without needing them to have any compiling tools installed. I'd recommend not running the update function of the FileChangeNotifier - in the future I'll be adding a define which removes all runtime compiler functionality for full release builds to permit some extra optimizations and remove some start up checks.

    ReplyDelete
  6. hi...Im student from Informatics engineering nice article,
    thanks for sharing :)

    ReplyDelete