Skip to content

Commit 179ebec

Browse files
committed
SIP minutes: 2019 December
Also make some corrections in the previous minutes.
1 parent a9ece6c commit 179ebec

File tree

2 files changed

+133
-6
lines changed

2 files changed

+133
-6
lines changed

_sips/minutes/2019-12-18-sip-minutes.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ The following agenda was distributed to attendees:
1111

1212
Review the following SIPs:
1313

14-
1. Open classes (aka "sealed classes by default") - Séb
15-
2. Explicit Nulls - Séb
14+
1. Open classes (aka "sealed classes by default") - Seb
15+
2. Explicit Nulls - Seb
1616
3. Main functions - needs a champion
1717

1818
## Date and Location
@@ -140,10 +140,10 @@ Guillaume has 2 comments:
140140
of keyword or syntax - at the extension point. Then you wouldn't create a new language dialect, and wouldn't
141141
need to introduce a new import/flag.
142142

143-
* Séb: that wouldn't work for mocking library, where you would typically just enable it for the
143+
* Seb: that wouldn't work for mocking library, where you would typically just enable it for the
144144
compilation of test sources.
145145
* Gui: if mocking libraries work with macros, then the macro can just write the right tree, with the force extends
146-
* Séb: yeah, maybe
146+
* Seb: yeah, maybe
147147

148148
Seth comments that he find the whole thing so questionable. To him it seems like an area where everything was
149149
fine, and there wasn't a big pain point. Sébastien says that this is a big pain point for him, along with
@@ -187,7 +187,7 @@ can dot-select on it, for example. It's something in the middle.
187187

188188
Guillaume asks: how in thie middle? What can you _not_ do?
189189

190-
Séb: when it becomes something that is just String it will eagerly fail there. So if your Scala API declares
190+
Seb: when it becomes something that is just String it will eagerly fail there. So if your Scala API declares
191191
something is a String, and you use a Java API that returns String | UncheckedNull, it will throw in the body of
192192
your method. It can't "give the null away".
193193

@@ -208,7 +208,7 @@ Guillaume asks: flow typing or the elvis operator?
208208
Iulian mentions how he wanted to talk about the elvis operator. He asks: what is the recommended way to call
209209
methods on nullable types? What is the equivalent of the elvis operator?
210210

