Overview of Scala 3 Language Feature Classifications
mainScala 3 features are classified into eight categories to help developers understand their impact on the language foundation, migration effort, and usage patterns:
- Essential Foundations: Core features modeling DOT, higher-kinded types, and SI calculus (e.g., Intersection types, Union types, Type lambdas, Context functions).
- Simplifications: Constructs that replace existing ones to improve safety and uniformity (e.g., Given instances, Using clauses, Extension methods, Opaque type aliases, Top-level definitions).
- Restrictions: Changes made to increase language safety (e.g., Implicit Conversions restrictions, Given Imports, Multiversal equality).
- Dropped Constructs: Features being removed to simplify the language (e.g., DelayedInit, Existential types, Procedure syntax).
- Changes: Refined existing constructs (e.g., Structural Types, Name-based pattern matching, Eta expansion, Implicit Resolution).
- New Constructs: Powerful additions (e.g., Enums, Parameter untupling, Dependent function types, Kind polymorphism).
- Metaprogramming: Features aimed at replacing existing macros.
- Type Checking and Inference: Changes to how types are resolved and inferred.