darwin-x64 refresh

This commit is contained in:
SheetJS 2024-03-16 12:04:18 -04:00
parent c5f24c4f1e
commit 1480a3e021
28 changed files with 269 additions and 151 deletions

@ -40,7 +40,7 @@ This demo was tested in the following deployments:
| Architecture | JS Engine | Pandas | Python | Date |
|:-------------|:----------------|:-------|:-------|:-----------|
| `darwin-x64` | Duktape `2.7.0` | 2.0.3 | 3.11.7 | 2024-01-29 |
| `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 |
| `linux-x64` | Duktape `2.7.0` | 1.5.3 | 3.11.3 | 2024-01-29 |
@ -219,6 +219,23 @@ sudo pacman -Syu python-pandas
:::
:::caution pass
On macOS systems with a Python version from Homebrew, the install will fail:
```
error: externally-managed-environment
```
When the demo was last tested, Homebrew did not have a pre-built Pandas formula.
Instead, Pandas should be installed with the `--break-system-packages` option:
```bash
sudo python3 -m pip install pandas --break-system-packages
```
:::
1) Build the Duktape shared library:
```bash
@ -356,11 +373,11 @@ The Pandas example requires a few slight changes to work with Polars:
This demo was tested in the following deployments:
| Architecture | JS Engine | Polars | Python | Date |
|:-------------|:----------------|:-------|:-------|:-----------|
| `darwin-x64` | Duktape `2.7.0` | 0.20.6 | 3.11.7 | 2024-01-30 |
| `darwin-arm` | Duktape `2.7.0` | 0.20.7 | 3.11.7 | 2024-02-13 |
| `linux-x64` | Duktape `2.7.0` | 0.20.6 | 3.11.3 | 2024-01-30 |
| Architecture | JS Engine | Polars | Python | Date |
|:-------------|:----------------|:--------|:-------|:-----------|
| `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 |
| `linux-x64` | Duktape `2.7.0` | 0.20.6 | 3.11.3 | 2024-01-30 |
:::
@ -428,7 +445,7 @@ It is recommended to use a virtual environment for Polars:
```bash
mkdir sheetjs-polars
cd sheetjs-polars
python -m venv .
python3 -m venv .
./bin/pip install polars
```

@ -404,7 +404,7 @@ This demo was tested in the following environments:
| Architecture | PhantomJS | Date |
|:-------------|:----------|:-----------|
| `darwin-x64` | `2.1.1` | 2024-02-23 |
| `darwin-x64` | `2.1.1` | 2024-03-15 |
| `win10-x64` | `2.1.1` | 2024-02-23 |
:::

@ -116,11 +116,8 @@ This demo was tested in the following environments:
| Eleventy | Date |
|:----------------|:-----------|
| `2.0.1` | 2023-10-08 |
| `3.0.0-alpha.1` | 2023-12-04 |
At the time of writing, the `3.0.0-alpha.1` ("Alpha") release was only available
through the Git repository. Steps for `2.0.1` ("Stable") and Alpha are included.
| `2.0.1` | 2024-03-15 |
| `3.0.0-alpha.5` | 2024-03-15 |
:::
@ -140,14 +137,14 @@ npm init -y
<TabItem value="2" label="Stable">
<CodeBlock language="bash">{`\
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @11ty/eleventy`}
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @11ty/eleventy@2.0.1`}
</CodeBlock>
</TabItem>
<TabItem value="3" label="Alpha">
<CodeBlock language="bash">{`\
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz 11ty/eleventy`}
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @11ty/eleventy@3.0.0-alpha.5`}
</CodeBlock>
</TabItem>
@ -190,8 +187,8 @@ The server will generate `index.html` from `index.njk` and show the server URL:
6) Open the URL in a web browser. The page should include a table.
7) Open `_data/pres.xlsx` in a spreadsheet editor. Add a new row to the end
of the list and save the file.
7) Open `_data/pres.xlsx` in a spreadsheet editor. Add a row to the bottom of
the "Sheet1" sheet (set `A7` to "SheetJS Dev" and `B7` to `47`). Save the file.
The server log will note that the file changed:

@ -188,7 +188,7 @@ This demo was tested in the following environments:
| OS and Version | Architecture | Electron | Date |
|:---------------|:-------------|:---------|:-----------|
| macOS 13.5.1 | `darwin-x64` | `27.1.3` | 2023-12-09 |
| macOS 14.4 | `darwin-x64` | `29.1.4` | 2024-03-15 |
| macOS 14.1.2 | `darwin-arm` | `27.1.3` | 2023-12-01 |
| Windows 10 | `win10-x64` | `28.2.0` | 2024-03-04 |
| Windows 11 | `win11-arm` | `27.1.3` | 2023-12-01 |

@ -297,7 +297,7 @@ This demo was tested in the following environments:
| OS and Version | Architecture | Wails | Date |
|:---------------|:-------------|:---------|:-----------|
| macOS 13.6 | `darwin-x64` | `v2.6.0` | 2023-11-05 |
| macOS 14.4 | `darwin-x64` | `v2.8.0` | 2024-03-15 |
| macOS 14.1.2 | `darwin-arm` | `v2.6.0` | 2023-12-01 |
| Windows 10 | `win10-x64` | `v2.8.0` | 2024-03-10 |
| Windows 11 | `win11-arm` | `v2.6.0` | 2023-12-01 |
@ -368,15 +368,10 @@ sudo pacman -Syu base-devel gtk3 glib2 pango harfbuzz cairo gdk-pixbuf2 atk libs
```bash
wails init -n sheetjs-wails -t svelte-ts
```
2) Enter the directory:
```bash
cd sheetjs-wails
```
3) Install front-end dependencies:
2) Install front-end dependencies:
<CodeBlock language="bash">{`\
cd frontend
@ -385,7 +380,7 @@ npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz
cd ..`}
</CodeBlock>
4) Download source files:
3) Download source files:
- Download [`app.go`](pathname:///wails/app.go) and replace `app.go`
- Download [`App.svelte`](pathname:///wails/App.svelte) and replace
@ -396,7 +391,7 @@ curl -o app.go https://docs.sheetjs.com/wails/app.go
curl -o frontend/src/App.svelte https://docs.sheetjs.com/wails/App.svelte
```
5) Build the app with
4) Build the app:
```bash
wails build
@ -404,12 +399,12 @@ wails build
It will print the path to the generated program (typically in `build/bin/`).
6) Run the generated application.
5) Run the generated application.
**Testing**
When run, the program will download [`pres.xlsx`](https://sheetjs.com/pres.xlsx)
and display the contents of the first worksheet in a table.
The program will download [`pres.xlsx`](https://sheetjs.com/pres.xlsx) and
display the contents of the first worksheet in a table.
To test export features, click "Export XLSX". The app will ask for a file name
and location. After clicking Save, the app will export to XLSX. This file can be

@ -255,14 +255,14 @@ const save_button_callback = async() => {
This demo was tested in the following environments:
| OS and Version | Architecture | Tauri | Date |
|:---------------|:-------------|:---------|:-----------|
| macOS 14.1.1 | `darwin-x64` | `v1.5.6` | 2023-11-17 |
| macOS 14.0 | `darwin-arm` | `v1.5.2` | 2023-10-18 |
| Windows 10 | `win10-x64` | `v1.5.0` | 2023-10-01 |
| Windows 11 | `win11-arm` | `v1.5.7` | 2023-12-01 |
| Linux (HoloOS) | `linux-x64` | `v1.5.9` | 2024-01-23 |
| Linux (Debian) | `linux-arm` | `v1.5.7` | 2023-12-01 |
| OS and Version | Architecture | Tauri | Date |
|:---------------|:-------------|:----------|:-----------|
| macOS 14.4 | `darwin-x64` | `v1.5.11` | 2024-03-15 |
| macOS 14.0 | `darwin-arm` | `v1.5.2` | 2023-10-18 |
| Windows 10 | `win10-x64` | `v1.5.0` | 2023-10-01 |
| Windows 11 | `win11-arm` | `v1.5.7` | 2023-12-01 |
| Linux (HoloOS) | `linux-x64` | `v1.5.9` | 2024-01-23 |
| Linux (Debian) | `linux-arm` | `v1.5.7` | 2023-12-01 |
:::
@ -287,15 +287,15 @@ If required dependencies are installed, the output will show a checkmark next to
```
[✔] Environment
- OS: Mac OS 14.1.1 X64
- OS: Mac OS 14.4.0 X64
✔ Xcode Command Line Tools: installed
✔ rustc: 1.74.0 (79e9716c9 2023-11-13)
✔ cargo: 1.74.0 (ecb9851af 2023-10-18)
✔ rustup: 1.26.0+198 (393e187b7 2023-11-16)
✔ rustc: 1.76.0 (07dca489a 2024-02-04)
✔ cargo: 1.76.0 (c84b36747 2024-01-18)
✔ rustup: 1.27.0 (bbb9276d2 2024-03-08)
✔ Rust toolchain: stable-x86_64-apple-darwin (default)
- node: 20.9.0
- npm: 10.1.0
- bun: 1.0.2
- node: 20.11.1
- npm: 10.2.4
- bun: 1.0.31
```
:::caution pass
@ -325,7 +325,7 @@ npm i --save-dev @tauri-apps/cli`}
3) Add the highlighted lines to `src-tauri/tauri.conf.json` in the
`tauri.allowlist` section:
```json title="src-tauri/tauri.conf.json"
```json title="src-tauri/tauri.conf.json (add highlighted lines)"
"tauri": {
"allowlist": {
// highlight-start
@ -345,7 +345,7 @@ npm i --save-dev @tauri-apps/cli`}
In the same file, look for the `"identifier"` key and replace the value with `com.sheetjs.tauri`:
```json title="src-tauri/tauri.conf.json"
```json title="src-tauri/tauri.conf.json (edit highlighted line)"
"icons/icon.ico"
],
// highlight-next-line

@ -190,14 +190,14 @@ const save_button_callback = async() => {
This demo was tested in the following environments:
| OS and Version | Architecture | Server | Client | Date |
|:---------------|:-------------|:----------|:----------|:-----------|
| macOS 13.5.1 | `darwin-x64` | `v4.14.1` | `v3.12.0` | 2023-12-13 |
| macOS 14.0 | `darwin-arm` | `v4.14.1` | `v3.12.0` | 2023-10-18 |
| Windows 10 | `win10-x64` | `v4.14.1` | `v3.12.0` | 2023-12-09 |
| Windows 11 | `win11-arm` | `v4.14.1` | `v3.12.0` | 2023-12-01 |
| Linux (HoloOS) | `linux-x64` | `v4.14.1` | `v3.12.0` | 2024-01-26 |
| Linux (Debian) | `linux-arm` | `v4.14.1` | `v3.12.0` | 2023-12-01 |
| OS and Version | Architecture | Server | Client | Date |
|:---------------|:-------------|:---------|:---------|:-----------|
| macOS 14.4 | `darwin-x64` | `5.0.0` | `5.0.1` | 2024-03-15 |
| macOS 14.0 | `darwin-arm` | `4.14.1` | `3.12.0` | 2023-10-18 |
| Windows 10 | `win10-x64` | `4.14.1` | `3.12.0` | 2023-12-09 |
| Windows 11 | `win11-arm` | `4.14.1` | `3.12.0` | 2023-12-01 |
| Linux (HoloOS) | `linux-x64` | `4.14.1` | `3.12.0` | 2024-01-26 |
| Linux (Debian) | `linux-arm` | `4.14.1` | `3.12.0` | 2023-12-01 |
:::

@ -49,7 +49,7 @@ This demo was tested in the following environments:
| Windows 10 | `win10-x64` | `v0.72.16` | 2023-10-27 |
| Windows 11 | `win11-x64` | `v0.72.12` | 2023-10-14 |
| Windows 11 | `win11-arm` | `v0.72.20` | 2023-12-01 |
| MacOS 14.1 | `darwin-x64` | `v0.72.5` | 2023-10-27 |
| MacOS 14.4 | `darwin-x64` | `v0.73.21` | 2024-03-15 |
| MacOS 14.1.2 | `darwin-arm` | `v0.72.11` | 2023-12-01 |
:::
@ -643,7 +643,7 @@ Native for macOS required React Native `0.71`.
**The official documentation is out of date.**
There exist official `react-native-macos` releases compatible with RN `0.72`
There exist official `react-native-macos` releases compatible with RN `0.73`
:::
@ -652,19 +652,38 @@ There exist official `react-native-macos` releases compatible with RN `0.72`
### Project Setup
1) Create a new React Native project using React Native `0.72`:
1) Create a new React Native project using React Native `0.73`:
```bash
npx -y react-native init SheetJSmacOS --template react-native@^0.72.0
npx -y react-native init SheetJSmacOS --template react-native@^0.73.0
cd SheetJSmacOS
```
If prompted to install CocoaPods, type `Y`.
2) Create the MacOS part of the application:
```bash
npx -y react-native-macos-init --no-telemetry
```
:::caution pass
In the most recent x64 test, the build failed due to `visionos` errors:
```
[!] Failed to load 'React-RCTFabric' podspec:
[!] Invalid `React-RCTFabric.podspec` file: undefined method `visionos' for #<Pod::Specification name="React-RCTFabric">.
```
This error was resolved by upgrading CocoaPods to `1.15.2`:
```bash
sudo gem install cocoapods
```
:::
3) Install the SheetJS library:
<CodeBlock language="bash">{`\
@ -679,6 +698,19 @@ npx react-native run-macos
Close the running app from the dock and close the Metro terminal window.
:::warning pass
When the demo was last tested on x64, the app failed with a warning
> No bundle URL present.
**As this affects the default app, this is a bug in React Native macOS!**
The production builds work as expected. If there are errors, the recommended
approach is to [make a release build](#production) every time.
:::
### Native Module
5) Create the file `macos/SheetJSmacOS-macOS/RCTDocumentPicker.h` with the
@ -884,6 +916,16 @@ curl -LO https://docs.sheetjs.com/reactnative/rnm/App.tsx
#### Development
:::info pass
In some test runs, the development mode app failed with a "bundle URL" error:
> No bundle URL present.
The ["Production" section](#production) section covers release builds and tests.
:::
11) Launch the app again:
```bash
@ -899,7 +941,14 @@ Close the running app from the dock and close the Metro terminal window.
#### Production
13) Make a release build:
13) Remove all existing `SheetJSmacOS.app` release builds. They will be stored
in the `~/Library/Developer/Xcode/DerivedData` folder.
```bash
find ~/Library/Developer/Xcode/DerivedData -name SheetJSmacOS.app | grep Release | while read x; do rm -rf "$x"; done
```
14) Make a release build:
```bash
xcodebuild -workspace macos/SheetJSmacOS.xcworkspace -scheme SheetJSmacOS-macOS -config Release
@ -918,13 +967,13 @@ If there are no instances, the app path can be found in the `DerivedData` folder
find ~/Library/Developer/Xcode/DerivedData -name SheetJSmacOS.app | grep Release
```
14) Run the release app:
15) Run the release app:
```bash
open -a "$(find ~/Library/Developer/Xcode/DerivedData -name SheetJSmacOS.app | grep Release | head -n 1)"
```
15) Click "Click here to Open File!" and use the file picker to select
16) Click "Click here to Open File!" and use the file picker to select
`pres.xlsx` from the Downloads folder.
The app will refresh and display the data from the file.

