WEBVTT

00:00.000 --> 00:10.000
Welcome, everyone, to the 11th edition of the Go Dev Room.

00:10.000 --> 00:14.000
It's been 11 amazing years, two of which were in the pandemic, we don't count those.

00:14.000 --> 00:16.000
But it's been 11 amazing years.

00:16.000 --> 00:19.000
And as always, we're starting with the state of go,

00:19.000 --> 00:22.000
where we're going to talk about what has changed in the past years

00:22.000 --> 00:27.000
since last two years, one year ago, which was go 1.22.

00:28.000 --> 00:31.000
First of all, we are my, in case you're new here on Omits.

00:31.000 --> 00:32.000
My name is Machia.

00:32.000 --> 00:35.000
I'm a training conductor and training, but that's what's interesting for today.

00:35.000 --> 00:36.000
I'm also a software engineer.

00:36.000 --> 00:40.000
I restylical co-fight, where I work on cloud native security.

00:40.000 --> 00:43.000
And I'm going to talk to you about a few subjects today.

00:43.000 --> 00:46.000
I'm going to talk to you about change in the language.

00:46.000 --> 00:48.000
Change to the new standard library and go.

00:48.000 --> 00:49.000
Change to the go tooling.

00:49.000 --> 00:54.000
As well as an interesting design draft, and of course, a community update.

00:54.000 --> 00:58.000
So you'll be wondering, what has been new since go 1.22?

00:58.000 --> 01:00.000
Of course, go 1.23.

01:00.000 --> 01:05.000
It was released in August 13, 2024, and go 1.24,

01:05.000 --> 01:08.000
which is about to be released in February 2025,

01:08.000 --> 01:13.000
which if you don't realize is starting from today any moment now,

01:13.000 --> 01:16.000
if you're in the go team and have the button press it now.

01:16.000 --> 01:19.000
Nobody, okay, do bad.

01:19.000 --> 01:22.000
Wait a minute, go 1.24.

01:22.000 --> 01:27.000
Means we have been having 25 releases of go 1.0.

01:27.000 --> 01:29.000
Wow.

01:29.000 --> 01:35.000
People, that's 13 years of go 1.0.

01:35.000 --> 01:40.000
If go was a person, it's a teenager, it's going to high school now.

01:40.000 --> 01:43.000
Wow, that's all.

01:43.000 --> 01:50.000
Which follows with the question, is go still that cool new upcoming language we also go learn?

01:51.000 --> 01:55.000
Probably not cool and upcoming.

01:55.000 --> 01:58.000
We should be learning it, but it's not a new fancy thing

01:58.000 --> 02:02.000
that's going to be the next language, because it is the next language already.

02:02.000 --> 02:05.000
So let's talk about anywhere to come in language.

02:05.000 --> 02:08.000
What's anywhere to rest?

02:09.000 --> 02:16.000
Sirius, what are the top programming languages?

02:16.000 --> 02:21.000
And I found better metric than the stack overflow survey or the state of GitHub.

02:21.000 --> 02:24.000
I use the only true metric in the world of programming languages,

02:24.000 --> 02:28.000
which is the size of a dev room and falls down.

02:28.000 --> 02:34.000
This is the go dev room, the past year since 2019 since I had been starting counting this chart.

02:34.000 --> 02:36.000
I didn't want to enter the whole 11 years.

02:36.000 --> 02:37.000
Oh, that's lazy.

02:37.000 --> 02:42.000
Are you seeing our nice chart flowing here between 400 and 600 people?

02:42.000 --> 02:46.000
Let's add a true well tested popular language in the world.

02:46.000 --> 02:47.000
Next to it.

02:47.000 --> 02:49.000
Let's add Python.

02:49.000 --> 02:51.000
We always have been neighbors of Python.

02:51.000 --> 02:54.000
Except for this year, this year we got the bigger size.

02:54.000 --> 02:59.000
We've been Python.

02:59.000 --> 03:04.000
So now let's see where a new up and coming fancy new language.

03:04.000 --> 03:07.000
Also probably learn because it's the best words.

03:07.000 --> 03:12.000
Rust is here.

03:12.000 --> 03:15.000
Rust this year got a very big as dev room.

03:15.000 --> 03:16.000
You can get a falls down.

03:16.000 --> 03:23.000
They went from 170 people to 570 people in their dev room.

03:23.000 --> 03:26.000
Well, congratulations, Rust.

03:27.000 --> 03:35.000
However, 30 years ago I'm going to go learn a lot.

03:35.000 --> 03:39.000
Go learn that we have APIs, the ability of APIs, the ability is important.

03:39.000 --> 03:43.000
You can compile your 30-year-old go-go today and it might still work.

03:43.000 --> 03:45.000
It probably still work.

03:45.000 --> 03:47.000
Officially it should work.

03:47.000 --> 03:49.000
We have a strong standard standard library.

03:49.000 --> 03:52.000
We have everything in the standard library, which you want to use in your life,

03:52.000 --> 03:54.000
in the standard library of your language.

03:54.000 --> 03:57.000
No more choose your framework, stories, standard library.

03:57.000 --> 03:59.000
We have fixed dependency management.

03:59.000 --> 04:00.000
Look some years.

04:00.000 --> 04:01.000
We have fixed it.

04:01.000 --> 04:04.000
We even had generics, which was impossible to think about

04:04.000 --> 04:05.000
13 years ago.

04:05.000 --> 04:08.000
And go even learn to try not to track its users.

04:11.000 --> 04:14.000
Which brings me back to go is a more mature language

04:14.000 --> 04:15.000
than it was 13 years ago.

04:15.000 --> 04:19.000
So what has been changed in this new mature language?

04:20.000 --> 04:23.000
Well, first of all, even in a new year old language,

