I check in on this project every year or so, and I'm happy to see that their support for AS3 is creeping towards completion. I, like many, wasted so many hours in flash games while in school that it was sad to see an element of gaming history fall by the wayside. At least Ruffle can pick up some of the pieces. It does remind me that that there is still no way to play Wolfenstein RPG on iOS. I have an old iPod that I bought in 2010 almost exclusively to play it, but that battery won't last forever. But for now, I think I'll go and play some Adrenaline Challenge.
About 18 months ago I recall hearing Ruffle had virtually no AS3 support, and that was a show stopper for me. I wasn't expecting them to get much done on this front for years. So in that time I simply installed the last version of Flash without the time bomb. Thankfully I am wrong :)
Just to clarify: we already had a ton of work towards AS3 done before that, there was just nothing to show for it until we added some final missing pieces. It’s not like we did everything from scratch in 18 months.
Rust's type system encodes more information than most languages, and so you can offload more work to it. That becomes more and more valuable as the project grows.
Rust also attracts good developers in general, moreso than the average language certainly.
> Rust's type system encodes more information than most languages, and so you can offload more work to it.
I suspect at least one of the developers would argue with you as I have listened to his rants. :)
Rust is a remarkably poor match to implementing Flash because Flash has lots of object orientation with child and parent pointers--which Rust really hates.
> Rust also attracts good developers in general, moreso than the average language certainly.
More specifically (assuming we’re talking about the same thing), the issue is with reproducing a standard C++ inheritance hierarchy (used for both the AS2/3 native objects and for the „DOM” tree nodes), while keeping its overhead characteristics, devirtualisation opportunities, having it interact with our GC and borrow checker and still have a convenient, safe Rust API on top. Our current solution works, but has deficiencies in most of these aspects.
I suspect that it's two things: (1) the relatively good support for Wasm in Rust; (2) the Cargo ecosystem. In the case of Ruffle, the combination of the two seems particularly effective.
Couldn’t you just have a global object table and make your pointers indexes into this, using Rc::Refcells throughout? Rust is still fast with runtime GC.
> Rust also attracts good developers in general, moreso than the average language certainly.
Could you elaborate more on this? I don't think programmers that primarily use a particular language would be anymore skilled than programmers that rely on another language.
I am not going to make the claim that Rust devs are better, but when most people on this website make these sorts of claims, they are often referring to http://www.paulgraham.com/pypar.html