Today in #iocaine news: I'm converting the benchmarks to Criterion, and am liking what I'm seeing. Groups are neat, and the output is easier to make sense of.
Today in #iocaine news: I'm converting the benchmarks to Criterion, and am liking what I'm seeing. Groups are neat, and the output is easier to make sense of.
What if I moved the benchmarks out of iocaine, into a separate repo? That would allow me to make the benchmark repo depend on nam-shub-of-enki, and I could run benchmarks against that, too!
In other news, looking at the Criterion graphs:
Previously, Lua had the advantage of having global variables, so accessing pre-compiled stuff was considerably faster there. But with emulating globals in Roto, that advantage is lost.
Lua retains the advantage of being a more familiar, and less limited language however. And the advantage of Fennel: the number one reason I added a Lua engine in the first place.
I'll come back to benchmarks tonight. Gotta ponder about a few things first, before I continue down this path.
"Tonight" turned into "tomorrow", and I'm back to thinking about benches. I will keep some of them in iocaine, afterall, because it makes sense to have local benchmarks for some core functionalities:
I can have an external benchmark for more complex stuff.
21 files changed, 414 insertions(+), 732 deletions(-)
So far, so good.
What this is? This is lifting out the various matchers common between the Roto and Lua engines into their own thing, and using thin wrappers from Roto/Lua around that, instead of reimplementing every matcher for both.
It also changes the signature of the Roto functions from function init() -> Verdict[Unit, String]
to fn init() -> bool?
and function decide(request: Request) -> Verdict[Outcome, Outcome]
to fn decide(request: Request) -> Outcome?
.
I'm yet to make the const-ification thing happen, which will slightly tilt the diffstat towards additions, but hopefully not by much.
A space for Bonfire maintainers and contributors to communicate