win10-x64

This commit is contained in:
SheetJS 2023-10-28 23:22:50 -04:00
parent b23c03f051
commit 32521763a6
8 changed files with 95 additions and 32 deletions

@ -17,7 +17,7 @@ been ported to a number of exotic architectures and operating systems.
[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing
data from spreadsheets.
The ["Integration Example"](#integration-example) section includes a complete
The ["Complete Example"](#complete-example) section includes a complete
command-line tool for reading data from spreadsheets and exporting to Excel XLSB
workbooks.

@ -126,7 +126,7 @@ This demo was tested in the following deployments:
|:--------------|:-------------|:--------------|:-----------------|:-----------|
| `11.8.82` | `darwin-x64` | macOS 13.5.1 | `clang 14.0.3` | 2023-08-26 |
| `12.0.175` | `darwin-arm` | macOS 14.0 | `clang 15.0.0` | 2023-10-20 |
| `11.8.82` | `win10-x64` | Windows 10 | `CL 19.37.32822` | 2023-08-26 |
| `12.0.265` | `win10-x64` | Windows 10 | `CL 19.37.32822` | 2023-10-28 |
| `12.0.72` | `linux-x64` | HoloOS 3.4.11 | `gcc 12.2.0` | 2023-10-11 |
| `11.8.82` | `linux-arm` | Debian 11 | `gcc 10.2.1` | 2023-09-26 |
@ -395,20 +395,20 @@ 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.0.72`:
5) Checkout the desired version. The following command pulls `12.0.265`:
<Tabs groupId="os">
<TabItem value="unix" label="Linux/MacOS">
```bash
git checkout refs/tags/12.0.72 -b sample -t
git checkout refs/tags/12.0.265 -b sample -t
```
</TabItem>
<TabItem value="win" label="Windows">
```bash
git checkout tags/12.0.72 -b sample
git checkout tags/12.0.265 -b sample
```
:::caution pass
@ -416,14 +416,14 @@ git checkout tags/12.0.72 -b sample
The official documentation recommends:
```bash
git checkout refs/tags/12.0.72 -b sample -t
git checkout refs/tags/12.0.265 -b sample -t
```
This command failed in local testing:
```
E:\v8\v8>git checkout refs/tags/12.0.72 -b sample -t
fatal: cannot set up tracking information; starting point 'refs/tags/12.0.72' is not a branch
E:\v8\v8>git checkout refs/tags/12.0.265 -b sample -t
fatal: cannot set up tracking information; starting point 'refs/tags/12.0.265' is not a branch
```
:::
@ -526,8 +526,8 @@ from the Control Panel as described in step 0.
In local testing, the `ninja` build failed with C++ deprecation errors:
```c++
../..\src/wasm/wasm-code-manager.h(789,28): error: 'atomic_load<v8::base::OwnedVector<const unsigned char>>' is deprecated: warning STL4029: std::atomic_*() overloads for shared_ptr are deprecated in C++20. The shared_ptr specialization of std::atomic provides superior functionality. You can define _SILENCE_CXX20_OLD_SHARED_PTR_ATOMIC_SUPPORT_DEPRECATION_WARNING or _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS to suppress this warning. [-Werror,-Wdeprecated-declarations]
789 | auto wire_bytes = std::atomic_load(&wire_bytes_);
../..\src/wasm/wasm-code-manager.h(670,28): error: 'atomic_load<v8::base::OwnedVector<const unsigned char>>' is deprecated: warning STL4029: std::atomic_*() overloads for shared_ptr are deprecated in C++20. The shared_ptr specialization of std::atomic provides superior functionality. You can define _SILENCE_CXX20_OLD_SHARED_PTR_ATOMIC_SUPPORT_DEPRECATION_WARNING or _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS to suppress this warning. [-Werror,-Wdeprecated-declarations]
670 | auto wire_bytes = std::atomic_load(&wire_bytes_);
| ^
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\memory(3794,1): note: 'atomic_load<v8::base::OwnedVector<const unsigned char>>' has been explicitly marked deprecated here
3794 | _CXX20_DEPRECATE_OLD_SHARED_PTR_ATOMIC_SUPPORT _NODISCARD shared_ptr<_Ty> atomic_load(
@ -536,8 +536,6 @@ C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.3282
1317 | [[deprecated("warning STL4029: " \
| ^
2 errors generated.
[14/1303] CXX obj/torque_generated_definitions/js-atomics-synchronization-tq.obj
FAILED: obj/torque_generated_definitions/js-atomics-synchronization-tq.obj
```
The workaround is to append a line to `out.gn\x64.release.sample\args.gn`:
@ -546,6 +544,12 @@ The workaround is to append a line to `out.gn\x64.release.sample\args.gn`:
treat_warnings_as_errors = false
```
After adding the line, run the `ninja` command again:
```bash
ninja -C out.gn\x64.release.sample v8_monolith
```
:::
</TabItem>

@ -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-beta-2051`.
on version `3.0.0-beta-2053`.
:::
@ -165,7 +165,7 @@ This demo was tested in the following deployments:
|:-------------|:------------------|:-----------|
| `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 |
| `win10-x64` | `3.0.0-beta-2053` | 2023-10-28 |
| `win11-arm` | `3.0.0-beta-2051` | 2023-09-26 |
| `linux-x64` | `3.0.0-beta-2052` | 2023-10-11 |
| `linux-arm` | `3.0.0-beta-2051` | 2023-09-26 |
@ -238,7 +238,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-beta-2052
dotnet add package Jint --version 3.0.0-beta-2053
```
To verify Jint is installed, replace `Program.cs` with the following:
@ -333,6 +333,23 @@ If successful, the program will print the contents of the first sheet as CSV
rows. It will also create `SheetJSJint.xlsb` which can be opened in Excel or
another spreadsheet editor.
:::info pass
Running `dotnet run` without the filename argument will show an error:
```
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Program.<Main>$(String[] args) in C:\Users\Me\SheetJSJint\Program.cs:line 13
```
The command must be run with an argument specifying the name of the workbook:
```bash
dotnet run pres.xlsx
```
:::
:::caution pass
If the `using Jint;` directive is omitted, the build will fail:
@ -426,8 +443,9 @@ dotnet publish -c Release -r win-arm64 --self-contained true -p:PublishSingleFil
10) Copy the generated executable to the project directory.
The build from step 9 is placed in `bin\Release\net6.0\$RID\publish` and the
binary name will be `SheetJSJint` or `SheetJSJint.exe` depending on OS.
The binary name will be `SheetJSJint` or `SheetJSJint.exe` depending on OS.
The last line of the output from Step 9 will print the output folder.
<details open><summary><b>Tested platforms</b> (click to hide)</summary>
@ -476,6 +494,22 @@ For Windows 10 x64, the RID is `win10-x64` and the command is:
copy .\bin\Release\net6.0\win10-x64\publish\SheetJSJint.exe .
```
:::caution pass
In some test runs, the `copy` command failed with a clear message:
```
The system cannot find the path specified.
```
The correct command was
```powershell
copy .\bin\x64\Release\net6.0\win10-x64\publish\SheetJSJint.exe .
```
:::
</TabItem>
<TabItem value="win11-arm" label="Windows ARM">

@ -96,7 +96,7 @@ This demo was tested in the following deployments:
|:-------------|:-----------|:-----------|:-----------|
| `darwin-x64` | `873a149` | `1.21.3` | 2023-10-14 |
| `darwin-arm` | `873a149` | `1.21.3` | 2023-10-18 |
| `win10-x64` | `81d7606` | `1.20.2` | 2023-08-27 |
| `win10-x64` | `b396bb4` | `1.21.3` | 2023-10-28 |
| `win11-arm` | `fc55792` | `1.21.1` | 2023-09-25 |
| `linux-x64` | `fc55792` | `1.21.3` | 2023-10-11 |
| `linux-arm` | `3dbe69d` | `1.21.1` | 2023-08-30 |

@ -372,7 +372,7 @@ fork, which powers React Native for Windows, does have built-in support[^5]
| Architecture | Git Commit | Date |
|:-------------|:-----------|:-----------|
| `win10-x64` | `c7a4a82` | 2023-09-27 |
| `win10-x64` | `930456b` | 2023-10-28 |
:::
@ -521,7 +521,7 @@ cd sheetjs-hermes
```bash
git clone https://github.com/microsoft/hermes-windows
cd hermes-windows
git checkout c7a4a82
git checkout 930456b
cd ..
```
@ -560,6 +560,24 @@ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
:::
:::info pass
In the most recent test, the command failed when trying to copy `hermes.exe`:
```
Copy-Item: C:\Users\Me\Documents\hermes-windows\.ado\scripts\cibuild.ps1:331
Line |
331 | Copy-Item "$compilerAndToolsBuildPath\bin\hermes.exe" -Destinatio …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot find path 'C:\Users\Me\Documents\hermes-windows\workspace\build\tools\bin\hermes.exe'
| because it does not exist.
```
The libraries are built first and the standalone binary is not needed when
embedding Hermes, so the error message can be safely ignored.
:::
6) Copy every generated `.lib` and `.dll` file into the main folder:
```powershell

@ -72,7 +72,7 @@ This demo was tested in the following deployments:
|:-------------|:---------|:--------|:-----------|
| `darwin-x64` | `2.7.6` | `2.9.1` | 2023-09-24 |
| `darwin-arm` | `2.7.4` | `2.9.1` | 2023-09-24 |
| `win10-x64` | `3.2.2` | `2.9.1` | 2023-09-24 |
| `win10-x64` | `3.2.2` | `2.9.1` | 2023-10-28 |
| `win11-arm` | `3.0.2` | `2.9.1` | 2023-09-24 |
| `linux-x64` | `3.0.4` | `2.9.1` | 2023-10-11 |
| `linux-arm` | `2.7.4` | `2.9.1` | 2023-09-24 |

@ -122,7 +122,7 @@ This demo was tested in the following deployments:
|:-------------|:-----------|:-----------|
| `darwin-x64` | `c3ead3f` | 2023-08-26 |
| `darwin-arm` | `c3ead3f` | 2023-10-19 |
| `win10-x64` | `c3ead3f` | 2023-08-26 |
| `win10-x64` | `c3ead3f` | 2023-10-28 |
| `linux-x64` | `c3ead3f` | 2023-10-11 |
:::
@ -156,7 +156,7 @@ sudo pacman -S cmake clang
<TabItem value="win10-x64" label="Windows">
Install Visual Studio 2022 with the "Desktop Development with C++" workflow.
All commands in this demo should be run in a Developer Command Prompt.
All commands in this demo should be run in a "Native Tools Command Prompt".
</TabItem>
</Tabs>
@ -366,7 +366,7 @@ If successful, the program will print the contents of the first sheet as CSV.
:::note
This demo was last tested on 2023-08-26 against `ch` commit `c3ead3f`.
This demo was last tested on 2023-10-28 against `ch` commit `c3ead3f`.
:::
@ -376,10 +376,11 @@ file as a Base64 string and directly add it to an amalgamated script.
0) Download and extract the ChakraCore release ZIP. Copy the binary (`bin/ch`)
to your project folder.
:::note pass
:::tip pass
The ["Integration Example"](#integration-example) also builds the `ch` binary!
It will typically be placed in the `ChakraCore/out/Test/` folder.
It will typically be placed in the `ChakraCore/out/Test/` folder on Linux/macOS
or `ChakraCore\Build\VcBuild\bin\x64_debug\` on x64 Windows.
:::

@ -14,14 +14,17 @@ more performant engine like [`v8`](/docs/demos/engines/v8#rust)
:::
Boa is a pure-Rust JavaScript engine.
[Boa](https://boajs.dev/) is a JavaScript engine written in Rust.
The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone)
can be parsed and evaluated in a Boa context.
[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing
data from spreadsheets.
The ["Complete Example"](#integration-example) section creates a command-line
tool for reading data from spreadsheets and generating CSV rows.
## Integration Details
_Initialize Engine_
### Initialize Boa
A JS context can be constructed in one line:
@ -48,7 +51,10 @@ fn eval_code(c: &mut Context, code: &str) -> Result<String, JsError> {
}
```
_Load SheetJS Scripts_
### Load SheetJS Scripts
The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone)
can be parsed and evaluated in a Boa context.
Boa provides a special helper to read source code from a path:
@ -116,7 +122,7 @@ This demo was tested in the following deployments:
|:-------------|:-----------|
| `darwin-x64` | 2023-08-31 |
| `darwin-arm` | 2023-10-20 |
| `win10-x64` | 2023-08-31 |
| `win10-x64` | 2023-10-28 |
| `win11-arm` | 2023-09-26 |
| `linux-x64` | 2023-10-11 |
| `linux-arm` | 2023-08-30 |