Hermes win11-arm demo

This commit is contained in:
SheetJS 2024-06-21 03:54:27 -04:00
parent 234c63dcaa
commit 44adb843c1
8 changed files with 191 additions and 43 deletions

@ -143,7 +143,7 @@
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
</Row>
@ -202,8 +202,8 @@
<Cell><Data ss:Type="String">C</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"><Data ss:Type="String">✱</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✱</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
</Row>
@ -214,8 +214,8 @@
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
@ -293,7 +293,7 @@
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
</Row>
@ -324,8 +324,8 @@
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"/>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell>
</Row>
<Row>
<Cell ss:StyleID="s20" ss:HRef="/docs/demos/engines/jsc#swift"><Data ss:Type="String">JSC</Data></Cell>

@ -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 ( <>
<b>First 5 Sepal Length Values</b><br/>
<table><tbody>
{col.map(sw => (<tr><td>{sw}</td></tr>))}
</tbody></table>
<table><tbody><tr>{col.map(sw => (<td>{sw}</td>))}</tr></tbody></table>
</>
);
}

@ -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"
```
</TabItem>
@ -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

@ -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`}
</CodeBlock>
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`}
</CodeBlock>
3) Download [`index.js`](pathname:///mobile/index.js) and replace:

@ -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`:
<Tabs groupId="os">
<TabItem value="unix" label="Linux/MacOS">
<Tabs groupId="triple">
<TabItem value="darwin-x64" label="Intel Mac">
```bash
curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet-macos/3.1.3/javet-macos-3.1.3.jar
```
</TabItem>
<TabItem value="darwin-arm" label="ARM64 Mac">
```bash
curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet-macos/3.1.3/javet-macos-3.1.3.jar
```
</TabItem>
<TabItem value="linux-x64" label="Linux x64">
```bash
curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet/3.1.3/javet-3.1.3.jar
```
</TabItem>
<TabItem value="linux-arm" label="Linux ARM">
```bash
curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet-linux-arm64/3.1.3/javet-linux-arm64-3.1.3.jar
```
</TabItem>
</Tabs>
</TabItem>
<TabItem value="win" label="Windows">
</TabItem>
</Tabs>
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:
<Tabs groupId="os">
<TabItem value="unix" label="Linux/MacOS">
<Tabs groupId="triple">
<TabItem value="darwin-x64" label="Intel Mac">
```bash
javac -cp ".:javet-macos-3.1.3.jar" SheetJSJavet.java
java -cp ".:javet-macos-3.1.3.jar" SheetJSJavet pres.xlsx
```
</TabItem>
<TabItem value="darwin-arm" label="ARM64 Mac">
```bash
javac -cp ".:javet-macos-3.1.3.jar" SheetJSJavet.java
java -cp ".:javet-macos-3.1.3.jar" SheetJSJavet pres.xlsx
```
</TabItem>
<TabItem value="linux-x64" label="Linux x64">
```bash
javac -cp ".:javet-3.1.3.jar" SheetJSJavet.java
java -cp ".:javet-3.1.3.jar" SheetJSJavet pres.xlsx
```
</TabItem>
<TabItem value="linux-arm" label="Linux ARM">
```bash
javac -cp ".:javet-linux-arm64-3.1.3.jar" SheetJSJavet.java
java -cp ".:javet-linux-arm64-3.1.3.jar" SheetJSJavet pres.xlsx
```
</TabItem>
</Tabs>
</TabItem>
<TabItem value="win" label="Windows">
</TabItem>
</Tabs>
If the program succeeded, the CSV contents will be printed to console.
## Snapshots

@ -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.
<details>
@ -635,6 +642,9 @@ git config --global http.sslVerify true
5) Build the library:
<Tabs groupId="arch">
<TabItem value="x64" label="x64">
```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.
:::
</TabItem>
<TabItem value="arm" label="ARM64">
```bash
cmake -S hermes-windows -B build -G "Visual Studio 17 2022" -A arm64
cmake --build ./build
```
</TabItem>
</Tabs>
6) Copy every generated `.lib` and `.dll` file into the main folder:
<Tabs groupId="arch">
<TabItem value="x64" label="x64">
```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 .\
```
</TabItem>
<TabItem value="arm" label="ARM64">
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 .\
```
</TabItem>
</Tabs>
7) Download [`sheetjs-hermes.cpp`](pathname:///hermes/sheetjs-hermesw.cpp):
```bash

@ -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

@ -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 |
:::