Embers 3.0.0
See the version list below for details.
dotnet add package Embers --version 3.0.0
NuGet\Install-Package Embers -Version 3.0.0
<PackageReference Include="Embers" Version="3.0.0" />
paket add Embers --version 3.0.0
#r "nuget: Embers, 3.0.0"
// Install Embers as a Cake Addin #addin nuget:?package=Embers&version=3.0.0 // Install Embers as a Cake Tool #tool nuget:?package=Embers&version=3.0.0
Embers
An embeddable Ruby interpreter written entirely in C#.
Its minimalistic design is intended for use in game engines, game mods, and C# applications.
Features
- Run Ruby code in C# .NET
- Adapter to convert between .NET objects and Ruby instances
- Multithreading and thread safety option
- Simplified standard library
- No external dependencies
Usage
Basic Example
using Embers;
Scope Scope = new();
Scope.Evaluate("puts 'Ruby!'"); // Ruby!
Interop
Embers has an adapter which converts between .NET objects and Ruby instances. If an object is not built-in, its methods, fields and properties will be adapted. Methods such as SetVariable
implicitly use the adapter for you.
class Pizza {
public int Portions = 2;
public string Topping = "Pepperoni";
}
Scope.SetVariable("pizza", typeof(Pizza));
string Topping = Scope.Evaluate("pizza.new.topping").CastString;
Console.WriteLine(Topping); // Pepperoni
Parsing
Expressions can be pre-parsed and interpreted much more quickly.
Expression[] Expressions = Scope.Parse("puts 'pre-parsed!'");
Expressions.Interpret(new Context(Scope.Location, Scope)); // pre-parsed!
Sandboxing
You can see which methods can still be accessed in StandardLibrary.cs
.
Scope Scope = new(new AxisOptions() { Sandbox = true });
Scope.Evaluate("File.write('test.txt', 'text')"); // undefined method 'write' for File:Module
Game engine support
Embers is fully compatible with Godot, Unity, and other C# game engines. However, certain methods such as puts
reference the Console
, which is hidden in Godot and Unity by default, so you will need to make some changes.
For example:
// In StandardLibrary.cs
Console.WriteLine(Message.ToS()); // -> Godot.GD.Print(Message.ToS());
About Noko
Noko is Embers' mascot who you can see at the top.
She comes from a society in the Earth's core, 3000km below the surface. She has fiery powers but finds the surface a bit cold.
Noko is short for "Nokoribi" meaning "Embers" in Japanese.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.