diff --git a/docz/data/engines.xls b/docz/data/engines.xls index 87b202a..26d5428 100644 --- a/docz/data/engines.xls +++ b/docz/data/engines.xls @@ -303,7 +303,7 @@ - + diff --git a/docz/docs/03-demos/42-engines/01-duktape.md b/docz/docs/03-demos/42-engines/01-duktape.md index bfca571..b3b1386 100644 --- a/docz/docs/03-demos/42-engines/01-duktape.md +++ b/docz/docs/03-demos/42-engines/01-duktape.md @@ -1116,12 +1116,40 @@ This demo was tested in the following deployments: |:-------------|:--------|:-----------| | `darwin-x64` | `2.2.1` | 2026-01-21 | | `darwin-arm` | `2.2.1` | 2026-01-23 | -| `win11-x64` | `2.2.1` | 2025-04-17 | +| `win11-x64` | `2.2.1` | 2026-02-02 | +| `win11-arm` | `2.2.1` | 2026-02-02 | | `linux-x64` | `2.2.1` | 2026-01-08 | | `linux-arm` | `2.2.1` | 2025-04-18 | ::: +:::caution pass + +The `ducc` crate cannot compile Duktape from source in Windows on ARM, so the +x64 Rust toolchain must be used through the X64 compatibility layer. + +
+ Windows on ARM steps (click to show) + +The following commands switch to the X64 toolchain: + +```pwsh +rustup toolchain install stable-x86_64-pc-windows-msvc --force-non-host +rustup default stable-x86_64-pc-windows-msvc --force-non-host +``` + +--- + +The following command switches back to the native toolchain: + +```pwsh +rustup default stable +``` + +
+ +::: + 1) Create a new project: ```bash diff --git a/docz/docs/03-demos/42-engines/index.md b/docz/docs/03-demos/42-engines/index.md index aa45d91..f8ef9e8 100644 --- a/docz/docs/03-demos/42-engines/index.md +++ b/docz/docs/03-demos/42-engines/index.md @@ -100,6 +100,9 @@ Asterisks (✱) in the Windows columns mark tests that were run in Windows Subsystem for Linux (WSL). In some cases, community efforts have produced forks with native Windows support. +Crosses (✘) mark tests for Windows on ARM that use the X64 compatibility layer. +Proper Windows x64 binaries were cross-compiled and run in Windows on ARM. + Blank cells mark untested or unsupported configurations. With cross-compilation, V8 can run natively in Windows on ARM. The `win11-arm` platform is not tested since the official build infrastructure does not support Windows on ARM and the diff --git a/docz/docs/09-miscellany/05-contributing.md b/docz/docs/09-miscellany/05-contributing.md index 0e20cbc..e1e3150 100644 --- a/docz/docs/09-miscellany/05-contributing.md +++ b/docz/docs/09-miscellany/05-contributing.md @@ -41,10 +41,10 @@ These instructions were tested on the following platforms: | Platform | Architecture | Test Date | |:------------------------------|:-------------|:-----------| -| Linux (Ubuntu Linux x64) | `linux-x64` | 2025-07-06 | +| Linux (Ubuntu Linux x64) | `linux-x64` | 2026-02-02 | | Linux (Debian Linux AArch64) | `linux-arm` | 2025-01-14 | | MacOS 15.6 (x64) | `darwin-x64` | 2026-01-21 | -| MacOS 15.2 (ARM64) | `darwin-arm` | 2025-03-07 | +| MacOS 15.7 (ARM64) | `darwin-arm` | 2026-02-02 | | Windows 11 (x64) + WSL Ubuntu | `win11-x64` | 2025-06-20 | | Windows 11 (ARM) + WSL Ubuntu | `win11-arm` | 2025-02-23 | @@ -734,6 +734,20 @@ Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ^^^^^^^^^^^^^^^^^^^^ URL ``` +:::info pass + +The local server is configured to start on port 8000. If another service is +listening on that port, the process will fail to start. + +If the other process cannot be stopped, run the server manually. The following +snippet starts a server on port 9999: + +```bash +npx -y http-server -p 9999 tests +``` + +::: + 11) Open a browser window and access the displayed URL. ## Development diff --git a/tests/engines/duktape-rust.ps1 b/tests/engines/duktape-rust.ps1 new file mode 100755 index 0000000..ad2ef0a --- /dev/null +++ b/tests/engines/duktape-rust.ps1 @@ -0,0 +1,37 @@ +#!/usr/bin/env pwsh +# https://docs.sheetjs.com/docs/demos/engines/duktape#rust-demo + +$oldDir = Get-Location +$tempDir = Join-Path -Path $env:TEMP -ChildPath "sheetjs-duk-rs" +if (Test-Path -Path $tempDir) { Remove-Item -Path $tempDir -Recurse -Force } +New-Item -ItemType Directory -Path $tempDir | Out-Null +Set-Location -Path $tempDir + +cargo new sheetjs-duk-rs +Set-Location -Path "sheetjs-duk-rs" + +$version = "0.20.3" +Invoke-WebRequest -Uri "https://cdn.sheetjs.com/xlsx-$version/package/dist/shim.min.js" -OutFile "src\shim.min.js" +Invoke-WebRequest -Uri "https://cdn.sheetjs.com/xlsx-$version/package/dist/xlsx.full.min.js" -OutFile "src\xlsx.full.min.js" +Invoke-WebRequest -Uri "https://docs.sheetjs.com/pres.numbers" -OutFile "pres.numbers" +Invoke-WebRequest -Uri "https://docs.sheetjs.com/duk/main.rs" -OutFile "src\main.rs" + +cargo add ducc base64 + +# On Windows ARM, ducc-sys fails to compile Duktape from source (intptr type detection issue). +# Use x64 Rust toolchain through Windows ARM x64 emulation (similar to Bun's approach). +$isWindowsArm = $env:PROCESSOR_ARCHITECTURE -eq "ARM64" +if ($isWindowsArm) { + # Install x64 toolchain with --force-non-host to allow cross-compilation + rustup toolchain install stable-x86_64-pc-windows-msvc --force-non-host + rustup default stable-x86_64-pc-windows-msvc --force-non-host + cargo run -- pres.numbers + rustup default stable +} else { + cargo run -- pres.numbers +} + +npx -y xlsx-cli sheetjsw.xlsb + +Set-Location $oldDir +Remove-Item -Path $tempDir -Recurse -Force \ No newline at end of file diff --git a/tests/mobile/capacitor.ps1 b/tests/mobile/capacitor.ps1 new file mode 100644 index 0000000..b0c315b --- /dev/null +++ b/tests/mobile/capacitor.ps1 @@ -0,0 +1,6 @@ +# https://docs.sheetjs.com/docs/demos/mobile/capacitor + +Write-Host "These tests must be run manually. You can find the demo at:" +Write-Host "" +Write-Host " https://docs.sheetjs.com/docs/demos/mobile/capacitor" +Write-Host "" \ No newline at end of file diff --git a/tests/mobile/capacitor.sh b/tests/mobile/capacitor.sh new file mode 100755 index 0000000..a2e6cee --- /dev/null +++ b/tests/mobile/capacitor.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/mobile/capacitor + +echo "These tests must be run manually. You can find the demo at:" +echo "" +echo " https://docs.sheetjs.com/docs/demos/mobile/capacitor" +echo "" \ No newline at end of file diff --git a/tests/mobile/flutter.ps1 b/tests/mobile/flutter.ps1 new file mode 100644 index 0000000..0339d49 --- /dev/null +++ b/tests/mobile/flutter.ps1 @@ -0,0 +1,6 @@ +# https://docs.sheetjs.com/docs/demos/mobile/flutter + +Write-Host "These tests must be run manually. You can find the demo at:" +Write-Host "" +Write-Host " https://docs.sheetjs.com/docs/demos/mobile/flutter" +Write-Host "" \ No newline at end of file diff --git a/tests/mobile/flutter.sh b/tests/mobile/flutter.sh new file mode 100755 index 0000000..04172e5 --- /dev/null +++ b/tests/mobile/flutter.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/mobile/flutter + +echo "These tests must be run manually. You can find the demo at:" +echo "" +echo " https://docs.sheetjs.com/docs/demos/mobile/flutter" +echo "" \ No newline at end of file diff --git a/tests/mobile/ionic.ps1 b/tests/mobile/ionic.ps1 new file mode 100644 index 0000000..d9d818e --- /dev/null +++ b/tests/mobile/ionic.ps1 @@ -0,0 +1,6 @@ +# https://docs.sheetjs.com/docs/demos/mobile/ionic + +Write-Host "These tests must be run manually. You can find the demo at:" +Write-Host "" +Write-Host " https://docs.sheetjs.com/docs/demos/mobile/ionic" +Write-Host "" \ No newline at end of file diff --git a/tests/mobile/ionic.sh b/tests/mobile/ionic.sh new file mode 100755 index 0000000..67f996d --- /dev/null +++ b/tests/mobile/ionic.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/mobile/ionic + +echo "These tests must be run manually. You can find the demo at:" +echo "" +echo " https://docs.sheetjs.com/docs/demos/mobile/ionic" +echo "" \ No newline at end of file diff --git a/tests/mobile/lynx.ps1 b/tests/mobile/lynx.ps1 new file mode 100644 index 0000000..5fb1717 --- /dev/null +++ b/tests/mobile/lynx.ps1 @@ -0,0 +1,6 @@ +# https://docs.sheetjs.com/docs/demos/mobile/lynx + +Write-Host "These tests must be run manually. You can find the demo at:" +Write-Host "" +Write-Host " https://docs.sheetjs.com/docs/demos/mobile/lynx" +Write-Host "" \ No newline at end of file diff --git a/tests/mobile/lynx.sh b/tests/mobile/lynx.sh new file mode 100755 index 0000000..53a5ceb --- /dev/null +++ b/tests/mobile/lynx.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/mobile/lynx + +echo "These tests must be run manually. You can find the demo at:" +echo "" +echo " https://docs.sheetjs.com/docs/demos/mobile/lynx" +echo "" \ No newline at end of file diff --git a/tests/mobile/nativescript.ps1 b/tests/mobile/nativescript.ps1 new file mode 100644 index 0000000..b0951e9 --- /dev/null +++ b/tests/mobile/nativescript.ps1 @@ -0,0 +1,6 @@ +# https://docs.sheetjs.com/docs/demos/mobile/nativescript + +Write-Host "These tests must be run manually. You can find the demo at:" +Write-Host "" +Write-Host " https://docs.sheetjs.com/docs/demos/mobile/nativescript" +Write-Host "" \ No newline at end of file diff --git a/tests/mobile/nativescript.sh b/tests/mobile/nativescript.sh new file mode 100755 index 0000000..96c0d20 --- /dev/null +++ b/tests/mobile/nativescript.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/mobile/nativescript + +echo "These tests must be run manually. You can find the demo at:" +echo "" +echo " https://docs.sheetjs.com/docs/demos/mobile/nativescript" +echo "" \ No newline at end of file diff --git a/tests/mobile/quasar.ps1 b/tests/mobile/quasar.ps1 new file mode 100644 index 0000000..a641c73 --- /dev/null +++ b/tests/mobile/quasar.ps1 @@ -0,0 +1,6 @@ +# https://docs.sheetjs.com/docs/demos/mobile/quasar + +Write-Host "These tests must be run manually. You can find the demo at:" +Write-Host "" +Write-Host " https://docs.sheetjs.com/docs/demos/mobile/quasar" +Write-Host "" \ No newline at end of file diff --git a/tests/mobile/quasar.sh b/tests/mobile/quasar.sh new file mode 100755 index 0000000..9a7962f --- /dev/null +++ b/tests/mobile/quasar.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/mobile/quasar + +echo "These tests must be run manually. You can find the demo at:" +echo "" +echo " https://docs.sheetjs.com/docs/demos/mobile/quasar" +echo "" \ No newline at end of file diff --git a/tests/mobile/reactnative.ps1 b/tests/mobile/reactnative.ps1 new file mode 100644 index 0000000..e1d8c9f --- /dev/null +++ b/tests/mobile/reactnative.ps1 @@ -0,0 +1,6 @@ +# https://docs.sheetjs.com/docs/demos/mobile/reactnative + +Write-Host "These tests must be run manually. You can find the demo at:" +Write-Host "" +Write-Host " https://docs.sheetjs.com/docs/demos/mobile/reactnative" +Write-Host "" \ No newline at end of file diff --git a/tests/mobile/reactnative.sh b/tests/mobile/reactnative.sh new file mode 100755 index 0000000..5c71fd7 --- /dev/null +++ b/tests/mobile/reactnative.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/mobile/reactnative + +echo "These tests must be run manually. You can find the demo at:" +echo "" +echo " https://docs.sheetjs.com/docs/demos/mobile/reactnative" +echo "" \ No newline at end of file