Skip to content

@gkjpettet gkjpettet released this Mar 10, 2019 · 13 commits to master since this release

This is major new release. The interpreter has been completely rewritten from scratch. Roo is now entirely written in native Xojo code and requires no third party plugins. The language has not only changed significantly syntactically (indentation is now used instead of curly braces for block scoping, like Python) but many, many bugs have been fixed. Performance has been improved and new features have been added.

Full documentation is available at https://roolang.org.

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Windows (64-bit)
Linux (64-bit x86)
Linux (ARM)

Assets 2

@gkjpettet gkjpettet released this Sep 25, 2018 · 36 commits to master since this release

Improvements

  • Greatly improved resilience of the parser. It will now correctly report syntax errors without getting stuck in an infinite loop of doom
  • For classes that define a to_text getter to provide a text representation of the object - this is now honoured throughout the language (e.g: when concatenating with other objects)

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Windows (64-bit)
Linux (64-bit)
Raspberry Pi

Assets 2

@gkjpettet gkjpettet released this Sep 25, 2018 · 38 commits to master since this release

Improvements

  • Semicolons are no longer required! You are free to continue to use them to separate multiple statements on the same line but your code will look prettier without them.
  • Parentheses are now optional around the conditions of if constructs and while loops 🎉. You can obviously use them to make your code easier to read if you wish.
  • Added a new exit keyword to allow breaking out of if constructs early
  • The scanner has been partially rewritten to be faster and more efficient
  • The parser now handles more edge cases and panics less when things go wrong
  • It's now possible to define the text representation used by the standard library print() function for your own classes. Just created a class method called to_text and return the text representation for your object
  • Added the Hash.value(key) method which returns the value of the specified key

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Windows (64-bit)
Linux (64-bit)
Raspberry Pi

Assets 2

@gkjpettet gkjpettet released this Sep 20, 2018 · 47 commits to master since this release

Improvements

  • Request objects now have a default HTTP method of GET
  • Added the Roo.NetworkingEnabled property which (if False) will disable Roo's ability to access the network and raise a Roo.RuntimeError exception. It defaults to True
  • Added the DateTime.long_month getter
  • Added the DateTime.day_name getter
  • Added the DateTime.meridiem getter
  • Added the DateTime.short_month getter
  • Added the DateTime.time getter
  • Added the DateTime.to_http_header getter
  • Added the DateTime.two_digit_hour getter
  • Added the DateTime.two_digit_minute getter
  • Added the DateTime.two_digit_second getter
  • Added the Text.to_date getter
  • It's now possible to store arbitrary data on an interpreter instance with the Roo.Interpreter.Custom dictionary property

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Linux (64-bit)
Windows (64-bit)
Raspberry Pi

Assets 2

@gkjpettet gkjpettet released this Sep 12, 2018 · 54 commits to master since this release

New Features

  • HTTP networking support added! This release introduces two new data types (the Request and Response objects) and the HTTP module enabling Roo to now make HTTP requests
  • Added a new JSON module for parsing JSON strings to Roo data structures and for converting Roo Hash objects to JSON strings

Improvements

  • Added Text.to_date getter
  • Added DateTime.day_name getter
  • Added DateTime.long_month getter
  • Added DateTime.short_month getter

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Windows (64-bit)
Linux (64-bit)
Raspberry Pi

Assets 2

@gkjpettet gkjpettet released this Sep 3, 2018 · 56 commits to master since this release

Bug fixes

  • File.flush now returns Nothing like it should
  • Fixed a crash that could occur in File.append()

Changes

  • Renamed FileUtils.pwd to FileUtils.cwd. Current working directory (cwd) feels more appropriate than pwd (print working directory).

Improvements

  • Added Text.define_utf8 and Text.define_utf8! getters
  • Added FileUtils.cwd_path getter

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Windows (64-bit)
Linux (64-bit)
Raspberry Pi

Assets 2

@gkjpettet gkjpettet released this Aug 31, 2018 · 56 commits to master since this release

Improvements

  • New DateTime data type. As the name suggests, this adds extensive support for working with dates and times.
  • New FileUtils module. This module provides the following getters and methods for manipulating File objects:
    • FileUtils.copy(source, destination, overwrite)
    • FileUtils.delete(item)
    • FileUtils.mkdir(path)
    • FileUtils.move(source, destination, overwrite)
    • FileUtils.pwd
  • Added many more getters and methods to the File data type

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Windows (64-bit)
Raspberry Pi
Linux (64-bit)

Assets 2

@gkjpettet gkjpettet released this Aug 24, 2018 · 59 commits to master since this release

Improvements

Require statement

Added a new require statement. This finally adds the capability for Roo to include the contents of other scripts in a running script:

require "path/to/file"; # .roo extension is optional

The provided path can be relative to the script file or an absolute path.

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Windows (64-bit)
Raspberry Pi
Linux (64-bit)

Assets 2

@gkjpettet gkjpettet released this Jul 25, 2018 · 60 commits to master since this release

Raspberry Pi support!

This release includes built binaries for the Raspberry Pi. You can now write code with Roo on this fantastic little computer. The only dependency is libunwind8. Install that with the following command:

sudo apt-get install libunwind8

Bug fixes

  • Text.swapcase now correctly returns the swapped case value, rather than the original value
  • The RegexResult and MatchInfo objects now correctly report their names when printed
  • If the absolute value of the specified position is greater than the length of the Text object with Text.slice(position) then Nothing is returned (rather than an empty Text object)
  • Whenever Text.slice!() returns Nothing, the original Text object is now left unchanged

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Windows (64-bit)
Raspberry Pi
Linux (64-bit)

Assets 2

@gkjpettet gkjpettet released this Jul 24, 2018 · 67 commits to master since this release

Improvements

  • Fixed a bug with the Regex object match() method. It now correctly accepts either 1 or 2 parameters

Installation

The easiest way is to use Homebrew on the Mac or Scoop on Windows.

Downloads

macOS
Linux (64-bit)
Windows (64-bit)

Assets 2
You can’t perform that action at this time.