Endeavor Assistant
assisting to meet your goals
Note
The main purpose of this project is to document, evaluate and benchmark the strengths of the Rust programming language. This will be achieved by building a real-world full-stack TypeScript (back-end and front-end) application from scratch, and then reimplementing everything in Rust and WebAssembly (WASM). I am open-sourcing a project that I created in 2020 using the current (as of October 2022) technology and best practices, because I want the comparison to be scientifically fair. It will take some time to reimplement everything, so stay tuned! Star this repository if you like it and follow me on this huge endeavour.
- The original
TypeScriptrepository: endeavor-assistant-ts
- Rust makes most of the code base almost bug-free, with the exception of logic bugs (obviously, a code base can still contain logic bugs). 1
-
Rusttakes a "Data First" approach, making you take better decisions upfront while giving your IDE more information about your code (i.e. better integration with code completions) delivering incredible Developer Experience (DX) along the way.2 - There is no inheritance in
Rustby default. This is another way to avoid complex structures which lead to hard-to-catch bugs in runtime. If you need inheritance you can mimic this behavior by implementingTraits.3 -
Rust+WebAssemblyprovides faster, more secure, and predictable behavior (at compile-time) applications.4 - Better maintainable codebase in the medium or long term.5
- Front-end and back-end in
Rustkeep high-level abstractions with readable modern functional programming concepts comparable to or better thanTypeScript.6 - Smaller cross-platform WASM bundles (binaries + dependencies).7
- Super lightweight, secure alternative to Linux containers.8
- Dramatic less memory and CPU usage (environment friendly while saving money and time).9 10
- Faster deployment to production due to the much smaller size of the
WASMVMpackage.11 - First-class Tests, Documentation and Packaging (meaning less third-party dependencies and fragmentation) via Cargo and crates.io.12
- Best-in-class compiler messages with inline manuals integrated with your IDE of choice.13
Rust met all expectations, requiring minimal effort from those with experience in software engineering in other languages. Once you have learned the fundamentals of the Rust language, you will find the refactoring or reimplementing code is straightforward, thanks to the compiler messages.
Footnotes
-
Why is Memory Safety Without GC a Big Deal in RUST?, C++ Memory Bugs Prompt Microsoft to Eye Rust Instead. David Ramel07/18/2019. Google, Microsoft Take Refuge in Rust Language's Better Security. Robert Lemos, Contributing Writer, August 4, 2023. ↩
-
Data-first and data-last: a comparison. Javier Chávarri, May 10, 2019. ↩
-
Traits: Defining Shared Behavior. The Official Rust Programming Language Book. ↩
-
Introduction to WebAssembly on the Cloud. Fermyon Blog. ↩
-
placeholder Better maintainable codebase in the medium or long-term. ↩
-
placeholder Front-end and back-end in
Rustkeeps high level abstractions with readable modern functional programming concepts that are comparable or better thanTypeScript. ↩ -
Rust in WebAssembly. Fermyon Blog. ↩
-
Super lightweight, secure alternative to Linux containers. Nigel Poulton, 8 November, 2022 ↩
-
Sustainability with Rust. AWS Open Source Blog, 11 Feb, 2022. ↩
-
How we built Pingora, the proxy that connects Cloudflare to the Internet. ↩
-
It's time to rethink how we use virtualization in backends. Shuttle Blog, 21 October 2022 ↩
-
The Cargo Book. The Official Cargo Book. ↩
-
IDE Integration Using
rust-analyzer. The Official Rust Programming Language Book. ↩