forked from sheetjs/docs.sheetjs.com
		
	v8
This commit is contained in:
		
							parent
							
								
									18bfc66fac
								
							
						
					
					
						commit
						79aacab553
					
				@ -113,10 +113,11 @@ This demo was tested in the following environments:
 | 
			
		||||
 | 
			
		||||
| OS and Version | Arch | NW.js    | Date       |
 | 
			
		||||
|:---------------|:-----|:---------|:-----------|
 | 
			
		||||
| macOS 13.4.1   | x64  | `0.78.0` | 2023-07-27 |
 | 
			
		||||
| Windows 10     | x64  | `0.78.0` | 2023-07-27 |
 | 
			
		||||
| Windows 10     | ARM  | `0.80.0` | 2023-09-25 |
 | 
			
		||||
| Linux (HoloOS) | x64  | `0.78.0` | 2023-07-27 |
 | 
			
		||||
| macOS 13.5.2   | x64  | `0.78.1` | 2023-09-27 |
 | 
			
		||||
| macOS 13.5.2   | ARM  | `0.78.1` | 2023-09-27 |
 | 
			
		||||
| Windows 10     | x64  | `0.78.1` | 2023-09-27 |
 | 
			
		||||
| Windows 11     | ARM  | `0.78.1` | 2023-09-27 |
 | 
			
		||||
| Linux (HoloOS) | x64  | `0.78.1` | 2023-09-27 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
@ -129,7 +130,7 @@ This demo was tested in the following environments:
 | 
			
		||||
  "version": "0.0.0",
 | 
			
		||||
  "main": "index.html",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "nw": "~0.80.0",
 | 
			
		||||
    "nw": "0.78.1",
 | 
			
		||||
    "xlsx": "https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz"
 | 
			
		||||
  }
 | 
			
		||||
}`}
 | 
			
		||||
@ -150,7 +151,11 @@ In the terminal window, the download can be performed with:
 | 
			
		||||
curl -LO https://docs.sheetjs.com/nwjs/index.html
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
3) Run `npm i` to install dependencies
 | 
			
		||||
3) Install dependencies:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
npm i
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
4) To verify the app works, run in the test environment:
 | 
			
		||||
 | 
			
		||||
@ -164,7 +169,7 @@ the file input element to select a spreadsheet and clicking the export button.
 | 
			
		||||
5) To build a standalone app, run the builder:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
npx -p nw-builder nwbuild --mode=build --glob=false --outDir=../out ./
 | 
			
		||||
npx -p nw-builder nwbuild --mode=build --version=0.78.1 --glob=false --outDir=../out ./
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This will generate the standalone app in the `..\build\sheetjs-nwjs\` folder.
 | 
			
		||||
This will generate the standalone app in the `..\out\` folder.
 | 
			
		||||
@ -260,7 +260,9 @@ This demo was tested in the following environments:
 | 
			
		||||
| macOS 13.4.0   | x64  | `v1.4.0` | 2023-06-25 |
 | 
			
		||||
| macOS 13.4.1   | ARM  | `v1.4.0` | 2023-06-29 |
 | 
			
		||||
| Windows 10     | x64  | `v1.4.1` | 2023-07-30 |
 | 
			
		||||
| Windows 11     | ARM  | `v1.4.1` | 2023-09-26 |
 | 
			
		||||
| Linux (HoloOS) | x64  | `v1.4.1` | 2023-07-30 |
 | 
			
		||||
| Linux (Debian) | ARM  | `v1.4.1` | 2023-09-26 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -345,6 +345,7 @@ This demo was last tested in the following deployments:
 | 
			
		||||
| `darwin-x64` | `1.33.2` | 2023-05-08 |
 | 
			
		||||
| `darwin-arm` | `1.34.1` | 2023-06-05 |
 | 
			
		||||
| `win10-x64`  | `1.33.2` | 2023-05-08 |
 | 
			
		||||
| `win11-arm`  | `1.37.0` | 2023-09-26 |
 | 
			
		||||
| `linux-x64`  | `1.33.2` | 2023-05-08 |
 | 
			
		||||
| `linux-arm`  | `1.36.3` | 2023-08-30 |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,8 @@ pagination_next: solutions/input
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
import current from '/version.js';
 | 
			
		||||
import Tabs from '@theme/Tabs';
 | 
			
		||||
import TabItem from '@theme/TabItem';
 | 
			
		||||
import CodeBlock from '@theme/CodeBlock';
 | 
			
		||||
 | 
			
		||||
Duktape is an embeddable JS engine written in C. It has been ported to a number
 | 
			
		||||
@ -120,6 +122,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| `darwin-x64` | `2.7.0` | 2023-07-24 |
 | 
			
		||||
| `darwin-arm` | `2.7.0` | 2023-06-05 |
 | 
			
		||||
| `win10-x64`  | `2.7.0` | 2023-07-24 |
 | 
			
		||||
| `win11-arm`  | `2.7.0` | 2023-09-26 |
 | 
			
		||||
| `linux-x64`  | `2.7.0` | 2023-09-22 |
 | 
			
		||||
| `linux-arm`  | `2.7.0` | 2023-08-30 |
 | 
			
		||||
 | 
			
		||||
@ -163,16 +166,42 @@ curl -LO https://docs.sheetjs.com/duk/sheetjs.duk.c
 | 
			
		||||
 | 
			
		||||
3) Compile standalone `sheetjs.duk` binary
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="os">
 | 
			
		||||
  <TabItem value="unix" label="Linux/MacOS">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
gcc -std=c99 -Wall -osheetjs.duk sheetjs.duk.c duktape.c -lm
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="win" label="Windows">
 | 
			
		||||
 | 
			
		||||
```powershell
 | 
			
		||||