@ -51,7 +51,7 @@ This demo was tested in the following deployments:
| Architecture | Version | NodeJS | Source | Date |
|:-------------|:-------------|:----------|:----------|:-----------|
| `darwin-x64` | `4.0.0-rc.2` | `14.15.3` | Pre-built | 2023-10-10 |
| `darwin-x64` | `4.0.0-rc.4` | `14.15.3` | Pre-built | 2024-03-15 |
| `darwin-arm` | `4.0.0-rc.2` | `18.18.0` | Compiled | 2023-12-01 |
| `win10-x64` | `4.0.0-rc.4` | `14.15.3` | Pre-built | 2024-03-04 |
| `win11-arm` | `4.0.0-rc.2` | `20.10.0` | Compiled | 2023-12-01 |
@ -63,7 +63,7 @@ This demo was tested in the following deployments:
| Architecture | Version | NodeJS | Date |
|:-------------|:--------|:---------|:-----------|
| `darwin-x64` | `5.8.1` | `18.5.0` | 2023-10-11 |
| `darwin-x64` | `5.8.1` | `18.5.0` | 2024-03-15 |
| `darwin-arm` | `5.8.1` | `18.5.0` | 2023-12-01 |
| `win10-x64` | `5.8.1` | `18.5.0` | 2023-10-09 |
| `win11-arm` | `5.8.1` | `18.5.0` | 2023-12-01 |
@ -75,7 +75,7 @@ This demo was tested in the following deployments:
| Architecture | Version | NodeJS | Date |
|:-------------|:--------|:----------|:-----------|
| `darwin-x64` | `2.1.2` | `20.8.0` | 2023-10-12 |
| `darwin-x64` | `2.4.0` | `21.7.1` | 2024-03-15 |
| `darwin-arm` | `2.3.0` | `21.3.0` | 2023-12-01 |
| `win10-x64` | `2.1.2` | `16.20.2` | 2023-10-09 |
| `linux-x64` | `2.3.0` | `21.6.1` | 2024-01-26 |
@ -228,14 +228,14 @@ Run `boxednode`:
<TabItem value="unix" label="Linux/MacOS">
```bash
npx boxednode@2.3.0 -s xlsx-cli.js -t xlsx-cli
npx boxednode@2.4.0 -s xlsx-cli.js -t xlsx-cli
```
</TabItem>
<TabItem value="win" label="Windows">
```bash
npx boxednode@2.1.2 -s xlsx-cli.js -t xlsx-cli.exe -n 16.20.2
npx boxednode@2.4.0 -s xlsx-cli.js -t xlsx-cli.exe -n 16.20.2
```
:::info pass
@ -305,7 +305,7 @@ This demo was last tested in the following deployments:
| Architecture | V8 Version | Crate | Date |
|:-------------|:--------------|:---------|:-----------|
| `darwin-x64` | `11.8.172.13` | `0.79.2` | 2023-10-12 |
| `darwin-x64` | `12.3.219.9` | `0.88.0` | 2024-03-15 |
| `darwin-arm` | `11.8.172.13` | `0.79.2` | 2023-10-18 |
| `win10-x64` | `11.8.172.13` | `0.79.2` | 2023-10-09 |
| `win11-x64` | `11.8.172.13` | `0.79.2` | 2023-10-14 |
@ -416,7 +416,7 @@ This demo was last tested in the following deployments:
| Architecture | Version | Date |
|:-------------|:---------|:-----------|
| `darwin-x64` | `1.37.1` | 2023-10-12 |
| `darwin-x64` | `1.41.3` | 2024-03-15 |
| `darwin-arm` | `1.37.2` | 2023-10-18 |
| `win10-x64` | `1.37.1` | 2023-10-09 |
| `win11-x64` | `1.37.2` | 2023-10-14 |

