# scala/scala3

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/scala-scala3).**

6,193 stars · 1,144 forks · Scala · apache-2.0

## Links

- GitHub: https://github.com/scala/scala3
- Homepage: https://scala-lang.org
- awesome-repositories: https://awesome-repositories.com/repository/scala-scala3.md

## Topics

`compiler` `dotty` `epfl` `scala` `scala3`

## Description

Scala 3 is an open-source, statically typed programming language that compiles to JVM bytecode, combining object-oriented and functional programming paradigms. Its core identity is defined by a sophisticated type system that includes traits, generics, union types, and a dependent object type system where types can depend on runtime values through path-dependent and singleton types.

The language distinguishes itself through several advanced type-level and metaprogramming capabilities. It features a contextual abstraction mechanism using given instances and using clauses for compile-time implicit resolution, inline metaprogramming with staged evaluation on typed abstract syntax trees, and match type computation for compile-time conditional type definitions. Scala 3 also enforces multiversal equality to prevent unintended type comparisons, supports opaque type aliasing that hides underlying representations while maintaining type safety, and employs a trait linearization model for deterministic method resolution in mixin composition.

Beyond its type system, Scala 3 provides a complete development toolchain including a compiler that translates source code into executable bytecode, a standard library, and a formal language specification. The language supports interactive evaluation through a REPL, script compilation and execution from the command line, and toolchain installation management. It also offers comprehensive educational resources such as structured language lessons, in-depth feature guides, video series, and recorded conference talks, along with migration guidance for moving codebases from Scala 2 to Scala 3.

## Tags

### Programming Languages & Runtimes