cl sheetjs.duk.c duktape.c /I .\
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
</Tabs>
 | 
			
		||||
 | 
			
		||||
4) Run the demo:
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="os">
 | 
			
		||||
  <TabItem value="unix" label="Linux/MacOS">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
./sheetjs.duk pres.numbers
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="win" label="Windows">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
.\sheetjs.duk.exe pres.numbers
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
</Tabs>
 | 
			
		||||
 | 
			
		||||
If the program succeeded, the CSV contents will be printed to console and the
 | 
			
		||||
file `sheetjsw.xlsb` will be created.  That file can be opened with Excel.
 | 
			
		||||
 | 
			
		||||
@ -128,6 +128,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| `11.8.82`     | `darwin-arm` | macOS 13.5.1 | `clang 14.0.3`   | 2023-08-26 |
 | 
			
		||||
| `11.8.82`     | `win10-x64`  | Windows 10   | `CL 19.37.32822` | 2023-08-26 |
 | 
			
		||||
| `11.8.82`     | `linux-x64`  | HoloOS 3.4.8 | `gcc 12.2.0`     | 2023-08-26 |
 | 
			
		||||
| `11.8.82`     | `linux-arm`  | Debian 11    | `gcc 10.2.1`     | 2023-09-26 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
@ -435,7 +436,7 @@ fatal: cannot set up tracking information; starting point 'refs/tags/11.8.82' is
 | 
			
		||||
6) Build the static library.
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="triple">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac / Linux">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
tools/dev/v8gen.py x64.release.sample
 | 
			
		||||
@ -443,11 +444,38 @@ ninja -C out.gn/x64.release.sample v8_monolith
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
  <TabItem value="darwin-arm" label="ARM64 Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
tools/dev/v8gen.py arm64.release.sample
 | 
			
		||||
ninja -C out.gn/arm64.release.sample v8_monolith
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="linux-x64" label="Linux x64">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
tools/dev/v8gen.py x64.release.sample
 | 
			
		||||
ninja -C out.gn/x64.release.sample v8_monolith
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="linux-arm" label="Linux ARM">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
tools/dev/v8gen.py arm64.release.sample
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Append the following line to `out.gn/arm64.release.sample/args.gn`:
 | 
			
		||||
 | 
			
		||||
