[2022-02-03] Failing to write a JIT compiler for Z3 constraints in Rust for fun and profit! Part 1
Channel: dreselli
Date: 2022-02-11

Watch me live at https://twitch.tv/lukas_dresel !

Stream supercut from February, 3rd. 2022. We start work on our JIT compiler to quickly evaluate models against a set of constraints. We explore the related APIs & bindings we might use, dig into some of the concepts we'll need, and then get started on implementing the JIT using Rust's `inkwell` LLVM bindings! 

By the end of the stream we're able to JIT the first constraints (only very few operations supported yet, more to come in the next stream)

Unfortunately twice during the stream OBS crashed on me, and when I restarted it the microphone settings reset, so I apologize for the messed up audio when that happened.

00:00 - Stream Start
05:05 - Preparation: Discussing z3.rs rust bindings
19:49 - Expected API Mockup & Describing Problem Background (SymCC, Qsym, Z3)
48:02 - Analyzing Z3's AST structure
1:36:25 - Building AST graphs
2:46:27 - Getting used to Rust's inkwell bindings and LLVM in general
3:47:42 - Investigating non-multiple of 8-bit integers in LLVM
3:54:00 - Implementing JIT for numerical constant AST nodes
4:58:04 - Refactoring to start on function application AST nodes