High Assurance Rust - A free book about developing secure and robust systems software.

Overview


High Assurance Rust


High Assurance Rust

Click here to read now: https://highassurance.rs/

What does this book aim to do?

  1. Provide an accessible but principled introduction to developing secure and robust systems. At the overlap of "state-of-the-art" and "near-term practical": mostly production-grade tools and techniques, but also some-cutting edge research projects. All open-source.

  2. Help experienced developers both learn a new language and delve deeper into fundamental Computer Science and Computer Architecture topics.

How can I help?

If you find this content valuable, consider increasing its visibility by starring this GitHub repo. Much appreciated! :)

Where's the mdbook source?

High Assurance Rust is a work-in-progress. Once it's closer to being finished, source for the full text will be added to this repo - you'll be able to build and read the full book locally. Currently, this repo is a placeholder with a subset of the code snippets used in the text and a Dockerfile for following along with each chapter.

Interested in a physical print?

Please sign up here if you'd like to be notified when the book is finished and hard copies are available. The email you provide not be shared or used for any other purpose.

Have feedback or questions?

Your input matters. We'd love to hear from you, please send an email to:

[email protected]

Anything else I should know?

A great deal of effort went into making this book a reality. We hope you have as much fun reading as we did writing. Let's hack together!

Comments
  • Fixes typo(s) in chp2

    Fixes typo(s) in chp2

    "On the extreme end, it's weak typing means" to: "On the extreme end, its weak typing means" (limits.md Line 61)

    Remember: this is *no absolute* security.
    Only levels of *assurance*.
    

    to:

    Remember: there is *no absolute* security.
    Only levels of *assurance*.
    

    (limits.md line 262)

    opened by aelnona 4
  • Fixes some typos in chp2

    Fixes some typos in chp2

    Changes "e.g. read the the value of it's target." of line 137 of static_asurance_1.md to "e.g. read the value of its target."

    Removes duplicate "down" of "We broke down the C version down" in static_assurance_2.md

    Alters ". Which" to ", which" in static_assurance_2.md

    Minor grammatical fixes to dynamic_assurance_3.md

    opened by aelnona 4
  • Chapter 1.5 namespaces reference link.

    Chapter 1.5 namespaces reference link.

    In src/chp1/_hands_on.md, line 109:

    [^Namespaces]: [*Everything You Need to Know about Linux Containers, Part II: Working with Linux Containers (LXC)*](https://code.visualstudio.com/docs/remote/containers). Petros Koutoupis (2018).
    

    should be

    [^Namespaces]: [*Everything You Need to Know about Linux Containers, Part II: Working with Linux Containers (LXC)*](https://www.linuxjournal.com/content/everything-you-need-know-about-linux-containers-part-ii-working-linux-containers-lxc). Petros Koutoupis (2018).
    

    The original link is about containers, but about setting them up using an extension for VScode and doesn't have the given title.

    opened by jamesreprise 3
  • Chapter 2 Dynamic Assurance lib.rs path

    Chapter 2 Dynamic Assurance lib.rs path

    opened by aelnona 3
  • Incorrect wording in chapter 1.1

    Incorrect wording in chapter 1.1 "Languages by Level"

    In the second sentence of this section, the book currently reads as

    Rust can run in levels of the stack were scripting languages

    ... but the usage of "were" is incorrect. It should instead be

    Rust can run in levels of the stack where scripting languages

    As a side note, I would really appreciate if the book's source was present in this repository, even if you decide to keep it in some other branch for now - needing to open an issue or send an email is a bit irritating when one could instead just open a pull request to address an issue directly.

    opened by kaylynn234 2
  • v0.3.2

    v0.3.2

    • Rust Foundation sponsorship via the 2022 Project Grants Program! :tada:
    • New diagrams and discussion in 1.1, 2.10.
    • New asides in 2.2 and 2.7.
    • CODE_OF_CONDUCT.md added.
    • EPUB download now includes a SHA-3-256 hash and timestamp.
    opened by tnballo 0
  • Add

    Add "Community Contributors" list to "About the Team" and a `CONTRIBUTING.md` to this repo

    For the v0.3.1 update (#4), I'd like to add a "Community Contributors" list to the current "About the Team" page of the book. The idea is to alphabetically list the GitHub usernames of eagle-eyed readers who spot typos and issue PRs, e.g:

    • a_username
    • b_username
    • c_username

    This could be a nice way to recognize community contributors for what might count as "proofreading" work in a traditional book publisher's process :+1:

    Will add a CONTRIBUTING.md with more details in the next few days. Then reach out to those who provided typo fixes via email to ask consent for retroactive addition to the list.

    Much like software bugs, typos are difficult to detect automatically and at scale! Appreciate the manual effort and feel this could lead to a more polished book in the long-term.

    enhancement 
    opened by tnballo 0
  • v0.3.1

    v0.3.1

    Coming ASAP:

    • Address accumulated feedback (huge thanks to everyone who reached out!)
    • Add PDF and EPUB downloads to the site (see #2)
    • Add source for all public content to this repo in order to reduce friction for typo fixing (see #3)
    enhancement 
    opened by tnballo 0
  • Example is missing a generic

    Example is missing a generic

    Hello! I'm looking at https://highassurance.rs/chp7/traits.html#the-map-get-api. The example with the get is never introducing the second generics K and V in the code example.

    /// Returns a reference to the value corresponding to the key.
    pub fn get<Q>(&self, key: &Q) -> Option<&V>
    where
        K: Borrow<Q> + Ord,
        Q: Ord + ?Sized,
    {
        // ...function body here...
    }
    

    I think a better example would be:

    impl<K, V> BTreeMap<K, V> {
        pub fn get<Q>(&self, key: &Q) -> Option<&V>
        where
            K: Borrow<Q> + Ord,
            Q: Ord + ?Sized,
        {
            // ...function body here...
        }
        // ... rest of the methods
    }
    

    to show where the generic for BTreeMap are introduced. There is a mention of BTreeMap<K, V> but in my opinion I think it's easily missed and this would illustrate how the generics from the impl are used.

    opened by tatupesonen 3
Owner
Tiemoko Ballo
{Firm,Soft}ware Security
Tiemoko Ballo
ARM TrustZone-M example application in Rust, both secure world side and non-secure world side

ARM TrustZone-M example application in Rust, both secure world side and non-secure world side; projects are modified from generated result of cortex-m-quickstart.

null 43 Aug 13, 2022
Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth.

HexoDSP - Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth. This project contains the com

Weird Constructor 35 Sep 17, 2022
An RPC framework developing tutorial

Mini Lust 系列教程 好奇如何从零造出来一个 RPC 框架?本教程将带你一步一步写出来一个 Rust 版 Thrift RPC 框架。 教程说明 从第二章开始每章节都会附带代码。 这个代码是在上一章节的基础上写的,文档里一般会告诉你增加了哪些东西,但是如果你想详细地对比到底哪里变动了,可以自

null 435 Sep 17, 2022
A type-safe, high speed programming language for scalable systems

A type-safe, high speed programming language for scalable systems! (featuring a cheesy logo!) note: the compiler is unfinished and probably buggy. if

Hail 0 Sep 14, 2022
A library for extracting #[no_mangle] pub extern "C" functions (https://docs.rust-embedded.org/book/interoperability/rust-with-c.html#no_mangle)

A library for extracting #[no_mangle] pub extern "C" functions In order to expose a function with C binary interface for interoperability with other p

Dmitrii - Demenev 0 Feb 17, 2022
clone of grep cli written in Rust. From Chapter 12 of the Rust Programming Language book

minigrep is a clone of the grep cli in rust Minigrep will find a query string in a file. To test it out, clone the project and run cargo run body poem

Raunak Singh 1 Dec 14, 2021
The ray tracer challenge in rust - Repository to follow my development of "The Raytracer Challenge" book by Jamis Buck in the language Rust

The Ray Tracer Challenge This repository contains all the code written, while step by implementing Ray Tracer, based on the book "The Ray Tracer Chall

Jakob Westhoff 52 Sep 11, 2022
This repository contains the source of "The Rust Programming Language" book.

The Rust Programming Language This repository contains the source of "The Rust Programming Language" book. The book is available in dead-tree form fro

The Rust Programming Language 10.1k Sep 20, 2022
Source code for the book Rust in Action

Welcome to Rust in Action source code This source code repository is a companion to the Rust in Action book available from Manning Publications. Suppo

Rust in Action 1.1k Sep 24, 2022
Code to follow along the "Zero To Production" book on API development in Rust.

Zero To Production / Code (Chapter 10 - Part 1) Zero To Production In Rust is an opinionated introduction to backend development using Rust. This repo

Luca Palmieri 2.4k Sep 25, 2022
Rust crate to implement a counterpart to the PBRT book's (3rd edition) C++ code.

Rust crate to implement a counterpart to the PBRT book's (3rd edition) C++ code.

Jan Walter 752 Sep 23, 2022
Learn programming with Rust as a first language (book)

Learn programming with Rust as first language This is a book to learn programming from scratch. Read the book here: https://deavid.github.io/lprfl/ LI

David Martínez Martí 2 May 21, 2022
Book - Actix user guides

User guides Actix User Guide Actix API Documentation (Development) Actix API Documentation (Releases) Actix Web User Guide Actix Web API Documentation

Actix 183 Sep 21, 2022
Complete code for the larger example programs from the book.

Code Examples for Programming Rust This repository contains complete code for the larger example programs from the book “Programming Rust”, by Jim Bla

Programming Rust 612 Sep 28, 2022
Scans a given directory for software of unknown provinence (SOUP) and dumps them in a json-file

Scans a given directory for software of unknown provinence (SOUP) and writes them to a json-file. The json-file contains name, version and a meta property for each SOUP.

Dunklas 4 Jul 5, 2022
Goodname is a tool to assist you with cool naming of your methods and software

Goodname is a tool to assist you with cool naming of your methods and software. Given a brief description of your method or software, this tool enumerates name candidates forming subsequences of the description (i.e., abbreviation).

Shunsuke Kanda 114 Sep 22, 2022
Mote is a systems-programming language designed to be practical, performant, and simple.

Mote NOTE: this following lists the goals for what Mote is supposed to be. It does not promise that any of the features here will be accomplished or a

The Mote Programming Language 14 Jul 28, 2021
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners

CleanIt Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners Motivation Motivation is to build a complete

Kristoffer Rakstad Solberg 204 Sep 21, 2022