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}
))}