```text title="out.gn/arm64.release.sample/args.gn (add to file)"
 | 
			
		||||
is_clang = false
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Run the build:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ninja -C out.gn/arm64.release.sample v8_monolith
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
@ -504,7 +532,7 @@ treat_warnings_as_errors = false
 | 
			
		||||
7) Ensure the sample `hello-world` compiles and runs:
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="triple">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac / Linux">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
 | 
			
		||||
@ -514,7 +542,27 @@ g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
  <TabItem value="darwin-arm" label="ARM64 Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
 | 
			
		||||
    -lv8_libbase -lv8_libplatform -ldl -Lout.gn/arm64.release.sample/obj/ -pthread \
 | 
			
		||||
    -std=c++17 -DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
 | 
			
		||||
./hello_world
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="linux-x64" label="Linux x64">
 | 
			
		||||
 | 
			
		||||
```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 \
 | 
			
		||||
    -std=c++17 -DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
 | 
			
		||||
./hello_world
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="linux-arm" label="Linux ARM">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
 | 
			
		||||
@ -572,7 +620,7 @@ cp ~/dev/v8/v8/samples/hello-world.cc .
 | 
			
		||||
10) Create symbolic links to the `include` headers and `obj` library folders:
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="triple">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac / Linux">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ln -s ~/dev/v8/v8/include
 | 
			
		||||
@ -580,7 +628,23 @@ ln -s ~/dev/v8/v8/out.gn/x64.release.sample/obj
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
  <TabItem value="darwin-arm" label="ARM64 Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ln -s ~/dev/v8/v8/include
 | 
			
		||||
ln -s ~/dev/v8/v8/out.gn/arm64.release.sample/obj
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="linux-x64" label="Linux x64">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ln -s ~/dev/v8/v8/include
 | 
			
		||||
ln -s ~/dev/v8/v8/out.gn/x64.release.sample/obj
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="linux-arm" label="Linux ARM">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ln -s ~/dev/v8/v8/include
 | 
			
		||||
@ -164,16 +164,17 @@ This demo was tested in the following deployments:
 | 
			
		||||
| Architecture | Jint Version      | Date       |
 | 
			
		||||
|:-------------|:------------------|:-----------|
 | 
			
		||||
| `darwin-x64` | `3.0.0-beta-2051` | 2023-09-16 |
 | 
			
		||||
| `darwin-arm` | `3.0.0-beta-2051` | 2023-09-26 |
 | 
			
		||||
| `win10-x64`  | `3.0.0-beta-2051` | 2023-09-16 |
 | 
			
		||||
| `win11-arm`  | `3.0.0-beta-2051` | 2023-09-26 |
 | 
			
		||||
| `linux-x64`  | `3.0.0-beta-2051` | 2023-09-22 |
 | 
			
		||||
| `linux-arm`  | `3.0.0-beta-2051` | 2023-09-26 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
0) Install .NET[^5]
 | 
			
		||||
 | 
			
		||||
### Platform Configuration
 | 
			
		||||
 | 
			
		||||
1) Set the `DOTNET_CLI_TELEMETRY_OPTOUT` environment variable to `1`.
 | 
			
		||||
0) Set the `DOTNET_CLI_TELEMETRY_OPTOUT` environment variable to `1`.
 | 
			
		||||
 | 
			
		||||
<details open><summary><b>How to disable telemetry</b> (click to hide)</summary>
 | 
			
		||||
 | 
			
		||||
@ -206,6 +207,20 @@ Click "OK" in each window (3 windows) and restart your computer.
 | 
			
		||||
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
1) Install .NET
 | 
			
		||||
 | 
			
		||||
<details><summary><b>Installation Notes</b> (click to show)</summary>
 | 
			
		||||
 | 
			
		||||
For macOS x64 and ARM64, install with Homebrew: `brew install dotnet@6`
 | 
			
		||||
 | 
			
		||||
For Steam Deck Holo and other Arch Linux x64 distributions, the `dotnet-sdk` and
 | 
			
		||||
`dotnet-runtime` packages should be installed using `pacman`.
 | 
			
		||||
 | 
			
		||||
