Release 0.4.0
What's Changed
- avm1: Make Object::set accept impl Into by @SuchAFuriousDeath in #23972
- avm1: Implement FileReferenceList by @SuchAFuriousDeath in #23889
- ci: Publish only stable versions of the extension by @kjarosh in #23788
- ci: Use cargo --locked where possible by @kjarosh in #23980
- tests: Compile SWFs before loading them by @moulins in #23989
- avm1: Fix recursion limit handling when calling watchers by @kjarosh in #23991
- core: Use enum-map for ActionQueue priorities by @SuchAFuriousDeath in #23982
- avm2: Manually construct Namespace in
E4XNamespace::as_namespace_objectby @Lord-McSweeney in #23977 - avm1: In the Trace action, always print before propagating string coercion errors by @moulins in #23992
- tests: Add AMF0 typed object known failure by @danielhjacobs in #23994
- desktop: Do not wrap text in recents menu by @kjarosh in #23999
- desktop: Update fontconfig to 0.11.0 by @kjarosh in #23766
- chore: Bump js-yaml from 4.1.1 to 4.2.0 in /web by @dependabot[bot] in #24004
- chore: Bump form-data from 4.0.5 to 4.0.6 in /web by @dependabot[bot] in #24005
- chore: Bump markdown-it from 14.1.1 to 14.2.0 in /web by @dependabot[bot] in #24002
- chore: Bump webpack-dev-server from 5.2.4 to 5.2.5 in /web by @dependabot[bot] in #24003
- chore: Bump launch-editor from 2.13.2 to 2.14.1 in /web by @dependabot[bot] in #24007
- chore: Bump tar from 7.5.14 to 7.5.16 in /web by @dependabot[bot] in #24006
- chore: Bump the npm-minor group across 1 directory with 9 updates by @dependabot[bot] in #24011
- chore: Bump the cargo-minor group across 1 directory with 6 updates by @dependabot[bot] in #24008
- chore: Bump undici in /web by @dependabot[bot] in #24015
- avm2: Clean up TextLine by @kjarosh in #24016
- avm2: Don't panic when calling methods that don't have bodies by @Lord-McSweeney in #23978
- avm1: Add per-property recursion limit by @kjarosh in #23995
- core: Fix BitmapData.hitTest when alpha_threshold=0 (close #19253) by @masterwebx in #23870
- avm2: Implement TextLine's validity property by @kjarosh in #24021
- tests: Do not include AVM2 debug info by default in asc by @kjarosh in #24024
- avm2: Back FontDescription with a native object by @kjarosh in #24028
- avm2: Back ElementFormat with a native Rust object by @kjarosh in #24030
- avm2: Move more enums to fte.rs by @kjarosh in #24033
- chore: Bump WebdriverIO package suite to 9.29 in web/ by @torokati44 in #24022
- core: Set BitmapData transparency based on BitmapFormat by @pngdrift in #24036
- tests: Add fuzz tests for Ruffle by @kjarosh in #23921
- chore: Bump the cargo-minor group with 3 updates by @dependabot[bot] in #24043
- chore: Bump actions/checkout from 6 to 7 by @dependabot[bot] in #24040
- chore: Run
npm audit fixin web/ by @torokati44 in #24037 - chore: Bump the npm-minor group across 1 directory with 6 updates by @dependabot[bot] in #24041
- chore: Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #24046
- chore: Bump actions/checkout from 6 to 7 by @dependabot[bot] in #24047
- avm1: Serialize top-level regular arrays as StrictArray by @danielhjacobs in #23959
- ci: Install pinned Chrome to workaround issue by @danielhjacobs in #23896
- core: Add Avm1Enum/Avm2Enum macro derives by @kjarosh in #24034
- tests: Update several Stage3D tests to use Flash Player outputs and compile with Asc by @ChrisCPI in #23905
- avm2: Back ContentElement with a native object by @kjarosh in #24055
- core: Remove outdated code in run_abc_and_symbol_tags by @Lord-McSweeney in #24058
- ci: Update Edge wdio headless arguments for stability by @danielhjacobs in #24064
- ci: Also use cargo --locked in the extension builder Dockerfile by @torokati44 in #24070
- ci: Add formatting and clippy checks for fuzz/ by @kjarosh in #24045
- avm2/core: Use correct URL for SWFs loaded using Loader.loadBytes by @Lord-McSweeney in #24025
- avm1: Make recursive_serialize use helper serialize_value_to_writer by @danielhjacobs in #24081
- chore: Bump anyhow to dismiss RUSTSEC-2026-0190 advisory by @torokati44 in #24083
- chore: Bump the cargo-minor group with 2 updates by @dependabot[bot] in #24088
- chore: Bump the npm-minor group in /web with 18 updates by @dependabot[bot] in #24087
- avm1: Serialize top-level date/xml/display object properly by @danielhjacobs in #24082
- chore: Bump rust-flash-lso to latest revision by @danielhjacobs in #24095
- chore: Bump rust-flash-lso to 61b7172 by @danielhjacobs in #24099
- chore: Add ttf-parser advisory to ignored list in deny.toml by @danielhjacobs in #24101
- avm2: Fix
loaderURLfor movies loaded usingLoadermethods by @Lord-McSweeney in #24091 - avm1: Check all of stage's children when finding pending removals by @ChrisCPI in #24111
- web: Add more Twitch domains to extension blocklist by @kjarosh in #24114
- ci: Report macOS universal binary bundle notarization failure on Discord by @torokati44 in #24113
- avm2: Implement
Stage3Dx/yby @ChrisCPI in #23882 - core: Fix HTML entity parsing (close #24084) by @SNBeast in #24090
- tests: Add tests for wrong SWF header's length by @kjarosh in #24116
- tests: Add context for SWF parsing errors by @kjarosh in #24117
- avm2: Use native object for TextBlock by @kjarosh in #24120
- tests: Add (failing) test for #1034 Type Coercion debug printing by @evilpie in #24126
- tests: Use
known_failure.panicinstead ofignore = truefor PR #24116's tests by @moulins in #24127 - avm2: Introduce a global list of error messages by @kjarosh in #24122
- avm2: Display anonymous functions as
Function/<anonymous>by @kjarosh in #24124 - swf: Read decompressed data to header-declared length by @kjarosh in #24118
- avm2: Remove Error.getErrorMessage()'s stub call by @kjarosh in #24130
- web: Properly classify web fonts as italic by @kjarosh in #21900
- core/audio: Don't pass in FLV-specific bytes to AacSubstreamDecoder by @torokati44 in #23985
- chore: Fix beta clippy lints by @danielhjacobs in #24137
- Revert "ci: Install pinned Chrome to workaround issue" by @danielhjacobs in #24050
- chore: Bump the npm-minor group in /web with 9 updates by @dependabot[bot] in #24140
- chore: Bump gloo-net from 0.6.0 to 0.7.0 by @dependabot[bot] in #24143
- chore: Bump the cargo-minor group across 1 directory with 4 updates by @dependabot[bot] in #24142
- chore: Bump webpack-dev-server from 5.2.5 to 6.0.0 in /web by @dependabot[bot] in #24141
- avm1: Move joint AVM1 AMF code to its own file by @danielhjacobs in #24152
- avm2: Throw proper error when method is missing dxns flag by @kjarosh in #24149
- avm2: Fix ElementFormat constructor initialization order by @evilpie in #24123
- avm2: Implement TabStop as a native object with proper accessors by @kjarosh in #24147
- avm2: Make SWFs loaded with loadBytes use their loader's sandbox type by @Lord-McSweeney in #24107
- avm2: Assign default instance name to TextLine by @SuchAFuriousDeath in #24163
- ci: Switch Discord notification action to one that doesn't need Docker by @torokati44 in #24145
- ci: Fix typo in extension builder dockerfile tester workflow by @torokati44 in #24167
- Fix different priority of getter if by name or property on different namespaces by @wsxarcher in #23253
- chore: Bump morgan from 1.10.1 to 1.11.0 in /web by @dependabot[bot] in #24179
- chore: Mark edittext_caret_empty as flaky by @kjarosh in #24128
- avm2: Split text properly in TextLine by @kjarosh in #24018
- avm2: Use Avm2Enum for TextLineCreationResult by @kjarosh in #24182
- avm2: Implement
Error.throwError()by @kjarosh in #24125 - avm2: Move TextLine's fields to the native object by @kjarosh in #24183
- chore: Fix some lints and remove unused #[allow]s by @kjarosh in #24180
- avm2: Use Error.throwError in TextLine by @kjarosh in #24186
- avm2: Use Error.throwError() in Stage by @kjarosh in #24192
- avm2: Use Error.throwError() in AccessibilityImplementation by @kjarosh in #24189
- avm2: Use Error.throwError() in GraphicsPath by @kjarosh in #24191
- avm2: Remove constructors from abstract classes by @kjarosh in #24190
- ci: Minor tweaks to Discord notification action parameters by @torokati44 in #24196
- avm2: Use Error.throwError() in primitive types by @kjarosh in #24188
- web: Handle case for invalid URL in panic.tsx by @Lord-McSweeney in #24199
- chore: Bump the cargo-minor group with 2 updates by @dependabot[bot] in #24206
- avm2: Remove
ScopeChaincaching by @Lord-McSweeney in #24193 - chore: Bump the npm-minor group in /web with 7 updates by @dependabot[bot] in #24203
- chore: Bump stegzilla/discord-notify from 2 to 5 by @dependabot[bot] in #24202
- tests: Add known failure to thoroughly test AVM1 AMF0 serialization by @danielhjacobs in #24156
- avm2: Trace uncaught errors by @kjarosh in #24215
- chore: Bump wgpu to 28, switch egui to git by @torokati44 in #23274
- tests: Mention UTC timezone is necessary for amf0_serde_suite by @danielhjacobs in #24223
- tests: Add mechanism to test framework to assert on stored lso by @danielhjacobs in #24198
- avm2: Use proper error in XMLList constructor when parsing fails by @Lord-McSweeney in #24226
- tests: Don't test platform/arch-specific NaN serialization in AVM1/AMF0 by @danielhjacobs in #24225
- avm2: Fix some verify errors and add tests by @kjarosh in #24224
- chore: Bump crossbeam-epoch to resolve RUSTSEC-2026-0204 by @torokati44 in #24230
- extension: Page opt out should disable polyfill by @danielhjacobs in #24062
- avm2: Minor performance improvements by @Lord-McSweeney in #24211
- ci: Define version number in macOS Info.plist for stable releases by @ChrisCPI in #24220
- frontend-utils: Don't use native certs for rustls backend of reqwest by @torokati44 in #24218
- Revert "chore: Bump wgpu to 28, switch egui to git" by @danielhjacobs in #24234
- avm2: Properly display
global$init()in stack traces by @kjarosh in #24238 - avm1: Remove stub from
Sound.setPosition()to act as a no-op by @ChrisCPI in #24239 - avm2: Handle function objects in JSON.stringify by @evilpie in #24240
- chore: Ignore cargo deny DoS errors in our outdated quick-xml by @evilpie in #24242
- avm2: Check and throw correct error for Timer delay by @evilpie in #24241
- avm2: Use a shared cold path for no-arg error constructors by @kjarosh in #24233
- tests: Add avm1/selection_asbroadcaster by @kjarosh in #24245
- tests: Add a test for FileReferenceList's AsBroadcaster by @kjarosh in #24246
- tests: Add test for TextField's AsBroadcaster props by @kjarosh in #24247
- avm2: Add
Number._convert()and cover edge cases by @kjarosh in #24244 - avm2: Normalize
DisplayObject.rotationbetween -180 and 180 by @ChrisCPI in #24248 - avm2: Slightly improve optimizations on crossbridge functions by @Lord-McSweeney in #24236
New Contributors
- @masterwebx made their first contribution in #23870
- @pngdrift made their first contribution in #24036
- @SNBeast made their first contribution in #24090
Full Changelog: v0.3.0...v0.4.0