• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

microsoft / RulesEngine / 27370742919
95%
master: 97%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 11 Jun 2026 07:07PM UTC
Jobs 1
Files 24
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

11 Jun 2026 07:04PM UTC coverage: 94.814% (+0.05%) from 94.761%
27370742919

push

github

web-flow
Fix warmup regression: avoid per-expression AppDomain assembly scan (#740)

Since 71d59dc, CustomTypeProvider.GetCustomTypes() includes
base.GetCustomTypes(), which scans every assembly in the AppDomain for
[DynamicLinqType] types. DefaultDynamicLinqCustomTypeProvider only caches
that scan per provider instance, and RuleExpressionParser.Parse built a
new ParsingConfig + CustomTypeProvider for every expression parsed, so
the scan ran for every expression in every rule (KeywordsHelper
enumerates the full type set on each ExpressionParser construction).

For workflows with thousands of rules this regressed warmup ~6.6x
versus 5.0.3 (113.8s vs 17.3s for 20,000 rules with local params and
174 loaded assemblies). The compiled-delegate cache from #727 does not
help here because each rule expression is unique.

Fix:
- Reuse one ParsingConfig/CustomTypeProvider across parses, rebuilding
  only when ReSettings.CustomTypes is swapped (AutoRegisterInputType
  replaces the array on workflow registration).
- Memoize the merged custom-type set in CustomTypeProvider; it is fixed
  after construction but was rebuilt (including the assembly scan) on
  every GetCustomTypes() call.

With this change the same 20,000-rule benchmark warms up in 16.3s,
matching 5.0.3, with identical rule results. Addresses the remaining
root cause behind #707.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

459 of 578 branches covered (79.41%)

16 of 16 new or added lines in 2 files covered. (100.0%)

841 of 887 relevant lines covered (94.81%)

568.85 hits per line

Jobs
ID Job ID Ran Files Coverage
1 27370742919.1 11 Jun 2026 07:07PM UTC 24
94.81
GitHub Action Run
Source Files on build 27370742919
  • Tree
  • List 24
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #27370742919
  • 09762c61 on github
  • Prev Build on main (#26695315535)
  • Next Build on main (#27382386240)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc