* The Leadership Council
* Compiler Team
* Dev Tools Team
* Infrastructure Team
* Language Team
* Library Team
* Moderation Team
* Launching Pad Team
---
## Working Groups
* Async WG
* Command-line Interface WG
* Embedded devices WG
* Game Development WG
* Rust by Example WG
* Secure Code WG
* Security Response WG
* WebAssembly (WASM) WG
---
## The Rust Foundation
> ... is an independent non-profit organization dedicated to stewarding the Rust
> programming language, nurturing the Rust ecosystem, and supporting the set of
> maintainers governing and developing the project.
---
## It has a powerful list of members
---
## Who decides on new features?
* Discuss in chat/forums
* Open a [Request For Change (RFC)](https://github.com/rust-lang/rfcs)
* Relevant team takes a vote
* Tracking ticket is created
* Pull Request(s) to implement the change
* Stabilisation
---
## Summary
* Rust is a collaborative open-source project that prides itself on inclusion
* There is no "owner", nor "BDFL"
* It has strong financial backing
* It remains a work-in-progress
---
## Is this a community I can engage with?
---
## A strong Code of Conduct
The Rust Project, and pretty much the whole Community, follow a [Code of
Conduct](https://www.rust-lang.org/policies/code-of-conduct):
> We are committed to providing a friendly, safe and welcoming environment for
> all, regardless of level of experience, gender identity and expression, sexual
> orientation, disability, personal appearance, body size, race, ethnicity, age,
> religion, nationality, or other similar characteristic.
---
## A strong Code of Conduct
> Likewise any spamming, trolling, flaming, baiting or other attention-stealing behavior is not welcome.
* Builds on efforts in other communities
---
## Why?
* Because a community is only as strong as its members
> Going beyond technical points, Rust has a vibrant, welcoming community -
> ([Stack Overflow Blog](https://stackoverflow.blog/2020/01/20/what-is-rust-and-why-is-it-so-popular/))
---
## Why?
* If you allow both wolves *and* sheep into your space, you won't get any sheep
* The Rust Community seems to have a higher than average representation from the
LGBTQI+ community
---
## So beginners are welcome?
* Absolutely!
* Relatively speaking, we're *all* still beginners
* You even see open tickets on the rust-lang Github marked as *E-easy: Good
first issue*.
---
## This extends to the compiler's interface...
* Any Rust error message which is unclear or ambiguous...
* ... is considered a bug and will be fixed ...
* ... if you open a ticket (or post @ the right people)
---
## Compiler Error Driven Development works!
error[E0502]: cannot borrow `name` as mutable because it is also borrowed as immutable
--> src/main.rs:4:5
|
3 | let nickname = &name[..3];
| ---- immutable borrow occurs here
4 | name.clear();
| ^^^^^^^^^^^^ mutable borrow occurs here
5 | println!("Hello there, {}!", nickname);
| -------- immutable borrow later used here
Some errors have detailed explanations: E0502, E0596.
For more information about an error, try `rustc --explain E0502`.
---
## What does Rust run on?
---
## Host vs Target
* The machine you develop on
* The machine the program runs on
---
## Rust is a cross-compiler
* It uses LLVM to generate machine code
* *Every* Rust install is a cross-compiler
* No rummaging for extra installers for your specific target
---
## Hosts
* Windows (__x86__, Arm)
* macOS (__x86__, Arm)
* Linux (__x86__, __Arm__, RISC-V, MIPS, Power, S390x, SPARC...)
* FreeBSD, NetBSD, Illumos, ...
---
## Targets
* All of the above, plus...
* Android
* iOS/watchOS/tvOS
* Bare-metal Embedded
* QNX, VxWorks, AIX
* WebAssembly
* UEFI
* Nintendo Switch, Sony PSP and PS Vita...
* Add your own!
---
## What does Rust cost?
---
## Rust is Open Source
* Under the MIT or Apache-2.0 licences
* You can compile `rustc` and `cargo` yourself
*
---
## Binaries are provided free of charge
* Available using the `rustup` tool
* [AWS](https://aws.amazon.com/blogs/opensource/aws-sponsorship-of-the-rust-project/) sponsor the project
* Nothing to sign, no USB dongle required
---
## Support is available
* There are lots of places you can go for help
* Forums, Discord, Reddit
* Professional consulting firms
* Rust Toolchain vendors
---
## No-one is an expert overnight
* Budget for some training
* Budget for some time for the team to gain experience
* Budget for some support when the team have questions
---
## You might need a bigger computer...
> Today, compiling the __Rust compiler__ on a 4-core CPU, that is typically
> found in a standard laptop, takes up to 15 minutes with another 5-10 minutes
> for tests. However, a 96-core cloud virtual machine can complete the same
> build in less than 5 minutes with tests completing in 35 seconds.
---
## Compile time checks vs run-time checks
* Rust does a lot of work *up front*
* The faster your checks run, the more productive you are!
* A Raspberry Pi 4 technically works, but it takes a while...
---
## Can I build safety-critical systems?
---
## Some terminology
* a *system* is *certified* as being sufficiently safe/correct
* that *system* is often built using *qualified* tools
* *quality* is the result of an ongoing process
Note:
Some industries use the terms *certification* and *qualification*
interchangeably.
---
## What is a safety-critical system?
Generally built following a standard, like ISO 26262:
> ISO 26262 is intended to be applied to safety-related systems that include one
> or more electrical and/or electronic (E/E) systems and that are installed in
> series production passenger cars with a maximum gross vehicle mass up to 3500
> kg.
---
## What is a safety-critical system?
Generally built following a standard, like ISO 26262:
> This document describes a framework for functional safety to assist the
> development of safety-related E/E systems. This framework is intended to be
> used to integrate functional safety activities into a company-specific
> development framework.
---
## And for other applications:
* __DO-178C__ *Software Considerations in Airborne Systems and Equipment
Certification*
* __IEC 61508__ *Functional Safety of Electrical/Electronic/Programmable Electronic
Safety-related Systems*
* __IEC 62278__ *Railway applications - Specification and demonstration of
reliability, availability, maintainability and safety*
* __IEC 62034__ *Medical device software – Software life cycle processes*
* There are many others...
---
## Can I use Rust?
* Well you can use C
* And C is kinda risky...
* But processes have been developed to manage that risk
* And C toolchains have been *qualified* so you can rely on them doing what they say
they are going to do
* If you hold them the right way
---
## Language Specifications
* C has *ISO/IEC 9899:2018* (C17)
* C++ has *ISO/IEC 14882:2020(E)* (C++20)
* Rust doesn't have a standard
* The open-source compiler *is* the standard
* The first ISO C standard (C90) came 17 years after C was invented, largely
because there were a lot of different competing compilers
---
## Ferrocene
> Ferrocene is the open-source qualified Rust compiler toolchain for safety- and
> mission-critical. Qualified for automotive and industrial development.
>
> ISO26262 (ASIL D) and IEC 61508 (SIL 4) available for x86 and ARM platforms.
---
## Ferrocene
* To produce Ferrocene, we first wrote the *Ferrocene Language Specification*
* See
* Ferrocene is based on the open-source Rust compiler
* Additional testing and run-time checks in the toolchain
* Lots of documentation!
* Ferrocene itself is open-source software
*
* Pricing and support options at
* Other companies have similar offerings (ask them!)