Meet Jyro.

A high-performance, fully isolated language for embedded scripting.

# Calculate totals for each order
foreach order in Data.orders do
  order.total = 0
  
  foreach item in order.items do
    item.lineTotal = Round(item.price * item.quantity, 2)
    order.total = order.total + item.lineTotal
  end
  
  order.total = Round(order.total, 2)
end

# Calculate grand total
Data.grandTotal = 0

foreach order in Data.orders do
  Data.grandTotal = Data.grandTotal + order.total
end

Data.grandTotal = Round(Data.grandTotal, 2)

Familiar Syntax, Powerful Results

Try It Out!

Jyro uses JSON-compatible syntax enhanced with procedural programming constructs. Write transformation logic using familiar object and array literals, while leveraging control flow statements like if-then-else, switch-case, and loops.

No complex syntax to learn - if you work with JSON, you already understand Jyro's data model. Scripts operate directly on the provided data context, eliminating object creation complexity and memory management concerns.

Secure by Design

Built for multi-tenant environments where untrusted code execution is required. Jyro scripts cannot access file systems, network resources, or system APIs. The controlled execution model operates through explicit host function allow-listing and data context isolation, preventing privilege escalation while maintaining full transformation capabilities. Run user-generated scripts safely without compromising system security.

var result = await new JyroBuilder()
    .WithScript(scriptText)
    .WithData(inputData)
    .WithOptions(new JyroExecutionOptions 
    { 
        MaxExecutionTime = TimeSpan.FromSeconds(10) 
    })
    .WithStandardLibrary()
    .ExecuteAsync();

A Batteries-Included .NET Runtime

Embed Jyro into applications through a clean, stage-gated architecture. The runtime processes scripts through distinct lexical analysis, parsing, validation, and execution phases, providing comprehensive diagnostic information at each stage.

Host applications control available functions and data scope precisely, while the structured messaging system enables rich development tooling integration and localization support.

The open-language design encourages implementations in other languages and frameworks.

NuGet Gallery
# Input:
# {
#   "users": [
#     {"name": "Alice", "orders": 150},
#     {"name": "Bob", "orders": 75}
#   ]
# }
foreach user in Data.users do
  if user.orders >= 150 then
    user.shipping = "Free Shipping!"
    user.discount = 0.15
  else
    user.shipping = "Standard Shipping"
    user.discount = 0.05
  end
end
# Output:
# {
#   "users": [
#     {
#       "name": "Alice", "orders": 150,
#       "shipping": "Free Shipping!", "discount": 0.15
#     },
#     {
#       "name": "Bob", "orders": 75,
#       "shipping": "Standard Shipping", "discount": 0.05
#     }
#   ]
# }

Optimized for Data Transformation

Transform JSON data structures efficiently through in-place modification patterns. Scripts can selectively update specific properties or rebuild entire data hierarchies based on requirements. The single mutable data context serves as both input and workspace, enabling performance optimization strategies while maintaining predictable resource usage. Ideal for ETL pipelines, configuration processing, and dynamic data restructuring workflows.

The in-place transformation model eliminates the overhead of object creation and garbage collection typically associated with functional programming approaches. Whether processing large datasets with minimal memory footprint or applying complex conditional transformations across nested object hierarchies, Jyro's architecture scales efficiently from simple property updates to comprehensive data restructuring operations.

Language Syntax

Start Building with Jyro

Ready to add secure, efficient data transformation to your applications? Jyro is available as NuGet packages for .NET integration and as a command-line utility for standalone script execution. The complete toolkit is open source under the MIT license, suitable for both commercial and open source projects. Download the packages to begin embedding Jyro in your applications, or install the CLI tool to start experimenting with transformation scripts immediately.

Try It Out!
Language Reference
Get the .NET Runtime