-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathindex.html
35 lines (35 loc) · 39.4 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html><html data-githubContributorsUrl="https://api.github.com/repos/scala/scala3" data-githubContributorsFilename="/docs/_docs/index.md" data-pathToRoot="" data-rawLocation="index" data-dynamicSideMenu="false"><head><meta charset="utf-8"></meta><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"></meta><title>Scala 3</title><link rel="shortcut icon" type="image/x-icon" href="favicon.ico"></link><script type="text/javascript" src="scripts/theme.js"></script><script type="text/javascript" src="scripts/searchData.js" defer="true"></script><script type="text/javascript" src="scripts/scastieConfiguration.js" defer="true"></script><link rel="stylesheet" href="styles/theme/bundle.css"></link><link rel="stylesheet" href="styles/theme/components/bundle.css"></link><link rel="stylesheet" href="styles/theme/components/button/bundle.css"></link><link rel="stylesheet" href="styles/theme/layout/bundle.css"></link><link rel="stylesheet" href="styles/nord-light.css"></link><link rel="stylesheet" href="styles/dotty-icons.css"></link><link rel="stylesheet" href="styles/filter-bar.css"></link><link rel="stylesheet" href="styles/code-snippets.css"></link><link rel="stylesheet" href="styles/searchbar.css"></link><link rel="stylesheet" href="styles/social-links.css"></link><link rel="stylesheet" href="styles/versions-dropdown.css"></link><link rel="stylesheet" href="styles/content-contributors.css"></link><link rel="stylesheet" href="styles/fontawesome.css"></link><script type="text/javascript" src="hljs/highlight.pack.js" defer="true"></script><script type="text/javascript" src="scripts/hljs-scala3.js" defer="true"></script><script type="text/javascript" src="scripts/ux.js" defer="true"></script><script type="text/javascript" src="scripts/common/component.js" defer="true"></script><script type="text/javascript" src="scripts/common/utils.js" defer="true"></script><script type="text/javascript" src="scripts/components/FilterBar.js" defer="true"></script><script type="text/javascript" src="scripts/components/DocumentableList.js" defer="true"></script><script type="text/javascript" src="scripts/components/Input.js" defer="true"></script><script type="text/javascript" src="scripts/components/FilterGroup.js" defer="true"></script><script type="text/javascript" src="scripts/components/Filter.js" defer="true"></script><script type="text/javascript" src="scripts/scaladoc-scalajs.js" defer="true"></script><script type="text/javascript" src="scripts/contributors.js" defer="true"></script><script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js" defer="true"></script><script type="text/javascript" src="https://d3js.org/d3.v6.min.js" defer="true"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/graphlib-dot.min.js" defer="true"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/dagre-d3/0.6.1/dagre-d3.min.js" defer="true"></script><script type="text/javascript" src="https://scastie.scala-lang.org/embedded.js" defer="true"></script><script type="text/javascript" src="scripts/data.js" defer="true"></script><link rel="stylesheet" href="styles/staticsitestyles.css"></link><script>var pathToRoot = "";</script><script>var versionsDictionaryUrl = "https://scala-lang.org/api/versions.json";</script><link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="/css/dottydoc.css"></head><body><div id=""><div id="header" class="body-small"><div class="header-container-left"><a href="" class="logo-container"><span id="project-logo" class="project-logo"><img src="project-logo/logo.svg"></img></span><span id="dark-project-logo" class="project-logo"><img src="project-logo/logo_dark.svg"></img></span><span class="project-name h300">Scala 3</span></a><span onclick="dropdownHandler(event)" class="text-button with-arrow" id="dropdown-trigger"><a><div class="projectVersion">3.7.0-RC1-bin-20250118-b801042-NIGHTLY</div></a></span><div id="version-dropdown" class="dropdown-menu"></div></div><div class="header-container-right"><button id="search-toggle" class="icon-button"></button><a href="https://docs.scala-lang.org/" class="text-button">Learn</a><a href="https://www.scala-lang.org/download/" class="text-button">Install</a><a href="https://scastie.scala-lang.org" class="text-button">Playground</a><a href="https://index.scala-lang.org" class="text-button">Find A Library</a><a href="https://www.scala-lang.org/community/" class="text-button">Community</a><a href="https://www.scala-lang.org/blog/" class="text-button">Blog</a><span id="theme-toggle" class="icon-button"></span><span id="mobile-menu-toggle" class="icon-button hamburger"></span></div></div><div id="mobile-menu"><div class="mobile-menu-header body-small"><span class="mobile-menu-logo"><span id="project-logo" class="project-logo"><img src="project-logo/logo.svg"></img></span><span id="dark-project-logo" class="project-logo"><img src="project-logo/logo_dark.svg"></img></span><span class="project-name h300">Scala 3</span></span><button id="mobile-menu-close" class="icon-button close"></button></div><div class="mobile-menu-container body-medium"><input id="mobile-scaladoc-searchbar-input" class="scaladoc-searchbar-input" type="search" placeholder="Find anything"></input><a href="https://docs.scala-lang.org/" class="mobile-menu-item">Learn</a><a href="https://www.scala-lang.org/download/" class="mobile-menu-item">Install</a><a href="https://scastie.scala-lang.org" class="mobile-menu-item">Playground</a><a href="https://index.scala-lang.org" class="mobile-menu-item">Find A Library</a><a href="https://www.scala-lang.org/community/" class="mobile-menu-item">Community</a><a href="https://www.scala-lang.org/blog/" class="mobile-menu-item">Blog</a><span id="mobile-theme-toggle" class="mobile-menu-item mode"></span></div></div><span id="mobile-sidebar-toggle" class="floating-button"></span><div id="leftColumn" class="body-small"><div class="switcher-container"><a id="docs-nav-button" class="switcher h100 selected" href="index.html">Docs</a><a id="api-nav-button" class="switcher h100 " href="api/index.html">API</a></div><nav id="docs-nav" class="side-menu"><div class="ni n0"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/index.html"><span>Reference</span></a></span><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/new-types/index.html"><span>New Types</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/new-types/intersection-types.html"><span>Intersection Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/new-types/union-types.html"><span>Union Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/new-types/type-lambdas.html"><span>Type Lambdas</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/new-types/match-types.html"><span>Match Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/new-types/dependent-function-types.html"><span>Dependent Function Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/new-types/polymorphic-function-types.html"><span>Polymorphic Function Types</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/enums/index.html"><span>Enums</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/enums/enums.html"><span>Enumerations</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/enums/adts.html"><span>Algebraic Data Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/enums/desugarEnums.html"><span>Translation of Enums and ADTs</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/contextual/index.html"><span>Contextual Abstractions</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/givens.html"><span>Given Instances</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/using-clauses.html"><span>Using Clauses</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/context-bounds.html"><span>Context Bounds</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/deferred-givens.html"><span>Deferred Givens</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/given-imports.html"><span>Importing Givens</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/more-givens.html"><span>Other Forms Of Givens</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/extension-methods.html"><span>Extension Methods</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/right-associative-extension-methods.html"><span>Right-Associative Extension Methods: Details</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/type-classes.html"><span>Implementing Type classes</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/derivation.html"><span>Type Class Derivation</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/derivation-macro.html"><span>How to write a type class `derived` method using macros</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/multiversal-equality.html"><span>Multiversal Equality</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/context-functions.html"><span>Context Functions</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/conversions.html"><span>Implicit Conversions</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/by-name-context-parameters.html"><span>By-Name Context Parameters</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/contextual/relationship-implicits.html"><span>Relationship with Scala 2 Implicits</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/metaprogramming/index.html"><span>Metaprogramming</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/metaprogramming/inline.html"><span>Inline</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/metaprogramming/compiletime-ops.html"><span>Compile-time operations</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/metaprogramming/macros.html"><span>Macros</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/metaprogramming/simple-smp.html"><span>The Meta-theory of Symmetric Metaprogramming</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/metaprogramming/staging.html"><span>Run-Time Multi-Stage Programming</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/metaprogramming/reflection.html"><span>Reflection</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/metaprogramming/tasty-inspect.html"><span>TASTy Inspection</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/other-new-features/index.html"><span>Other New Features</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/trait-parameters.html"><span>Trait Parameters</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/transparent-traits.html"><span>Transparent Traits and Classes</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/creator-applications.html"><span>Universal Apply Methods</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/export.html"><span>Export Clauses</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/opaques.html"><span>Opaque Type Aliases</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/opaques-details.html"><span>Opaque Type Aliases: More Details</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/open-classes.html"><span>Open Classes</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/parameter-untupling.html"><span>Parameter Untupling</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/kind-polymorphism.html"><span>Kind Polymorphism</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/matchable.html"><span>The Matchable Trait</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/threadUnsafe-annotation.html"><span>The @threadUnsafe annotation</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/targetName.html"><span>The @targetName annotation</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/control-syntax.html"><span>New Control Syntax</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/indentation.html"><span>Optional Braces</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/safe-initialization.html"><span>Safe Initialization</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/type-test.html"><span>TypeTest</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/experimental-defs.html"><span>Experimental Definitions</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/other-new-features/binary-literals.html"><span>Binary Integer Literals</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/changed-features/index.html"><span>Other Changed Features</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/numeric-literals.html"><span>Numeric Literals</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/structural-types.html"><span>Programmatic Structural Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/operators.html"><span>Rules for Operators</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/wildcards.html"><span>Wildcard Arguments in Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/imports.html"><span>Imports</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/type-inference.html"><span>Changes in Type Inference</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/implicit-resolution.html"><span>Changes in Implicit Resolution</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/implicit-conversions.html"><span>Implicit Conversions</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/overload-resolution.html"><span>Changes in Overload Resolution</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/match-syntax.html"><span>Match Expressions</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/vararg-splices.html"><span>Vararg Splices</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/pattern-bindings.html"><span>Pattern Bindings</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/pattern-matching.html"><span>Option-less pattern matching</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/eta-expansion.html"><span>Automatic Eta Expansion</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/compiler-plugins.html"><span>Changes in Compiler Plugins</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/lazy-vals-init.html"><span>Lazy Vals Initialization</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/main-functions.html"><span>Main Methods</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/changed-features/interpolation-escapes.html"><span>Escapes in interpolations</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/dropped-features/index.html"><span>Dropped Features</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/delayed-init.html"><span>Dropped: DelayedInit</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/macros.html"><span>Dropped: Scala 2 Macros</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/existential-types.html"><span>Dropped: Existential Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/type-projection.html"><span>Dropped: General Type Projection</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/do-while.html"><span>Dropped: Do-While</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/procedure-syntax.html"><span>Dropped: Procedure Syntax</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/package-objects.html"><span>Dropped: Package Objects</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/early-initializers.html"><span>Dropped: Early Initializers</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/class-shadowing.html"><span>Dropped: Class Shadowing</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/limit22.html"><span>Dropped: Limit 22</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/xml.html"><span>Dropped: XML Literals</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/symlits.html"><span>Dropped: Symbol Literals</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/auto-apply.html"><span>Dropped: Auto-Application</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/weak-conformance.html"><span>Dropped: Weak Conformance</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/nonlocal-returns.html"><span>Deprecated: Nonlocal Returns</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/this-qualifier.html"><span>Dropped: private[this] and protected[this]</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/dropped-features/wildcard-init.html"><span>Dropped: Wildcard Initializer</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/experimental/index.html"><span>Experimental</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/canthrow.html"><span>CanThrow Capabilities</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/erased-defs.html"><span>Erased Definitions</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/named-typeargs.html"><span>Named Type Arguments</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/numeric-literals.html"><span>Numeric Literals</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/explicit-nulls.html"><span>Explicit Nulls</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/main-annotation.html"><span>MainAnnotation</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/into-modifier.html"><span>The `into` Type Modifier</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/cc.html"><span>Capture Checking</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/purefuns.html"><span>Pure Function Syntax</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/tupled-function.html"><span>Tupled Function</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/named-tuples.html"><span>Named Tuples</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/modularity.html"><span>Modularity Improvements</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/typeclasses.html"><span>Better Support for Type Classes</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/runtimeChecked.html"><span>The runtimeChecked method</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/experimental/better-fors.html"><span>Better fors</span></a></span></div></div><div class="ni n1 "><span class="nh de"><a href="docs/reference/syntax.html"><span>Scala 3 Syntax Summary</span></a></span></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/reference/language-versions/index.html"><span>Language Versions</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/reference/language-versions/source-compatibility.html"><span>Source Compatibility</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/reference/language-versions/binary-compatibility.html"><span>Binary Compatibility</span></a></span></div></div><div class="ni n1 "><span class="nh de"><a href="docs/reference/soft-modifier.html"><span>Soft Keywords</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/reference/features-classification.html"><span>A Classification of Proposed Language Features</span></a></span></div></div><div class="ni n0"><span class="nh de"><button class="ar icon-button "></button><a href="docs/contributing/index.html"><span>Contributing</span></a></span><div class="ni n1 "><span class="nh de"><a href="docs/contributing/getting-started.html"><span>Getting Started</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/contributing/setting-up-your-ide.html"><span>Setting up your IDE</span></a></span></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/contributing/diagnosing-your-issue/index.html"><span>Diagnosing your issue</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/contributing/diagnosing-your-issue/reproduce.html"><span>Reproducing an Issue</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/diagnosing-your-issue/cause.html"><span>Finding the Cause of an Issue</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/diagnosing-your-issue/areas.html"><span>Common Issue Locations</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/contributing/debugging-the-compiler/index.html"><span>Debugging the Compiler</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/contributing/debugging-the-compiler/ide-debugging.html"><span>Debugging with your IDE</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/debugging-the-compiler/inspection.html"><span>How to Inspect Values</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/debugging-the-compiler/other-debugging.html"><span>Other Debugging Techniques</span></a></span></div></div><div class="ni n1 "><span class="nh de"><a href="docs/contributing/testing.html"><span>Testing Your Changes</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/contributing/scaladoc.html"><span>Scaladoc</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/contributing/community-build.html"><span>Community Build</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/contributing/sending-in-a-pr.html"><span>Sending in a pull request</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/contributing/cheatsheet.html"><span>Command Cheatsheet</span></a></span></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/contributing/procedures/index.html"><span>Procedures</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/contributing/procedures/release.html"><span>Release Procedure</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/procedures/vulpix.html"><span>Test Vulpix Framework</span></a></span></div></div><div class="ni n1"><span class="nh de"><button class="ar icon-button "></button><a href="docs/contributing/architecture/index.html"><span>High Level Architecture</span></a></span><div class="ni n2 "><span class="nh de"><a href="docs/contributing/architecture/lifecycle.html"><span>Compiler Overview</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/architecture/context.html"><span>Contexts</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/architecture/phases.html"><span>Compiler Phases</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/architecture/types.html"><span>Compiler Types</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/architecture/time.html"><span>Time in the Compiler</span></a></span></div><div class="ni n2 "><span class="nh de"><a href="docs/contributing/architecture/symbols.html"><span>Symbols</span></a></span></div></div></div><div class="ni n0"><span class="nh de"><button class="ar icon-button "></button><a href="docs/internals/index.html"><span>Internals</span></a></span><div class="ni n1 "><span class="nh de"><a href="docs/internals/backend.html"><span>Backend Internals</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/classpaths.html"><span>Classpaths</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/contexts.html"><span>Contexts</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/dotc-scalac.html"><span>Differences between Scalac and Dotty</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/higher-kinded-v2.html"><span>Higher-Kinded Types in Dotty</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/overall-structure.html"><span>Dotty Overall Structure</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/explicit-nulls.html"><span>Explicit Nulls</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/periods.html"><span>Dotc's concept of time</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/syntax.html"><span>Scala 3 Syntax Summary</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/type-system.html"><span>Type System</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/dotty-internals-1-notes.html"><span>Dotty Internals 1: Trees & Symbols (Meeting Notes)</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/debug-macros.html"><span>Debug Macros</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/gadts.html"><span>GADTs - Broad overview</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/coverage.html"><span>Code Coverage for Scala 3</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="docs/internals/best-effort-compilation.html"><span>Best Effort Compilation</span></a></span></div></div><div class="ni n0"><span class="nh de"><button class="ar icon-button "></button><a href="blog/index.html"><span>Blog (archive)</span></a></span><div class="ni n1 "><span class="nh de"><a href="blog/2021/06/25/scala301-rc2.html"><span>Scala 3.0.1-RC2 – backports of critical bugfixes</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2021/06/07/scala3.0.1-rc1-release.html"><span>Scala 3.0.1-RC1 – further stabilising the compiler</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2021/04/21/scala3-rc3.html"><span>Scala 3.0.0-RC3 – bug fixes for 3.0.0 stable</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2021/03/31/scala3-rc2.html"><span>Scala 3.0.0-RC2 – getting ready for 3.0.0</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2021/02/17/scala3-rc1.html"><span>Scala 3.0.0-RC1 – first release candidate is here</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/12/18/scala3-m3.html"><span>Scala 3.0.0-M3: developer's preview before RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/11/09/scala3-m1.html"><span>Scala 3.0.0-M1 is here</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/09/21/naming-schema-change.html"><span>Dotty becomes Scala 3</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/08/31/27th-dotty-milestone-release.html"><span>Announcing Dotty 0.27.0-RC1 - ScalaJS, performance, stability</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/07/27/26th-dotty-milestone-release.html"><span>Announcing Dotty 0.26.0-RC1 - unified extension methods and more</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/06/22/25th-dotty-milestone-release.html"><span>Announcing Dotty 0.25.0-RC2 - speed-up of givens and change in the tuple API</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/04/29/24th-dotty-milestone-release.html"><span>Announcing Dotty 0.24.0-RC1 - 2.13.2 standard library, better error messages and more</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/03/18/23rd-dotty-milestone-release.html"><span>Announcing Dotty 0.23.0-RC1 - safe initialization checks, type-level bitwise operations and more</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2020/02/05/22nd-dotty-milestone-release.html"><span>Announcing Dotty 0.22.0-RC1 - syntactic enhancements, type-level arithmetic and more</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/12/20/21th-dotty-milestone-release.html"><span>Announcing Dotty 0.21.0-RC1 - explicit nulls, new syntax for `match` and conditional givens, and more</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/11/04/20th-dotty-milestone-release.html"><span>Announcing Dotty 0.20.0-RC1 – `with` starting indentation blocks, inline given specializations and more</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/09/23/19th-dotty-milestone-release.html"><span>Announcing Dotty 0.19.0-RC1 – further refinements of the syntax and the migration to 2.13.1 standard library</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/08/30/18th-dotty-milestone-release.html"><span>Announcing Dotty 0.18.1-RC1 – switch to the 2.13 standard library, indentation-based syntax and other experiments</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/07/25/17th-dotty-milestone-release.html"><span>Announcing Dotty 0.17.0-RC1 – new implicit scoping rules and more</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/06/11/16th-dotty-milestone-release.html"><span>Announcing Dotty 0.16.0-RC3 – the Scala Days 2019 Release</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/05/23/15th-dotty-milestone-release.html"><span>Announcing Dotty 0.15.0-RC1 – the fully bootstrapped compiler</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/04/15/14th-dotty-milestone-release.html"><span>Announcing Dotty 0.14.0-RC1 with export, immutable arrays, creator applications and more</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/03/05/13th-dotty-milestone-release.html"><span>Announcing Dotty 0.13.0-RC1 with Spark support, top level definitions and redesigned implicits</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2019/01/21/12th-dotty-milestone-release.html"><span>Announcing Dotty 0.12.0-RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2018/11/30/11th-dotty-milestone-release.html"><span>Announcing Dotty 0.11.0-RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2018/10/10/10th-dotty-milestone-release.html"><span>Announcing Dotty 0.10.0-RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2018/07/06/ninth-dotty-milestone-release.html"><span>Announcing Dotty 0.9.0-RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2018/04/27/eighth-dotty-milestone-release.html"><span>Announcing Dotty 0.7.0 and 0.8.0-RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2018/03/05/seventh-dotty-milestone-release.html"><span>Announcing Dotty 0.6.0 and 0.7.0-RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2017/12/01/fifth-dotty-milestone-release.html"><span>Announcing Dotty 0.5.0-RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2017/10/16/fourth-dotty-milestone-release.html"><span>Announcing Dotty 0.4.0-RC1</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2017/09/07/third-dotty-milestone-release.html"><span>Announcing Dotty 0.3.0-RC2</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2017/07/12/second-dotty-milestone-release.html"><span>Announcing Dotty 0.2.0-RC1, with new optimizations, improved stability and IDE support</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2017/05/31/first-dotty-milestone-release.html"><span>Announcing Dotty 0.1.2-RC1, a major step towards Scala 3</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2016/12/05/implicit-function-types.html"><span>Implicit Function Types</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2016/05/05/multiversal-equality.html"><span>Multiversal Equality for Scala</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2016/02/17/scaling-dot-soundness.html"><span>Scaling DOT to Scala - Soundness</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2016/02/03/essence-of-scala.html"><span>The Essence of Scala</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2016/01/02/new-year-resolutions.html"><span>New Year Resolutions</span></a></span></div><div class="ni n1 "><span class="nh de"><a href="blog/2015/10/23/dotty-compiler-bootstraps.html"><span>We got liftoff!</span></a></span></div></div></nav></div><div id="footer" class="body-small"><div class="left-container">Generated with</div><div class="right-container"><a href="https://github.com/scala/scala3"><button class="icon-button gh"></button></a><a href="https://discord.com/invite/scala"><button class="icon-button discord"></button></a><a href="https://twitter.com/scala_lang"><button class="icon-button twitter"></button></a><div class="text">Copyright (c) 2002-2025, LAMP/EPFL</div></div><div class="text-mobile">Copyright (c) 2002-2025, LAMP/EPFL</div></div><div id="scaladoc-searchBar"></div><div id="main"><div class="breadcrumbs container"><a href="index.html">Scala 3</a></div><div id="content" class="body-medium"><div><div id="content-wrapper">
<div class="site-container">
<div id="site-header"></div>
<main>
<header>
<!--<a class="text-button with-link body-small" href="https://github.com/scala/scala3/edit/main/docs/_docs/index.md">Edit this page on GitHub</a>-->
<h1 class="h600">Scala 3</h1>
</header>
<p class="body-large first-p">This website contains the developer documentation of the Scala 3 compiler. It targets developers interested in contributing to the compiler, or learning its internals. If you want to learn how to use Scala, go <a href="https://docs.scala-lang.org/">here</a>.</p>
<h2 class="h500">Table of Contents</h2>
<ul class="table-of-contents">
<li><a href="docs/reference/index.html">Reference</a></li>
<li><a href="docs/contributing/index.html">Contributing</a></li>
<li><a href="docs/internals/index.html">Internals</a></li>
<li><a href="blog/index.html">Blog (archive)</a></li>
</ul>
</main>
<div class="divider"></div>
<nav class="arrow-navigation" aria-label="Page navigation">
<div>
<span class="body-small arrow-navigation--next">Next</span> <a rel="next" href="docs/reference/index.html" aria-keyshortcuts="Right" class="body-medium"> <span class="body-medium">Reference</span> </a>
</div>
</nav>
<div class="content-contributors hidden">
<h1 class="h200">Contributors to this page</h1>
<div id="documentation-contributors" class="contributors-container"></div>
<div class="github-edit-button">
<a class="text-button with-link body-small" href="https://github.com/scala/scala3/edit/main/docs/_docs/index.md"> Edit this page on GitHub </a>
</div>
</div>
</div>
</div></div><div id="toc" class="body-small"></div></div><div id="footer" class="body-small mobile-footer"><div class="left-container">Generated with</div><div class="right-container"><a href="https://github.com/scala/scala3"><button class="icon-button gh"></button></a><a href="https://discord.com/invite/scala"><button class="icon-button discord"></button></a><a href="https://twitter.com/scala_lang"><button class="icon-button twitter"></button></a><div class="text">Copyright (c) 2002-2025, LAMP/EPFL</div></div><div class="text-mobile">Copyright (c) 2002-2025, LAMP/EPFL</div></div></div></div></body></html>