Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 35 additions & 48 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,12 @@ jobs:
target: i686-pc-windows-msvc
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
build: >-
set -e &&
apt-get update &&
apt-get install meson -y &&
rm /usr/lib/llvm-18/lib/libc++.so &&
export LDFLAGS="-L/usr/lib/llvm-18/lib -L/usr/x86_64-unknown-linux-gnu/lib/gcc/x86_64-unknown-linux-gnu/4.8.5" &&
export CFLAGS="-fuse-ld=lld -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot" &&
export CXXFLAGS="-stdlib=libc++ -fuse-ld=lld -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot -L/usr/lib/llvm-15/lib" &&
yarn workspace @napi-rs/image build --features with_simd --target x86_64-unknown-linux-gnu &&
chmod -R 777 target
build: |
CC=clang
CXX=clang++
TARGET_CC=clang
TARGET_CXX=clang++
yarn workspace @napi-rs/image build --features with_simd --target x86_64-unknown-linux-gnu --use-napi-cross
- host: ubuntu-latest
target: x86_64-unknown-linux-musl
docker: ghcr.io/brooooooklyn/canvas/musl-builder:lts
Expand Down Expand Up @@ -113,16 +108,10 @@ jobs:
yarn workspace @napi-rs/image build --target aarch64-apple-darwin --features with_simd
- host: ubuntu-latest
target: aarch64-unknown-linux-gnu
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
build: >-
set -e &&
rm /usr/aarch64-unknown-linux-gnu/lib/llvm-18/lib/libunwind.so &&
rm /usr/aarch64-unknown-linux-gnu/lib/llvm-18/lib/libc++.so &&
export LDFLAGS="-L/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5" &&
export CFLAGS="-fuse-ld=lld -mcrc -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot" &&
export CXXFLAGS="-fuse-ld=lld -mcrc -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot -L/usr/aarch64-unknown-linux-gnu/lib/llvm-18/lib -stdlib=libc++" &&
yarn workspace @napi-rs/image build --features with_simd --target aarch64-unknown-linux-gnu &&
chmod -R 777 target
build: |
export TARGET_CC=clang
export TARGET_CXX=clang++
yarn workspace @napi-rs/image build --features with_simd --target aarch64-unknown-linux-gnu --use-napi-cross
- host: ubuntu-latest
target: aarch64-linux-android
build: |
Expand All @@ -141,17 +130,21 @@ jobs:
unset RUSTFLAGS &&
unset CC &&
unset CXX &&
rustup target add aarch64-unknown-linux-musl &&
rustup update &&
apk add --update --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing --no-cache aom-dev perl meson &&
yarn workspace @napi-rs/image build --target aarch64-unknown-linux-musl --features with_simd &&
chmod -R 777 target
- host: macos-latest
- host: ubuntu-latest
target: wasm32-wasip1-threads
setup: |
wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-arm64-macos.tar.gz
tar -xvf wasi-sdk-25.0-arm64-macos.tar.gz
wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz
tar -xvf wasi-sdk-25.0-x86_64-linux.tar.gz
build: |
export WASI_SDK_PATH="$(pwd)/wasi-sdk-25.0-arm64-macos"
export WASI_SDK_PATH="$(pwd)/wasi-sdk-25.0-x86_64-linux"
export CMAKE_BUILD_PARALLEL_LEVEL=2
export TARGET_CXXFLAGS="--target=wasm32-wasi-threads --sysroot=$(pwd)/wasi-sdk-25.0-x86_64-linux/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj -lsetjmp"
export TARGET_CFLAGS="$TARGET_CXXFLAGS"
yarn workspace @napi-rs/image build --target wasm32-wasip1-threads