@ -157,8 +157,8 @@ Browsers that do not support WebSQL will throw errors:
| Browser | Date | Error Message |
|:------------|:-----------|:------------------------------|
| Chrome 120 | 2024-02-11 | `openDatabase is not defined` |
| Safari 17.3 | 2024-02-11 | `Web SQL is deprecated` |
| Firefox 118 | 2023-10-13 | `openDatabase is not defined` |
| Safari 17.4 | 2024-03-15 | `Web SQL is deprecated` |
| Firefox 122 | 2024-03-15 | `openDatabase is not defined` |
:::

@ -130,7 +130,7 @@ This demo was tested in the following deployments:
| Architecture | Version | Date |
|:-------------|:--------|:-----------|
| `darwin-x64` | `2.7.0` | 2023-12-05 |
| `darwin-x64` | `2.7.0` | 2024-03-15 |
| `darwin-arm` | `2.7.0` | 2023-10-18 |
| `win10-x64` | `2.7.0` | 2023-10-27 |
| `win11-arm` | `2.7.0` | 2023-12-01 |
@ -406,16 +406,21 @@ This demo was tested in the following deployments:
| Architecture | Version | PHP Version | Date |
|:-------------|:--------|:------------|:-----------|
| `darwin-x64` | `2.7.0` | `8.3.2` | 2024-01-26 |
| `darwin-x64` | `2.7.0` | `8.3.4` | 2024-03-15 |
| `darwin-arm` | `2.7.0` | `8.3.2` | 2024-02-13 |
| `linux-x64` | `2.7.0` | `8.2.7` | 2024-01-29 |
:::
0) Ensure `php` is installed and available on the system path.
0) Ensure `php` is installed and available on the system path
1) Inspect the `php.ini` configuration file. The location of the file can be
found by running `php --ini`. The following output is from the last macOS test:
1) Find the `php.ini` file:
```bash
php --ini
```
The following output is from the last macOS test:
```text pass
Configuration File (php.ini) Path: /usr/local/etc/php/8.3
@ -425,6 +430,8 @@ Scan for additional .ini files in: /usr/local/etc/php/8.3/conf.d
Additional .ini files parsed: /usr/local/etc/php/8.3/conf.d/ext-opcache.ini
```
2) Edit the `php.ini` configuration file.
The following line should appear in the configuration:
```ini title="php.ini (add to end)"
@ -434,7 +441,7 @@ extension=ffi
If this line is prefixed with a `;`, remove the semicolon. If this line does not
appear in the file, add it to the end.
2) Build the Duktape shared library:
3) Build the Duktape shared library:
```bash
curl -LO https://duktape.org/duktape-2.7.0.tar.xz
@ -444,7 +451,7 @@ make -f Makefile.sharedlibrary
cd ..
```
3) Copy the shared library to the current folder. When the demo was last tested,
4) Copy the shared library to the current folder. When the demo was last tested,
the shared library file name differed by platform:
| OS | name |
@ -456,7 +463,7 @@ the shared library file name differed by platform:
cp duktape-*/libduktape.* .
```
4) Download the SheetJS Standalone script, shim script and test file. Move all
5) Download the SheetJS Standalone script, shim script and test file. Move all
three files to the project directory:
<ul>
@ -471,13 +478,13 @@ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js
curl -LO https://sheetjs.com/pres.numbers`}
</CodeBlock>
5) Download [`SheetJSDuk.php`](pathname:///duk/SheetJSDuk.php):
6) Download [`SheetJSDuk.php`](pathname:///duk/SheetJSDuk.php):
```bash
curl -LO https://docs.sheetjs.com/duk/SheetJSDuk.php
```
6) Edit the `SheetJSDuk.php` script.
7) Edit the `SheetJSDuk.php` script.
The `$sofile` variable declares the path to the library:
@ -511,7 +518,7 @@ $sofile = './libduktape.so.207.20700';
</TabItem>
</Tabs>
7) Run the script:
8) Run the script:
```bash
php SheetJSDuk.php pres.numbers
@ -533,7 +540,7 @@ This demo was tested in the following deployments:
| Architecture | Version | Python | Date |
|:-------------|:--------|:---------|:-----------|
| `darwin-x64` | `2.7.0` | `3.11.7` | 2024-01-29 |
| `darwin-x64` | `2.7.0` | `3.12.2` | 2024-03-15 |
| `darwin-arm` | `2.7.0` | `3.11.7` | 2024-02-13 |
| `linux-x64` | `2.7.0` | `3.11.3` | 2024-01-29 |
@ -937,7 +944,7 @@ This demo was tested in the following deployments:
| Architecture | Version | Date |
|:-------------|:--------|:-----------|
| `darwin-x64` | `2.2.0` | 2024-01-26 |
| `darwin-x64` | `2.2.0` | 2024-03-15 |
| `darwin-arm` | `2.2.0` | 2024-02-13 |
| `linux-x64` | `2.2.0` | 2024-01-26 |

@ -124,7 +124,7 @@ This demo was tested in the following deployments:
| V8 Version | Platform | OS Version | Compiler | Date |
|:--------------|:-------------|:--------------|:-----------------|:-----------|
| `12.1.131` | `darwin-x64` | macOS 14.1 | `clang 15.0.0` | 2023-11-15 |
| `12.4.253` | `darwin-x64` | macOS 14.4 | `clang 15.0.0` | 2024-03-15 |
| `12.1.283` | `darwin-arm` | macOS 14.1.2 | `clang 15.0.0` | 2023-12-01 |
| `12.0.265` | `win10-x64` | Windows 10 | `CL 19.37.32822` | 2023-10-28 |
| `12.3.50` | `linux-x64` | HoloOS 3.5.7 | `gcc 13.1.1` | 2024-01-26 |
@ -406,11 +406,11 @@ The recommended fix is to delete the referenced folder and re-run `gclient sync`
</Tabs>
5) Checkout the desired version. The following command pulls `12.3.50`:
5) Checkout the desired version. The following command pulls `12.4.253`:
```bash
git checkout tags/12.3.50 -b sample
git checkout tags/12.4.253 -b sample
```
:::caution pass
@ -418,14 +418,14 @@ git checkout tags/12.3.50 -b sample
The official documentation recommends:
```bash
git checkout refs/tags/12.3.50 -b sample -t
git checkout refs/tags/12.4.253 -b sample -t
```
This command failed in local testing:
```
E:\v8\v8>git checkout refs/tags/12.3.50 -b sample -t
fatal: cannot set up tracking information; starting point 'refs/tags/12.3.50' is not a branch
E:\v8\v8>git checkout refs/tags/12.4.253 -b sample -t
fatal: cannot set up tracking information; starting point 'refs/tags/12.4.253' is not a branch
```
:::
@ -564,11 +564,24 @@ ninja -C out.gn\x64.release.sample v8_monolith
```bash
g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
-lv8_libbase -lv8_libplatform -ldl -Lout.gn/x64.release.sample/obj/ -pthread \
-ldl -Lout.gn/x64.release.sample/obj/ -pthread \
-std=c++17 -DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
./hello_world
```
:::info pass
In older V8 versions, the flags `-lv8_libbase -lv8_libplatform` were required.
Linking against `libv8_libbase` or `libv8_libplatform` in V8 version `12.4.253`
elicited linker errors:
```
ld: multiple errors: unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
```
:::
</TabItem>
<TabItem value="darwin-arm" label="ARM64 Mac">
@ -706,6 +719,25 @@ g++ -I. -Iinclude hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
./hello_world
```
:::caution pass
In some V8 versions, the command failed in the linker stage:
```
ld: multiple errors: unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
```
The build succeeds after removing `libv8_libbase` and `libv8_libplatform`:
```bash
g++ -I. -Iinclude hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
-ldl -Lobj/ -pthread -std=c++17 \
-DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
./hello_world
```
:::
</TabItem>
<TabItem value="win" label="Windows">
@ -749,6 +781,24 @@ g++ -I. -Iinclude sheetjs.v8.cc -o sheetjs.v8 -fno-rtti -lv8_monolith \
-DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
```
:::caution pass
In some V8 versions, the command failed in the linker stage:
```
ld: multiple errors: unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
```
The build succeeds after removing `libv8_libbase` and `libv8_libplatform`:
```bash
g++ -I. -Iinclude sheetjs.v8.cc -o sheetjs.v8 -fno-rtti -lv8_monolith \
-ldl -Lobj/ -pthread -std=c++17 \
-DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
```
:::
</TabItem>
<TabItem value="win" label="Windows">
@ -813,7 +863,7 @@ This demo was last tested in the following deployments:
| Architecture | V8 Crate | Date |
|:-------------|:---------|:-----------|
| `darwin-x64` | `0.81.0` | 2023-11-14 |
| `darwin-x64` | `0.88.0` | 2024-03-15 |
| `darwin-arm` | `0.82.0` | 2023-12-01 |
| `win10-x64` | `0.81.0` | 2023-11-14 |
| `linux-x64` | `0.83.1` | 2024-01-26 |

@ -133,7 +133,7 @@ This demo was tested in the following environments:
| Architecture | Swift | Date |
|:-------------|:--------|:-----------|
| `darwin-x64` | `5.9.2` | 2024-02-21 |
| `darwin-x64` | `5.10` | 2024-03-15 |
| `darwin-arm` | `5.9.2` | 2024-02-21 |
:::

@ -41,7 +41,7 @@ setting the environment variable on supported platforms.
:::note pass
Most of the integration functions are not documented. This explanation is based
on version `3.0.0`.
on version `3.0.1`.
:::
@ -163,7 +163,7 @@ This demo was tested in the following deployments:
| Architecture | Jint Version | Date |
|:-------------|:------------------|:-----------|
| `darwin-x64` | `3.0.0` | 2024-01-22 |
| `darwin-x64` | `3.0.1` | 2024-03-15 |
| `darwin-arm` | `3.0.0-beta-2056` | 2023-12-01 |
| `win10-x64` | `3.0.0` | 2024-03-04 |
| `win11-arm` | `3.0.0-beta-2056` | 2023-12-01 |
@ -183,7 +183,7 @@ This demo was tested in the following deployments:
Add the following line to `.profile`, `.bashrc` and `.zshrc`:
```bash
```bash title="(add to .profile , .bashrc , and .zshrc)"
export DOTNET_CLI_TELEMETRY_OPTOUT=1
```
@ -246,7 +246,7 @@ dotnet run
```bash
dotnet nuget add source https://www.myget.org/F/jint/api/v3/index.json
dotnet add package Jint --version 3.0.0
dotnet add package Jint --version 3.0.1
```
To verify Jint is installed, replace `Program.cs` with the following:
@ -382,11 +382,7 @@ tested platforms are listed below:
| Linux (x64) | `linux-x64` |
| Linux (ARM) | `linux-arm64` |
9) Build the standalone application. Replace `$RID` with the real value in:
```bash
dotnet publish -c Release -r $RID --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
```
9) Build the standalone application.
<details open><summary><b>Tested platforms</b> (click to hide)</summary>
@ -463,7 +459,7 @@ The last line of the output from Step 9 will print the output folder.
For Intel Mac, the RID is `osx-x64` and the command is:
```bash
cp bin/Release/net6.0/osx-x64/publish/SheetJSJint .
cp bin/Release/net*/osx-x64/publish/SheetJSJint .
```
</TabItem>

