open-feature / open-feature/flagd

[FEATURE] Unified flagd-evaluator PoC (Java/Python/...) – reduced maintenance, PoC, and reference

Open
#1,842 4 comments 3 reactions 0 assignees View on GitHub

@aepfli is already working on this.

Since Jan 20, 2026.

  • #1848 by @aepfli — open
enhancement
Dominant language
Go
Stars
997
Forks
136
Avg merge
4d 8h
Merged PRs (30d)
11

Description

Requirements

This issue summarizes the initial efforts around the new Rust-based "flagd-evaluator" PoC and the integration of this unified implementation with Java and Python SDKs.

References:

Highlights:

  • The flagd-evaluator is now a WASM-compiled Rust implementation, designed for reuse across SDKs and languages via WASM adapters.
  • Recognized reduction in maintenance burden by having a single unified logic core, replacing divergent and duplicated implementations in each language SDK.
  • The logic for the evaluator was mainly copied and adapted from the existing Rust flagd provider, acknowledging original authorship and design origins.

Disclaimer:
These efforts are strictly a Proof of Concept (PoC) and side project explorations, intended to validate the unified evaluator approach.
All implementations referenced are experimental, incomplete, and require further evaluation, polish, and design discussion.
Please do not consider any of the PoC integrations production-ready! These are provided to open up community feedback and provoke discussion on future direction.
More rigorous review and additional time should be invested into making these approaches robust.

Next Steps / Callouts:

  • Seeking feedback from maintainers and users on this approach.
  • Questions around performance, API flexibility, and safety/validation still need thorough investigation.
  • Not intended for production without further maturation.

Summary: This unified approach should lead to easier updates, reduced maintenance, and more consistent behavior across SDKs. Community input is welcome at this early stage.

Performance

Benchmark Comparison: WASM vs Native JsonLogic in Java

Comprehensive JMH benchmarks comparing the new WASM evaluator against the existing native Java JsonLogic resolver:

Scenario Old (JsonLogic) New (WASM) Notes
Simple Flag (no targeting) 0.019 µs 3.88 µs WASM call overhead
Empty Context 0.019 µs 3.94 µs Same as simple flag
Targeting No Match (small ctx) 3.66 µs 14.2 µs ~4x slower
Targeting Match (1000+ ctx entries) 345 µs 1592 µs ~5x slower

Key Findings:

  • WASM has ~3-4µs baseline overhead per call (unavoidable)
  • For complex targeting with large contexts, context serialization dominates
  • Short-circuit optimization helps significantly for flags without targeting
  • Pre-allocated buffers eliminate per-evaluation allocation overhead

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the flagd-evaluator v0.1.1 release and the referenced Python, Java, and Rust SDK PoCs, then compare the JMH benchmark table with the existing Java resolver. Done is not defined here: maintainers still need to decide whether the experimental WASM approach meets performance, API flexibility, and safety requirements.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, python, rust, wasm
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.