04:23.000 --> 04:26.000
we still have two major changes to the language.

04:26.000 --> 04:30.000
Which is this year that we can now loop over three new types.

04:30.000 --> 04:33.000
Which is a function, which takes a function, which returns volume,

04:33.000 --> 04:37.000
a function, which returns function, which has a value k,

04:37.000 --> 04:39.000
which returns volume, a function, which contains a function,

04:39.000 --> 04:42.000
which contains k, v, and a Boolean.

04:42.000 --> 04:44.000
What is this nonsense?

04:44.000 --> 04:47.000
It's actually quite simple once you know what it means.

04:47.000 --> 04:49.000
Because I talked about this out here.

04:49.000 --> 04:52.000
The slide from last year is a range-run experiment.

04:52.000 --> 04:55.000
To quickly recap during a range-run experiment,

04:55.000 --> 04:58.000
we have a new interface.

04:58.000 --> 05:01.000
And we have these new ones defined as an interface,

05:01.000 --> 05:04.000
which is Internet Sequence, and Internet Sequence 2,

05:04.000 --> 05:06.000
lack of creative naming.

05:08.000 --> 05:09.000
And what can we do with this?

05:09.000 --> 05:11.000
Well, let's say I have my file struct.

05:11.000 --> 05:14.000
And I want to look over all lines in the file.

05:14.000 --> 05:16.000
We're all the old missing a CSV.

05:16.000 --> 05:20.000
And what I will do is I just take a local copy memory of my data.

05:20.000 --> 05:23.000
And I then return a function, which takes a yield function,

05:23.000 --> 05:25.000
which is a with function in the sequence.

05:25.000 --> 05:29.000
And this one takes a slide of byte, I return the Boolean.

05:29.000 --> 05:31.000
In there, I take my data.

05:31.000 --> 05:33.000
I check, okay, is there still data left?

05:33.000 --> 05:36.000
If so, I take it till the next new line.

05:36.000 --> 05:38.000
I return it to this yields function, which go,

05:38.000 --> 05:40.000
what we give in me, and I test against it.

05:40.000 --> 05:42.000
And then I take the rest of the data.

05:42.000 --> 05:44.000
So this complex structure here.

05:44.000 --> 05:46.000
We go take over in that loop.

05:46.000 --> 05:48.000
And now I have my own lines.

05:48.000 --> 05:50.000
And instead of doing those weird cuttricks,

05:50.000 --> 05:53.000
I can now do range file, a lab file,

05:53.000 --> 05:56.000
that lines, and can range over my files.

05:56.000 --> 05:59.000
You can now easily make your own range functions.

05:59.000 --> 06:04.000
The second new language is that we now have generic type aliases.

06:04.000 --> 06:06.000
When I write that last, because like,

06:06.000 --> 06:07.000
ooh, that's complex.

06:07.000 --> 06:09.000
That's kind of the local slides.

06:09.000 --> 06:11.000
Turns out it's just this.

06:11.000 --> 06:13.000
It's just a generic type.

06:13.000 --> 06:16.000
So now allow it to be used in type aliases.

06:16.000 --> 06:18.000
So for example, I have a set here of p,

06:18.000 --> 06:19.000
which is a comparable.

06:19.000 --> 06:21.000
It's just equal to map p Boolean.

06:21.000 --> 06:23.000
Honestly, I thought this already worked.

06:23.000 --> 06:24.000
Okay.

06:24.000 --> 06:26.000
We now have this in go 1204.

06:26.000 --> 06:28.000
Those were my two new changes to the language,

06:28.000 --> 06:30.000
which takes us to tooling.

06:30.000 --> 06:32.000
And I always talk about govets.

06:32.000 --> 06:34.000
Why do I talk about govets?

06:34.000 --> 06:37.000
Because govets is being run when you run tests.

06:37.000 --> 06:39.000
And if you get that you go versioning your CI,

06:39.000 --> 06:41.000
instead of in your test format,

06:41.000 --> 06:43.000
it might be because of a new govets warning.

06:43.000 --> 06:45.000
And you all will know why.

06:45.000 --> 06:47.000
That's why I'm talking about it.

06:47.000 --> 06:49.000
There are many new warnings in govets.

06:49.000 --> 06:53.000
In go 1.23, it will now warn if you use a function of the standard library

06:53.000 --> 06:55.000
that has been added beyond the function.

06:55.000 --> 06:59.000
Beyond the version, you defined in your go module file.

06:59.000 --> 07:01.000
Very handy.

07:01.000 --> 07:03.000
If now we'll also warn again,

07:03.000 --> 07:07.000
if you don't use any parameters in a printf or any f printing function.

07:07.000 --> 07:10.000
For example, here, this is written by an AI.

07:10.000 --> 07:12.000
Many AIs have made this mistake,

07:12.000 --> 07:14.000
and you haven't corrected them.

07:14.000 --> 07:17.000
So gov will now correct this for you.

07:17.000 --> 07:19.000
If you're now also report,

07:19.000 --> 07:22.000
if you build a parameter in for the patch version,

07:22.000 --> 07:24.000
which is probably what you don't want to do.

07:24.000 --> 07:26.000
If you're now also report more issues

07:26.000 --> 07:27.000
in the declarations of tests,

07:27.000 --> 07:30.000
further benchmark and example code.

07:30.000 --> 07:33.000
Let's look forward to go come out.

07:33.000 --> 07:35.000
And I'm introducing a new category,

07:35.000 --> 07:38.000
which is the CI life changes.

07:38.000 --> 07:42.000
This new changes will change your life in the CI forever.

07:44.000 --> 07:48.000
First of all, go to link now support JSON output.

07:48.000 --> 07:51.000
We have go test, minor JSON, go in some minor JSON,

