From 33c408180c6038f0eef5ae48ecaf844d437377fc Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Fri, 16 Oct 2026 09:34:03 +0100 Subject: [PATCH 1/2] Replace libjs benchmarks with porffor libjs benchmarks are no longer produced. Add porffor in its place, unchecked by default like v8-jitless and sm-jitless. Co-Authored-By: Claude Opus 5.5 --- src/pages/benchmarks/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/benchmarks/index.tsx b/src/pages/benchmarks/index.tsx index 9ac3721f..b9ddf7de 100644 --- a/src/pages/benchmarks/index.tsx +++ b/src/pages/benchmarks/index.tsx @@ -10,7 +10,7 @@ const engines = [ "v8-jitless", "sm-jitless", "kiesel", - "libjs", + "porffor", "duktape", "quickjs", ]; @@ -19,7 +19,6 @@ export default function Benchmarks() { const [selectedEngines, setSelectedEngines] = useState([ "boa", "kiesel", - "libjs", "duktape", "quickjs", ]); From 117831d70aa630778440064fb6942cec33519ad5 Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Fri, 16 Oct 2026 11:13:23 +0100 Subject: [PATCH 2/2] Label porffor as AOT compiled on benchmarks page Porffor compiles ahead of time, so its scores are not a like-for-like comparison with the interpreters. Add an (AOT) label to its checkbox and a note explaining the difference. --- src/pages/benchmarks/index.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pages/benchmarks/index.tsx b/src/pages/benchmarks/index.tsx index b9ddf7de..0932eb6a 100644 --- a/src/pages/benchmarks/index.tsx +++ b/src/pages/benchmarks/index.tsx @@ -15,6 +15,10 @@ const engines = [ "quickjs", ]; +const engineLabels: Record = { + porffor: "porffor (AOT)", +}; + export default function Benchmarks() { const [selectedEngines, setSelectedEngines] = useState([ "boa", @@ -51,6 +55,12 @@ export default function Benchmarks() { actions.

The higher the score the better.

+

+ Porffor is an ahead-of-time compiler rather than an interpreter, so + its results are not a like-for-like comparison with the other engines, + which all run as interpreters (V8 and SpiderMonkey are run with their + JITs disabled). It is hidden by default. +

{engines.map((engine) => (
@@ -61,7 +71,7 @@ export default function Benchmarks() { checked={selectedEngines.includes(engine)} onChange={() => handleEngineCheckboxChange(engine)} /> - {engine} + {engineLabels[engine] ?? engine}
))}