<https://dotnet.microsoft.com/en-us/download/dotnet/6.0> is the official source
 | 
			
		||||
for Windows and ARM64 Linux versions.
 | 
			
		||||
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
2) Open a new Terminal window in macOS or PowerShell window in Windows.
 | 
			
		||||
 | 
			
		||||
### Base Project
 | 
			
		||||
@ -213,7 +228,6 @@ Click "OK" in each window (3 windows) and restart your computer.
 | 
			
		||||
3) Create a new folder `SheetJSJint` and a new project using the `dotnet` tool:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
rm -rf SheetJSJint
 | 
			
		||||
mkdir SheetJSJint
 | 
			
		||||
cd SheetJSJint
 | 
			
		||||
dotnet new console --framework net6.0
 | 
			
		||||
@ -331,14 +345,17 @@ If the `using Jint;` directive is omitted, the build will fail:
 | 
			
		||||
 | 
			
		||||
### Standalone Application
 | 
			
		||||
 | 
			
		||||
8) Find the runtime identifier (RID) for your platform[^6]. The RID values for
 | 
			
		||||
8) Find the runtime identifier (RID) for your platform[^5]. The RID values for
 | 
			
		||||
tested platforms are listed below:
 | 
			
		||||
 | 
			
		||||
| Platform         | RID         |
 | 
			
		||||
|:-----------------|:------------|
 | 
			
		||||
| Intel Mac        | `osx-x64`   |
 | 
			
		||||
| Windows 10 (x64) | `win10-x64` |
 | 
			
		||||
| Linux (x64)      | `linux-x64` |
 | 
			
		||||
| Platform         | RID           |
 | 
			
		||||
|:-----------------|:--------------|
 | 
			
		||||
| Intel Mac        | `osx-x64`     |
 | 
			
		||||
| ARM64 Mac        | `osx-arm64`   |
 | 
			
		||||
| Windows 10 (x64) | `win10-x64`   |
 | 
			
		||||
| Windows 11 (ARM) | `win-arm64`   |
 | 
			
		||||
| Linux (x64)      | `linux-x64`   |
 | 
			
		||||
| Linux (ARM)      | `linux-arm64` |
 | 
			
		||||
 | 
			
		||||
9) Build the standalone application. Replace `$RID` with the real value in:
 | 
			
		||||
 | 
			
		||||
@ -355,6 +372,15 @@ For Intel Mac, the RID is `osx-x64` and the command is
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
dotnet publish -c Release -r osx-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="ARM64 Mac">
 | 
			
		||||
 | 
			
		||||
For Apple Silicon, the RID is `osx-arm64` and the command is
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
dotnet publish -c Release -r osx-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
@ -364,6 +390,15 @@ For x64 Linux, the RID is `linux-x64` and the command is
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="linux-arm" label="Linux ARM">
 | 
			
		||||
 | 
			
		||||
For x64 Linux, the RID is `linux-arm64` and the command is
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
dotnet publish -c Release -r linux-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
@ -373,6 +408,15 @@ For Windows 10 x64, the RID is `win10-x64` and the command is:
 | 
			
		||||
 | 
			
		||||
```powershell
 | 
			
		||||
dotnet publish -c Release -r win10-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="win11-arm" label="Windows ARM">
 | 
			
		||||
 | 
			
		||||
For Windows 11 ARM64, the RID is `win-arm64` and the command is:
 | 
			
		||||
 | 
			
		||||
```powershell
 | 
			
		||||
dotnet publish -c Release -r win-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
@ -394,6 +438,15 @@ For Intel Mac, the RID is `osx-x64` and the command is:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cp bin/Release/net6.0/osx-x64/publish/SheetJSJint .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="ARM64 Mac">
 | 
			
		||||
 | 
			
		||||
For Apple Silicon, the RID is `osx-arm64` and the command is:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cp bin/Release/net6.0/osx-arm64/publish/SheetJSJint .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
@ -403,6 +456,15 @@ For x64 Linux, the RID is `linux-x64` and the command is
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cp bin/Release/net6.0/linux-x64/publish/SheetJSJint .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="linux-arm" label="Linux ARM">
 | 
			
		||||
 | 
			
		||||
