Oxidation
How we got rust code into Firefox
Firefox Quantum
Brief history of Rust
2006: Rust language started by Graydon Hoare
2009: Mozilla begins sponsoring Rust project
2012: rustc self-hosting compiler
2015: rust 1.0 is released
2017: rust 1.21 is released
Fearless concurrency™
“… a folk definition of insanity is to do the same thing over and over again and to expect the results to be different. By this definition, we in fact require that programmers of multithreaded systems be insane. Were they sane, they could not understand their programs.”
Brief history of Servo
2012: Research Team starts work on Servo
2016: 0.0.1 alpha version released
2017: Servo code lives in the Gecko tree
2017: Firefox Quantum!!!
Oxidation
- mp4parse-rust
- rust-url
- encoding-rs
- requiring Rust
- importing Servo
Oxidation
- mp4parse-rust
- rust-url
- encoding-rs
- requiring Rust
- importing Servo
Oxidation
- mp4parse-rust
- rust-url
- encoding-rs
- requiring Rust
- importing Servo
Oxidation
- mp4parse-rust
- rust-url
- encoding-rs
- requiring Rust
- importing Servo
Oxidation
- mp4parse-rust
- rust-url
- encoding-rs
- requiring Rust
- importing Servo
Quantum CSS (Stylo)
WebRenderer
What's next?
#moreRust
Spot the bug
int64_t GetChunkIdx() const
{
return mChunk ? mChunk->Index() : -1;
};
Spot the bug
4294967295
WTF!?
int64_t GetChunkIdx() const
{
return mChunk ? static_cast<int64_t>(mChunk->Index()) : -1;
};
class CacheFileChunk {
[...]
uint32_t Index() const;
};
Spot the bug
fn GetChunkIdx(&self) -> Option<i64>
{
if let Some(chunk) = self.mChunk {
Some(chunk.index() as i64)
} else {
None
}
};
The rust way
How can I help?
Contribute to our projects:
Firefox - mentored bugs
Servo - E-Easy
Rust - E-Easy
Use and report bugs - bugzilla.mozilla.org
Oxidation - Rust in Firefox
By Valentin Gosu
Oxidation - Rust in Firefox
- 3,101