Skip to content
Open
Show file tree
Hide file tree
Changes from 145 commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
d191aae
Copy internal docs from branch logatom-syntax
slerpyyy Jul 7, 2025
6f3001c
Sync notes from last meeting
slerpyyy Jul 21, 2025
a506c80
Add design document
slerpyyy Jul 21, 2025
98b6080
Expand design document
slerpyyy Jul 23, 2025
f74d2e0
Add more notes in design document
slerpyyy Jul 28, 2025
f260442
Merge with main
slerpyyy Jul 28, 2025
7a4e06e
Some parsing and desugaring for atomically syntax
slerpyyy Jul 29, 2025
a5d3988
Rework atomic call desugaring
slerpyyy Jul 29, 2025
329c879
More desugaring for atomic spec
slerpyyy Jul 29, 2025
64c892b
Explain new atomic call desugaring in design doc
slerpyyy Jul 29, 2025
4728dc5
Get atomic function calls into VIR
slerpyyy Aug 5, 2025
27a7279
Update design document
slerpyyy Aug 11, 2025
6a29aa5
More syntax and desugaring
slerpyyy Aug 13, 2025
28bc9e3
Merge with upstream/main
slerpyyy Aug 13, 2025
f9ac921
Add WIP helping example to internal docs
slerpyyy Aug 20, 2025
c6f4dd4
Add open_atomic_update macro
slerpyyy Aug 26, 2025
fa7d30d
Merge with upstream/main once more
slerpyyy Aug 26, 2025
2f260d1
WIP vir to sst lowering for open_atomic_update
slerpyyy Sep 1, 2025
c7b2982
Add example
slerpyyy Sep 1, 2025
32570a6
SST lowering should work now
slerpyyy Sep 1, 2025
d2fa989
Add example to tests
slerpyyy Sep 1, 2025
c4e4bf8
Fix macro expansion inside
slerpyyy Sep 1, 2025
595cb4f
A lot of progress on atomic calls
slerpyyy Sep 2, 2025
2e6b381
Some fixes, tests and updated documentation
slerpyyy Sep 3, 2025
6930ec3
Some fixes
slerpyyy Sep 8, 2025
529e940
Add invariant masks for atomic updates
slerpyyy Sep 13, 2025
433b19a
Merge with upstream/main
slerpyyy Sep 13, 2025
e671359
Fix mode checking for atomically blocks
slerpyyy Sep 13, 2025
f3fa6e1
Refactor SST generation and check for invalid update function use
slerpyyy Sep 21, 2025
e24e29a
Add resolves check to atomic updates
slerpyyy Sep 30, 2025
122bf46
Merge with upstream/main
slerpyyy Sep 30, 2025
61bf608
Rework function predicate encoding
slerpyyy Oct 6, 2025
bb908bf
Track upstream changes
slerpyyy Oct 6, 2025
a270d61
Ignore long running messages in tests
slerpyyy Oct 6, 2025
71f6fe1
Helping example mostly works
slerpyyy Oct 8, 2025
8330ed4
Show AUs resolve in helping example
slerpyyy Oct 9, 2025
061636a
Back from vacation, merging with main
slerpyyy Oct 27, 2025
70053f8
More ergonomic way to assert function predicate arguments
slerpyyy Oct 28, 2025
2bf1fc1
Helping proof almost complete
slerpyyy Oct 29, 2025
298af02
Complete proof for flag helping example
slerpyyy Oct 30, 2025
83032ed
Sketch out backup counter implementation
slerpyyy Oct 30, 2025
d4a7d3c
Work towards AU resources in private ensures
slerpyyy Nov 6, 2025
95cfd8a
AU resources in private post condition
slerpyyy Nov 12, 2025
859e5db
Some cleaning up
slerpyyy Nov 12, 2025
15d0a08
Merge with upstream/main
slerpyyy Nov 12, 2025
f876bad
Set all build and target directories
slerpyyy Nov 15, 2025
b6f1e0e
Add meeting notes
slerpyyy Nov 18, 2025
ea32594
Work on abort case for AUs
slerpyyy Nov 24, 2025
d9ee731
Disable some tests so I can merge
slerpyyy Nov 24, 2025
a324cfc
Merge with upstream/main
slerpyyy Nov 24, 2025
4ab1f54
Fix unit tests and check for atomic ops in open_atomic_update
slerpyyy Nov 24, 2025
936b397
Deduplicate invariant mask logic
slerpyyy Nov 25, 2025
a7c58a4
Refactor invariant mask sets for better diagnostics
slerpyyy Nov 25, 2025
6e47a21
Merge with upstream/main
slerpyyy Nov 25, 2025
89c1b55
Better error messages for atomic update invariant masks
slerpyyy Nov 26, 2025
c5a5284
Fixed peek/open atomic update macros
slerpyyy Dec 2, 2025
11ec37f
Merge with upstream/main
slerpyyy Dec 2, 2025
5bc9549
More flexible atomic specs and iris comparison
slerpyyy Dec 3, 2025
219531d
Add example to iris comparison
slerpyyy Dec 4, 2025
af95492
Add opens_invariants annotations and broadcast groups
slerpyyy Dec 4, 2025
4a19532
More docs and formatting fixes
slerpyyy Dec 5, 2025
04b31ce
Merge with upstream/main
slerpyyy Dec 15, 2025
440bab7
Add abort case to atomic function call (broken)
slerpyyy Dec 18, 2025
165e4e0
Deny early breaks and infinite loops in atomic calls
slerpyyy Dec 18, 2025
555a1d7
Disable all logatom tests for merge
slerpyyy Jan 2, 2026
b38c255
Merge with main
slerpyyy Jan 2, 2026
2413f42
Add yield mechanic to atomic updates
slerpyyy Jan 3, 2026
e458968
Add no_abort to atomic spec
slerpyyy Jan 3, 2026
3ab8981
Give users ghost access to AU in atomic call
slerpyyy Jan 5, 2026
529f56f
Use arrow syntax for ghost AU in atomic call
slerpyyy Jan 6, 2026
7f0d068
Fix borrow checking for atomic call
slerpyyy Jan 10, 2026
9e78354
Merge with main
slerpyyy Jan 10, 2026
225fa13
Replace yield and no_abort with a more general system
slerpyyy Jan 12, 2026
7ac2811
Check update control flow on break and continue
slerpyyy Jan 13, 2026
415bf25
Lots of cleaning up
slerpyyy Jan 13, 2026
0f1b84b
Better testing and minor fixes
slerpyyy Jan 14, 2026
a1d5cd8
Add loop labels to atomically blocks
slerpyyy Jan 15, 2026
659d9c5
Merge with main
slerpyyy Jan 21, 2026
7ad40d5
A tiny bit of cleaning up
slerpyyy Jan 28, 2026
dbdb000
Merge with main
slerpyyy Jan 28, 2026
f17bfe3
Remove redundant resolves check
slerpyyy Feb 3, 2026
46cc430
Rename logatom unit tests
slerpyyy Feb 3, 2026
b485d18
Merge with main
slerpyyy Feb 3, 2026
2b1f5b3
Cleaning up
slerpyyy Feb 7, 2026
a7e4dd4
Tiny refactor in vir lowering
slerpyyy Feb 7, 2026
e640b2d
Merge with main
slerpyyy Feb 7, 2026
11f2f99
Fix mask checking for atomic update
slerpyyy Feb 9, 2026
0db1b19
Merge upstream changes (part 1)
slerpyyy Feb 25, 2026
efdfb06
Merge upstream changes (part 2)
slerpyyy Feb 25, 2026
c91dd44
Merge upstream changes (part 3, slightly broken)
slerpyyy Feb 25, 2026
5e0ff9d
Merge upstream changes (part 4, still slightly broken)
slerpyyy Feb 25, 2026
8ad9bc3
Add syntax for list complement invariant masks
slerpyyy Feb 26, 2026
abb870e
Add unit test for escaping lifetimes
slerpyyy Mar 2, 2026
e0ecb82
Lifetime guard hack
slerpyyy Mar 2, 2026
396b108
Reimplement macro to use closure
slerpyyy Mar 2, 2026
abf7755
Merge with main
slerpyyy Mar 2, 2026
0373706
Add example atomic increment with direct encoding
slerpyyy Mar 3, 2026
8fc4a6b
Fix direct encoding proof
slerpyyy Mar 4, 2026
45094c6
Make abstraction for direct encoding less leaky
slerpyyy Mar 4, 2026
2f7d8c5
Revert to original open AU macro for now
slerpyyy Mar 4, 2026
9ca1188
Merge with main
slerpyyy Mar 4, 2026
d49ca5d
Fix AU variance
slerpyyy Mar 6, 2026
a4f0e92
Merge with main
slerpyyy Mar 9, 2026
b5ac0a0
add cuckoo case study
tjhance Mar 10, 2026
f0fcd25
fix a mistaken comment
tjhance Mar 10, 2026
c0cca62
Erase atomic call and spec properly when compiling
slerpyyy Mar 10, 2026
c5bacff
Expand logatom example
slerpyyy Mar 11, 2026
b19577b
Add return value to atomic increment
slerpyyy Mar 11, 2026
f5377a3
Generalize over namespace in logatom example
slerpyyy Mar 11, 2026
98c059d
Add explicit mask to logatom lib example
slerpyyy Mar 18, 2026
8cb57a7
Merge with main
slerpyyy Mar 18, 2026
ee686c2
Fix bug in vir lowering for function calls
slerpyyy Mar 20, 2026
48227d4
Add unsound example
slerpyyy Apr 1, 2026
7b89d71
Merge with main
slerpyyy Apr 10, 2026
2b2262c
Merge with main again
slerpyyy Apr 10, 2026
44dbb4b
Merge with main once more
slerpyyy Apr 14, 2026
52dc1f5
Fix fmt and clippy lint
slerpyyy Apr 14, 2026
825a38b
Some cleaning up
slerpyyy Apr 14, 2026
3c278ed
Merge with main
slerpyyy Apr 19, 2026
2f2dbc2
Add some documentation
slerpyyy Apr 21, 2026
40d9529
Merge with main
slerpyyy Apr 21, 2026
23a2a07
More documentation
slerpyyy Apr 22, 2026
77e4b73
Rename wrapper type `I` to `Commit`
slerpyyy Apr 22, 2026
12727a3
Remove skip_inst_collector attribute
slerpyyy Apr 23, 2026
34d9043
Remove view bijective axioms from atomic permission objects
slerpyyy Apr 23, 2026
c3943fc
Move AU pred args to SST lowering
slerpyyy Apr 23, 2026
62a4bdf
Fix pred args SST generation
slerpyyy Apr 24, 2026
2f1a026
Simplify SST using path! and fun! macros
slerpyyy Apr 24, 2026
7dee64c
Add `atomically loop` syntax
slerpyyy Apr 28, 2026
4135e18
Merge with main
slerpyyy Apr 28, 2026
bc4e9df
Factor out paths into helper functions
slerpyyy Apr 28, 2026
214e0ba
Add terribly unsound example
slerpyyy Apr 30, 2026
ed7a148
Manually implement `Send` and `Sync` for the `AtomicUpdate`
slerpyyy Apr 30, 2026
6c591d3
Move atomically block into call body
slerpyyy May 3, 2026
80ddcff
Merge with main
slerpyyy May 3, 2026
f379309
Merge with main again
slerpyyy May 3, 2026
342891e
Slightly more helpful panics in resolution inference
slerpyyy May 4, 2026
1206930
Merge with main
slerpyyy May 4, 2026
c3afc3b
Move pred args tuple construction to SST generation
slerpyyy May 4, 2026
a146be6
Merge with main
slerpyyy May 4, 2026
f584b68
Take pred arg type from function signature
slerpyyy May 5, 2026
4b9da9c
Merge with main
slerpyyy May 5, 2026
0a1c92b
Clean up diff a little
slerpyyy May 5, 2026
aa00384
Remove `rand` and re-enable example
slerpyyy May 6, 2026
bcf0913
Merge with main
slerpyyy May 6, 2026
571ffb1
Remove `AtomicCallInfo` type from VIR-AST
slerpyyy May 7, 2026
b185e40
Minor changes
slerpyyy May 7, 2026
ca7ec0b
Disallow prophecy-conditional atomic update ops
slerpyyy May 7, 2026
e91afbd
Merge with main
slerpyyy May 7, 2026
cfe6177
Simplify some VIR-AST exprs
slerpyyy May 7, 2026
e393dbe
Merge with main
slerpyyy May 13, 2026
654ff52
Fix formatting
slerpyyy May 13, 2026
6153393
Merge with main
slerpyyy May 17, 2026
4677c9a
fix line counts
tjhance May 22, 2026
c8b83c1
Merge changes from old branch
slerpyyy May 22, 2026
b974908
line count fixes
tjhance May 22, 2026
8ca805f
Format cuckoo example a little
slerpyyy May 22, 2026
8040425
Merge with main
slerpyyy May 22, 2026
991623e
Fix formatting in line counting utility
slerpyyy May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions dependencies/syn/src/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ use crate::token;
use crate::ty::ReturnType;
use crate::ty::Type;
use crate::verus::{
Assert, AssertForall, Assume, BigAnd, BigOr, ClosureArg, Decreases, Ensures, ExprFinal,
ExprGetField, ExprHas, ExprHasNot, ExprIs, ExprIsNot, ExprMatches, FnProofOptions, Invariant,
InvariantEnsures, InvariantExceptBreak, Requires, RevealHide, View,
Assert, AssertForall, Assume, AtomicallyBlock, BigAnd, BigOr, ClosureArg, Decreases, Ensures,
ExprFinal, ExprGetField, ExprHas, ExprHasNot, ExprIs, ExprIsNot, ExprMatches, FnProofOptions,
Invariant, InvariantEnsures, InvariantExceptBreak, Requires, RevealHide, View,
};
use proc_macro2::{Span, TokenStream};
#[cfg(feature = "printing")]
Expand Down Expand Up @@ -371,6 +371,7 @@ ast_struct! {
pub func: Box<Expr>,
pub paren_token: token::Paren,
pub args: Punctuated<Expr, Token![,]>,
pub atomically: Option<AtomicallyBlock>,
}
}

