Use Tokio's single-threaded scheduler. The hyper server is used as a
point of comparison for the (single-threaded!) benchmarks in cli/bench.
We're not comparing apples to apples if we use the default
multi-threaded scheduler.
This drops the requests/sec from 284k to 130k on my 12 core Ryzen 5
system. That still leaves a 50k gap for us to close. Working on it!
Fix bug in regular expression and make the regular expression more
strict.
In a string passed to new RegExp(), '[\t\s]' is identical to '[ts]' and
not `/[\t\s]/`. For that, the backslash needs to be escaped in the
string. Futhermore, `\t` is the tab character and is included in the
special regexp value `\s` so is unnecessary.
That would reduce the RegExp to new RegExp(`^${value}\\s*;?`) but
there's no point in matching 0 or more space characters followed by 0 or
one semi-colons as that will match no matter what follows `value`.
To make it more strict, require one of space, semicolon, or
end-of-string after value.
This commit rewrites scripts in "tools/" directory
to use Deno instead of Python. In return it allows
to remove huge number of Python packages in "third_party/".
All benchmarks are done in Rust and can be invoked with
`cargo bench`.
Currently this has it's own "harness" that behaves like
`./tools/benchmark.py` did.
Because of this tests inside `cli/bench` are currently not run.
This should be switched to the language provided harness
once the `#[bench]` attribute has been stabilized.
The following crates were _not_ upgraded to avoid having multiple
versions of the same crate in the dependency tree:
* tokio-tungstenite v0.10.1 -> v0.11.0
* swc_common v0. 8.0 -> v0. 9.1
* swc_ecmascript v0. 1.0 -> v0. 3.0
* webpki-roots v0.19.0 -> v0.20.0
* nix v0.17.0 -> v0.18.0