feat: Support Verus verification (#759)

Support for Verus verification. Also add a verus github workflow.

Signed-off-by: Jay Lorch <jaylorch@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Jay Lorch
2026-07-22 16:21:00 -07:00
committed by GitHub
parent f98865fc98
commit 4c183e931d
12 changed files with 621 additions and 25 deletions

View File

@@ -115,6 +115,10 @@ public class MemoryGrowthTests
if (i % LogEvery == 0)
{
// Collect transient managed garbage so the working-set delta reflects
// retained (leaked) memory rather than uncollected allocations. A real
// native leak from a missed Dispose() would survive GC and still be caught.
ForceFullGc();
process.Refresh();
var workingSet = process.WorkingSet64;
var managed = GC.GetTotalMemory(false);
@@ -228,6 +232,10 @@ public class MemoryGrowthTests
if (i % LogEvery == 0)
{
// Collect transient managed garbage so the working-set delta reflects
// retained (leaked) memory rather than uncollected allocations. A real
// native leak from a missed Dispose() would survive GC and still be caught.
ForceFullGc();
process.Refresh();
var workingSet = process.WorkingSet64;
var managed = GC.GetTotalMemory(false);

View File

@@ -159,7 +159,7 @@ checksum = "2ecb53484c9c167ba674026b656d8a27d7657a58e6066aa902bfb1a4aa00ae20"
dependencies = [
"clap",
"heck",
"indexmap",
"indexmap 2.14.0",
"log",
"proc-macro2",
"quote",
@@ -472,6 +472,12 @@ dependencies = [
"regex-syntax",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.14.5"
@@ -648,6 +654,16 @@ dependencies = [
"icu_properties",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]]
name = "indexmap"
version = "2.14.0"
@@ -1107,7 +1123,7 @@ dependencies = [
"globset",
"hashbrown 0.17.1",
"icu_casemap",
"indexmap",
"indexmap 2.14.0",
"ipnet",
"jsonschema",
"lazy_static",
@@ -1128,6 +1144,7 @@ dependencies = [
"thiserror",
"url",
"uuid",
"vstd",
]
[[package]]
@@ -1250,7 +1267,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"indexmap 2.14.0",
"itoa",
"ryu",
"serde",
@@ -1371,7 +1388,7 @@ version = "0.9.12+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863"
dependencies = [
"indexmap",
"indexmap 2.14.0",
"serde_core",
"serde_spanned",
"toml_datetime",
@@ -1472,12 +1489,76 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "verus_builtin"
version = "0.0.0-2026-05-17-0151"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cab9266bfb5cf45a080f425c560b0e0be2bf81194f0e80258990c49c1829d8b9"
[[package]]
name = "verus_builtin_macros"
version = "0.0.0-2026-07-12-0122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb60e3a141ababe618fbdb759f14aa8544f6346a98a44c1e3a7dbe20b1f2892"
dependencies = [
"proc-macro2",
"quote",
"syn",
"synstructure",
"verus_prettyplease",
"verus_syn",
]
[[package]]
name = "verus_prettyplease"
version = "0.0.0-2026-05-31-0205"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ffdc94c89109a67c59646f6b6e71b49de394020f45294247dd716470523245b"
dependencies = [
"proc-macro2",
"verus_syn",
]
[[package]]
name = "verus_state_machines_macros"
version = "0.0.0-2026-06-14-0213"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6704a9ce586a5027f87933d9a84817411c937804090a9585c28bf335ac37eefc"
dependencies = [
"indexmap 1.9.3",
"proc-macro2",
"quote",
"verus_syn",
]
[[package]]
name = "verus_syn"
version = "0.0.0-2026-05-31-0205"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "030b774330d5ec618691c2cd6fba8bbb13bd538f3884a1143450baec25749706"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "vsimd"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
[[package]]
name = "vstd"
version = "0.0.0-2026-07-12-0122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0a0d328e1d6382af99a65f71677cf4b9200ec24e09fcafa7b1a3af8c8f5111"
dependencies = [
"verus_builtin",
"verus_builtin_macros",
"verus_state_machines_macros",
]
[[package]]
name = "wasip2"
version = "1.0.4+wasi-0.2.12"

View File

@@ -350,6 +350,12 @@ dependencies = [
"regex-syntax",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.17.1"
@@ -488,6 +494,16 @@ dependencies = [
"icu_properties",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]]
name = "indexmap"
version = "2.14.0"
@@ -495,7 +511,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
dependencies = [
"equivalent",
"hashbrown",
"hashbrown 0.17.1",
"serde",
"serde_core",
]
@@ -927,7 +943,7 @@ dependencies = [
"ahash",
"fluent-uri",
"getrandom 0.3.4",
"hashbrown",
"hashbrown 0.17.1",
"itoa",
"micromap",
"parking_lot",
@@ -973,7 +989,7 @@ dependencies = [
"chrono-tz",
"data-encoding",
"globset",
"indexmap",
"indexmap 2.14.0",
"ipnet",
"jsonschema",
"lazy_static",
@@ -994,6 +1010,7 @@ dependencies = [
"thiserror",
"url",
"uuid",
"vstd",
]
[[package]]
@@ -1111,7 +1128,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"indexmap 2.14.0",
"itoa",
"ryu",
"serde",
@@ -1284,12 +1301,76 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "verus_builtin"
version = "0.0.0-2026-05-17-0151"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cab9266bfb5cf45a080f425c560b0e0be2bf81194f0e80258990c49c1829d8b9"
[[package]]
name = "verus_builtin_macros"
version = "0.0.0-2026-07-12-0122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb60e3a141ababe618fbdb759f14aa8544f6346a98a44c1e3a7dbe20b1f2892"
dependencies = [
"proc-macro2",
"quote",
"syn",
"synstructure",
"verus_prettyplease",
"verus_syn",
]
[[package]]
name = "verus_prettyplease"
version = "0.0.0-2026-05-31-0205"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ffdc94c89109a67c59646f6b6e71b49de394020f45294247dd716470523245b"
dependencies = [
"proc-macro2",
"verus_syn",
]
[[package]]
name = "verus_state_machines_macros"
version = "0.0.0-2026-06-14-0213"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6704a9ce586a5027f87933d9a84817411c937804090a9585c28bf335ac37eefc"
dependencies = [
"indexmap 1.9.3",
"proc-macro2",
"quote",
"verus_syn",
]
[[package]]
name = "verus_syn"
version = "0.0.0-2026-05-31-0205"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "030b774330d5ec618691c2cd6fba8bbb13bd538f3884a1143450baec25749706"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "vsimd"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
[[package]]
name = "vstd"
version = "0.0.0-2026-07-12-0122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0a0d328e1d6382af99a65f71677cf4b9200ec24e09fcafa7b1a3af8c8f5111"
dependencies = [
"verus_builtin",
"verus_builtin_macros",
"verus_state_machines_macros",
]
[[package]]
name = "walkdir"
version = "2.5.0"

View File

@@ -334,6 +334,12 @@ dependencies = [
"regex-syntax",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.17.1"
@@ -478,6 +484,16 @@ dependencies = [
"icu_properties",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]]
name = "indexmap"
version = "2.14.0"
@@ -485,7 +501,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
dependencies = [
"equivalent",
"hashbrown",
"hashbrown 0.17.1",
"serde",
"serde_core",
]
@@ -941,7 +957,7 @@ dependencies = [
"ahash",
"fluent-uri",
"getrandom 0.3.4",
"hashbrown",
"hashbrown 0.17.1",
"itoa",
"micromap",
"parking_lot",
@@ -987,7 +1003,7 @@ dependencies = [
"chrono-tz",
"data-encoding",
"globset",
"indexmap",
"indexmap 2.14.0",
"ipnet",
"jsonschema",
"lazy_static",
@@ -1008,6 +1024,7 @@ dependencies = [
"thiserror",
"url",
"uuid",
"vstd",
]
[[package]]
@@ -1108,7 +1125,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"indexmap 2.14.0",
"itoa",
"ryu",
"serde",
@@ -1271,12 +1288,76 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "verus_builtin"
version = "0.0.0-2026-05-17-0151"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cab9266bfb5cf45a080f425c560b0e0be2bf81194f0e80258990c49c1829d8b9"
[[package]]
name = "verus_builtin_macros"
version = "0.0.0-2026-07-12-0122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb60e3a141ababe618fbdb759f14aa8544f6346a98a44c1e3a7dbe20b1f2892"
dependencies = [
"proc-macro2",
"quote",
"syn",
"synstructure",
"verus_prettyplease",
"verus_syn",
]
[[package]]
name = "verus_prettyplease"
version = "0.0.0-2026-05-31-0205"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ffdc94c89109a67c59646f6b6e71b49de394020f45294247dd716470523245b"
dependencies = [
"proc-macro2",
"verus_syn",
]
[[package]]
name = "verus_state_machines_macros"
version = "0.0.0-2026-06-14-0213"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6704a9ce586a5027f87933d9a84817411c937804090a9585c28bf335ac37eefc"
dependencies = [
"indexmap 1.9.3",
"proc-macro2",
"quote",
"verus_syn",
]
[[package]]
name = "verus_syn"
version = "0.0.0-2026-05-31-0205"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "030b774330d5ec618691c2cd6fba8bbb13bd538f3884a1143450baec25749706"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "vsimd"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
[[package]]
name = "vstd"
version = "0.0.0-2026-07-12-0122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0a0d328e1d6382af99a65f71677cf4b9200ec24e09fcafa7b1a3af8c8f5111"
dependencies = [
"verus_builtin",
"verus_builtin_macros",
"verus_state_machines_macros",
]
[[package]]
name = "wasip2"
version = "1.0.4+wasi-0.2.12"

View File

@@ -501,6 +501,16 @@ dependencies = [
"icu_properties",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]]
name = "indexmap"
version = "2.14.0"
@@ -1013,7 +1023,7 @@ dependencies = [
"chrono-tz",
"data-encoding",
"globset",
"indexmap",
"indexmap 2.14.0",
"ipnet",
"jsonschema",
"lazy_static",
@@ -1033,6 +1043,7 @@ dependencies = [
"thiserror",
"url",
"uuid",
"vstd",
]
[[package]]
@@ -1156,7 +1167,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"indexmap 2.14.0",
"itoa",
"ryu",
"serde",
@@ -1331,12 +1342,70 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "verus_builtin"
version = "0.0.0-2026-05-17-0151"
source = "git+https://github.com/verus-lang/verus.git#60c8383d70074f6c00d754b4fb47438995fcb79a"
[[package]]
name = "verus_builtin_macros"
version = "0.0.0-2026-06-14-0213"
source = "git+https://github.com/verus-lang/verus.git#60c8383d70074f6c00d754b4fb47438995fcb79a"
dependencies = [
"proc-macro2",
"quote",
"syn",
"synstructure",
"verus_prettyplease",
"verus_syn",
]
[[package]]
name = "verus_prettyplease"
version = "0.0.0-2026-05-31-0205"
source = "git+https://github.com/verus-lang/verus.git#60c8383d70074f6c00d754b4fb47438995fcb79a"
dependencies = [
"proc-macro2",
"verus_syn",
]
[[package]]
name = "verus_state_machines_macros"
version = "0.0.0-2026-06-14-0213"
source = "git+https://github.com/verus-lang/verus.git#60c8383d70074f6c00d754b4fb47438995fcb79a"
dependencies = [
"indexmap 1.9.3",
"proc-macro2",
"quote",
"verus_syn",
]
[[package]]
name = "verus_syn"
version = "0.0.0-2026-05-31-0205"
source = "git+https://github.com/verus-lang/verus.git#60c8383d70074f6c00d754b4fb47438995fcb79a"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "vsimd"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
[[package]]
name = "vstd"
version = "0.0.0-2026-06-14-0213"
source = "git+https://github.com/verus-lang/verus.git#60c8383d70074f6c00d754b4fb47438995fcb79a"
dependencies = [
"verus_builtin",
"verus_builtin_macros",
"verus_state_machines_macros",
]
[[package]]
name = "wasip2"
version = "1.0.4+wasi-0.2.12"

View File

@@ -366,6 +366,12 @@ dependencies = [
"regex-syntax",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.17.1"
@@ -504,6 +510,16 @@ dependencies = [
"icu_properties",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]]
name = "indexmap"
version = "2.14.0"
@@ -511,7 +527,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
dependencies = [
"equivalent",
"hashbrown",
"hashbrown 0.17.1",
"serde",
"serde_core",
]
@@ -926,7 +942,7 @@ dependencies = [
"ahash",
"fluent-uri",
"getrandom 0.3.4",
"hashbrown",
"hashbrown 0.17.1",
"itoa",
"micromap",
"parking_lot",
@@ -972,7 +988,7 @@ dependencies = [
"chrono-tz",
"data-encoding",
"globset",
"indexmap",
"indexmap 2.14.0",
"ipnet",
"jsonschema",
"lazy_static",
@@ -992,6 +1008,7 @@ dependencies = [
"thiserror",
"url",
"uuid",
"vstd",
]
[[package]]
@@ -1103,7 +1120,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"indexmap 2.14.0",
"itoa",
"ryu",
"serde",
@@ -1262,12 +1279,76 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "verus_builtin"
version = "0.0.0-2026-05-17-0151"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cab9266bfb5cf45a080f425c560b0e0be2bf81194f0e80258990c49c1829d8b9"
[[package]]
name = "verus_builtin_macros"
version = "0.0.0-2026-07-12-0122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb60e3a141ababe618fbdb759f14aa8544f6346a98a44c1e3a7dbe20b1f2892"
dependencies = [
"proc-macro2",
"quote",
"syn",
"synstructure",
"verus_prettyplease",
"verus_syn",
]
[[package]]
name = "verus_prettyplease"
version = "0.0.0-2026-05-31-0205"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ffdc94c89109a67c59646f6b6e71b49de394020f45294247dd716470523245b"
dependencies = [
"proc-macro2",
"verus_syn",
]
[[package]]
name = "verus_state_machines_macros"
version = "0.0.0-2026-06-14-0213"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6704a9ce586a5027f87933d9a84817411c937804090a9585c28bf335ac37eefc"
dependencies = [
"indexmap 1.9.3",
"proc-macro2",
"quote",
"verus_syn",
]
[[package]]
name = "verus_syn"
version = "0.0.0-2026-05-31-0205"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "030b774330d5ec618691c2cd6fba8bbb13bd538f3884a1143450baec25749706"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "vsimd"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
[[package]]
name = "vstd"
version = "0.0.0-2026-07-12-0122"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0a0d328e1d6382af99a65f71677cf4b9200ec24e09fcafa7b1a3af8c8f5111"
dependencies = [
"verus_builtin",
"verus_builtin_macros",
"verus_state_machines_macros",
]
[[package]]
name = "walkdir"
version = "2.5.0"