name: stable - ${{ matrix.settings.target }} - node@22
Expand All @@ -167,7 +160,6 @@ jobs:
cache: yarn
- name: Setup nasm
uses: ilammy/setup-nasm@v1
if: matrix.settings.target == 'x86_64-pc-windows-msvc' || matrix.settings.target == 'x86_64-apple-darwin' || matrix.settings.target == 'i686-pc-windows-msvc'
- name: Install cargo-xwin
uses: taiki-e/install-action@v2
if: matrix.settings.target == 'i686-pc-windows-msvc' || matrix.settings.target == 'aarch64-pc-windows-msvc'
Expand Down Expand Up @@ -223,28 +215,28 @@ jobs:
with:
name: bindings-${{ matrix.settings.target }}
path: |
packages/*/*.node
packages/*/*.wasm
packages/binding/*.node
packages/binding/image.wasm32-wasi.wasm
if-no-files-found: error


build-armv7-linux-gnueabihf:
name: Build armv7-unknown-linux-gnueabihf
runs-on: ubuntu-latest
container:
image: debian:buster
image: debian:bullseye
steps:
- name: Setup tools
run: |
apt-get update
apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libatomic1-armhf-cross git build-essential cmake ninja-build wget curl gnupg
echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-18 main" >> /etc/apt/sources.list
echo "deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-18 main" >> /etc/apt/sources.list
echo "deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-19 main" >> /etc/apt/sources.list
echo "deb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-19 main" >> /etc/apt/sources.list
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
apt-get update
apt-get install -y clang-18
ln -s /usr/bin/clang-18 /usr/bin/clang
ln -s /usr/bin/clang++-18 /usr/bin/clang++
apt-get install -y clang-19
ln -s /usr/bin/clang-19 /usr/bin/clang
ln -s /usr/bin/clang++-19 /usr/bin/clang++
- uses: actions/checkout@v4
with:
submodules: true
Expand Down Expand Up @@ -286,7 +278,7 @@ jobs:
- uses: actions/checkout@v4
- name: Build
id: build
uses: cross-platform-actions/action@v0.28.0
uses: cross-platform-actions/action@v0.29.0
env:
DEBUG: 'napi:*'
RUSTUP_HOME: /home/runner/rustup
Expand Down Expand Up @@ -466,7 +458,8 @@ jobs:
matrix:
node:
- '20'
runs-on: ubuntu-latest
- '22'
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
- name: Download artifacts
Expand All @@ -484,11 +477,6 @@ jobs:
- name: List packages
run: ls -R packages
shell: bash
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- name: Setup and run tests
uses: addnab/docker-run-action@v3
with:
Expand Down Expand Up @@ -536,23 +524,22 @@ jobs:
run: yarn test
test-wasi-on-nodejs:
name: Test wasi on Node.js
runs-on: macos-latest
runs-on: ubuntu-latest
needs:
- build
steps:
- uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: bindings-wasm32-wasip1-threads
path: artifacts
path: packages/binding
- name: Install dependencies
run: yarn install --immutable --mode=skip-build
- name: Create npm dirs
run: yarn workspace @napi-rs/image napi create-npm-dirs
- name: Move artifacts
run: yarn artifacts
shell: bash
- name: List packages
run: ls -R packages
shell: bash
Expand Down
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@
"website"
],
"devDependencies": {
"@napi-rs/cli": "^3.0.0-alpha.92",
"@napi-rs/cli": "^3.0.4",
"@taplo/cli": "^0.7.0",
"@types/node": "^24.0.4",
"@types/node": "^24.1.0",
"@types/sharp": "^0.32.0",
"ava": "^6.4.0",
"ava": "^6.4.1",
"blurhash": "^2.0.5",
"chalk": "^5.4.1",
"electron": "^37.0.0",
"lerna": "^8.2.2",
"electron": "^37.2.4",
"lerna": "^8.2.3",
"npm-run-all2": "^8.0.4",
"prettier": "^3.6.1",
"prettier": "^3.6.2",
"rxjs": "^7.8.2",
"sharp": "^0.34.2",
"sharp": "^0.34.3",
"typescript": "^5.8.3"
},
"scripts": {
Expand Down
8 changes: 4 additions & 4 deletions packages/binding/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[package]
edition = "2021"
edition = "2024"
name = "napi_rs_image"
version = "0.0.0"

Expand All @@ -16,15 +16,15 @@ oxipng_libdeflater = ["oxipng/zopfli", "oxipng/parallel"]
with_simd = ["mozjpeg-sys/nasm_simd_parallel_build"]

[dependencies]
fast_image_resize = "5"
fast_image_resize = { version = "5", features = ["image"] }
image = { version = "0.25", default-features = false, features = ["jpeg", "ico", "png", "pnm", "tga", "tiff", "bmp", "webp", "hdr", "dds"] }
imagequant = "4.0.0"
jpeg-decoder = "0.3"
libavif = { version = "0.14", default-features = false, features = ["codec-aom"] }
libc = "0.2"
lodepng = "3"
napi = { version = "3.0.0-beta", default-features = false, features = ["napi3"] }
napi-derive = { version = "3.0.0-beta", default-features = false, features = ["type-def"] }
napi = { version = "3.0.0", default-features = false, features = ["napi3"] }
napi-derive = { version = "3.0.0", default-features = false, features = ["type-def"] }
num-complex = "0.4"
num_cpus = "1"
once_cell = "1"
Expand Down
2 changes: 2 additions & 0 deletions packages/binding/image.wasi-browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import {
} from '@napi-rs/wasm-runtime'



const __wasi = new __WASI({
version: 'preview1',
})

const __wasmUrl = new URL('./image.wasm32-wasi.wasm', import.meta.url).href
const __emnapiContext = __emnapiGetDefaultContext()


const __sharedMemory = new WebAssembly.Memory({
initial: 4000,
maximum: 65536,
Expand Down
2 changes: 1 addition & 1 deletion packages/binding/image.wasi.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule
const kHandle = Object.getOwnPropertySymbols(worker).find(s =>
s.toString().includes("kHandle")
);
if (kPublicPort) {
if (kHandle) {
worker[kHandle].ref = () => {};
}

Expand Down
Loading
Loading