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
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.
# 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.
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.