We'll talk about features we're excited about, what didn't make it in, how Rust is moving into new domains like Network services, CLIs, WebAssembly, and Embedded Devices, and why maybe now is the time to start or get back into Rust.

Thanks to @iceddev and@monteslu sponsoring beers

Happy 2018 edition via @jacobrosenthal

What are editions, what is 2018, and why are we here today

"signify major steps in Rust’s evolution, where a collection of new features or idioms, taken as a whole, changes the experience of using Rust" https://blog.rust-lang.org/2018/03/12/roadmap.html

"culmination of feature stabilization throughout the year, and will ship with polished documentation, tooling, and libraries that tie in to those features " https://blog.rust-lang.org/2018/07/27/what-is-rust-2018.html

In many ways, it is actually nothing special, just a continuation of the train model, six week release cycle, today releases 1.31

But people have been working very hard this year so that this release would deserve to be called 2018, or you could call it 2.0 if youre nasty. 2015's 1.0 is being rebranded as 2015 edition

The 4 pillars sourced from community that the branding push is behind are

  • cli
  • wasm
  • embedded
  • networking (futures, async)

These will probably be our next 4 meetups as we continue to dive deeper

Who am I

I'm Jacob, heatsync labs, firmware and embedded developer, occasionally fullstack web and node, but mostly anything that touches hardware and low level stuff

Im excited about Rust and wanted to start this back up again because I think you should be too

What this meeting could be

what i want this meeting to be, monthly, for newbies and advanced, attempt to engage all of you, but also engage youa ll from newbies and advanced to help build this meeting.

Probably first few are just going to catch up community, but generally main talk deeper dives, nodeaz style, for newbies and anyone else show and tell, crates you should know Should be chatty, rambunctious, ask question, no COC at the moment, but be kind expect to be asked to speak, expect to be part of the discussion

dont have to prepare a talk, just walk through your code base, open up links, show off a project or ask a question about something, start a discussion, check in with your peers

to that end Im going ot go around quick and do introductions say anything you want about yourself, especially if you've written some rust as were getting this back together again helps to know which folks have a little experience we newbies could lean on

to that point tonight IM going to ask you to think about something on the 2018 release page that excited or confused you and jump up here to talk about it. I cant just drone through the release list as wed all be bored, and I dont know which topics excite you, so Im asking you to jump up here and make sure we talk about a feature you were hoping to hear talked about.. Ive seeded a few people here to jump up here and talk a bit about features and show a bit of code so were not just academic here, and I hope youll at the very least start a discussion with your favorite feature, so look at that list and keep somethign in mind

What the hell is Rust

  • Mozilla build web browsers with it?
  • crypto nerds like it for its safety, modularity in cryptographic algorithms and software?
  • something to do with web assembly?

What does the rust-lang.org page say?

systems programming language, ie c/c++ https://web.archive.org/web/20180930221017/https://www.rust-lang.org/en-US/)

wait thats last years language..

"everyone to become a systems programmer" bringing high level concepts to low level programs, and bringing high level programmers to low level hardware https://web.archive.org/web/20181201184052/https://beta.rust-lang.org/)

wait, thats still last weeks language

"Empowering everyone to build reliable and efficient software"

Which makes sense. Because 2018 is when Rust becomes a lot of different things to a lot of people, note my take is going to be more from the embedded systems side as thats my background, though Ive done lots of node as it exited me to get to play with functional paradigms, high level proramming concepts like async await, streams, promises

None of that is helpful though

Rust is a typed, compiled, general programming language. Basically compiles to what C would do, and can link C or be called by C, and thus can be linked or called by js or python or whatever else.

  • Typed - you have to specify your types, allows the compiler to understand your program, optimize, and doesnt allow code that wouldnt work at run time.
  • Compiled - actually turns into a binary, unlike javascript or something which is just in time compiled
  • General. Much like most modern laguages these days its not strictly functional or object oriented, its many thing to many people and tries to take whatever it wants from tons of languages.
  • no garbage collector. So it IS going to be less elegant than your favorite GC language or toy ML, though way more performant. Instead in addition checking types at compile time, it also reasons about what memory could be in use at any given time, and if it finds you violating any rules it wont compile and will instead try to give you helpful error messages. Don't worry though, you can always escape hatch with unsafe and do whatever you want, though note unsafe is a 'code smell' and you should expect documentation and reasoning to accompany it

So you're pair programming with the borrow checker

Thats the pain and or joy of Rust, I cant tell you how to feel, but if you reframe it as a friend instead of an enermy youll have a much better time

And let me tell you even when you're frustrated, its suuuuuuch a better friend than C that mostly tells you it cant understand you and I think its a better friend than one who would let you drive drunk in the wrong lane

My bold claim

Rust unifyies all of development finally.

So no more this guy writes linux kernel but cant write anything for the web (and therefore shit-talks js devs), or this guy is a web developer it thinks it would take an engineering degree to be able to write some non toy code for a microcontroller.

From the js direction, everything is moving typed to try to get more performance, and more safety, Just come one step further with me :) In the c++ and c side, code sharing, modularity are crazy lacking, everyone is reimplementing, poorly, the same mutexs, standards body are desperately trying to land a first pass at modules for 2020, and a better async await that would work down at micros and for performance critical systems by 2023 maybe? But Rust has all this today

Why not C or C++

Rust has lack of legacy, only one compiler codebase, not competing vendors, modules from the start, designing the language in github issues and nightly code releases instead of by committes that only facebook and google can fly to attend (and thus only their needs are ever met).

Why not Node or Golang or Python

These all have Garbage collection so cant ever come low level. For instance theyre having a hard time targetting web assembly and all have feeble attempts at shrunk down runtimes in an attempt to target embedded. But for high level these will be around forever so don't worry.

History of Rust (2015 edition) via @elbow-jason

  • A retrospective of Rust 2015 with some thoughts from our dear leader Jason Goldberger
  • Provide context for what 2018 edition is bringing, ffi to Rust from elixer

Rust in Production @craigjb

  • Craig already thousands of lines of Rust here in Phoenix in semiconductor industries