211-
Séb: you don't call methods on nullable types, you have to first test if it's null. The problem with the elvis
211+
Seb: you don't call methods on nullable types, you have to first test if it's null. The problem with the elvis
212212
operator is that it looks like flatMap but it's not. It's unboxed, so it confuses the equivalent of None and
213213
Some(None). That seems theoretical but it's not - it boils down to practical things. For instance, Map#get
214214
returns null - if the Map's value type is itself nullable you can't distinguish if the key is set in the Map to
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
---
2+
layout: sips
3+
title: SIP Meeting Minutes - January 27 2019
4+
5+
partof: minutes
6+
---
7+
8+
# Minutes
9+
10+
The meeting took place without a pre-defined agenda.
11+
12+
## Date and Location
13+
14+
The meeting took place on the 27th January 2020 at 17:00 CET via Zoom at EPFL in Lausanne, Switzerland, as well
15+
as other locations.
16+
17+
The meeting was broadcast and recorded on the Scala Process's YouTube channel:
18+
[SIP meeting January 2020](https://www.youtube.com/watch?v=ws2AaDUg-6E) [1:00:53].
19+
20+
Minutes were taken by Dale Wijnand.
21+
22+
## Attendees
23+
24+
* Martin Odersky ([@odersky](https://github.com/odersky)), EPFL
25+
* Sébastien Doeraene ([@sjrd](https://github.com/sjrd)), Scala Center
26+
* Guillaume Martres ([@smarter](https://github.com/smarter), EPFL
27+
* Adriaan Moors ([@adriaanm](https://github.com/adriaanm)), Lightbend
28+
* Seth Tisue ([@SethTisue](https://github.com/SethTisue)), Lightbend
29+
* Josh Suereth ([@jsuereth](https://github.com/jsuereth)), Independent
30+
* Dale Wijnand ([@dwijnand](https://twitter.com/dwijnand)), secretary
31+
32+
## Not present
33+
34+
* Darja Jovanovic ([@darjutak](https://github.com/darjutak)), Process Lead
35+
* Iulian Dragos ([@dragos](https://github.com/dragos)), Triplequote
36+
* Lukas Rytz ([@lrytz](https://twitter.com/lrytz)), Lightbend
37+
* Miles Sabin ([@milessabin](https://github.com/milessabin)), Independent
38+
* Heather Miller ([@heathermiller](https://github.com/heathermiller)), CMU
39+
40+
## Proceedings
41+
42+
(Unforunately, while the lovely external microphone was fully functional for the Zoom call, unknowing to
43+
everyone at the meeting (until near the end), the laptop microphone was what was being used for the YouTube OBS
44+
capture. Therefore, it is near impossible to hear what was said from the YouTube recording, so the minutes this
45+
month will be an opinionated executive summary of only the hightlights.)
46+
47+
### Binary Integer Literal
48+
49+
Thread: <https://contributors.scala-lang.org/t/pre-sip-support-binary-integer-literals/3559>
50+
51+
The committee feels that, despite the benefits outlined in the proposal in this Pre-SIP, it doesn't fit the
52+
criteria for inclusion in Scala 3.0, specifically given it can be added later without technical breakages or
53+
changes in understanding of Scala ("book breaking"). However it might come up again when Dotty's `FromDigits`
54+
is discussed (in some future meeting).
55+
56+
### Open Classes
57+
58+
Thread: <https://contributors.scala-lang.org/t/sip-public-review-open-classes/3888>
59+
60+
After Seb initially summarises the public review contributors' thread, some more technical details are
61+
discussed.
62+
63+
One suggestion from the thread was that instead of being a new keyword it could be an `@open` annotation that
64+
users can opt-in to. Martin responds that an `@open` annotation doesn't make the language any simpler, and
65+
it's a bit of a cop-out to use an annotation instead of a keyword, particularly as the principle is that
66+
annotations shouldn't change semantics (and its intended that `open` does).
67+
68+
It's also highlighted that perhaps one of the biggest motivations for this proposal is to make the default
69+
`class Foo` be the right choice most of the time, countering the blog and conference talk advice that unless
70+
they're doing `final class Foo` (particularly `final case class Foo()`) then their code is "broken" or "not
71+
professional".
72+
73+
Finally, a strawpoll was taken, with the committee members present, with the following results:
74+
* Aye, by Martin
75+
* Aye, by Sébastien
76+
* Aye, by Guillaume
77+
* Aye, by Adriaan
78+
* Unsure, by Seth, but strongly in favour for just case classes
79+
* Aye, by Josh, but with some nuance on some technical details
80+
81+
### Explicit Nullability
82+
83+
Thread: <https://contributors.scala-lang.org/t/sip-public-review-explicit-nulls/3889>
84+
85+
Again, after some initial review of the thread feedback and chatting about some of that feedback, one of the
86+
highlights is that roughly Kotlin's platform types are very similar to Dotty's union type implementation, but
87+
that it would be worth comparing more closely to understand where they're different.
88+
89+
The general update on the proposal is that there are some concerns, and both the proposal and the implementation
90+
require more work and more study. Particularly there are implementation concerns with how unchecked null is
91+
handled, which has consequences on what code is consider valid. As there are other paths to handle Java interop
92+
(including reviewing how platform types work), the proposal is going be somewhat withdrawn, so that the Dotty
93+
team can work on it some more and come back to this SIP proposal.
94+
95+
Anyone interested in participating in experiementation is very welcome, as experimentation at this point would
96+
be very, very valuable.
97+
98+
### enum
99+
100+
Dotty's enum proposal is ready for public review, so Josh will open a thread.
101+
102+
There are specific topics that need discussing:
103+
* the type of the enum (e.g. is `Some(5)` a `Some[Int]` or a `Option[Int]`)
104+
* details of the Java enum aspect
105+
* some implementation details, like the `toString` of enum variants
106+
107+
Enums will be discussed at the next SIP meeting.
108+
109+
Here's the public review thread, by Josh: <https://contributors.scala-lang.org/t/proposal-for-enumerations-in-scala/4020>
110+
111+
### TASTy
112+
113+
The TASTy format isn't really a SIP, but it should be one.
114+
115+
Seb explains how it has mostly been discussed in terms of a new "binary format" for Scala. But he believes that
116+
it instead should be considered as an intermediate language, with a spec, and the golden standard for what Scala
117+
is and means, and what it means for compatiblity in the future.
118+
119+
He continues that up to now the JVM bytecode was considered as the compatibility, and that we have tools like
120+
MiMa to verify backwards compatibility. The TASTy proposal is to change that and use TASTy for that very
121+
purpose. Under that idea, a breaking change to TASTy would mean a breaking change to Scala, and should
122+
therefore mean a new major version (such as Scala 4).
123+
124+
## Next
125+
126+
The next meeting will be on the last week of February, at 17:00 CET. In March the Committee will meet for a 3
127+
day retreat but it will still come online for an hour, to provide a summary of what happened.

0 commit comments

Comments
 (0)