For x64 Linux, the RID is `linux-arm64` and the command is
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cp bin/Release/net6.0/linux-arm64/publish/SheetJSJint .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
@ -412,6 +474,15 @@ For Windows 10 x64, the RID is `win10-x64` and the command is:
 | 
			
		||||
 | 
			
		||||
```powershell
 | 
			
		||||
copy .\bin\Release\net6.0\win10-x64\publish\SheetJSJint.exe .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="win11-arm" label="Windows ARM">
 | 
			
		||||
 | 
			
		||||
For Windows 11 ARM64, the RID is `win-arm64` and the command is:
 | 
			
		||||
 | 
			
		||||
```powershell
 | 
			
		||||
copy .\bin\Release\net6.0\win-arm64\publish\SheetJSJint.exe .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
@ -442,5 +513,4 @@ copy .\bin\Release\net6.0\win10-x64\publish\SheetJSJint.exe .
 | 
			
		||||
[^2]: See [`read` in "Reading Files"](/docs/api/parse-options)
 | 
			
		||||
[^3]: See [`write` in "Writing Files"](/docs/api/write-options)
 | 
			
		||||
[^4]: See ["Supported Output Formats" in "Writing Files"](/docs/api/write-options#supported-output-formats) for details on `bookType`
 | 
			
		||||
[^5]: At the time of writing, <https://dotnet.microsoft.com/en-us/download> is the official endpoint. For Steam Deck Holo and other Arch Linux distributions, the `dotnet-sdk` and `dotnet-runtime` packages should be installed using `pacman`.
 | 
			
		||||
[^6]: See [".NET RID Catalog"](https://learn.microsoft.com/en-us/dotnet/core/rid-catalog) in the .NET documentation
 | 
			
		||||
[^5]: See [".NET RID Catalog"](https://learn.microsoft.com/en-us/dotnet/core/rid-catalog) in the .NET documentation
 | 
			
		||||
@ -97,7 +97,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| `darwin-x64` | `28ee0ee`  | `1.19.3`   | 2023-06-05 |
 | 
			
		||||
| `darwin-arm` | `28ee0ee`  | `1.20.4`   | 2023-06-05 |
 | 
			
		||||
| `win10-x64`  | `81d7606`  | `1.20.2`   | 2023-08-27 |
 | 
			
		||||
| `win10-arm`  | `fc55792`  | `1.21.1`   | 2023-09-25 |
 | 
			
		||||
| `win11-arm`  | `fc55792`  | `1.21.1`   | 2023-09-25 |
 | 
			
		||||
| `linux-x64`  | `81d7606`  | `1.21.0`   | 2023-08-27 |
 | 
			
		||||
| `linux-arm`  | `3dbe69d`  | `1.21.1`   | 2023-08-30 |
 | 
			
		||||
 | 
			
		||||
@ -137,7 +137,7 @@ brew install icu4c cmake
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
  <TabItem value="darwin-arm" label="ARM64 Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
brew install icu4c cmake
 | 
			
		||||
@ -201,7 +201,7 @@ cd ..
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
  <TabItem value="darwin-arm" label="ARM64 Mac">
 | 
			
		||||
 | 
			
		||||
:::info pass
 | 
			
		||||
 | 
			
		||||
@ -117,6 +117,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| `darwin-x64` | 2023-08-31 |
 | 
			
		||||
| `darwin-arm` | 2023-07-05 |
 | 
			
		||||
| `win10-x64`  | 2023-08-31 |
 | 
			
		||||
| `win11-arm`  | 2023-09-26 |
 | 
			
		||||
| `linux-x64`  | 2023-07-05 |
 | 
			
		||||
| `linux-arm`  | 2023-08-30 |
 | 
			
		||||
 | 
			
		||||
@ -78,20 +78,7 @@ further detail.
 | 
			
		||||
 | 
			
		||||
Browsers have strict memory limits and large spreadsheets can exceed the limits.
 | 
			
		||||
 | 
			
		||||
<details><summary><b>Technical Limitations</b> (click to show)</summary>
 | 
			
		||||
 | 
			
		||||
V8 (Node/Chrome) have a maximum string length that has changed over the years.
 | 
			
		||||
Node 16 and Chrome 106 enforce a limit of 536870888 characters. This issue will
 | 
			
		||||
manifest with error messages such as `Invalid string length`.
 | 
			
		||||
 | 
			
		||||
There are memory bottlenecks associated with string addresses. A number of bugs
 | 
			
		||||
have been reported to the V8 and Chromium projects on this subject. While those
 | 
			
		||||
bugs are being resolved, for sheets containing hundreds of thousands of rows,
 | 
			
		||||
dense mode worksheets should be used.
 | 
			
		||||
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
The API functions support [dense mode](/docs/csf/sheet#dense-mode):
 | 
			
		||||
For large worksheets, use [dense worksheets](/docs/csf/sheet#dense-mode):
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var wb = XLSX.read(data, {dense: true}); // creates a dense-mode sheet
 | 
			
		||||
@ -103,6 +90,48 @@ server with NodeJS or some other server-side technology.
 | 
			
		||||
 | 
			
		||||
If the files are small, please [report to our issue tracker](https://git.sheetjs.com/sheetjs/sheetjs/issues)
 | 
			
		||||
 | 
			
		||||
:::info pass
 | 
			
		||||
 | 
			
		||||
Sparse worksheets historically were more performant in small sheets. Due to a
 | 
			
		||||
[2014 bug in V8](https://bugs.chromium.org/p/v8/issues/detail?id=3175) and a
 | 
			
		||||
[2017 regression in V8](https://bugs.chromium.org/p/v8/issues/detail?id=6696)
 | 
			
		||||
(the JavaScript engine powering Node and Chrome), large sparse worksheets will
 | 
			
		||||
crash the web browser.
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
#### "Invalid String Length" or ERR_STRING_TOO_LONG
 | 
			
		||||
 | 
			
		||||
V8 (Node/Chrome) have a maximum string length that has changed over the years.
 | 
			
		||||
Node 16 and Chrome 106 enforce a limit of `0x1fffffe8` (536870888) characters.
 | 
			
		||||
[A 2017 V8 discussion](https://bugs.chromium.org/p/v8/issues/detail?id=6148)
 | 
			
		||||
explains some of the background behind the V8 decision.
 | 
			
		||||
 | 
			
		||||
XLSX and ODS are ZIP-based formats that store worksheets in XML entries. In
 | 
			
		||||
worksheets with over 100M cells, the XML strings may exceed the V8 limit!
 | 
			
		||||
 | 
			
		||||
Depending on the environment, this issue may result in missing worksheets; error
 | 
			
		||||
messages such as `Invalid string length`, `ERR_STRING_TOO_LONG`, or
 | 
			
		||||
`Cannot create a string longer than 0x1fffffe8 characters`; or browser crashes.
 | 
			
		||||
 | 
			
		||||
A number of bugs have been reported to the V8 and Chromium projects on this
 | 
			
		||||
subject, some of which have been open for nearly a decade.
 | 
			
		||||
 | 
			
		||||
Please [leave a note](https://git.sheetjs.com/sheetjs/sheetjs/issues) including
 | 
			
		||||
worksheet sizes (number of rows/columns and file size) and environment (browser
 | 
			
		||||
or NodeJS or other platform).
 | 
			
		||||
 | 
			
		||||
:::tip pass
 | 
			
		||||
 | 
			
		||||
The "Excel Binary Workbook" XLSB format uses a binary representation. The XLSB
 | 
			
		||||
parser is not affected by this issue.
 | 
			
		||||
 | 
			
		||||
XLSB files are typically smaller than equivalent XLSX files. There are other
 | 
			
		||||
Excel performance benefits to XLSB, so it is strongly recommended to use XLSB
 | 
			
		||||
when possible.
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
#### Invalid HTML: could not find table
 | 
			
		||||
 | 
			
		||||
Data can be fetched and parsed by the library:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user