Skip to content

feat(playground): add ceval serve - #186

Merged
moshloop merged 2 commits into
mainfrom
feat/wasm-playground-serve
Nov 13, 2026
Merged

moshloop merged 2 commits into
mainfrom
feat/wasm-playground-serve

Conversation

@moshloop

Copy link
Copy Markdown
Member

What

  • Adds ceval serve to serve the playground UI and API from one binary
  • Adds ceval version
  • Embeds the UI and a Go WASM build of the evaluator so users can choose Server or Browser (WASM) evaluation
  • Release workflow tags from main, builds cross-platform ceval archives with SHA-256 checksums, and attaches the built dist only to the release tag

Notes

  • Lint, test and web workflows now build the UI before compiling Go packages that embed it
  • Generated assets stay off main

… and WASM evaluator

Adds a `ceval serve` subcommand and a `ceval version` command so one binary serves the playground UI and API. The UI and a Go WASM build of the evaluator are embedded, letting users choose Server or Browser (WASM) evaluation. The release workflow now tags from main, builds cross-platform ceval archives with SHA-256 checksums, and adds the built dist only to the release tag, keeping main free of generated assets. Lint, test and web workflows build the UI before compiling Go packages that embed it.

Claude-Session-Id: 01a1d3d9-b27c-7d21-9002-13934b5db58a
@coderabbitai

coderabbitai Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Explain Change →

Caution

Review failed

The pull request is closed.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@github-actions

github-actions Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Benchstat

Base: a1fe080aeedc4122b8c95146c240e7ad3bcca416
Head: f37d314e57607912188d6dac294b70478a776a85

1 improvement(s)
Benchmark Metric Base Head Change p-value
RunTemplate_LargeEnv/items=10-4 sec/op 3.01 us/op 2.88 us/op -4.24% 0.029
Full benchstat output
goos: linux
goarch: amd64
cpu: AMD EPYC 9V45 96-Core Processor                
                                                                         │ bench-base.txt │           bench-head.txt            │
                                                                         │     sec/op     │    sec/op     vs base               │
CELEnvExtendCustomFunction-4                                                  46.82µ ± 2%   46.92µ ±  5%       ~ (p=0.684 n=10)
CELProgramEvaluation/expression=scalar/optimized=false-4                      104.9n ± 2%   105.9n ±  1%       ~ (p=0.196 n=10)
CELProgramEvaluation/expression=scalar/optimized=true-4                       105.7n ± 4%   104.8n ±  3%       ~ (p=0.436 n=10)
CELProgramEvaluation/expression=list_optional_regex/optimized=false-4         2.693µ ± 7%   2.724µ ±  2%       ~ (p=0.315 n=10)
CELProgramEvaluation/expression=list_optional_regex/optimized=true-4          960.2n ± 5%   987.2n ±  3%       ~ (p=0.101 n=10)
CELProgramEvaluation/expression=comprehension/optimized=false-4               3.584µ ± 3%   3.549µ ±  2%       ~ (p=0.436 n=10)
CELProgramEvaluation/expression=comprehension/optimized=true-4                3.424µ ± 4%   3.417µ ±  4%       ~ (p=0.971 n=10)
RunExpressionNativeInput/input=map-4                                          1.768µ ± 2%   1.748µ ±  3%       ~ (p=0.314 n=10)
RunExpressionNativeInput/input=native_struct-4                                1.740µ ± 3%   1.794µ ±  4%       ~ (p=0.093 n=10)
RunExpressionContext/cache=hit/environment=small-4                            1.021µ ± 5%   1.009µ ±  6%       ~ (p=0.447 n=10)
RunExpressionContext/cache=hit/environment=large-4                            1.109µ ± 2%   1.122µ ±  3%       ~ (p=0.363 n=10)
RunExpressionContextCompile/cache=miss/environment=small-4                    183.0µ ± 5%   179.9µ ±  6%       ~ (p=0.529 n=10)
RunExpressionContextCompile/cache=miss/environment=large-4                    181.9µ ± 2%   179.6µ ±  6%       ~ (p=0.684 n=10)
CELEnvExtend/variables=1/functions=0-4                                        3.641µ ± 3%   3.630µ ±  3%       ~ (p=0.912 n=10)
CELEnvExtend/variables=10/functions=0-4                                       4.559µ ± 3%   4.590µ ±  4%       ~ (p=0.616 n=10)
CELEnvExtend/variables=100/functions=0-4                                      13.21µ ± 3%   13.23µ ±  8%       ~ (p=0.796 n=10)
RunExpressionContextFunctions/celFunctions/cache=hit/environment=large-4      2.420µ ± 4%   2.390µ ±  5%       ~ (p=0.781 n=10)
RunExpressionContextFunctions/functions/cache=hit/environment=large-4         2.420µ ± 3%   2.375µ ±  5%       ~ (p=0.190 n=10)
Serialize/items=10/native_values=true-4                                       23.35µ ± 3%   22.78µ ±  2%       ~ (p=0.123 n=10)
Serialize/items=100/native_values=true-4                                      192.4µ ± 4%   191.9µ ±  3%       ~ (p=0.579 n=10)
Serialize/items=1000/native_values=true-4                                     2.014m ± 3%   1.991m ±  5%       ~ (p=0.631 n=10)
Serialize/items=10000/native_values=true-4                                    22.91m ± 4%   23.11m ±  5%       ~ (p=0.280 n=10)
Serialize_NoNativeTypes/items=100/native_values=false-4                       79.38µ ± 3%   78.78µ ±  3%       ~ (p=0.218 n=10)
Serialize_NoNativeTypes/items=1000/native_values=false-4                      770.0µ ± 3%   777.7µ ±  4%       ~ (p=0.739 n=10)
Serialize_NoNativeTypes/items=10000/native_values=false-4                     8.882m ± 2%   8.815m ±  3%       ~ (p=0.393 n=10)
RunTemplate_LargeEnv/items=10-4                                               3.009µ ± 4%   2.881µ ±  3%  -4.24% (p=0.029 n=10)
RunTemplate_LargeEnv/items=1000-4                                             2.894µ ± 5%   2.861µ ± 10%       ~ (p=0.271 n=10)
RunTemplate_LargeEnv/items=10000-4                                            2.949µ ± 4%   2.882µ ±  3%       ~ (p=0.075 n=10)
geomean                                                                       12.64µ        12.59µ        -0.43%

                                                                         │ bench-base.txt │            bench-head.txt             │
                                                                         │      B/op      │     B/op      vs base                 │
