Migrando um Servidor de Jogo Massivo de Scala 2.13 para Scala 3: Uma Odisseia de um Ano

2025-02-06
Migrando um Servidor de Jogo Massivo de Scala 2.13 para Scala 3: Uma Odisseia de um Ano

Este artigo detalha a jornada do autor na migração de um servidor de jogo para celular multijogador em produção, com quatro anos de idade, do Scala 2.13 para o Scala 3. Uma tentativa inicial falhou devido à remoção de recursos importantes no Scala 3 (anotações de macro, projeções de tipo) e as mudanças massivas de código necessárias. Um ano depois, uma migração bem-sucedida foi alcançada por meio de uma abordagem multifacetada: aplicando preventivamente a sintaxe do Scala 3 na base de código do Scala 2, utilizando as ferramentas de inspeção de código do IntelliJ, geradores de código-fonte personalizados do sbt para produzir lentes Monocle e soluções criativas para projeções de tipo. Os desafios encontrados incluíram conflitos de dependências e tempos de compilação lentos, resolvidos por meio da criação de um fork de uma biblioteca, otimização do código usando Tuple.Map do Scala 3 e outras técnicas. Apesar dos obstáculos, a migração destaca o poder e o valor das capacidades de metaprogramação do Scala 3.

Desenvolvimento Migração