Skip to content

Commit bc5659e

Browse files
authored
Update 2018-11-26-sip-minutes.md
1 parent 6c2b0be commit bc5659e

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

2018-11-26-sip-minutes.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -128,23 +128,24 @@ A smooth migration process is key for the success of Scala 3. We have learned fr
128128

129129
These are the key properties of a successful upgrade plan that we recommend to incorporate in the migration to Scala 3.
130130

131-
1. **Incremental.** Instead of a one-time big upgrade, users should be able to adopt Scala 3 at their own pace.
132-
131+
1. **Static types.** Most Scala code leverages static types which makes migrating safer and easier.
132+
2. **Tooling to ease upgrades.** There should be a rewriting tool for automatic migrations and changes in the current Scala tooling. This tool should accommodate most of the needed changes.
133+
3. **Shared standard library.** Scala 2.14 and Scala 3.0 should share the same Scala standard library.
134+
135+
In addition, Scala community has a culture of upgrading the ecosystem on every major version of Scala through the community build. We recommend to leverage the same mechanism to vet Scala upgrades with the migration to Scala 3.
136+
137+
**Incremental.** Instead of a one-time big upgrade, users should be able to adopt Scala 3 at their own pace.
138+
133139
a) Compatibility and cross-building. Users should be able to use a common subset of Scala to mix Scala 2 and Scala 3 projects (to be determined after the feature freeze) in the same codebase. Scala 2 should guide users towards this subset through deprecation warnings.
134140

135141
b) [Tasty](https://www.scala-lang.org/blog/2018/04/30/in-a-nutshell.html) compatibility. Scala 2 and Scala 3 should converge on the use of Tasty, an intermediate representation format, that will have a strong backwards compatibility policy.
136-
2. **Static types.** Most Scala code leverages static types which makes migrating safer and easier.
137-
3. **Tooling to ease upgrades.** There should be a rewriting tool for automatic migrations and changes in the current Scala tooling. This tool should accommodate most of the needed changes.
138-
4. **Shared standard library.** Scala 2.14 and Scala 3.0 should share the same Scala standard library.
139-
140-
In addition, the Scala community has a culture of upgrading the ecosystem on every major version of Scala through the community build. We recommend to leverage the same mechanism to evaluate Scala upgrades with the migration to Scala 3.
141142

142143
### How will the transition to Scala 3 affect users of Scala 2 macros and reflection?
143144

144145
The dependency of Scala 2 macros and reflection on internal implementation details of the Scala 2 compiler means that significant change is inevitable if Scala is to evolve.
145146
We recognize that important parts of the Scala ecosystem have made essential use of the Scala 2 facilities and that it is vital that as many as possible of these use cases be accommodated in Scala 3 in some form or another. This will be disruptive, but we hope to mitigate the disruption by providing facilities which make the more straightforward and important scenarios simpler while still leaving others possible.
146147
Our direction is still evolving; however we believe that replacing the current excessively general and expressive macro system with a suite of less powerful but complementary tools is the way forward.
147-
Currently we are exploring options which range from improved support for type level programming in the language itself (eg. specialized inline, match types, stable definitions, GADT improvements); intrinsifying certain features currently supported by macros (eg. by-name implicits, generic programming primitives); through to less general forms of metaprogramming (quote/splice and staging) and portable reflection via Tasty (which we [recommend]((https://github.com/scalacenter/advisoryboard/pull/40)) to support in both Scala 2/3 and via compiler-independent libraries and tools. We recommend that most current uses of Scala macros and reflection can be accommodated by some combination of these tools.
148+
Currently we are exploring options which range from improved support for type level programming in the language itself (eg. specialized inline, match types, stable definitions, GADT improvements); intrinsifying certain features currently supported by macros (eg. by-name implicits, generic programming primitives); through to less general forms of metaprogramming (quote/splice and staging) and portable reflection via Tasty (which we [recommend](https://github.com/scalacenter/advisoryboard/pull/40)) to support in both Scala 2/3 and via compiler-independent libraries and tools. We recommend that most current uses of Scala macros and reflection can be accommodated by some combination of these tools.
148149
For more about the project's progress, please see https://github.com/lampepfl/dotty/issues/5489
149150

150151
### How do we plan to address language experimentation?

0 commit comments

Comments
 (0)