Player is loading...

Embed

Copy embed code

Transcriptions

Note: this content has been automatically generated.
00:00:00
thank you everyone for coming i'm really happy to talk about the uh scot free today so
00:00:07
um if you look at the session at the session on a you know what the schedule
00:00:13
and yep then you see that i slightly change the title so in in in uh originally i was the question
00:00:20
how are we going to migrate discover three and while preparing this talk i got you know
00:00:25
i i obviously myself started looking more more into what's called three is going to be like
00:00:30
and myself i get quite a lot more confident that this thing is really going to be to
00:00:34
go very well so i decided to change the title to be more you know more positive more
00:00:40
certain that this thing is going to be a very nice transition into solid three
00:00:46
um so really confident about the future and happy to talk about that day
00:00:52
um i'm working at in this got emit light and so that's team meetings got to nowadays
00:01:00
um does make try to handle and for you know if you want to reach out
00:01:05
in anytime um after the conference i'm okay and burns on one hour away from here
00:01:15
other than to my um i did a p. h. d. in
00:01:18
martin's lap um i since five years now i'm working for like band
00:01:23
i worked on various aspects of this colour out to compiler like the most in
00:01:28
the back and the optimise your first two thirteen also worked on the standard libraries so
00:01:34
what kind of things uh here's the outline of the talk so
00:01:38
there are three parts first part is a perspective on scott three
00:01:43
from somebody that wants to migrate to it so if you're an ordinary scott to user
00:01:48
and you want to migrate discover three you know what what is it going to be like
00:01:53
impart to part ways called working together um
00:01:58
they're different aspects of working together so there's obviously how people
00:02:04
and teams are working together to makes colour three a success
00:02:08
but there's also very technical aspects in working together so how is this colour three compiler
00:02:14
working together with you know all the existing ecosystem around scholar
00:02:20
so that's um like the big title for the second part of the talk and the last part is a bit more practical
00:02:26
questions you know but maybe come up when somebody wants to migrate discovered three l. talk a bit about time line as well
00:02:38
alright part one a perspective once colour three
00:02:42
so the goal of this talk is not to show you all the new nice and ah elegant
00:02:47
features that's got three will put bring along you've seen many of those in the keynote of course
00:02:54
but still i want to present a few futures um you know that's a few features that will
00:02:59
stella three we will bring just to show how they relate to use colour to code and also to
00:03:05
makes colour three a bit more you know give it with the for promotion and what your appetite
00:03:13
um yeah so if you if you want you know to explain to somebody what
00:03:18
is colour three all about what are the core principles behind it you know we
00:03:22
we discussed about this if you know many times already of course and and kind
00:03:26
of this still distilled into these four points that i've i have on this slide
00:03:32
um maybe if you look at other resources the first point uh the first point your compatibility was colour too
00:03:40
that doesn't show up all that often so you know people usually talk about colour three oh about all the
00:03:46
simplifications and the new features and how great it's going to be no doubt
00:03:52
but in reality compatibility with colour to is really at the core of everything that's happening
00:03:58
um in the development of scot free and this point i put it
00:04:02
on the top now on this slide because by now it is released
00:04:06
be on the top of the priority list maybe it was a
00:04:10
bit further down in the beginning but it's slowly started bubbling up
00:04:13
the more we start we we discussed about you know what will always this actually going to happen
00:04:19
so by now everything that's happening us colours three will it is always a keeps the compatibility of scholar to in mind
00:04:27
other than that the main principles plans colour three are simplifications so
00:04:32
this language features that are maybe not too complex are we want to kind of them
00:04:39
make its something's easier to use for the programmers and maybe also forty one language implement there's
00:04:48
one thing that has really changed between scholar through to whence colour three is um
00:04:54
the fact that it's colours becoming more opinionated i will talk about this a bit more in the next slide
00:05:00
that's coloured free really tries to embrace idioms in praise patterns that are common installer and make them
00:05:08
um easier to write for programmers and the last point is a consistency so in force colours strength
00:05:16
that means um there are many aspects of colour that were considered like where
00:05:21
you know the the it's got three team looked at school i'm maybe missing pieces all send and swear you know skull has
00:05:29
s. all the baseline but you know maybe some inconsistency is here
00:05:33
and there and thinking most of the time type system in this area
00:05:38
so yeah let me talk a bit more about this paradigm shift about you know it's colour becoming more opinionated
00:05:46
so the best example to to talk about this i think is is this the uh is in place it's
00:05:53
it's got to win place it's can be used for a lot of things um
00:06:00
impact these these are the most common um you know programming
00:06:03
patent leather expressed using in place it's type classes of course
00:06:08
are they were discussed in various talks already in this conference extension methods
00:06:15
contextual abstraction it which means you just want to um you know to pass parameter along
00:06:21
that them is a very common pattern i mean this colour three compiler do weights implemented
00:06:27
um and also type level computation it so if i i'm scott that when places
00:06:34
are very very low level feature which allow you to um implement all of these things
00:06:40
but as a user as an average user if you see a type class or if you see some type level computation
00:06:48
you see implicit keywords and you start wondering okay you know you have to kind
00:06:52
of know the pattern how these things are expressed in order to understand what's going on
00:06:57
in order to understand even but this is about so in order to understand all this is a type class and you know
00:07:03
here i'm using a type less you have to know this is one way of using in place it's so it's very in direct
00:07:11
and it's got three um all of these features get um
00:07:17
specific support in the language so the employees it's keyword will
00:07:23
um we'll slowly slowly be phased out so you will see it less and less when you look at colour three code and
00:07:31
the idea is really to allow programmers to harm to to our express their intent so i
00:07:38
want to integrate the type plus i want to use like high cost of their syntax for that
00:07:45
and as somebody who has been working with martin for ten
00:07:48
years now i could say um it's it's really not only with
00:07:52
uh you know ah it's so maybe i should so ten years ago i
00:07:57
i remember in places were considered really cool because it was such a powerful feature
00:08:02
that would allow you to do many things um you know
00:08:05
without complicating to language meaning without adding stuff to the language
00:08:10
and it was considered a strength of scar that we have one feature to express many different
00:08:15
things and that's really a change of perspective no that happened now i'll be look at carlisle
00:08:22
and a slightly different way and say hey you know people want to do this let's give them the best way to achieve it
00:08:30
okay so i'm going cricket run through a few examples you've seen
00:08:35
this already in martin's keynote so i can go fast but when you
00:08:38
define an extension method is got to you have to be really careful
00:08:42
not to mess things up so one one now interesting example is that
00:08:47
what you can define imply implicate class to create an extension method but you have to be really
00:08:52
uh i'll careful to make this value your private because it happens otherwise otherwise every
00:08:58
string was suddenly um get an s. extension method or field which returns itself and
00:09:06
uh the avoiding this kind of you know corner cases is is
00:09:10
yeah it's really a annoying and it comes up again and again
00:09:16
so yeah you see how it looks it's got
00:09:21
a second example again i would say there's a few more times you've seen it in the keynote already um
00:09:28
yeah you know is a a new feature to express at um abstract data types
00:09:35
also to replace coloured enumeration has got it and told enumeration is defined in the library and it uses hack
00:09:41
with the reflection and it's also difficult if you want to add a feature to it it's really
00:09:45
not easy often too you know so this thing has yeah that has not been loft very much
00:09:52
so you know of course is a replacement for that but also for a d. t.'s um again when you define
00:09:57
an eighty teens colour to there's just boilerplate associated with
00:10:01
it and you have to be careful to get everything right
00:10:04
and um it's got a three this very common pattern just become simpler to to to write down
00:10:14
okay last example is a type person coding is the same type
00:10:17
last that the miles used in his presentation just in precision um
00:10:24
here's how you do it it's got also uh it's got too so you have to
00:10:28
be again quite careful we have to you know you have to you make sure to use
00:10:32
any place it while or an object here in it or could get f. as well but
00:10:36
anyway that would be not very efficient you have to make sure you could use a uh
00:10:41
you you you know you crate apprised method here to create
00:10:45
um show type for option that itself takes an implicit show and
00:10:51
um yeah this is just a good example where you have in place it the keyword showing up
00:10:56
in various places and you have to get it right it's not very easy and as a
00:11:01
as a user you have to learn to see through this pattern to understand what's going on
00:11:07
so yeah here's the new syntax for that basically everything i every place where i'm in place it shows up
00:11:13
in the code will be replaced by something new so
00:11:16
uh you can define implicit instances using the delegate keyword
00:11:22
the out the name of them instance can be are given or not so it can be anonymous
00:11:29
and uh the the this like four permit priced
00:11:34
instances uh the syntax is more closely related let's see
00:11:39
it's important to see that that they've been if definition of the type class
00:11:43
is still a trade or napster class so that didn't change and also using
00:11:47
a type class on the bottom on the last line is the same so
00:11:51
here's the same example in as it looks in a is colour three um yeah
00:12:00
it's worth mentioning that it's about the the the
00:12:04
this colour three is providing more than just syntax um
00:12:09
the interesting feature in this area is type restoration verse got three gives you
00:12:14
primitives to um so uh as there if you write a type plus you can actually um
00:12:21
like define how instances of your type was should look like using a very
00:12:26
generic our representation and then uh if somebody wants to extend your show type class
00:12:33
if it has the right structure you can just use our your generator
00:12:37
presentation and doesn't have to writing code so there's also a lot of
00:12:41
in mention going on again not miles talked about this a lot in his tall in just previous session
00:12:53
so this one goes in the category of enhancing scholars strength i would say of
00:12:57
course the scallop type system is one of its you know core features is one of
00:13:01
the distinguishing features of scott that has very strong type system and there's quite a
00:13:06
lot of evolution going on in this area so it's gotta forgets union and intersection types
00:13:12
on it's worth mentioning that they are not tactic meaning types are not packed which means of um
00:13:19
if uh the so there's the uh the uh if you have a value of a union type
00:13:24
it's just either or devalue um of that
00:13:28
that that matches but there's nothing no information at
00:13:31
run time telling a out which of the two cases it um is actually represented right now
00:13:38
so there are corner cases when at run time you couldn't uh tell apart you know which of the two types your in but they're pretty rare
00:13:46
other um features in the type system i type when does um martin mentioned
00:13:52
in keynote oh the various new kinds of function types that's cause colour three supports
00:13:58
and there's also a new type inference algorithm which um
00:14:03
is you know i it's more powerful so it can
00:14:07
sometimes give you a better solutions at at um uh the um inferring the type for complex inspections
00:14:16
okay so i'll that was my quick overview of a few scholar three features that
00:14:22
are coming but uh uh now we are going to put them into three categories
00:14:27
by how they affect migration from scarlet to create that i created a four categories here one is
00:14:34
breaking changes since colour three second is new features so stuff that you can start using once migrated
00:14:42
number three is features that continue to be supported so access things colour two features that
00:14:46
are still the same it's got a three but de emphasise twitch so features that you know like in place it's that are
00:14:53
i'm slowly being phased out in favour of new things
00:14:58
and number four is stuff that didn't change so
00:15:02
breaking changes um for some so general existential types
00:15:08
are no longer supported in um in source code in scott three source code so this colour three compiler
00:15:14
doesn't know that keyword for some white cards are the same as they used to be inspired to so they still work
00:15:23
um another feature that's not supporting it's got three is early initialise it's it's a
00:15:28
bit of a corner case features that um if you act happened to use it
00:15:33
i guess most people wouldn't uh might have never come across it but if you happen to use it their work arounds
00:15:40
i'm already today that you can use and colour to and got three um provide
00:15:45
straight parameters which um which are really out a a good replacement for early initialised
00:15:52
there are a number of features that's got a three supports in compatibility mode
00:15:57
um so these are not very complex mostly syntax stuff so procedures syntax
00:16:04
has been deprecated already i think into thirteen simple materials um
00:16:10
other applications so if you have a function that takes an empty parameter list uh all you have to actually
00:16:16
provide the ante up anti a parameter list at at a call side
00:16:22
um okay the late in it is uh
00:16:26
i heard going to be supported installer three in the end it's not implemented at this point um
00:16:33
oh so every packages in in places got so that's the
00:16:37
there's a a small change an implicit resolution that the packages um
00:16:43
okay so so uh when you when an object always
00:16:47
in in place it's coped and its parents are as well
00:16:51
so it's in closing score as well but it's got to be exclude packages there
00:16:56
and but in that again in in this compatibility mode um it is going to
00:17:00
support and one small thing that i'm a bit sad about this this nail operated
00:17:07
um it comes up in pattern matching with wire x.
00:17:11
maybe if you use it i think i've used it once so far i
00:17:15
just find it cute but unfortunately has new syntax and got three i think
00:17:23
okay
00:17:25
one big breaking change that i didn't mention of the previous slide is macros and programming
00:17:31
so my cousins got three are going to be different than they are today it's
00:17:34
got too so there's going to be a new a. p. i. to implement macros
00:17:39
can you help yeah it's more principal so it's um in scarlet we literally but we
00:17:44
basically exposed in terms of the compiler to the user that writes a macro and are
00:17:51
you know if you want to get full access to all the compiler intern is you
00:17:54
can you can do basically a lot of complicated things that conflict with countries that type jacket
00:18:01
you can also should yourself in the foot very easily by um creating
00:18:05
trees in the wrong shape or trees if the wrong types and things like
00:18:09
so the the new a. p. i. for macros ins colour three is is more principal it's more
00:18:14
um so it has it has like better foundations with in line in quotes
00:18:19
yeah with cotton supplies uh sorry and the a. p. i. that you use to write um
00:18:24
your macros twin allies the syntax trees and build new syntax trees is based on tasty which means oops
00:18:31
the the um which means the a. p. i. is supposed to
00:18:34
be stable over a along time over many versions of scott three
00:18:42
so there was a talk to dave any cause to key i think i missed it yeah i think
00:18:47
tomorrow okay so it took more than a where you will show how much the programming in topic in scholar three works
00:18:57
some macros are no longer needed and that's actually big one
00:19:01
again as talked about is just in the previous session but especially
00:19:05
everything that is related to type restoration can now be handled by
00:19:08
the language without macros and i think that's a really big improvement
00:19:15
good ah last rating change especially station so there this colour three team is still
00:19:23
um you know that's one of the things that still on the drawing board still being
00:19:28
considered scott three i was told will support at least oops
00:19:35
specially station for core pipes so it was that support special station for
00:19:39
functions into paul's which is really needed for performance if using scotland standard library
00:19:46
um you know how difficult is it to implement specially
00:19:50
stations so special icing methods apparent yep but is relatively straightforward
00:19:55
just duplicating code specialise in classes um gets a
00:20:00
bit more complicated special lighting super classes and trade
00:20:03
that's where where it gets really hard so um it's again it's not yet clear what
00:20:09
will happen exactly it's colour three with the at specialised annotation and definitely are the people that
00:20:16
if you have a that that the lab are interested to hear you
00:20:20
know about the weather to important use cases so reach out of your effected
00:20:27
a good second category of a change like if a change is it's got three is new features so here's
00:20:35
the shortlist um trade parameters opaque types
00:20:40
were mentioned already top level definitions in arms okay
00:20:44
extension methods change the type system and then like you
00:20:48
met the programming facilities match types in line matches um yeah i'm not going into details on the slide
00:20:55
i put the few when green and these uh green boxes are
00:21:00
things that are basically on the road map for back according to to fourteen so that means you will be able to
00:21:06
start using these features already in this colour too serious and
00:21:09
they will be available for cross building between scott one score three
00:21:16
so yeah once you migrated just got three of course you can
00:21:18
start gradually move migrating your coat using start using the new feature but
00:21:23
again crossed building will be ah a limiting factor for a while so projects that to
00:21:28
cross built between is that it's got two and three there would be limited to the concepts
00:21:36
but now next categories colour two features that will continue to work on style of three
00:21:43
i actually most people when i you know talk in the hallways and as people around
00:21:49
i i hear that a lot of people are not really aware that's colour three this colour three compiled as it is today
00:21:56
it supports almost all of scarlet to there's very very
00:21:59
little code that actually doesn't work when using discover three compiler
00:22:04
so here's a list of things that work exactly in the same way as the work
00:22:09
and it's got three well okay maybe they're small differences in type inference find but um
00:22:14
in general this colour three compiler compiles all of these features
00:22:18
the same as this colour to compile some in place it's
00:22:21
there's no change house colour three handles place it's it continues
00:22:25
to supporting basic parameters implicit conversions implicit classes also value classes
00:22:31
are here like some of the thrills compound types are still there
00:22:35
package up sick objects are still there so this is just to
00:22:39
assure you when you start cross building your existing project is colour three
00:22:43
it's not that you don't have to limit yourself to a
00:22:46
very small subset of scholar but you can basically continued use scarlet
00:22:52
the way you do it today and with uh for many project is we'll cross built quite easily
00:23:01
that's our goal fox uh yeah things that didn't changes colour three
00:23:06
um the standard library including collections of course so the way
00:23:11
this works today is um when at this colour three itself
00:23:17
well the preview releases that are being published does not have its own
00:23:21
collection uh it's nonstandard library so just got three release uses colour to binary
00:23:28
um standard library it uses some additional classes so there's an additional charge file it uses some tricks
00:23:35
to replace some classes on the class about that i i'm not aware of what he tells but
00:23:40
it's important to know that the standard library is the same and it will
00:23:43
be the same between scholar three the final resent this colour to fourteen release
00:23:49
the tooling we will invest of course to make sure that all the tooling oh
00:23:55
that is important for for for the the users is going to continue to work
00:24:01
and then of course a big um uh well a very big
00:24:07
a step for every may just gotta realise is getting the ecosystem ready
00:24:12
so we just released colour to thirteen and now you know people are slowly waiting and to to be able to
00:24:17
pop state library waiting for it depends to become available and it's got a three is going to have the same
00:24:24
i'm the same prude put step procedure to some degree there's
00:24:28
going to uh i will talk about binary compatibility know what
00:24:32
and we are we are really committed to how um the maintains of of libraries
00:24:39
to cross build their libraries for tots colour twenty three and make
00:24:42
sure that the ecosystem is available will be available for so colours three
00:24:47
so as a user if you migrate from two to three you don't
00:24:50
have to think about changing you know all your dependencies at the same time
00:24:55
so the goal here really is that as a user i can choose you know
00:25:01
to update my dependencies get ready get my project in shape and then i
00:25:05
can move this got three with the same dependencies that i'm already you see
00:25:15
i assume yes i assume that's true fourteen yeah so i will talk about
00:25:19
two fourteen mineral map and timelines stealing a bit but yes the goal for
00:25:25
yeah so our the way we see it is people would would migrate
00:25:29
from scholar to thirteen to fourteen and from there to scott of three
00:25:36
okay and just you know random selection of features that are
00:25:40
still the same as colour three so classes and objects functions
00:25:44
pattern matching all these things didn't change are the platforms
00:25:48
joint probability we continue to do use the same test it except or okay
00:25:55
good that was it for part one
00:25:59
maybe have to speed up the little if i okay part two working together um
00:26:07
this slide is i'm i'm i'm still going to spend some time on it because i think it's
00:26:12
important maybe people are not so much a you know aware of all that your graphics behinds got um
00:26:18
this red circle with the big red box that's e. p. f. l. so who is
00:26:22
located that e. p. f. l. lamb is the research lab where martin others case delete 'em
00:26:30
that's the lap that develops i'm scott of three the kids got three compiler of
00:26:34
course it has other responsibilities also the p. f. l. is located this colour centre
00:26:40
so the way uh from sebastien is the the leaders discuss enter the
00:26:45
ask us into focuses on tooling we still metals today um as
00:26:50
for the focus on a education and in general um fostering discover community
00:26:55
and then there's this got team at like and which maintains its got to um
00:27:02
this colour standard library like by adrian and you see it's very distributed so we have set
00:27:08
a nature in in san francisco you have huge in in new york stefan and me in
00:27:15
middle of europe and jason in australia that's how we work together
00:27:19
and um i in today's nice eighteen something very important happened namely eight when he moved from s. f.
00:27:28
into the red circle and um so that's a year and a half ago right
00:27:36
and in this one year and has the communication between you know the scarlet team
00:27:42
and the lamp team the communication between it's got two aunts colour three teams it has really uh
00:27:48
it hasn't accelerated and improve and we've been working much more closely together since then
00:27:54
and um i think this is one of the one a big drive for
00:27:58
about uh uh behind making its colour to anne's colour three finally coming together
00:28:06
so where does discuss three you you know where to all these discussions happened where is colour three being
00:28:11
developed most of the things are happening in public so there's a lot of discussion going on at the
00:28:17
top the issue tracker and ample requests also on the discussion forum
00:28:23
so these things are really open to everybody the discussions are um are numerous and
00:28:28
they are long and a lot of people are try me and so i think this
00:28:32
is working quite well the community is um is is very active in the development
00:28:37
of colour three us well there's the subcommittee we're all the new features are being discussed
00:28:43
the subcommittee has members of e. p. f. l. does people from
00:28:46
scott centre people from my pen but also people from the community
00:28:51
so that's ultimately what features are being accepted or rejected and
00:28:56
the nodes meeting notes of the sea sick meetings are being published something
00:29:00
to this mall late i'm also for me in many cases there are um
00:29:05
there are videos online of uh like i think to meeting some sometimes trained on a life and you two went
00:29:10
the videos are available so again this is this is pretty open of course it's off line discussions over coffee and beer
00:29:18
um three times for your to like vince colour team but delighted engineering
00:29:22
people need somewhere in europe or in the us and martin is there
00:29:26
as well so these meetings of course important to synchronise to discuss new stuff
00:29:31
there's also weekly meetings at e. p. f. l. re can often try and since he's on campus page
00:29:39
okay so that's working together teams working together on the technical
00:29:44
level like you know how how are this colour is is going
00:29:47
to work together that's basically what defines the road map for two fourteen zero two fourteen is all about preparing for scott free
00:29:55
um we're going to backward some features um on the list
00:29:59
is typed them thus opaque types strip parameters and top level definitions
00:30:04
we didn't publish this colour to fourteen group that uh yet we will do that soon it will open
00:30:09
it for discussions and um uh and with of course would happy for everybody to to which i mean
00:30:17
um we will continue with applications of features that are
00:30:21
that are uh you know slowly being phased out installer three
00:30:25
so for some existential so our application package object inheritance and early initialise there's
00:30:32
are things on the list that that that might get deprecated and we're also
00:30:38
going to and we plan to remove some of the you know lighter
00:30:41
feel like like the syntax um changes already that have indicated into thirteen
00:30:52
so if you look at the development of sky major releases to twelve to thirteen to fourteen
00:30:58
this always happens one after the other okay so discovered life and team
00:31:03
has now finished to thirteen the finals out okay there will be two thirteen one of course maybe
00:31:08
people that find a buck or two but basically by the time tools to thirteen zero is released
00:31:14
the team starts working on two forty so that's that's thought that um are moles of working on major
00:31:20
releases now first got to fourteen and colour three this is different because they're being developed at the same time
00:31:28
by different teams of it um
00:31:34
timeline yep there will be a slider oh about time like later but um so we will work on
00:31:39
this to realise is at the same time to to realise is will share the stand the same standard library
00:31:44
how it works technically in detail that's me on there might be a few changes they'll but it's
00:31:50
oh it's going to be the same standard labour into two releases we will invest
00:31:55
um between the two co yeah teams to invest a lot of time in sharing more
00:32:00
code so we want to make sure that the two compilers use the same test suite
00:32:05
we will look into uh possibilities of sharing components of the
00:32:09
compiler so already today discovery compiler uses basically the same back
00:32:14
and this colour to except that it's a fork so it's a copy of the source code we we want to proof
00:32:19
the situation of course um we will try we will share code m.
00:32:25
in the way it's colour to will emit the tasty um output there's also code that
00:32:29
can be shared care and so we will start also merging the two code bases into one
00:32:37
and again one of the goals for our release is to have the possibility for maintain is
00:32:43
to cross bill to fourteen and three that's really the main the main goal of two fourteen
00:32:49
yeah so inter operability at the binary level so two days colour three can use
00:32:54
um libraries that are compile was colour okay to twelve currently but it will be to fourteen at some point
00:33:02
what this allows is basically people to operate as colour
00:33:06
three early so pop people cut start using scott three when
00:33:10
uh before all of their dependencies has been cross compiled so that's a very powerful
00:33:15
feature of course to to you know to go ahead and try things out um
00:33:21
if it's not yet clear in every detail how this will work like if if if
00:33:25
we really want to support is at a like a a a professional level let's say
00:33:30
we need to make sure that the two compilers are are the same in terms of
00:33:34
code generation and then that will need a lot of testing and and still some investment
00:33:40
there are some carry out so one of them for example ah you
00:33:43
know if you have just got to library that uh defines a macro
00:33:47
this colour three compare is not going to be able to execute this colour to
00:33:51
macro because that just depends entirely on the and pearls of this colour to comply either
00:33:56
so this on interoperate build he's not going to be the like the
00:34:00
final solution for all the cost building um problem so therefore we will
00:34:05
help and we will in a um um encourage people to cross build the libraries between the two releases it
00:34:13
um testing yeah so already mentioned if we really want
00:34:17
to achieve this binary compatibility will have to invest a lot
00:34:20
into testing to make sure the two compilers generate the same byte code
00:34:24
for um for the same source code um there's this a continuous so
00:34:31
running joke very say we want to build a frankenstein compiler which is kind of
00:34:35
a mix between this got two and the three compiler so here the idea is
00:34:39
it's got to would you know a parse the source code and write out the tasty
00:34:45
um to like the taste and then we would use this colour three compilers to do the rest of the compilation pipeline and
00:34:53
no one uh this would basically be like an integration test for tasty
00:34:56
and integration test to show that's colour to um generates correct takes the output
00:35:05
still on the testing front one of the things that we are relying on a lot these days is
00:35:10
the community both so every scholar releases are tested by
00:35:13
the community build which tools to scully consistent from source
00:35:17
it's roughly three million lines of code into twelve were
00:35:20
slowly getting there and two thirteen actually already pretty far and
00:35:25
come you build force colour three is only getting started these days um so it's still pretty
00:35:30
small but this will be of court so very important aspects in testing has got the three days
00:35:36
and it's important to know that it's not about only about testing are if things works
00:35:42
but it's also about like testing how much that we actually break in terms of yeah you
00:35:47
know uh changing stuff around so when we when we receive redesign the collections into thirteen seeing
00:35:55
which kind of things would break in the community bold gave us a good estimate of you know how how bad our
00:36:01
our breaking changes and we could quantify that so the communicable
00:36:05
is not only for correctness testing but also for like feature validation
00:36:11
alright let's part is uh about time line and you know maybe few
00:36:15
practical aspects about getting there so we just released got two thirteen zero um
00:36:21
martin said in his keys not keynote that's colour three m. one which will be the feature freeze
00:36:27
force colours three is going to be in the in the fall in the end of this year
00:36:32
and yeah from there on it's from there or it's you know it's a
00:36:36
forecast and estimations which are always a bit difficult especially if it's about the future
00:36:42
so so uh yeah it is oh so yeah um
00:36:51
somewhere you know in the future there will be a scarlet to fourteen
00:36:55
realise that will be discussed release within the next one to two years um
00:37:02
there's a lot of things that need to be figured out and told and of course you know which releases going have is if there is one
00:37:08
realise that has to come first probably to fourteen has to come first
00:37:12
because colour three values it's standard library all these things have to be discussed
00:37:19
how do you migrate discover three well you move discover to fourteen first this well um
00:37:24
this will allow you to start using some of the new features already
00:37:27
which you know it will allow you it will simplify cross building as well
00:37:32
um so that's really what this to fourteen releases all about it's it's supposed
00:37:36
to pay for the way just got of three um yeah we have a tool
00:37:44
a call scott affix a um which can rewrite source code it can it can fix 'em syntax
00:37:52
well we can fix 'em syntactic you know changes that are required by um um one example is the
00:38:00
application to exclude d. v. d. r. application off
00:38:04
uh in the parameter lists and things like this so we can also be write a simple the
00:38:10
thrills uh that don't know deprecated things like this so we are we started working on our repository
00:38:16
because colour re writes recently where we want to collect migration rule still
00:38:20
rewrite rules first colour fix and definitely we will spend more time um
00:38:27
on this on a on these rules to make sure the small tedious things can be
00:38:33
automated and you know people have to only intervene with the stuff that is actually breaking
00:38:41
yeah we will absorb some of the shop let's say into fourteen so we
00:38:44
weren't already to we want people to migrate off certain things already into fourteen
00:38:51
like the existential types orderly initialise there's um this is basically
00:38:56
to you know to make the transition to scott of three
00:39:00
a bit easier and these things are coming anyway so we decided it's it's good to spread out a bit
00:39:05
over the time of the migration some fifty some states breaking changes
00:39:11
and the macro so if if you define macros in your library
00:39:15
or in your application um yeah this will have to be written
00:39:19
once you start moving just got three if you cross killed you have to most like you
00:39:23
have to you know have separate source files that's my next like check slide actually yeah so ah
00:39:29
the goal is really to clock cross build the ecosystem between scarlet once colour three
00:39:35
um i was very pleased to see miles saying that he wants to
00:39:39
backwards got that his new shapeless three that is building on top
00:39:43
of colours when he wants to back work that has got to fourteen
00:39:46
because it will be really important that we have the same ecosystem onto fourteen available
00:39:51
so users don't have to to uh you know the upgrade of the language and the pens is at the same time
00:40:00
yeah so if you're defining macros you will probably have to have separate source files for the two versions
00:40:07
there is a possibility of recording on the the new mac re p.
00:40:11
i. does or does the tasty based mac right p. i. just got to
00:40:15
um but this thing is just on a on the drawing board right now
00:40:19
we haven't we haven't started any of this work or or committed to anything
00:40:25
ah one thing that might come one day is uh some kind of preprocessor first colour with um
00:40:35
we have been talking about is already a few times and there's just situations
00:40:39
where you know this would simplify life's so maybe this will come at some point
00:40:47
okay so
00:40:50
just in terms of uh uh um responsibilities from our side from this colour team at light and
00:40:57
um we are going to be the main developers of stolid to fourteen we will
00:41:02
maintains got to fourteen for a very long time that's what we expect
00:41:06
it's we expected to be the last release of this colour too serious
00:41:11
so that means it will have to have on the maintenance stretched and then then other releases that people
00:41:18
once to fourteen is released the like pants got him
00:41:21
will start working maintaining and supporting us to discover three compiler
00:41:29
and the team at p. p. f. l. um yeah it's mostly a
00:41:33
a is is the core behind the development of the scroll through comp
00:41:38
right so that's what i have my main message for this talk that is that's got a three is really colour to plus
00:41:46
one so it's it's not the new language is the same
00:41:51
language but there's plus one so there's new stuff in it and
00:41:56
we're really working together we are you know we are committed to ensure that the migration will be smooth if we're
00:42:02
also committed to spend time on health in the community to make sure the eh 'cause it ecosystem can move ahead
00:42:09
and uh yeah we hope you're all as excited about the new stuff as we are
00:42:15
thank you
00:42:24
for one quick question please raise your hand if you have
00:42:29
maybe he actually cannot then we can do
00:42:36
uh_huh okay uh_huh so many companies use go out because uh_huh sparks so
00:42:44
i'm just wondering if there is any collaboration will communication between no like band
00:42:49
old two thousand and ah good debris solaris sparc people to make use
00:42:56
of migration to tell us we only have all been entered smooth as possible
00:43:03
yeah so definitely there is communication there was actually today after the keynote and yes um
00:43:09
we are yeah so we we we are aware that the scale at spartan to eleven was
00:43:13
kind of a a a big you know big lack for many people and um that's
00:43:18
also why we got and you know we we invested some time and resource from like bend
00:43:23
to helping data bricks and well but sparkling the let's say to to migrate has got to twelve
00:43:28
so it's got to twelve will be the default for spark three which is supposed
00:43:32
to become coming out in a few months i heard like six months maybe um
00:43:37
and yes we talked about it's got three as well today and yes that's definitely on the radar um
00:43:43
i just thought for example today's got as part doesn't have any macros which
00:43:46
is great you know so the yeah thank you uh_huh okay quick question then
00:43:55
so no two thirteen forty sixty two fifteen to sixteen the ah
00:44:02
okay yes we we don't plan to have a two fifteen release
00:44:09
yeah but you can slowly against his tooth foreseen turn out to be a little that's what you have like no
00:44:15
plans pretty nice i mean our goal of course is is you know is the success of scholar and not too
00:44:22
make people suffer from mistakes that we did or what not so you know if if there are
00:44:27
good reasons for us got to fifteen realise that you know it's not that uh it's excluded by definition