- [JVM Bytecode Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-bytecode-compilation/jvm-bytecode-compilers.md) — Compiles Scala 3 source code into Java bytecode that runs on the Java Virtual Machine.
- [Source-to-Bytecode Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/bytecode-compiled-languages/source-to-bytecode-compilers.md) — Translates Scala 3 source code into executable bytecode, enabling developers to build and run applications. ([source](https://cdn.jsdelivr.net/gh/scala/scala3@main/README.md))
- [Algebraic Data Type Enumerations](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/language-extensions/union-types/algebraic-data-type-enumerations.md) — Expresses algebraic data types through enum definitions that desugar into sealed class hierarchies with union types.
- [Metaprogramming & Macros](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/metaprogramming-macros.md) — Provides inline metaprogramming with staged evaluation on typed abstract syntax trees for compile-time code generation.
- [Path-Dependent Type Systems](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/type-system-tools/type-definitions/type-aliases/object-aliasing/object-type-restrictions/exact-object-types/path-dependent-type-systems.md) — Enables types that depend on runtime values through path-dependent and singleton types for precise reasoning.
- [Representation-Hiding Type Aliases](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/type-system-tools/type-definitions/type-aliases/opaque/representation-hiding-type-aliases.md) — Hides underlying type representations while maintaining type safety through controlled visibility and separate compilation.
- [Scala](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/jvm-languages/scala.md) — An open-source, statically typed language combining object-oriented and functional programming for the JVM.
- [Interactive Development Environments](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/jvm-languages/scala/interactive-development-environments.md) — Provides a built-in REPL for interactive code evaluation and experimentation.
- [Deterministic Method Resolution Orders](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/type-systems/trait-based-polymorphism/traits/trait-dependencies/deterministic-method-resolution-orders.md) — Determines method resolution through a deterministic linearization order of trait mixins for super call chains.
- [Statically Typed Languages](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/type-systems/type-checking-disciplines/statically-typed-languages.md) — Enforces type safety at compile time with a sophisticated type system including traits, generics, and union types.
- [Standard Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/standard-libraries.md) — Delivers a collection of reusable classes and functions that support common programming tasks. ([source](https://cdn.jsdelivr.net/gh/scala/scala3@main/README.md))
- [Dependent Object Type Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/statically-typed-compilers/dependent-object-type-compilers.md) — Compiles Scala 3 source code into JVM bytecode using a dependent object type system and simplified syntax.
- [Language Specifications](https://awesome-repositories.com/f/programming-languages-runtimes/language-specifications-standards/language-specifications.md) — Publishes a formal language specification defining syntax and semantics for tool builders and developers. ([source](https://cdn.jsdelivr.net/gh/scala/scala3@main/README.md))
- [Language Version Migrations](https://awesome-repositories.com/f/programming-languages-runtimes/language-version-migrations.md) — Provides a guide that helps move code from an older version of the language to a newer one. ([source](https://docs.scala-lang.org/scala3/))
- [API Documentation Browsers](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/jvm-languages/scala/api-documentation-browsers.md) — Provides searchable API documentation for every version of the standard library.
- [Learning Resources](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/jvm-languages/scala/learning-resources.md) — Offers structured language lessons and bite-sized tutorials for learning Scala 3 fundamentals.
- [Migration Guides](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/jvm-languages/scala/migration-guides.md) — Ships a dedicated migration guide for moving codebases from Scala 2 to Scala 3.

### Data & Databases

- [Contextual Implicit Resolutions](https://awesome-repositories.com/f/data-databases/data-type-definitions/abstract-type-systems/contextual-implicit-resolutions.md) — Implements a contextual abstraction mechanism using given/using clauses for compile-time implicit resolution.
- [Type-Directed Implicit Resolutions](https://awesome-repositories.com/f/data-databases/database-query-joins/implicit-join-resolvers/type-directed-implicit-resolutions.md) — Resolves given instances and using clauses through compile-time type-directed lookup for contextual parameters.
- [Sealed Hierarchy Desugarings](https://awesome-repositories.com/f/data-databases/enum-definitions/sealed-hierarchy-desugarings.md) — Compiles enum definitions into sealed class hierarchies with union type support for algebraic data types.

### Development Tools & Productivity

- [Open Source Software](https://awesome-repositories.com/f/development-tools-productivity/open-source-software.md) — Developed and maintained by the Scala community under an Apache 2.0 license with an open contribution process.
- [API Documentation](https://awesome-repositories.com/f/development-tools-productivity/api-documentation.md) — Ships searchable API documentation for every version of the standard library. ([source](https://docs.scala-lang.org/scala3/))
- [API Documentation Generators](https://awesome-repositories.com/f/development-tools-productivity/api-documentation-generators.md) — Produces API documentation for projects using the Scaladoc tool with new features. ([source](https://docs.scala-lang.org/scala3/))

### Education & Learning Resources

- [Functional Programming Concepts](https://awesome-repositories.com/f/education-learning-resources/educational-resources/languages-and-programming-concepts/programming-language-mastery-guides/functional-programming-concepts.md) — Implements functional programming concepts including immutability, higher-order functions, and pattern matching.
- [Progressive Lesson Series](https://awesome-repositories.com/f/education-learning-resources/educational-lessons/progressive-lesson-series.md) — Teaches the language through a series of short, structured lessons for progressive learning. ([source](https://docs.scala-lang.org/scala3/))
- [Bite-Sized Tutorials](https://awesome-repositories.com/f/education-learning-resources/educational-resources/languages-and-programming-concepts/software-engineering-languages/language-fundamentals/bite-sized-tutorials.md) — Introduces core language features through bite-sized lessons and short tutorials for newcomers. ([source](https://docs.scala-lang.org/scala3/))

### Software Engineering & Architecture

- [Linearized Trait Mixins](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/object-oriented-foundations/object-oriented-programming/behavior-customization/entity-behavior-modules/trait-based-compositions/linearized-trait-mixins.md) — Linearizes trait mixins following a specific ordering rule for deterministic method resolution and super call chains.
- [Compile-Time Equality Guards](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/equality-validators/equality-operators/compile-time-equality-guards.md) — Enforces type-safe equality comparisons through a canEqual method preventing unintended type comparisons at compile time.
- [Type-Safe Equality Enforcements](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/equality-validators/equality-operators/type-safe-equality-enforcements.md) — Enforces type-safe equality comparisons through a canEqual method preventing unintended type comparisons at compile time.
- [Type-Level Conditional Logic](https://awesome-repositories.com/f/software-engineering-architecture/type-level-conditional-logic.md) — Enables type-level pattern matching for compile-time conditional type definitions and recursive type reduction.
- [Advanced Feature Documentation](https://awesome-repositories.com/f/software-engineering-architecture/code-modernization-guides/language-feature-updates/advanced-feature-documentation.md) — Offers comprehensive documentation covering many of the language's advanced features. ([source](https://docs.scala-lang.org/scala3/))
- [Idiomatic Coding Standards](https://awesome-repositories.com/f/software-engineering-architecture/idiomatic-coding-standards.md) — Provides a style guide with conventions for writing clean, idiomatic code. ([source](https://docs.scala-lang.org/scala3/))

### Part of an Awesome List

- [Language Release Highlights](https://awesome-repositories.com/f/awesome-lists/more/watchos-2-new-features/language-release-highlights.md) — Highlights the new language features and improvements introduced in the language. ([source](https://docs.scala-lang.org/scala3/))

### DevOps & Infrastructure

- [Source-Level Dependency Directives](https://awesome-repositories.com/f/devops-infrastructure/dependency-management/configuration-declaration-formats/dependency-declarations/source-level-dependency-directives.md) — Declares library dependencies in source files with directives resolved automatically at compile time. ([source](https://docs.scala-lang.org/scala3/getting-started.html))
