flutter_qjs_next 1.2.1
flutter_qjs_next: ^1.2.1 copied to clipboard
QuickJS bindings for Flutter and Dart through dart:ffi (flutter_qjs_next), with native support for Android, iOS, macOS, Linux, and Windows.
1.2.1 #
- Lint: add missing type annotations on
JSErrorconstructor parameters (lib/quickjs/object.dart). - macOS/iOS build: avoid ObjC
BOOLclash with QuickJScutils.h(#if !defined(__OBJC__)). - Apple plugins: pure Objective-C registration (drop Swift) so SPM can compile C/C++ + ObjC in one target.
- SPM: depend on Flutter’s
FlutterFramework; public headers only underSources/.../include/. - CocoaPods: public headers limited to
Classes/; QuickJS headers private; header search path forcxx/. - macOS SPM: rename QuickJS
VERSION→VERSION.txt(APFS case-insensitive clash with C++#include <version>).
1.2.0 #
- Pool default:
JsEnginePoolConfig.resetOnReleaseis nowfalse(warm reuse; better process RSS under churn). Multi-tenant: preferresetMode: soft(not hard as an RSS fix). - Soft wipe:
JavascriptRuntime.softReset()+EngineResetMode(none/soft/hard) onJsEnginePoolConfig.resetMode. Prefersoftfor multi-tenant isolation without full native rebuild;resetOnRelease: truestill maps tohard. - Document soak RSS analysis: process RSS growth is dominated by hard reinitialize churn, not QJS heap / bridge counters.
- Docs: production integration checklist (
doc/wiki/guides/production-checklist.md), multi-tenant recipe updates, and exampleProductionTenantWorker+ tests.
1.1.1 #
- Fix
QuickJsRuntime2.closereference leak: release runtime refs viajsReleaseRuntimeRefsbefore freeing theJSContext.
1.1.0 #
- Perf:
JsTypedArrayTransferand native owned-buffer paths for TypedArray / ArrayBuffer bridging. - Perf:
evaluateJsonBatchfor bulk JSON evaluate and bulk result copy. - Optimize object reference tables on the FFI boundary.
- Fix
Uint8ClampedArraydouble-copy path; expand TypedArray benchmarks (sizes, element types, non-zero offset, both directions). - Feat: native bridge allocation / copy counters (
readBridgeStats/jsBridgeStats*) on all platforms. - Expand micro-benchmarks, soak/stress coverage, and performance wiki docs (measured results, standard
benchmark_results/layout).
1.0.2 #
- Add a complete Flutter example application and include it in the published package.
- Improve the GitHub Actions pub.dev publishing workflow for version tags.
- Expand example-based test and stress-test coverage for package validation.
- Add static analysis configuration and update development dependencies.
- Bump embedded QuickJS to 2026-06-04 (all platforms:
cxx/,cxx-windows/, iOS/macOS SPM trees).
1.0.1 #
- Publish automatically from Github Action
- Fix Non Linux and Windows head file problem
1.0.0 #
- Package name:
flutter_qjs_next(QuickJS engine bindings for Flutter). - QuickJS 2025-09-13 on all platforms; Windows tree aligned with Unix (
dtoa, same sources). - TypedArray detection no longer depends on hard-coded
JS_CLASS_*numeric IDs (constructor name + element size). dart:ffibindings for Android, iOS, macOS, Linux, Windows.- Array / TypedArray marshalling fast paths,
evaluateJson, timeout/memory/stack limits, console logger, safersetTimeoutchannel (cached invokable runner). - Default
memoryLimit64 MiB (kDefaultJsMemoryLimit); pass0for unlimited. - Multi-engine:
JsEnginePool/JsEnginePoolConfigwithresetOnReleaseviaJavascriptRuntime.reinitialize(). - Unique engine instance ids:
qjs-<isolateHash>-<serial>-<us>(notidentityHashCode). QuickJsRuntime2.autoExecutePendingJobs(default true) drains Promise jobs after evaluate / call / bytecode / evaluateJson; documented in README.- Isolate module load: 1ms wait on
IntPtrslot instead of 1µs pointer spin. - Dispose hardening: idempotent
dispose,runtimeOpaquesentry removed on free, disposed engines refuse re-init. - Rename residues:
FLUTTER_QJS_NEXT_LIBRARY(legacyFLUTTER_QJS_ES2023_LIBRARYstill accepted).