├── CONTRIBUTING.md ├── CODE_OF_CONDUCT.md ├── .github └── ISSUE_TEMPLATE │ ├── standard.md │ └── release.md ├── README.md ├── travis └── default.yml └── LICENSE /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | To report a bug, please use our [official issue tracker](https://github.com/scala/bug/issues). 2 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | all repositories in these organizations: 2 | 3 | * [scala](https://github.com/scala) 4 | * [scalacenter](https://github.com/scalacenter) 5 | * [lampepfl](https://github.com/lampepfl) 6 | 7 | are covered by the Scala Code of Conduct: https://scala-lang.org/conduct/ 8 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/standard.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: General issue 3 | about: An empty template for general issues 4 | --- 5 | Mostly for internal planning of Scala development, also for tracking less concrete ideas for improvements, long running tasks, 6 | maintenance of the code base. 7 | 8 | NOTE: this tracker is *not* intended for user-facing bug reports, anything that would block a release, 9 | or concrete, directly actionable, user-facing feature requests -- use https://github.com/scala/bug/issues for those. 10 | 11 | If unsure, please ask on https://contributors.scala-lang.org 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Tracker for core Scala development 2 | 3 | Please use our [official issue tracker](https://github.com/scala/bug/issues) to report bugs. 4 | 5 | The issue tracker in this repository is used to coordinate 6 | and plan the ongoing work on the Scala 2.x major releases. 7 | 8 | The canonical repository for the Scala distribution itself 9 | is [scala/scala](https://github.com/scala/scala). 10 | 11 | The list of [planned milestones](https://github.com/scala/scala/milestones) 12 | in `scala/scala` and the [release theme issues](https://github.com/scala/scala-dev/issues/324) in this tracker 13 | show how we are progressing towards the plans in our [Roadmap](https://scala-lang.org/news/roadmap-2.13.html). 14 | 15 | -------------------------------------------------------------------------------- /travis/default.yml: -------------------------------------------------------------------------------- 1 | before_install: 2 | - | 3 | # adding $HOME/.sdkman to cache would create an empty directory, which interferes with the initial installation 4 | [[ -d $HOME/.sdkman/bin/ ]] || rm -rf $HOME/.sdkman/ 5 | curl -sL https://get.sdkman.io | bash 6 | echo sdkman_auto_answer=true > $HOME/.sdkman/etc/config 7 | echo sdkman_auto_selfupdate=true >> $HOME/.sdkman/etc/config 8 | source $HOME/.sdkman/bin/sdkman-init.sh 9 | sdkJava=$(sdk list java | grep -o " $ADOPTOPENJDK\.[0-9\.]*-tem" | head -1 | cut -c2-) 10 | # if we didn't find Temurin, accept an early access build from Java.net 11 | if [[ -z $sdkJava ]]; then sdkJava=$(sdk list java | egrep -o " $ADOPTOPENJDK\\.ea.[0-9]+-open" | head -1 | cut -c2-); fi 12 | if [[ -z $sdkJava ]]; then sdk list java; echo "no matching JDK found: $ADOPTOPENJDK"; travis_terminate 1; fi 13 | sdk install java $sdkJava || true # install fails if it's already installed 14 | sdk use java $sdkJava 15 | unset JAVA_HOME 16 | if [[ $ADOPTOPENJDK == 8 ]]; then versionPrefix="1\.8"; else versionPrefix=$ADOPTOPENJDK; fi 17 | java -version 18 | - java -version 2>&1 | grep 'OpenJDK.*[^0-9]'$versionPrefix'[^0-9]' || exit 1 19 | # Travis-CI's default is an outdated version of sbt-extras; 20 | # overwrite it with the official sbt launcher 21 | - | 22 | unset SBT_OPTS 23 | unset JVM_OPTS 24 | unset SBT_ETC_FILE 25 | curl -L --silent "https://raw.githubusercontent.com/sbt/sbt/1.6.x/sbt" > $HOME/sbt 26 | chmod +x $HOME/sbt && sudo mv $HOME/sbt /usr/local/bin/sbt 27 | 28 | before_cache: 29 | - rm -fv $HOME/.ivy2/.sbt.ivy.lock 30 | - rm -fv $HOME/.sdkman/var/broadcast 31 | - rm -fv $HOME/.sdkman/var/broadcast_id 32 | - rm -rfv $HOME/.sbt/1.0/.develocity 33 | - find $HOME/.ivy2/cache -name "ivydata-*.properties" -print -delete 34 | - find $HOME/.sbt -name "*.lock" -print -delete 35 | - find $HOME/.sbt -name "*compiler-bridge_*-bin-*" -print -delete 36 | 37 | cache: 38 | directories: 39 | - $HOME/.ivy2/cache 40 | - $HOME/.sbt 41 | - $HOME/.sdkman 42 | - $HOME/.cache/coursier 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/release.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Release 3 | about: Tracking issue for a release 4 | title: Release Scala 2 5 | --- 6 | 7 | Use this template to make a scala-dev ticket named after the release, and fill in the variables. 8 | 9 | Variables to be expanded in this template (or set and export them in a local terminal, so that you can copy/paste the commands below without replacing anything): 10 | 11 | ```bash 12 | SCALA_VER_BASE="2.13.0" 13 | SCALA_VER_SUFFIX="" 14 | SCALA_SHA=???????????????????????????????????????? 15 | DIST_SHA=???????????????????????????????????????? 16 | SCALA_VER="$SCALA_VER_BASE$SCALA_VER_SUFFIX" 17 | ``` 18 | 19 | Key links: 20 | - scala/scala milestone: https://github.com/scala/scala/milestones/2.13.? 21 | - scala/bug milestone: https://github.com/scala/bug/milestones/2.13.? 22 | - scala/scala-dev milestone: https://github.com/scala/scala-dev/milestones/2.13.? 23 | - Discourse topic: https://contributors.scala-lang.org/t/? 24 | - release notes draft: https://github.com/scala/scala-dev/blob/scala-dev/releases/2.13.?.md 25 | 26 | ### N weeks before the release 27 | 28 | - [ ] Wind down PR queue. There has to be enough time after the last (non-trivial) PR is merged and the next phase. The core of the eco-system needs time to prepare for the final! 29 | - [ ] Triage scala/bug and scala/scala-dev tickets 30 | - [ ] Create next scala/scala milestone, move the magical "Merge to 2.13.x" description to it (so Scabot uses it as default for new PRs), move pending PRs 31 | - [ ] Create next scala/bug milestone, move pending issues 32 | - [ ] Create next scala/scala-dev milestone, move pending issues 33 | - [ ] Check PRs assigned to the milestone, also check WIP 34 | - [ ] Announce expected release date and current nightly "release candidate" (nightly sha-mangled version) at https://scala-ci.typesafe.com/artifactory/scala-integration/ on https://contributors.scala-lang.org/c/announcements 35 | - [ ] Also notify Scala Center advisory board members of the upcoming release, so they can help test if they want (Seth can handle this, if asked) 36 | 37 | ### Release announcement / notes 38 | 39 | - [ ] Review merged PRs, make sure release-notes label is applied appropriately 40 | - [ ] PRs with release-notes label must have excellent title & description (title will be pasted literally in release note bullet list) 41 | - [ ] Draft release notes (PR and self-merge, so others can comment there rather than on the commits) 42 | - Starting point: `gh api --paginate -X GET search/issues -f q='repo:scala/scala is:pull-request is:merged milestone:2.12.14 label:release-notes' -q '.items[] | " * \(.title) ([#\(.number)](\(.html_url)) by [@\(.user.login)](\(.user.html_url)))"'` 43 | - [ ] On contributors thread, link to release note file and request feedback 44 | 45 | ### N days before release 46 | 47 | - [ ] Announce no more PRs will be merged unless last-minute regressions are found. Re-iterate current nightly sha version for testing. 48 | - [ ] Community build 49 | - JDK 8: https://scala-ci.typesafe.com/job/scala-2.13.x-jdk8-integrate-community-build/???? 50 | - JDK 11: https://scala-ci.typesafe.com/job/scala-2.13.x-jdk11-integrate-community-build/???? 51 | - JDK 17: https://scala-ci.typesafe.com/job/scala-2.13.x-jdk17-integrate-community-build/???? 52 | - JDK 21: https://scala-ci.typesafe.com/job/scala-2.13.x-jdk21-integrate-community-build/???? 53 | - JDK 25: https://scala-ci.typesafe.com/job/scala-2.13.x-jdk25-integrate-community-build/???? 54 | - [ ] Green nightly builds on GitHub Actions: https://github.com/scala/scala/runs/???????? 55 | - [ ] Check any merged PRs accidentally assigned to the next milestone in this branch, and re-assign them to this milestone 56 | - [ ] Merge in any older release branch 57 | - [ ] Check module versioning (is everything in versions.properties up to date?) 58 | - including make sure the version of [scala-asm][] we're using is using latest [ASM][] 59 | - ~On major release, bump PickleFormat version~ 60 | - [ ] Test on Akka customer codebase(s), if applicable 61 | - [ ] Close the scala/scala and scala/bug milestones 62 | 63 | [scala-asm]: https://github.com/scala/scala-asm/ 64 | [ASM]: https://asm.ow2.io/versions.html 65 | 66 | ### Allow time for testing 67 | 68 | How much time is sufficient? A week is a bare minimum. Two weeks is a better "normal" amount. We should also respect requests from Scala Center advisory board members, if they explicitly ask for additional testing time. (In the past, we sometimes only waited a day or two, but this was overly optimistic in presuming that people had been testing nightlies all along.) 69 | 70 | Be mindful of others' schedules; even minor releases make work downstream (for Scala.js and Scala Native, for the Scala 3 team, for compiler plugin authors, and so on). And a botched release might make unexpected work for ourselves as well as for others. So it's better not to release on a Friday or even a Thursday, or too close to a major holiday. And it's best to release while everyone in both America and Europe is awake. (First thing in the morning in America is a good choice.) 71 | 72 | ### Stage! (point of soft no-return) 73 | 74 | Once sufficient time for community testing has passed, it's time to stage the release! 75 | 76 | We call this "soft" no-return because even staged artifacts can end up in local caches and cause confusion. 77 | 78 | - [ ] Trigger a custom build on [travis](https://app.travis-ci.com/github/scala/scala) 79 | - Select the correct branch 80 | - Custom config: `before_script: export SCALA_VER_BASE=$SCALA_VER_BASE SCALA_VER_SUFFIX=$SCALA_VER_SUFFIX` 81 | - Check the build status on https://github.com/scala/scala/commits/2.13.x 82 | - If you get a failure from Sonatype (e.g., "Server redirected too many times"), you [may need to recreate the traivis secrets for sonatype](https://github.com/scala/scala-dev/issues/783#issuecomment-918759252) 83 | - [ ] Create the scala/scala tag locally: `git tag -s -m "Scala $SCALA_VER" v$SCALA_VER $SCALA_SHA` 84 | - [ ] Create scala-dist tag locally: `git tag -s -m "Scala $SCALA_VER" v$SCALA_VER $DIST_SHA` 85 | - [ ] Sanity check jar/pom 86 | - https://central.sonatype.com/publishing 87 | - [ ] Check that JARs haven't mysteriously bloated — compare sizes to previous release. We have no other backstop for this. 88 | 89 | ### Release! (point of hard no-return) 90 | 91 | "Hard" no-return because Maven Central is forever. Tags, too, should be treated as forever, even though they can technically be deleted and re-pushed. 92 | 93 | - [ ] Push scala/scala tag: `git push https://github.com/scala/scala.git v$SCALA_VER` 94 | - [ ] Push scala/scala-dist tag: `git push https://github.com/scala/scala-dist.git v$SCALA_VER` 95 | - [ ] Publish the deployment on https://central.sonatype.com/publishing 96 | 97 | ### Find the release on Maven Central 98 | 99 | - [ ] https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/$SCALA_VER/ 100 | - [ ] On GitHub, use "Create release from tag" button. Set the title to `[WIP] Scala $SCALA_VER]` and the release notes to `Work in progress: this release is not yet announced. See https://contributors.scala-lang.org/t/?.` 101 | - https://github.com/scala/scala/releases/tag/v$SCALA_VER 102 | - this is required for the scala-dist jobs below to upload the artifacts 103 | - [ ] Once the build is available, trigger three scala-dist jobs on travis (https://app.travis-ci.com/github/scala/scala-dist) with custom config. Must use full-length SHAs! 104 | - `before_script: export version=$SCALA_VER scala_sha=$SCALA_SHA mode=release` 105 | - scala-dist job: https://app.travis-ci.com/github/scala/scala-dist/builds/? 106 | - Downstream appveyor job: see https://ci.appveyor.com/project/scala/scala-dist/history 107 | - Downstream scala-dist-smoketest job: see https://app.travis-ci.com/github/scala/scala-dist-smoketest/builds 108 | - Once finished, check the artifacts at https://github.com/scala/scala/releases/tag/v$SCALA_VER. Rename the `.deb` file to `scala-SCALA_VER.deb` (https://github.com/scala/scala-dev/issues/921). 109 | - `before_script: export version=$SCALA_VER scala_sha=$SCALA_SHA mode=archives`: https://app.travis-ci.com/github/scala/scala-dist/builds/? 110 | - `before_script: export version=$SCALA_VER scala_sha=$SCALA_SHA mode=update-api`: https://app.travis-ci.com/github/scala/scala-dist/builds/? 111 | 112 | ### After everything is on Maven Central and the GitHub release 113 | 114 | - [ ] Prepare PR to https://github.com/scala/scala-lang/ (using [scala/make-release-notes](https://github.com/scala/make-release-notes), which requires the release on Maven Central and on the GitHub release) 115 | - `_config.yml` (update scalaversion or devscalaversion) 116 | - `_data/scala-releases.yml` 117 | - new files in `_downloads` and `_posts` 118 | - [ ] Prepare PR to https://github.com/scala/docs.scala-lang/ (refer to PR from previous release as a guide) 119 | -`_config.yml` 120 | - `api/all.md` 121 | - `overviews/FAQ/index.md` 122 | - `contribute/bug-reporting-guide.md` 123 | - perhaps `_overviews/jdk-compatibility/overview.md` (online version: https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html) 124 | - [ ] Pre-announce the release on https://contributors.scala-lang.org/c/announcements 125 | - [ ] ~On major releases only: (manually) update the `current` symlink for the API docs~ 126 | - ~https://github.com/scala/scala-dist/blob/2.13.x/scripts/jobs/release/website/update-api#L15~ 127 | - [ ] Check that the API docs are published 128 | - According to Fabien, there is a cron job running 3x / day (03:30, 12:20, 21:20) that syncs the files over to the web server 129 | - https://www.scala-lang.org/api/$SCALA_VER/ (also https://www.scala-lang.org/api/2.13.x/) should have new version 130 | - if they don't show up, review the `archives` and `update-api` scala-dist job logs. ssh to chara.epfl.ch and poke around. 131 | 132 | ### Prepare downstream 133 | 134 | - [ ] ~Create PR to add/update spec links on scala-lang.org (example: https://github.com/scala/scala-lang/pull/1050)~ 135 | - [ ] ~build and release scala-collection-compat and other modules (or open tickets asking that the maintainers do so)~ 136 | - ~this work has moved to https://github.com/scala/make-release-notes/blob/2.13.x/projects-2.13.md~ 137 | - [ ] if it's a 2.12.x release, publish macro paradise for the new version 138 | - [ ] Open tickets in these repos, requesting publishing: 139 | - [typelevel/kind-projector](https://github.com/typelevel/kind-projector/issues) 140 | - [scalameta](https://github.com/scalameta/scalameta/issues) 141 | - [metals](https://github.com/scalameta/metals/issues) 142 | - [scalafix](https://github.com/scalacenter/scalafix/issues) 143 | - [scoverage](https://github.com/scoverage/scalac-scoverage-plugin/issues) 144 | - [silencer](https://github.com/ghik/silencer/issues) 145 | - [wartremover](https://github.com/wartremover/wartremover/issues) 146 | - [acyclic](https://github.com/com-lihaoyi/acyclic/issues) 147 | - [Ammonite](https://github.com/com-lihaoyi/Ammonite/issues) 148 | - [scala-debug-adapter](https://github.com/scalacenter/scala-debug-adapter) 149 | - [scala3-migrate](https://github.com/scalacenter/scala3-migrate) (2.13 only) 150 | - [scala-cli](https://github.com/virtuslab/scala-cli) 151 | - [scalac-profiling](https://github.com/scalacenter/scalac-profiling) 152 | - (Akka) [lightbend/genjavadoc](https://github.com/lightbend/genjavadoc/issues) 153 | - in addition to publishing, PR the addition of the new version to CI and add a patch file so nightlies of the next version work in the community build 154 | 155 | ### Wait for downstream 156 | 157 | Before proceeding any further, wait for the ecosystem to catch up. 158 | 159 | - Downstream publishing: 160 | - [ ] Wait for Scala.js to support the new release 161 | - [ ] Wait for Scala Native to support the new release 162 | - [ ] Wait for scalameta to publish 163 | - [ ] Wait for scalafix to publish 164 | - [ ] Wait for Metals to publish 165 | - [ ] Wait for kind-projector to publish 166 | - [ ] Wait for scoverage to publish 167 | - [ ] Wait for scala-debug-adapter to publish 168 | - Downstream signoffs: 169 | - [ ] Ask the Scala Center to sign off (Seb) 170 | - [ ] Ask VirtusLab to sign off (Tomasz) 171 | 172 | We have promised to wait **48 non-weekend hours**, minimum. 173 | 174 | If there are delays downstream, at some point it may make sense to go ahead and announce anyway, since news of the release will already be spreading in the community. 175 | 176 | ### Announcements 177 | 178 | - [ ] On the GitHub release, add the release notes 179 | - https://github.com/scala/scala/releases/tag/v$SCALA_VER 180 | - [ ] Merge the scala-lang PR and the docs.scala-lang.org PR 181 | - [ ] wait for them to arrive on the websites and make sure they look okay 182 | - if the scala-lang changes don't show up, possible troubleshooting steps include: 183 | - see if https://scala-webapps.epfl.ch/jenkins/view/All/job/production_scala-lang.org-builder/ has run a job yet to actually publish the changes 184 | - see note above about permissions to trigger a job 185 | - [ ] Scala Users discourse https://users.scala-lang.org 186 | - [ ] Use Typefully to announce on these three platforms together: 187 | - X: [@scala_lang](https://x.com/scala_lang) 188 | - Bluesky: [@scala-lang.org](https://bsky.app/profile/scala-lang.org) 189 | - Mastodon: [@scala_lang](https://fosstodon.org/@scala_lang) 190 | - If you have any trouble, open an issue on https://github.com/scala/scala-social-media 191 | - [ ] Discord: link to release notes in #links channel 192 | - [ ] consider also saying something in #scala-contributors channel 193 | - [ ] Unblock the release in Scala Steward by PRing an update to [default.scala-steward.conf](https://github.com/scala-steward-org/scala-steward/blob/master/modules/core/src/main/resources/default.scala-steward.conf) 194 | - [ ] Add the release to SDKMAN 195 | - as per the documentation at https://sdkman.io/vendors 196 | - URL provided must be in `.zip` format, `.tgz` doesn't work 197 | - sample command: `curl -X POST -H "Consumer-Key: xxx" -H "Consumer-Token: xxx" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"candidate": "scala", "version": "2.13.18", "url": "https://github.com/scala/scala/releases/download/v2.13.18/scala-2.13.18.zip"}' https://vendors.sdkman.io/release` 198 | - replace both `xxx`s with the credential information provided to Seth by Marco Vermeulen (marco at sdkman dot io) 199 | - [ ] test afterwards with `sdk list scala` and `sdk install scala ` (these should work immediately once the `POST` succeeds) 200 | - to correct mistakes, `PATCH` and `DELETE` are also available 201 | - [ ] Announce on https://reddit.com/r/scala 202 | 203 | ### Afterwards 204 | 205 | - [ ] sbt: if it's a 2.12.x release, open PR updating version 206 | - [ ] Scala 3: open PR updating version: 207 | - two places to update: 208 | - `project/Build.scala` 209 | - `community-build/community-projects/stdLib213` (after updating https://github.com/dotty-staging/scala to the release tag) 210 | - https://github.com/scala/scala3/pulls 211 | - [ ] Scastie: open PR adding new version (modeled on https://github.com/scalacenter/scastie/pull/538) 212 | - note that the PR won't be mergeable until kind-projector has published; and if kind-projector's version number has changed, `ScalaTarget.scala` will need updating 213 | - ~If it's a major release:~ 214 | - ~Update `latestSpecVersion` in `spec/_config.yml` on the old branch, so that spec is marked as no longer current~ 215 | - ~Ditto for the nightly build and spec links in `_data/footer.yml` and `_data/doc-nav-header.yml` on docs.scala-lang.org~ 216 | - (Akka) Fortify: 217 | - [ ] Publish scala-fortify-plugin 218 | - [ ] Update scala-fortify 219 | - [ ] Update scala-fortify-docs 220 | - [ ] (Akka) Notify eng-updates 221 | - [ ] Create a scala/scala PR to: 222 | - [ ] update `starr.version` in `/versions.properties` 223 | - [ ] update `Global / baseVersion` in `/build.sbt` 224 | - [ ] update `mimaReferenceVersion` in `/project/MimaFilters.scala` 225 | - [ ] clear out `mimaFilters` in `/project/MimaFilters.scala`, except the one(s) labeled "KEEP" 226 | - ~`spec/_config.yml`, if it's a major release~ 227 | - [ ] Once that PR is merged and a new nightly has published, `./advance scala` (and PR it) in the community build 228 | - [ ] Update https://contributors.scala-lang.org thread 229 | - [ ] Create https://contributors.scala-lang.org thread for the next release 230 | 231 | ### You're done! 232 | 233 | - [ ] Close this ticket and close the scala-dev milestone 234 | --------------------------------------------------------------------------------