What is wrong with C? Why Rust?
Tags: rust, c, mozzilla, memorysafety
Published: 2020-04-29 23:16:22

## Origin of Rust

![A bright orange crab icon](https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Rustacean-orig-noshadow.svg/1280px-Rustacean-orig-noshadow.svg.png)
##### Rust users ලා එයාලව් Rustaceans විදියට හදුන්වන අතර Ferris එයාලග් mascot විදියට පාවිච්චි කරනවා.

2006 Mozilla වැඩ කරන Graydon Hoare කියන මහත්තයාගේ personal project විදිහට පටගත්තු Rust language 2009 දී Mozilla sponsor කරන්න පන්ගන්න්වා. 2011 OCaml වලින් ලියලා තිබුණු Rust compiler ආපහු අමුතුවෙන්ම Rust වලින් ලියලා rustc කියන අලුත් Rust compiler හදනවා. 2012 දී pre-alpha release කරන අතර Rust 1.0 එහෙමත් නැත්නම් පළවෙනි stable release 2015 මැයි 15 නිකුත් කරනවා.

---

## What is the biggest wrong with C?
**Memory Safety**

## What Is Memory Safety?
Program executions වෙනකොට වැරදි මතකයකට (invalid memory) ඇතුල් වෙන්න බැ. එහෙම ඇතුල වීම Memory violations විදියට අපි හදුන්වා දෙනවා.

Violations :
* use after free
* null pointer dereference
* using uninitialized memory
* double free
* buffer overflow

මේ Memory violations ,
* programs unexpectedly crash වෙන්න.
* අපේක්ෂිත හැසිරීම (intended behavior) ඇතිවෙන්න exploit කිරීම.
* Information leakage ඇතුළු memory ආශිත bugs
* Arbitrary code execution
* Remote code execution

වලට හේතු වෙනවා.

![We need a safer systems programming language - Microsoft Security ...](https://msrc-blog.microsoft.com/wp-content/uploads/2019/07/image-1.png)
##### Microsoftලගේ vulnerabilities වලින් ~70% ඇතිවෙන්නේ memory safety issues නිසා.

## Why Rust?

Rust කියන්නේ modern systems programming language type-safe හා memory-safe තියෙන්න. Rust වල තියෙන මේ safety guarantees නිසා compile time වලදී thread-safe තියෙනවා කියලා සලකනවා. මේ නිසා Rust පහත දේවල් වලට විශේෂයෙන් හොදයි.

* Untrusted input safely processes කිරීමට.
* Performance improve කරන්න parallelism පාවිච්චි කරන්න.
* Isolated components සමග පවතින (existing) codebase ඒකාබද්ධ (integrating) කරන්න.

![With great performance comes great memory responsibility](https://2r4s9p1yi1fa2jd7j43zph8r-wpengine.netdna-ssl.com/files/2019/01/with-great-performance-500x383.jpg)

## Cargo
![](https://doc.bccnsoft.com/docs/rust-1.36.0-docs-html/cargo/images/Cargo-Logo-Small.png)
Rust වල තියෙන ප්‍රදාන වාසියක් තමයි central package management කියන්නේ. cargo build වලින් ඔයාට ඕනි කරන dependencies සේරම ටික download කරලා compile ලුත් කරලා ඔයාගේ ඔයාගේ code link කුත් කරලා දෙනවා. ඔව් ටිකක් npm / yarn වගේ හුකම Go ලාගේ go build වගේ. C/C++ වල නම් dependencies ඔයාට manually download කරල install කරන්න ඕනි නැත්නම් make ලියලා හෙන නැටුමක් නටන්න ඕනි.

---
## Servo

![File:Servo logo.png - Wikipedia](https://upload.wikimedia.org/wikipedia/en/thumb/d/d9/Servo_logo.png/240px-Servo_logo.png)
Mozilla Research develop කරන browser engine. මේක ලියන්නේ Rust වලින්. මේකට Quantum CSS කියලත් කියනව.

![](https://2r4s9p1yi1fa2jd7j43zph8r-wpengine.netdna-ssl.com/files/2017/08/01-500x317.png)
##  Why Quantum CSS aka Stylo?

Rust වලින් ප්‍රතිනිර්මාණය Quantum CSS නිර්මාණය කරන්න මුලිකම හේතුව තමයි page performance හා security වැඩිදියුණු කරන්න එක.

![Rewrites code to make it faster; also makes it more secure](https://2r4s9p1yi1fa2jd7j43zph8r-wpengine.netdna-ssl.com/files/2019/02/successrust-250x250.jpg)
Firefox Quantum නිර්මාණය කරන්නේ ඒ Stylo browser engine දාල.

![https://fossbytes.com/wp-content/uploads/2017/11/Disconnect-Study-Blog-Post-Graph-01-1-768x384.jpg](https://fossbytes.com/wp-content/uploads/2017/11/Disconnect-Study-Blog-Post-Graph-01-1-768x384.jpg)

කලින් තිබුණු browser engine තිබුණු security bugs 69 යෙන් 51ම (**73.9%**) Stylo browser engine Rust වලින් නිර්මාණය කරපු නිසා නැති කරගන්න පුලුවම් වෙලා තියෙනවා.

---
## Projects

### Web browser

*   [Firefox](https://en.wikipedia.org/wiki/Firefox)
*   [Servo](https://en.wikipedia.org/wiki/Servo_(software))
*   [Quantum](https://en.wikipedia.org/wiki/Quantum_(software))

### Operating systems

*   Magic Pocket
*   [Redox](https://en.wikipedia.org/wiki/Redox_(operating_system))
*   [Stratis](https://en.wikipedia.org/wiki/Stratis_(configuration_daemon))
*   Railcar
*   Firecracker

### Other

*   [exa](https://en.wikipedia.org/wiki/Exa_(command-line_utility))
*   [Microsoft Azure](https://en.wikipedia.org/wiki/Microsoft_Azure) IoT Edge
*   [OpenDNS](https://en.wikipedia.org/wiki/OpenDNS)
*   [Tor](https://en.wikipedia.org/wiki/Tor_(anonymity_network))
*   TiKV 
*   _[Wargroove](https://en.wikipedia.org/wiki/Wargroove)_
*   Xi
*   [Deno](https://en.wikipedia.org/wiki/Deno_(software))
*   [Linkerd 2.x](https://linkerd.io/2/overview/)
*   [TerminusDB](https://terminusdb.com/)
*   [Discord](https://en.wikipedia.org/wiki/Discord_(software))

_>> Don't forget to say hello to the search box for further details._

---
## References
https://en.wikipedia.org/wiki/Rust_(programming_language)
https://hacks.mozilla.org/2019/01/fearless-security-memory-safety/
https://msrc-blog.microsoft.com/2019/07/18/we-need-a-safer-systems-programming-language/
https://en.wikipedia.org/wiki/Servo_(software)
https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/
https://blog.mozilla.org/press-uk/2017/11/20/1811/