From 1b242c12ef09ab5ee07465a7618f25eff919e107 Mon Sep 17 00:00:00 2001 From: SheetJS Date: Tue, 6 May 2025 20:21:41 -0400 Subject: [PATCH] Demo refresh --- docz/data/engines.xls | 2 +- docz/docs/03-demos/01-math/21-pandas.md | 49 +++- docz/docs/03-demos/03-net/09-dom.md | 10 +- .../03-demos/17-mobile/02-nativescript.md | 239 ++++++++++------- docz/docs/03-demos/17-mobile/06-flutter.md | 48 +++- docz/docs/03-demos/32-extensions/10-stata.md | 93 +++---- docz/docs/03-demos/42-engines/01-duktape.md | 12 +- docz/docs/03-demos/42-engines/02-v8.md | 21 ++ docz/docs/03-demos/42-engines/03-rhino.md | 33 +-- docz/docs/03-demos/42-engines/05-jint.md | 27 +- docz/docs/03-demos/42-engines/06-goja.md | 38 ++- docz/docs/03-demos/42-engines/07-nashorn.md | 33 +-- docz/docs/03-demos/42-engines/09-hermes.md | 6 +- docz/docs/03-demos/42-engines/15-rb.md | 37 ++- docz/docs/03-demos/42-engines/20-chakra.md | 4 +- docz/docs/03-demos/42-engines/21-boa.md | 37 ++- docz/docs/03-demos/42-engines/24-graaljs.md | 39 +-- docz/static/stata/stplugin.c | 14 + docz/static/stata/stplugin.h | 246 ++++++++++++++++++ .../graaljs.sh} | 22 +- .../nashorn.sh} | 2 +- tests/{engines-rhino.sh => engines/rhino.sh} | 2 +- 22 files changed, 763 insertions(+), 251 deletions(-) create mode 100644 docz/static/stata/stplugin.c create mode 100644 docz/static/stata/stplugin.h rename tests/{engines-graaljs.sh => engines/graaljs.sh} (66%) rename tests/{engines-nashorn.sh => engines/nashorn.sh} (99%) rename tests/{engines-rhino.sh => engines/rhino.sh} (98%) diff --git a/docz/data/engines.xls b/docz/data/engines.xls index edb5040..02fbb30 100644 --- a/docz/data/engines.xls +++ b/docz/data/engines.xls @@ -352,7 +352,7 @@ Python - + diff --git a/docz/docs/03-demos/01-math/21-pandas.md b/docz/docs/03-demos/01-math/21-pandas.md index 00f2735..8d51d5a 100644 --- a/docz/docs/03-demos/01-math/21-pandas.md +++ b/docz/docs/03-demos/01-math/21-pandas.md @@ -42,7 +42,7 @@ This demo was tested in the following deployments: |:-------------|:----------------|:-------|:-------|:-----------| | `darwin-x64` | Duktape `2.7.0` | 2.2.3 | 3.13.1 | 2025-03-31 | | `darwin-arm` | Duktape `2.7.0` | 2.2.3 | 3.13.2 | 2025-03-30 | -| `win11-x64` | Duktape `2.7.0` | 2.2.3 | 3.11.8 | 2024-12-21 | +| `win11-x64` | Duktape `2.7.0` | 2.2.3 | 3.11.9 | 2025-04-28 | | `win11-arm` | Duktape `2.7.0` | 2.2.3 | 3.13.2 | 2025-02-23 | | `linux-x64` | Duktape `2.7.0` | 1.5.3 | 3.11.7 | 2025-01-01 | | `linux-arm` | Duktape `2.7.0` | 1.5.3 | 3.11.2 | 2025-02-16 | @@ -203,7 +203,7 @@ DataFrame. The DataFrame will be exported to the binary XLSB spreadsheet format. :::note pass The Windows build requires Visual Studio with "Desktop development with C++". -Commands must be run in a "Native Tools Command Prompt" session. +**Commands must be run in a "Native Tools Command Prompt" session.** ::: @@ -215,6 +215,14 @@ python3 -m pip install pandas :::info pass +On Windows, Python may be available as `python.exe`: + +```bash +python.exe -m pip install pandas +``` + +--- + On macOS and Linux, the install command may require root access: ```bash @@ -305,15 +313,13 @@ cd .. -- Download and extract the source tarball. Commands must be run in WSL `bash`: +- Download and extract the source tarball: ```bash curl -LO https://duktape.org/duktape-2.7.0.tar.xz tar -xJf duktape-2.7.0.tar.xz ``` -(Run `bash`, then run the aforementioned commands, then run `exit` to exit WSL) - - Enter the source folder: ```bash @@ -472,6 +478,17 @@ def eval_file(ctx, path): python3 SheetJSPandas.py pres.numbers ``` +:::info pass + +On Windows, Python may be available as `python.exe`: + +```bash +python.exe SheetJSPandas.py pres.numbers +``` + +::: + + If successful, the script will display DataFrame metadata: ``` @@ -529,7 +546,7 @@ This demo was tested in the following deployments: |:-------------|:----------------|:--------|:-------|:-----------| | `darwin-x64` | Duktape `2.7.0` | 1.26.0 | 3.13.1 | 2025-03-31 | | `darwin-arm` | Duktape `2.7.0` | 1.26.0 | 3.13.2 | 2025-03-30 | -| `win11-x64` | Duktape `2.7.0` | 1.17.1 | 3.11.8 | 2024-12-21 | +| `win11-x64` | Duktape `2.7.0` | 1.28.1 | 3.11.9 | 2025-04-28 | | `win11-arm` | Duktape `2.7.0` | 1.23.0 | 3.13.2 | 2025-02-23 | | `linux-x64` | Duktape `2.7.0` | 1.18.0 | 3.11.7 | 2025-01-01 | | `linux-arm` | Duktape `2.7.0` | 1.22.0 | 3.11.2 | 2025-02-16 | @@ -599,10 +616,18 @@ python3 -m pip install polars :::info pass +On Windows, Python may be available as `python.exe`: + +```bash +python.exe -m pip install polars +``` + +--- + On macOS and Linux, the install command may require root access: ```bash -sudo python3 -m pip install pandas +sudo python3 -m pip install polars ``` ::: @@ -662,6 +687,16 @@ cp ../libduktape.* ../SheetJSPandas.py ../sheetjs.py ../*.js ../*.numbers . python3 SheetJSPandas.py pres.numbers ``` +:::info pass + +On Windows, Python may be available as `python.exe`: + +```bash +python.exe SheetJSPandas.py pres.numbers +``` + +::: + :::note pass If the virtual environment was configured in the previous step, run: diff --git a/docz/docs/03-demos/03-net/09-dom.md b/docz/docs/03-demos/03-net/09-dom.md index 0f5be1f..a2ba994 100644 --- a/docz/docs/03-demos/03-net/09-dom.md +++ b/docz/docs/03-demos/03-net/09-dom.md @@ -377,7 +377,7 @@ This demo was tested in the following deployments: |:-------------|:--------|:-------|:-----------| | `darwin-x64` | 0.1.48 | 2.2.6 | 2025-03-31 | | `darwin-arm` | 0.1.48 | 2.2.12 | 2025-04-24 | -| `win11-x64` | 0.1.48 | 2.0.4 | 2024-10-30 | +| `win11-x64` | 0.1.48 | 2.2.12 | 2025-04-28 | | `win11-arm` | 0.1.48 | 2.2.1 | 2025-02-23 | | `linux-x64` | 0.1.48 | 2.0.5 | 2025-01-10 | | `linux-arm` | 0.1.48 | 2.1.10 | 2025-02-16 | @@ -392,17 +392,17 @@ This demo was tested in the following deployments: 2) Run the script with `--allow-net` and `--allow-write` entitlements: ```bash -deno run --allow-net --allow-write SheetJSDenoDOM.ts +deno run --allow-net --allow-write --allow-import SheetJSDenoDOM.ts ``` The script will create a file `SheetJSDenoDOM.xlsx` that can be opened. -:::caution pass +:::note pass -Deno 2 additionally requires the `--allow-import` entitlement: +In older versions of Deno, the `--allow-import` flag must be omitted: ```bash -deno run --allow-net --allow-write --allow-import SheetJSDenoDOM.ts +deno run --allow-net --allow-write SheetJSDenoDOM.ts ``` ::: diff --git a/docz/docs/03-demos/17-mobile/02-nativescript.md b/docz/docs/03-demos/17-mobile/02-nativescript.md index e13971f..970c9d9 100644 --- a/docz/docs/03-demos/17-mobile/02-nativescript.md +++ b/docz/docs/03-demos/17-mobile/02-nativescript.md @@ -56,15 +56,15 @@ This demo was tested in the following environments: | OS | Device | NS | Date | |:-----------|:--------------------|:---------|:-----------| -| Android 30 | NVIDIA Shield | `8.7.2` | 2024-06-09 | -| iOS 15.1 | iPad Pro | `8.7.2` | 2024-06-09 | +| Android 30 | NVIDIA Shield | `8.9.2` | 2025-05-06 | +| iOS 15.1 | iPad Pro | `8.9.2` | 2025-05-06 | **Simulators** | OS | Device | NS | Dev Platform | Date | |:-----------|:--------------------|:---------|:-------------|:-----------| -| Android 34 | Pixel 3a | `8.7.2` | `darwin-arm` | 2024-06-09 | -| iOS 17.5 | iPhone SE (3rd gen) | `8.7.2` | `darwin-arm` | 2024-06-09 | +| Android 35 | Pixel 9 Pro XL | `8.9.2` | `darwin-x64` | 2025-05-06 | +| iOS 18.4 | iPhone 16 Pro Max | `8.9.2` | `darwin-x64` | 2025-05-06 | | Android 35 | Pixel 9 | `8.8.3` | `win11-x64` | 2024-12-21 | | Android 35 | Pixel 9 | `8.8.3` | `linux-x64` | 2025-01-02 | @@ -78,15 +78,15 @@ NativeScript 8.6.1 split the telemetry into two parts: "usage" and "error". Both must be disabled separately: ```bash -npx -p nativescript ns usage-reporting disable -npx -p nativescript ns error-reporting disable +npx -y -p nativescript ns usage-reporting disable +npx -y -p nativescript ns error-reporting disable ``` To verify telemetry was disabled: ```bash -npx -p nativescript ns usage-reporting status -npx -p nativescript ns error-reporting status +npx -y -p nativescript ns usage-reporting status +npx -y -p nativescript ns error-reporting status ``` ::: @@ -120,6 +120,22 @@ for accessing data and are subject to change in future platform versions.
Technical Details (click to show) +**iOS** + +The following key/value pairs must be added to `Info.plist`: + +```xml title="App_Resources/iOS/Info.plist (add highlighted lines)" + + + UIFileSharingEnabled + + LSSupportsOpeningDocumentsInPlace + + +``` + +--- + **Android** Android security has evolved over the years. In newer Android versions, the @@ -265,8 +281,8 @@ const wb = read(ab); 0) Disable telemetry: ```bash -npx -p nativescript ns usage-reporting disable -npx -p nativescript ns error-reporting disable +npx -y -p nativescript ns usage-reporting disable +npx -y -p nativescript ns error-reporting disable ``` 1) Follow the official Environment Setup instructions[^8]. @@ -274,14 +290,14 @@ npx -p nativescript ns error-reporting disable :::caution pass In previous test runs, NativeScript did not support the latest Android API. -The error message from `npx -p nativescript ns doctor android` clearly stated +The error message from `npx -y -p nativescript ns doctor android` clearly stated supported versions:
  No compatible version of the Android SDK Build-tools are installed on your system. You can install any version in the following range: '>=23 <=33'.
 
