Skip to content

Commit 41ef570

Browse files
committed
Add the minutes of September meeting 2016
1 parent 99c5ae5 commit 41ef570

File tree

1 file changed

+238
-0
lines changed

1 file changed

+238
-0
lines changed
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
---
2+
layout: sip-landing
3+
title: SIP Meeting Minutes - 20th September 2016
4+
---
5+
6+
# Minutes
7+
8+
The following agenda was distributed to attendees:
9+
10+
| Topic | Reviewer |
11+
| --- | --- |
12+
| [SIP-NN: Scala Meta SIP](https://github.com/scala/scala.github.com/pull/567) | Iulian Dragos and Josh Suereth |
13+
| [SIP-21: Spores](http://docs.scala-lang.org/sips/pending/spores.html) | Martin Odersky |
14+
| [SIP-26: Unsigned Integer Data Types](https://github.com/scala/slip/pull/30) | Martin Odersky |
15+
| [SIP-27: Trailing commas](https://github.com/scala/scala.github.com/pull/533#issuecomment-232959066) | Eugene Burmako |
16+
17+
Jorge Vicente Cantero was the Process Lead and acting secretary of the meeting.
18+
19+
The following proposal was accepted:
20+
21+
* SIP-27: Trailing commas
22+
23+
The following proposal was rejected:
24+
25+
* SIP-26: Unsigned Integer Data Types
26+
27+
The following proposal will have a follow-up evaluation:
28+
29+
* SIP-21: Spores
30+
31+
The following proposals were numbered:
32+
33+
* SIP-28: Inline (part of Scala Meta SIP)
34+
* SIP-29: Meta (part of Scala Meta SIP)
35+
36+
## Date, Time and Location
37+
38+
The meeting took place at 5:00pm Central European Time / 8:00am Pacific Daylight
39+
Time on Tuesday, September 20th, 2016 via Google Hangouts.
40+
41+
Minutes were taken by Jorge Vicente Cantero, acting secretary.
42+
43+
## Attendees
44+
45+
Attendees Present:
46+
47+
* Martin Odersky ([@odersky](github.com/odersky)), EPFL
48+
* Seth Tisue ([@SethTisue](github.com/SethTisue)), EPFL
49+
* Iulian Dragos ([@dragos](github.com/dragos)), Independent
50+
* Heather Miller ([@heathermiller](github.com/heathermiller)), Scala Center
51+
* Sébastien Doeraene ([@sjrd](github.com/sjrd)), EPFL
52+
* Eugene Burmako ([@xeno-by](github.com/xeno-by)), EPFL
53+
* Josh Suereth ([@jsuereth](github.com/jsuereth)), Google
54+
* Jorge Vicente Cantero ([@jvican](github.com/jvican)), Process Lead
55+
56+
## Guests
57+
58+
* Dale Wijnand ([@dwijnand](github.com/dwijnand)), author of SIP-27
59+
60+
## Apologies
61+
62+
* Andrew Marki ([@som-snytt](github.com/som-snytt)), independent
63+
* Adriaan Moors ([@adriaanm](github.com/adriaanm)), Lightbend
64+
65+
## Proceedings
66+
### Opening Remarks
67+
68+
As acting Process Lead, Jorge gave the welcome to Iulian Dragos, who has just
69+
joined the Committee. He's a natural fit for the Committee, because of
70+
his historical significance in the evolution of Scala and his vast experience in
71+
the current Scala compiler (scalac).
72+
73+
Following to his introduction, he described the main points to the agenda and
74+
proceed to introduce the discussions.
75+
76+
### Discussion of SIP-NN: Scala Meta SIP
77+
78+
Josh and Iulian are the reviewers of the proposal. Josh starts explaining what
79+
the proposal is about. Scala Meta is split into two main parts: inline
80+
and meta. The purpose of this meeting is to number the proposal and kick start a
81+
previous discussion. Jorge proposes to vote, and Iulian points out that before
82+
voting he considers that inline and meta should be separate.
83+
84+
Sébastien argues that it may not be possible, since they are tightly
85+
interconnected and meta relies heavily on a concrete behaviour of inline. Martin
86+
tends to agree with Iulian, and Josh claims that, if possible, studying both
87+
parts separately would be ideal. Sébastien is not sure that they can be
88+
reorganized to be completely orthogonal. Eugene confirms that the dependency
89+
between inline and meta is very big. For him, studying them separately is a
90+
concern because there could be a point where meta cannot happens because of the
91+
way inline was designed.
92+
93+
Seth asks for further information on the interdependency. Sébastien argues that,
94+
conventionally, metaprogramming has relied on the eager execution of the formal
95+
parameters in a function. This may be undesirable for a number of reasons, and
96+
meta assumes that inline parameters result of a meta block are not eagerly
97+
executed and, instead, meta blocks can access the trees of the arguments. Eugene
98+
claims that we could see inline as just a mechanism to get the right hand side
99+
of an method definition and puts in the call-site. Eugene also clarifies that
100+
the dependency between the two is dual: inline also depends on meta, because
101+
inline also accounts for the presence of meta. Martin is not sure if that's
102+
completely true; his inline implementation in Dotty doesn't feature this
103+
dependency. Sébastien claims that one could argue that inline does not depend on
104+
meta, and that the requirement of recursively inlining arguments and method
105+
definitions before the macro expansion is unique to meta, not inline.
106+
107+
Josh understands that both parts are specially hooked together so that their
108+
interaction has concrete results. Martin argues that it would make sense to
109+
split both proposals and study them independently if we can give some guarantees
110+
on the finally-accepted proposals. Martin proposes to have two different
111+
proposals but to accept inline only when we know the future of meta. Eugene
112+
votes in favor conditionally, he emphasizes that the meta-inline dependency
113+
should be honored in the proposals review. Everyone on the table agrees.
114+
115+
**Outcome**: The Committee will review two independent SIPs out of the original
116+
Meta proposal: inline and meta. All the attendees agree unanimously. They are
117+
numbered SIP-28 and SIP-29 respectively.
118+
119+
### Discussion of SIP-21: Spores
120+
121+
Martin introduces the spores proposal and its history, that dates back to 2013.
122+
He thinks that spores are very useful for controlling the environment of a
123+
function, but he doesn't think that they should go into the compiler, as they
124+
are already implemented as a macro.
125+
126+
Sébastien points out that the proposal needs to be updated. A major point of
127+
contention for the spores implementation is that 2.12 introduces Scala SAM
128+
types, and implicit conversions between functions and spores will not kick in
129+
because the right hand side will automatically get the spore type. Removing this
130+
limitation is fairly easy, though: just introduce an abstract member in the
131+
spore class definition to avoid the automatic conversion to a SAM type. This has
132+
no performance hit on the eventual representation of a spore into JVM classes,
133+
since JVM SAM types cannot be used.
134+
135+
Heather joins the conversation. Jorge explains the current discussion and Martin
136+
asks her what's her opinion on not including spores into the compiler. She
137+
says that could be left out and she mentions that spores can only provide a
138+
shallow analysis, a "skin-deep" check of what's captured. Pickling provided a
139+
transitive way of checking the spores contract, but the proposal doesn't take it
140+
into account. Everyone agrees that the proposal should be more general and only
141+
focus on ways to control the captured environment. Sébastien proposes a
142+
typeclass-based way of overcoming the current limitations of spores, but it's
143+
yet to be seen its feasibility in practice. Martin suggests that as the
144+
Committee should analyze spores as it is right now. Heather emphasizes that the
145+
current design is not very useful, so she asks whether we should keep it as such
146+
or try to improve it.
147+
148+
Martin encourages to improve the spores proposal, but suggests to close the
149+
proposal because it's not yet ready. Heather proposes to give the proposal
150+
another iteration to update and improve it.
151+
152+
**Outcome**: The spores proposal will have another iteration in two months
153+
(November). By then, Heather is asked to update the proposal and try to find out
154+
a way to provide more thorough checks (spores transitivity).
155+
156+
### Discussion of SIP-26: Unsigned Integer Data Types
157+
158+
Sébastien introduces his updates on the proposal. He's tried hard to remove the
159+
performance regression in his implementation, but he hasn't found a way. He
160+
describes that the implementation is still 6% slower because of performance hits
161+
in the hashCode and equals implementation of a case class. To work around this
162+
issue, two things are required:
163+
164+
* Changing the underlying implementation of byte and short ints.
165+
* Making the super class of unsigned integer extend *java.lang.Number*
166+
167+
The second option is not feasible because some numbers are AnyVals, and they can
168+
only extend objects. Working around this in the backend is, in Sébastien's
169+
opinion, not an exciting adventure to embark on: a lot of patches and quirky
170+
fixes are required in the compiler. Sébastien, recognizing his unability to fix
171+
the issue, recommends to reject the proposal.
172+
173+
Josh needs to leave. Eugene wonders if these problems are only JVM-specific.
174+
Sébastien replies that both yes and no, and he confirms that unsigned integers
175+
will be implemented in Scalajs alone, so the implementation won't be
176+
platform-independent. Eugene is interested in knowing if there will be any code
177+
duplication in the implementation, and Sébastien doesn't think so, since Scala
178+
Native implements unsigned integer in a different way.
179+
180+
**Outcome**: The proposal is rejected unanimously.
181+
182+
### Discussion of SIP-27: Trailing commas
183+
184+
Jorge welcomes the guest Dale Wijnand, author of the trailing commas proposal.
185+
Jorge also expects the discussion about the proposal to shed some light on its
186+
future status, be it rejected, accepted or given another iteration.
187+
188+
Eugene introduces the updates on the proposal. Dale has asked several questions
189+
to the committee, the most important being if they would accept trailing commas
190+
only for multi-line comma separated lines. The Committee focuses on this main
191+
question, although some other questions about the trailing commas specification
192+
are on the table.
193+
194+
Sébastien points out that it's a good compromise, he personally likes it. He
195+
compares trailing commas to the semantics of semicolons in Scala. Martin is not
196+
convinced but the specialized version and makes the points that trailing commas
197+
wouldn't be like semicolons, because you can write several semicolons together,
198+
when the equivalent in trailing commas should emit an error. Martin thinks that
199+
it messes with another abstract of the language and doesn't think it deserves to
200+
drop all the fundamental ideas for good language design. He proposes that
201+
trailing commas should be implemented in the SBT parser if they are so important
202+
for software development.
203+
204+
Heather is starting to see the IDE argument more favorably, and she is on the
205+
fence about the proposal. She invites Dale to interject about the "IDE" argument
206+
(namely, that IDEs should make easier to deal with trailing commas. Dale thinks
207+
that Scala gives a lot of syntactic sugar and ease to developers by design, in
208+
its compiler. He encourages to solving editing problems into the compiler as
209+
well, since they greatly affect normal developers' life.
210+
211+
Iulian is not in favor for the multi-line specialized case, he would certainly
212+
use the feature but he doesn't think it should be only for the multi-line case.
213+
He points out that Scala had this feature a while ago, and then it was removed.
214+
He sees the clear benefits of the proposal (configuration files, for instance),
215+
but he's still against the specialized case version.
216+
217+
Seth is on the fence about this proposal as well. He leans against it, but not
218+
strongly against it. He says it sorrowfully, because he considers that Dale's
219+
work has been great and that the problem he tries to solve is real.
220+
221+
Jorge, seeing everyone's reactions, proposes to vote on the proposal. In his
222+
view, it doesn't make sense to give it another iteration and make everyone's
223+
spend more time on it. At this point, the Committee doesn't have more meaningful
224+
feedback to improve the proposal, and decisions need to be made.
225+
226+
4 people of the Committee votes yes, 2 no (Martin and Seth). Martin leaves the
227+
room because of another appointment, After the acceptance of the proposal, the
228+
Committee proceeds to decide whether the specialized-case version should be the
229+
accepted one. Everyone on the table votes yes. At the time of the meeting, the
230+
Committee doesn't know if Martin will veto the proposal (as the lead language
231+
designer of Scala, he has this right).
232+
233+
**Outcome**: Martin does not veto the proposal and trailing commas are accepted.
234+
Some details need to be fleshed out, yet, and will be discussed in a exceptional
235+
follow-up iteration.
236+
237+
## Closing remarks
238+
See you next time!

0 commit comments

Comments
 (0)