07:51.000 --> 07:53.000
and go build minor JSON.

07:53.000 --> 07:55.000
Yes, JSON output, parsable, logging,

07:55.000 --> 07:58.000
collecting knowledge and elastic search, perfect.

07:58.000 --> 08:00.000
How does this work?

08:00.000 --> 08:02.000
Well, I'm working on this co-fight as decating,

08:02.000 --> 08:04.000
and of course, I'm a coot developer.

08:04.000 --> 08:06.000
I write tests.

08:06.000 --> 08:07.000
So I run my tests.

08:07.000 --> 08:09.000
As we all do, we go test.

08:09.000 --> 08:11.000
And I have here okay, okay, okay.

08:11.000 --> 08:14.000
If I want to cause metrics out of this for my CI,

08:14.000 --> 08:17.000
I can do a magic part on the word okay.

08:17.000 --> 08:19.000
That's going to be very complex.

08:19.000 --> 08:21.000
Or can use this new JSON output,

08:21.000 --> 08:23.000
which will output something like this.

08:23.000 --> 08:26.000
The exact time output, which package has been built,

08:26.000 --> 08:29.000
the exact test has been run on this,

08:29.000 --> 08:31.000
and the output test has just passed.

08:31.000 --> 08:34.000
Okay, the output is still somewhere to do.

08:34.000 --> 08:38.000
At least we now have JSON parsable outputs.

08:38.000 --> 08:42.000
Well, I'm also building my co-fight CTL.

08:42.000 --> 08:44.000
Well, yeah, binary.

08:44.000 --> 08:45.000
So I'm doing this.

08:45.000 --> 08:48.000
And we all know if you do co-ocolon build,

08:48.000 --> 08:50.000
and if you succeed, we don't have outputs.

08:50.000 --> 08:51.000
We're all used to that.

08:51.000 --> 08:54.000
What do you get if you do co-ocolon build,

08:54.000 --> 08:56.000
there's JSON?

08:56.000 --> 09:00.000
Well, your output is, nothing.

09:00.000 --> 09:03.000
Maybe not useful if you want to pass locks.

09:03.000 --> 09:06.000
Still output something.

09:06.000 --> 09:09.000
Another big change is that goes set the binary version

09:09.000 --> 09:12.000
based on your version control system.

09:12.000 --> 09:14.000
Really? No, boss?

09:14.000 --> 09:19.000
Wow.

09:19.000 --> 09:25.000
13 years for this basic feature.

09:25.000 --> 09:27.000
What we're going to do?

09:27.000 --> 09:29.000
Well, let's set the version in your binary,

09:29.000 --> 09:31.000
based on your tag and or commits.

09:31.000 --> 09:34.000
It will add a dirty suffix if you have a committed changes.

09:34.000 --> 09:37.000
Of course, you can disable it with this build flag.

09:37.000 --> 09:39.000
How does this work?

09:39.000 --> 09:41.000
We have all done this before in our lives.

09:41.000 --> 09:43.000
We added a dirty variable somewhere

09:43.000 --> 09:46.000
or gives environment variables of some crazy tricks.

09:46.000 --> 09:48.000
How do we do this now?

09:48.000 --> 09:50.000
We have here my main function,

09:50.000 --> 09:52.000
of which I call the debug package.

09:52.000 --> 09:55.000
And I fetch the read build info.

09:55.000 --> 09:56.000
I handle my error.

09:56.000 --> 09:57.000
I'm a good developer.

09:57.000 --> 09:59.000
And I print out my version number.

09:59.000 --> 10:01.000
So I have this.

10:01.000 --> 10:03.000
So I wrote this program.

10:03.000 --> 10:05.000
It doesn't work from goal run by the way.

10:05.000 --> 10:07.000
Only on goal build.

10:07.000 --> 10:09.000
I do goal build and I run my program.

10:09.000 --> 10:11.000
My output version is empty.

10:11.000 --> 10:13.000
I forgot getting it.

10:13.000 --> 10:15.000
Mark anyway.

10:15.000 --> 10:17.000
What do I do whenever getting it?

10:17.000 --> 10:19.000
I get my version is development.

10:19.000 --> 10:21.000
Oh, I forgot to commit my changes.

10:21.000 --> 10:23.000
I commit my changes.

10:23.000 --> 10:25.000
I write a very good commit message.

10:25.000 --> 10:29.000
And I get the version number with the current build date

10:29.000 --> 10:31.000
and the get shot.

10:31.000 --> 10:33.000
Perfect.

10:33.000 --> 10:35.000
What do I do when I get it?

10:35.000 --> 10:37.000
I get the version.

10:37.000 --> 10:39.000
We try to act.

10:39.000 --> 10:41.000
V0.1.0.

10:41.000 --> 10:43.000
My build now finally without any dirty tricks in your CI

10:43.000 --> 10:45.000
has the build version built in.

10:45.000 --> 10:49.000
There is also the new book goal tool directive.

10:49.000 --> 10:53.000
If you're using terpory libraries for goal generation,

10:53.000 --> 10:55.000
the open API library, you previously had to define

10:55.000 --> 10:57.000
them in the goal model file as an actual dependency,

10:57.000 --> 10:59.000
which is not correct because you're not

10:59.000 --> 11:01.000
depending on that code.

11:01.000 --> 11:03.000
So there is now this dash tool flag.

11:03.000 --> 11:05.000
Right here in the goal gets.

11:05.000 --> 11:07.000
And you can then,

11:07.000 --> 11:09.000
project tool will be saved in the tool

11:09.000 --> 11:11.000
right in the goal module file.

11:11.000 --> 11:13.000
And you can use it with the goal tool commands

11:13.000 --> 11:15.000
and goal goal on general rate will automatically use this.