@ -94,7 +94,7 @@ This demo was tested in the following deployments:
| Architecture | Git Commit | Go version | Date |
|:-------------|:-----------|:-----------|:-----------|
| `darwin-x64` | `873a149` | `1.21.3` | 2023-10-14 |
| `darwin-x64` | `e401ed4` | `1.22.1` | 2024-03-15 |
| `darwin-arm` | `873a149` | `1.21.3` | 2023-10-18 |
| `win10-x64` | `b396bb4` | `1.21.3` | 2023-10-28 |
| `win11-arm` | `b396bb4` | `1.21.1` | 2023-12-01 |

@ -27,7 +27,7 @@ command-line tool for reading data from files.
:::note pass
Many QuickJS functions are not documented. The explanation was verified against
the latest release (commit `9e561d5`).
the latest release (commit `6a89d7c`).
:::
@ -262,7 +262,7 @@ This demo was tested in the following deployments:
| Architecture | Git Commit | Date |
|:-------------|:-----------|:-----------|
| `darwin-x64` | `daa35bc` | 2023-12-09 |
| `darwin-x64` | `6a89d7c` | 2024-03-15 |
| `darwin-arm` | `2788d71` | 2023-10-18 |
| `win10-x64` | `9e561d5` | 2024-03-04 |
| `win11-arm` | `03cc5ec` | 2023-12-01 |
@ -285,7 +285,7 @@ tests were run entirely within Windows Subsystem for Linux.
```bash
git clone https://github.com/bellard/quickjs
cd quickjs
git checkout 9e561d5
git checkout 6a89d7c
make
cd ..
```

