What's Changed
- chore: Bump ip-address from 10.2.0 to 10.4.0 in /web by @dependabot[bot] in #24365
- chore: Bump fast-uri from 3.1.4 to 3.1.5 in /web by @dependabot[bot] in #24368
- chore: Bump undici from 6.27.0 to 6.28.0 in /web by @dependabot[bot] in #24369
- chore: Bump postcss from 8.5.22 to 8.5.25 in /web by @dependabot[bot] in #24367
- chore: Bump the npm-minor group across 1 directory with 13 updates by @dependabot[bot] in #24370
- video: Add support for NV12 pixel format by @X1nto in #24335
- core: Migrate ruffle_macros to syn 3 by @torokati44 in #24378
- chore: Run cargo +nightly fmt --all by @danielhjacobs in #24376
- avm2: Add more AV implementation by @ChrisCPI in #24375
- avm2: Implement some of the
flash.automationclasses by @ChrisCPI in #24390 - Add extension badges to README by @kjarosh in #24396
- avm2: Reimplement Matrix3D.recompose() as a native method by @kjarosh in #24404
- avm2: Reimplement Matrix3D.decompose() as a native method by @kjarosh in #24405
- avm2: Implement TextBlock.releaseLines and TextBlock.lastLine by @Lord-McSweeney in #24399
- tests: Add coverage for a
TextBlock.releaseLinesedge case by @Lord-McSweeney in #24416 - avm2: Implement Matrix3D.append()/prepend() as native by @kjarosh in #24406
- core: Make
DisplayObject::ptr_eqtake any TDisplayObject parameter by @Lord-McSweeney in #24417 - avm2: Implement Matrix3D.copyColumn*() as native methods by @kjarosh in #24407
- avm2: Make Matrix3D.determinant/invert() native by @kjarosh in #24408
- avm2: Implement Matrix3D.position as a native property by @kjarosh in #24409
- avm2: Implement Matrix3D.transpose() as native method by @kjarosh in #24410
- avm2: Implement Matrix3D.copyRow*() as native methods by @kjarosh in #24411
- chore: Bump js-yaml from 4.3.0 to 4.3.1 in /web by @dependabot[bot] in #24426
- chore: Bump
lruandspindependencies by @torokati44 in #24435 - chore: Bump the cargo-minor group across 1 directory with 3 updates by @dependabot[bot] in #24423
- ci: Sync bumped package versions into package-lock.json upon release by @torokati44 in #24379
- avm2: Make Matrix3D.transformVector() native by @kjarosh in #24412
- avm2: Make Matrix3D.appendRotation() a native method by @kjarosh in #24413
- avm2: Make Matrix3D.identity()/appendTranslation() native by @kjarosh in #24414
- avm2: Implement Matrix3D.copyRawDataFrom() properly by @kjarosh in #24437
- Fte/textline composition by @doombubbles in #24371
- render/swf: Allow Rgb15 format for
DefineBitsLossless2by @ChrisCPI in #24439 - avm2: Implement Matrix3D.copyRawDataTo() properly by @kjarosh in #24443
- avm2: Use native Matrix3D in AVM2 by @kjarosh in #24442
- avm2: Improve the behavior of
TextBlock.releaseLinesby @Lord-McSweeney in #24425 - core: Make
Matrix3D.determinantmore accurate by @kjarosh in #24454 - core: Move
TDisplayObject::instantiateonto each enum variant that needs it by @Lord-McSweeney in #24446 - avm1: Improve behavior of
SoundwhenloadSound()has been called by @ChrisCPI in #23975 - core: Use 32-bit floats for Matrix3D by @kjarosh in #24457
- avm2: Improve FP's buggy behavior in Vector3d.nearEquals() by @kjarosh in #24463
- avm2: Improve accuracy of Number to String coercion by @kjarosh in #24459
- desktop: Implement FreeType device font renderer by @kjarosh in #24418
- avm2: Make remaining Matrix3D methods native and clean up code by @kjarosh in #24465
- avm2: Use restargs instead of passing arguments as an array in Date methods by @Lord-McSweeney in #24466
- avm2: Implement Matrix3D.interpolate and interpolateTo by @SulivanM in #24450
- desktop: Gate FreeType behind a feature by @kjarosh in #24470
- avm2: Use f64 sign methods in f64_to_string by @kjarosh in #24471
- debug_ui/avm2: Move Class information into its own window by @Lord-McSweeney in #24456
- tests: Add FreeType variants to more tests by @kjarosh in #24479
- chore: Update Linux dependencies by @kjarosh in #24483
- avm2: Add a method to ParametersExt to allow slicing it by @Lord-McSweeney in #24477
- core: Split font.rs into multiple files by @kjarosh in #24482
- swf: Support incorrect uncompressed lengths in LZMA SWFs by @kjarosh in #24487
- avm1: Dynamically resolve builtin classes (1/N: preliminaries) by @moulins in #24327
- core: Improve embedded font lookup by @kjarosh in #24503
- video: Reduce allocations/copies when decoding frames by @moulins in #24135
- avm2: Include attribute and element name in XML parser error 1104 by @evilpie in #24352
- chore: Resolve clippy beta lints by @torokati44 in #24502
- avm2: Refactor DisplayObjectContainer.stopAllMovieClips implementation by @Lord-McSweeney in #24506
- debug_ui: Add a font inspector window by @kjarosh in #24508
- desktop: Remove the wgpu-report-to-tracy-plot feature by @Dinnerbone in #24474
- avm1: Dynamically resolve builtin classes (2/N:
Function,BitmapFilterss, display objects) by @moulins in #24500 - chore: Update translations from Crowdin by @kjarosh in #24517
- Codex/fix 21515 lazy blends by @atilapan in #24445
- avm2: In Sound constructor, call Sound.load from Actionscript by @Lord-McSweeney in #24512
- avm1: Track activations in Tracy with
tracy_avmfeature by @Dinnerbone in #24511 - chore: Update pull request template by @kjarosh in #24519
- Update webbrowser to 1.2.4 due to RUSTSEC-2026-0257 by @Dinnerbone in #24488
- core: Blit copyPixels rows through slices by @1bugproof in #24490
- render: Fix PixelRegion.intersects() by @kjarosh in #24518
- render: Implement BitmapAtlas by @kjarosh in #24514
- avm2: Use
ParametersExtfor ruffle stub methods by @Lord-McSweeney in #24523 - core: Don't degrade alpha for opaque alphaBitmapData pixels in copyPixels by @1bugproof in #24492
- core: Replace the "deterministic" feature with LocaleBackend by @kjarosh in #24478
- chore: Update translations from Crowdin by @kjarosh in #24528
- chore: Drop clippy::float_cmp lint attributes by @kjarosh in #24526
- tests: Expand test coverage for AVM2 primitive keys by @Lord-McSweeney in #24527
- avm2: Match avmplus's index parsing logic more closely by @Lord-McSweeney in #24529
- swf/avm2: Add
read_vec_with_leninternal helper by @moulins in #24531 - avm2: Make native methods take
FunctionArgsinstead of a slice by @Lord-McSweeney in #24534 - chore: Update translations from Crowdin by @kjarosh in #24538
- Update to wgpu 30.0.1, egui 0.36.1, wasm-bindgen 0.2.127 by @Dinnerbone in #24520
- avm2: Implement TextLine.getAtomIndexAtCharIndex by @doombubbles in #24497
- desktop: Submit frame images to Tracy by @Dinnerbone in #18904
- chore: Appease clippy by @moulins in #24547
- ci: Remove nightly lints by @kjarosh in #24548
- core: Make it possible to lay out text during render by @kjarosh in #24539
- desktop: Profile wgpu into Tracy by @Dinnerbone in #24510
- tests: Add test for caching callee object of AVM2 instance init method by @Lord-McSweeney in #24554
- avm2: Have
MovieClip.addFrameScript()throw error 2001 for an odd number of args by @ChrisCPI in #24557 - wgpu: Pass UV(T) to shaders, rather than always calculating via a uniform by @Dinnerbone in #24555
- desktop: Fix crashes resulting from handling egui texture deltas by @kjarosh in #24559
- chore: Revert lazy blends, again by @Dinnerbone in #24564
- render: Implement bitmap region rendering for wgpu by @kjarosh in #24525
- avm2: Implement
flash.ui.Mouse.cursorby @ChrisCPI in #24578 - Use
assertshorthands by @tygyh in #24561 - chore: Bump mocha to 12 by @torokati44 in #24584
- build(deps-dev): bump replace-in-file from 8.4.0 to 9.0.0 in /web by @dependabot[bot] in #24422
- avm2: Implement "unload" event on LoaderInfo by @kjarosh in #24579
- tests: Improve the default log filter by @kjarosh in #24566
- 🤖 avm1: Implement MovieClip.hitArea (part of #21569) by @FIM43-Redeye in #24227
- avm2: Support default superclass object for callstatic op by @Lord-McSweeney in #24558
- chore: Bump WebdriverIO package family to 9.31 by @torokati44 in #24583
- build(deps): bump the npm-minor group across 1 directory with 14 updates by @dependabot[bot] in #24589
- docs: Update CONTRIBUTING.md and add AI tool use policy by @kjarosh in #24571
- chore: Update translations from Crowdin by @kjarosh in #24592
- build(deps-dev): bump fast-uri from 3.1.5 to 3.1.7 in /web by @dependabot[bot] in #24593
- chore: Bump gc-arena to 0.7.0, hashbrown to 0.17.1 by @torokati44 in #24588
- chore: Update translations from Crowdin by @kjarosh in #24597
- avm2: Expand the stubs for
Mouse.registerCursor()/unregisterCursor()by @ChrisCPI in #24586 - debug_ui: Add "Preview" tab to Display Objects by @kjarosh in #24522
- build(deps): bump the cargo-minor group across 1 directory with 9 updates by @dependabot[bot] in #24598
- chore: Run
npm audit fixin web/ by @torokati44 in #24603 - desktop: Implement font atlases and use them for FreeType by @kjarosh in #24568
- render: Fix panic when calling
Context3D.drawTriangles()with no bound texture by @ChrisCPI in #24545 - avm1: Lookup Rectangle in BitmapData by @kjarosh in #24599
- core: Implement glyph cache eviction for font renderers by @kjarosh in #24608
- web: Use font atlases in CanvasFontRenderer by @kjarosh in #24609
- web: Allow variable bitmap glyph height by @kjarosh in #24610
- wgpu: Mark profiler end-of-frame, fixes #24605 by @Dinnerbone in #24612
- tests: Add avm2/bitmapdata_draw_cab_quality test by @kjarosh in #24613
- core: Move font color to EvalParameters by @kjarosh in #24614
- core: Store LayoutContext on LayoutBuilder by @kjarosh in #24616
- swf: Release 0.3.0 by @kjarosh in #24621
- chore: Update rascal to 0.3.5 by @Dinnerbone in #24623
- tests: Add test coverage for the XML special case in indexOf methods by @Lord-McSweeney in #24618
New Contributors
- @X1nto made their first contribution in #24335
- @doombubbles made their first contribution in #24371
- @SulivanM made their first contribution in #24450
- @atilapan made their first contribution in #24445
- @FIM43-Redeye made their first contribution in #24227
Full Changelog: v0.5.0...v0.6.0