explaingit

scala/scala

14,450ScalaAudience · developerComplexity · 5/5Setup · hard

TLDR

This is the source code for the Scala 2 compiler and standard library, the tools that convert Scala programs into JVM bytecode, used by teams wanting expressive functional and object-oriented programming on the Java platform.

Mindmap

mindmap
  root((Scala 2))
    Repo Contents
      Compiler
      Standard library
      REPL
      Test suite
    Language Style
      Object-oriented
      Functional
      JVM based
    Contribution
      Bug tracker
      Pull requests
      CLA required
    Branches
      2.13.x active
      2.12.x minimal
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Contribute a bug fix to the Scala 2 compiler by forking the repository, making a change on the 2.13.x branch, and submitting a pull request.

USE CASE 2

Study the Scala 2 standard library source code to understand how core data structures and APIs are implemented in Scala.

Tech stack

ScalaJavaJVM

Getting it running

Difficulty · hard Time to first run · 1day+

Requires signing a contributor license agreement before changes are merged, target the 2.13.x branch for active development.

In plain English

This repository is the source code for Scala 2, a programming language that runs on the Java Virtual Machine (the software that executes Java programs). Scala blends two programming styles that are sometimes thought of as opposites: object-oriented programming, where code is organized around objects and their behaviors, and functional programming, where computation is expressed as a series of transformations on data with minimal side effects. The result is a language popular with teams that need Java's performance and ecosystem but want more expressive syntax and stronger tools for handling complexity. This specific repository holds the Scala 2 compiler and standard library. The compiler is the program that reads Scala source code and converts it into something the Java Virtual Machine can execute. The standard library is a collection of built-in tools and data structures that all Scala programs can use without installing anything extra. A separate repository handles Scala 3, which is the newer major version with a redesigned compiler. Contributing to this project follows a structured process. You file or find a bug in a dedicated issue tracker at scala/bug, fork the repository to your own GitHub account, make your changes, and submit a pull request. The project also requires signing a contributor license agreement before any changes are merged, which is a legal document protecting the project's open-source status. There is a Discord server and a Discourse forum where contributors coordinate work. The codebase is organized into clearly labeled directories: the compiler, the standard library, the reflection API, the test suite, the documentation tool, the REPL (a tool that lets you run Scala code interactively one line at a time), and the formal language specification. Most ongoing development targets the 2.13.x branch, with version 2.12.x receiving only minimal maintenance.

Copy-paste prompts

Prompt 1
Walk me through how to set up a local Scala 2 compiler build from the scala/scala repository so I can test a compiler change.
Prompt 2
How does the Scala 2 compiler represent a case class internally, and which source files in the compiler directory should I look at?
Prompt 3
What is the correct process for filing a Scala 2 bug, making a fix, and submitting it as a pull request to the scala/scala repository?
Open on GitHub → Explain another repo

← scala on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.