Hi there, I'm husharp👋
This organization contains the collection of my toy projects during learning. Some of them might be helpful.
-
JsonParser: A tiny JSON parser. This was my first exposure to engineering. It's a very friendly project development tutorial for novices and sparked my interest in engineering.
-
UnixImpl: inspired by Understanding Unix/Linux Programming
-
Tiny KV: A tiny key-value store, and builds a key-value storage system with the Raft consensus algorithm. It is inspired by MIT 6.824 and TiKV Project.
-
Tiny OS: A tiny operating system. Complete the filling of Tsinghua uCoreOS_labs, and refer to The truth about operating systems to impl a simple operating system on bochs:
-
Tiny MIPS CPU: Utilizing knowledge of combinational logic and synchronous timing logic circuit design, start with logic gates and gradually build operators, memories, datapaths, and controllers, ultimately integrating them into a complete CPU prototype system. Inspired by Computer Composition Principle.
And I use different languages for writing code, especially Go & Rust.
-
Tiny Interpreter Inspired by Writing an interpreter in go: building a inteepreter which named Monkey. It has a C-like syntax, supports variable bindings, prefix and infix operators, has first-class and higher-order functions, can handle closures with ease and has integers, booleans, arrays and hashes built-in.
-
Tiny Compiler Inspired by Writing a compiler in go: It's the next step in Monkey's evolution. We’re going to turn our tree-walking and on-the-fly-evaluating interpreter into a bytecode compiler and a virtual machine that executes the bytecode. And test for interpreter with compiler for the fibonacci.
$ ./fibonacci -engine=eval engine=eval, result=9227465, duration=11.327551667s $ ./fibonacci -engine=vm engine=vm, result=9227465, duration=3.907876125s
- LSM in a Week: This very in-depth tutorial covers all the essential implementation details and design choices of modern storage systems (i.e., RocksDB) based on the author's experience in several LSM-like storage systems, and you will be able to directly apply what you have learned in both industry and academia. personal impl
- Writing an OS in Rust: This blog series creates a small operating system in Rust. Each post is a small tutorial and includes all needed code, so you can follow along if you like. personal impl
- Tokio: This tutorial will take you step by step through the process of building a Redis client and server. We will start with the basics of asynchronous programming with Rust and build up from there. We will implement a subset of Redis commands but will get a comprehensive tour of Tokio. personal impl
- Hecto: This is a series of blog posts that shows you how to build a text editor in Rust. These blog posts guide you through all the steps to build a basic text editor,
hecto
. personal impl - Lists: This is a series of how to implement a linked list in Rust. The answer honestly depends on what your requirements are, and it's obviously not super easy to answer the question on the spot. As such the author has decided to write this book to comprehensively answer the question once and for all. personal impl