CELEnvExtendCustomFunction-4                                                 46.31Ki ± 0%   46.31Ki ± 0%       ~ (p=1.000 n=10)
CELProgramEvaluation/expression=scalar/optimized=false-4                       96.00 ± 0%     96.00 ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=scalar/optimized=true-4                        96.00 ± 0%     96.00 ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=list_optional_regex/optimized=false-4        4.241Ki ± 0%   4.240Ki ± 0%       ~ (p=0.448 n=10)
CELProgramEvaluation/expression=list_optional_regex/optimized=true-4         1.148Ki ± 0%   1.148Ki ± 0%       ~ (p=1.000 n=10)
CELProgramEvaluation/expression=comprehension/optimized=false-4              3.063Ki ± 0%   3.063Ki ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=comprehension/optimized=true-4               2.798Ki ± 0%   2.798Ki ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionNativeInput/input=map-4                                         1.375Ki ± 0%   1.375Ki ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionNativeInput/input=native_struct-4                               1.250Ki ± 0%   1.250Ki ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContext/cache=hit/environment=small-4                             840.0 ± 0%     840.0 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContext/cache=hit/environment=large-4                             936.0 ± 0%     936.0 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContextCompile/cache=miss/environment=small-4                   219.2Ki ± 0%   219.1Ki ± 0%       ~ (p=0.089 n=10)
RunExpressionContextCompile/cache=miss/environment=large-4                   219.5Ki ± 0%   219.4Ki ± 0%       ~ (p=0.105 n=10)
CELEnvExtend/variables=1/functions=0-4                                       4.477Ki ± 0%   4.477Ki ± 0%       ~ (p=1.000 n=10) ¹
CELEnvExtend/variables=10/functions=0-4                                      6.157Ki ± 0%   6.156Ki ± 0%       ~ (p=1.000 n=10)
CELEnvExtend/variables=100/functions=0-4                                     23.63Ki ± 0%   23.63Ki ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContextFunctions/celFunctions/cache=hit/environment=large-4     2.297Ki ± 0%   2.297Ki ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContextFunctions/functions/cache=hit/environment=large-4        2.359Ki ± 0%   2.359Ki ± 0%       ~ (p=1.000 n=10) ¹
Serialize/items=10/native_values=true-4                                      34.39Ki ± 0%   34.39Ki ± 0%       ~ (p=1.000 n=10) ¹
Serialize/items=100/native_values=true-4                                     304.6Ki ± 0%   304.6Ki ± 0%       ~ (p=1.000 n=10) ¹
Serialize/items=1000/native_values=true-4                                    2.946Mi ± 0%   2.946Mi ± 0%       ~ (p=1.000 n=10)
Serialize/items=10000/native_values=true-4                                   29.45Mi ± 0%   29.45Mi ± 0%       ~ (p=0.185 n=10)
Serialize_NoNativeTypes/items=100/native_values=false-4                      104.0Ki ± 0%   104.0Ki ± 0%       ~ (p=1.000 n=10) ¹
Serialize_NoNativeTypes/items=1000/native_values=false-4                     1.007Mi ± 0%   1.007Mi ± 0%       ~ (p=1.000 n=10)
Serialize_NoNativeTypes/items=10000/native_values=false-4                    10.07Mi ± 0%   10.07Mi ± 0%       ~ (p=0.363 n=10)
RunTemplate_LargeEnv/items=10-4                                              5.273Ki ± 0%   5.273Ki ± 0%       ~ (p=1.000 n=10) ¹
RunTemplate_LargeEnv/items=1000-4                                            5.273Ki ± 0%   5.273Ki ± 0%       ~ (p=1.000 n=10) ¹
RunTemplate_LargeEnv/items=10000-4                                           5.273Ki ± 0%   5.273Ki ± 0%       ~ (p=1.000 n=10) ¹
geomean                                                                      14.79Ki        14.79Ki       -0.00%
¹ all samples are equal

                                                                         │ bench-base.txt │            bench-head.txt            │
                                                                         │   allocs/op    │  allocs/op   vs base                 │
