Tag: Software Development
-

Building Your Own Programming Language with LLVM, Rust (Part 3): Optimization & Compilation
So far, we have contributed quite a bit of code to this Rust implementation of Kaleidoscope, but have yet to see ourselves compile and run a program in action. All we have so far is a hand-made parser and AST that can then emit some LLVM IR. Nearly one thousand lines of Rust deep, one…
-
Building Your Own Programming Language with LLVM, Rust (Part 2): IR Generation
With the frontend work out of the way, we turn our attention to a new challenge, transforming this funny looking tree structure into something that a processor can understand (using LLVM of course, duh). Although LLVM does not provide any Rust libraries, it does provide header files to invoke in C/C++. Rust was designed to…
-

Building Your Own Programming Language with LLVM–Learning about Compiler Design & LLVM with a Rust Rewrite of the Official LLVM Tutorial (Part 1): Lexer/Parser
Code for this series of posts is found at https://github.com/acolite-d/llvm-tutorial-in-rust-using-inkwell. Recently, during a binge of YouTube and coffee, I stumbled upon a talk by Johnathan Blow, titled “Preventing the Collapse of Civilization.” I’ve known about John through his Twitch streams and one of his earlier video games, Braid, and also his inclination for spouting some…
-
Writing a GNU/Linux x86_64 Debugger in Rust (Part 3): Implementing Breakpoints with DWARF, the Gimli Crate, and Traps
A continuation from the previous post, on writing a debugger in Rust for x86_64 GNU/Linux… Going back to the first part in this series of blog post, we implemented a base set of 7 commands (including quit and help) that showcased very trivial utilities available to a debugger. The great thing about those few commands…
-
Writing a GNU/Linux x86_64 Debugger in Rust (Part 2): A Rust-ic Refactoring
A continuation from the previous post, on writing a debugger in Rust for x86_64 GNU/Linux… So far, we have been working inside the main.rs file supplied to us when creating a Rust project with cargo new. We are already creeping up on 250 lines in this single file, and to add to this, not all…
-
Forays into Systems Programming: “Who Watches the Watchmen?”–Writing a GNU/Linux x86_64 Debugger with Rust and the Nix Crate
What does it mean to be robust? If a given piece of code cannot handle an edge case or correctly handle it’s memory or other resources, or resolves to terminate itself due to behavior deemed dangerous by the host, or by the it’s own decisions, then what may be said about that code other than…
-
4th Wall Programming – A Cursory Look at Compile-Time Metaprogramming and Rust Declarative Macros
It is not a rare thing for a class in academia to not cover the full contents of the literature it aims to cover. Often times, especially in my primary education, I eagerly awaited for that one chapter about World War II tucked away in the back of my world history book, or that one…
-
Learning to Code Under Pressure – Why OOP Makes the Difference in Coding Interviews
Finding a tech job at the start of 2023 is difficult, and filled with obstacles. Many of these still to this day, to my frustration, seem to be arbitrarily imposed roadblocks in getting a job in an industry that is already saturated with incredible number of opposing languages, frameworks, tools and an equally large amount…