@ -28,7 +28,7 @@ command-line tool for reading data from files.
:::info pass
Many Hermes functions are not documented. The explanation was verified against
commit `90e2b47`.
commit `15b323d`.
:::
@ -364,7 +364,7 @@ This demo was tested in the following deployments:
| Architecture | Git Commit | Date |
|:-------------|:-----------|:-----------|
| `darwin-x64` | `84732b3` | 2023-11-14 |
| `darwin-x64` | `15b323d` | 2024-03-15 |
| `darwin-arm` | `2b4f949` | 2023-10-18 |
| `linux-x64` | `90e2b47` | 2024-01-26 |
| `linux-arm` | `84732b3` | 2023-12-01 |
@ -433,7 +433,7 @@ make init
:::caution pass
During the most recent macOS x64 test, the build failed due to Ninja issues:
In some macOS x64 test runs, the build failed due to Ninja issues:
```
CMake Error at CMakeLists.txt:64 (project):

@ -70,7 +70,7 @@ This demo was tested in the following deployments:
| Platform | Ruby | ExecJS | Date |
|:-------------|:---------|:--------|:-----------|
| `darwin-x64` | `2.6.10` | `2.9.1` | 2023-11-14 |
| `darwin-x64` | `2.6.10` | `2.9.1` | 2024-03-15 |
| `darwin-arm` | `2.6.10` | `2.9.1` | 2023-12-01 |
| `win10-x64` | `3.2.3` | `2.9.1` | 2024-03-10 |
| `win11-arm` | `3.0.2` | `2.9.1` | 2023-12-01 |

@ -132,7 +132,7 @@ This demo was tested in the following deployments:
| Architecture | Git Commit | Date |
|:-------------|:-----------|:-----------|
| `darwin-x64` | `c3ead3f` | 2023-11-04 |
| `darwin-x64` | `c3ead3f` | 2024-03-15 |
| `darwin-arm` | `c3ead3f` | 2023-10-19 |
| `win10-x64` | `c3ead3f` | 2024-03-04 |
| `linux-x64` | `c3ead3f` | 2024-01-26 |
@ -195,9 +195,9 @@ cd ChakraCore
cd ..
```
:::caution pass
:::note pass
When this demo was last tested, the build failed with the message:
In some test runs, the build failed with the message:
```
!!! couldn't find ICU ...
@ -230,9 +230,9 @@ cd ..
```
:::caution pass
:::note pass
When this demo was last tested, the build failed with the message:
In some test runs, the build failed with the message:
```
!!! couldn't find ICU ...
@ -344,7 +344,7 @@ make
:::caution pass
When this demo was last tested on macOS, the build failed with the message:
In some macOS test runs, the build failed with the message:
```
clang: error: no such file or directory: '/usr/local/opt/icu4c/lib/libicudata.a'
@ -411,7 +411,7 @@ If successful, the program will print the contents of the first sheet as CSV.
:::note Tested Deployments
This demo was last tested on 2023-10-28 against `ch` commit `c3ead3f`.
This demo was last tested on 2024-03-15 against `ch` commit `c3ead3f`.
:::

