Skip to content

v0.5.0 Alpha 5

Pre-release
Pre-release
Compare
Choose a tag to compare
@LPGhatguy LPGhatguy released this 01 Mar 23:53
· 954 commits to master since this release

This is the 6th (zero-based indexing) alpha for Rojo 0.5.0!

This release features significant ergonomic improvements to the project format!

Upgrading

This release requires Rust 1.32 or newer!

To install the Rojo CLI, either download rojo.exe attached here or run:

cargo install rojo --version 0.5.0-alpha.5 --force

To install the plugin, either install it from Roblox (https://www.roblox.com/library/1997686364/Rojo-0-5-0-alpha-5) or download Rojo.rbxm and put it into your Roblox Studio plugins folder.

Changes Since 0.5.0-alpha.4

  • Upgraded core dependencies, which improves compatibility for lots of instance types
    • Upgraded from rbx_tree 0.2.0 to rbx_dom_weak 1.0.0
    • Upgraded from rbx_xml 0.2.0 to rbx_xml 0.4.0
    • Upgraded from rbx_binary 0.2.0 to rbx_binary 0.4.0
  • Added support for non-primitive types in the Rojo plugin.
    • Types like Color3 and CFrame can now be updated live!
  • Fixed plugin assets flashing in on first load (#121)
  • Changed Rojo's HTTP server from Rouille to Hyper, which reduced the release size by around a megabyte.
  • Added property type inference to projects, which makes specifying services a lot easier (#130)
  • Made error messages from invalid and missing files more user-friendly

Project Property Type Inference

Previously, you would specify a project with properties on services like this:
(diff markers added to draw attention)

{
	"name": "really-red-place",
	"tree": {
		"$className": "DataModel",
		"Lighting": {
			"$className": "Lighting",
			"$properties": {
+				"Ambient": {
+					"Type": "Color3",
+					"Value": [1, 0, 0]
+				},
+				"Technology": {
+					"Type": "Enum",
+					"Value": 1
+				}
			}
		},
		"HttpService": {
			"$className": "HttpService",
			"$properties": {
+				"HttpEnabled": {
+					"Type": "Bool",
+					"Value": true
+				}
			}
		}
	}
}

But starting in 0.5.0-alpha.5, Rojo can infer types where they should be obvious:

{
	"name": "really-red-place",
	"tree": {
		"$className": "DataModel",
		"Lighting": {
			"$className": "Lighting",
			"$properties": {
+				"Ambient": [1, 0, 0],
+				"Technology": "Voxel"
			}
		},
		"HttpService": {
			"$className": "HttpService",
			"$properties": {
+				"HttpEnabled": true
			}
		}
	}
}

This uses a brand new reflection database that now ships with Rojo called rbx_reflection!

Better Error Messages

Error messages that pop up when a file doesn't exist or is malformed should no longer blame Rojo.

Furthermore, if a file changes to stop being valid during a Rojo live sync session, Rojo will skip the upgrade and tell you in your console:

image

Dependency Upgrades

Rojo can now deserialize UDim, UDim2, and Content values. Support for these is present in the XML format (rbxlx, rbxmx) but not in the binary format (rbxm, rbxl) yet.

Non-Primitive Types

The Rojo plugin received an architectural changed that allows it to live-sync new property types like CFrame and Color3. Not all types are supported yet, and documentation for this is still a work in progress.