Share this talk: 


Conference Program

Welcome!
June 11, 2019 · 5:03 p.m.
1574 views
A Tour of Scala 3
Martin Odersky, Professor EPFL, Co-founder Lightbend
June 11, 2019 · 5:15 p.m.
8337 views
A story of unification: from Apache Spark to MLflow
Reynold Xin, Databricks
June 12, 2019 · 9:15 a.m.
1267 views
In Types We Trust
Bill Venners, Artima, Inc
June 12, 2019 · 10:15 a.m.
1569 views
Creating Native iOS and Android Apps in Scala without tears
Zahari Dichev, Bullet.io
June 12, 2019 · 10:16 a.m.
2232 views
Techniques for Teaching Scala
Noel Welsh, Inner Product and Underscore
June 12, 2019 · 10:17 a.m.
1296 views
Future-proofing Scala: the TASTY intermediate representation
Guillaume Martres, student at EPFL
June 12, 2019 · 10:18 a.m.
1157 views
Metals: rich code editing for Scala in VS Code, Vim, Emacs and beyond
Ólafur Páll Geirsson, Scala Center
June 12, 2019 · 11:15 a.m.
4695 views
Akka Streams to the Extreme
Heiko Seeberger, independent consultant
June 12, 2019 · 11:16 a.m.
1552 views
Scala First: Lessons from 3 student generations
Bjorn Regnell, Lund Univ., Sweden.
June 12, 2019 · 11:17 a.m.
577 views
Cellular Automata: How to become an artist with a few lines
Maciej Gorywoda, Wire, Berlin
June 12, 2019 · 11:18 a.m.
386 views
Why Netflix ❤'s Scala for Machine Learning
Jeremy Smith & Aish, Netflix
June 12, 2019 · 12:15 p.m.
5026 views
Massively Parallel Distributed Scala Compilation... And You!
Stu Hood, Twitter
June 12, 2019 · 12:16 p.m.
958 views
Polymorphism in Scala
Petra Bierleutgeb
June 12, 2019 · 12:17 p.m.
1113 views
sbt core concepts
Eugene Yokota, Scala Team at Lightbend
June 12, 2019 · 12:18 p.m.
1656 views
Double your performance: Scala's missing optimizing compiler
Li Haoyi, author Ammonite, Mill, FastParse, uPickle, and many more.
June 12, 2019 · 2:30 p.m.
837 views
Making Our Future Better
Viktor Klang, Lightbend
June 12, 2019 · 2:31 p.m.
1682 views
Testing in the postapocalyptic future
Daniel Westheide, INNOQ
June 12, 2019 · 2:32 p.m.
498 views
Context Buddy: the tool that knows your code better than you
Krzysztof Romanowski, sphere.it conference
June 12, 2019 · 2:33 p.m.
394 views
The Shape(less) of Type Class Derivation in Scala 3
Miles Sabin, Underscore Consulting
June 12, 2019 · 3:30 p.m.
2321 views
Refactor all the things!
Daniela Sfregola, organizer of the London Scala User Group meetup
June 12, 2019 · 3:31 p.m.
514 views
Integrating Developer Experiences - Build Server Protocol
Justin Kaeser, IntelliJ Scala
June 12, 2019 · 3:32 p.m.
551 views
Managing an Akka Cluster on Kubernetes
Markus Jura, MOIA
June 12, 2019 · 3:33 p.m.
735 views
Serverless Scala - Functions as SuperDuperMicroServices
Josh Suereth, Donna Malayeri & James Ward, Author of Scala In Depth; Google ; Google
June 12, 2019 · 4:45 p.m.
936 views
How are we going to migrate to Scala 3.0, aka Dotty?
Lukas Rytz, Lightbend
June 12, 2019 · 4:46 p.m.
709 views
Concurrent programming in 2019: Akka, Monix or ZIO?
Adam Warski, co-founders of SoftwareMill
June 12, 2019 · 4:47 p.m.
1974 views
ScalaJS and Typescript: an unlikely romance
Jeremy Hughes, Lightbend
June 12, 2019 · 4:48 p.m.
1377 views
Pure Functional Database Programming‚ without JDBC
Rob Norris
June 12, 2019 · 5:45 p.m.
6375 views
Why you need to be reviewing open source code
Gris Cuevas Zambrano & Holden Karau, Google Cloud;
June 12, 2019 · 5:46 p.m.
484 views
Develop seamless web services with Mu
Oli Makhasoeva, 47 Degrees
June 12, 2019 · 5:47 p.m.
785 views
Implementing the Scala 2.13 collections
Stefan Zeiger, Lightbend
June 12, 2019 · 5:48 p.m.
811 views
Introduction to day 2
June 13, 2019 · 9:10 a.m.
250 views
Sustaining open source digital infrastructure
Bogdan Vasilescu, Assistant Professor at Carnegie Mellon University's School of Computer Science, USA
June 13, 2019 · 9:16 a.m.
375 views
Building a Better Scala Community
Kelley Robinson, Developer Evangelist at Twilio
June 13, 2019 · 10:15 a.m.
245 views
Run Scala Faster with GraalVM on any Platform
Vojin Jovanovic, Oracle
June 13, 2019 · 10:16 a.m.
1342 views
ScalaClean - full program static analysis at scale
Rory Graves
June 13, 2019 · 10:17 a.m.
463 views
Flare & Lantern: Accelerators for Spark and Deep Learning
Tiark Rompf, Assistant Professor at Purdue University
June 13, 2019 · 10:18 a.m.
380 views
Metaprogramming in Dotty
Nicolas Stucki, Ph.D. student at LAMP
June 13, 2019 · 11:15 a.m.
1250 views
Fast, Simple Concurrency with Scala Native
Richard Whaling, data engineer based in Chicago
June 13, 2019 · 11:16 a.m.
624 views
Pick your number type with Spire
Denis Rosset, postdoctoral researcher at Perimeter Institute
June 13, 2019 · 11:17 a.m.
245 views
Scala.js and WebAssembly, a tale of the dangers of the sea
Sébastien Doeraene, Executive director of the Scala Center
June 13, 2019 · 11:18 a.m.
661 views
Performance tuning Twitter services with Graal and ML
Chris Thalinger, Twitter
June 13, 2019 · 12:15 p.m.
2003 views
Supporting the Scala Ecosystem: Stories from the Line
Justin Pihony, Lightbend
June 13, 2019 · 12:16 p.m.
163 views
Compiling to preserve our privacy
Manohar Jonnalagedda and Jakob Odersky, Inpher
June 13, 2019 · 12:17 p.m.
302 views
Building Scala with Bazel
Natan Silnitsky, wix.com
June 13, 2019 · 12:18 p.m.
565 views
245 views
Asynchronous streams in direct style with and without macros
Philipp Haller, KTH Royal Institute of Technology in Stockholm
June 13, 2019 · 3:45 p.m.
304 views
Interactive Computing with Jupyter and Almond
Sören Brunk, USU Software AG
June 13, 2019 · 3:46 p.m.
681 views
Scala best practices I wish someone'd told me about
Nicolas Rinaudo, CTO of Besedo
June 13, 2019 · 3:47 p.m.
2707 views
High performance Privacy By Design using Matryoshka & Spark
Wiem Zine El Abidine and Olivier Girardot, Scala Backend Developer at MOIA / co-founder of Lateral Thoughts
June 13, 2019 · 3:48 p.m.
754 views
Immutable Sequential Maps – Keeping order while hashed
Odd Möller
June 13, 2019 · 4:45 p.m.
277 views
All the fancy things flexible dependency management can do
Alexandre Archambault, engineer at the Scala Center
June 13, 2019 · 4:46 p.m.
389 views
ScalaWebTest - integration testing made easy
Dani Rey, Unic AG
June 13, 2019 · 4:47 p.m.
468 views
Mellite: An Integrated Development Environment for Sound
Hanns Holger Rutz, Institute of Electronic Music and Acoustics (IEM), Graz
June 13, 2019 · 4:48 p.m.
213 views
Closing panel
Panel
June 13, 2019 · 5:54 p.m.
400 views