Migration eines großen Spielservers von Scala 2.13 auf Scala 3: Eine einjährige Odyssee

2025-02-06
Migration eines großen Spielservers von Scala 2.13 auf Scala 3: Eine einjährige Odyssee

Dieser Beitrag beschreibt die Erfahrung des Autors bei der Migration eines vier Jahre alten, produktionsreifen Multiplayer-Mobilspielservers von Scala 2.13 auf Scala 3. Ein erster Versuch scheiterte aufgrund des Entfernens wichtiger Funktionen in Scala 3 (Makro-Annotationen, Typprojektionen) und der damit verbundenen massiven Codeänderungen. Ein Jahr später gelang die Migration durch einen vielschichtigen Ansatz: präventive Anwendung der Scala-3-Syntax in der Scala-2-Codebasis, Nutzung der Code-Inspektionswerkzeuge von IntelliJ, benutzerdefinierte sbt-Quellcodegeneratoren zur Erstellung von Monocle-Linsen und kreative Lösungen für Typprojektionen. Herausforderungen waren Abhängigkeitskonflikte und lange Kompilierzeiten, die durch Forking einer Bibliothek, Codeoptimierung mit Scala 3s Tuple.Map und anderen Techniken gelöst wurden. Trotz der Hindernisse unterstreicht die Migration die Leistungsfähigkeit und den Wert der Metaprogrammierfähigkeiten von Scala 3.

Mehr lesen
Entwicklung