From da21c0d89e1be40ed75f3f63e557462d68f0fb11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Bra=C4=8Devac?= Date: Wed, 26 Nov 2025 13:19:23 +0100 Subject: [PATCH 1/6] Improve SIP pages --- _layouts/root-content-layout.html | 2 +- .../scala3-book/string-interpolation.md | 2 +- _ru/scala3/book/string-interpolation.md | 2 +- ....md => 001-named-and-default-arguments.md} | 8 +- ... => 002-scala-compiler-phase-plugin-in.md} | 8 +- ...asses.md => 003-new-collection-classes.md} | 8 +- ...ons.md => 004-early-member-definitions.md} | 8 +- ... => 005-internals-of-scala-annotations.md} | 8 +- ...-2-8-arrays.md => 007-scala-2-8-arrays.md} | 8 +- ...verview.md => 008-scala-swing-overview.md} | 8 +- ...ization.md => 009-scala-specialization.md} | 8 +- ...signatures.md => 010-picked-signatures.md} | 8 +- ...olation.md => 011-string-interpolation.md} | 8 +- ...cit-classes.md => 013-implicit-classes.md} | 7 +- ...es-promises.md => 014-futures-promises.md} | 7 +- ...{value-classes.md => 015-value-classes.md} | 7 +- .../{type-dynamic.md => 017-type-dynamic.md} | 7 +- ... => 018-modularizing-language-features.md} | 7 +- _sips/sips/{42.type.md => 023-42.type.md} | 7 +- ...-parameters.md => 025-trait-parameters.md} | 9 +- ...iling-commas.md => 027-trailing-commas.md} | 7 +- ...tatic-members.md => 030-static-members.md} | 7 +- ...e-implicits.md => 031-byname-implicits.md} | 11 +- ...3-priority-based-infix-type-precedence.md} | 9 +- .../{opaque-types.md => 035-opaque-types.md} | 7 +- ...e.md => 037-interpolation-quote-escape.md} | 9 +- ...partialfunctions-and-extractor-objects.md} | 7 +- ...39-right-associative-by-name-operators.md} | 7 +- ...rals.md => 042-binary-integer-literals.md} | 5 +- .../{fewer-braces.md => 044-fewer-braces.md} | 7 +- _sips/sips/{scala-cli.md => 046-scala-cli.md} | 3 +- ...rleaving.md => 047-clause-interleaving.md} | 7 +- ...on.md => 049-polymorphic-eta-expansion.md} | 7 +- ...=> 051-drop-stdlib-forwards-bin-compat.md} | 7 +- .../sips/{binary-api.md => 052-binary-api.md} | 17 +- ...053-quote-pattern-type-variable-syntax.md} | 11 +- ...> 054-multi-source-extension-overloads.md} | 5 +- ...-types-spec.md => 056-match-types-spec.md} | 7 +- ...place-nonsensical-unchecked-annotation.md} | 38 +-- .../{named-tuples.md => 058-named-tuples.md} | 7 +- ...gnments.md => 059-multiple-assignments.md} | 5 +- ...s.md => 060-alternative-bind-variables.md} | 7 +- ...nts.md => 061-unroll-default-arguments.md} | 3 +- .../{better-fors.md => 062-better-fors.md} | 7 +- ...es-syntax.md => 064-typeclasses-syntax.md} | 6 +- _sips/sips/068-reference-package-objects.md | 254 ++++++++++++++++++ _sips/sips/adding-prefix-types.md | 6 - ...o-other-arguments-in-default-parameters.md | 6 - _sips/sips/async.md | 6 - _sips/sips/comonadic-comprehensions.md | 6 - ...oncurrency-with-higher-order-coroutines.md | 7 - _sips/sips/curried-varargs.md | 6 - _sips/sips/eference-able-package-objects.md | 7 - _sips/sips/implicit-macro-conversions.md | 7 - _sips/sips/implicit-source-locations.md | 6 - ...-compatibility-with-existing-code-bases.md | 8 - .../sips/improved-lazy-vals-initialization.md | 7 - ...ing-binary-compatibility-with-stableabi.md | 6 - _sips/sips/inline-meta.md | 6 - _sips/sips/name-based-xml-literals.md | 6 - .../pattern-matching-with-named-fields.md | 6 - _sips/sips/precise-type-modifier.md | 6 - _sips/sips/repeated-by-name-parameters.md | 6 - _sips/sips/scala-3-macro-annotations.md | 7 - _sips/sips/sealed-types.md | 6 - _sips/sips/self-cleaning-macros.md | 6 - _sips/sips/spores.md | 6 - _sips/sips/struct-classes.md | 6 - _sips/sips/uncluttering-abuse-of-match.md | 6 - ...ng-scalas-syntax-for-control-structures.md | 6 - _sips/sips/unsigned-integers.md | 6 - _sips/sips/wildcard-context-bounds.md | 6 - _sips/sips/xistential-containers.md | 7 - .../scala3-book/string-interpolation.md | 2 +- 74 files changed, 456 insertions(+), 320 deletions(-) rename _sips/sips/{named-and-default-arguments.md => 001-named-and-default-arguments.md} (99%) rename _sips/sips/{scala-compiler-phase-plugin-in.md => 002-scala-compiler-phase-plugin-in.md} (72%) rename _sips/sips/{new-collection-classes.md => 003-new-collection-classes.md} (81%) rename _sips/sips/{early-member-definitions.md => 004-early-member-definitions.md} (81%) rename _sips/sips/{internals-of-scala-annotations.md => 005-internals-of-scala-annotations.md} (79%) rename _sips/sips/{scala-2-8-arrays.md => 007-scala-2-8-arrays.md} (99%) rename _sips/sips/{scala-swing-overview.md => 008-scala-swing-overview.md} (82%) rename _sips/sips/{scala-specialization.md => 009-scala-specialization.md} (82%) rename _sips/sips/{picked-signatures.md => 010-picked-signatures.md} (73%) rename _sips/sips/{string-interpolation.md => 011-string-interpolation.md} (90%) rename _sips/sips/{implicit-classes.md => 013-implicit-classes.md} (98%) rename _sips/sips/{futures-promises.md => 014-futures-promises.md} (99%) rename _sips/sips/{value-classes.md => 015-value-classes.md} (99%) rename _sips/sips/{type-dynamic.md => 017-type-dynamic.md} (94%) rename _sips/sips/{modularizing-language-features.md => 018-modularizing-language-features.md} (94%) rename _sips/sips/{42.type.md => 023-42.type.md} (99%) rename _sips/sips/{trait-parameters.md => 025-trait-parameters.md} (96%) rename _sips/sips/{trailing-commas.md => 027-trailing-commas.md} (99%) rename _sips/sips/{static-members.md => 030-static-members.md} (99%) rename _sips/sips/{byname-implicits.md => 031-byname-implicits.md} (99%) rename _sips/sips/{priority-based-infix-type-precedence.md => 033-priority-based-infix-type-precedence.md} (97%) rename _sips/sips/{opaque-types.md => 035-opaque-types.md} (99%) rename _sips/sips/{interpolation-quote-escape.md => 037-interpolation-quote-escape.md} (95%) rename _sips/sips/{converters-among-optional-functions-partialfunctions-and-extractor-objects.md => 038-converters-among-optional-functions-partialfunctions-and-extractor-objects.md} (97%) rename _sips/sips/{right-associative-by-name-operators.md => 039-right-associative-by-name-operators.md} (98%) rename _sips/sips/{binary-integer-literals.md => 042-binary-integer-literals.md} (96%) rename _sips/sips/{fewer-braces.md => 044-fewer-braces.md} (97%) rename _sips/sips/{scala-cli.md => 046-scala-cli.md} (99%) rename _sips/sips/{clause-interleaving.md => 047-clause-interleaving.md} (98%) rename _sips/sips/{polymorphic-eta-expansion.md => 049-polymorphic-eta-expansion.md} (98%) rename _sips/sips/{drop-stdlib-forwards-bin-compat.md => 051-drop-stdlib-forwards-bin-compat.md} (99%) rename _sips/sips/{binary-api.md => 052-binary-api.md} (95%) rename _sips/sips/{quote-pattern-type-variable-syntax.md => 053-quote-pattern-type-variable-syntax.md} (93%) rename _sips/sips/{multi-source-extension-overloads.md => 054-multi-source-extension-overloads.md} (98%) rename _sips/sips/{match-types-spec.md => 056-match-types-spec.md} (99%) rename _sips/sips/{replace-nonsensical-unchecked-annotation.md => 057-replace-nonsensical-unchecked-annotation.md} (81%) rename _sips/sips/{named-tuples.md => 058-named-tuples.md} (99%) rename _sips/sips/{multiple-assignments.md => 059-multiple-assignments.md} (99%) rename _sips/sips/{alternative-bind-variables.md => 060-alternative-bind-variables.md} (98%) rename _sips/sips/{unroll-default-arguments.md => 061-unroll-default-arguments.md} (99%) rename _sips/sips/{better-fors.md => 062-better-fors.md} (99%) rename _sips/sips/{typeclasses-syntax.md => 064-typeclasses-syntax.md} (99%) create mode 100644 _sips/sips/068-reference-package-objects.md delete mode 100644 _sips/sips/adding-prefix-types.md delete mode 100644 _sips/sips/allow-referring-to-other-arguments-in-default-parameters.md delete mode 100644 _sips/sips/async.md delete mode 100644 _sips/sips/comonadic-comprehensions.md delete mode 100644 _sips/sips/concurrency-with-higher-order-coroutines.md delete mode 100644 _sips/sips/curried-varargs.md delete mode 100644 _sips/sips/eference-able-package-objects.md delete mode 100644 _sips/sips/implicit-macro-conversions.md delete mode 100644 _sips/sips/implicit-source-locations.md delete mode 100644 _sips/sips/improve-strictequality-feature-for-better-compatibility-with-existing-code-bases.md delete mode 100644 _sips/sips/improved-lazy-vals-initialization.md delete mode 100644 _sips/sips/improving-binary-compatibility-with-stableabi.md delete mode 100644 _sips/sips/inline-meta.md delete mode 100644 _sips/sips/name-based-xml-literals.md delete mode 100644 _sips/sips/pattern-matching-with-named-fields.md delete mode 100644 _sips/sips/precise-type-modifier.md delete mode 100644 _sips/sips/repeated-by-name-parameters.md delete mode 100644 _sips/sips/scala-3-macro-annotations.md delete mode 100644 _sips/sips/sealed-types.md delete mode 100644 _sips/sips/self-cleaning-macros.md delete mode 100644 _sips/sips/spores.md delete mode 100644 _sips/sips/struct-classes.md delete mode 100644 _sips/sips/uncluttering-abuse-of-match.md delete mode 100644 _sips/sips/uncluttering-scalas-syntax-for-control-structures.md delete mode 100644 _sips/sips/unsigned-integers.md delete mode 100644 _sips/sips/wildcard-context-bounds.md delete mode 100644 _sips/sips/xistential-containers.md diff --git a/_layouts/root-content-layout.html b/_layouts/root-content-layout.html index b45513d346..31c9b14ae7 100644 --- a/_layouts/root-content-layout.html +++ b/_layouts/root-content-layout.html @@ -20,7 +20,7 @@ {% else %}
 
