diff --git a/docz/docs/03-demos/42-engines/01-duktape.md b/docz/docs/03-demos/42-engines/01-duktape.md index 4037500..63f5f6a 100644 --- a/docz/docs/03-demos/42-engines/01-duktape.md +++ b/docz/docs/03-demos/42-engines/01-duktape.md @@ -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. diff --git a/docz/docs/03-demos/42-engines/02-v8.md b/docz/docs/03-demos/42-engines/02-v8.md index 954b468..d00dd21 100644 --- a/docz/docs/03-demos/42-engines/02-v8.md +++ b/docz/docs/03-demos/42-engines/02-v8.md @@ -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` -5) Checkout the desired version. The following command pulls `12.0.72`: +5) Checkout the desired version. The following command pulls `12.0.265`: ```bash -git checkout refs/tags/12.0.72 -b sample -t +git checkout refs/tags/12.0.265 -b sample -t ``` ```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>' 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>' 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>' 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 +``` + ::: diff --git a/docz/docs/03-demos/42-engines/05-jint.md b/docz/docs/03-demos/42-engines/05-jint.md index 4744caf..7e7d1a5 100644 --- a/docz/docs/03-demos/42-engines/05-jint.md +++ b/docz/docs/03-demos/42-engines/05-jint.md @@ -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.
$(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.
Tested platforms (click to hide) @@ -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 . +``` + +::: + diff --git a/docz/docs/03-demos/42-engines/06-goja.md b/docz/docs/03-demos/42-engines/06-goja.md index 54fd590..fed1046 100644 --- a/docz/docs/03-demos/42-engines/06-goja.md +++ b/docz/docs/03-demos/42-engines/06-goja.md @@ -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 | diff --git a/docz/docs/03-demos/42-engines/09-hermes.md b/docz/docs/03-demos/42-engines/09-hermes.md index 0c8b431..e0dbaa9 100644 --- a/docz/docs/03-demos/42-engines/09-hermes.md +++ b/docz/docs/03-demos/42-engines/09-hermes.md @@ -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 diff --git a/docz/docs/03-demos/42-engines/15-rb.md b/docz/docs/03-demos/42-engines/15-rb.md index abf6253..ec2f66e 100644 --- a/docz/docs/03-demos/42-engines/15-rb.md +++ b/docz/docs/03-demos/42-engines/15-rb.md @@ -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 | diff --git a/docz/docs/03-demos/42-engines/20-chakra.md b/docz/docs/03-demos/42-engines/20-chakra.md index 63e04e8..f02a7fb 100644 --- a/docz/docs/03-demos/42-engines/20-chakra.md +++ b/docz/docs/03-demos/42-engines/20-chakra.md @@ -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 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". @@ -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. ::: diff --git a/docz/docs/03-demos/42-engines/21-boa.md b/docz/docs/03-demos/42-engines/21-boa.md index 3dca1db..29c0dca 100644 --- a/docz/docs/03-demos/42-engines/21-boa.md +++ b/docz/docs/03-demos/42-engines/21-boa.md @@ -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 { } ``` -_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 |