Repository navigation
beta-0.2.0
What's new
Runtime & stability
- Hardened JS-runtime teardown: join the JS thread before member destruction, degrade
bridge-function resolution instead of crashing, make sync bridge calls non-raising on
JS throw, and drop one-way void calls to expired proxies. - Memory-safety fixes: refuse to resurrect a
SharedPtrRefCountablefrom a raw pointer,
retain-before-release with atomic swap on object-field writes, treat a nullWeakRef
deref as a collected proxy. - Fixed a marshalling amplification bug where untyped JS→native conversion converted every
property twice (2^depth), causingstd::bad_alloc. - Stop holding the
ResourceManagermutex across resource loads; settle promises on cancel;
add a cooperative termination mode that drains teardown instead of aborting. - Fail deadline-bounded sync JS calls fast while the JS thread is stalled.
- Security: bounds-check UTF-8/UTF-16 decode look-ahead.
Rendering, text & layout
- Linear and radial gradients for shape fills; hierarchical color palettes and theme-aware
assets. - Transform origins and CSS-style composed transforms.
- Renderer memoization and reconciliation fixes.
- iOS text measurement fixes: include font leading, restore one-line-tall empty inputs,
notify TypeScript of window-size changes. - Skip TextView shadow layers on Android 6 to avoid the RenderScript blur SIGSEGV.
- Added
Device.getDynamicTypeScaleand a transform-API snapshot suite. - Isolate web
PersistentStoreNativememory by store name.
Compiler & bindings
- Native API versioning and compatibility guards.
- Native JavaScript class bindings and optimized utilities.
- Fixed generated type headers self-importing, which broke clang-module / Swift interop.
- New golden-diff harnesses (compiler emit + platform bindings) and a prebuilt compiler bump.
Networking & workers
- HTTP request manager for CLI apps; Android and native-client request cancelation.
MessageChannelsupport and aggressive worker termination.
Debugger & DevTools
- Browser-based Valdi debugger and cross-platform DevTools capabilities.
CLI & tooling
- Bootstrap validates the project name as a Bazel module name.
- Fixed
inspectcommand packaging; added a CLI postbuild step. - Hand the Android back button back to the platform.
- Flush stdout writes in
ConsoleLogger::writeDirect.
Build system & CI
- Linux support: upgraded LLVM 16 → 19.1.7 so
//valdi:testruns on Linux, with a hermetic
NDK and a green Linux build. - Added an AddressSanitizer CI job; unified open-source CI across internal and external with
a parity checker. - Dependency bumps: rules_kotlin 2.3.10, rules_python 1.9.0, and RBE iOS crosscompilation.
- resvg now builds from source; the prebuilt
resvg_libsarchive is no longer shipped.
Performance
- Cache native number-formatting instances, parallelize
ValdiProcessImagesasset
conversion, drain parked view transactions before external-surface rasters.
Community contributions
Thanks to everyone who contributed through the public repo this release (PRs imported via
Copybara, verified in the beta-0.1.1...beta-0.2.0 range):
- @scorsin-oai — #107, #121, #122, #123, #124, #125, #126, #127
- @tx3stn — #117, #142, #179, #183
- @ecoreng — #144, #145
- @ultramiraculous — #114
- @scott-thornton — #150
- @bjdodson-openai — #154, #180
Upgrading
- Bootstrap CLI
@snap/valdi1.2.0 defaults new projects tobeta-0.2.0for both Valdi
and Valdi_Widgets. Existing projects: bumpVALDI_TAG/WIDGETS_TAGinMODULE.bazel
and the--registryin.bazelrctobeta-0.2.0.
Known issues
- Android TextField autofit was reverted this cycle to fix a disappearing-prompt regression;
PR #107 (text rendering improvements) is only partially present as a result.