scala3-language-server
scala3-language-server
DocsAPI
New Types
Intersection Types
Union Types
Type Lambdas
Match Types
Dependent Function Types
Polymorphic Function Types
Enums
Enumerations
Algebraic Data Types
Translation of Enums and ADTs
Contextual Abstractions
Given Instances
Using Clauses
Context Bounds
Deferred Givens
Importing Givens
Other Forms Of Givens
Extension Methods
Right-Associative Extension Methods: Details
Implementing Type classes
Type Class Derivation
How to write a type class `derived` method using macros
Multiversal Equality
Context Functions
Implicit Conversions
By-Name Context Parameters
Relationship with Scala 2 Implicits
Metaprogramming
Inline
Compile-time operations
Macros
The Meta-theory of Symmetric Metaprogramming
Run-Time Multi-Stage Programming
Reflection
TASTy Inspection
Other New Features
Trait Parameters
Transparent Traits and Classes
Universal Apply Methods
Export Clauses
Opaque Type Aliases
Opaque Type Aliases: More Details
Named Tuples
Open Classes
Parameter Untupling
Kind Polymorphism
The Matchable Trait
The @threadUnsafe annotation
The @targetName annotation
New Control Syntax
Optional Braces
Safe Initialization
TypeTest
Experimental Definitions
Preview Definitions
Binary Integer Literals
Toplevel Definitions
Better fors
The runtimeChecked method
Other Changed Features
Numeric Literals
Programmatic Structural Types
Rules for Operators
Wildcard Arguments in Types
Imports
Changes in Type Inference
Changes in Implicit Resolution
Implicit Conversions
Changes in Overload Resolution
Match Expressions
Vararg Splices
Pattern Bindings
Option-less pattern matching
Automatic Eta Expansion
Changes in Compiler Plugins
Lazy Vals Initialization
Main Methods
Escapes in interpolations
Dropped Features
Dropped: DelayedInit
Dropped: Scala 2 Macros
Dropped: Existential Types
Dropped: General Type Projection
Dropped: Do-While
Dropped: Procedure Syntax
Dropped: Early Initializers
Dropped: Class Shadowing
Dropped: Limit 22
Dropped: XML Literals
Dropped: Symbol Literals
Dropped: Auto-Application
Dropped: Weak Conformance
Deprecated: Nonlocal Returns
Dropped: private[this] and protected[this]
Dropped: Wildcard Initializer
Preview
Experimental
CanThrow Capabilities
Erased Definitions
Named Type Arguments
Numeric Literals
Explicit Nulls
MainAnnotation
The `into` Type and Modifier
Capture Checking
Capture Checking Basics
Capture Checking of Classes
Capability Polymorphism
Scoped Caps
Capability Classifiers
Checked Exceptions
Mutability
Separation Checking
How to Use the Capture Checker
Capture Checking Internals
Pure Function Syntax
Tupled Function
Modularity Improvements
Better Support for Type Classes
Automatic Parameter Unrolling
Reference-able Package Objects
Quoted Patterns with Polymorphic Functions
Relaxed Lambda Syntax
Scala 3 Syntax Summary
Language Versions
Source Compatibility
Binary Compatibility
Soft Keywords
A Classification of Proposed Language Features
Blog (archive)
Scala 3.0.1-RC2 – backports of critical bugfixes
Scala 3.0.1-RC1 – further stabilising the compiler
Scala 3.0.0-RC3 – bug fixes for 3.0.0 stable
Scala 3.0.0-RC2 – getting ready for 3.0.0
Scala 3.0.0-RC1 – first release candidate is here
Scala 3.0.0-M3: developer's preview before RC1
Scala 3.0.0-M1 is here
Dotty becomes Scala 3
Announcing Dotty 0.27.0-RC1 - ScalaJS, performance, stability
Announcing Dotty 0.26.0-RC1 - unified extension methods and more
Announcing Dotty 0.25.0-RC2 - speed-up of givens and change in the tuple API
Announcing Dotty 0.24.0-RC1 - 2.13.2 standard library, better error messages and more
Announcing Dotty 0.23.0-RC1 - safe initialization checks, type-level bitwise operations and more
Announcing Dotty 0.22.0-RC1 - syntactic enhancements, type-level arithmetic and more
Announcing Dotty 0.21.0-RC1 - explicit nulls, new syntax for `match` and conditional givens, and more
Announcing Dotty 0.20.0-RC1 – `with` starting indentation blocks, inline given specializations and more
Announcing Dotty 0.19.0-RC1 – further refinements of the syntax and the migration to 2.13.1 standard library
Announcing Dotty 0.18.1-RC1 – switch to the 2.13 standard library, indentation-based syntax and other experiments
Announcing Dotty 0.17.0-RC1 – new implicit scoping rules and more
Announcing Dotty 0.16.0-RC3 – the Scala Days 2019 Release
Announcing Dotty 0.15.0-RC1 – the fully bootstrapped compiler
Announcing Dotty 0.14.0-RC1 with export, immutable arrays, creator applications and more
Announcing Dotty 0.13.0-RC1 with Spark support, top level definitions and redesigned implicits
Announcing Dotty 0.12.0-RC1
Announcing Dotty 0.11.0-RC1
Announcing Dotty 0.10.0-RC1
Announcing Dotty 0.9.0-RC1
Announcing Dotty 0.7.0 and 0.8.0-RC1
Announcing Dotty 0.6.0 and 0.7.0-RC1
Announcing Dotty 0.5.0-RC1
Announcing Dotty 0.4.0-RC1
Announcing Dotty 0.3.0-RC2
Announcing Dotty 0.2.0-RC1, with new optimizations, improved stability and IDE support
Announcing Dotty 0.1.2-RC1, a major step towards Scala 3
Implicit Function Types
Multiversal Equality for Scala
Scaling DOT to Scala - Soundness
The Essence of Scala
New Year Resolutions
We got liftoff!
Generated with
Copyright (c) 2002-2025, LAMP/EPFL
Copyright (c) 2002-2025, LAMP/EPFL
scala3-language-server/Other New Features

Other New Features

The following pages document new features of Scala 3.

Table of Contents

  • Trait Parameters
  • Transparent Traits and Classes
  • Universal Apply Methods
  • Export Clauses
  • Opaque Type Aliases
  • Opaque Type Aliases: More Details
  • Named Tuples
  • Open Classes
  • Parameter Untupling
  • Kind Polymorphism
  • The Matchable Trait
  • The @threadUnsafe annotation
  • The @targetName annotation
  • New Control Syntax
  • Optional Braces
  • Safe Initialization
  • TypeTest
  • Experimental Definitions
  • Preview Definitions
  • Binary Integer Literals
  • Toplevel Definitions
  • Better fors
  • The runtimeChecked method
Previous TASTy Inspection
Next Trait Parameters

Contributors to this page

Generated with
Copyright (c) 2002-2025, LAMP/EPFL
Copyright (c) 2002-2025, LAMP/EPFL