Proof of concept readme
This commit is contained in:
@@ -1,2 +1,33 @@
|
||||
# memory-models
|
||||
|
||||
Memory models in C for researching static compiler analysis
|
||||
|
||||
Many people overhype the rust borrow checker, i'm going to prove how terrible it is by creating a better memory model.
|
||||
|
||||
## Current iteration
|
||||
|
||||
It's called `sc` (scope counting), think of it as a relative counter to the lifetime of a variable.
|
||||
|
||||
```rust
|
||||
{
|
||||
let x = Box::new(10); // sc = 0
|
||||
|
||||
// sc is 0, drop it
|
||||
}
|
||||
```
|
||||
|
||||
```rust
|
||||
let r; // sc = 0
|
||||
|
||||
{
|
||||
// sc of r = -1 (relative to current scope)
|
||||
|
||||
let x = Box::new(10); // sc = 0
|
||||
|
||||
r = &x; // sc of x = -(sc of r) aka 1
|
||||
|
||||
// sc is 1, don't drop it
|
||||
}
|
||||
|
||||
// sc is 0, drop it
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user