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.
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.
"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