Assignments of Stanford CS110L-2020spr: Safety in Systems Programming

Overview

CS110L Spring 2020: Safety in Systems Programming

课程简介

CS110L将带领我们学习 Rust ,这是一门注重 安全、性能、工程 的语言。

  1. Why Rust?

    1. 我的浅显理解是:Rust 被设计出来旨在解决目前系统级编程的困难,其特征 “安全、性能、工程” 也是应系统级编程的需求而来。在事实上挑战了C语言的地位,Rust 试图在拥有媲美 C 的性能的同时改善 C 在安全、工程上的不足。
    2. 更详细的回答1(by Rust语言圣经)
    3. 更详细的回答2(by Rust程序设计语言)
  2. For Who?

    • For everyone. 别质疑,先学习!

参考资料

  1. 2020版本 课程官网
  2. 2022版本 课程官网
  3. Rust 程序设计语言
  4. Rust 语言圣经
  5. Rust 异步编程
  6. PKUFlyingPig代码实现

作业&项目

  1. Exercises 1: Hello world
  2. Exercises 2: Ownership and structs
  3. Exercises 3: Error handling, I/O, and traits
  4. Exercises 4: Farm meets multithreading
  5. Exercises 5: Sharing Data by Communicating
  6. Project 1: The DEET Debugger
  7. Project 2: Balancebeam

一些说明

  1. 当我2022年11月计划学习 Rust 并从 CS自学指南 发现本课程时,Thea Rossman 的 2022版本CS110L 似乎把Github代码库设为仅选修该课程的本校同学可见,并且没有公开课程视频。所以我们仍关注 Ryan Eberhardt & Armin Namavari 的 2020版本CS110L 。二者稍有区别但对 Rust 学习不会产生实质影响:
    • 课程内容稍有改动,涉及课程讲义、作业和项目,但仅是细节处的优化。二者可对比参照。
    • Rust 在近几年快速演进,2020版本的项目所使用的库可能过于老旧而不再支持。可以预见的是 Rust 及 Rust 库会持续更新,如果 CS110L 继续闭源,是时可参考 Project-1 适配说明Project-2 适配说明 而自行适配。
  2. Rust库适配过程本质上是API查阅的过程,我通常的做法是:
    1. cargo check/cargo build 查看并分析错误( Rust 编译器也是重要的学习工具)
    2. lib.rscrates.io 上搜索库并查看版本更新、库简介、使用说明、库特征等。
    3. 在API文档中查找所需要的API,并可以与旧版API进行比较(不由得感叹 Rust 的文档用起来太舒服了~)。

写在最后

  1. Rust以学习曲线陡峭著称,不可否认,但也不必担心。我想,除了语言开发团队在语言的各种特性上的取舍与平衡,我们这些使用者也在付出和得到间获得了平衡——更多的付出与更好的代码。
  2. Rust首次被合入Linux已经证明了能力,或许 Rust 生态真的会蓬勃发展吧 :)
You might also like...
Verified Rust for low-level systems code

See Goals for a brief description of the project's goals. Building the project The main project source is in source. tools contains scripts for settin

A flexible simple theme manager for *nix systems

tema A theme manager for *nix systems respecting the FHS spec configuration As of now all the configuration is done via $XDG_CONFIG_HOME/tema/config.y

rpsc is a *nix command line tool to quickly search for file systems items matching varied criterions like permissions, extended attributes and much more.

rpsc rpsc is a *nix command line tool to quickly search for file systems items matching varied criterions like permissions, extended attributes and mu

Open-source Rust framework for building event-driven live-trading & backtesting systems

Barter Barter is an open-source Rust framework for building event-driven live-trading & backtesting systems. Algorithmic trade with the peace of mind

EVA ICS v4 is a new-generation Industrial-IoT platform for Industry-4.0 automated control systems.
EVA ICS v4 is a new-generation Industrial-IoT platform for Industry-4.0 automated control systems.

EVA ICS v4 EVA ICS® v4 is a new-generation Industrial-IoT platform for Industry-4.0 automated control systems. The world-first and only Enterprise aut

Superviseur - A simple process supervisor for UNIX-like systems
Superviseur - A simple process supervisor for UNIX-like systems

A simple process supervisor for UNIX-like systems. Currently supports non-containerized services. Containerized services and wasm services will be supported in the future.

A natural language shell interface for *nix systems

Orphic A natural language shell interface for *nix systems. Overview Orphic is a CLI tool that uses GPT to translate complex tasks into shell commands

F-Fetch targets low systems. Written in Rust. It's very simple, designed so you can pick it up and replace it.

F-Fetch F-Fetch targets low systems. Written in Rust. It's very simple, designed so you can pick it up and replace it. First Look ~/.config/ffetch/con

NodeCraft - Crafting seamless node operations for distributed systems

NodeCraft Crafting seamless node operations for distributed systems, which provides foundational traits for node identification and address resolution

Owner
Shaofeng
醉后不知天在水,满船清梦压星河
Shaofeng
Explore from the safety of your shell

turtlescan Explore from the safety of your shell Installation: cargo install turtlescan tui Starts a little tui which connects to your JSON-RPC server

Brian Cloutier 4 Sep 13, 2022
Unopinionated low level API bindings focused on soundness, safety, and stronger types over raw FFI.

?? firehazard ?? Create a fire hazard by locking down your (Microsoft) Windows so nobody can escape (your security sandbox.) Unopinionated low level A

null 5 Nov 17, 2022
Nimbus - A virtual, networked filesystem with strong upfront safety guarantees

The Nimbus Filesystem Nimbus is a virtual, networked filesystem that provides upfront safety guarantees to a user, intended for personal use. In parti

Max Fan 3 Jan 10, 2023
Stream-based visual programming language for systems observability

Stream-based visual programming language for systems observability. Metalens allows to build observability programs in a reactive and visual way. On L

Nikita Baksalyar 53 Dec 23, 2022
The Amp programming language: a language designed for building high performance systems.

A language designed for building high performance systems. Platform Support x86_64-pc-windows ✅ x86_64-unknown-linux ⚠️ untested x86_64-unknown-darwin

The Amp Programming Language 5 Mar 17, 2023
🛠️ An experimental functional systems programming language, written in Rust and powered by LLVM as a backend.

An experimental functional systems programming language, written in Rust, and powered by LLVM as a backend. ?? Goal: The intent is to create a program

codex 3 Nov 15, 2023
An Interpreter for Brainfuck programming language implemented in the Rust programming language with zero dependencies.

Brainfuck Hello, Visitor! Hey there, welcome to my project showcase website! It's great to have you here. I hope you're ready to check out some awesom

Syed Vilayat Ali Rizvi 7 Mar 31, 2023
Programming language made by me to learn other people how to make programming languages :3

Spectra programming language Programming language made for my tutorial videos (my youtube channel): Syntax Declaring a variable: var a = 3; Function

Adi Salimgereyev 3 Jul 25, 2023
Low-level Rust library for implementing terminal command line interface, like in embedded systems.

Terminal CLI Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you. Example, output only

HashMismatch 47 Nov 25, 2022
Dog command for *nix systems, Rust port of dog.

dog-rs Dog command for *nix systems, Rust port of dog. Because there is a cat command, should be a dog command too. It was written completely using VS

Juanjo Salvador 2 Sep 29, 2021