Ruffle: Flash Player com Rust e WebAssembly
Quem
Leo Cavalcante Staff Engineer & Skill Lead Developer Experience | PicPay Swoole & Hyperf + PHP-FIG
Ex-Flasher
Moderador da comunidade Flash Brasil no Orkut, meu primeiro emprego foi com Flash numa agência de publicidade, onde fiquei por 12 anos.
Flash Player
Plug-in para navegadores web que atuava como uma runtime das aplicações desenvolvidas para essa plataforma.
FutureSplash Animator
O Flash nasceu numa empresa chamada FutureWave como FutureSplash Animator em 1996, foi comprada pela Macromedia e em seguida comprada pela Adobe em 2005, se tornando finalmente o Adobe Flash.
Era de ouro
O Flash trazia muitas novas possibilidades para web que hoje parecem triviais, como vídeos. O próprio YouTube antigamente era com base no Flash Player.
HTML5
Com o avanço de padrões abertos, a necessidade de ter um plug-in para ter mais recursos no navegador foi ficando para trás.
Smartphones
Paralelo ao HTML5, os smartphones estavam ficando cada vez mais acessíveis e infelizmente o Flash Player não rodava muito bem por lá.
Steve Jobs
O Steve Jobs chegou até a publicar uma carta aberta chamada “Thoughts on Flash”, onde ele fazia várias críticas à plataforma no iOS, como consumo de bateria e segurança.
Decadência
A soma de todos esses fatores foram pesadas demais para o Flash e ele começou a perder o marketshare na web. Em 2017 a Adobe anunciou que pararia de dar suporte ao Flash Player em favor de padrões abertos como o HTML5.
Vi e vivi
Vi de perto isso acontecer na agência, as demandas para Flash estavam cada vez menores, nenhum cliente queria um site em Flash.
Polêmica
Muita gente viu que as críticas do S. Jobs não eram muito válidas, até porque o Flash Player ia bem no Android e desconfiam que o grande medo dele era perder controle da Apple Store.
No céu tem pão?
E morreu. A Adobe oficializou a morte do Flash Player no dia 31 de Dezembro de 2020.
Legado
Existiam muitas coisas legais entre animações e aplicações feitas em Flash que não poderiam simplesmente ser reescritas ou refeitas, nem descartadas.
Ruffle
Com patrocínio da Newgrounds e Kongregate, entre outras, utiliza a linguagem Rust e a tecnologia WebAssembly para emular o Flash Player em navegadores, mas também compila para desktop.
Nascimento
Mike Welsh, que trabalhou na Newgrounds até 2012, começou o projeto Swivel para transformar Flash em vídeos e em 2016 o Fluster que mais tarde se tornaria a Ruffle.
Background
Parse de artwork em SWF para a engine interna de games na The Behemoth, foi onde ganhou experiência lendo arquivos Flash.
Memory-safety
Por ser escrito em Rust, o emulador acabou resolvendo problemas conhecidos de memória do Flash Player, como use after free e buffer overflows.
WebAssembly
Também resolve problemas de segurança que eram críticas ao Flash Player por rodar na sandbox do WASM.
SWF
ShockWave Flash, formato usado como artefato do Flash que a Adobe removeu as restrições em 2008 como parte do projeto Open Screen Project.
ActionScript
ECMAScript, igual o JavaScript. AS1 e AS2 rodam na primeira versão da máquina virtual AVM1. O AS3 roda numa segunda versão, AVM2 que tem especificações bem diferentes.
Suporte
95% do ActionScript 1 e 2 (AVM1), até Flash Player 8.
75% do ActionScript 3 (AVM2), Flash Player 9 em diante.
O projeto e demos
Ruffle: Flash Player com Rust e WebAssembly
By Leo Cavalcante
Ruffle: Flash Player com Rust e WebAssembly
- 129