@ -61,7 +61,7 @@ Boa provides a special helper to read source code from a path:
```rust
use std::path::Path;
use std::string::String;
use boa_engine::{Context, Source, JsError};
use boa_engine::{js_string, Context, Source, JsError};
/* simple wrapper to evaluate an entire script file */
fn eval_file(c: &mut Context, path: &str) -> Result<String, JsError> {
@ -100,7 +100,7 @@ Boa supports `ArrayBuffer` natively. This snippet reads data from a file into
let data: Vec<u8> = fs::read("pres.xlsx").unwrap();
let array: JsArrayBuffer = JsArrayBuffer::from_byte_block(data, context).unwrap();
let attrs = Attribute::WRITABLE | Attribute::ENUMERABLE | Attribute::CONFIGURABLE;
context.register_global_property("buf", array, attrs);
context.register_global_property(js_string!("buf"), array, attrs);
/* parse with SheetJS */
match eval_code(context, "void (globalThis.wb = XLSX.read(buf))") {
@ -118,14 +118,14 @@ various SheetJS API functions.
This demo was tested in the following deployments:
| Architecture | Date |
|:-------------|:-----------|
| `darwin-x64` | 2023-11-03 |
| `darwin-arm` | 2023-10-20 |
| `win10-x64` | 2024-03-04 |
| `win11-arm` | 2023-12-01 |
| `linux-x64` | 2024-01-26 |
| `linux-arm` | 2023-12-01 |
| Architecture | Boa | Date |
|:-------------|:---------|:-----------|
| `darwin-x64` | `0.18.0` | 2024-03-15 |
| `darwin-arm` | `0.17.3` | 2023-10-20 |
| `win10-x64` | `0.17.3` | 2024-03-04 |
| `win11-arm` | `0.17.3` | 2023-12-01 |
| `linux-x64` | `0.17.3` | 2024-01-26 |
| `linux-arm` | `0.17.3` | 2023-12-01 |
:::

@ -36,7 +36,7 @@ This demo was tested in the following environments:
| Architecture | Commit | Date |
|:-------------|:----------|:-----------|
| `darwin-x64` | `514fa67` | 2024-01-22 |
| `darwin-x64` | `cefd391` | 2024-03-15 |
| `darwin-arm` | `ef4cb2b` | 2023-12-08 |
| `win11-x64` | `ef4cb2b` | 2023-12-08 |
| `win11-arm` | `ef4cb2b` | 2023-12-08 |
@ -361,7 +361,7 @@ cd SheetJSJerry
```bash
git clone --depth=1 https://github.com/jerryscript-project/jerryscript.git
cd jerryscript
python tools/build.py --error-messages=ON --logging=ON --mem-heap=8192 --cpointer-32bit=ON
python3 tools/build.py --error-messages=ON --logging=ON --mem-heap=8192 --cpointer-32bit=ON
cd ..
```
@ -410,12 +410,25 @@ as a Base64 string and directly add it to an amalgamated script.
:::
0) Build the library and command line tool with required options:
0) Build the library and command line tool with required options.
:::info pass
The "Integration Example" builds JerryScript. The CLI test must be run from the
repo folder.
```bash
cd jerryscript
```
:::
If the "Integration Example" was not tested, run the following commands:
```bash
git clone --depth=1 https://github.com/jerryscript-project/jerryscript.git
cd jerryscript
python tools/build.py --error-messages=ON --logging=ON --mem-heap=8192 --cpointer-32bit=ON
python3 tools/build.py --error-messages=ON --logging=ON --mem-heap=8192 --cpointer-32bit=ON
```
1) Download the SheetJS Standalone script, shim script and test file. Move all

@ -41,7 +41,7 @@ These instructions were tested on the following platforms:
|:------------------------------|:-------------|:-----------|
| Linux (Steam Deck Holo x64) | `linux-x64` | 2024-01-26 |
| Linux (Ubuntu 18 AArch64) | `linux-arm` | 2023-12-01 |
| MacOS 10.13.6 (x64) | `darwin-x64` | 2023-09-30 |
| MacOS 14.4 (x64) | `darwin-x64` | 2024-03-15 |
| MacOS 14.1.2 (ARM64) | `darwin-arm` | 2023-12-01 |
| Windows 10 (x64) + WSL Ubuntu | `win10-x64` | 2024-03-04 |
| Windows 11 (x64) + WSL Ubuntu | `win11-x64` | 2023-10-14 |
@ -269,13 +269,7 @@ brew analytics state
The message should state that analytics are disabled or destroyed.
D) Install Mercurial and Subversion:
```bash
brew install mercurial subversion
```
E) Install NodeJS.
D) Install NodeJS.
:::note pass

@ -3,7 +3,7 @@ use std::path::Path;
use std::string::String;
use std::fs;
use boa_engine::{Context, Source, JsError};
use boa_engine::{js_string, Context, Source, JsError};
use boa_engine::object::builtins::JsArrayBuffer;
use boa_engine::property::Attribute;
@ -42,7 +42,7 @@ fn main() {
let data: Vec<u8> = fs::read("pres.xlsx").unwrap();
let array: JsArrayBuffer = JsArrayBuffer::from_byte_block(data, context).unwrap();
let attrs = Attribute::WRITABLE | Attribute::ENUMERABLE | Attribute::CONFIGURABLE;
context.register_global_property("buf", array, attrs);
context.register_global_property(js_string!("buf"), array, attrs);
/* parse workbook and assign to global `wb` property */
match eval_code(context, "void (globalThis.wb = XLSX.read(buf))") {

@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
v8 = "0.83.1"
v8 = "0.88.0"
[[bin]]
name = "sheet2csv"

@ -15,12 +15,12 @@
"make": "electron-forge make"
},
"devDependencies": {
"@electron-forge/cli": "7.2.0",
"@electron-forge/maker-deb": "7.2.0",
"@electron-forge/maker-rpm": "7.2.0",
"@electron-forge/maker-squirrel": "7.2.0",
"@electron-forge/maker-zip": "7.2.0",
"electron": "28.2.0"
"@electron-forge/cli": "7.3.0",
"@electron-forge/maker-deb": "7.3.0",
"@electron-forge/maker-rpm": "7.3.0",
"@electron-forge/maker-squirrel": "7.3.0",
"@electron-forge/maker-zip": "7.3.0",
"electron": "29.1.4"
},
"config": {
"forge": {

@ -1,5 +1,5 @@
# Note: The official Hermes documentation includes zero guidance on embedding.
# Tested against commit 90e2b470b5f8ee8f64fd928ab0b75ee14190e6bb
# Tested against commit 15b323dda2c92ff863508568f73e8bb4a305df30
MYCC=llvm-g++
POSTAMBLE=-framework CoreFoundation -Wl,-rpath .
@ -70,5 +70,5 @@ sheetjs-hermes.cpp:
.PHONY: init
init:
if [ ! -e hermes ]; then git clone https://github.com/facebook/hermes.git; cd hermes; git checkout 90e2b470b5f8ee8f64fd928ab0b75ee14190e6bb; cd ..; fi
if [ ! -e hermes ]; then git clone https://github.com/facebook/hermes.git; cd hermes; git checkout 15b323dda2c92ff863508568f73e8bb4a305df30; cd ..; fi
if [ ! -e build_release ]; then cmake -S hermes -B build_release -G Ninja -DCMAKE_BUILD_TYPE=Release -DHERMES_BUILD_APPLE_FRAMEWORK=OFF; cmake --build ./build_release; fi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 168 KiB