{% endif %} -

{{ page.title }}

+

{% if page.layout == 'sip' and page.number %}{{ page.kind | default: 'SIP' }}-{{ page.number }} - {% endif %}{{ page.title }}

-## Completed SIPs - -Proposals that have been implemented in the compiler and that are available as a stable -feature of the compiler (shipped), or that will be available in the next minor release -of the compiler (accepted). Click on a proposal to read its content. - -
-
    - {% for sip in sips %} - {% if sip.stage == "completed" %} -
  • - {{ sip.title }} -
    {{ sipData[sip.status].text }}
    -
  • - {% endif %} - {% endfor %} -
-
- ## Rejected SIPs -Proposals that have been rejected by the committee. Click on a proposal to read the -corresponding discussions on GitHub. - -
-
    - {% for sip in sips %} - {% if sip.status == "rejected" %} -
  • - {{ sip.title }} -
  • - {% endif %} - {% endfor %} -
-
+Please refer to [GitHub](https://github.com/scala/improvement-proposals/pulls?q=is%3Apr+label%3Astatus%3Arejected) for proposals that have been rejected by the committee and the corresponding discussions. ## Withdrawn SIPs -Proposals that have been withdrawn by their authors. Click on a proposal to read the -corresponding discussions on GitHub. +Please refer to [GitHub](https://github.com/scala/improvement-proposals/pulls?q=is%3Apr+label%3Astatus%3Awithdrawn) for proposals that have been withdrawn +and the corresponding discussions. -
-
    - {% for sip in sips %} - {% if sip.status == "withdrawn" %} -
  • - {{ sip.title }} -
  • - {% endif %} - {% endfor %} -
-
+## Pre-SIP Discussions + +You can find so-called “pre-SIP discussions” in the Scala Contributors forum, under +the category [Scala Improvement Process](https://contributors.scala-lang.org/c/sip/13). +The goal of pre-SIP discussions is to gather initial community feedback and support. \ No newline at end of file From ff5206454972cde948914b4e3774c7779e06a050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Bra=C4=8Devac?= Date: Wed, 26 Nov 2025 17:21:23 +0100 Subject: [PATCH 3/6] Refer to GitHub for pending SIPs --- _sips/all.md | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/_sips/all.md b/_sips/all.md index 0bd6526caa..3d5dafbff9 100644 --- a/_sips/all.md +++ b/_sips/all.md @@ -31,31 +31,9 @@ of the compiler (accepted). Click on a proposal to read its content. ## Pending SIPs -Proposals that are at the design or implementation stage, and that are actively -discussed by the committee and the proposals’ authors. Click on a proposal to -read its content, or the corresponding discussions on GitHub if its design has -not been accepted yet. - -
-
    - {% for sip in sips %} - {% if sip.stage == "design" or sip.stage == "implementation" %} -
  • - - - {{ sip.kind | default: 'SIP' }}-{{ sip.number }} - {{ sip.title }} - - -
    Stage: {{ sipData[sip.stage].text }}
    -
    Status: {{ sipData[sip.status].text }}
    - {% if sip.recommendation %} -
    Recommendation: {{ sipData[sip.recommendation].text }}
    - {% endif %} -
  • - {% endif %} - {% endfor %} -
-
+For proposals that are at the design or implementation stage, and that are actively +discussed by the committee and the proposals' authors, please +refer to the [GitHub PR queue](https://github.com/scala/improvement-proposals/pulls?q=is%3Apr+is%3Aopen). ## Rejected SIPs From 29c9c887429c3930a56a0744e471ba5d8cb11ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Bra=C4=8Devac?= Date: Wed, 26 Nov 2025 17:33:04 +0100 Subject: [PATCH 4/6] Add workflow to sync+PR SIPs from SIP repository --- .github/workflows/sync-sips.yml | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/sync-sips.yml diff --git a/.github/workflows/sync-sips.yml b/.github/workflows/sync-sips.yml new file mode 100644 index 0000000000..cdcc7e8fe6 --- /dev/null +++ b/.github/workflows/sync-sips.yml @@ -0,0 +1,42 @@ +name: Sync SIPs + +on: + schedule: + - cron: '0 6 * * *' # Daily at 6 AM UTC + workflow_dispatch: # Allow manual trigger + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Fetch SIPs from improvement-proposals + run: | + rm -rf _sips/sips + mkdir -p _sips/sips + git clone --depth 1 --filter=blob:none --sparse https://github.com/scala/improvement-proposals.git /tmp/improvement-proposals + cd /tmp/improvement-proposals + git sparse-checkout set content + cp -r content/* $GITHUB_WORKSPACE/_sips/sips/ + + - name: Check for changes + id: changes + run: | + git add _sips/sips + if git diff --staged --quiet; then + echo "changed=false" >> $GITHUB_OUTPUT + else + echo "changed=true" >> $GITHUB_OUTPUT + fi + + - name: Create Pull Request + if: steps.changes.outputs.changed == 'true' + uses: peter-evans/create-pull-request@v5 + with: + commit-message: "Sync SIPs from scala/improvement-proposals" + title: "Sync SIPs from scala/improvement-proposals" + body: | + Automated sync of SIP content from [scala/improvement-proposals](https://github.com/scala/improvement-proposals). + branch: sync-sips + delete-branch: true From 8acab98d6ea1430ea4ea93400ef6a6cc84d037ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Bra=C4=8Devac?= Date: Wed, 26 Nov 2025 17:39:21 +0100 Subject: [PATCH 5/6] Fix permalink --- _sips/sips/011-string-interpolation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sips/sips/011-string-interpolation.md b/_sips/sips/011-string-interpolation.md index 17b4fa005c..1332d4a004 100644 --- a/_sips/sips/011-string-interpolation.md +++ b/_sips/sips/011-string-interpolation.md @@ -1,7 +1,7 @@ --- layout: sip number: 11 -permalink: /sips/:title.html +permalink: /sips/string-interpolation.html redirect_from: /sips/pending/string-interpolation.html stage: completed status: shipped From 7c6aee1ed8241047a49188ee420295c796d2fcc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Bra=C4=8Devac?= Date: Mon, 1 Dec 2025 12:41:08 +0100 Subject: [PATCH 6/6] Put pending SIPs on top --- _sips/all.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/_sips/all.md b/_sips/all.md index 3d5dafbff9..19c649b9d3 100644 --- a/_sips/all.md +++ b/_sips/all.md @@ -10,6 +10,12 @@ redirect_from: {% assign sips = site.sips | sort: 'number' | reverse %} {% assign sipData = site.data.sip-data %} +## Pending SIPs + +For proposals that are at the design or implementation stage, and that are actively +discussed by the committee and the proposals' authors, please +refer to the [GitHub PR queue](https://github.com/scala/improvement-proposals/pulls?q=is%3Apr+is%3Aopen). + ## Completed SIPs Proposals that have been implemented in the compiler and that are available as a stable @@ -29,12 +35,6 @@ of the compiler (accepted). Click on a proposal to read its content.
-## Pending SIPs - -For proposals that are at the design or implementation stage, and that are actively -discussed by the committee and the proposals' authors, please -refer to the [GitHub PR queue](https://github.com/scala/improvement-proposals/pulls?q=is%3Apr+is%3Aopen). - ## Rejected SIPs Please refer to [GitHub](https://github.com/scala/improvement-proposals/pulls?q=is%3Apr+label%3Astatus%3Arejected) for proposals that have been rejected by the committee and the corresponding discussions.