11:15.000 --> 11:19.000
Very handy for any build dependencies.

11:19.000 --> 11:21.000
Now let's look at the goal command.

11:21.000 --> 11:25.000
What's been new apart from CI lab changes?

11:25.000 --> 11:29.000
There was a big change to goal telemetry.

11:29.000 --> 11:31.000
And if I'm giving this talk at false them,

11:31.000 --> 11:35.000
the community which is about all about open data, transparency,

11:35.000 --> 11:37.000
no tracking, no tracing.

11:37.000 --> 11:39.000
And I'm talking about goal telemetry.

11:39.000 --> 11:41.000
This is controversial.

11:41.000 --> 11:43.000
Oops.

11:43.000 --> 11:45.000
And yes, it's controversial.

11:45.000 --> 11:46.000
I looked at that.

11:46.000 --> 11:47.000
They started back in 2023.

11:47.000 --> 11:49.000
And the first thing I could find on hacker news

11:49.000 --> 11:51.000
at 234 comments.

11:51.000 --> 11:53.000
I read them all.

11:53.000 --> 11:54.000
No, it didn't.

11:54.000 --> 11:55.000
Even that hidden on hacker news,

11:55.000 --> 11:57.000
the register picked it up with the name

11:57.000 --> 11:58.000
subline.

11:58.000 --> 12:01.000
That's devs do not trust mountain view.

12:01.000 --> 12:02.000
Wow.

12:02.000 --> 12:03.000
It's mainstream.

12:03.000 --> 12:05.000
That media picks up on a program in line

12:05.000 --> 12:07.000
which is terrible.

12:07.000 --> 12:11.000
So goal makes telemetry opt in only.

12:11.000 --> 12:13.000
We should of course result to the

12:13.000 --> 12:16.000
contradicting post by goal making my making telemetry opt in.

12:16.000 --> 12:17.000
It wasn't mistake.

12:17.000 --> 12:19.000
And again, theta by hacker news,

12:19.000 --> 12:21.000
300 comments and people were angry again.

12:21.000 --> 12:25.000
So what is magical to say on stage for 25?

12:25.000 --> 12:27.000
First of the clear,

12:27.000 --> 12:29.000
I am not involved with the goating.

12:29.000 --> 12:31.000
I am not working at Google.

12:31.000 --> 12:33.000
I do not have any involvement in this.

12:33.000 --> 12:35.000
So please do not kick me.

12:35.000 --> 12:38.000
The good news is,

12:38.000 --> 12:40.000
it is still opt in.

12:40.000 --> 12:41.000
Phew.

12:41.000 --> 12:43.000
We now have an easy way to opt in.

12:43.000 --> 12:45.000
We just go telemetry on and go telemetry off.

12:45.000 --> 12:46.000
What has been changed?

12:46.000 --> 12:48.000
There is a new design.

12:48.000 --> 12:50.000
Fancy, more efficient.

12:50.000 --> 12:52.000
And it will now automatically,

12:52.000 --> 12:54.000
even if you did not enable,

12:54.000 --> 12:56.000
store data locally.

12:56.000 --> 12:58.000
For, okay, it crashes.

12:58.000 --> 13:00.000
You can use this with telemetry data in about report.

13:00.000 --> 13:02.000
There will be data on your desk.

13:02.000 --> 13:04.000
It will not be sent.

13:04.000 --> 13:05.000
Don't be scared.

13:05.000 --> 13:07.000
That's what is new.

13:07.000 --> 13:09.000
There are also desk technology prompts.

13:09.000 --> 13:12.000
If you use Visual Studio Code and you are in the lucky 2%

13:12.000 --> 13:13.000
which you roll out,

13:13.000 --> 13:15.000
you will now get a friendly notice.

13:15.000 --> 13:17.000
It will only enable telemetry.

13:17.000 --> 13:19.000
Only 100 people enable this.

13:19.000 --> 13:21.000
We need more.

13:21.000 --> 13:23.000
So you now have this bag in prompts.

13:23.000 --> 13:25.000
And why did they put this bag in prompts?

13:25.000 --> 13:27.000
Because the go-to truly believes that telemetry

13:27.000 --> 13:29.000
will drive their stability forward.

13:29.000 --> 13:31.000
This is a quote by the go-to-f team in a blog post about this.

13:31.000 --> 13:33.000
Go-turns 15 this November.

13:33.000 --> 13:36.000
And both the language and the ecosystem continue to grow.

13:36.000 --> 13:39.000
Telemetry will play a critical role in helping go-contributes

13:39.000 --> 13:42.000
move faster and more safely in the right direction.

13:42.000 --> 13:45.000
They truly believe that telemetry will help them.

13:45.000 --> 13:48.000
It is still your own choice to label a lot.

13:48.000 --> 13:50.000
I want if you want to.

13:50.000 --> 13:52.000
You can do so.

13:52.000 --> 13:55.000
That was the go tooling.

13:55.000 --> 13:57.000
Now let's talk about the standard library.

13:57.000 --> 14:00.000
Now usually a few very interesting changes in there.

14:00.000 --> 14:03.000
Last year I introduced these lies in max package.

14:03.000 --> 14:04.000
Thanks to genetics.

14:04.000 --> 14:07.000
Well we now have this either interface.

14:07.000 --> 14:10.000
So we now have helper functions for iterations.

14:10.000 --> 14:13.000
We have all key values in search for it.

14:13.000 --> 14:16.000
For example, I have your slice with three random names.

14:16.000 --> 14:18.000
And I want to look over it backwards.

14:18.000 --> 14:20.000
In the past, I would have to do credit tricks like reversing the

14:20.000 --> 14:23.000
length or reversing everything and doing weird tricks.

14:23.000 --> 14:28.000
I can now just use slices.backwards, names and range over it.

14:28.000 --> 14:31.000
So we have a lot of helper functions thanks to this new

14:31.000 --> 14:32.000
range from experiments.

14:32.000 --> 14:36.000
And as you would suspect, it will return nicely

14:36.000 --> 14:38.000
than in backwards order.

14:38.000 --> 14:42.000
That also means very welcome yay security changes.

14:42.000 --> 14:45.000
The treaty aside for what's removed.

14:45.000 --> 14:46.000
Yay security.

14:46.000 --> 14:49.000
If you had been using it, it is a breaking change for you.

14:49.000 --> 14:52.000
If you have been using it, stop so now.

14:52.000 --> 14:54.000
More security.

14:54.000 --> 14:58.000
We now have supports in 1.24 for the encrypted client hello in

14:58.000 --> 14:59.000
the LATAN checks.

14:59.000 --> 15:01.000
As well as quantum proof key exchanges.

15:01.000 --> 15:03.000
Yay security.

15:03.000 --> 15:04.000
More yay security.

15:04.000 --> 15:06.000
The RSA package will now break.

15:06.000 --> 15:09.000
If you ask the key, less than 10, 24 bits.

15:09.000 --> 15:11.000
Which again, you shouldn't be doing.

15:11.000 --> 15:15.000
If you do so, this is a breaking change and stop doing that.

15:15.000 --> 15:17.000
More cryptoneuse.

15:17.000 --> 15:18.000
HQDF.

15:18.000 --> 15:19.000
TBKF2.

15:19.000 --> 15:22.000
As the HH3 moved from the experiment to critical library to the

15:22.000 --> 15:23.000
stable library.

15:23.000 --> 15:25.000
Yay security.

15:25.000 --> 15:27.000
Also, we now have a new package which

15:27.000 --> 15:32.000
will complement the 503 key exchange with quantum proof key

15:32.000 --> 15:33.000
exchanges.

15:33.000 --> 15:35.000
More yay security.

15:35.000 --> 15:38.000
It is in the OS package.

15:38.000 --> 15:40.000
Are you tired of this classic attack,

15:40.000 --> 15:43.000
where somebody enters dot dot slash dot dot slash dot

15:43.000 --> 15:44.000
slash dot dot slash dot slash dot slash dot slash

15:44.000 --> 15:47.000
slash slash EDC passwords in your application.

15:47.000 --> 15:51.000
We will see is guilty of warranty such an application.

15:51.000 --> 15:53.000
Oh, nobody wants to admit it.

15:53.000 --> 15:55.000
We all have done this.

15:55.000 --> 15:56.000
It's a very easy attack.

15:56.000 --> 15:58.000
It happens on every IoT device.

15:58.000 --> 15:59.000
No worries.

15:59.000 --> 16:01.000
Go got a fixed after 13 years.

16:01.000 --> 16:02.000
You're stuck in 30.

16:02.000 --> 16:04.000
What do they now have?

16:05.000 --> 16:08.000
Is the OS dot open root function.

16:08.000 --> 16:11.000
Which gives you a secure root and own and

16:11.000 --> 16:14.000
doesn't allow any backwards movement into the file

16:14.000 --> 16:15.000
system.

16:15.000 --> 16:16.000
It's even that secure.

16:16.000 --> 16:18.000
It protects you against symbolic links out of

16:18.000 --> 16:19.000
this specific root.

16:19.000 --> 16:22.000
Are you dealing with files that you just upload a user

16:22.000 --> 16:24.000
can access in your go application.

16:24.000 --> 16:27.000
Switch to open root right now.

16:27.000 --> 16:30.000
It's also been a change at the CP package.

16:30.000 --> 16:33.000
Go now support the multi-party CP flag on the

16:33.000 --> 16:35.000
left and enable it by default.

16:35.000 --> 16:37.000
What is multi-party CP?

16:37.000 --> 16:40.000
That's everybody but the network engineer right there.

16:40.000 --> 16:42.000
We implemented.

16:42.000 --> 16:45.000
Well, this is an RFC thing that depends it's simple.

16:45.000 --> 16:48.000
You can now have the TCP flow go over multiple

16:48.000 --> 16:50.000
network interface and multiple parts of the internet.

16:50.000 --> 16:52.000
Why should you care as developer?

16:52.000 --> 16:54.000
Well, mobile network targeting.

16:54.000 --> 16:57.000
Even fallback to mobile network targeting.

16:57.000 --> 17:00.000
Also, you can use multiple parts for better performance.

17:00.000 --> 17:02.000
Also, TCP will stay active over any IP changes.

17:02.000 --> 17:06.000
Oh, it's just super cool.

17:06.000 --> 17:10.000
The JSON package now also has a new omit zero flag,

17:10.000 --> 17:13.000
which is just like omit empty but for the zero value.

17:13.000 --> 17:15.000
I have an example, or I have a transition.

17:15.000 --> 17:17.000
I have a name and if it's empty, I want to

17:17.000 --> 17:19.000
omit it in my JSON module output.

17:19.000 --> 17:20.000
We all do this.

17:20.000 --> 17:23.000
But I also have a UIC code, which is an integer.

17:23.000 --> 17:25.000
An integer cannot be empty.

17:25.000 --> 17:26.000
But it can be zero.

17:26.000 --> 17:28.000
And a UIC code is probably never zero.

17:28.000 --> 17:30.000
So I just do omit zero.

17:31.000 --> 17:34.000
Same thing, I have a date, an opening date of the station right there.

17:34.000 --> 17:39.000
I can now omit zero if the station opens at the gear zero,

17:39.000 --> 17:41.000
which I hope it doesn't.

17:41.000 --> 17:43.000
We're also talking about time.

17:43.000 --> 17:45.000
There is a brick and change in the parts and

17:45.000 --> 17:47.000
parts and location function and go.

17:47.000 --> 17:50.000
If you know, we submitted the time zone that doesn't exist,

17:50.000 --> 17:52.000
it will add or.

17:52.000 --> 17:57.000
More about time, there is also a new thing test

17:57.000 --> 17:59.000
and run experimental package.

17:59.000 --> 18:02.000
This one will run your test in a time bubble.

18:02.000 --> 18:05.000
We'll run your gorethins in a time bubble with a fake

18:05.000 --> 18:08.000
clock, which if you have code at a present time,

18:08.000 --> 18:09.000
it's very handy.

18:09.000 --> 18:11.000
It's still experimental.

18:11.000 --> 18:14.000
We have one new package in the standard library,

18:14.000 --> 18:16.000
which is the unique package.

18:16.000 --> 18:20.000
Which can not recognize its value for faster comparison.

18:20.000 --> 18:23.000
It's a very fancy way if you want to impress your partner

18:23.000 --> 18:25.000
to more way, connect, I learned about

18:25.000 --> 18:28.000
the organization of failures across the comparisons.

18:28.000 --> 18:30.000
Which is actually quite simple,

18:30.000 --> 18:31.000
once you put it into practice.

18:31.000 --> 18:34.000
I have two very complex trucks.

18:34.000 --> 18:36.000
They both contain a number.

18:36.000 --> 18:38.000
And I want to compare those two.

18:38.000 --> 18:40.000
How could I compare those two right now?

18:40.000 --> 18:41.000
Very hard.

18:41.000 --> 18:43.000
Well, with the unique package,

18:43.000 --> 18:45.000
I can just make them unique values.

18:45.000 --> 18:47.000
I do unique that makes that one and unique.

18:47.000 --> 18:48.000
Let's try to make two.

18:48.000 --> 18:49.000
And you can get it.

18:49.000 --> 18:50.000
I can just compare.

18:50.000 --> 18:52.000
If you two equals wheel one,

18:52.000 --> 18:54.000
is the same.

18:54.000 --> 18:58.000
Super simple to compare your very complex trucks.

18:58.000 --> 19:02.000
Now, let's talk about changes to go runtime.

19:02.000 --> 19:05.000
First of all, time the timer and then the ticker

19:05.000 --> 19:07.000
now will be gobbish collect,

19:07.000 --> 19:09.000
even if you didn't cancel it.

19:09.000 --> 19:11.000
If you forgot to cancel your timer,

19:11.000 --> 19:14.000
it will be coverage collected if there are no more references.

19:14.000 --> 19:17.000
Go also, implement Swiss maps.

19:17.000 --> 19:21.000
And gosh, I am an expert of Swiss-related on maps.

19:21.000 --> 19:23.000
Just a wrong kind of Swiss maps.

19:23.000 --> 19:26.000
If you want to try to play your train travel in Switzerland,

19:26.000 --> 19:27.000
yeah, come to me.

19:27.000 --> 19:31.000
But I don't know zero shit about official ghost

19:31.000 --> 19:32.000
with maps.

19:32.000 --> 19:34.000
Coating Brian Board, I'm in the room.

19:34.000 --> 19:38.000
And it will come back at 11.30 to give you an in-depth view

19:38.000 --> 19:40.000
about how Swiss maps are the new amazing thing

19:40.000 --> 19:44.000
and go that makes your applications go faster.

19:44.000 --> 19:46.000
That causes speed.

19:46.000 --> 19:50.000
We have two to three percent faster on the average

19:50.000 --> 19:53.000
go benchmarks, yeah speed.

19:53.000 --> 19:57.000
Most of you thank you Swiss maps and the new unique

19:57.000 --> 20:00.000
implementation.

20:00.000 --> 20:05.000
Now, let's take a look at goports as the last technical subject.

20:05.000 --> 20:10.000
Go 1.23 at six experimental supports for OpenVSD

20:10.000 --> 20:12.000
on the risk five, 64 bit per four.

20:12.000 --> 20:16.000
And one guy right in the back is very excited about this, I see it.

20:16.000 --> 20:21.000
Go 1.25 will require macOS 12, all later.

20:21.000 --> 20:26.000
Go 1.24 has no support for Windows R32 bits,

20:26.000 --> 20:28.000
which is only the Windows R key tablet.

20:28.000 --> 20:31.000
For obvious back which they kind of fix.

20:31.000 --> 20:34.000
It just is broken, don't try it right now.

20:34.000 --> 20:37.000
There also have this on well, we'll change it to WebAssembly.

20:37.000 --> 20:39.000
We now have a WASMAX course function,

20:39.000 --> 20:42.000
which can export you from the function to WebAssembly host.

20:42.000 --> 20:45.000
We also now import allow more data types

20:45.000 --> 20:47.000
to be imported with a WASMAX port.

20:47.000 --> 20:51.000
But again, I go the next part of that is.

20:51.000 --> 20:55.000
At 4pm I will have a talk here by Eduardo is

20:55.000 --> 20:57.000
which is about WebAssembly for GoFresh,

20:57.000 --> 21:02.000
which will take you to all things I just said just to way better.

21:02.000 --> 21:05.000
And there also have these changes to the Linux port in Go.

21:05.000 --> 21:07.000
Wait, what?

21:07.000 --> 21:09.000
I never have changed the Linux port.

21:09.000 --> 21:10.000
Never.

21:10.000 --> 21:14.000
Well, go 1.23 will be the last release of supports.

21:14.000 --> 21:17.000
The Linux kernel 2.6.30 to your later.

21:17.000 --> 21:19.000
The Linux developer is now looking very like,

21:19.000 --> 21:23.000
wow, that's released in 2010.

21:23.000 --> 21:25.000
Yes.

21:25.000 --> 21:30.000
Go support a kernel that's basically older than itself.

21:30.000 --> 21:32.000
Because I've read that.

21:32.000 --> 21:36.000
Go 1.24 will now require 3.20 later,

21:36.000 --> 21:39.000
which was released just in 25.

21:39.000 --> 21:41.000
They deprecate a macOS version

21:41.000 --> 21:43.000
which was released yesterday.

21:43.000 --> 21:45.000
But the next version is still table 21.

21:45.000 --> 21:49.000
We all know where Go runs most, right?

21:49.000 --> 21:52.000
So that has been the new updates to go.

21:52.000 --> 21:55.000
What's there for the future of Go?

21:55.000 --> 21:57.000
I always looked through some design drafts,

21:57.000 --> 21:59.000
which is going to be put in together,

21:59.000 --> 22:01.000
and want to find something interesting.

22:01.000 --> 22:04.000
This year I found one very interesting thing,

22:04.000 --> 22:06.000
which is the concept of memory regions,

22:06.000 --> 22:09.000
which builds on a lot of early expansion

22:10.000 --> 22:14.000
with the goal to reduce the risk of cost of garbage collection,

22:14.000 --> 22:18.000
and return more controlled developers,

22:18.000 --> 22:21.000
just like in Rust.

22:21.000 --> 22:23.000
It's built on an early proposal,

22:23.000 --> 22:25.000
which was the arena package.

22:25.000 --> 22:29.000
What does this thing do in very simple terms?

22:29.000 --> 22:31.000
I have a function,

22:31.000 --> 22:35.000
and I am a developer who works with very big complex prototypes.

22:35.000 --> 22:38.000
My job I work with very big complex prototypes.

22:39.000 --> 22:43.000
And I have my region, and I will parse my very big complex prototypes,

22:43.000 --> 22:46.000
which takes a lot of memory with the very big complex prototypes.

22:46.000 --> 22:48.000
So I am marshallet,

22:48.000 --> 22:53.000
but all the program cares actually just if it errors or not.

22:53.000 --> 22:56.000
Okay, so I will set this top level error,

22:56.000 --> 22:59.000
which is my function here above on my screen.

22:59.000 --> 23:01.000
Done, perfect.

23:01.000 --> 23:03.000
Why is this more efficient now?

23:03.000 --> 23:05.000
Once this feature is released,

23:05.000 --> 23:07.000
once this region functions ends,

23:07.000 --> 23:09.000
my function in region.do,

23:09.000 --> 23:13.000
it immediately removes our memory without having to run garbage collection,

23:13.000 --> 23:15.000
which gives me control over my memory,

23:15.000 --> 23:17.000
and it's way more efficient.

23:17.000 --> 23:20.000
Another example is I define a bunch of new variables,

23:20.000 --> 23:22.000
meaning immediately assigned use,

23:22.000 --> 23:25.000
whatever types I only want to keep the results,

23:25.000 --> 23:27.000
once this function exits,

23:27.000 --> 23:29.000
I now have returned all the memory,

23:29.000 --> 23:32.000
read out to in the complex garbage collection mask.

23:32.000 --> 23:34.000
It just removes the whole region.

23:34.000 --> 23:38.000
It gives us the developers complete control over our memory.

23:38.000 --> 23:39.000
Is this more efficient?

23:39.000 --> 23:41.000
Of course, the go down run with a few tests.

23:41.000 --> 23:44.000
They tested against co-crojDB and SCD,

23:44.000 --> 23:46.000
jabbo databases,

23:46.000 --> 23:48.000
which located a lot of memory.

23:48.000 --> 23:51.000
And they found the 5% improvement in time

23:51.000 --> 23:53.000
in the garbage collector,

23:53.000 --> 23:55.000
and even a 2% to 1% improvement in time,

23:55.000 --> 23:59.000
using allocations spent less than before.

23:59.000 --> 24:01.000
These are still early tests.

24:01.000 --> 24:03.000
This is a really handy feature,

24:03.000 --> 24:07.000
and maybe we see it next year, maybe we will never see it.

24:07.000 --> 24:09.000
If you are interested in this,

24:09.000 --> 24:10.000
this long-lange,

24:10.000 --> 24:13.000
and I will post it on the fourth on website later,

24:13.000 --> 24:16.000
has all information about this.

24:16.000 --> 24:19.000
There was even a very interesting implementation details,

24:19.000 --> 24:21.000
which I don't have time to talk about today,

24:21.000 --> 24:23.000
but it's also pretty interesting.

24:23.000 --> 24:26.000
And at last, I want to talk about my favorite objects,

24:26.000 --> 24:27.000
the co-community.

24:27.000 --> 24:30.000
I haven't met here of all go-beats in the world,

24:30.000 --> 24:32.000
which is used to be more,

24:32.000 --> 24:35.000
but the general meat of community is just way less active

24:35.000 --> 24:36.000
than people in them.

24:36.000 --> 24:38.000
It's just a true fact.

24:38.000 --> 24:40.000
Do we move going go-beats meet-ups,

24:40.000 --> 24:42.000
are still stable around 41 chapters,

24:42.000 --> 24:44.000
with the thing that many of those chapters

24:44.000 --> 24:45.000
are currently inactive,

24:45.000 --> 24:49.000
it's just hard to define which numbers these are.

24:49.000 --> 24:52.000
But I like the frozen community the most.

24:52.000 --> 24:54.000
You all here in this room.

24:54.000 --> 24:57.000
We've been here for 11 years,

24:57.000 --> 24:59.000
and I clicked too fast,

