Repository navigation
v0.30.0
- Benchmarks: new
sourceipssuite measuresstd/http@v1source_ips
against the per-endpoint connection wall — standing keep-alive
connections (pool: dedicated) under a narrowed ephemeral port range,
from one source IP vs several loopback addresses (peak established
connections, connect errors). Linux CI only (it narrows the port range
via sysctl for the suite and restores it). - Docker: every image flavor is now its own GHCR package —
ghcr.io/perfscale/perfscale(perfscale only),perfscale-k6,
perfscale-jmeter,perfscale-locust, andperfscale-full(all three
runners), each taggedX.Y.Z/X.Y/latest. Pick exactly the engine
you need (docker pull ghcr.io/perfscale/perfscale-k6:latest) instead of
finding the right suffix tag in one package. The old suffix tags
(perfscale:latest-k6,perfscale:X.Y.Z-full, …) keep being published
for the same images, so existing pulls don't break. std/http@v1now transparently decodes gzip-compressed responses (Content-Encoding: gzip) — sendAccept-Encoding: gzipviaheadersand the decoded body flows intocheck:and${{ feed.body.posts }}selections as plain JSON. Themax_response_body_bytescap applies to the decoded payload.- Custom WASM steps (RFC 009): a WASM library component can now export steps dispatchable in
use:aslib/<alias>/<step>— the component receives the interpolatedwith:params plus the step context (VU id, iteration, run settings) and returns the standard action result (success / output / tagged logs / metrics / optionalhttp_sampleandsecret_output_paths), so it folds intocheck:, thresholds, and the run summary like any built-in.lib/is a reserved namespace (never shadowsstd/*/pro/*),perfscale lintvalidateslib/references against each component's probed manifest, and the run summary'slibraries:line gainsstep_calls/step_errors/step_p95_msnext to the token-call counters. A newprocesscapability (triple-gated: the YAML grant,allow_library_capabilities: true, andallow_process_actions: true) gives step components host-mediated one-shot process execution with bounded output, timeout, and process-tree cleanup — never raw WASI process imports. New ABI:perfscale:step@0.1.0(wit/step/step.wit), additive on top of the untouchedperfscale:library@0.3.0. - Benchmarks: SyTester is now a default competitor engine — whenever its
jar and Java 21+ are available, its rows sit in the throughput,
saturation, grpc and db tables next to k6/locust/JMeter,
offering SyTester's maximum fixed rate (SYT_RATE, 10000 TPS) since it
has no VU model. The grpc row uses its gRPC generator (proto set uploaded
over the REST API), the db row its PgJDBC transport. A newAPPSknob
(bench workflow inputapps, defaultk6 jmeter locust sytester) picks
the competitor engines; perfscale's rows always run. Unknown names in
SUITESorAPPSnow fail the run (exit 2) instead of being silently
skipped.
What's Changed
- feat(bench): add SyTester rows to throughput, saturation, grpc and db tables by @vitalics in #23
- feat(core): custom WASM steps (RFC 009) — lib// dispatch by @vitalics in #25
- feat(http): transparent gzip response decoding by @vitalics in #26
- feat(docker): publish each image flavor as its own GHCR package by @vitalics in #22
- feat(bench): sourceips suite — source_ips vs the per-endpoint connection wall by @vitalics in #24
- Release v0.30.0 by @vitalics in #27
Full Changelog: v0.29.0...v0.30.0