Releases: danielhjacobs/ruffle
Releases · danielhjacobs/ruffle
Nightly 2022-08-06
avm2: Include class name in ScriptObject debug (#7512)
* avm2: Include class name in ScriptObject debug
Currently, the `ScriptObject` debug impl is almost useless -
while you determine if two printed objects are the same
by comparing the pointer value, you'll have no idea what
kind of object it actually is.
This PR now formats the `ScriptObject` output as a struct,
printing a (fake) "class" field containing the class name.
Before/after:
```
[ERROR ruffle_core::avm2::activation] AVM2 error: Cannot coerce Object(ScriptObject(ScriptObject(GcCell(Gc { ptr: 0x55f863936db8 })))) to an QName { ns: Private("Test.as$38"), name: "Second" }
[ERROR ruffle_core::avm2::activation] AVM2 error: Cannot coerce Object(ScriptObject(ScriptObject { class: "Object", ptr: 0x55ee0ad161e0 })) to an QName { ns: Private("Test.as$38"), name: "Second" }
```
Getting access to the class name from a `Debug` impl is tricky:
Developers can (and should be able to) insert logging statements
whereever they want, so any `GcCell` may be mutably borrowed.
Panics in debug impls are extremely frustrating to deal with,
so I've ensured that we only use `try_borrow` at each step.
If any of the attempted borrows fail, we print out an error message
in the "class_name" field, but we're still able to print the
rest of the `ScriptObject`.
Additionally, we have no access to a `MutationContext`, so we
cannot allocate a new `AvmString`. To get around this,
I've created a new method `QName::to_qualified_name_no_mc`,
which uses an `Either` to return a `WString` instead of allocating
an `AvmString`. This is more cumbersome to work with than the
nrmal `QName::to_qualified_name`, so we'll only want to use
it when we have no other choice.
Nightly 2022-08-02
nightly-2022-08-02 avm2: Implement BitmapData.scroll/copyPixels, stub lock()
Nightly 2022-07-20
nightly-2022-07-20 chore: Appease clippy
Nightly 2022-07-12
Revert "web: Add a loading screen" This reverts commit bec0710175cdd1e24b03ea99a1373d6756d118c7.
Nightly 2022-07-09
chore: Fix `needless_borrow` clippy lints Though https://github.com/rust-lang/rust-clippy/pull/8355 has been merged, it seems to still report false-positives on nightly channel. For now just fix the instances reported by stable clippy, and keep `needless_borrow` allowed.
Nightly 2022-07-07
wstr: Implement `ToOwned` for `WStr` Similarly to how `str` implements `ToOwned`, and `From<&str> for String` forwards to `to_owned()`. This will allow defining `Cow<WStr>`.
Nightly 2022-07-06
build(deps): bump serde_json from 1.0.81 to 1.0.82 Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.81 to 1.0.82. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.81...v1.0.82) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]>
Nightly 2022-07-04
tests: Expand `parse_float` And make it non-approx, since Ruffle now traces the exact output.
Nightly 2022-07-02
build(deps-dev): bump typedoc from 0.22.17 to 0.23.3 in /web Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.22.17 to 0.23.3. - [Release notes](https://github.com/TypeStrong/TypeDoc/releases) - [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md) - [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.22.17...v0.23.3) --- updated-dependencies: - dependency-name: typedoc dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]>
Nightly 2022-06-25
avm2: Convert flash.geom.Matrix to ActionScript I've kept the rust `flash.geom` module, even though it's now empty, since we'll need to add things like `flash.geom.Transform` native methods in the future.