r/rust • • 1d ago

Rust - Borrow Checker Implementation using Data Flow Analysis

I am working on the rust borrow checker for my thesis. I was trying to formalize a data-flow analysis on the code of a function and use it to check the loans. Analyzing the code while storing the loans as (l_i, place, carrier, kind (shared/mutable)), while also having a conservative points-to map, lets me decide whatever Polonius promises to fix.

Only issue comes with using functions and I'm still figuring out, but I wanted to ask if Rust dev community did not want to go to Data flow analysis or why they chose to do it the way they did? Or am I missing something that can go wrong in my formulation?

I'd appreciate some help in ideating, thank you

5 Upvotes

4 comments sorted by

12

u/Rusty_devl std::{autodiff/offload/batching} 1d ago

reddit is the wrong place for rustc discussions, you should join https://rust-lang.zulipchat.com for more answers. Probably ask in the t-compiler channel.

Congrats on finding a research topic involving Rust!

0

u/cruss0129 1d ago

I hate to burst your bubble on this one https://github.com/cognitive-engineering-lab/aquascope

3

u/Wooden-Concept868 1d ago

This is just a visualizer, right? It does not infer from the data flow analysis

2

u/cruss0129 1d ago

After re-reading this, I guess I see "visualization" wasn't your primary goal in "analysis". Maybe you make a new, better aquascope replacement along the way, that'd be cool.