{"id":13441231,"url":"https://github.com/scala/scala","last_synced_at":"2025-09-09T20:53:28.453Z","repository":{"id":37737810,"uuid":"2888818","full_name":"scala/scala","owner":"scala","description":"Scala 2 compiler and standard library. Scala 2 bugs at https://github.com/scala/bug; Scala 3 at https://github.com/scala/scala3","archived":false,"fork":false,"pushed_at":"2025-08-28T17:27:09.000Z","size":160667,"stargazers_count":14403,"open_issues_count":21,"forks_count":3108,"subscribers_count":709,"default_branch":"2.13.x","last_synced_at":"2025-08-28T23:15:21.348Z","etag":null,"topics":["functional-programming","jvm-languages","object-oriented-programming","scala","scala-compiler","scala-library","scala-programming-language"],"latest_commit_sha":null,"homepage":"https://www.scala-lang.org/","language":"Scala","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scala.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2011-12-01T05:02:34.000Z","updated_at":"2025-08-28T16:15:25.000Z","dependencies_parsed_at":"2022-08-08T21:30:49.736Z","dependency_job_id":"effc8861-861d-4b26-b61e-ec3d586a8c92","html_url":"https://github.com/scala/scala","commit_stats":{"total_commits":30642,"total_committers":732,"mean_commits":41.86065573770492,"dds":0.8868872788982443,"last_synced_commit":"1390fc3b9464c7494dd5aee6a80c89c3cd882f21"},"previous_names":[],"tags_count":170,"template":false,"template_full_name":null,"purl":"pkg:github/scala/scala","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala%2Fscala","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala%2Fscala/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala%2Fscala/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala%2Fscala/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scala","download_url":"https://codeload.github.com/scala/scala/tar.gz/refs/heads/2.13.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala%2Fscala/sbom","scorecard":{"id":113076,"data":{"date":"2025-08-04","repo":{"name":"github.com/scala/scala","commit":"177b7453e142d3e0b9e5c4a2dc32736e1272c548"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":4.9,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Code-Review","score":8,"reason":"Found 14/16 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:13","Warn: no topLevel permission defined: .github/workflows/cla.yml:1","Warn: no topLevel permission defined: .github/workflows/validate.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.13.16 not signed: https://api.github.com/repos/scala/scala/releases/195021856","Warn: release artifact v2.13.15 not signed: https://api.github.com/repos/scala/scala/releases/176897281","Warn: release artifact v2.12.20 not signed: https://api.github.com/repos/scala/scala/releases/173454033","Warn: release artifact v2.13.14 not signed: https://api.github.com/repos/scala/scala/releases/153730466","Warn: release artifact v2.13.13 not signed: https://api.github.com/repos/scala/scala/releases/143694409","Warn: release artifact v2.13.16 does not have provenance: https://api.github.com/repos/scala/scala/releases/195021856","Warn: release artifact v2.13.15 does not have provenance: https://api.github.com/repos/scala/scala/releases/176897281","Warn: release artifact v2.12.20 does not have provenance: https://api.github.com/repos/scala/scala/releases/173454033","Warn: release artifact v2.13.14 does not have provenance: https://api.github.com/repos/scala/scala/releases/153730466","Warn: release artifact v2.13.13 does not have provenance: https://api.github.com/repos/scala/scala/releases/143694409"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Binary-Artifacts","score":2,"reason":"binaries present in source code","details":["Warn: binary detected: test/files/jvm/libnatives-32.so:1","Warn: binary detected: test/files/jvm/libnatives-64.so:1","Warn: binary detected: test/files/jvm/libnatives-arm.jnilib:1","Warn: binary detected: test/files/jvm/libnatives-x86.jnilib:1","Warn: binary detected: test/files/jvm/natives-32.dll:1","Warn: binary detected: test/files/jvm/natives-64.dll:1","Warn: binary detected: test/sbt-test/source-dependencies/canon/actual/a.jar:1","Warn: binary detected: test/sbt-test/source-dependencies/canon/lib/a.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: reached @ without matching [ with ]: src/compiler/templates/tool-unix.tmpl:0","Info: Possibly incomplete results: error parsing shell code: LitWord cannot be followed by a word: test/files/run/t7711-script-args.script:0","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: test/files/run/t7791-script-linenums.script:0","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/scala/scala/ci.yml/2.13.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/scala/scala/ci.yml/2.13.x?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/scala/scala/ci.yml/2.13.x?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cla.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/scala/scala/cla.yml/2.13.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/validate.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/scala/scala/validate.yml/2.13.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/validate.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/scala/scala/validate.yml/2.13.x?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/validate.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/scala/scala/validate.yml/2.13.x?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T16:20:08.842Z","repository_id":37737810,"created_at":"2025-08-15T16:20:08.842Z","updated_at":"2025-08-15T16:20:08.842Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274360269,"owners_count":25270956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["functional-programming","jvm-languages","object-oriented-programming","scala","scala-compiler","scala-library","scala-programming-language"],"created_at":"2024-07-31T03:01:31.391Z","updated_at":"2025-09-09T20:53:24.518Z","avatar_url":"https://github.com/scala.png","language":"Scala","readme":"# This is Scala 2! Welcome!\n\nThis is the home of the [Scala 2](https://www.scala-lang.org)\nstandard library, compiler, and language spec.\n\nFor Scala 3, visit [scala/scala3](https://github.com/scala/scala3).\n\n# How to contribute\n\nIssues and bug reports for Scala 2 are located in [scala/bug](https://github.com/scala/bug). That tracker is also where new contributors may find issues to work on: [good first issues](https://github.com/scala/bug/labels/good%20first%20issue), [help wanted](https://github.com/scala/bug/labels/help%20wanted).\n\nFor coordinating broader efforts, we also use the [scala/scala-dev tracker](https://github.com/scala/scala-dev/issues).\n\nTo contribute here, please open a [pull request](https://help.github.com/articles/using-pull-requests/#fork--pull) from your fork of this repository.\n\nBe aware that we can't accept additions to the standard library, only modifications to existing code.  Binary compatibility forbids adding new public classes or public methods. Additions are made to [scala-library-next](https://github.com/scala/scala-library-next) instead.\n\nWe require that you sign the [Scala CLA](https://contribute.akka.io/contribute/cla/scala) before we can merge any of your work, to protect Scala's future as open source software.\n\nThe general workflow is as follows.\n1. Find/file an issue in scala/bug (or submit a well-documented PR right away!).\n2. Fork the scala/scala repo.\n3. Push your changes to a branch in your forked repo. For coding guidelines, go [here](https://github.com/scala/scala#coding-guidelines).\n4. Submit a pull request to scala/scala from your forked repo.\n\nFor more information on building and developing the core of Scala, read the rest of this README, especially for [setting up your machine](https://github.com/scala/scala#get-ready-to-contribute)!\n\n\n# Get in touch!\n\nIn order to get in touch with other Scala contributors, join the\n\\#scala-contributors channel on the [Scala Discord](https://discord.com/invite/scala) chat, or post on\n[contributors.scala-lang.org](https://contributors.scala-lang.org) (Discourse).\n\nIf you need some help with your PR at any time, please feel free to @-mention anyone from the list below, and we will do our best to help you out:\n\n|                                                                                                 | username                                                       | talk to me about...                               |\n--------------------------------------------------------------------------------------------------|----------------------------------------------------------------|---------------------------------------------------|\n \u003cimg src=\"https://avatars.githubusercontent.com/lrytz\"         height=\"50px\" title=\"Lukas Rytz\"/\u003e           | [`@lrytz`](https://github.com/lrytz)                 | back end, optimizer, named \u0026 default arguments, reporters       |\n \u003cimg src=\"https://avatars.githubusercontent.com/retronym\"      height=\"50px\" title=\"Jason Zaugg\"/\u003e          | [`@retronym`](https://github.com/retronym)           | compiler performance, weird compiler bugs, lambdas |\n \u003cimg src=\"https://avatars.githubusercontent.com/SethTisue\"     height=\"50px\" title=\"Seth Tisue\"/\u003e           | [`@SethTisue`](https://github.com/SethTisue)         | getting started, build, CI, community build, Jenkins, docs, library, REPL |\n \u003cimg src=\"https://avatars.githubusercontent.com/dwijnand\"      height=\"50px\" title=\"Dale Wijnand\"/\u003e         | [`@dwijnand`](https://github.com/dwijnand)           | pattern matcher, MiMa, partest |\n \u003cimg src=\"https://avatars.githubusercontent.com/som-snytt\"     height=\"50px\" title=\"Som Snytt\"/\u003e            | [`@som-snytt`](https://github.com/som-snytt)         | warnings/lints/errors, REPL, compiler options, compiler internals, partest |\n \u003cimg src=\"https://avatars.githubusercontent.com/Ichoran\"       height=\"50px\" title=\"Rex Kerr\"/\u003e             | [`@Ichoran`](https://github.com/Ichoran)             | collections library, performance              |\n \u003cimg src=\"https://avatars.githubusercontent.com/viktorklang\"   height=\"50px\" title=\"Viktor Klang\"/\u003e         | [`@viktorklang`](https://github.com/viktorklang)     | concurrency, futures |\n \u003cimg src=\"https://avatars.githubusercontent.com/sjrd\"          height=\"50px\" title=\"Sébastien Doeraene\"/\u003e   | [`@sjrd`](https://github.com/sjrd)                   | interactions with Scala.js |\n \u003cimg src=\"https://avatars.githubusercontent.com/NthPortal\"     height=\"50px\" title=\"Princess \\| April\"/\u003e    | [`@NthPortal`](https://github.com/NthPortal)         | library, concurrency, `scala.math`, `LazyList`, `Using`, warnings |\n \u003cimg src=\"https://avatars.githubusercontent.com/bishabosha\"    height=\"50px\" title=\"Jamie Thompson\"/\u003e       | [`@bishabosha`](https://github.com/bishabosha)       | TASTy reader |\n \u003cimg src=\"https://avatars.githubusercontent.com/joroKr21\"      height=\"50px\" title=\"Georgi Krastev\"/\u003e       | [`@joroKr21`](https://github.com/joroKr21)           | higher-kinded types, implicits, variance |\n\nP.S.: If you have some spare time to help out around here, we would be delighted to add your name to this list!\n\n\n# Branches\n\nTarget the oldest branch you would like your changes to end up in. We periodically merge forward from 2.12.x to 2.13.x. Most changes should target 2.13.x, as 2.12.x is now under minimal maintenance.\n\nIf your change is difficult to merge forward, you may be asked to also submit a separate PR targeting the newer branch.\n\nIf your change is version-specific and shouldn't be merged forward, put `[nomerge]` in the PR name.\n\nIf your change is a backport from a newer branch and thus doesn't need to be merged forward, put `[backport]` in the PR name.\n\n## Choosing a branch\n\nMost changes should target 2.13.x. We are increasingly reluctant to target 2.12.x unless there is a special reason (e.g. if an especially bad bug is found, or if there is commercial sponsorship). See [Scala 2 maintenance](https://www.scala-lang.org/development/#scala-2-maintenance).\n\n# Repository structure\n\nMost importantly:\n\n```\nscala/\n+--build.sbt                 The main sbt build definition\n+--project/                  The rest of the sbt build\n+--src/                      All sources\n   +---/library              Scala Standard Library\n   +---/reflect              Scala Reflection\n   +---/compiler             Scala Compiler\n+--test/                     The Scala test suite\n   +---/files                Partest tests\n   +---/junit                JUnit tests\n   +---/scalacheck           ScalaCheck tests\n+--spec/                     The Scala language specification\n```\n\nbut also:\n\n```\nscala/\n   +---/library-aux          Scala Auxiliary Library, for bootstrapping and documentation purposes\n   +---/interactive          Scala Interactive Compiler, for clients such as an IDE (aka Presentation Compiler)\n   +---/intellij             IntelliJ project templates\n   +---/manual               Scala's runner scripts \"man\" (manual) pages\n   +---/partest              Scala's internal parallel testing framework\n   +---/partest-javaagent    Partest's helper java agent\n   +---/repl                 Scala REPL core\n   +---/repl-frontend        Scala REPL frontend\n   +---/scaladoc             Scala's documentation tool\n   +---/scalap               Scala's class file decompiler\n   +---/testkit              Scala's unit-testing kit\n+--admin/                    Scripts for the CI jobs and releasing\n+--doc/                      Additional licenses and copyrights\n+--scripts/                  Scripts for the CI jobs and releasing\n+--tools/                    Scripts useful for local development\n+--build/                    Build products\n+--dist/                     Build products\n+--target/                   Build products\n```\n\n# Get ready to contribute\n\n## Requirements\n\nYou need the following tools:\n  - Java SDK. The baseline version is 8 for both 2.12.x and 2.13.x. It is almost always fine\n    to use a later SDK (such as 17 or 21) for local development. CI will verify against the\n    baseline version.\n  - sbt\n\nMacOS and Linux work. Windows may work if you use Cygwin. Community help with keeping\nthe build working on Windows and documenting any needed setup is appreciated.\n\n## Tools we use\n\nWe are grateful for the following OSS licenses:\n  - [JProfiler Java profiler](https://www.ej-technologies.com/products/jprofiler/overview.html)\n  - [YourKit Java Profiler](https://www.yourkit.com/java/profiler/)\n  - [IntelliJ IDEA](https://www.jetbrains.com/idea/download/)\n  - [![Revved up by Develocity](https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle\u0026labelColor=02303A)](https://develocity.scala-lang.org)\n\n## Build setup\n\n### Basics\n\nDuring ordinary development, a new Scala build is built by the\npreviously released version, known as the \"reference compiler\" or,\nslangily, as \"STARR\" (stable reference release).  Building with STARR\nis sufficient for most kinds of changes.\n\nHowever, a full build of Scala is _bootstrapped_.  Bootstrapping has\ntwo steps: first, build with STARR; then, build again using the\nfreshly built compiler, leaving STARR behind.  This guarantees that\nevery Scala version can build itself.\n\nIf you change the code generation part of the Scala compiler, your\nchanges will only show up in the bytecode of the library and compiler\nafter a bootstrap. Our CI does a bootstrapped build.\n\n**Bootstrapping locally**: To perform a bootstrap, run `restarrFull`\nwithin an sbt session.  This will build and publish the Scala\ndistribution to your local artifact repository and then switch sbt to\nuse that version as its new `scalaVersion`.  You may then revert back\nwith `reload`.  Note `restarrFull` will also write the STARR version\nto `buildcharacter.properties` so you can switch back to it with\n`restarr` without republishing.  This will switch the sbt session to\nuse the `build-restarr` and `target-restarr` directories instead of\n`build` and `target`, which avoids wiping out classfiles and\nincremental metadata.  IntelliJ will continue to be configured to\ncompile and run tests using the starr version in\n`versions.properties`.\n\nFor history on how the current scheme was arrived at, see\nhttps://groups.google.com/d/topic/scala-internals/gp5JsM1E0Fo/discussion.\n\n**Building with fatal warnings**: To make warnings in the project fatal (i.e. turn them into errors), run `set Global / fatalWarnings := true` in sbt (replace `Global` with the name of a module—such as `reflect`—to only make warnings fatal for that module). To disable fatal warnings again, either `reload` sbt, or run `set Global / fatalWarnings := false` (again, replace `Global` with the name of a module if you only enabled fatal warnings for that module). CI always has fatal warnings enabled.\n\n### Using the sbt build\n\nOnce you've started an `sbt` session you can run one of the core commands:\n\n  - `compile` compiles all sub-projects (library, reflect, compiler, scaladoc, etc)\n  - `scala` / `scalac` run the REPL / compiler directly from sbt (accept options /\n    arguments)\n  - `enableOptimizer` reloads the build with the Scala optimizer enabled. Our releases are built this way. Enable this when working on compiler performance improvements. When the optimizer is enabled the build will be slower and incremental builds can be incorrect.\n  - `setupPublishCore` runs `enableOptimizer` and configures a version number based on the current Git SHA. Often used as part of bootstrapping: `sbt setupPublishCore publishLocal \u0026\u0026 sbt -Dstarr.version=\u003cVERSION\u003e testAll`\n  - `dist/mkBin` generates runner scripts (`scala`, `scalac`, etc) in `build/quick/bin`\n  - `dist/mkPack` creates a build in the Scala distribution format in `build/pack`\n  - `junit/test` runs the JUnit tests; `junit/testOnly *Foo` runs a subset\n  - `scalacheck/test` runs scalacheck tests, use `testOnly` to run a subset\n  - `partest` runs partest tests (accepts options, try `partest --help`)\n  - `publishLocal` publishes a distribution locally (can be used as `scalaVersion` in\n    other sbt projects)\n    - Optionally `set baseVersionSuffix := \"bin-abcd123-SNAPSHOT\"`\n      where `abcd123` is the git hash of the revision being published. You can also\n      use something custom like `\"bin-mypatch\"`. This changes the version number from\n      `2.13.2-SNAPSHOT` to something more stable (`2.13.2-bin-abcd123-SNAPSHOT`).\n    - Note that the `-bin` string marks the version binary compatible. Using it in\n      sbt will cause the `scalaBinaryVersion` to be `2.13`. If the version is not\n      binary compatible, we recommend using `-pre`, e.g., `2.14.0-pre-abcd123-SNAPSHOT`.\n    - Optionally `set ThisBuild / Compile / packageDoc / publishArtifact := false`\n      to skip generating / publishing API docs (speeds up the process).\n\nIf a command results in an error message like `a module is not authorized to depend on\nitself`, it may be that a global sbt plugin is causing\na cyclical dependency. Try disabling global sbt plugins (perhaps by\ntemporarily commenting them out in `~/.sbt/1.0/plugins/plugins.sbt`).\n\n#### Sandbox\n\nWe recommend keeping local test files in the `sandbox` directory which is listed in\nthe `.gitignore` of the Scala repo.\n\n#### Incremental compilation\n\nNote that sbt's incremental compilation is often too coarse for the Scala compiler\ncodebase and re-compiles too many files, resulting in long build times (check\n[sbt#1104](https://github.com/sbt/sbt/issues/1104) for progress on that front). In the\nmeantime you can:\n  - Use IntelliJ IDEA for incremental compiles (see [IDE Setup](#ide-setup) below) - its\n    incremental compiler is a bit less conservative, but usually correct.\n\n### IDE setup\n\nWe suggest using IntelliJ IDEA (see\n[src/intellij/README.md](src/intellij/README.md)).\n\n[Metals](https://scalameta.org/metals/) may also work, but we don't\nyet have instructions or sample configuration for that. A pull request\nin this area would be exceedingly welcome. In the meantime, we are\ncollecting guidance at\n[scala/scala-dev#668](https://github.com/scala/scala-dev/issues/668).\n\nIn order to use IntelliJ's incremental compiler:\n  - run `dist/mkBin` in sbt to get a build and the runner scripts in `build/quick/bin`\n  - run \"Build\" - \"Make Project\" in IntelliJ\n\nNow you can edit and build in IntelliJ and use the scripts (compiler, REPL) to\ndirectly test your changes. You can also run the `scala`, `scalac` and `partest`\ncommands in sbt. Enable \"Ant mode\" (explained above) to prevent sbt's incremental\ncompiler from re-compiling (too many) files before each `partest` invocation.\n\n# Coding guidelines\n\nOur guidelines for contributing are explained in [CONTRIBUTING.md](CONTRIBUTING.md).\nIt contains useful information on our coding standards, testing, documentation, how\nwe use git and GitHub and how to get your code reviewed.\n\nYou may also want to check out the following resources:\n  - The [\"Scala Hacker Guide\"](https://scala-lang.org/contribute/hacker-guide.html)\n    covers some of the same ground as this README, but in greater detail and in a more\n    tutorial style, using a running example.\n  - [Scala documentation site](https://docs.scala-lang.org)\n\n# Scala CI\n\n[![Build Status](https://travis-ci.com/scala/scala.svg?branch=2.13.x)](https://travis-ci.com/scala/scala)\n\nOnce you submit a PR your commits will be automatically tested by the Scala CI.\n\nOur CI setup is always evolving.  See\n[scala/scala-dev#751](https://github.com/scala/scala-dev/issues/751)\nfor more details on how things currently work and how we expect they\nmight change.\n\nIf you see a spurious failure on Jenkins, you can post `/rebuild` as a PR comment.\nThe [scabot README](https://github.com/scala/scabot) lists all available commands.\n\nIf you'd like to test your patch before having everything polished for review,\nyou can have Travis CI build your branch (make sure you have a fork and have Travis CI\nenabled for branch builds on it first, and then push your branch).  Also\nfeel free to submit a draft PR. In case your draft branch contains\na large number of commits (that you didn't clean up / squash yet for review),\nconsider adding `[ci: last-only]` to the PR title. That way only the last commit\nwill be tested, saving some energy and CI-resources. Note that inactive draft PRs\nwill be closed eventually, which does not mean the change is being rejected.\n\nCI performs a compiler bootstrap. The first task, `validatePublishCore`, publishes\na build of your commit to the temporary repository\nhttps://scala-ci.typesafe.com/artifactory/scala-pr-validation-snapshots.\nNote that this build is not yet bootstrapped, its bytecode is built using the\ncurrent STARR. The version number is `2.13.2-bin-abcd123-SNAPSHOT` where `abcd123`\nis the commit hash. For binary incompatible builds, the version number is\n`2.14.0-pre-abcd123-SNAPSHOT`.\n\nYou can use Scala builds in the validation repository locally by adding a resolver\nand specifying the corresponding `scalaVersion`:\n\n```\n$ sbt\n\u003e set resolvers += \"pr\" at \"https://scala-ci.typesafe.com/artifactory/scala-pr-validation-snapshots/\"\n\u003e set scalaVersion := \"2.13.17-bin-abcd123-SNAPSHOT\"\n\u003e console\n```\n\n## \"Nightly\" builds\n\nThe Scala CI publishes these to\nhttps://scala-ci.typesafe.com/artifactory/scala-integration/ .\n\nUsing a nightly build in sbt and other tools is explained on this\n[doc page](https://docs.scala-lang.org/overviews/core/nightlies.html).\n\nAlthough we casually refer to these as \"nightly\" builds, they aren't\nactually built nightly, but \"mergely\".  That is to say, a build is\npublished for every merged PR.\n\n## Scala CI internals\n\nThe Scala CI runs as a Jenkins instance on [scala-ci.typesafe.com](https://scala-ci.typesafe.com/),\nconfigured by a chef cookbook at [scala/scala-jenkins-infra](https://github.com/scala/scala-jenkins-infra).\n\nThe build bot that watches PRs, triggers testing builds and applies the \"reviewed\" label\nafter an LGTM comment is in the [scala/scabot](https://github.com/scala/scabot) repo.\n\n## Community build\n\nThe Scala community build is an important method for testing Scala\nreleases. A community build can be launched for any Scala commit, even\nbefore the commit's PR has been merged. That commit is then used to\nbuild a large number of open-source projects from source and run their\ntest suites.\n\nTo request a community build run on your PR, just ask in a comment on\nthe PR and a Scala team member (probably @SethTisue) will take care of\nit. ([details](https://github.com/scala/community-builds/wiki#can-i-run-it-against-a-pull-request-in-scalascala))\n\nCommunity builds run on the Scala Jenkins instance.  The jobs are\nnamed `..-integrate-community-build`. See the\n[scala/community-builds](https://github.com/scala/community-builds)\nrepo.\n","funding_links":[],"categories":["HarmonyOS","Scala","其他","JVM语言","Back-End Development","scala"],"sub_categories":["Windows Manager","网络服务_其他"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscala%2Fscala","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscala%2Fscala","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscala%2Fscala/lists"}