-If NativeScript does not properly supports the latest API level, a previous API +If NativeScript does not properly support the latest API level, an older API version should be installed using Android Studio. In a previous test run, the following packages were required: @@ -290,14 +306,14 @@ In a previous test run, the following packages were required: - `Android SDK Build-Tools` Version `33.0.2` It is recommended to install the SDK Platform and corresponding Android SDK -Build-Tools for the latest supported API level.ß +Build-Tools for the latest supported API level. ::: 2) Test the local system configuration for Android development: ```bash -npx -p nativescript ns doctor android +npx -y -p nativescript ns doctor android ``` In the last macOS test, the following output was displayed: @@ -316,7 +332,7 @@ In the last macOS test, the following output was displayed: Javac is installed and is configured properly. The Java Development Kit (JDK) is installed and is configured properly. Getting NativeScript components versions information... - Component nativescript has 8.7.2 version and is up to date. + Component nativescript has 8.9.2 version and is up to date.
@@ -324,7 +340,7 @@ In the last macOS test, the following output was displayed: 3) Test the local system configuration for iOS development (macOS only): ```bash -npx -p nativescript ns doctor ios +npx -y -p nativescript ns doctor ios ``` In the last macOS test, the following output was displayed: @@ -343,9 +359,9 @@ In the last macOS test, the following output was displayed: CocoaPods are configured properly. Your current CocoaPods version is newer than 1.0.0. Python installed and configured correctly. - Xcode version 15.4.0 satisfies minimum required version 10. + Xcode version 16.3.0 satisfies minimum required version 10. Getting NativeScript components versions information... - Component nativescript has 8.7.2 version and is up to date. + Component nativescript has 8.9.2 version and is up to date. @@ -355,21 +371,21 @@ In the last macOS test, the following output was displayed: 4) Create a skeleton NativeScript + Angular app: ```bash -npx -p nativescript ns create SheetJSNS --ng +npx -y -p nativescript ns create SheetJSNS --ng ``` -5) Launch the app in the android simulator to verify the app: +5) Launch the app in the Android simulator to verify the app: ```bash cd SheetJSNS -npx -p nativescript ns run android +npx -y -p nativescript ns run android ``` (this may take a while) Once the simulator launches and the test app is displayed, end the script by selecting the terminal and pressing CTRL+C. On Windows, if -prompted to `Terminate batch job`, type `y` and press Enter. +prompted to `Terminate batch job`, type Y and press Enter. :::note pass @@ -381,6 +397,23 @@ Emulator start failed with: No emulator image available for device identifier 'u ::: +:::caution pass + +In the most recent test, the build failed with an exception: + +``` +WARNING: A restricted method in java.lang.System has been called +WARNING: java.lang.System::load has been called by net.rubygrapefruit.platform.internal.NativeLibraryLoader in an unnamed module (file:/Users/sheetjs/.gradle/wrapper/dists/gradle-8.7-bin/bhs2wmbdwecv87pi65oeuq5iu/gradle-8.7/lib/native-platform-0.22-milestone-25.jar) +WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module +WARNING: Restricted methods will be blocked in a future release unless native access is enabled +``` + +**The NativeScript Gradle version is incompatible with Java 24!** + +It is strongly recommended to roll back to Java 21. + +::: + ### Add SheetJS :::note pass @@ -406,11 +439,10 @@ import { Component, OnInit } from '@angular/core' // ... export class ItemsComponent implements OnInit { - items: Array // highlight-next-line version = `SheetJS - ${version}`; - - constructor(private itemService: ItemService) {} + itemService = inject(ItemService) + page = inject(Page) // ... ``` @@ -428,7 +460,7 @@ in the title of the action bar: 9) End the script and relaunch the app in the Android simulator: ```bash -npx -p nativescript ns run android +npx -y -p nativescript ns run android ``` The title bar should show the version. @@ -449,7 +481,7 @@ The title bar should show the version. - + @@ -458,15 +490,15 @@ The title bar should show the version. 11) Add the `import` and `export` methods in the component script: -```ts title="src/app/item/items.component.ts" +```ts title="src/app/item/items.component.ts (add highlighted lines)" // highlight-start import { version, utils, read, write } from 'xlsx'; import { Dialogs, getFileAccess } from '@nativescript/core'; import { Folder, knownFolders, path } from '@nativescript/core/file-system'; // highlight-end -import { Component, OnInit } from '@angular/core' - -import { Item } from './item' +import { Component, NO_ERRORS_SCHEMA, inject } from '@angular/core' +import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular' +import { Page } from '@nativescript/core' import { ItemService } from './item.service' // highlight-start @@ -476,19 +508,12 @@ function get_url_for_filename(filename: string): string { } // highlight-end -@Component({ - selector: 'ns-items', - templateUrl: './items.component.html', -}) -export class ItemsComponent implements OnInit { - items: Array - version: string = `SheetJS - ${version}`; +// ... - constructor(private itemService: ItemService) {} - - ngOnInit(): void { - this.items = this.itemService.getItems() - } +export class ItemsComponent { + version = `SheetJS - ${version}`; + itemService = inject(ItemService) + page = inject(Page) // highlight-start /* Import button */ @@ -499,13 +524,14 @@ export class ItemsComponent implements OnInit { async export() { } // highlight-end -} + + // ... ``` 12) End the script and relaunch the app in the Android simulator: ```bash -npx -p nativescript ns run android +npx -y -p nativescript ns run android ``` Two buttons should appear just below the header: @@ -534,7 +560,7 @@ Two buttons should appear just below the header: const ws = wb.Sheets[wsname]; /* update table */ - this.items = utils.sheet_to_json(ws); + this.itemService.items.set(utils.sheet_to_json(ws)); } catch(e) { await Dialogs.alert(e.message); } // highlight-end } @@ -547,7 +573,7 @@ Two buttons should appear just below the header: try { /* create worksheet from data */ - const ws = utils.json_to_sheet(this.items); + const ws = utils.json_to_sheet(this.itemService.items()); /* create workbook from worksheet */ const wb = utils.book_new(); @@ -569,7 +595,7 @@ Two buttons should appear just below the header: 14) Launch the app in the Android Simulator: ```bash -npx -p nativescript ns run android +npx -y -p nativescript ns run android ``` If the app does not automatically launch, manually open the `SheetJSNS` app. @@ -611,8 +637,8 @@ $bytes = [Convert]::FromBase64String($b64) After the header row, insert a row and make the following assignments: - Set cell `A2` to `0` -- Set cell `B2` to `SheetJS` (type `'SheetJS` in the formula bar) -- Set cell `C2` to `Library` (type `'Library` in the formula bar) +- Set cell `B2` to `SheetJS` (type `'SheetJS` in the formula bar) +- Set cell `C2` to `Library` (type `'Library` in the formula bar) After making the changes, the worksheet should look like the following: @@ -620,8 +646,6 @@ After making the changes, the worksheet should look like the following: id | name | role # highlight-next-line 0 | SheetJS | Library - 1 | Ter Stegen | Goalkeeper - 3 | Piqué | Defender ... ``` @@ -671,7 +695,7 @@ Scroll down to ["Fetching Files"](#android-device) for Android device testing. 20) Launch the app in the iOS Simulator: ```bash -npx -p nativescript ns run ios +npx -y -p nativescript ns run ios ``` 21) Tap "Export File". A dialog will print where the file was written. @@ -681,8 +705,8 @@ npx -p nativescript ns run ios After the header row, insert a row and make the following assignments: - Set cell `A2` to `0` -- Set cell `B2` to `SheetJS` (type `'SheetJS` in the formula bar) -- Set cell `C2` to `Library` (type `'Library` in the formula bar) +- Set cell `B2` to `SheetJS` (type `'SheetJS` in the formula bar) +- Set cell `C2` to `Library` (type `'Library` in the formula bar) After making the changes, the worksheet should look like the following: @@ -690,8 +714,6 @@ After making the changes, the worksheet should look like the following: id | name | role # highlight-next-line 0 | SheetJS | Library - 1 | Ter Stegen | Goalkeeper - 3 | Piqué | Defender ... ``` @@ -704,31 +726,21 @@ The first item in the list will change: ### Fetching Files -25) In `src/app/item/items.component.ts`, make `ngOnInit` asynchronous: - -```ts title="src/app/item/items.component.ts (replace existing function)" - async ngOnInit(): Promise { - this.items = await this.itemService.getItems() - } -``` - -26) Replace `item.service.ts` with the following: +25) Replace `item.service.ts` with the following: ```ts title="src/app/item/item.service.ts" -import { Injectable } from '@angular/core' - -import { knownFolders, path, getFileAccess } from '@nativescript/core' -import { getFile } from '@nativescript/core/http'; import { read, utils } from 'xlsx'; - +import { Injectable, signal, effect } from '@angular/core' +import { knownFolders, path, getFileAccess } from '@nativescript/core'; +import { getFile } from '@nativescript/core/http'; import { Item } from './item' + interface IPresident { Name: string; Index: number }; @Injectable({ providedIn: 'root' }) export class ItemService { - private items: Array; - - async getItems(): Promise> { + items = signal([]); + constructor() { effect(() => { (async() => { /* fetch https://docs.sheetjs.com/pres.xlsx */ const temp: string = path.join(knownFolders.temp().path, "pres.xlsx"); const ab = await getFile("https://docs.sheetjs.com/pres.xlsx", temp) @@ -736,32 +748,33 @@ export class ItemService { const wb = read(await getFileAccess().readBufferAsync(ab.path)); /* translate the first worksheet to the required Item type */ const data = utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); - return this.items = data.map((pres, id) => ({id, name: pres.Name, role: ""+pres.Index} as Item)); - } + /* update state */ + this.items.set(data.map((pres, id) => ({id, name: pres.Name, role: ""+pres.Index} as Item))); + })(); }); } getItem(id: number): Item { - return this.items.filter((item) => item.id === id)[0] + return this.items().find((item) => item.id === id) } } ``` -27) End the script and relaunch the app in the Android simulator: +26) End the script and relaunch the app in the Android simulator: ```bash -npx -p nativescript ns run android +npx -y -p nativescript ns run android ``` The app should show Presidential data. ### Android Device -28) Connect an Android device using a USB cable. +27) Connect an Android device using a USB cable. If the device asks to allow USB debugging, tap "Allow". -29) Close any Android / iOS emulators. +28) Close any Android / iOS emulators. -30) Enable "Legacy External Storage" in the Android app. The manifest is stored +29) Enable "Legacy External Storage" in the Android app. The manifest is stored at `App_Resources/Android/src/main/AndroidManifest.xml`: ```xml title="App_Resources/Android/src/main/AndroidManifest.xml (add highlighted line)" @@ -776,13 +789,13 @@ at `App_Resources/Android/src/main/AndroidManifest.xml`: android:hardwareAccelerated="true"> ``` -31) Install the `@nativescript-community/perms` dependency: +30) Install the `@nativescript-community/perms` dependency: ```bash npm i --save @nativescript-community/perms ``` -32) Add the highlighted lines to `items.component.ts`: +31) Add the highlighted lines to `items.component.ts`: - Import `File` from NativeScript core and `request` from the new dependency: @@ -815,10 +828,10 @@ import { Component, OnInit } from '@angular/core' } catch(e) { await Dialogs.alert(e.message); } ``` -33) Build APK and run on device: +32) Build APK and run on device: ```bash -npx -p nativescript ns run android +npx -y -p nativescript ns run android ``` If the Android emulators are closed and an Android device is connected, the last @@ -839,22 +852,59 @@ file named `SheetJSNS.xls`. ### iOS Device -34) Connect an iOS device using a USB cable +33) Connect an iOS device using a USB cable -35) Close any Android / iOS emulators. +34) Close any Android / iOS emulators. -36) Enable developer code signing certificates: +35) Enable developer code signing certificates: Open `platforms/ios/SheetJSNS.xcodeproj/project.xcworkspace` in Xcode. Select -the "Project Navigator" and select the "App" project. In the main view, select -"Signing & Capabilities". Under "Signing", select a team in the dropdown menu. +the "Project Navigator" and select `SheetJSNS`. In the main view, select the +`SheetJSNS` target. Click "Signing & Capabilities". Under "Signing", select a +team in the dropdown menu. + +:::caution pass + +When this demo was last tested, Xcode repeatedly crashed. + +The issue was resolved by cleaning the project: + +```bash +npx -y -p nativescript ns platform clean ios +``` + +::: + +36) Add the following key/value pairs to `Info.plist`: + +```xml title="App_Resources/iOS/Info.plist (add highlighted lines)" + + + UIFileSharingEnabled + + LSSupportsOpeningDocumentsInPlace + + +``` 37) Run on device: ```bash -npx -p nativescript ns run ios +npx -y -p nativescript ns run ios ``` +:::info pass + +If this is the first time testing an app on a device, the certificate must be +trusted on the device: + +Under "Settings" > "General" > "VPN & Device Management", there should be a +"Apple Development" certificate in the "DEVELOPER APP" section. Select the +certificate and confirm that "SheetJSNS" is listed under "APPS". Tap "Trust ..." +and tap "Trust" in the popup. + +::: +
iOS Device Testing (click to hide) @@ -863,8 +913,9 @@ connected to the Internet, a list of Presidents should be displayed. Tap "Export File". The app will show an alert. Tap "OK". -Switch to the "Files" app and open the "Downloads" folder. There should be a new -file named `SheetJSNS.xls`. +Switch to the "Files" app and repeatedly tap "<". In the "Browse" window, tap +"On My iPhone". There should be a new folder named "SheetJSNS". Tap the folder +and look for the file named `SheetJSNS.xls`.
diff --git a/docz/docs/03-demos/17-mobile/06-flutter.md b/docz/docs/03-demos/17-mobile/06-flutter.md index 271a1cf..9f28c4a 100644 --- a/docz/docs/03-demos/17-mobile/06-flutter.md +++ b/docz/docs/03-demos/17-mobile/06-flutter.md @@ -59,7 +59,7 @@ This demo was tested in the following environments: |:-----------|:------------------|:--------|:---------|:-------------|:-----------| | Android 35 | Pixel 9 Pro XL | `3.7.2` | `3.29.2` | `darwin-x64` | 2025-03-31 | | iOS 18.3 | iPhone 16 Pro Max | `3.7.2` | `3.29.2` | `darwin-x64` | 2025-03-31 | -| Android 35 | Pixel 3a | `3.5.0` | `3.24.0` | `win11-x64` | 2024-08-10 | +| Android 36 | Pixel 9 Pro XL | `3.7.2` | `3.29.3` | `win11-x64` | 2054-04-28 | ::: @@ -244,7 +244,7 @@ Run `flutter doctor` and confirm the following items are checked:
-[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
+[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.1)
 
@@ -260,7 +260,7 @@ Run `flutter doctor` and confirm the following items are checked: On first run, there may be a warning with "Android toolchain": ``` -[!] Android toolchain - develop for Android devices (Android SDK version 34.0.0) +[!] Android toolchain - develop for Android devices (Android SDK version 35.0.1) ! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses ``` @@ -386,9 +386,9 @@ Pixel_9_Pro_XL_API_35 • Pixel 9 Pro XL API 35 • Google • android There should be at least one `android` emulator: ``` -Id • Name • Manufacturer • Platform +Id • Name • Manufacturer • Platform -Pixel_3a_API_35 • Pixel 3a API 35 • Google • android +Pixel_9_Pro_XL • Pixel 9 Pro XL • Google • android ```
@@ -445,14 +445,43 @@ emulator -avd Pixel_9_Pro_XL_API_35 :::note pass +If `emulator` cannot be found, the folder must be added to the system path. + + + + On macOS, `~/Library/Android/sdk/emulator/` is the typical location for the -`emulator` binary. If it cannot be found, add the folder to `PATH`: +`emulator` binary: ```bash export PATH="$PATH":~/Library/Android/sdk/emulator emulator -avd Pixel_9_Pro_XL_API_35 ``` + + + +The Android SDK folder can be found in the SDK manager in Android Studio. It is +typically `%LOCALAPPDATA%\Android\Sdk`. + +If it is not assigned, create a User environment variable named `ANDROID_HOME` +with the value set to the Android SDK folder. + +--- + +There are three folders within the Android SDK folder that should be added to +the User `PATH` environment variable. Each folder holds a different tool: + +| Folder | Command-line Tool | +|:------------------------------------------|:------------------| +| `%ANDROID_HOME%\emulator` | `emulator` | +| `%ANDROID_HOME%\cmdline-tools\latest\bin` | `avdmanager` | +| `%ANDROID_HOME%\platform-tools` | `adb` | + + + + + ::: @@ -645,6 +674,13 @@ flutter -v -d emulator-5554 run +:::caution pass + +In some test runs on low-power devices, it took 20 seconds for the app to fetch +and display data! + +::: + :::info Troubleshooting In some demo runs, the build failed with an Android SDK error: diff --git a/docz/docs/03-demos/32-extensions/10-stata.md b/docz/docs/03-demos/32-extensions/10-stata.md index 808f0d3..6772d00 100644 --- a/docz/docs/03-demos/32-extensions/10-stata.md +++ b/docz/docs/03-demos/32-extensions/10-stata.md @@ -55,7 +55,7 @@ This demo was tested in the following deployments: |:-------------|:------------------|:-----------| | `darwin-x64` | `18.5` (StataNow) | 2025-01-08 | | `darwin-arm` | `18.5` (StataNow) | 2025-04-24 | -| `win11-x64` | `18.5` (StataNow) | 2024-12-19 | +| `win11-x64` | `18.5` (StataNow) | 2025-04-28 | | `win11-arm` | `18.5` (StataNow) | 2025-02-23 | | `linux-x64` | `18.5` (StataNow) | 2025-01-09 | @@ -257,6 +257,22 @@ curl -LO https://www.stata.com/plugins/stplugin.c curl -LO https://www.stata.com/plugins/stplugin.h ``` +:::danger pass + +**When this demo was last tested, `stplugin.h` was removed from the website!** + +If the official links do not work, the following files should be used: + +- [`stplugin.c`](pathname:///stata/stplugin.c) +- [`stplugin.h`](pathname:///stata/stplugin.h) + +```bash +curl -LO https://docs.sheetjs.com/plugins/stplugin.c +curl -LO https://docs.sheetjs.com/plugins/stplugin.h +``` + +::: + 4) Download Duktape. In Windows, the following commands should be run in WSL. In macOS, the commands should be run in the same Terminal session. @@ -463,67 +479,32 @@ The output will show the import result: (2 vars, 5 obs) -20) Open the Data Editor (in Browse or Edit mode) and compare to the screenshot: +20) List the dataset: ```stata -browse Name Index +list Name Index ``` +The result should match the following listing: + +``` +. list Name Index + + +----------------------+ + | Name Index | + |----------------------| + 1. | Bill Clinton 42 | + 2. | GeorgeW Bush 43 | + 3. | Barack Obama 44 | + 4. | Donald Trump 45 | + 5. | Joseph Biden 46 | + +----------------------+ +``` + +In the Stata GUI, the Data Editor should match the following screenshot: + ![Data Editor showing data from the file](pathname:///stata/data-editor.png) -:::info pass - -In the terminal version of Stata, `browse` does not work: - -``` -. browse Name Index -command browse is unrecognized -r(199); -``` - -The `codebook` command will display details. - -
- Expected Output (click to show) - -```text title="Expected output for 80-column terminal windows" -------------------------------------------------------------------------------- -Name Name -------------------------------------------------------------------------------- - - Type: String (str12) - - Unique values: 5 Missing "": 0/5 - - Tabulation: Freq. Value - 1 "Barack Obama" - 1 "Bill Clinton" - 1 "Donald Trump" - 1 "GeorgeW Bush" - 1 "Joseph Biden" - - Warning: Variable has embedded blanks. - -------------------------------------------------------------------------------- -Index Index -------------------------------------------------------------------------------- - - Type: Numeric (byte) - - Range: [42,46] Units: 1 - Unique values: 5 Missing .: 0/5 - - Tabulation: Freq. Value - 1 42 - 1 43 - 1 44 - 1 45 - 1 46 -``` - -
- -::: [^1]: Run `help import excel` in Stata or see ["import excel"](https://www.stata.com/manuals/dimportexcel.pdf) in the Stata documentation. [^2]: See [`read` in "Reading Files"](/docs/api/parse-options) diff --git a/docz/docs/03-demos/42-engines/01-duktape.md b/docz/docs/03-demos/42-engines/01-duktape.md index f3046fe..4351bd4 100644 --- a/docz/docs/03-demos/42-engines/01-duktape.md +++ b/docz/docs/03-demos/42-engines/01-duktape.md @@ -130,7 +130,7 @@ This demo was tested in the following deployments: |:-------------|:--------|:-----------| | `darwin-x64` | `2.7.0` | 2025-03-31 | | `darwin-arm` | `2.7.0` | 2025-02-13 | -| `win11-x64` | `2.7.0` | 2024-12-20 | +| `win11-x64` | `2.7.0` | 2025-04-28 | | `win11-arm` | `2.7.0` | 2025-02-23 | | `linux-x64` | `2.7.0` | 2025-04-21 | | `linux-arm` | `2.7.0` | 2025-02-15 | @@ -692,7 +692,7 @@ The main Duktape code can be added to the Zig build pipeline. :::note pass -The following explanation was verified against Zig 0.12.0. +The following explanation was verified against Zig 0.14.0. ::: @@ -710,7 +710,7 @@ folder must be added to the include path list: ``` The `duktape.c` source file must be added to the build sequence. For Zig version -0.12.0, Duktape must be compiled with flags `-std=c99 -fno-sanitize=undefined` +0.14.0, Duktape must be compiled with flags `-std=c99 -fno-sanitize=undefined` and linked against `libc` and `libm`: ```zig title="build.zig" @@ -786,7 +786,7 @@ This demo was tested in the following deployments: |:-------------|:--------|:---------|:-----------| | `darwin-x64` | `2.7.0` | `0.14.0` | 2025-03-31 | | `darwin-arm` | `2.7.0` | `0.13.0` | 2025-02-13 | -| `win11-x64` | `2.7.0` | `0.13.0` | 2024-12-20 | +| `win11-x64` | `2.7.0` | `0.14.0` | 2025-04-28 | | `win11-arm` | `2.7.0` | `0.13.0` | 2025-02-23 | | `linux-x64` | `2.7.0` | `0.14.0` | 2025-04-21 | | `linux-arm` | `2.7.0` | `0.13.0` | 2025-02-15 | @@ -855,8 +855,8 @@ The following commands should be run within WSL bash. For X64 Windows: ```bash -curl -LO https://ziglang.org/download/0.13.0/zig-windows-x86_64-0.13.0.zip -unzip zig-windows-x86_64-0.13.0.zip +curl -LO https://ziglang.org/download/0.14.0/zig-windows-x86_64-0.14.0.zip +unzip zig-windows-x86_64-0.14.0.zip ``` For ARM64 Windows: diff --git a/docz/docs/03-demos/42-engines/02-v8.md b/docz/docs/03-demos/42-engines/02-v8.md index f8d6525..6310809 100644 --- a/docz/docs/03-demos/42-engines/02-v8.md +++ b/docz/docs/03-demos/42-engines/02-v8.md @@ -1484,6 +1484,7 @@ This demo was last tested in the following deployments: |:-------------|:--------------|:---------|:-----------| | `darwin-x64` | `13.1.201.22` | `3.13.1` | 2025-03-31 | | `darwin-arm` | `13.1.201.22` | `3.13.2` | 2025-04-24 | +| `win11-x64` | `13.1.201.22` | `3.11.9` | 2025-04-28 | ::: @@ -1548,6 +1549,26 @@ python sheetjs-stpyv8.py pres.xlsx The script will display CSV rows from the first worksheet. It will also create `SheetJSSTPyV8.xlsb`, a workbook that can be opened with a spreadsheet editor. +:::caution pass + +On Windows, this may fail with a `charmap` error: + +``` + return codecs.charmap_decode(input,self.errors,decoding_table)[0] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 380: character maps to +``` + +`sheetjs-stpyv8.py` must be altered to read `xlsx.full.min.js` with mode `rb`: + +```python title="sheetjs-stpyv8.py (edit highlighted line)" +# Read xlsx.full.min.js +# highlight-next-line +with open("xlsx.full.min.js", "rb") as f: +``` + +::: + ## Snapshots At a high level, V8 snapshots are raw dumps of the V8 engine state. It is much diff --git a/docz/docs/03-demos/42-engines/03-rhino.md b/docz/docs/03-demos/42-engines/03-rhino.md index bb6cba0..c69d063 100644 --- a/docz/docs/03-demos/42-engines/03-rhino.md +++ b/docz/docs/03-demos/42-engines/03-rhino.md @@ -30,22 +30,23 @@ This demo was tested in the following deployments: | OpenJDK | Rhino | Date | |:--------|:---------|:-----------| -| 23.0.1 | `1.7.15` | 2025-01-10 | -| 22.0.2 | `1.7.15` | 2025-01-10 | -| 21.0.5 | `1.7.15` | 2025-01-10 | -| 20.0.2 | `1.7.15` | 2025-01-10 | -| 19.0.2 | `1.7.15` | 2025-01-10 | -| 18.0.2 | `1.7.15` | 2025-01-10 | -| 17.0.13 | `1.7.15` | 2025-01-10 | -| 16.0.2 | `1.7.15` | 2025-01-10 | -| 15.0.2 | `1.7.15` | 2025-01-10 | -| 14.0.2 | `1.7.15` | 2025-01-10 | -| 13.0.2 | `1.7.15` | 2025-01-10 | -| 12.0.2 | `1.7.15` | 2025-01-10 | -| 11.0.25 | `1.7.15` | 2025-01-10 | -| 10.0.2 | `1.7.15` | 2025-01-10 | -| 9.0.4 | `1.7.15` | 2025-01-10 | -| 1.8.0 | `1.7.15` | 2025-01-10 | +| 24.0.1 | `1.7.15` | 2025-05-06 | +| 23.0.2 | `1.7.15` | 2025-05-06 | +| 22.0.2 | `1.7.15` | 2025-05-06 | +| 21.0.7 | `1.7.15` | 2025-05-06 | +| 20.0.2 | `1.7.15` | 2025-05-06 | +| 19.0.2 | `1.7.15` | 2025-05-06 | +| 18.0.2 | `1.7.15` | 2025-05-06 | +| 17.0.15 | `1.7.15` | 2025-05-06 | +| 16.0.1 | `1.7.15` | 2025-05-06 | +| 15.0.10 | `1.7.15` | 2025-05-06 | +| 14.0.2 | `1.7.15` | 2025-05-06 | +| 13.0.2 | `1.7.15` | 2025-05-06 | +| 12.0.1 | `1.7.15` | 2025-05-06 | +| 11.0.27 | `1.7.15` | 2025-05-06 | +| 10 | `1.7.15` | 2025-05-06 | +| 9.0.4 | `1.7.15` | 2025-05-06 | +| 1.8.0 | `1.7.15` | 2025-05-06 | ::: diff --git a/docz/docs/03-demos/42-engines/05-jint.md b/docz/docs/03-demos/42-engines/05-jint.md index ef95377..1cf72f9 100644 --- a/docz/docs/03-demos/42-engines/05-jint.md +++ b/docz/docs/03-demos/42-engines/05-jint.md @@ -165,7 +165,7 @@ This demo was tested in the following deployments: |:-------------|:--------|:-----------| | `darwin-x64` | `4.2.1` | 2025-03-31 | | `darwin-arm` | `4.2.0` | 2025-02-13 | -| `win11-x64` | `4.1.0` | 2024-12-20 | +| `win11-x64` | `4.2.2` | 2026-04-28 | | `win11-arm` | `4.2.0` | 2025-02-23 | | `linux-x64` | `4.1.0` | 2025-01-09 | | `linux-arm` | `4.2.0` | 2025-02-15 | @@ -248,7 +248,7 @@ dotnet run ```bash dotnet nuget add source https://www.myget.org/F/jint/api/v3/index.json -dotnet add package Jint --version 4.2.1 +dotnet add package Jint --version 4.2.2 ``` To verify Jint is installed, replace `Program.cs` with the following: @@ -283,6 +283,25 @@ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js curl -LO https://docs.sheetjs.com/pres.xlsx`} +:::caution pass + +PowerShell `curl` is incompatible with the official `curl` program. The command +may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'LO'. +``` + +`curl.exe` must be used instead: + +{`\ +curl.exe -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/shim.min.js +curl.exe -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js +curl.exe -LO https://docs.sheetjs.com/pres.xlsx`} + + +::: + 6) Replace `Program.cs` with the following: ```csharp title="Program.cs" @@ -499,7 +518,7 @@ cp bin/Release/net*/linux-arm64/publish/SheetJSJint . For Windows 11 x64, the RID is `win-x64` and the command is: ```powershell -copy .\bin\Release\net9.0\win-x64\publish\SheetJSJint.exe . +copy .\bin\Release\net*\win-x64\publish\SheetJSJint.exe . ``` :::caution pass @@ -513,7 +532,7 @@ The system cannot find the path specified. The correct command was ```powershell -copy .\bin\x64\Release\net9.0\win-x64\publish\SheetJSJint.exe . +copy .\bin\x64\Release\net*\win-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 2d7a97b..24f8c0d 100644 --- a/docz/docs/03-demos/42-engines/06-goja.md +++ b/docz/docs/03-demos/42-engines/06-goja.md @@ -107,7 +107,7 @@ This demo was tested in the following deployments: |:-------------|:-----------|:-----------|:-----------| | `darwin-x64` | `bcd7cc6` | `1.24.1` | 2025-03-31 | | `darwin-arm` | `5ef83b8` | `1.24.0` | 2025-02-13 | -| `win11-x64` | `79f3a7e` | `1.23.4` | 2024-12-20 | +| `win11-x64` | `bcd7cc6` | `1.24.2` | 2025-04-28 | | `win11-arm` | `5ef83b8` | `1.24.0` | 2025-02-23 | | `linux-x64` | `79f3a7e` | `1.22.0` | 2025-01-02 | | `linux-arm` | `5ef83b8` | `1.19.8` | 2025-02-15 | @@ -141,12 +141,48 @@ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js curl -LO https://docs.sheetjs.com/pres.numbers`} +:::caution pass + +PowerShell `curl` is incompatible with the official `curl` program. The command +may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'LO'. +``` + +`curl.exe` must be used instead: + +{`\ +curl.exe -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/shim.min.js +curl.exe -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js +curl.exe -LO https://docs.sheetjs.com/pres.numbers`} + + +::: + 2) Download [`SheetGoja.go`](pathname:///goja/SheetGoja.go): ```bash curl -LO https://docs.sheetjs.com/goja/SheetGoja.go ``` +:::caution pass + +PowerShell `curl` is incompatible with the official `curl` program. The command +may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'LO'. +``` + +`curl.exe` must be used instead: + +```bash +curl.exe -LO https://docs.sheetjs.com/goja/SheetGoja.go +``` + +::: + 3) Build the standalone `SheetGoja` binary: ```bash diff --git a/docz/docs/03-demos/42-engines/07-nashorn.md b/docz/docs/03-demos/42-engines/07-nashorn.md index a27be2c..f75e4b2 100644 --- a/docz/docs/03-demos/42-engines/07-nashorn.md +++ b/docz/docs/03-demos/42-engines/07-nashorn.md @@ -105,22 +105,23 @@ This demo was tested in the following deployments: | OpenJDK | Nashorn | Date | |:--------|:----------------|:-----------| -| 23.0.1 | 15.4 standalone | 2024-12-17 | -| 22.0.2 | 15.4 standalone | 2024-12-17 | -| 21.0.5 | 15.4 standalone | 2024-12-17 | -| 20.0.2 | 15.4 standalone | 2024-12-17 | -| 19.0.2 | 15.4 standalone | 2024-12-17 | -| 18.0.2 | 15.4 standalone | 2024-12-17 | -| 17.0.13 | 15.4 standalone | 2024-12-17 | -| 16.0.1 | 15.4 standalone | 2024-12-17 | -| 15.0.10 | 15.4 standalone | 2024-12-17 | -| 14.0.2 | Built-in | 2024-12-17 | -| 13.0.14 | Built-in | 2024-12-17 | -| 12.0.2 | Built-in | 2024-12-17 | -| 11.0.25 | Built-in | 2024-12-17 | -| 10.0.2 | Built-in | 2024-12-17 | -| 9 | Built-in | 2024-12-17 | -| 1.8.0 | Built-in | 2024-12-17 | +| 24.0.1 | 15.4 standalone | 2025-05-06 | +| 23.0.2 | 15.4 standalone | 2025-05-06 | +| 22.0.2 | 15.4 standalone | 2025-05-06 | +| 21.0.7 | 15.4 standalone | 2025-05-06 | +| 20.0.2 | 15.4 standalone | 2025-05-06 | +| 19.0.2 | 15.4 standalone | 2025-05-06 | +| 18.0.2 | 15.4 standalone | 2025-05-06 | +| 17.0.15 | 15.4 standalone | 2025-05-06 | +| 16.0.1 | 15.4 standalone | 2025-05-06 | +| 15.0.10 | 15.4 standalone | 2025-05-06 | +| 14.0.2 | Built-in | 2025-05-06 | +| 13.0.2 | Built-in | 2025-05-06 | +| 12.0.1 | Built-in | 2025-05-06 | +| 11.0.27 | Built-in | 2025-05-06 | +| 10 | Built-in | 2025-05-06 | +| 9.0.4 | Built-in | 2025-05-06 | +| 1.8.0 | Built-in | 2025-05-06 | ::: diff --git a/docz/docs/03-demos/42-engines/09-hermes.md b/docz/docs/03-demos/42-engines/09-hermes.md index 6603efd..86921f7 100644 --- a/docz/docs/03-demos/42-engines/09-hermes.md +++ b/docz/docs/03-demos/42-engines/09-hermes.md @@ -374,7 +374,7 @@ fork, which powers React Native for Windows, does have built-in support[^5] | Architecture | Git Commit | Date | |:-------------|:-----------|:-----------| -| `win11-x64` | `4c64b05` | 2024-12-20 | +| `win11-x64` | `254fb48` | 2025-04-28 | | `win11-arm` | `4c64b05` | 2025-02-23 | The ["Windows Example"](#windows-example) covers `hermes-windows`. @@ -690,7 +690,7 @@ cd sheetjs-hermes ```bash git clone https://github.com/microsoft/hermes-windows cd hermes-windows -git checkout 4c64b05 +git checkout 254fb48 cd .. ``` @@ -849,7 +849,7 @@ This demo was tested in the following deployments: |:-------------|:---------|:-----------| | `darwin-x64` | `0.13.0` | 2025-03-31 | | `darwin-arm` | `0.13.0` | 2025-04-23 | -| `win11-x64` | `0.13.0` | 2024-12-20 | +| `win11-x64` | `0.13.0` | 2025-04-28 | | `win11-arm` | `0.13.0` | 2025-02-23 | | `linux-x64` | `0.13.0` | 2025-04-21 | diff --git a/docz/docs/03-demos/42-engines/15-rb.md b/docz/docs/03-demos/42-engines/15-rb.md index c1442cc..82b2108 100644 --- a/docz/docs/03-demos/42-engines/15-rb.md +++ b/docz/docs/03-demos/42-engines/15-rb.md @@ -89,7 +89,7 @@ This demo was tested in the following deployments: |:-------------|:---------|:---------|:-----------| | `darwin-x64` | `2.6.10` | `2.10.0` | 2025-03-31 | | `darwin-arm` | `2.6.10` | `2.10.0` | 2025-02-13 | -| `win11-x64` | `3.3.6` | `2.10.0` | 2024-12-20 | +| `win11-x64` | `3.3.8` | `2.10.0` | 2025-04-28 | | `win11-arm` | `3.2.3` | `2.10.0` | 2025-02-23 | | `linux-x64` | `3.2.3` | `2.10.0` | 2025-04-21 | | `linux-arm` | `3.1.2` | `2.10.0` | 2025-02-15 | @@ -157,12 +157,47 @@ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js curl -LO https://docs.sheetjs.com/pres.numbers`} +:::caution pass + +PowerShell `curl` is incompatible with the official `curl` program. The command +may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'LO'. +``` + +`curl.exe` must be used instead: + +{`\ +curl.exe -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js +curl.exe -LO https://docs.sheetjs.com/pres.numbers`} + + +::: + 3) Download [`ExecSheetJS.rb`](pathname:///execjs/ExecSheetJS.rb): ```bash curl -LO https://docs.sheetjs.com/execjs/ExecSheetJS.rb ``` +:::caution pass + +PowerShell `curl` is incompatible with the official `curl` program. The command +may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'LO'. +``` + +`curl.exe` must be used instead: + +```bash +curl.exe -LO https://docs.sheetjs.com/execjs/ExecSheetJS.rb +``` + +::: + 4) Run the demo: ```bash diff --git a/docz/docs/03-demos/42-engines/20-chakra.md b/docz/docs/03-demos/42-engines/20-chakra.md index 1b29a2e..c22eacb 100644 --- a/docz/docs/03-demos/42-engines/20-chakra.md +++ b/docz/docs/03-demos/42-engines/20-chakra.md @@ -134,7 +134,7 @@ This demo was tested in the following deployments: |:-------------|:-----------|:-----------| | `darwin-x64` | `36becec` | 2025-03-31 | | `darwin-arm` | `e26c81f` | 2025-01-13 | -| `win11-x64` | `e26c81f` | 2024-12-19 | +| `win11-x64` | `36becec` | 2025-04-28 | | `win11-arm` | `e26c81f` | 2025-02-23 | | `linux-x64` | `e26c81f` | 2025-01-09 | @@ -575,7 +575,7 @@ If successful, the program will print the contents of the first sheet as CSV. :::note Tested Deployments -This demo was last tested on 2025-03-31 against `ch` commit `36becec`. +This demo was last tested on 2025-04-28 against `ch` commit `36becec`. ::: diff --git a/docz/docs/03-demos/42-engines/21-boa.md b/docz/docs/03-demos/42-engines/21-boa.md index c0368ab..330c179 100644 --- a/docz/docs/03-demos/42-engines/21-boa.md +++ b/docz/docs/03-demos/42-engines/21-boa.md @@ -106,7 +106,7 @@ This demo was tested in the following deployments: |:-------------|:---------|:-----------| | `darwin-x64` | `0.20.0` | 2025-03-31 | | `darwin-arm` | `0.20.0` | 2025-02-13 | -| `win11-x64` | `0.20.0` | 2024-12-19 | +| `win11-x64` | `0.20.0` | 2025-04-28 | | `win11-arm` | `0.20.0` | 2025-02-23 | | `linux-x64` | `0.20.0` | 2025-04-21 | | `linux-arm` | `0.20.0` | 2025-02-15 | @@ -152,12 +152,47 @@ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js curl -LO https://docs.sheetjs.com/pres.xlsx`} +:::caution pass + +PowerShell `curl` is incompatible with the official `curl` program. The command +may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'LO'. +``` + +`curl.exe` must be used instead: + +{`\ +curl.exe -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js +curl.exe -LO https://docs.sheetjs.com/pres.xlsx`} + + +::: + 4) Download [`main.rs`](pathname:///boa/main.rs) and replace `src/main.rs`: ```bash curl -L -o src/main.rs https://docs.sheetjs.com/boa/main.rs ``` +:::caution pass + +PowerShell `curl` is incompatible with the official `curl` program. The command +may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'LO'. +``` + +`curl.exe` must be used instead: + +```bash +curl.exe -L -o src/main.rs https://docs.sheetjs.com/boa/main.rs +``` + +::: + 5) Build and run the app in release mode: ```bash diff --git a/docz/docs/03-demos/42-engines/24-graaljs.md b/docz/docs/03-demos/42-engines/24-graaljs.md index 123706a..50ecc2e 100644 --- a/docz/docs/03-demos/42-engines/24-graaljs.md +++ b/docz/docs/03-demos/42-engines/24-graaljs.md @@ -54,13 +54,14 @@ This demo was tested in the following deployments: | OpenJDK | GraalJS | Date | |:--------|:--------|:-----------| -| 23.0.1 | 24.1.1 | 2024-12-17 | -| 22.0.2 | 24.1.1 | 2024-12-17 | -| 21.0.5 | 24.1.1 | 2024-12-17 | -| 20.0.2 | 24.1.1 | 2024-12-17 | -| 19.0.2 | 24.1.1 | 2024-12-17 | -| 18.0.2 | 24.1.1 | 2024-12-17 | -| 17.0.13 | 24.1.1 | 2024-12-17 | +| 24.0.1 | 24.2.1 | 2025-05-06 | +| 23.0.2 | 24.2.1 | 2025-05-06 | +| 22.0.2 | 24.2.1 | 2025-05-06 | +| 21.0.7 | 24.2.1 | 2025-05-06 | +| 20.0.2 | 24.2.1 | 2025-05-06 | +| 19.0.2 | 24.2.1 | 2025-05-06 | +| 18.0.2 | 24.2.1 | 2025-05-06 | +| 17.0.15 | 24.2.1 | 2025-05-06 | ::: @@ -69,14 +70,14 @@ This demo was tested in the following deployments: 0) Download GraalJS and its dependencies: ```bash -curl -LO "https://repo1.maven.org/maven2/org/graalvm/js/js-scriptengine/24.1.1/js-scriptengine-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/js/js-language/24.1.1/js-language-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/polyglot/polyglot/24.1.1/polyglot-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/sdk/collections/24.1.1/collections-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/truffle/truffle-api/24.1.1/truffle-api-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/sdk/nativeimage/24.1.1/nativeimage-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/shadowed/icu4j/24.1.1/icu4j-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/regex/regex/24.1.1/regex-24.1.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/js/js-scriptengine/24.2.1/js-scriptengine-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/js/js-language/24.2.1/js-language-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/polyglot/polyglot/24.2.1/polyglot-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/sdk/collections/24.2.1/collections-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/truffle/truffle-api/24.2.1/truffle-api-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/sdk/nativeimage/24.2.1/nativeimage-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/shadowed/icu4j/24.2.1/icu4j-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/regex/regex/24.2.1/regex-24.2.1.jar" ``` 1) Download the SheetJS Standalone script, shim script and test file. Move all @@ -117,14 +118,14 @@ CSV rows from the first worksheet. ```bash -java -cp ".:js-scriptengine-24.1.1.jar:js-language-24.1.1.jar:polyglot-24.1.1.jar:collections-24.1.1.jar:truffle-api-24.1.1.jar:nativeimage-24.1.1.jar:icu4j-24.1.1.jar:regex-24.1.1.jar" -Dpolyglot.js.nashorn-compat=true SheetJSNashorn pres.xlsx +java -cp ".:js-scriptengine-24.2.1.jar:js-language-24.2.1.jar:polyglot-24.2.1.jar:collections-24.2.1.jar:truffle-api-24.2.1.jar:nativeimage-24.2.1.jar:icu4j-24.2.1.jar:regex-24.2.1.jar" -Dpolyglot.js.nashorn-compat=true SheetJSNashorn pres.xlsx ``` ```bash -java -cp ".;js-scriptengine-24.1.1.jar;js-language-24.1.1.jar;polyglot-24.1.1.jar;collections-24.1.1.jar;truffle-api-24.1.1.jar;nativeimage-24.1.1.jar;icu4j-24.1.1.jar;regex-24.1.1.jar" -D"polyglot.js.nashorn-compat=true" SheetJSNashorn pres.xlsx +java -cp ".;js-scriptengine-24.2.1.jar;js-language-24.2.1.jar;polyglot-24.2.1.jar;collections-24.2.1.jar;truffle-api-24.2.1.jar;nativeimage-24.2.1.jar;icu4j-24.2.1.jar;regex-24.2.1.jar" -D"polyglot.js.nashorn-compat=true" SheetJSNashorn pres.xlsx ``` @@ -154,14 +155,14 @@ cd sheethorn ```bash -java -cp ".:js-scriptengine-24.1.1.jar:js-language-24.1.1.jar:polyglot-24.1.1.jar:collections-24.1.1.jar:truffle-api-24.1.1.jar:nativeimage-24.1.1.jar:icu4j-24.1.1.jar:regex-24.1.1.jar:SheetJSNashorn.jar" -Dpolyglot.js.nashorn-compat=true SheetJSNashorn pres.xlsx +java -cp ".:js-scriptengine-24.2.1.jar:js-language-24.2.1.jar:polyglot-24.2.1.jar:collections-24.2.1.jar:truffle-api-24.2.1.jar:nativeimage-24.2.1.jar:icu4j-24.2.1.jar:regex-24.2.1.jar:SheetJSNashorn.jar" -Dpolyglot.js.nashorn-compat=true SheetJSNashorn pres.xlsx ``` ```bash -java -cp ".;js-scriptengine-24.1.1.jar;js-language-24.1.1.jar;polyglot-24.1.1.jar;collections-24.1.1.jar;truffle-api-24.1.1.jar;nativeimage-24.1.1.jar;icu4j-24.1.1.jar;regex-24.1.1.jar;SheetJSNashorn.jar" -D"polyglot.js.nashorn-compat=true" SheetJSNashorn pres.xlsx +java -cp ".;js-scriptengine-24.2.1.jar;js-language-24.2.1.jar;polyglot-24.2.1.jar;collections-24.2.1.jar;truffle-api-24.2.1.jar;nativeimage-24.2.1.jar;icu4j-24.2.1.jar;regex-24.2.1.jar;SheetJSNashorn.jar" -D"polyglot.js.nashorn-compat=true" SheetJSNashorn pres.xlsx ``` diff --git a/docz/static/stata/stplugin.c b/docz/static/stata/stplugin.c new file mode 100644 index 0000000..93a017d --- /dev/null +++ b/docz/static/stata/stplugin.c @@ -0,0 +1,14 @@ +/* + stplugin.c, version 3.0 + copyright (c) 2003, 2006, 2015 StataCorp LP +*/ + +#include "stplugin.h" + +ST_plugin *_stata_ ; + +STDLL pginit(ST_plugin *p) +{ + _stata_ = p ; + return(SD_PLUGINVER) ; +} diff --git a/docz/static/stata/stplugin.h b/docz/static/stata/stplugin.h new file mode 100644 index 0000000..84fc13f --- /dev/null +++ b/docz/static/stata/stplugin.h @@ -0,0 +1,246 @@ +/* + stplugin.h, version 3.0.0 + copyright (c) 2003, 2004, 2006, 2015 StataCorp LP +*/ +#if !defined(STPLUGIN_H) +#define STPLUGIN_H + +#if !defined(SD_FASTMODE) +#define SD_SAFEMODE +#endif + +#define HP9000 1 +#define OPUNIX 2 +#define APPLEMAC 3 +#define STWIN32 4 + +#ifndef SYSTEM +#define SYSTEM STWIN32 +#endif + +typedef signed char ST_sbyte ; +typedef unsigned char ST_ubyte ; +typedef int ST_int ; +typedef unsigned ST_unsigned ; +typedef short int ST_int2 ; +typedef int ST_int4 ; +typedef long ST_long ; +typedef unsigned int ST_uint4 ; +typedef float ST_float ; +typedef double ST_double ; +typedef unsigned char ST_boolean ; +typedef int ST_retcode ; +typedef double * ST_dmkey ; + +#if !defined(bTrue) +#define bTrue 1 +#define bFalse 0 +#endif + +#define SF_HIWORD(x) ((ST_int2)((ST_int4)(x)>>16)) +#define SF_LOWORD(x) ((ST_int2)(x)) +#define SF_MAKELONG(x,y) ((ST_int4)(((ST_int2)(x))|((ST_int4)((ST_int2)(y)))<<16)) + +#if SYSTEM==STWIN32 +#if __cplusplus +#define STDLL extern "C" __declspec(dllexport) ST_retcode +#else +#define STDLL extern __declspec(dllexport) ST_retcode +#endif +#endif + +#if SYSTEM!=STWIN32 +#if SYSTEM==HP9000 +#include +#endif + +#if SYSTEM==OPUNIX +#include +#endif + +#if __cplusplus +#define STDLL extern "C" ST_retcode +#else +#define STDLL ST_retcode +#endif +#define LPSTR char * +#endif + +typedef struct { + ST_int type ; + ST_int nel ; + ST_int m ; + ST_int n ; +} ST_matinfo ; + +#define SD_PLUGINMAJ 3 +#define SD_PLUGINMIN 0 +#define SD_PLUGINVER SF_MAKELONG(SD_PLUGINMAJ,SD_PLUGINMIN) + +typedef void (* ST_VV) (void) ; +typedef ST_int (* ST_IV) (void) ; +typedef ST_int (* ST_IS) (char *) ; +typedef void (* ST_VU) (ST_ubyte) ; +typedef ST_boolean (* ST_BI) (ST_int) ; +typedef ST_boolean (* ST_BII) (ST_int,ST_int) ; +typedef ST_boolean (* ST_BD) (ST_double) ; +typedef ST_int (* ST_III) (ST_int,ST_int) ; +typedef ST_double (* ST_DII) (ST_int,ST_int) ; +typedef ST_double (* ST_DV) (void) ; +typedef ST_double (* ST_DD) (ST_double) ; +typedef ST_double (* ST_DDD) (ST_double,ST_double) ; +typedef ST_int (* ST_ISS) (char *,char *) ; +typedef ST_int (* ST_ISI) (char *,ST_int) ; +typedef ST_int (* ST_ISSI) (char *,char *,ST_int) ; +typedef void (* ST_VSD) (char *,ST_double) ; +typedef ST_int (* ST_ISD) (char *, ST_double) ; +typedef ST_int (* ST_ISDp) (char *,ST_double *) ; +typedef ST_int (* ST_ISDpIIIII) (char *,ST_int,ST_double *,ST_int,ST_int,ST_int,ST_int,ST_int) ; +typedef ST_int (* ST_ISIID) (char *, ST_int, ST_int, ST_double) ; +typedef ST_int (* ST_ISIIDp) (char *,ST_int,ST_int,ST_double *) ; +typedef ST_int (* ST_ISDpI) (char *,ST_double *,ST_int) ; +typedef void (* ST_VSMip) (char *,ST_matinfo *) ; +typedef ST_int (* ST_IIIDp) (ST_int, ST_int, ST_double *) ; +typedef ST_int (* ST_IIID) (ST_int, ST_int, ST_double) ; +typedef char * (* ST_SSI) (char *,ST_int) ; +typedef char * (* ST_SSSD) (char *,char *,ST_double) ; +typedef char * (* ST_SSSDM) (char *,char *,ST_double, ST_dmkey) ; +typedef ST_int (* ST_IIIS) (ST_int, ST_int, char *) ; +typedef ST_int (* ST_IIISI) (ST_int, ST_int, char *, ST_int) ; + +typedef struct { + ST_IS spoutsml ; + ST_IS spoutnosml ; + ST_VV spoutflush ; + ST_VU set_outputlevel ; + ST_ISI get_input ; + + ST_IV pollstd ; + ST_IV pollnow ; + + ST_SSSD safereforms ; + ST_SSSDM safereforml ; + + ST_SSI gettok ; + + ST_ISS macresave ; + ST_ISSI macuse ; + + ST_ISDp scalaruse ; + ST_ISDp scalarsave ; + + ST_ISDpIIIII matrixstore ; + ST_ISDpI matrixload ; + ST_VSMip matrixinfo ; + ST_ISIIDp matrixel ; + ST_int matsize ; + + ST_DII data, safedata ; + + ST_IV nobs ; + ST_IV nvar ; + + ST_double missval ; + ST_BD ismissing ; + + ST_ISI stfindvar ; + ST_BI isstr ; + ST_VSD abvarfcn ; + + ST_int *stopflag ; + + ST_DDD stround ; + ST_DD stsqrt ; + ST_DDD stpow ; + ST_DD stlog ; + ST_DD stexp ; + ST_DV strandom ; + + ST_IIID store ; + ST_IIID safestore ; + ST_IIIS sstore ; + ST_BI selobs ; + ST_IV nobs1 ; + ST_IV nobs2 ; + ST_IV nvars ; + ST_IS spouterr ; + ST_ISIIDp safematel ; + ST_ISIID safematstore ; + ST_ISIIDp matel ; + ST_ISIID matstore ; + ST_IIIDp safevdata ; + ST_IIIDp vdata ; + ST_IS colsof ; + ST_IS rowsof ; + ST_ISD scalsave ; + + ST_IIIS sdata ; + + ST_int2 major ; + ST_int2 minor ; + ST_BI isstrl ; + ST_BII isbinary ; + ST_III sdatalen ; + ST_IIISI strldata ; +} ST_plugin ; + + +#if __cplusplus +extern "C" ST_plugin *_stata_ ; +#else +extern ST_plugin *_stata_ ; +#endif +STDLL pginit(ST_plugin *p) ; + +#define SF_display(a) ((_stata_)->spoutsml((a))) +#define SF_error(a) ((_stata_)->spouterr((a))) + +#define SF_poll ((_stata_)->pollstd) +#define SW_stopflag (*((_stata_)->stopflag)) + +#define SF_macro_save(m,t) ((_stata_)->macresave((m),(t))) +#define SF_macro_use(m,d,l) ((_stata_)->macuse((m),(d),(l))) + +#define SF_scal_use(s,d) ((_stata_)->scalaruse((s),(d))) +#define SF_scal_save(s,d) ((_stata_)->scalsave((s),(d))) + +#if defined(SD_SAFEMODE) +#define SF_mat_el(s,r,c,d) ((_stata_)->safematel((s),(r),(c),(d))) +#define SF_mat_store(s,r,c,d) ((_stata_)->safematstore((s),(r),(c),(d))) +#else +#define SF_mat_el(s,r,c,d) ((_stata_)->matel((s),(r),(c),(d))) +#define SF_mat_store(s,r,c,d) ((_stata_)->matstore((s),(r),(c),(d))) +#endif +#define SV_matsize ((_stata_)->matsize) +#define SF_col(s) ((_stata_)->colsof((s))) +#define SF_row(s) ((_stata_)->rowsof((s))) + +#if defined(SD_SAFEMODE) +#define SF_vdata(i,j,d) ((_stata_)->safevdata((i),(j),(d))) +#define SF_vstore(i,j,v) ((_stata_)->safestore((i),(j),(v))) +#else +#define SF_vdata(i,j,d) ((_stata_)->vdata((i),(j),(d))) +#define SF_vstore(i,j,v) ((_stata_)->store((i),(j),(v))) +#endif + +#define SF_nobs ((_stata_)->nobs) +#define SF_in1 ((_stata_)->nobs1) +#define SF_in2 ((_stata_)->nobs2) +#define SF_nvar ((_stata_)->nvar) +#define SF_nvars ((_stata_)->nvars) + +#define SF_sstore(i,j,s) ((_stata_)->sstore((i),(j),(s))) +#define SF_sdata(i,j,s) ((_stata_)->sdata((i),(j),(s))) +#define SF_strldata(i,j,s,l) ((_stata_)->strldata((i),(j),(s),(l))) + +#define SF_sdatalen(i,j) ((_stata_)->sdatalen((i),(j))) +#define SF_var_is_string(a) ((_stata_)->isstr(a)) +#define SF_var_is_strl(a) ((_stata_)->isstrl(a)) +#define SF_var_is_binary(i,j) ((_stata_)->isbinary((i),(j))) + +#define SV_missval ((_stata_)->missval) + +#define SF_is_missing(z) ((_stata_)->ismissing(z)) +#define SF_ifobs(z) ((_stata_)->selobs(z)) + +#endif diff --git a/tests/engines-graaljs.sh b/tests/engines/graaljs.sh similarity index 66% rename from tests/engines-graaljs.sh rename to tests/engines/graaljs.sh index fe3a8d8..f002e0d 100755 --- a/tests/engines-graaljs.sh +++ b/tests/engines/graaljs.sh @@ -5,14 +5,14 @@ rm -rf sheetjs-graaljs mkdir -p sheetjs-graaljs cd sheetjs-graaljs -curl -LO "https://repo1.maven.org/maven2/org/graalvm/js/js-scriptengine/24.1.1/js-scriptengine-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/js/js-language/24.1.1/js-language-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/polyglot/polyglot/24.1.1/polyglot-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/sdk/collections/24.1.1/collections-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/truffle/truffle-api/24.1.1/truffle-api-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/sdk/nativeimage/24.1.1/nativeimage-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/shadowed/icu4j/24.1.1/icu4j-24.1.1.jar" -curl -LO "https://repo1.maven.org/maven2/org/graalvm/regex/regex/24.1.1/regex-24.1.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/js/js-scriptengine/24.2.1/js-scriptengine-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/js/js-language/24.2.1/js-language-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/polyglot/polyglot/24.2.1/polyglot-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/sdk/collections/24.2.1/collections-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/truffle/truffle-api/24.2.1/truffle-api-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/sdk/nativeimage/24.2.1/nativeimage-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/shadowed/icu4j/24.2.1/icu4j-24.2.1.jar" +curl -LO "https://repo1.maven.org/maven2/org/graalvm/regex/regex/24.2.1/regex-24.2.1.jar" curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/shim.min.js @@ -20,19 +20,19 @@ curl -LO https://sheetjs.com/pres.xlsx curl -LO https://docs.sheetjs.com/nashorn/SheetJSNashorn.java -for n in {17..23}; do +for n in {17..24}; do export JAVA_HOME=`/usr/libexec/java_home -v $n` java -version rm -fr SheetJSNashorn.class SheetJSNashorn.jar sheethorn javac SheetJSNashorn.java - java -cp ".:js-scriptengine-24.1.1.jar:js-language-24.1.1.jar:polyglot-24.1.1.jar:collections-24.1.1.jar:truffle-api-24.1.1.jar:nativeimage-24.1.1.jar:icu4j-24.1.1.jar:regex-24.1.1.jar" -Dpolyglot.js.nashorn-compat=true SheetJSNashorn pres.xlsx + java -cp ".:js-scriptengine-24.2.1.jar:js-language-24.2.1.jar:polyglot-24.2.1.jar:collections-24.2.1.jar:truffle-api-24.2.1.jar:nativeimage-24.2.1.jar:icu4j-24.2.1.jar:regex-24.2.1.jar" -Dpolyglot.js.nashorn-compat=true SheetJSNashorn pres.xlsx jar -cf SheetJSNashorn.jar SheetJSNashorn.class xlsx.full.min.js shim.min.js mkdir -p sheethorn cp *.jar pres.xlsx sheethorn cd sheethorn - java -cp ".:js-scriptengine-24.1.1.jar:js-language-24.1.1.jar:polyglot-24.1.1.jar:collections-24.1.1.jar:truffle-api-24.1.1.jar:nativeimage-24.1.1.jar:icu4j-24.1.1.jar:regex-24.1.1.jar:SheetJSNashorn.jar" -Dpolyglot.js.nashorn-compat=true SheetJSNashorn pres.xlsx + java -cp ".:js-scriptengine-24.2.1.jar:js-language-24.2.1.jar:polyglot-24.2.1.jar:collections-24.2.1.jar:truffle-api-24.2.1.jar:nativeimage-24.2.1.jar:icu4j-24.2.1.jar:regex-24.2.1.jar:SheetJSNashorn.jar" -Dpolyglot.js.nashorn-compat=true SheetJSNashorn pres.xlsx cd - done diff --git a/tests/engines-nashorn.sh b/tests/engines/nashorn.sh similarity index 99% rename from tests/engines-nashorn.sh rename to tests/engines/nashorn.sh index 2583c5d..19b1723 100755 --- a/tests/engines-nashorn.sh +++ b/tests/engines/nashorn.sh @@ -18,7 +18,7 @@ curl -L -o asm-analysis-9.5.jar "https://search.maven.org/remotecontent?filepath curl -L -o asm-util-9.5.jar "https://search.maven.org/remotecontent?filepath=org/ow2/asm/asm-util/9.5/asm-util-9.5.jar" # Standalone Nashorn -for n in {15..23}; do +for n in {15..24}; do echo $n export JAVA_HOME=`/usr/libexec/java_home -v $n` echo $JAVA_HOME diff --git a/tests/engines-rhino.sh b/tests/engines/rhino.sh similarity index 98% rename from tests/engines-rhino.sh rename to tests/engines/rhino.sh index 65779f9..137aeaa 100755 --- a/tests/engines-rhino.sh +++ b/tests/engines/rhino.sh @@ -42,7 +42,7 @@ public class SheetJSRhino { } EOF -for n in 1.8 {9..23}; do +for n in 1.8 {9..24}; do export JAVA_HOME=`/usr/libexec/java_home -v $n` java -version find . -name \*.class | while read x; do rm $x; done