Always Halts. No Surprises.
By design, Filtrera is not Turing-complete. It has no recursion or unbounded loops, which means scripts can never run forever. This makes it incredibly safe for rules engines, configurations, and user-defined logic.
from orders where o => o.createdAt > (now - 7 days) select o => o.grandTotal sum
Filtrera was built to solve a difficult problem: how do you let users or developers define custom business logic without risking the stability of your entire system? Most scripting languages are powerful, but can accidentally (or maliciously) enter an infinite loop, consuming all your resources.
Filtrera provides the expressiveness of a functional language with a critical guarantee: every script is guaranteed to finish.
Always Halts. No Surprises.
By design, Filtrera is not Turing-complete. It has no recursion or unbounded loops, which means scripts can never run forever. This makes it incredibly safe for rules engines, configurations, and user-defined logic.
Business Logic that Reads Like English
With a clean, chainable syntax and powerful built-in functions for data manipulation, you can write complex logic that remains clear and maintainable. Perfect for business analysts and developers alike.
Secure by Design
Run untrusted code in a secure sandbox. The host application retains full control over the execution environment, including which functions and data are exposed, preventing unwanted side effects.
Easily Embeddable
Designed from the ground up to be embedded in any .NET application. Extend your platform with a safe, powerful expression language that your team and your customers can use.
Go beyond simple filters. Use generators, folds, and pattern matching to solve complex problems in a clear, declarative way.
// Calculate the total price with a tiered discountparam orderLines = [ { product = 'A', quantity = 2, price = 100 }, { product = 'B', quantity = 5, price = 50 }]param customerTier = 'gold'
// Define a discount rate based on customer tierlet discount = customerTier match 'gold' |> 20% 'silver' |> 10% |> 0%
// Calculate the final totalfrom orderLines select l => l.quantity * l.price * (100% - discount) sum
Ready to dive in? Explore the language in our interactive playground or read the documentation to get started.
Filtrera is made by Kristoffer Lindvall
© Copyright Kristoffer Lindvall 2024 | Acknowledgements