From 44adb843c1766ad760e88eb57d607c310527481f Mon Sep 17 00:00:00 2001 From: SheetJS Date: Fri, 21 Jun 2024 03:54:27 -0400 Subject: [PATCH] Hermes win11-arm demo --- docz/data/engines.xls | 16 ++-- docz/docs/03-demos/01-math/01-summary.md | 5 +- docz/docs/03-demos/01-math/21-pandas.md | 41 +++++++-- .../docs/03-demos/17-mobile/01-reactnative.md | 32 +++---- docz/docs/03-demos/42-engines/02-v8.md | 86 +++++++++++++++++-- docz/docs/03-demos/42-engines/09-hermes.md | 37 ++++++++ docz/docs/03-demos/42-engines/25-mujs.md | 15 ++++ docz/docs/03-demos/42-engines/26-jurassic.md | 2 + 8 files changed, 191 insertions(+), 43 deletions(-) diff --git a/docz/data/engines.xls b/docz/data/engines.xls index c86c89a..3a03736 100644 --- a/docz/data/engines.xls +++ b/docz/data/engines.xls @@ -143,7 +143,7 @@ - + @@ -202,8 +202,8 @@ C - - + + @@ -214,8 +214,8 @@ - - + + @@ -293,7 +293,7 @@ - + @@ -324,8 +324,8 @@ - - + + JSC diff --git a/docz/docs/03-demos/01-math/01-summary.md b/docz/docs/03-demos/01-math/01-summary.md index 63f4a4b..c4240f0 100644 --- a/docz/docs/03-demos/01-math/01-summary.md +++ b/docz/docs/03-demos/01-math/01-summary.md @@ -41,6 +41,7 @@ This browser demo was tested in the following environments: | Browser | Date | |:------------|:-----------| | Chrome 119 | 2024-01-06 | +| Safari 17.4 | 2024-06-20 | ::: @@ -183,9 +184,7 @@ function SheetJSAoOExtractColumn() { return ( <> First 5 Sepal Length Values
- - {col.map(sw => ())} -
{sw}
+ {col.map(sw => ())}
{sw}
); } diff --git a/docz/docs/03-demos/01-math/21-pandas.md b/docz/docs/03-demos/01-math/21-pandas.md index 7b6bf64..ed56f92 100644 --- a/docz/docs/03-demos/01-math/21-pandas.md +++ b/docz/docs/03-demos/01-math/21-pandas.md @@ -43,7 +43,9 @@ This demo was tested in the following deployments: | `darwin-x64` | Duktape `2.7.0` | 2.2.1 | 3.12.2 | 2024-03-15 | | `darwin-arm` | Duktape `2.7.0` | 2.0.3 | 3.11.7 | 2024-02-13 | | `win10-x64` | Duktape `2.7.0` | 2.2.1 | 3.12.2 | 2024-03-25 | +| `win11-arm` | Duktape `2.7.0` | 2.2.2 | 3.11.5 | 2024-06-20 | | `linux-x64` | Duktape `2.7.0` | 1.5.3 | 3.11.3 | 2024-03-21 | +| `linux-arm` | Duktape `2.7.0` | 1.5.3 | 3.11.2 | 2024-06-20 | ::: @@ -246,15 +248,21 @@ In some local tests, the install failed with the following error: error: externally-managed-environment ``` -On Arch Linux-based platforms including the Steam Deck, Pandas must be installed -through the package manager: +Pandas must be installed through the package manager: + +- Debian and Ubuntu distributions: + +```bash +sudo apt-get install python3-pandas +``` + +- Arch Linux-based platforms including the Steam Deck: ```bash sudo pacman -Syu python-pandas ``` -On macOS systems with a Python version from Homebrew, Pandas should be installed -using `pip` with the `--break-system-packages` option: +- macOS systems with a Python version from Homebrew: ```bash sudo python3 -m pip install pandas --break-system-packages @@ -414,7 +422,7 @@ The name of the library is `libduktape.so.207.20700`: ```python title="sheetjs.py (change highlighted line)" # highlight-next-line -lib = "libduktape.so.207.20700" +lib = "./libduktape.so.207.20700" ``` @@ -514,7 +522,9 @@ This demo was tested in the following deployments: | `darwin-x64` | Duktape `2.7.0` | 0.20.15 | 3.12.2 | 2024-03-15 | | `darwin-arm` | Duktape `2.7.0` | 0.20.7 | 3.11.7 | 2024-02-13 | | `win10-x64` | Duktape `2.7.0` | 0.20.16 | 3.12.2 | 2024-03-25 | +| `win10-arm` | Duktape `2.7.0` | 0.20.31 | 3.11.5 | 2024-06-20 | | `linux-x64` | Duktape `2.7.0` | 0.20.16 | 3.11.3 | 2024-03-21 | +| `linux-arm` | Duktape `2.7.0` | 0.20.31 | 3.11.2 | 2024-06-20 | ::: @@ -575,6 +585,13 @@ sudo python3 -m pip install pandas ::: +:::info pass + +On Windows, the `C++ Clang Compiler for Windows` component must be installed +through the Visual Studio installer. + +::: + :::caution pass On Arch Linux-based platforms including the Steam Deck, the install may fail: @@ -583,7 +600,19 @@ On Arch Linux-based platforms including the Steam Deck, the install may fail: error: externally-managed-environment ``` -It is recommended to use a virtual environment for Polars and copy : +It is recommended to use a virtual environment for Polars. + +`venv` must be installed through the system package manager: + +- Debian and Ubuntu distributions: + +```bash +sudo apt-get install python3.11-venv +``` + +- `venv` is included in the `python` package in Arch Linux-based platforms. + +After installing `venv`, the following commands set up the virtual environment: ```bash mkdir sheetjs-polars diff --git a/docz/docs/03-demos/17-mobile/01-reactnative.md b/docz/docs/03-demos/17-mobile/01-reactnative.md index 130f631..3db3cde 100644 --- a/docz/docs/03-demos/17-mobile/01-reactnative.md +++ b/docz/docs/03-demos/17-mobile/01-reactnative.md @@ -231,12 +231,14 @@ This demo was tested in the following environments: **Simulators** -| OS | Device | RN | Dev Platform | Date | -|:-----------|:------------------|:---------|:-------------|:-----------| -| Android 34 | Pixel 3a | `0.73.6` | `darwin-x64` | 2024-03-13 | -| iOS 17.4 | iPhone 15 Pro Max | `0.73.6` | `darwin-x64` | 2024-03-13 | -| Android 34 | Pixel 3a | `0.73.5` | `win10-x64` | 2024-03-05 | -| Android 34 | Pixel 3a | `0.73.7` | `linux-x64` | 2024-04-29 | +| OS | Device | RN | Dev Platform | Date | +|:-----------|:--------------------|:---------|:-------------|:-----------| +| Android 34 | Pixel 3a | `0.73.6` | `darwin-x64` | 2024-03-13 | +| iOS 17.4 | iPhone 15 Pro Max | `0.73.6` | `darwin-x64` | 2024-03-13 | +| Android 34 | Pixel 3a | `0.74.2` | `darwin-arm` | 2024-06-20 | +| iOS 17.5 | iPhone SE (3rd gen) | `0.74.2` | `darwin-arm` | 2024-06-20 | +| Android 34 | Pixel 3a | `0.73.5` | `win10-x64` | 2024-03-05 | +| Android 34 | Pixel 3a | `0.73.7` | `linux-x64` | 2024-04-29 | ::: @@ -275,7 +277,7 @@ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk 1) Create project: ```bash -npx -y react-native@0.73.7 init SheetJSRNFetch --version="0.73.7" +npx -y react-native@0.74.2 init SheetJSRNFetch --version="0.74.2" ``` 2) Install shared dependencies: @@ -284,7 +286,7 @@ npx -y react-native@0.73.7 init SheetJSRNFetch --version="0.73.7" cd SheetJSRNFetch curl -LO https://docs.sheetjs.com/logo.png npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz -npm i -S react-native-table-component@1.2.0 @types/react-native-table-component`} +npm i -S react-native-table-component@1.2.2 @types/react-native-table-component`} 3) Download [`App.tsx`](pathname:///reactnative/App.tsx) and replace: @@ -297,18 +299,6 @@ curl -LO https://docs.sheetjs.com/reactnative/App.tsx 4) Install or switch to Java 17[^6] -:::note pass - -When the demo was last tested on macOS, `java -version` displayed the following: - -``` -openjdk version "17.0.10" 2024-01-16 -OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) -OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode) -``` - -::: - 5) Start the Android emulator: ```bash @@ -1049,7 +1039,7 @@ On macOS, if prompted to install `CocoaPods`, press `y`. cd SheetJSRN curl -LO https://docs.sheetjs.com/logo.png npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz -npm i -S react-native-table-component@1.2.0 react-native-document-picker@9.1.1`} +npm i -S react-native-table-component@1.2.2 react-native-document-picker@9.1.1`} 3) Download [`index.js`](pathname:///mobile/index.js) and replace: diff --git a/docz/docs/03-demos/42-engines/02-v8.md b/docz/docs/03-demos/42-engines/02-v8.md index a4d87d5..3cdb4b3 100644 --- a/docz/docs/03-demos/42-engines/02-v8.md +++ b/docz/docs/03-demos/42-engines/02-v8.md @@ -988,10 +988,12 @@ const u8 = new Uint8Array(i8.buffer, i8.byteOffset, i8.length); This demo was last tested in the following deployments: -| Architecture | V8 Version | Javet | Java | Date | -|:-------------|:--------------|:--------|:--------|:-----------| -| `darwin-x64` | `12.6.228.13` | `3.1.3` | 22 | 2024-06-19 | -| `darwin-arm` | `12.6.228.13` | `3.1.3` | 11.0.23 | 2024-06-19 | +| Architecture | V8 Version | Javet | Java | Date | +|:-------------|:--------------|:--------|:----------|:-----------| +| `darwin-x64` | `12.6.228.13` | `3.1.3` | `22` | 2024-06-19 | +| `darwin-arm` | `12.6.228.13` | `3.1.3` | `11.0.23` | 2024-06-19 | +| `linux-x64` | `12.6.228.13` | `3.1.3` | `17.0.7` | 2024-06-20 | +| `linux-arm` | `12.6.228.13` | `3.1.3` | `17.0.11` | 2024-06-20 | ::: @@ -1003,12 +1005,47 @@ cd sheetjs-javet ``` 2) Download the Javet JAR. There are different archives for different platforms. -The following command runs on `darwin-x64` and `darwin-arm`: + + + + + + ```bash curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet-macos/3.1.3/javet-macos-3.1.3.jar ``` + + + +```bash +curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet-macos/3.1.3/javet-macos-3.1.3.jar +``` + + + + +```bash +curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet/3.1.3/javet-3.1.3.jar +``` + + + + +```bash +curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet-linux-arm64/3.1.3/javet-linux-arm64-3.1.3.jar +``` + + + + + + + + + + 3) Download the SheetJS Standalone script and test file. Save both files in the project directory: @@ -1030,11 +1067,50 @@ curl -LO https://docs.sheetjs.com/v8/SheetJSJavet.java 5) Build and run the Java application: + + + + + + ```bash javac -cp ".:javet-macos-3.1.3.jar" SheetJSJavet.java java -cp ".:javet-macos-3.1.3.jar" SheetJSJavet pres.xlsx ``` + + + +```bash +javac -cp ".:javet-macos-3.1.3.jar" SheetJSJavet.java +java -cp ".:javet-macos-3.1.3.jar" SheetJSJavet pres.xlsx +``` + + + + +```bash +javac -cp ".:javet-3.1.3.jar" SheetJSJavet.java +java -cp ".:javet-3.1.3.jar" SheetJSJavet pres.xlsx +``` + + + + +```bash +javac -cp ".:javet-linux-arm64-3.1.3.jar" SheetJSJavet.java +java -cp ".:javet-linux-arm64-3.1.3.jar" SheetJSJavet pres.xlsx +``` + + + + + + + + + + If the program succeeded, the CSV contents will be printed to console. ## Snapshots diff --git a/docz/docs/03-demos/42-engines/09-hermes.md b/docz/docs/03-demos/42-engines/09-hermes.md index d69cc8d..bb842fc 100644 --- a/docz/docs/03-demos/42-engines/09-hermes.md +++ b/docz/docs/03-demos/42-engines/09-hermes.md @@ -375,6 +375,7 @@ fork, which powers React Native for Windows, does have built-in support[^5] | Architecture | Git Commit | Date | |:-------------|:-----------|:-----------| | `win10-x64` | `240573e` | 2024-03-24 | +| `win11-arm` | `240573e` | 2024-06-20 | The ["Windows Example"](#windows-example) covers `hermes-windows`. @@ -547,6 +548,12 @@ contents of the first sheet as CSV rows. ### Windows Example +:::info pass + +On ARM64, the commands must be run in a "ARM64 Native Tools Command Prompt". + +::: + 0) Install dependencies.
@@ -635,6 +642,9 @@ git config --global http.sslVerify true 5) Build the library: + + + ```bash cd hermes-windows .\.ado\scripts\cibuild.ps1 -AppPlatform win32 -Platform x64 -ToolsPlatform x64 @@ -673,13 +683,40 @@ embedding Hermes, so the error message can be safely ignored. ::: + + + +```bash +cmake -S hermes-windows -B build -G "Visual Studio 17 2022" -A arm64 +cmake --build ./build +``` + + + + 6) Copy every generated `.lib` and `.dll` file into the main folder: + + + ```powershell dir -r -Path .\hermes-windows\workspace\build\win32-x64-debug\ -Filter "*.dll" | Copy-Item -Destination .\ dir -r -Path .\hermes-windows\workspace\build\win32-x64-debug\ -Filter "*.lib" | Copy-Item -Destination .\ ``` + + + +Run the following commands in a PowerShell session: + +```powershell +dir -r -Path .\build -Filter "*.dll" | Copy-Item -Destination .\ +dir -r -Path .\build -Filter "*.lib" | Copy-Item -Destination .\ +``` + + + + 7) Download [`sheetjs-hermes.cpp`](pathname:///hermes/sheetjs-hermesw.cpp): ```bash diff --git a/docz/docs/03-demos/42-engines/25-mujs.md b/docz/docs/03-demos/42-engines/25-mujs.md index 2e8c3a8..32b01a4 100644 --- a/docz/docs/03-demos/42-engines/25-mujs.md +++ b/docz/docs/03-demos/42-engines/25-mujs.md @@ -324,11 +324,26 @@ This demo was tested in the following deployments: |:-------------|:--------|:-----------| | `darwin-x64` | `1.3.4` | 2024-05-25 | | `darwin-arm` | `1.3.4` | 2024-05-23 | +| `win10-x64` | `1.3.4` | 2024-06-20 | +| `win11-arm` | `1.3.4` | 2024-06-20 | | `linux-x64` | `1.3.4` | 2024-04-21 | | `linux-arm` | `1.3.4` | 2024-05-25 | ::: +:::caution pass + +MuJS distributions do not include native Windows projects. The `win10-x64` and +`win11-arm` tests were run entirely within Windows Subsystem for Linux. + +When building in WSL, `libreadline-dev` must be installed using `apt`: + +```bash +sudo apt-get install libreadline-dev +``` + +::: + 1) Make a project directory: ```bash diff --git a/docz/docs/03-demos/42-engines/26-jurassic.md b/docz/docs/03-demos/42-engines/26-jurassic.md index ade4d19..53d8c92 100644 --- a/docz/docs/03-demos/42-engines/26-jurassic.md +++ b/docz/docs/03-demos/42-engines/26-jurassic.md @@ -178,6 +178,8 @@ This demo was tested in the following deployments: |:-------------|:---------|:-----------| | `darwin-x64` | `3.2.7` | 2024-06-15 | | `darwin-arm` | `3.2.7` | 2024-06-15 | +| `linux-x64` | `3.2.7` | 2024-06-20 | +| `linux-arm` | `3.2.7` | 2024-06-20 | :::