CELEnvExtendCustomFunction-4                                                   112.0 ± 0%    112.0 ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=scalar/optimized=false-4                       3.000 ± 0%    3.000 ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=scalar/optimized=true-4                        3.000 ± 0%    3.000 ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=list_optional_regex/optimized=false-4          79.00 ± 0%    79.00 ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=list_optional_regex/optimized=true-4           30.00 ± 0%    30.00 ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=comprehension/optimized=false-4                91.00 ± 0%    91.00 ± 0%       ~ (p=1.000 n=10) ¹
CELProgramEvaluation/expression=comprehension/optimized=true-4                 87.00 ± 0%    87.00 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionNativeInput/input=map-4                                           36.00 ± 0%    36.00 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionNativeInput/input=native_struct-4                                 29.00 ± 0%    29.00 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContext/cache=hit/environment=small-4                             20.00 ± 0%    20.00 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContext/cache=hit/environment=large-4                             23.00 ± 0%    23.00 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContextCompile/cache=miss/environment=small-4                    2.363k ± 0%   2.363k ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContextCompile/cache=miss/environment=large-4                    2.368k ± 0%   2.368k ± 0%       ~ (p=1.000 n=10) ¹
CELEnvExtend/variables=1/functions=0-4                                         72.00 ± 0%    72.00 ± 0%       ~ (p=1.000 n=10) ¹
CELEnvExtend/variables=10/functions=0-4                                        91.00 ± 0%    91.00 ± 0%       ~ (p=1.000 n=10) ¹
CELEnvExtend/variables=100/functions=0-4                                       193.0 ± 0%    193.0 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContextFunctions/celFunctions/cache=hit/environment=large-4       44.00 ± 0%    44.00 ± 0%       ~ (p=1.000 n=10) ¹
RunExpressionContextFunctions/functions/cache=hit/environment=large-4          48.00 ± 0%    48.00 ± 0%       ~ (p=1.000 n=10) ¹
Serialize/items=10/native_values=true-4                                        424.0 ± 0%    424.0 ± 0%       ~ (p=1.000 n=10) ¹
Serialize/items=100/native_values=true-4                                      3.844k ± 0%   3.844k ± 0%       ~ (p=1.000 n=10) ¹
Serialize/items=1000/native_values=true-4                                     39.53k ± 0%   39.53k ± 0%       ~ (p=1.000 n=10) ¹
Serialize/items=10000/native_values=true-4                                    399.5k ± 0%   399.5k ± 0%       ~ (p=1.000 n=10) ¹
Serialize_NoNativeTypes/items=100/native_values=false-4                       1.721k ± 0%   1.721k ± 0%       ~ (p=1.000 n=10) ¹
Serialize_NoNativeTypes/items=1000/native_values=false-4                      17.77k ± 0%   17.77k ± 0%       ~ (p=1.000 n=10) ¹
Serialize_NoNativeTypes/items=10000/native_values=false-4                     179.8k ± 0%   179.8k ± 0%       ~ (p=1.000 n=10) ¹
RunTemplate_LargeEnv/items=10-4                                                39.00 ± 0%    39.00 ± 0%       ~ (p=1.000 n=10) ¹
RunTemplate_LargeEnv/items=1000-4                                              39.00 ± 0%    39.00 ± 0%       ~ (p=1.000 n=10) ¹
RunTemplate_LargeEnv/items=10000-4                                             39.00 ± 0%    39.00 ± 0%       ~ (p=1.000 n=10) ¹
geomean                                                                        228.6         228.6       +0.00%
¹ all samples are equal

@socket-security

socket-security Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedgolang/​github.com/​flanksource/​commons@​v1.64.0 ⏵ v1.64.2-0.20261113080906-9bb965c627aa73 +1100100100100

View full report

Replace corepack enable with pnpm/action-setup in the lint, release, and test workflows so pnpm is installed and its version is read from web/package.json. The release workflow's version discovery step is unchanged.

Claude-Session-Id: 01a1d3d9-b27c-7d21-9002-13934b5db58a
@moshloop
moshloop merged commit 22d3ccb into main Nov 13, 2026
11 of 12 checks passed
@moshloop
moshloop deleted the feat/wasm-playground-serve branch November 13, 2026 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant