 Hello, I am Antonin Carrot and so today I will talk about why you should take a look at trust. So first of all, I want to thank all the first-dan volunteers for the awesome work they made. So thanks a lot actually. So okay, so let's begin. So as you might understand, I'm a French guy, you know the accent. And previously I tried to understand what the computer I trained to understand understood. Just a magnificent sentence to say, I gave up my PhD last week and I really love free and open source and I am a contributor actually of many open source projects. So for your information, I plan to open a Rust Meetup and Coffee Meeting at Luxembourg or near Luxembourg in France. So please share the information because since two months I tried to just import. It's not correct to have speakers and people etc. It's really hard for me. So if you can share this information or if you're interested, just talk to me directly. Thanks. So today there is a lot of new programming language. Like for example, D, NIN, Go, Rust, etc. But sometimes when we want to understand why a programming language is really important, we have to understand for what actually it, what is the goal of this programming language. So first, just a quick history at the beginning, her need. And as you might know, since 2000 for consumers actually there are big changes. We switch actually from monocode to multi-core architectures for computers, monostrade to multi-straded applications, more powerful hardware and democratization of the internet actually introduce a lot of new software. So many competition. And those big changes actually for developers are really big troubles because we have to switch from sequential code to multi-straded and multi-core support applications that introduced data risk issues, big memory leaks problems. And with this competition, we have actually to build software with a lot of features that we don't actually test a lot and introduce actually those big problems. So this is a funny picture actually that relates the idea of, you know, 2000 it's directly from the modular office and so this guy is not on a chair. And there is a poster must be installed to write multi-straded code. Actually it's must be installed to write safe multi-straded code. And I invite you actually to take a look at this fabulous blog post just to introduce you a little bit more the REST program language. So in this talk, we'll be the most highest level as possible because we have all come from different backgrounds. So I don't want to, you know, lose anyone in this talk. So I would try to be the most highest level as possible. And Gradient Hall, so it's a modular engineer at last in 2006. At this idea we need the memory safety and race free multi-strading programming language because this was really hard and it's still hard today to write safe multi-straded code with C and C++ if you want to obtain performance code. So with this idea, Gradient Hall has said, yeah, yeah, we need a new C++. And with this idea, introduce a new programming language, the C++++. At this C++++ is actually REST. So REST, what is REST? REST is a modern, safe, fast and yeah, and concurrent open source system programming language. So it's a programming language actually with the first goal is to write memory safe, thread safe with zero cost abstraction for system. Just a quick story. So Gradient Hall wrote the first REST compiler in 2006 in OCaml and I invite you to take a look at OCaml, it's a very great programming language and it has been sponsored in 2009 by the Mozilla Foundation. And in 2015 it's reached the first stable version. So now in 2018 I think we are in 1.23 or something like that version. So in this talk, actually I will present to you why you should take a look at REST with different layers. So first I will introduce the core concept of REST. Why actually REST is unique with this concept. We are all developers in majority, so what developers want actually is productivity and I will talk about the productivity in REST. Open source is not only called its people, so I will talk about the community because the community, the REST community is really awesome. Company is a project for REST in production. The to-do list of 2018 and finally to conclude. So REST has many features and actually it can be great for developers to have many features, but the learning curve is still high. So I will only introduce what makes REST so unique. It's memory safety and data rest safety and zero cost abstraction. If you want to take a look at all the features of REST, I will just check the website, it's clear enough for that. And just to explain those concepts, I will introduce a shorter story. So once upon a time the DVD seller and the customer. So just imagine the situation, you are a customer and you want to buy a DVD. You want to buy this DVD, but if the box is empty, you cannot buy it. It's not legal and the DVD seller cannot actually sell you the DVD. It's the same case actually for REST. For memory safety, actually we have no new pointer, the reference situation. So just imagine we have a struct DVD with a title and we have a function take that take actually directly the struct. In the main function, we actually reserve the memory. We allocated the memory for the DVD and we want to take the DVD. But here there is a compile time error, not at front time. It's on compile time. Use of possibly an initialized viable DVD. So the compiler will introduce you that no, you cannot actually run this program because there is no new pointer, the reference situation. In another situation, so the DVD is okay. So there is a box and the DVD inside. And in this case, the DVD seller is the owner of the DVD. If you want to buy this DVD, you want to be the owner of this DVD. So the DVD will belong to you actually and not to the DVD seller. And it's the same case actually for REST. And we call that the ownership situation. So this is actually one of the main, this is the core actually of REST. We initialized a DVD which is a struct and actually the DVD is Blade Runner. And we give it as argument to take the DVD here. So take is now the owner of the struct, of the DVD struct. So we can't use anymore in the main function here. And we have a compile time error that DVD is not belong to main but to take. So as soon as take is not in the scope of the main, DVD does not exist anymore. This is actually the core feature of the REST programming language. It's the ownership situation. So in the third situation, you are not a DVD seller but a DVD renter. Actually if you are a DVD renter, you just want to be the owner of the DVD. Even if you borrow this DVD. So in this situation, you will give a period of time just for the customer to use actually the DVD. And this is really important because here you give the reference to the DVD. Okay, so borrower will access to the DVD without any modifications. And after that you can print the title of the struct. Because it still belong to main. And just as borrower is not his autoscope, the REST compiler actually will not remove the memory for the struct. So it still belong, main is still the owner of the struct. Okay. And return to us this DVD before the end of the first day. Introduce actually a period of time we call actually the lifetime of a reference. And it's typically a situation where you want to avoid to reference something. When you want to reference actually something that varies no. Sorry. That already be memory free actually like dangling pointers. So with this situation actually REST avoid that. So here it's immutable. And you can have the situation where you have actually immutable reference with a troll. That yeah I couldn't and sorry for that. I will give you a DVD copy. Unfortunately it's a writable disk. So you can do anything with that. And unfortunately put the initial HD on the bad runner DVD. And this is mutable borrowing situation. So just to reason using REST you can attempt to dereference a new pointer. Attempt to use already freed memory like dangling pointer. Forget to free memory and attempt to free already freed memory. And this is actually the core feature of REST. It's memory safety. But there is some rules actually to respect. The borrowers cop, not lost, not lost, outclass your owner. Just think about you know the situation of the period of time as a customer gets the DVD. Borrowers is DVD. You can have at least one reference to a resource. You can have one mutable reference to a resource. But you can't have the last two rules at the same time. And you must actually ask why? It's for threat safety. Because when does a data REST happens? There is free actually a combination of three different points. At least two pointers to the same resource. At least one writing pointer and unsynchronized operations. But using actually the core features of ownership. If you have multiple reference you don't have any writing pointer. If you have one writing pointer you don't have any other reference. And all those operations are synchronized by default. So REST answers this problem from directly the ownership. So REST actually using REST you can treat and write the same variable from multiple threads at the same time. And you can forget to acquire a look before accessing the variable it protects. And this is actually what REST makes for memory and threat safety. Okay so developers say yeah okay. Features are good. Abstraction is really great. And we need safety today. But we care about the overhead. And REST asians, so REST asians are just people that are using REST, REST maintenance, REST developers, et cetera. They said yeah but with REST you only pay for the feature you actually use. REST does not contain a garbage collector. The compiler actually will just adjust the lifetime of the variable, the references, just at compile time. And perform safety check at compile time. So you obtain the same performance at least running time than C++. But with safety. So for zero cost abstraction you can combine low level control with high level programming concepts. And this is huge actually for a modern programming language. So this is the core features of REST. So now as developer we want to be productive. We don't want actually to write you know safe program in six months. And maybe yeah but we can't do that actually in three weeks with Python for example. And so this is a tweet from Clément de la Fargue, the city of Claverclaw that said REST up and cargo is by far my favorite tool channel where you come to build and deploy management. And using REST actually the learning curve is high for REST. Actually the same thing for C++ if you want to learn C++. But you can be more productive using yeah two different tools. REST up and cargo. So first cargo is built in a package manager for REST. And it contains actually awesome features. Compile your program, check in it, run unit, run your unit test, run your benchmark, publish your library, install crates, so crates, libraries and binaries you can find on the Internet. And all of that in only one configuration file. So you have a total file which contains actually so yeah I'm sorry for that. You have different profile sorry. So you have the profile release with optimization level at free, no debug mode and for the panic it accepts that your program with panic etc. And you can have a different profile for your test, for your bench, for your dock etc. Only one configuration file. And using cargo you just for example you can have a new REST project and cargo run, cargo build and yeah it's okay. But sometimes actually we use, we are using different version of the compiler. Where it comes REST up. So REST up is an installer of REST and there are many objectives. Installer REST from the official REST channels keeps the compiler updated making cross compiling simpler. Actually REST up and cargo has the best productivity tool to work in a group on a given project. And just talk about that. We reached more than 13,000 REST libraries in January and nearly 300 millions downloaded libraries in January too. So this is a picture I take from the REST fest in 2017. Open source is not only code and that's something we tend to forget. Open source and free actually free and open source is community, it's people. This is one actually, I like the most actually in REST, it's the community. The REST compiler for now it's 50 release but it's more than 2,000 contributors and more than 74,000 commits. And the community is really open to request for comments. So it's not a programming language you know that is sponsored by Mozilla and Mozilla say yeah okay please to do that thing. Developers actually maybe you can take a look at this and developers and make us say no we will follow Mozilla. No REST is really open to the community and each developer and sponsor actually have the same place. There is no someone actually that is upon decisions and any other. There is a lot of groups, meetups in 35 countries and if you stay in Europe there is a REST festival and in 2018 it will be in Paris. So the community actually is really loving REST and we can take a look just at the developer survey from Starboard Coverflow in 2015. So the first stable version REST was the third most loved in the statistics programming language. In 2016 we were first and in 2017 we were first again. REST in production so is REST is enough stable actually to put some REST on production and yes there is a lot of companies that are using REST in production. Mozilla, OVH, Clever Cloud, Dropbox Store, Google, NPM etc. There is more than 100 companies that are using REST in production today. So you can take a look at this website. It just displays all the companies that are using REST in production but I just want to focus on how some projects build in REST. Servo is a web browser engine, actually tend to be a prototype and some parts of Firefox are directly like Stylo where experimental things on Servo before Firefox. There is Pistone, Pistone help you actually to build awesome games. Xay, Xay it's a project from a guy from Google. It tend to be a text editor. Jezal, which is an ORM. Actually it's my favorite project. Redox is a Redox operating system. It's a full feature operating system right turn in REST. It's not only a kernel, it's a full feature operating system. The project is really huge. It works very well and yeah. If you are looking for something that you know low level and you are interested in operating system, Redox is definitely one of the projects you must be interested in the most. So to the list, there is some cons actually today using REST and the first one actually is a learning curve. REST introduced new concept, new programming concept and the advantage of that is that after REST actually you are a better programmer because when you are switching from CC++ you say yeah okay but I don't want to do that or you have better actually software management and REST in 2018 will introduce some new ways actually to reduce the learning curve, to learn REST. Connect and empower REST global community and they will focus on web service, web assembly, CLI apps and embedded devices. I put actually we care about your request because REST 2018 roadmap is actually a full list of what developers want the most actually in REST in this year. So typically this request is for me a great message that yeah the community is huge and we care about your request where we will do actually want the most for this programming language. So okay thank you, sorry for the accent, sorry for my stress. I was very happy actually to make this talk because it's my first year in for them, it's my first talk and I'm really happy to talk about for me one of the best programming language that I've ever been created since last 10 years and for the next 10 years. So if you want to take a look at REST and actually you should take a look at REST. There is the REST official website, the REST book, RSE forum and Slack if you want to talk a little more about this wonderful programming language. Thank you. Can you take your question outside? Yeah. Because we are a bit over time. If you have a question maybe one. If you have a question maybe one. Okay. So the system programming language, but do people use it also for applications like for games and stuff? Yeah. Oh sorry. So REST is a system programming language where people actually are using it for applications like games and something like that. Yeah. So definitely yes. There is some current talk about high programming language, high level applications using REST. This is definitely actually one of the 2018 to do in the to do list, you know, in CLI apps and various piston for games for example. There is something like that, but the REST programming language actually has been developed actually for systems and you can just, if you take a look at the syntax it's very similar to C++ for example and not very similar for, it's very variable actually if you want to write high level applications. So the community is working on that just to reduce the syntax for example or to let the compiler make something instead of you. It's definitely something that is happening, but for now in my opinion it's still a system programming language. But it's my opinion. Thank you.