diff --git a/docz/data/engines.xls b/docz/data/engines.xls
index 2d387cf..87b202a 100644
--- a/docz/data/engines.xls
+++ b/docz/data/engines.xls
@@ -155,7 +155,7 @@
✔✔✔
-
+ ✔Boa
@@ -172,8 +172,8 @@
Perl✔✔
-
-
+ ✱
+ ✱✔✔
diff --git a/docz/docs/03-demos/03-net/09-dom.md b/docz/docs/03-demos/03-net/09-dom.md
index 6cc0250..3321e59 100644
--- a/docz/docs/03-demos/03-net/09-dom.md
+++ b/docz/docs/03-demos/03-net/09-dom.md
@@ -298,8 +298,7 @@ This demo was tested in the following deployments:
| CheerioJS | Date |
|:--------------|:-----------|
-| `1.0.0` | 2025-04-24 |
-| `1.0.0-rc.12` | 2025-04-24 |
+| `1.1.2` | 2026-01-12 |
:::
@@ -309,7 +308,7 @@ This demo was tested in the following deployments:
1) Install SheetJS and CheerioJS libraries:
{`\
-npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz cheerio@1.0.0`}
+npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz cheerio@1.1.2`}
2) Download [the sample script `SheetJSCheerio.js`](pathname:///dom/SheetJSCheerio.js):
diff --git a/docz/docs/03-demos/12-static/07-eleventy.md b/docz/docs/03-demos/12-static/07-eleventy.md
index d6d63ce..e315dd5 100644
--- a/docz/docs/03-demos/12-static/07-eleventy.md
+++ b/docz/docs/03-demos/12-static/07-eleventy.md
@@ -117,9 +117,8 @@ This demo was tested in the following environments:
| Eleventy | Date |
|:---------------|:-----------|
-| `2.0.1` | 2025-05-07 |
-| `3.0.0` | 2025-05-07 |
-| `3.1.0-beta.1` | 2025-05-07 |
+| `2.0.1` | 2026-01-12 |
+| `3.1.2` | 2026-01-12 |
:::
diff --git a/docz/docs/03-demos/42-engines/09-hermes.md b/docz/docs/03-demos/42-engines/09-hermes.md
index 3f3f48a..b7a4413 100644
--- a/docz/docs/03-demos/42-engines/09-hermes.md
+++ b/docz/docs/03-demos/42-engines/09-hermes.md
@@ -852,8 +852,11 @@ This demo was tested in the following deployments:
| `win11-x64` | `0.13.0` | 2025-04-28 |
| `win11-arm` | `0.13.0` | 2025-02-23 |
| `linux-x64` | `0.13.0` | 2025-04-21 |
+| `linux-arm` | `0.13.0` | 2026-01-10 |
-When this demo was last tested, `jsvu` did not support `linux-arm`.
+When this demo was last tested, `jsvu` did not install a native `linux-arm`
+binary. Nevertheless, the process was tested using `qemu-user` to simulate the
+`linux-x64` program.
:::
@@ -870,13 +873,26 @@ npx -y jsvu hermes@0.13.0
When prompted, select the appropriate operating system.
-:::info pass
+
+ Installation Notes (click to show)
`jsvu` on Windows on ARM uses the X64 compatibility layer. When the demo was
last tested, the engine binaries were not native ARM64 programs.
-:::
+---
+`jsvu` will fail on Linux on ARM since the `linux64` binary is X64. This error
+can be ignored.
+
+On this platform, `qemu-user` must be installed by the root user:
+
+```bash
+sudo apt install qemu-user
+```
+
+In Debian, the package includes bindings to support the `binfmt_misc` system.
+
+
1) Inspect the output of the installer. Look for "Installing binary" lines:
diff --git a/docz/docs/03-demos/42-engines/20-chakra.md b/docz/docs/03-demos/42-engines/20-chakra.md
index d7afe28..c9ed9b8 100644
--- a/docz/docs/03-demos/42-engines/20-chakra.md
+++ b/docz/docs/03-demos/42-engines/20-chakra.md
@@ -87,7 +87,6 @@ static char *read_file(const char *filename, size_t *sz) {
// ...
/* load library */
- EVAL_FILE("shim.min.js")
EVAL_FILE("xlsx.full.min.js")
```
@@ -137,6 +136,7 @@ This demo was tested in the following deployments:
| `win11-x64` | `36becec` | 2025-04-28 |
| `win11-arm` | `e26c81f` | 2025-02-23 |
| `linux-x64` | `36becec` | 2025-06-18 |
+| `linux-arm` | `792ee76` | 2026-01-10 |
:::
@@ -204,7 +204,7 @@ The commands in this demo should be run in "ARM64 Native Tools Command Prompt".
```bash
git clone https://github.com/chakra-core/ChakraCore.git
cd ChakraCore
-git checkout 36becec
+git checkout 792ee76
cd ..
```
@@ -568,18 +568,16 @@ cl sheetjs.ch.cpp ChakraCore.lib /I ChakraCore\lib\Jsrt /link /LIBPATH:ChakraCor
-5) Download the SheetJS Standalone script, shim script and test file. Move all
-three files to the project directory:
+5) Download the SheetJS Standalone script and test file. Move all three files to
+the project directory:
{`\
curl -L -O https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js
-curl -L -O https://cdn.sheetjs.com/xlsx-${current}/package/dist/shim.min.js
curl -L -O https://docs.sheetjs.com/pres.numbers`}
@@ -609,7 +607,7 @@ If successful, the program will print the contents of the first sheet as CSV.
:::note Tested Deployments
-This demo was last tested on 2025-06-20 against `ch` commit `36becec`.
+This demo was last tested on 2026-01-10 against `ch` commit `792ee76`.
:::
@@ -627,18 +625,16 @@ or `ChakraCore\Build\VcBuild\bin\x64_debug\` on x64 Windows.
:::
-1) Download the SheetJS Standalone script, shim script and test file. Move all
-three files to the project directory:
+1) Download the SheetJS Standalone script and test file. Move all three files to
+the project directory:
{`\
curl -L -O https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js
-curl -L -O https://cdn.sheetjs.com/xlsx-${current}/package/dist/shim.min.js
curl -L -O https://docs.sheetjs.com/pres.numbers`}
@@ -687,6 +683,16 @@ On Windows, the command should be run in WSL.
./ch xlsx.chakra.js
```
+:::note pass
+
+The "Integration Example" stores `ch` in the `ChakraCore/out/Test/` folder:
+
+```bash
+./ChakraCore/out/Test/ch xlsx.chakra.js
+```
+
+:::
+
diff --git a/docz/docs/03-demos/42-engines/22-perl.md b/docz/docs/03-demos/42-engines/22-perl.md
index 1e073c3..7b581db 100644
--- a/docz/docs/03-demos/42-engines/22-perl.md
+++ b/docz/docs/03-demos/42-engines/22-perl.md
@@ -68,10 +68,12 @@ String.prototype.match = function(p) {
When loading the ExtendScript build, the BOM must be removed:
-```perl
+```perl title="Remove BOM from the SheetJS ExtendScript build and evaluate"
## Load SheetJS source
my $src = read_file('xlsx.extendscript.js', { binmode => ':raw' });
$src =~ s/^\xEF\xBB\xBF//; ## remove UTF8 BOM
+
+## evaluate the updated source
my $XLSX = $je->eval($src);
```
@@ -79,7 +81,7 @@ my $XLSX = $je->eval($src);
Data should be passed as Base64 strings:
-```perl
+```perl title="Read spreadsheet file in Perl and parse with SheetJS"
use File::Slurp;
use MIME::Base64 qw( encode_base64 );
@@ -102,7 +104,7 @@ $return_val = $je->method(sheetjsparse => $raw_data);
Due to bugs in data interchange, it is strongly recommended to use a simple
format like `.fods`:
-```perl
+```perl title="Generate FODS with SheetJS and write to file in Perl"
use File::Slurp;
## Set up conversion method
@@ -129,9 +131,13 @@ This demo was tested in the following deployments:
|:-------------|:--------|:-----------|
| `darwin-x64` | `0.066` | 2025-03-31 |
| `darwin-arm` | `0.066` | 2025-09-03 |
+| `win11-x64` | `0.066` | 2026-01-10 |
+| `win11-arm` | `0.066` | 2026-01-10 |
| `linux-x64` | `0.066` | 2025-06-16 |
| `linux-arm` | `0.066` | 2025-02-15 |
+The Windows tests were run in WSL.
+
:::
1) Install `JE` and `File::Slurp` through CPAN:
diff --git a/docz/docs/03-demos/42-engines/25-mujs.md b/docz/docs/03-demos/42-engines/25-mujs.md
index f4ac259..b9e3677 100644
--- a/docz/docs/03-demos/42-engines/25-mujs.md
+++ b/docz/docs/03-demos/42-engines/25-mujs.md
@@ -36,7 +36,7 @@ as [Duktape](/docs/demos/engines/duktape).
:::info pass
Many MuJS functions are not documented. The explanation was verified against
-version `1.3.6`.
+version `1.3.8`.
:::
@@ -327,7 +327,7 @@ This demo was tested in the following deployments:
| `win11-x64` | `1.3.6` | 2025-04-23 |
| `win11-arm` | `1.3.5` | 2025-02-23 |
| `linux-x64` | `1.3.6` | 2025-06-16 |
-| `linux-arm` | `1.3.5` | 2025-02-15 |
+| `linux-arm` | `1.3.8` | 2026-01-10 |
:::
@@ -355,9 +355,9 @@ cd sheetjs-mu
2) Build the MuJS shared library from source:
```bash
-curl -LO https://mujs.com/downloads/mujs-1.3.6.zip
-unzip mujs-1.3.6.zip
-cd mujs-1.3.6
+curl -LO https://mujs.com/downloads/mujs-1.3.8.zip
+unzip mujs-1.3.8.zip
+cd mujs-1.3.8
make release
cd ..
```
@@ -365,7 +365,7 @@ cd ..
3) Copy the `mujs.h` header file and `libmujs.a` library to the project folder:
```bash
-cp mujs-1.3.6/build/release/libmujs.a mujs-1.3.6/mujs.h .
+cp mujs-1.3.8/build/release/libmujs.a mujs-1.3.8/mujs.h .
```
4) Download [`SheetJSMu.c`](pathname:///mujs/SheetJSMu.c):
diff --git a/docz/docs/index.md b/docz/docs/index.md
index e5a4806..17c9cee 100644
--- a/docz/docs/index.md
+++ b/docz/docs/index.md
@@ -370,7 +370,7 @@ This,is,a,Test
The test suite is regularly run against a number of modern and legacy browsers
using [Sauce Labs](https://saucelabs.com/).
-The following chart shows test results on 2025-05-15 for version `0.20.3`:
+Browser tests for SheetJS version `0.20.3` were run on 2026-01-12:
[](https://saucelabs.com/u/sheetjs)
diff --git a/docz/static/chakra/sheetjs.ch.cpp b/docz/static/chakra/sheetjs.ch.cpp
index a5f0347..3d4db2c 100644
--- a/docz/static/chakra/sheetjs.ch.cpp
+++ b/docz/static/chakra/sheetjs.ch.cpp
@@ -50,8 +50,6 @@ int main(int argc, char *argv[]) {
JsValueRef global;
FAIL_CHECK(JsGetGlobalObject(&global));
- EVAL_FILE("shim.min.js")
-
EVAL_FILE("xlsx.full.min.js")
JsValueRef buf_str;
diff --git a/docz/static/test/sheetjs.svg b/docz/static/test/sheetjs.svg
index 683e0de..45bd7cd 100644
--- a/docz/static/test/sheetjs.svg
+++ b/docz/static/test/sheetjs.svg
@@ -1,4 +1,4 @@
-