PackageTrack
Sign in Get early access

github.com/expr-lang/expr

v1.17.8 #499 most downloaded on Go modules expr-lang/expr

What this package is like to depend on

Last release 1 months ago

07 Jul 2026

Ships fairly regularly

a new release about every 1 weeks

Some releases are documented

notes for 10 of 40 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

272 releases · first in 2018

75 releases in the last 12 months

see the full history below

Release timeline

272 releases · Jul 2018 to Jul 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 272
  1. v1.17.9-0.20260707065720-4b31df3a2e0e 07 Jul 2026 pre-release

    Nothing published for this version

  2. v1.17.9-0.20260604165153-2010a1126f13 04 Jun 2026 pre-release

    Nothing published for this version

  3. v1.17.9-0.20260526121354-630bbf0d7b12 26 May 2026 pre-release

    Nothing published for this version

  4. v1.17.9-0.20260412144015-3a46b1970b37 12 Apr 2026 pre-release

    Nothing published for this version

  5. v1.17.9-0.20260313095659-b90e77c64fb9 13 Mar 2026 pre-release

    Nothing published for this version

  6. v1.17.9-0.20260228100243-851b241a301f 28 Feb 2026 pre-release

    Nothing published for this version

  7. v1.17.9-0.20260223100544-27acc2dd45bb 23 Feb 2026 pre-release

    Nothing published for this version

  8. v1.17.9-0.20260218125051-3abfc80cdbc5 18 Feb 2026 pre-release

    Nothing published for this version

  9. v1.17.8 14 Feb 2026
    Release notes

    Expr is an expression language designed to deliver dynamic configurations with unparalleled accuracy,
    safety, and speed.

    program, err := expr.Compile(`let foo = bar(); baz(foo, foo)`)

    In this release:

    • New feature: added bytes literal syntax (#894)
    • Improved performance: count comparisons to any (#897)
    • Improved performance: added sum range optimization (#896)
    • Improved performance: added count threshold comparisons (#898)
    • Improved performance: optimize loop iteration with scope pool (#908)
    • Improved performance: added fast paths for min, max, mean, and median (#909)
    • Fixed: ctx into nested custom funcs and Env (#883)
    • Fixed: disable check for missing predicate during parseing (#924)
    • Fixed: detect $env() calls at compile time (#923)
    • Fixed: bounds check to get() (#918)
    • Fixed: validate sortBy order argument type (#912)
    • Fixed: reduce empty array without init val (#911)
    • Fixed: validate arg count before OpCall (#904)
    • Fixed: correct variadic method arg type (#889)
    Open source →
  10. v1.17.8-0.20260212145126-f0176e7ad3ad 12 Feb 2026 pre-release

    Nothing published for this version

  11. v1.17.8-0.20260205062502-2aaa9aa0612a 05 Feb 2026 pre-release

    Nothing published for this version

  12. v1.17.8-0.20260201211147-0785f19850dd 01 Feb 2026 pre-release

    Nothing published for this version

  13. v1.17.8-0.20260128130121-d3805b027f16 28 Jan 2026 pre-release

    Nothing published for this version

  14. v1.17.8-0.20260127060229-9c830634f98b 27 Jan 2026 pre-release

    Nothing published for this version

  15. v1.17.8-0.20260124102547-553025ac7d0b 24 Jan 2026 pre-release

    Nothing published for this version

  16. v1.17.8-0.20260123215441-77df21185c12 23 Jan 2026 pre-release

    Nothing published for this version

  17. v1.17.8-0.20260123122543-a9ac10fa699b 23 Jan 2026 pre-release

    Nothing published for this version

  18. v1.17.8-0.20260122234442-556b1d14d40e 22 Jan 2026 pre-release

    Nothing published for this version

  19. v1.17.8-0.20260119101304-1fa02826f361 19 Jan 2026 pre-release

    Nothing published for this version

  20. v1.17.8-0.20260115095527-5ef01205d977 15 Jan 2026 pre-release

    Nothing published for this version

  21. v1.17.8-0.20260112204935-4ff281dde735 12 Jan 2026 pre-release

    Nothing published for this version

  22. v1.17.8-0.20260111212016-ebbe1bac9de7 11 Jan 2026 pre-release

    Nothing published for this version

  23. v1.17.8-0.20260108144341-02f92c2a78e4 08 Jan 2026 pre-release

    Nothing published for this version

  24. v1.17.8-0.20260105223955-0fcde75fea53 05 Jan 2026 pre-release

    Nothing published for this version

  25. v1.17.8-0.20251227142217-3111bbe8c72d 27 Dec 2025 pre-release

    Nothing published for this version

  26. v1.17.8-0.20251225163038-c020e9595927 25 Dec 2025 pre-release

    Nothing published for this version

  27. v1.17.7 14 Dec 2025
    Release notes

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

    program, err := expr.Compile(`let foo = bar(); baz(foo, foo)`)

    This release brings new language features, performance improvements across runtime and compiler, better error
    handling, and many important bug fixes.

    New Features

    Support for else if expressions

    • You can now chain conditional branches using else if! (#879)

    Unicode escapes in the \u{XXXXXX} format

    • String literals now support Unicode code point escapes such as \u{1F600}. (#882)

    Byte slice support in the matches operator

    The matches operator now works with []byte, improving interoperability with binary data. (#876)

    Short-circuit control options

    New options allow enabling or disabling short-circuiting behavior in the compiler and VM. (#847)

    Option to disable if operator

    A separate DisableIfOperator option is now available. (#881)

    Performance Improvements

    Runtime structure fetch improvements

    Accessing struct fields at runtime is now faster. (#833)

    VM function call optimizations

    Function calls inside the VM execute more efficiently. (#832)

    Type system performance boost

    Large or complex type operations now run significantly faster. (#824)

    Bug Fixes

    • Guard negative forward jump offsets (#861).
    • Prevent stack underflow in the VM (#860).
    • Correct behavior of AsBool with nil and undefined variables (#866).
    • Proper handling of nil arguments in variadic functions (#868).
    • Show function name for safe calls in disassembly (#869).
    • Limit recursion depth in built-in functions (#870).
    • Throw an error when a predicate is missing in the parser (#842).
    • Fixed array type resolution in conditional operator (#865).
    • Disallow access to unexported struct fields (#846).
    • Fixed retrieving field pointers in structs (#843).
    • Better error position reporting in multi-line scripts (#827).
    • Support quoting backticks inside string literals (#820).
    • Fixed auto-dereference for maps/slices and conditionals (#871).
    • Wrap merged optimizer results as predicates (#864).
    • Improved missing property handling (#854).
    • Handle invalid if conditions and detect null-byte crashes.
    • Added regression tests for several reported issues.
    Open source →
  28. v1.17.7-0.20251214230820-d4722867d2df 14 Dec 2025 pre-release

    Nothing published for this version

  29. v1.17.7-0.20251214200220-087698e2554c 14 Dec 2025 pre-release

    Nothing published for this version

  30. v1.17.7-0.20251214113201-cf53913bd4fb 14 Dec 2025 pre-release

    Nothing published for this version

  31. v1.17.7-0.20251210132847-775fc3aca520 10 Dec 2025 pre-release

    Nothing published for this version

  32. v1.17.7-0.20251204160008-593f93febed2 04 Dec 2025 pre-release

    Nothing published for this version

  33. v1.17.7-0.20251204143947-3dbda4bd9c25 04 Dec 2025 pre-release

    Nothing published for this version

  34. v1.17.7-0.20251128124506-ad495449fa56 28 Nov 2025 pre-release

    Nothing published for this version

  35. v1.17.7-0.20250929091045-5ac4a1a79919 29 Sep 2025 pre-release

    Nothing published for this version

  36. v1.17.7-0.20250921185824-3d0aec62ca6c 21 Sep 2025 pre-release

    Nothing published for this version

  37. v1.17.7-0.20250918194544-69b27afae298 18 Sep 2025 pre-release

    Nothing published for this version

  38. v1.17.7-0.20250908084052-1c09e5e9ec3d 08 Sep 2025 pre-release

    Nothing published for this version

  39. v1.17.7-0.20250828090651-bbcbc530f316 28 Aug 2025 pre-release

    Nothing published for this version

  40. v1.17.6 24 Jul 2025
    Release notes

    What's Changed

    • Improve parser and lexer by @diegommm in #811
    • Ignoring fields with struct tag expr:"-" and make "in" return false for unexported fields by @diegommm in #806
    • Fix runtime error not allowing to slice unaddressable array type by @diegommm in #803
    • Fix *vm.VM memory leak by @diegommm in #813
    Open source →
  41. v1.17.6-0.20250724062913-87df78319489 24 Jul 2025 pre-release

    Nothing published for this version

  42. v1.17.6-0.20250705114648-11286428d375 05 Jul 2025 pre-release

    Nothing published for this version

  43. v1.17.6-0.20250630182125-f1c65fa312db 30 Jun 2025 pre-release

    Nothing published for this version

  44. v1.17.5 03 Jun 2025
    Release notes
    • Added expr.MaxNodes() option by #799
    Open source →
  45. v1.17.5-0.20250527103933-5fbfe7211cd6 27 May 2025 pre-release

    Nothing published for this version

  46. v1.17.4 27 May 2025
    Release notes
    • Added check for non struct types to fetchField #794
    • Docs: do not repeat patcher definition in ExamplePatch() #792
    Open source →
  47. v1.17.4-0.20250526080353-f974b88d463e 26 May 2025 pre-release

    Nothing published for this version

  48. v1.17.3 12 May 2025
    Release notes
    • Fixed get built-in to work with nil #786
    Open source →
  49. v1.17.3-0.20250512163248-28d9b3d4575b 12 May 2025 pre-release

    Nothing published for this version

  50. v1.17.3-0.20250328145033-785630f78300 28 Mar 2025 pre-release

    Nothing published for this version

  51. v1.17.2 24 Mar 2025
    Release notes
    • Improved performance of expr.Eval #775
    Open source →
  52. v1.17.2-0.20250321170909-646c17c96211 21 Mar 2025 pre-release

    Nothing published for this version

  53. v1.17.2-0.20250319142959-ac5b2c7313f4 19 Mar 2025 pre-release

    Nothing published for this version

  54. v1.17.2-0.20250318225751-253a4a111873 18 Mar 2025 pre-release

    Nothing published for this version

  55. v1.17.1 18 Mar 2025
    Release notes
    • Fixed parsing of variable declaration nodes combined with sequence node in #773
    Open source →
  56. v1.17.1-0.20250317132804-0f99b1917621 17 Mar 2025 pre-release

    Nothing published for this version

  57. v1.17.1-0.20250317091042-8419ba4a916c 17 Mar 2025 pre-release

    Nothing published for this version

  58. v1.17.1-0.20250316093506-1598c621e181 16 Mar 2025 pre-release

    Nothing published for this version

  59. v1.17.0 15 Mar 2025
    Release notes

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

    program, err := expr.Compile(`let foo = bar(); baz(foo, foo)`)

    In this release:

    This release added the biggest change to the Expr language: if-else expressions and sequential expressions. #736 e750878

    if foo > 42 {
        assert(foo);
        calc(foo, foo / 2)
    } else {
        calc(0, 0)
    }

    A sequence of expression may be separated by ; char. The last semicolon must be omitted. Expr returns the value of the
    last expression in the sequence.

    If-else is also expressions. Each if must have an else part. Result of if-else can be used as an expression:

    let foo = if bar > 0 {
        process(bar)
    } else {
        fallback()
    };
    foo + 42

    Added:

    • Added ast.Find helper for easy AST searching. 579de74
    • Added compile node budget and memory limits (#762)
    • Added uniq() builtin (#705)
    • Added flatten() builtin (#684)
    • Added types pkg (#665 #667 #668)

    Improvements:

    Fixes:

    • Make sure get() returns nil for map[string]string on missing keys 435b79d
    • Fixed func calls with nil types value d63c3b5
    • Fixed AST printing of ops with precedence (#678)
    • Do not optimize filter() | map() if #index is used 35bdb68
    • Separated patching phases for patchers that require multiple passes. (#659)
    Open source →
  60. v1.16.10-0.20260707065720-4b31df3a2e0e 07 Jul 2026 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive