Show Xojo: Roo Version 3

Hi everyone.

I’ve spent the last 3 or 4 months completely re-writing Roo, my object-orientated dynamically typed interpreted replacement for Xojoscript. There have been substantial changes under the hood and to the syntax. The language has now stabilised with a Python-like appearance where tab indentation replaces curly braces. Semicolons are gone. External dependencies and third party plugins are gone. This thing is entirely written in native Xojo.

The language runs on macOS, Windows, Linux x86 and Linux ARM. Desktop and console applications are supported. I haven’t tried it in a Xojo Web app yet but I see no reason why it won’t work. Unfortunately it won’t run on iOS because it uses Xojo’s String, Variant and RegEx classes which are not supported on iOS. The rewrite however has paved the way for a port to iOS if demand is there. The reason I chose not to support it for version 3 is simply because the performance of Xojo’s Text type is poor.

Performance of the interpreter is at least twice as fast as version 2. Integrating Roo into a Xojo app has been vastly simplified and extending its standard library with your own code is now much more straight forwards. The interpreter now fires a number of events to notify you of important occurrences. for instance, you can now intercept network calls and decide whether to permit or refuse them. The interpreter is also now thread safe.

I have fixed so many bugs with the old interpreter that there are frankly too many to list.

Documentation is now extensive and very comprehensive. You can find it here.

In addition to embedding Roo in your own apps, you can run scripts from the command line or use it as a REPL. I’ve packaged the interpreter with both Homebrew for Mac and Scoop for Windows. Installation instructions are here.

Finally, you can play around with the language with the GUI IDE I’ve built. This runs on both macOS and Windows. It features syntax colouring and other goodies.

I really hope people take a look at this and if you find any issues please let me know. I will be speaking about Roo at the upcoming XDC which I highly recommend people consider attending.

Looks awesome.

I am thoroughly impressed with your work.

I’ve just pushed an update to the repos to version 3.0.1.

Bug Fixes

  • Can now set fields on native modules if the module implements the RooNativeSettable interface.
  • Various fixes to Roo’s JSON parsing engine
  • Local variables no longer shadow variables with the same name but a different case in an enclosing scope

New Features

  • Added HTTP.url_decode() and HTTP.url_encode() functions
  • Simplified error handling if you are embedding Roo in an existing Xojo app with the removal of four events from the RooInterpreter class and the addition of a new ErrorOccurred event

Full documentation is available at

Roo core classes and CLI repo.
Roo IDE repo.

Just pushed a small update for Roo (version 3.0.2).

New Features

  • Added the Nothing.to_number getter (which always returns 0)

Roo core classes and CLI repo .
Roo IDE repo .

Just a small update to say that I have changed the home page for Roo. You can now find it on my personal website: As always, the source code is available from its GitHub repo.