24:59.000 --> 25:01.000
and now the Wi-Fi is loading my slides.

25:01.000 --> 25:04.000
And the time is ticking away.

25:04.000 --> 25:06.000
And so I'm going to talk about how Google slides

25:06.000 --> 25:09.000
is a very amazing product by the people of Google,

25:09.000 --> 25:12.000
which never blocks even on bad Wi-Fi.

25:12.000 --> 25:13.000
There it is.

25:13.000 --> 25:16.000
Yep, 2017, and loading again.

25:16.000 --> 25:23.000
Again, Google slides are an amazing product.

25:23.000 --> 25:29.000
Maybe I should have used an open source solution.

25:29.000 --> 25:31.000
It's small images, maybe.

25:31.000 --> 25:33.000
I don't know.

25:33.000 --> 25:35.000
Small images suck.

25:35.000 --> 25:37.000
Come on, Google.

25:39.000 --> 25:42.000
Wow.

25:42.000 --> 25:43.000
Yes, please.

25:43.000 --> 25:46.000
Show anyway.

25:46.000 --> 25:50.000
Thank you.

25:50.000 --> 25:53.000
Last year, we came from last year for yourself.

25:53.000 --> 25:56.000
I can.

25:56.000 --> 25:59.000
And this year, we have an AI chat box.

25:59.000 --> 26:04.000
Our blockchain support got removed.

26:04.000 --> 26:06.000
And I am pretty nervous.

26:06.000 --> 26:08.000
This amazing schedule, which, by the way,

26:08.000 --> 26:11.000
is 100% billion average.

26:19.000 --> 26:21.000
If any of you happen to be working on a billion,

26:21.000 --> 26:24.000
you can just quickly come give me a donation of a million dollars

26:24.000 --> 26:26.000
to have the code for next year.

26:26.000 --> 26:28.000
So this is our main schedule.

26:28.000 --> 26:30.000
I really had to reject amazing talks.

26:30.000 --> 26:32.000
I wish I had two days.

26:32.000 --> 26:34.000
Well, actually don't, because it's too heavy.

26:34.000 --> 26:37.000
And I made this year, I made five tracks.

26:37.000 --> 26:39.000
The first one is about go.

26:39.000 --> 26:42.000
And now that we're all fresh and not yet drunk,

26:42.000 --> 26:44.000
we have an hour of deep dives.

26:44.000 --> 26:47.000
Very deep that even talks about the inner workings of go.

26:47.000 --> 26:49.000
We will slowly transition out of it.

26:49.000 --> 26:52.000
And I will go to from 13, 13, 16,

26:52.000 --> 26:54.000
we will have talks about using go.

26:54.000 --> 26:57.000
Using go better, using go in different projects.

26:57.000 --> 26:59.000
And from 16, 30 to 18 o'clock,

26:59.000 --> 27:02.000
we will have the one and two tiny go conference.

27:02.000 --> 27:05.000
And the most interesting hour is the last one,

27:05.000 --> 27:08.000
which is all about you, about the lightning talks.

27:08.000 --> 27:10.000
Submit one.

27:10.000 --> 27:13.000
I see you all got a taste of go conferences.

27:13.000 --> 27:15.000
Well, well, that's an interesting go conference to go to.

27:15.000 --> 27:16.000
At the go, definitely force them.

27:16.000 --> 27:18.000
Very interesting, please say.

27:18.000 --> 27:19.000
Quite amazing talks.

27:19.000 --> 27:21.000
If you want to travel to Latin America,

27:21.000 --> 27:24.000
you can do go for go for go in Latin America Brazil in May.

27:24.000 --> 27:27.000
Go for go on Europe for the health in Berlin this year.

27:27.000 --> 27:28.000
In June.

27:28.000 --> 27:32.000
And go for go in Europe this year on August.

27:32.000 --> 27:35.000
Lightening talks.

27:35.000 --> 27:41.000
And again, the last hour of the day is about lightning talks,

27:41.000 --> 27:44.000
which will be eight minutes of talks this year.

27:44.000 --> 27:46.000
And the CFP will be open to five feet,

27:46.000 --> 27:48.000
which is one hour before the talks,

27:48.000 --> 27:51.000
which will quickly notify you if you had been accepted.

27:51.000 --> 27:52.000
How you submit one?

27:52.000 --> 27:54.000
You go to go for the last slash light.

27:54.000 --> 27:56.000
Oh, you scan one of the QR codes in this room.

27:56.000 --> 27:59.000
You have to be at force them to submit one.

27:59.000 --> 28:02.000
Don't submit one if you're watching home from your computer.

28:02.000 --> 28:04.000
Do not do that.

28:04.000 --> 28:07.000
So you can submit a talk for lightning talks

28:07.000 --> 28:10.000
and get eight minutes of this amazing stage here

28:10.000 --> 28:12.000
to prove how awesome you are.

28:12.000 --> 28:17.000
And I can all see that each and every one of you is awesome.

28:18.000 --> 28:20.000
You can follow us on social media.

28:20.000 --> 28:22.000
You can post about us on social media.

28:22.000 --> 28:23.000
And if you do, please do so.

28:23.000 --> 28:25.000
And use the hashtag hashtag for them.

28:25.000 --> 28:27.000
You can follow us on the Fediverse.

28:27.000 --> 28:30.000
And you can also follow us on our blue sky bridge.

28:30.000 --> 28:34.000
You can not follow us on X for very obvious reasons.

28:34.000 --> 28:36.000
That was my talk for today.

28:36.000 --> 28:38.000
Thank you very much for enjoying this.

28:38.000 --> 28:40.000
And I see you all of the fall.

28:40.000 --> 28:41.000
See you next year.

28:47.000 --> 28:50.000
Thanks for watching.

