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
A lock-free, partially wait-free, eventually consistent, concurrent hashmap.

A lock-free, partially wait-free, eventually consistent, concurrent hashmap. This map implementation allows reads to always be wait-free on certain pl

Ian Smith 216 Nov 18, 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
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 45 Dec 17, 2022
A project for developing Rust applications

rust_dev This is a project for developing Rust applications. The goal of this project is to provide a solid foundation for building robust and scalabl

Harsh agarwal 4 Feb 7, 2023
Manas project aims to create a modular framework and ecosystem to create robust storage servers adhering to Solid protocol in rust.

मनस् | Manas Solid is a web native protocol to enable interoperable, read-write, collaborative, and decentralized web, truer to web's original vision.

Manomayam 17 Oct 5, 2023
An RPC framework developing tutorial

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

null 454 Dec 30, 2022
Search and read 'The Rust Book' from the terminal

TheBook TheBook is a command line utility that allows you to SEARCH and READ The Rust Programming Language (popularly known as 'The Book' ) from the t

0xHiro 技術者 239 Jan 4, 2023
Majestic Lisp book and implementation, in Brazillian Portuguese.

Majestic Lisp Criado e desenvolvido por Lucas S. Vieira <lucasvieira at protonmail dot com>. Seja bem-vindo(a) a Majestic Lisp, um dialeto de Lisp cuj

Lucas Vieira 3 Oct 26, 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 54 Dec 25, 2022
A minimal version of 'grep' implemented in Rust. Exercise in the "The Rust Programming Language" book.

Minigrep - A simple grep-like tool implemented in Rust This simple CLI tool searches for a given pattern in a specified file and as a result, it print

Filip Szutkowski 3 Mar 15, 2024
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 11.2k Jan 8, 2023
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.3k Dec 30, 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.8k Dec 31, 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 763 Dec 27, 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 185 Dec 25, 2022