bclibc_flutter 1.0.0
bclibc_flutter: ^1.0.0 copied to clipboard
Flutter plugin wrapper for bclibc — bundles the native bclibc ballistics engine and web/wasm support.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
bclibc_flutter is versioned in lockstep with bclibc — both
packages are released together under the same tag/version.
Unreleased #
1.0.0 - 2026-10-03 #
Stable release, covering the whole arc from 0.2.3 through 1.0.0-rc.5. Highlights below; full details are in the beta/rc entries beneath this one.
Changed #
- BREAKING (web): the web binding loads one bare WebAssembly module,
assets/wasm/bclibc_ffi.wasm, built by bclibc'smake wasm-zig(no Emscripten, imports nothing), instead of the Emscriptenbclibc_ffi.js+.wasmpair.BcLibCWeb.open({scriptUrl, globalName})is nowBcLibCWeb.open({wasmUrl}); the module is about 84 KB (was 131 KB with the JS glue) and needs no WebAssembly exception handling since bclibc never throws. AsyncCalculator.fire()now returns the updatedHitResultAPI with exactrecords, physicalevents, and scheduledsamples;trajectoryremains a deprecated alias forrecords.- The native library and the web module are built from bclibc's exception-free core: same
BCLIBCFFI_ERR_*codes and messages as before.
Added #
BcIntegrationMethod.cashKarp/.dormandPrince/.tsitourasavailable inAsyncCalculatoron both native and WASM engines.AsyncCalculator.aimingSolutionForTarget()returns vertical hold, windage, and the target-range trajectory point through both native and WASM engines.
Fixed #
- Web:
BcLibCWebcould throwCannot perform DataView.prototype.setFloat64 on a detached ArrayBuffer— it took a view of the module's memory before the last allocation, which can grow (and detach) that memory. The view is now taken after the last allocation.
Chores #
- Pin
bclibctov2.0.0
1.0.0-rc.5 - 2026-10-01 #
Changed #
- BREAKING (web): the web binding loads one bare WebAssembly module,
assets/wasm/bclibc_ffi.wasm, built by bclibc'smake wasm-zig(no Emscripten, imports nothing), instead of the Emscriptenbclibc_ffi.js+.wasmpair.assets/wasm/bclibc_ffi.jsis gone from the package, andBcLibCWeb.open({scriptUrl, globalName})is nowBcLibCWeb.open({wasmUrl}). The module is about 84 KB (was 131 KB with the JS glue) and, because bclibc never throws, is built without C++ exceptions, so it runs on any browser with WebAssembly: no WebAssembly exception handling is needed. make build-wasmbuilds with zig (uv run --with ziglang make build-wasm);WASM_TOOLCHAIN=wasi-sdk WASI_SDK_PATH=...builds the same module with wasi-sdk (~1 MB).- The native library and the web module are built from bclibc's exception-free core (every fallible call returns a
result that the flat C ABI maps to a
BCLIBCFFI_ERR_*code): same codes and messages as before.
Fixed #
pubspec.yamlno longer lists the removedassets/wasm/bclibc_ffi.js(flutter analyze,flutter testanddart pub publish --dry-runfailed on the missing asset).- Web:
BcLibCWebcould throwCannot perform DataView.prototype.setFloat64 on a detached ArrayBuffer: it took a view of the module's memory before allocating the shot, andmallocmay grow (and so detach) that memory. The small module starts with less memory than the old one, so it grows sooner. The view is now taken after the last allocation.
Chores #
- Pin
bclibctov2.0.0-rc.4
1.0.0-rc.1 - 2026-09-22 #
Changed #
- Pin
bclibctov2.0.0-rc.1and rebuild the web WASM assets — bclibc replaces the embedded RK45 methods' thread-local tolerance/stats API with statefulBCLIBC_CashKarpIntegrator/BCLIBC_DormandPrinceIntegrator/BCLIBC_TsitourasIntegratorclasses internally; no change to the WASM FFI surface, which only ever calls the plainBCLIBCFFI_integrate*functions, unaffected by this.
1.0.0-beta.2 - 2026-09-21 #
Changed #
- Pin
bclibctov2.0.0-beta.8and rebuild the web WASM assets with the adaptive Tsitouras 5(4) integration method.
Added #
BcIntegrationMethod.tsitourasis available inAsyncCalculatoron both native and WASM engines.- WASM tests covering the Cash-Karp, Dormand-Prince and Tsitouras integrators.
1.0.0-beta.1 - 2026-09-17 #
Changed #
- Pin
bclibctov2.0.0-beta.7and rebuild the web WASM assets with its Cash-Karp and Dormand-Prince integrators plus zero-point FFI exports. AsyncCalculator.fire()now returns the updatedHitResultAPI with exactrecords, physicalevents, and scheduledsamples;trajectoryremains a deprecated alias forrecords.
Added #
AsyncCalculator.aimingSolutionForTarget()returns vertical hold, windage, and the target-range trajectory point through both native and WASM engines.
0.2.3 - 2026-09-15 #
Changed #
- Breaking: package renamed from
dart_bclibc_fluttertobclibc_flutter, in lockstep with thedart_bclibc→bclibcrename (see its ownCHANGELOG.md). Update yourpubspec.yamldependency and everypackage:dart_bclibc_flutter/...import.
Migration #
dependencies: { dart_bclibc_flutter: ^0.2.2 }→dependencies: { bclibc_flutter: ^0.2.3 }import 'package:dart_bclibc_flutter/bclibc.dart';→import 'package:bclibc_flutter/bclibc.dart';(and likewise for every otherpackage:dart_bclibc_flutter/...import).- iOS/macOS: CocoaPods caches pod specs by name — run
pod deintegrate(or deleteios/Pods,ios/Podfile.lock/macos/Pods,macos/Podfile.lock) before your nextpod installso it picks upbclibc_flutter.podspecinstead of the olddart_bclibc.podspec.
0.2.2 - 2026-09-15 #
Changed #
- Bump
bclibcto0.2.2— fixesDistance.centimeter()(see itsCHANGELOG.md).