Expand Down Expand Up @@ -576,6 +577,7 @@ ast_struct! {
pub turbofish: Option<AngleBracketedGenericArguments>,
pub paren_token: token::Paren,
pub args: Punctuated<Expr, Token![,]>,
pub atomically: Option<AtomicallyBlock>,
}
}

Expand Down Expand Up @@ -1782,6 +1784,7 @@ pub(crate) mod parsing {
func: Box::new(e),
paren_token: parenthesized!(content in input),
args: content.parse_terminated(Expr::parse, Token![,])?,
atomically: input.parse()?,
});
} else if input.peek(Token![->]) {
let arrow_token: Token![->] = input.parse()?;
Expand Down Expand Up @@ -1838,7 +1841,9 @@ pub(crate) mod parsing {
turbofish,
paren_token: parenthesized!(content in input),
args: content.parse_terminated(Expr::parse, Token![,])?,
atomically: input.parse()?,
});

continue;
}
}
Expand Down Expand Up @@ -1893,6 +1898,7 @@ pub(crate) mod parsing {
func: Box::new(e),
paren_token: parenthesized!(content in input),
args: content.parse_terminated(Expr::parse, Token![,])?,
atomically: input.parse()?,
});
} else if input.peek(Token![.])
&& !input.peek(Token![..])
Expand Down Expand Up @@ -1928,6 +1934,7 @@ pub(crate) mod parsing {
turbofish,
paren_token: parenthesized!(content in input),
args: content.parse_terminated(Expr::parse, Token![,])?,
atomically: input.parse()?,
});
continue;
}
Expand Down Expand Up @@ -3447,14 +3454,14 @@ pub(crate) mod printing {
tokens.append_all(attrs.outer());
}

#[cfg(not(feature = "full"))]
pub(crate) fn outer_attrs_to_tokens(_attrs: &[Attribute], _tokens: &mut TokenStream) {}

#[cfg(feature = "full")]
fn inner_attrs_to_tokens(attrs: &[Attribute], tokens: &mut TokenStream) {
tokens.append_all(attrs.inner());
}

#[cfg(not(feature = "full"))]
pub(crate) fn outer_attrs_to_tokens(_attrs: &[Attribute], _tokens: &mut TokenStream) {}

pub(crate) fn print_subexpression(
expr: &Expr,
needs_group: bool,
Expand Down Expand Up @@ -3806,6 +3813,8 @@ pub(crate) mod printing {
e.paren_token.surround(tokens, |tokens| {
e.args.to_tokens(tokens);
});

e.atomically.to_tokens(tokens);
}

#[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
Expand Down Expand Up @@ -4143,6 +4152,7 @@ pub(crate) mod printing {
e.paren_token.surround(tokens, |tokens| {
e.args.to_tokens(tokens);
});
e.atomically.to_tokens(tokens);
}

#[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
Expand Down
138 changes: 138 additions & 0 deletions dependencies/syn/src/gen/clone.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading