github software-mansion/react-native-executorch v0.10.4-libs

pre-release5 hours ago

Native libraries for React Native ExecuTorch, built from software-mansion-labs/executorch @ @ms/separate-backends-1.4.1 (249a515d).

Rebuilds the Vulkan backend, the core library and the MLX backend. vulkan-android-arm64-v8a, vulkan-android-x86_64, core-android-arm64-v8a, core-android-x86_64, core-ios and mlx-ios change; the other seven artifacts are the v0.10.3-libs files byte for byte.

Vulkan picks up the pointwise conv hoist and tile changes, the im2col threshold, the 5x5 depthwise Mali tile, the conv2d local-workgroup fix and a narrower int4 linear tile on Mali (upstream pytorch/executorch#22909).

Core fixes a program whose constant segment holds only zero-length tensors being sent down the deprecated constant_buffer path, which is compiled out and aborts at load with 0x23 (upstream pytorch/executorch#22788). Any fully delegated model hits this; RF-DETR on Vulkan could not load before.

MLX bounds the lazy graph: the interpreter built a whole method before evaluating anything, so every intermediate was live at once (upstream pytorch/executorch#22932, issue #22513). It now evaluates once pending intermediates exceed a byte budget, so only methods that actually allocate pay for it. iPhone 16, whisper-small int8, full pipeline: peak 1194.4 -> 692.8 MB and 885 -> 831 ms, i.e. 1.72x less memory and slightly faster. macOS peaks: whisper tiny 550 -> 343 MB, small encode 1106 -> 350 MB, SmolLM2-135M 1197 -> 497 MB. Output bit-identical. ET_MLX_EVAL_BUDGET_MB=0 restores the old path.

Measured on device, median of 21 pooled iterations per arm, old runtime vs new:

model Mali-G76 Adreno 840
efficientnet_v2_s 3.79x faster 1.04x faster
blazeface 2.23x faster -
yolo26_seg_n 640 1.94x faster -
selfie_seg 1.77x faster 1.13x faster
pp_ocrv6 3.73x faster 1.11x faster
rfdetr_nano aborted 0x23 -> runs aborted 0x23 -> runs
all-MiniLM-L6-v2 unchanged unchanged

Provenance: rebuilding the control commit 0e18ed63 reproduced the published v0.10.3-libs arm64 libvulkan_executorch_backend.so and libxnnpack_executorch_backend.so md5s exactly, and libexecutorch.so to every byte outside its 20-byte GNU build-id.

The sweep covered 29 of the 30 published Vulkan variants on both GPUs, 3 interleaved rounds each. No regression: every row that read slower overlaps across its own rounds. The two LLM/VL files are deferred to a separate LLM sweep.

Don't miss a new react-native-executorch release

NewReleases is sending notifications on new releases.