expr-lang/expr

Expression language and expression evaluation for Go

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 26 minutes ago
Added to GitGenius on September 8th, 2026
Created on July 14th, 2018
Open Issues & Pull Requests: 91 (+0)
GitHub issues: Enabled
Number of forks: 528
Total Stargazers: 8,006 (-1)
Total Subscribers: 66 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 7.6 hours
Mean response time: 23.9 days
90th percentile: 78.1 days
Tracked items: 118

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 92% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 10% of issues opened in the past year have been closed. Three people close 95% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 39
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 476 days
Stale 30+ days: 35
Stale 90+ days: 33

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (29)
  • feature (26)
  • docs needed (10)
  • research (8)
  • checker (2)
  • wontfix (2)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Expr is a Go-centric expression language designed to deliver dynamic configurations with unparalleled accuracy, safety, and speed.

Expr solves the problem of safely evaluating user-supplied or dynamic expressions within Go applications without exposing the host system to memory vulnerabilities or unintended side effects. It achieves this through a memory-safe design that prevents access to unrelated memory, ensures expressions produce outputs only from their inputs with no state mutations, and guarantees termination to prevent infinite loops. The tool compiles expressions to bytecode and executes them on a virtual machine, combining an optimizing compiler with runtime safety guarantees.

Expr suits projects that need to accept dynamic configuration expressions from users or external sources while maintaining strict safety boundaries. It integrates directly with Go's type system, eliminating the need to redefine types when embedding the evaluator. The tool provides static type checking to catch errors at compile time, user-friendly error messages for debugging, and a straightforward syntax alongside built-in functions like filter, map, all, any, none, and one. Projects requiring high performance expression evaluation will benefit from its bytecode compilation approach.

Development activity shows consistent engagement with the project. The codebase receives regular updates and maintenance. The project maintains active documentation and provides multiple examples and playground environments for users to experiment with the language. Community contributions are integrated into the project, and the maintainers respond to issues and feature requests.