feat: publish Regex Tools 0.2.0
This commit is contained in:
@@ -10,6 +10,18 @@ browser, engine version, pattern and subject. The UI therefore reports observed
|
||||
elapsed time and exact runtime identity but makes no universal throughput or
|
||||
safety claim.
|
||||
|
||||
PCRE2 cold execution includes loading and instantiating the self-hosted
|
||||
WebAssembly module inside its worker; warm requests reuse that instance.
|
||||
Every request still compiles and frees its pattern so no unbounded compiled-code
|
||||
cache can accumulate. Native match-step, depth and heap limits complement the
|
||||
supervisor wall clock, and cancellation discards the complete worker heap.
|
||||
|
||||
Automatic-callout tracing is deliberately excluded from every benchmark. It
|
||||
compiles an independently instrumented PCRE2 pattern in a separate worker and
|
||||
can materially change runtime work. The trace path retains at most 50,000
|
||||
complete 32-byte event records and 10 MiB total serialized event/mark bytes;
|
||||
the viewer renders at most 2,000 retained events.
|
||||
|
||||
The production bundle separates syntax and execution workers. Interactive
|
||||
syntax/extraction trees and editor decoration sets render at most 2,000 items
|
||||
each and report both the rendered and actual totals. These are presentation
|
||||
@@ -62,5 +74,57 @@ representation against a byte budget before materializing or writing it.
|
||||
IndexedDB schema version 2 indexes `updatedAt`; latest-project loading opens one
|
||||
descending cursor and validates only that record instead of calling `getAll()`.
|
||||
|
||||
Formal cold/warm benchmarks, p95 statistics and growth charts are deferred to
|
||||
the analysis milestone and will run in killable workers.
|
||||
Corpus runs accept at most 256 documents, 16 MiB per document and 256 MiB of
|
||||
aggregate UTF-8 input. Jobs run sequentially so only one engine request is
|
||||
active at a time. A batch retains at most 100,000 matches and 64 MiB of applied
|
||||
output, and stops after five minutes of aggregate wall time. Each document also
|
||||
uses the selected manual timeout. Progress is reported after every document;
|
||||
cancellation kills the current worker and labels all remaining documents.
|
||||
Result tables contain summaries, not match/capture objects. ZIP export is
|
||||
available only for an all-exact apply batch and is created asynchronously.
|
||||
|
||||
Independent-line mode preflights at most 100,000 logical lines and processes
|
||||
each as an isolated engine subject while preserving line separators for exact
|
||||
apply output. Per document, corpus extraction retains at most 32 group summaries
|
||||
(including the full match), three 160-UTF-16-unit samples per group and 100
|
||||
unique diagnostics. Output previews show 2,000 units. Content-free summary
|
||||
exports are capped at 4 MiB; the applied archive is capped at 68 MiB in addition
|
||||
to the 64 MiB uncompressed-output budget.
|
||||
|
||||
ECMAScript analysis reports cold compilation separately from warm native
|
||||
execution. The default benchmark uses three warm-up and 15 measured samples;
|
||||
user caps are 100 warm-ups and 1,000 samples. It reports median and
|
||||
nearest-rank p95 values plus separate timing and outcome/growth plots with the
|
||||
exact runtime identity. Each sample defaults to a 2-second killable-worker
|
||||
limit (10-second cap), and the aggregate analysis wall time is 30 seconds.
|
||||
|
||||
Growth probes retain at most 24 steps, generate at most 1 MiB by default under
|
||||
the central 16 MiB subject cap, and reject more than 10,000,000 repetitions
|
||||
before string allocation. Replacement timing is skipped when match collection
|
||||
is truncated or the estimated output exceeds 8 Mi UTF-16 units. Results are
|
||||
observations for the chosen runtime and generated inputs, never a general
|
||||
complexity proof. See [`ANALYSIS.md`](ANALYSIS.md).
|
||||
|
||||
Generated-case synthesis defaults to 48 retained cases from at most 192
|
||||
candidates, 16 seeded-random variants, 64 KiB per candidate, 1 MiB aggregate
|
||||
candidate bytes and 15 seconds of aggregate wall time. Every candidate then
|
||||
uses a separate selected-engine request with a 500 ms default timeout.
|
||||
Generation preflights UTF-8 size and repetition bounds, caps normalized-AST
|
||||
traversal at 20,000 nodes / 512 levels and retains only bounded diagnostics.
|
||||
Hard caps are documented in [`GENERATED_CASES.md`](GENERATED_CASES.md).
|
||||
|
||||
Subject minimization accepts at most 1 MiB UTF-8, performs at most 2,000 real
|
||||
engine candidate evaluations and stops after at most 60 seconds including
|
||||
syntax setup. One fixed worker timeout of at most 10 seconds applies to every
|
||||
candidate. A candidate starts only when that complete deadline fits in the
|
||||
remaining aggregate budget. Accepted-transform history retains 200 entries;
|
||||
evaluation and accepted totals remain exact. See
|
||||
[`MINIMIZATION.md`](MINIMIZATION.md).
|
||||
|
||||
Formatter validation uses two syntax supervisors and two actual-engine
|
||||
supervisors so source/candidate outcomes cannot share compiled state. The
|
||||
current subject/replacement snapshot always runs; at most 1,000 enabled tests
|
||||
with the exact active identity are replayed. Test validation has a 60-second
|
||||
aggregate wall budget, and a test starts only when its complete configured
|
||||
worker timeout still fits. Preview details retain at most 10,000 transforms and
|
||||
the UI renders the first 200. See [`FORMATTING.md`](FORMATTING.md).
|
||||
|
||||
Reference in New Issue
Block a user