Repository: huff-language/huff-rs
Pull request #298 (2023-10-01 15:31:42)

staging branch
## Overview
Staging release target

## Features
- https://github.com/huff-language/huff-rs/pull/289 by @gzanitti
- https://github.com/huff-language/huff-rs/pull/294 by @chengxuncc
- https://github.com/huff-language/huff-rs/pull/293 by @PraneshASP

## Fixes
- https://github.com/huff-language/huff-rs/pull/297 by @shafu0x



Patch:
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index aa3ee06..72a7581 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -31,7 +31,7 @@ jobs:
       - name: Install toolchain
         uses: actions-rs/toolchain@v1
         with:
-          toolchain: nightly
+          toolchain: stable
           profile: minimal
           components: rustfmt, clippy
           override: true
@@ -39,7 +39,7 @@ jobs:
         with:
           cache-on-failure: true
       - name: cargo doc
-        run: cargo +nightly doc --all-features --no-deps
+        run: cargo doc --all-features --no-deps
 
   cargo-clippy:
     runs-on: ubuntu-latest
@@ -49,7 +49,7 @@ jobs:
       - name: Install toolchain
         uses: actions-rs/toolchain@v1
         with:
-          toolchain: nightly
+          toolchain: stable
           profile: minimal
           components: rustfmt, clippy
           override: true
@@ -57,7 +57,7 @@ jobs:
         with:
           cache-on-failure: false
       - name: cargo clippy
-        run: cargo +nightly clippy --all --all-features -- -D warnings
+        run: cargo clippy --all --all-features -- -D warnings
 
   tests:
     runs-on: ubuntu-latest
diff --git a/Cargo.lock b/Cargo.lock
index d42d6fe..f2b7cda 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -15,18 +15,147 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.0.2"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
-name = "android-tzdata"
-version = "0.1.1"
+name = "alloy-rlp"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+checksum = "cc0fac0fc16baf1f63f78b47c3d24718f3619b0714076f6a02957d808d52cbef"
+dependencies = [
+ "arrayvec",
+ "bytes",
+ "smol_str",
+]
+
+[[package]]
+name = "ark-ff"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6"
+dependencies = [
+ "ark-ff-asm 0.3.0",
+ "ark-ff-macros 0.3.0",
+ "ark-serialize 0.3.0",
+ "ark-std 0.3.0",
+ "derivative",
+ "num-bigint",
+ "num-traits",
+ "paste",
+ "rustc_version 0.3.3",
+ "zeroize",
+]
+
+[[package]]
+name = "ark-ff"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba"
+dependencies = [
+ "ark-ff-asm 0.4.2",
+ "ark-ff-macros 0.4.2",
+ "ark-serialize 0.4.2",
+ "ark-std 0.4.0",
+ "derivative",
+ "digest 0.10.7",
+ "itertools",
+ "num-bigint",
+ "num-traits",
+ "paste",
+ "rustc_version 0.4.0",
+ "zeroize",
+]
+
+[[package]]
+name = "ark-ff-asm"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44"
+dependencies = [
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "ark-ff-asm"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348"
+dependencies = [
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "ark-ff-macros"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20"
+dependencies = [
+ "num-bigint",
+ "num-traits",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "ark-ff-macros"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565"
+dependencies = [
+ "num-bigint",
+ "num-traits",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "ark-serialize"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671"
+dependencies = [
+ "ark-std 0.3.0",
+ "digest 0.9.0",
+]
+
+[[package]]
+name = "ark-serialize"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5"
+dependencies = [
+ "ark-std 0.4.0",
+ "digest 0.10.7",
+ "num-bigint",
+]
+
+[[package]]
+name = "ark-std"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c"
+dependencies = [
+ "num-traits",
+ "rand",
+]
+
+[[package]]
+name = "ark-std"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185"
+dependencies = [
+ "num-traits",
+ "rand",
+]
 
 [[package]]
 name = "arrayvec"
@@ -40,7 +169,7 @@ version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
 dependencies = [
- "hermit-abi 0.1.19",
+ "hermit-abi",
  "libc",
  "winapi",
 ]
@@ -110,9 +239,9 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.13.0"
+version = "3.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
 
 [[package]]
 name = "byte-slice-cast"
@@ -128,9 +257,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
 
 [[package]]
 name = "bytes"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
 dependencies = [
  "serde",
 ]
@@ -143,9 +272,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
 
 [[package]]
 name = "cc"
-version = "1.0.79"
+version = "1.0.83"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+dependencies = [
+ "libc",
+]
 
 [[package]]
 name = "cfg-if"
@@ -161,11 +293,10 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.26"
+version = "0.4.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
+checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
 dependencies = [
- "android-tzdata",
  "num-traits",
 ]
 
@@ -227,11 +358,10 @@ checksum = "b9e769b5c8c8283982a987c6e948e540254f1058d5a74b8794914d4ef5fc2a24"
 
 [[package]]
 name = "codemap-diagnostic"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ba0e6be8e2774e750f9e90625b490249715bece38a12f9d09e82477caba5028"
+checksum = "cc20770be05b566a963bf91505e60412c4a2d016d1ef95c5512823bb085a8122"
 dependencies = [
- "atty",
  "codemap",
  "termcolor",
 ]
@@ -250,9 +380,9 @@ dependencies = [
 
 [[package]]
 name = "const-oid"
-version = "0.9.3"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6340df57935414636969091153f35f68d9f00bbc8fb4a9c6054706c213e6c6bc"
+checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
 
 [[package]]
 name = "convert_case"
@@ -305,16 +435,6 @@ dependencies = [
  "itertools",
 ]
 
-[[package]]
-name = "crossbeam-channel"
-version = "0.5.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
-dependencies = [
- "cfg-if 1.0.0",
- "crossbeam-utils",
-]
-
 [[package]]
 name = "crossbeam-deque"
 version = "0.8.3"
@@ -393,9 +513,9 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124"
 dependencies = [
  "generic-array",
  "rand_core",
@@ -446,14 +566,25 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.7.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
 dependencies = [
  "const-oid",
  "zeroize",
 ]
 
+[[package]]
+name = "derivative"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
 [[package]]
 name = "derive_more"
 version = "0.99.17"
@@ -463,10 +594,19 @@ dependencies = [
  "convert_case",
  "proc-macro2",
  "quote",
- "rustc_version",
+ "rustc_version 0.4.0",
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "digest"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+dependencies = [
+ "generic-array",
+]
+
 [[package]]
 name = "digest"
 version = "0.10.7"
@@ -493,12 +633,12 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.7"
+version = "0.16.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428"
+checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
 dependencies = [
- "der 0.7.7",
- "digest",
+ "der 0.7.8",
+ "digest 0.10.7",
  "elliptic-curve 0.13.5",
  "rfc6979 0.4.0",
  "signature 2.1.0",
@@ -506,9 +646,9 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.8.1"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
 
 [[package]]
 name = "elliptic-curve"
@@ -519,7 +659,7 @@ dependencies = [
  "base16ct 0.1.1",
  "crypto-bigint 0.4.9",
  "der 0.6.1",
- "digest",
+ "digest 0.10.7",
  "ff 0.12.1",
  "generic-array",
  "group 0.12.1",
@@ -536,33 +676,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
 dependencies = [
  "base16ct 0.2.0",
- "crypto-bigint 0.5.2",
- "digest",
+ "crypto-bigint 0.5.3",
+ "digest 0.10.7",
  "ff 0.13.0",
  "generic-array",
  "group 0.13.0",
  "rand_core",
- "sec1 0.7.2",
+ "sec1 0.7.3",
  "subtle",
  "zeroize",
 ]
 
 [[package]]
 name = "enumn"
-version = "0.1.10"
+version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9838a970f5de399d3070ae1739e131986b2f5dcc223c7423ca0927e3a878522"
+checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.23",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "equivalent"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "ethabi"
@@ -638,6 +778,17 @@ dependencies = [
  "unicode-xid",
 ]
 
+[[package]]
+name = "fastrlp"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418"
+dependencies = [
+ "arrayvec",
+ "auto_impl",
+ "bytes",
+]
+
 [[package]]
 name = "ff"
 version = "0.12.1"
@@ -764,12 +915,6 @@ dependencies = [
  "libc",
 ]
 
-[[package]]
-name = "hermit-abi"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
-
 [[package]]
 name = "hex"
 version = "0.4.3"
@@ -788,7 +933,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest",
+ "digest 0.10.7",
 ]
 
 [[package]]
@@ -1000,9 +1145,9 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.8"
+version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
 
 [[package]]
 name = "js-sys"
@@ -1033,7 +1178,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
 dependencies = [
  "cfg-if 1.0.0",
- "ecdsa 0.16.7",
+ "ecdsa 0.16.8",
  "elliptic-curve 0.13.5",
  "sha2",
 ]
@@ -1058,9 +1203,15 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.147"
+version = "0.2.148"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
+
+[[package]]
+name = "libm"
+version = "0.2.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
 
 [[package]]
 name = "lock_api"
@@ -1074,9 +1225,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.19"
+version = "0.4.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
 
 [[package]]
 name = "maplit"
@@ -1095,9 +1246,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.5.0"
+version = "2.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
 
 [[package]]
 name = "memoffset"
@@ -1132,9 +1283,9 @@ dependencies = [
 
 [[package]]
 name = "num"
-version = "0.4.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
+checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
 dependencies = [
  "num-bigint",
  "num-complex",
@@ -1146,9 +1297,9 @@ dependencies = [
 
 [[package]]
 name = "num-bigint"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
 dependencies = [
  "autocfg",
  "num-integer",
@@ -1157,9 +1308,9 @@ dependencies = [
 
 [[package]]
 name = "num-complex"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d"
+checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
 dependencies = [
  "num-traits",
 ]
@@ -1199,21 +1350,12 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.15"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
 dependencies = [
  "autocfg",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
-dependencies = [
- "hermit-abi 0.3.2",
- "libc",
+ "libm",
 ]
 
 [[package]]
@@ -1267,9 +1409,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
 
 [[package]]
 name = "parity-scale-codec"
-version = "3.6.3"
+version = "3.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "756d439303e94fae44f288ba881ad29670c65b0c4b0e05674ca81061bb65f2c5"
+checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb"
 dependencies = [
  "arrayvec",
  "bitvec",
@@ -1281,9 +1423,9 @@ dependencies = [
 
 [[package]]
 name = "parity-scale-codec-derive"
-version = "3.6.3"
+version = "3.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d884d78fcf214d70b1e239fcd1c6e5e95aa3be1881918da2e488cc946c7a476"
+checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2",
@@ -1314,12 +1456,29 @@ dependencies = [
  "windows-targets",
 ]
 
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
 [[package]]
 name = "pathdiff"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
 
+[[package]]
+name = "pest"
+version = "2.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33"
+dependencies = [
+ "memchr",
+ "thiserror",
+ "ucd-trie",
+]
+
 [[package]]
 name = "phf"
 version = "0.10.1"
@@ -1385,7 +1544,7 @@ dependencies = [
  "phf_shared 0.11.2",
  "proc-macro2",
  "quote",
- "syn 2.0.23",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -1408,9 +1567,9 @@ dependencies = [
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.10"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
 
 [[package]]
 name = "pkcs8"
@@ -1512,18 +1671,35 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.63"
+version = "1.0.67"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
 dependencies = [
  "unicode-ident",
 ]
 
+[[package]]
+name = "proptest"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65"
+dependencies = [
+ "bitflags",
+ "byteorder",
+ "lazy_static",
+ "num-traits",
+ "rand",
+ "rand_chacha",
+ "rand_xorshift",
+ "regex-syntax 0.6.29",
+ "unarray",
+]
+
 [[package]]
 name = "quote"
-version = "1.0.29"
+version = "1.0.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
 dependencies = [
  "proc-macro2",
 ]
@@ -1564,11 +1740,20 @@ dependencies = [
  "getrandom",
 ]
 
+[[package]]
+name = "rand_xorshift"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
+dependencies = [
+ "rand_core",
+]
+
 [[package]]
 name = "rayon"
-version = "1.7.0"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
 dependencies = [
  "either",
  "rayon-core",
@@ -1576,14 +1761,12 @@ dependencies = [
 
 [[package]]
 name = "rayon-core"
-version = "1.11.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
 dependencies = [
- "crossbeam-channel",
  "crossbeam-deque",
  "crossbeam-utils",
- "num_cpus",
 ]
 
 [[package]]
@@ -1603,14 +1786,14 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.9.1"
+version = "1.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-automata 0.3.2",
- "regex-syntax 0.7.3",
+ "regex-automata 0.3.8",
+ "regex-syntax 0.7.5",
 ]
 
 [[package]]
@@ -1624,13 +1807,13 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.3.2"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
+checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.7.3",
+ "regex-syntax 0.7.5",
 ]
 
 [[package]]
@@ -1641,9 +1824,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
 name = "regex-syntax"
-version = "0.7.3"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
 
 [[package]]
 name = "revm"
@@ -1733,7 +1916,7 @@ version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f"
 dependencies = [
- "digest",
+ "digest 0.10.7",
 ]
 
 [[package]]
@@ -1759,23 +1942,32 @@ dependencies = [
 
 [[package]]
 name = "ruint"
-version = "1.8.0"
+version = "1.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d470e29e933dac4101180fd6574971892315c414cf2961a192729089687cc9b"
+checksum = "95294d6e3a6192f3aabf91c38f56505a625aa495533442744185a36d75a790c4"
 dependencies = [
- "derive_more",
+ "alloy-rlp",
+ "ark-ff 0.3.0",
+ "ark-ff 0.4.2",
+ "bytes",
+ "fastrlp",
+ "num-bigint",
+ "parity-scale-codec",
  "primitive-types",
+ "proptest",
+ "rand",
  "rlp",
  "ruint-macro",
- "rustc_version",
- "thiserror",
+ "serde",
+ "valuable",
+ "zeroize",
 ]
 
 [[package]]
 name = "ruint-macro"
-version = "1.0.2"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62cc5760263ea229d367e7dff3c0cbf09e4797a125bd87059a6c095804f3b2d1"
+checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09"
 
 [[package]]
 name = "rustc-hex"
@@ -1783,26 +1975,35 @@ version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6"
 
+[[package]]
+name = "rustc_version"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
+dependencies = [
+ "semver 0.11.0",
+]
+
 [[package]]
 name = "rustc_version"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
 dependencies = [
- "semver",
+ "semver 1.0.19",
 ]
 
 [[package]]
 name = "rustversion"
-version = "1.0.13"
+version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "ryu"
-version = "1.0.14"
+version = "1.0.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
 
 [[package]]
 name = "same-file"
@@ -1839,9 +2040,9 @@ dependencies = [
 
 [[package]]
 name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "sec1"
@@ -1859,12 +2060,12 @@ dependencies = [
 
 [[package]]
 name = "sec1"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e"
+checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
 dependencies = [
  "base16ct 0.2.0",
- "der 0.7.7",
+ "der 0.7.8",
  "generic-array",
  "subtle",
  "zeroize",
@@ -1890,15 +2091,33 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.17"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
+dependencies = [
+ "semver-parser",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
+
+[[package]]
+name = "semver-parser"
+version = "0.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
+checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
+dependencies = [
+ "pest",
+]
 
 [[package]]
 name = "serde"
-version = "1.0.167"
+version = "1.0.188"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7daf513456463b42aa1d94cff7e0c24d682b429f020b9afa4f5ba5c40a22b237"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
 dependencies = [
  "serde_derive",
 ]
@@ -1926,20 +2145,20 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.167"
+version = "1.0.188"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b69b106b68bc8054f0e974e70d19984040f8a5cf9215ca82626ea4853f82c4b9"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.23",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.100"
+version = "1.0.107"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
 dependencies = [
  "itoa",
  "ryu",
@@ -1954,7 +2173,7 @@ checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
 dependencies = [
  "cfg-if 1.0.0",
  "cpufeatures",
- "digest",
+ "digest 0.10.7",
 ]
 
 [[package]]
@@ -1963,7 +2182,7 @@ version = "0.10.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
 dependencies = [
- "digest",
+ "digest 0.10.7",
  "keccak",
 ]
 
@@ -1978,9 +2197,9 @@ dependencies = [
 
 [[package]]
 name = "signal-hook"
-version = "0.3.15"
+version = "0.3.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
 dependencies = [
  "libc",
  "signal-hook-registry",
@@ -2012,7 +2231,7 @@ version = "1.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
 dependencies = [
- "digest",
+ "digest 0.10.7",
  "rand_core",
 ]
 
@@ -2022,21 +2241,30 @@ version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
 dependencies = [
- "digest",
+ "digest 0.10.7",
  "rand_core",
 ]
 
 [[package]]
 name = "siphasher"
-version = "0.3.10"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
 
 [[package]]
 name = "smallvec"
-version = "1.11.0"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
+
+[[package]]
+name = "smol_str"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
+checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "spin"
@@ -2131,9 +2359,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.23"
+version = "2.0.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2148,9 +2376,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
 
 [[package]]
 name = "termcolor"
-version = "1.2.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64"
 dependencies = [
  "winapi-util",
 ]
@@ -2172,22 +2400,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
 
 [[package]]
 name = "thiserror"
-version = "1.0.43"
+version = "1.0.48"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42"
+checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.43"
+version = "1.0.48"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f"
+checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.23",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -2236,9 +2464,9 @@ checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
 
 [[package]]
 name = "toml_edit"
-version = "0.19.12"
+version = "0.19.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
 dependencies = [
  "indexmap 2.0.0",
  "toml_datetime",
@@ -2265,7 +2493,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.23",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -2332,9 +2560,15 @@ dependencies = [
 
 [[package]]
 name = "typenum"
-version = "1.16.0"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
 
 [[package]]
 name = "uint"
@@ -2348,17 +2582,23 @@ dependencies = [
  "static_assertions",
 ]
 
+[[package]]
+name = "unarray"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"
+
 [[package]]
 name = "unicode-ident"
-version = "1.0.10"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.10"
+version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 
 [[package]]
 name = "unicode-xid"
@@ -2368,9 +2608,9 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
 
 [[package]]
 name = "uuid"
-version = "1.4.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be"
+checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
 dependencies = [
  "getrandom",
 ]
@@ -2389,9 +2629,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
 [[package]]
 name = "walkdir"
-version = "2.3.3"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
 dependencies = [
  "same-file",
  "winapi-util",
@@ -2424,7 +2664,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.23",
+ "syn 2.0.37",
  "wasm-bindgen-shared",
 ]
 
@@ -2446,7 +2686,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.23",
+ "syn 2.0.37",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -2485,9 +2725,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
 dependencies = [
  "winapi",
 ]
@@ -2509,9 +2749,9 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.48.1"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
 dependencies = [
  "windows_aarch64_gnullvm",
  "windows_aarch64_msvc",
@@ -2524,51 +2764,51 @@ dependencies = [
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "winnow"
-version = "0.4.9"
+version = "0.5.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81a2094c43cc94775293eaa0e499fbc30048a6d824ac82c0351a8c0bf9112529"
+checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc"
 dependencies = [
  "memchr",
 ]
@@ -2593,3 +2833,17 @@ name = "zeroize"
 version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
+dependencies = [
+ "zeroize_derive",
+]
+
+[[package]]
+name = "zeroize_derive"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
diff --git a/huff_cli/src/huffc.rs b/huff_cli/src/huffc.rs
index f0605bc..f2267f7 100644
--- a/huff_cli/src/huffc.rs
+++ b/huff_cli/src/huffc.rs
@@ -151,7 +151,7 @@ fn main() {
     if cli.path.is_none() {
         // Print help and exit
         app.print_help().unwrap();
-        return
+        return;
     }
 
     // Create compiler from the Huff Args
@@ -303,7 +303,7 @@ fn main() {
                 std::process::exit(1);
             }
         }
-        return
+        return;
     }
 
     if let Some(TestCommands::Test { format, match_ }) = cli.test {
@@ -332,7 +332,7 @@ fn main() {
                 std::process::exit(1);
             }
         }
-        return
+        return;
     }
 
     // Create compiling spinner
diff --git a/huff_codegen/src/irgen/arg_calls.rs b/huff_codegen/src/irgen/arg_calls.rs
index 09e8162..d90877f 100644
--- a/huff_codegen/src/irgen/arg_calls.rs
+++ b/huff_codegen/src/irgen/arg_calls.rs
@@ -90,7 +90,7 @@ pub fn bubble_arg_call(
                                 mis,
                                 jump_table,
                             )
-                        }
+                        };
                     }
                     MacroArg::Ident(iden) => {
                         tracing::debug!(target: "codegen", "Found MacroArg::Ident IN \"{}\" Macro Invocation: \"{}\"!", macro_invoc.1.macro_name, iden);
@@ -124,7 +124,7 @@ pub fn bubble_arg_call(
                                         kind: CodegenErrorKind::StoragePointersNotDerived,
                                         span: AstSpan(vec![]),
                                         token: None,
-                                    })
+                                    });
                                 }
                             };
                             *offset += push_bytes.len() / 2;
diff --git a/huff_codegen/src/irgen/constants.rs b/huff_codegen/src/irgen/constants.rs
index b9706bd..90211f2 100644
--- a/huff_codegen/src/irgen/constants.rs
+++ b/huff_codegen/src/irgen/constants.rs
@@ -23,7 +23,7 @@ pub fn constant_gen(
             kind: CodegenErrorKind::MissingConstantDefinition(name.to_string()),
             span: ir_byte_span.clone(),
             token: None,
-        })
+        });
     };
 
     // Generate bytecode for the constant
@@ -40,7 +40,7 @@ pub fn constant_gen(
                 kind: CodegenErrorKind::StoragePointersNotDerived,
                 span: constant.span.clone(),
                 token: None,
-            })
+            });
         }
     };
 
diff --git a/huff_codegen/src/irgen/statements.rs b/huff_codegen/src/irgen/statements.rs
index 9668820..c765c16 100644
--- a/huff_codegen/src/irgen/statements.rs
+++ b/huff_codegen/src/irgen/statements.rs
@@ -38,7 +38,7 @@ pub fn statement_gen<'a>(
                     kind: CodegenErrorKind::InvalidMacroInvocation(mi.macro_name.clone()),
                     span: mi.span.clone(),
                     token: None,
-                })
+                });
             };
 
             tracing::info!(target: "codegen", "FOUND INNER MACRO: {}", ir_macro.name);
@@ -50,7 +50,7 @@ pub fn statement_gen<'a>(
                     kind: CodegenErrorKind::TestInvocation(ir_macro.name.clone()),
                     span: ir_macro.span.clone(),
                     token: None,
-                })
+                });
             }
 
             // If invoked macro is a function (outlined), insert a jump to the function's code and a
@@ -114,7 +114,7 @@ pub fn statement_gen<'a>(
                             "FAILED TO RECURSE INTO MACRO \"{}\"",
                             ir_macro.name
                         );
-                        return Err(e)
+                        return Err(e);
                     }
                 };
 
@@ -181,7 +181,7 @@ pub fn statement_gen<'a>(
                             ),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     };
 
                     // Get the name of the macro being passed to __codesize
@@ -223,7 +223,7 @@ pub fn statement_gen<'a>(
                                     "FAILED TO RECURSE INTO MACRO \"{}\"",
                                     ir_macro.name
                                 );
-                                return Err(e)
+                                return Err(e);
                             }
                         };
 
@@ -254,7 +254,7 @@ pub fn statement_gen<'a>(
                             ),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     };
 
                     let size = bytes32_to_string(&ir_table.size, false);
@@ -294,7 +294,7 @@ pub fn statement_gen<'a>(
                             ),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     }
                 }
                 BuiltinFunctionKind::FunctionSignature => {
@@ -353,7 +353,7 @@ pub fn statement_gen<'a>(
                             ),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     }
                 }
                 BuiltinFunctionKind::EventHash => {
@@ -403,7 +403,7 @@ pub fn statement_gen<'a>(
                             ),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     }
                 }
                 BuiltinFunctionKind::Error => {
@@ -420,7 +420,7 @@ pub fn statement_gen<'a>(
                             )),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     }
 
                     if let Some(error) = contract
@@ -453,7 +453,7 @@ pub fn statement_gen<'a>(
                             ),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     }
                 }
                 BuiltinFunctionKind::RightPad => {
@@ -545,7 +545,7 @@ pub fn statement_gen<'a>(
                             )),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     }
 
                     let verbatim_str = bf.args[0].name.as_ref().unwrap();
@@ -554,7 +554,7 @@ pub fn statement_gen<'a>(
                     for c in verbatim_str.chars() {
                         if !c.is_ascii_hexdigit() {
                             is_hex = false;
-                            break
+                            break;
                         }
                     }
                     if !is_hex {
@@ -567,7 +567,7 @@ pub fn statement_gen<'a>(
                             kind: CodegenErrorKind::InvalidHex(verbatim_str.to_string()),
                             span: bf.span.clone(),
                             token: None,
-                        })
+                        });
                     }
 
                     tracing::debug!(target: "codegen", "INJECTING as verbatim: {}", verbatim_str);
@@ -586,7 +586,7 @@ pub fn statement_gen<'a>(
                 kind: CodegenErrorKind::InvalidMacroStatement,
                 span: s.span.clone(),
                 token: None,
-            })
+            });
         }
     }
 
diff --git a/huff_codegen/src/lib.rs b/huff_codegen/src/lib.rs
index aca743a..d3e8ace 100644
--- a/huff_codegen/src/lib.rs
+++ b/huff_codegen/src/lib.rs
@@ -154,7 +154,7 @@ impl Codegen {
                         .collect::<Vec<Span>>(),
                 ),
                 token: None,
-            })
+            });
         }
 
         tracing::info!(target: "codegen", "GENERATING JUMPTABLE BYTECODE");
@@ -300,7 +300,7 @@ impl Codegen {
         let circular_codesize_invocations = circular_codesize_invocations.unwrap_or(&mut ccsi);
 
         // Loop through all intermediate bytecode representations generated from the AST
-        for (_ir_bytes_index, ir_byte) in ir_bytes.iter().enumerate() {
+        for ir_byte in ir_bytes.iter() {
             let starting_offset = offset;
             match &ir_byte.ty {
                 IRByteType::Bytes(b) => {
@@ -317,7 +317,7 @@ impl Codegen {
                     // if we have a codesize call for the constructor here, from within the
                     // constructor, we skip
                     if recursing_constructor {
-                        continue
+                        continue;
                     }
                     let mut push_bytes = statement_gen(
                         evm_version,
@@ -475,13 +475,13 @@ impl Codegen {
     /// On failure, returns a CodegenError.
     pub fn fill_circular_codesize_invocations(
         bytes: Vec<(usize, Bytes)>,
-        circular_codesize_invocations: &mut CircularCodeSizeIndices,
+        circular_codesize_invocations: &CircularCodeSizeIndices,
         macro_name: &str,
     ) -> Result<Vec<(usize, Bytes)>, CodegenError> {
         // Get the length of the macro
         let num_invocations = circular_codesize_invocations.len();
         if num_invocations == 0 {
-            return Ok(bytes)
+            return Ok(bytes);
         }
 
         tracing::debug!(target: "codegen", "Circular Codesize Invocation: Bytes before expansion: {:#?}", bytes);
@@ -706,7 +706,7 @@ impl Codegen {
                 kind: CodegenErrorKind::InvalidDynArgIndex,
                 span: AstSpan(vec![Span { start: 0, end: 0, file: None }]),
                 token: None,
-            })
+            });
         }
 
         // Constructor size optimizations
@@ -781,7 +781,7 @@ impl Codegen {
                         })),
                     }]),
                     token: None,
-                })
+                });
             }
         }
         if let Err(e) = fs::write(file_path, serialized_artifact) {
@@ -799,7 +799,7 @@ impl Codegen {
                     })),
                 }]),
                 token: None,
-            })
+            });
         }
         Ok(())
     }
diff --git a/huff_core/benches/huff_benchmark.rs b/huff_core/benches/huff_benchmark.rs
index e001cf7..394cc2f 100644
--- a/huff_core/benches/huff_benchmark.rs
+++ b/huff_core/benches/huff_benchmark.rs
@@ -17,7 +17,7 @@ fn lex_erc20_from_source_benchmark(c: &mut Criterion) {
     .collect();
 
     // Recurse file deps + generate flattened source
-    let file_source = file_sources.get(0).unwrap();
+    let file_source = file_sources.first().unwrap();
     let recursed_file_source =
         Compiler::recurse_deps(Arc::clone(file_source), &files::Remapper::new("./"), file_provider)
             .unwrap();
@@ -48,7 +48,7 @@ fn parse_erc20_benchmark(c: &mut Criterion) {
     .collect();
 
     // Recurse file deps + generate flattened source
-    let file_source = file_sources.get(0).unwrap();
+    let file_source = file_sources.first().unwrap();
     let recursed_file_source =
         Compiler::recurse_deps(Arc::clone(file_source), &files::Remapper::new("./"), file_provider)
             .unwrap();
@@ -84,7 +84,7 @@ fn codegen_erc20_benchmark(c: &mut Criterion) {
     .collect();
 
     // Recurse file deps + generate flattened source
-    let file_source = file_sources.get(0).unwrap();
+    let file_source = file_sources.first().unwrap();
     let recursed_file_source =
         Compiler::recurse_deps(Arc::clone(file_source), &files::Remapper::new("./"), file_provider)
             .unwrap();
@@ -133,7 +133,7 @@ fn erc20_compilation_benchmark(c: &mut Criterion) {
             .collect();
 
         // Recurse file deps + generate flattened source
-        let file_source = file_sources.get(0).unwrap();
+        let file_source = file_sources.first().unwrap();
         let recursed_file_source = Compiler::recurse_deps(
             Arc::clone(file_source),
             &files::Remapper::new("./"),
@@ -180,7 +180,7 @@ fn erc721_compilation_benchmark(c: &mut Criterion) {
             .collect();
 
         // Recurse file deps + generate flattened source
-        let file_source = file_sources.get(0).unwrap();
+        let file_source = file_sources.first().unwrap();
         let recursed_file_source = Compiler::recurse_deps(
             Arc::clone(file_source),
             &files::Remapper::new("./"),
diff --git a/huff_core/src/cache.rs b/huff_core/src/cache.rs
index 94729d3..1b856b5 100644
--- a/huff_core/src/cache.rs
+++ b/huff_core/src/cache.rs
@@ -58,11 +58,11 @@ pub fn resolve_existing_artifacts(
                     Some(expected_fs) => {
                         if !artifact.bytecode.ends_with(&constructor_args) {
                             tracing::warn!(target: "core", "Mismatched Constructor Args for Cached Artifact \"{}\"", artifact.file.path);
-                            return None
+                            return None;
                         }
                         if artifact.file.source != expected_fs.source {
                             tracing::warn!(target: "core", "Cache Resolution Failed: \"{}\" Artifact Outdated", artifact.file.path);
-                            return None
+                            return None;
                         } else {
                             artifacts.push((expected_fs, artifact));
                         }
@@ -77,7 +77,7 @@ pub fn resolve_existing_artifacts(
                 tracing::error!(target: "core", "Invalid artifact file: {}", e);
                 if expected.is_some() {
                     tracing::error!(target: "core", "Expected artifact file to be compiled: {}", entry.path().display());
-                    return None
+                    return None;
                 }
             }
         }
diff --git a/huff_core/src/lib.rs b/huff_core/src/lib.rs
index e40e015..5d5e0e4 100644
--- a/huff_core/src/lib.rs
+++ b/huff_core/src/lib.rs
@@ -188,14 +188,11 @@ impl<'a, 'l> Compiler<'a, 'l> {
             files.iter().filter_map(|rfs| rfs.as_ref().err()).collect::<Vec<&CompilerError>>();
         if !errors.is_empty() {
             let error = errors.remove(0);
-            return Err(Arc::new(error.clone()))
+            return Err(Arc::new(error.clone()));
         }
 
         // Unpack files into their file sources
-        let files = files
-            .iter()
-            .filter_map(|fs| fs.as_ref().map(Arc::clone).ok())
-            .collect::<Vec<Arc<FileSource>>>();
+        let files = files.iter().filter_map(|fs| fs.clone().ok()).collect::<Vec<Arc<FileSource>>>();
 
         // Grab the output
         let output = self.get_outputs();
@@ -237,7 +234,7 @@ impl<'a, 'l> Compiler<'a, 'l> {
                     .collect::<Vec<&Arc<CompilerError>>>();
                 if !errors.is_empty() {
                     let error = errors.remove(0);
-                    return Err(Arc::clone(error))
+                    return Err(Arc::clone(error));
                 }
 
                 // Unpack recursed dependencies into FileSources
@@ -263,7 +260,7 @@ impl<'a, 'l> Compiler<'a, 'l> {
 
                 if !gen_errors.is_empty() {
                     tracing::error!(target: "core", "{} FILES FAILED TO COMPILE", gen_errors.len());
-                    return Err(Arc::new(CompilerError::FailedCompiles(gen_errors)))
+                    return Err(Arc::new(CompilerError::FailedCompiles(gen_errors)));
                 }
 
                 // Export
@@ -296,14 +293,11 @@ impl<'a, 'l> Compiler<'a, 'l> {
             files.iter().filter_map(|rfs| rfs.as_ref().err()).collect::<Vec<&CompilerError>>();
         if !errors.is_empty() {
             let error = errors.remove(0);
-            return Err(Arc::new(error.clone()))
+            return Err(Arc::new(error.clone()));
         }
 
         // Unpack files into their file sources
-        let files = files
-            .iter()
-            .filter_map(|fs| fs.as_ref().map(Arc::clone).ok())
-            .collect::<Vec<Arc<FileSource>>>();
+        let files = files.iter().filter_map(|fs| fs.clone().ok()).collect::<Vec<Arc<FileSource>>>();
 
         let recursed_file_sources: Vec<Result<Arc<FileSource>, Arc<CompilerError>>> = files
             .into_par_iter()
@@ -323,7 +317,7 @@ impl<'a, 'l> Compiler<'a, 'l> {
             .collect::<Vec<&Arc<CompilerError>>>();
         if !errors.is_empty() {
             let error = errors.remove(0);
-            return Err(Arc::clone(error))
+            return Err(Arc::clone(error));
         }
 
         // Unpack recursed dependencies into FileSources
@@ -427,7 +421,7 @@ impl<'a, 'l> Compiler<'a, 'l> {
                         .collect::<Vec<Span>>(),
                 );
                 tracing::error!(target: "core", "Roll Failed with CodegenError: {:?}", e.kind);
-                return Err(CompilerError::CodegenError(e))
+                return Err(CompilerError::CodegenError(e));
             }
         };
         tracing::info!(target: "core", "MAIN BYTECODE GENERATED [{}]", main_bytecode);
@@ -460,7 +454,7 @@ impl<'a, 'l> Compiler<'a, 'l> {
                         errs.dedup();
                         e.span = AstSpan(errs);
                         tracing::error!(target: "codegen", "Constructor inputs provided, but contract missing \"CONSTRUCTOR\" macro!");
-                        return Err(CompilerError::CodegenError(e))
+                        return Err(CompilerError::CodegenError(e));
                     }
 
                     // If the kind is a missing constructor we can ignore it
@@ -528,7 +522,7 @@ impl<'a, 'l> Compiler<'a, 'l> {
                 Ok(source) => source,
                 Err(_) => {
                     tracing::error!(target: "core", "FILE READ FAILED: \"{}\"!", fs.path);
-                    return Err(Arc::new(CompilerError::PathBufRead(OsString::from(&fs.path))))
+                    return Err(Arc::new(CompilerError::PathBufRead(OsString::from(&fs.path))));
                 }
             };
             new_fs.access = Some(time::get_current_time());
@@ -598,7 +592,7 @@ impl<'a, 'l> Compiler<'a, 'l> {
         // Exit if empty output location
         if output.0.is_empty() {
             tracing::warn!(target: "core", "Exiting artifact export with empty output location!");
-            return
+            return;
         }
 
         // Clean the Output Directory
diff --git a/huff_lexer/README.md b/huff_lexer/README.md
index d3ce114..693aaf1 100644
--- a/huff_lexer/README.md
+++ b/huff_lexer/README.md
@@ -24,7 +24,7 @@ use std::ops::Deref;
 // Instantiate a new lexer
 let source = "#define macro HELLO_WORLD()";
 let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-let mut lexer = Lexer::new(flattened_source.sour);
+let mut lexer = Lexer::new(flattened_source.source);
 
 // This token should be a Define identifier
 let tok = lexer.next().unwrap().unwrap();
diff --git a/huff_lexer/src/lib.rs b/huff_lexer/src/lib.rs
index 7ce3f24..f3774c3 100644
--- a/huff_lexer/src/lib.rs
+++ b/huff_lexer/src/lib.rs
@@ -113,7 +113,7 @@ impl<'a> Lexer<'a> {
                                                 // there will be a successfully parsed block comment
                                                 // "/* */"
                                                 // and " */" will be processed separately.
-                                                break
+                                                break;
                                             }
                                         }
                                         _ => {
@@ -145,7 +145,7 @@ impl<'a> Lexer<'a> {
                         let peeked = word.clone();
                         if key == peeked {
                             found_kind = Some(kind);
-                            break
+                            break;
                         }
                     }
 
@@ -163,7 +163,7 @@ impl<'a> Lexer<'a> {
                                 end: self.position as usize,
                                 file: None,
                             },
-                        ))
+                        ));
                     }
                 }
                 // Alphabetical characters
@@ -195,14 +195,14 @@ impl<'a> Lexer<'a> {
                     ];
                     for kind in keys.into_iter() {
                         if self.context == Context::MacroBody {
-                            break
+                            break;
                         }
                         let key = kind.to_string();
                         let peeked = word.clone();
 
                         if key == peeked {
                             found_kind = Some(kind);
-                            break
+                            break;
                         }
                     }
 
@@ -417,7 +417,7 @@ impl<'a> Lexer<'a> {
                             end: self.position as usize,
                             file: None,
                         },
-                    ))
+                    ));
                 }
             }?;
 
@@ -465,7 +465,7 @@ impl<'a> Lexer<'a> {
             // cursor If not, return word. The next character will be analyzed on the
             // next iteration of next_token, Which will increment the cursor
             if !predicate(peek_char) {
-                return (word, start, self.position)
+                return (word, start, self.position);
             }
             word.push(peek_char);
 
@@ -565,7 +565,7 @@ impl<'a> Lexer<'a> {
                 ];
                 for key in keys {
                     if self.checked_lookback(key) {
-                        return true
+                        return true;
                     }
                 }
                 false
@@ -594,7 +594,7 @@ impl<'a> Lexer<'a> {
                             // Iterate until newline
                             while let Some(lc) = &peekable_source.next() {
                                 if lc.eq(&'\n') {
-                                    break
+                                    break;
                                 }
                             }
                         } else if nnc.eq(&'*') {
@@ -603,7 +603,7 @@ impl<'a> Lexer<'a> {
                                 if lc.eq(&'*') {
                                     if let Some(llc) = peekable_source.peek() {
                                         if *llc == '/' {
-                                            break
+                                            break;
                                         }
                                     }
                                 }
@@ -618,7 +618,7 @@ impl<'a> Lexer<'a> {
                     // Skip over whitespace
                     while peekable_source.peek().is_some() {
                         if !peekable_source.peek().unwrap().is_whitespace() {
-                            break
+                            break;
                         } else {
                             peekable_source.next();
                         }
@@ -634,7 +634,7 @@ impl<'a> Lexer<'a> {
                                     if let Some(c) = peekable_source.next() {
                                         if matches!(c, '"' | '\'') {
                                             imports.push(import);
-                                            break
+                                            break;
                                         } else {
                                             import.push(c);
                                         }
@@ -646,7 +646,7 @@ impl<'a> Lexer<'a> {
                     }
                 } else if nc.ne(&include_chars_iterator.next().unwrap()) {
                     include_chars_iterator = "#include".chars().peekable();
-                    break
+                    break;
                 }
             }
         }
diff --git a/huff_parser/src/lib.rs b/huff_parser/src/lib.rs
index 48e88c0..7d1c0d4 100644
--- a/huff_parser/src/lib.rs
+++ b/huff_parser/src/lib.rs
@@ -34,7 +34,7 @@ pub struct Parser {
 impl Parser {
     /// Public associated function that instantiates a Parser.
     pub fn new(tokens: Vec<Token>, base: Option<String>) -> Self {
-        let initial_token = tokens.get(0).unwrap().clone();
+        let initial_token = tokens.first().unwrap().clone();
         let remapper = files::Remapper::new("./");
         Self { tokens, cursor: 0, current_token: initial_token, base, spans: vec![], remapper }
     }
@@ -43,7 +43,7 @@ impl Parser {
     ///
     /// PANICS if the tokens vec is empty!
     pub fn reset(&mut self) {
-        self.current_token = self.tokens.get(0).unwrap().clone();
+        self.current_token = self.tokens.first().unwrap().clone();
         self.cursor = 0;
     }
 
@@ -104,6 +104,7 @@ impl Parser {
                     TokenKind::Macro | TokenKind::Fn | TokenKind::Test => {
                         let m = self.parse_macro()?;
                         tracing::info!(target: "parser", "SUCCESSFULLY PARSED MACRO {}", m.name);
+                        self.check_duplicate_macro(&contract, &m)?;
                         contract.macros.push(m);
                     }
                     TokenKind::JumpTable | TokenKind::JumpTablePacked | TokenKind::CodeTable => {
@@ -132,7 +133,7 @@ impl Parser {
                         TokenKind::Include
                     )),
                     spans: AstSpan(self.spans.clone()),
-                })
+                });
             }
         }
 
@@ -157,7 +158,7 @@ impl Parser {
                     kind: ParserErrorKind::InvalidName(tok.clone()),
                     hint: Some(format!("Expected import string. Got: \"{tok}\"")),
                     spans: AstSpan(new_spans),
-                })
+                });
             }
         };
 
@@ -185,6 +186,24 @@ impl Parser {
         std::mem::discriminant(&self.current_token.kind) == std::mem::discriminant(&kind)
     }
 
+    /// Checks if there is a duplicate macro name
+    pub fn check_duplicate_macro(
+        &self,
+        contract: &Contract,
+        m: &MacroDefinition,
+    ) -> Result<(), ParserError> {
+        if contract.macros.binary_search_by(|_macro| _macro.name.cmp(&m.name)).is_ok() {
+            tracing::error!(target: "parser", "DUPLICATE MACRO NAME FOUND: {}",  m.name);
+            Err(ParserError {
+                kind: ParserErrorKind::DuplicateMacro(m.name.to_owned()),
+                hint: Some("MACRO names should be unique".to_string()),
+                spans: AstSpan(vec![m.span[2].clone()]),
+            })
+        } else {
+            Ok(())
+        }
+    }
+
     /// Consumes the next token.
     pub fn consume(&mut self) {
         self.spans.push(self.current_token.span.clone());
@@ -197,7 +216,7 @@ impl Parser {
         loop {
             let token = self.peek().unwrap();
             if !kinds.contains(&token.kind) {
-                break
+                break;
             }
             self.current_token = token;
             self.cursor += 1;
@@ -238,7 +257,7 @@ impl Parser {
                     kind: ParserErrorKind::InvalidName(tok.clone()),
                     hint: Some(format!("Expected function name, found: \"{tok}\"")),
                     spans: AstSpan(self.spans.clone()),
-                })
+                });
             }
         };
 
@@ -300,7 +319,7 @@ impl Parser {
                     kind: ParserErrorKind::InvalidName(tok.clone()),
                     hint: Some(format!("Expected event name, found: \"{tok}\"")),
                     spans: AstSpan(self.spans.clone()),
-                })
+                });
             }
         };
 
@@ -331,7 +350,7 @@ impl Parser {
                     kind: ParserErrorKind::UnexpectedType(tok),
                     hint: Some("Expected constant name.".to_string()),
                     spans: AstSpan(self.spans.clone()),
-                })
+                });
             }
         };
 
@@ -356,7 +375,7 @@ impl Parser {
                             .to_string(),
                     ),
                     spans: AstSpan(vec![self.current_token.span.clone()]),
-                })
+                });
             }
         };
 
@@ -384,7 +403,7 @@ impl Parser {
                     kind: ParserErrorKind::UnexpectedType(tok),
                     hint: Some("Expected error name.".to_string()),
                     spans: AstSpan(self.spans.clone()),
-                })
+                });
             }
         };
 
@@ -431,7 +450,7 @@ impl Parser {
                                 ),
                                 hint: Some(format!("Expected string for decorator flag: {s}")),
                                 spans: AstSpan(vec![self.current_token.span.clone()]),
-                            })
+                            });
                         }
                     }
                     // The value flag accepts a single literal as an argument
@@ -447,7 +466,7 @@ impl Parser {
                                 ),
                                 hint: Some(format!("Expected literal for decorator flag: {s}")),
                                 spans: AstSpan(vec![self.current_token.span.clone()]),
-                            })
+                            });
                         }
                     }
                     Err(_) => {
@@ -456,7 +475,7 @@ impl Parser {
                             kind: ParserErrorKind::InvalidDecoratorFlag(s.clone()),
                             hint: Some(format!("Unknown decorator flag: {s}")),
                             spans: AstSpan(self.spans.clone()),
-                        })
+                        });
                     }
                 }
 
@@ -474,7 +493,7 @@ impl Parser {
                     )),
                     hint: Some(String::from("Unknown decorator flag")),
                     spans: AstSpan(self.spans.clone()),
-                })
+                });
             }
         }
 
@@ -635,7 +654,9 @@ impl Parser {
                     let mut curr_spans = vec![self.current_token.span.clone()];
                     self.consume();
                     let inner_statements: Vec<Statement> = self.parse_label()?;
-                    inner_statements.iter().for_each(|a| curr_spans.extend_from_slice(&a.span.0));
+                    inner_statements
+                        .iter()
+                        .for_each(|a| curr_spans.extend_from_slice(a.span.inner_ref()));
                     tracing::info!(target: "parser", "PARSED LABEL \"{}\" INSIDE MACRO WITH {} STATEMENTS.", l, inner_statements.len());
                     statements.push(Statement {
                         ty: StatementType::Label(Label {
@@ -666,7 +687,7 @@ impl Parser {
                     let mut curr_spans = vec![self.current_token.span.clone()];
                     self.match_kind(TokenKind::BuiltinFunction(String::default()))?;
                     let args = self.parse_args(true, false, false, true)?;
-                    args.iter().for_each(|a| curr_spans.extend_from_slice(&a.span.0));
+                    args.iter().for_each(|a| curr_spans.extend_from_slice(a.span.inner_ref()));
                     tracing::info!(target: "parser", "PARSING MACRO BODY: [BUILTIN FN: {}({:?})]", f, args);
                     statements.push(Statement {
                         ty: StatementType::BuiltinFunctionCall(BuiltinFunctionCall {
@@ -683,7 +704,7 @@ impl Parser {
                         kind: ParserErrorKind::InvalidTokenInMacroBody(kind),
                         hint: None,
                         spans: AstSpan(vec![self.current_token.span.clone()]),
-                    })
+                    });
                 }
             };
         }
@@ -779,7 +800,7 @@ impl Parser {
                     let mut curr_spans = vec![self.current_token.span.clone()];
                     self.match_kind(TokenKind::BuiltinFunction(String::default()))?;
                     let args = self.parse_args(true, false, false, true)?;
-                    args.iter().for_each(|a| curr_spans.extend_from_slice(&a.span.0));
+                    args.iter().for_each(|a| curr_spans.extend_from_slice(a.span.inner_ref()));
                     tracing::info!(target: "parser", "PARSING LABEL BODY: [BUILTIN FN: {}({:?})]", f, args);
                     statements.push(Statement {
                         ty: StatementType::BuiltinFunctionCall(BuiltinFunctionCall {
@@ -796,7 +817,7 @@ impl Parser {
                         kind: ParserErrorKind::InvalidTokenInLabelDefinition(kind),
                         hint: None,
                         spans: AstSpan(vec![self.current_token.span.clone()]),
-                    })
+                    });
                 }
             };
         }
@@ -848,7 +869,7 @@ impl Parser {
                         self.consume();
                         on_type = true;
                     }
-                    continue
+                    continue;
                 }
 
                 // Check for literals
@@ -868,7 +889,7 @@ impl Parser {
                         self.consume();
                         on_type = true;
                     }
-                    continue
+                    continue;
                 }
             }
 
@@ -927,7 +948,7 @@ impl Parser {
                                         "Argument names cannot be EVM types: {arg_str}"
                                     )),
                                     spans: AstSpan(vec![self.current_token.span.clone()]),
-                                })
+                                });
                             }
                         }
                         TokenKind::PrimitiveType(ty) => {
@@ -960,7 +981,7 @@ impl Parser {
                     kind: ParserErrorKind::InvalidArgs(self.current_token.kind.clone()),
                     hint: None,
                     spans: AstSpan(vec![self.current_token.span.clone()]),
-                })
+                });
             }
 
             arg.span = AstSpan(arg_spans);
@@ -1038,7 +1059,7 @@ impl Parser {
                                 .to_string(),
                         ),
                         spans: AstSpan(new_spans),
-                    })
+                    });
                 }
             }
             if self.check(TokenKind::Comma) {
@@ -1126,7 +1147,7 @@ impl Parser {
                                     ),
                                     hint: Some("Expected valid hex bytecode.".to_string()),
                                     spans: AstSpan(new_spans),
-                                })
+                                });
                             }
                         } else {
                             StatementType::LabelCall(ident_str.to_string())
@@ -1141,7 +1162,7 @@ impl Parser {
                         kind: ParserErrorKind::InvalidTableBodyToken(kind.clone()),
                         hint: Some("Expected an identifier string.".to_string()),
                         spans: AstSpan(new_spans),
-                    })
+                    });
                 }
             };
         }
@@ -1246,7 +1267,7 @@ impl Parser {
                         kind: ParserErrorKind::InvalidUint256(size),
                         hint: None,
                         spans: AstSpan(vec![self.current_token.span.clone()]),
-                    })
+                    });
                 }
                 Ok(self.match_kind(self.current_token.kind.clone())?)
             }
@@ -1256,7 +1277,7 @@ impl Parser {
                         kind: ParserErrorKind::InvalidBytes(size),
                         hint: None,
                         spans: AstSpan(vec![self.current_token.span.clone()]),
-                    })
+                    });
                 }
                 Ok(self.match_kind(self.current_token.kind.clone())?)
             }
@@ -1270,7 +1291,7 @@ impl Parser {
                         kind: ParserErrorKind::InvalidInt(size),
                         hint: None,
                         spans: AstSpan(vec![self.current_token.span.clone()]),
-                    })
+                    });
                 }
                 let curr_token_kind = self.current_token.kind.clone();
                 self.consume();
diff --git a/huff_utils/src/abi.rs b/huff_utils/src/abi.rs
index 2f6cb67..02a8669 100644
--- a/huff_utils/src/abi.rs
+++ b/huff_utils/src/abi.rs
@@ -78,7 +78,7 @@ impl From<ast::Contract> for Abi {
             .filter(|m| m.name.to_lowercase() == "constructor")
             .cloned()
             .collect::<Vec<ast::FunctionDefinition>>()
-            .get(0)
+            .first()
             .map(|func| Constructor {
                 inputs: func
                     .inputs
@@ -97,7 +97,7 @@ impl From<ast::Contract> for Abi {
                     .filter(|m| m.name == "CONSTRUCTOR")
                     .cloned()
                     .collect::<Vec<ast::MacroDefinition>>()
-                    .get(0)
+                    .first()
                     .map(|func| Constructor {
                         inputs: func
                             .parameters
@@ -366,7 +366,7 @@ impl FunctionParamType {
                 .collect();
             let func_type = FunctionParamType::convert_string_to_type(&cleaned.remove(0))?;
             let sizes: Vec<usize> = cleaned.iter().map(|x| x.parse::<usize>().unwrap()).collect();
-            return Ok(Self::Array(Box::new(func_type), sizes))
+            return Ok(Self::Array(Box::new(func_type), sizes));
         }
         if input.starts_with("uint") {
             // Default to 256 if no size
@@ -377,7 +377,7 @@ impl FunctionParamType {
                 },
                 None => 256,
             };
-            return Ok(Self::Uint(size))
+            return Ok(Self::Uint(size));
         }
         if input.starts_with("int") {
             // Default to 256 if no size
@@ -388,20 +388,20 @@ impl FunctionParamType {
                 },
                 None => 256,
             };
-            return Ok(Self::Int(size))
+            return Ok(Self::Int(size));
         }
         if input.starts_with("bytes") && input.len() != 5 {
             let size = input.get(5..input.len()).unwrap().parse::<usize>().unwrap();
-            return Ok(Self::FixedBytes(size))
+            return Ok(Self::FixedBytes(size));
         }
         if input.starts_with("bool") {
-            return Ok(Self::Bool)
+            return Ok(Self::Bool);
         }
         if input.starts_with("address") {
-            return Ok(Self::Address)
+            return Ok(Self::Address);
         }
         if input.starts_with("string") {
-            return Ok(Self::String)
+            return Ok(Self::String);
         }
         if input == "bytes" {
             Ok(Self::Bytes)
diff --git a/huff_utils/src/ast.rs b/huff_utils/src/ast.rs
index 72cf8fe..f0901d2 100644
--- a/huff_utils/src/ast.rs
+++ b/huff_utils/src/ast.rs
@@ -1,5 +1,6 @@
 use itertools::Itertools;
 use serde::{Deserialize, Serialize};
+use std::ops::Index;
 
 use crate::{
     bytecode::*,
@@ -33,8 +34,7 @@ impl AstSpan {
     pub fn error(&self, hint: Option<&String>) -> String {
         let file_to_source_map =
             self.0.iter().fold(BTreeMap::<String, Vec<&Span>>::new(), |mut m, s| {
-                let file_name =
-                    s.file.as_ref().map(|f2| f2.path.clone()).unwrap_or_else(|| "".to_string());
+                let file_name = s.file.as_ref().map(|f2| f2.path.clone()).unwrap_or_default();
                 let mut new_vec: Vec<&Span> = m.get(&file_name).cloned().unwrap_or_default();
                 new_vec.push(s);
                 m.insert(file_name, new_vec);
@@ -77,6 +77,19 @@ impl AstSpan {
             None => Default::default(),
         })
     }
+
+    /// Retrieve the underlying vector of spans
+    pub fn inner_ref(&self) -> &Vec<Span> {
+        &self.0
+    }
+}
+
+/// Allows AstSpan to be indexed into
+impl Index<usize> for AstSpan {
+    type Output = Span;
+    fn index(&self, index: usize) -> &Self::Output {
+        &self.0[index]
+    }
 }
 
 /// A Huff Contract Representation
@@ -167,7 +180,7 @@ impl Contract {
                 .iter()
                 .filter(|pointer| pointer.0.eq(&c.name))
                 .collect::<Vec<&(String, [u8; 32])>>()
-                .get(0)
+                .first()
             {
                 Some(p) => {
                     *c = ConstantDefinition {
@@ -206,7 +219,7 @@ impl Contract {
         let mut i = 0;
         loop {
             if i >= statements.len() {
-                break
+                break;
             }
             match &statements[i].clone().ty {
                 StatementType::Constant(const_name) => {
@@ -248,7 +261,7 @@ impl Contract {
                         .iter()
                         .filter(|md| md.name.eq(&mi.macro_name))
                         .collect::<Vec<&MacroDefinition>>()
-                        .get(0)
+                        .first()
                     {
                         Some(&md) => {
                             if md.name.eq("CONSTRUCTOR") {
@@ -278,7 +291,7 @@ impl Contract {
                                 .iter()
                                 .filter(|md| md.name.eq(name))
                                 .collect::<Vec<&MacroDefinition>>()
-                                .get(0)
+                                .first()
                             {
                                 Some(&md) => {
                                     if md.name.eq("CONSTRUCTOR") {
@@ -335,7 +348,7 @@ impl Contract {
             .iter()
             .filter(|pointer| pointer.0.eq(const_name))
             .collect::<Vec<&(String, [u8; 32])>>()
-            .get(0)
+            .first()
             .is_none()
         {
             tracing::debug!(target: "ast", "No storage pointer already set for \"{}\"!", const_name);
@@ -347,7 +360,7 @@ impl Contract {
                 .iter()
                 .filter(|c| c.name.eq(const_name))
                 .collect::<Vec<&ConstantDefinition>>()
-                .get(0)
+                .first()
             {
                 Some(c) => {
                     let new_value = match c.value {
diff --git a/huff_utils/src/error.rs b/huff_utils/src/error.rs
index 9ecb263..d0e90a1 100644
--- a/huff_utils/src/error.rs
+++ b/huff_utils/src/error.rs
@@ -63,6 +63,8 @@ pub enum ParserErrorKind {
     InvalidDecoratorFlag(String),
     /// Invalid decorator flag argument
     InvalidDecoratorFlagArg(TokenKind),
+    /// Duplicate MACRO
+    DuplicateMacro(String),
 }
 
 /// A Lexing Error
@@ -183,7 +185,7 @@ pub enum CodegenErrorKind {
 
 impl Spanned for CodegenError {
     fn span(&self) -> Span {
-        self.span.0[0].clone()
+        self.span[0].clone()
     }
 }
 
@@ -488,6 +490,14 @@ impl fmt::Display for CompilerError {
                         pe.spans.error(pe.hint.as_ref())
                     )
                 }
+                ParserErrorKind::DuplicateMacro(mn) => {
+                    write!(
+                        f,
+                        "\nError: Duplicate MACRO name found: \"{}\" \n{}\n",
+                        mn,
+                        pe.spans.error(pe.hint.as_ref())
+                    )
+                }
             },
             CompilerError::PathBufRead(os_str) => {
                 write!(
diff --git a/huff_utils/src/evm.rs b/huff_utils/src/evm.rs
index 8ad61a4..a93e73c 100644
--- a/huff_utils/src/evm.rs
+++ b/huff_utils/src/evm.rs
@@ -6,7 +6,7 @@ use strum_macros::EnumString;
 /// They are arranged in a particular order such that all the opcodes that have common
 /// prefixes are ordered by decreasing length to avoid mismatch when lexing.
 /// Example : [origin, or] or [push32, ..., push3]
-pub const OPCODES: [&str; 147] = [
+pub const OPCODES: [&str; 150] = [
     "lt",
     "gt",
     "slt",
@@ -29,6 +29,8 @@ pub const OPCODES: [&str; 147] = [
     "codesize",
     "codecopy",
     "basefee",
+    "blobhash",
+    "blobbasefee",
     "blockhash",
     "coinbase",
     "timestamp",
@@ -79,6 +81,7 @@ pub const OPCODES: [&str; 147] = [
     "log4",
     "tload",
     "tstore",
+    "mcopy",
     "create2",
     "create",
     "callcode",
@@ -180,6 +183,8 @@ pub static OPCODES_MAP: phf::Map<&'static str, Opcode> = phf_map! {
     "codesize" => Opcode::Codesize,
     "codecopy" => Opcode::Codecopy,
     "basefee" => Opcode::Basefee,
+    "blobhash" => Opcode::Blobhash,
+    "blobbasefee" => Opcode::Blobbasefee,
     "blockhash" => Opcode::Blockhash,
     "coinbase" => Opcode::Coinbase,
     "timestamp" => Opcode::Timestamp,
@@ -199,6 +204,7 @@ pub static OPCODES_MAP: phf::Map<&'static str, Opcode> = phf_map! {
     "jumpi" => Opcode::Jumpi,
     "pc" => Opcode::Pc,
     "msize" => Opcode::Msize,
+    "mcopy" => Opcode::Mcopy,
     "push0" => Opcode::Push0,
     "push1" => Opcode::Push1,
     "push2" => Opcode::Push2,
@@ -293,8 +299,8 @@ pub static OPCODES_MAP: phf::Map<&'static str, Opcode> = phf_map! {
     "log2" => Opcode::Log2,
     "log3" => Opcode::Log3,
     "log4" => Opcode::Log4,
-    "tload" => Opcode::TLoad,
-    "tstore" => Opcode::TStore,
+    "tload" => Opcode::Tload,
+    "tstore" => Opcode::Tstore,
     "create" => Opcode::Create,
     "call" => Opcode::Call,
     "callcode" => Opcode::Callcode,
@@ -416,6 +422,10 @@ pub enum Opcode {
     Selfbalance,
     /// Base Fee
     Basefee,
+    /// Versioned hashes of blobs associated with the transaction.
+    Blobhash,
+    /// Blob base fee of the current block.
+    Blobbasefee,
     /// Removes an Item from the Stack
     Pop,
     /// Loads a word from Memory
@@ -581,9 +591,11 @@ pub enum Opcode {
     /// Append Log Record with 4 Topics
     Log4,
     /// Transaction-persistent, but storage-ephemeral variable load
-    TLoad,
+    Tload,
     /// Transaction-persistent, but storage-ephemeral variable store
-    TStore,
+    Tstore,
+    /// Copies an area of memory from src to dst. Areas can overlap.
+    Mcopy,
     /// Create a new account with associated code
     Create,
     /// Message-call into an account
@@ -666,6 +678,8 @@ impl Opcode {
             Opcode::Chainid => "46",
             Opcode::Selfbalance => "47",
             Opcode::Basefee => "48",
+            Opcode::Blobhash => "49",
+            Opcode::Blobbasefee => "4a",
             Opcode::Pop => "50",
             Opcode::Mload => "51",
             Opcode::Mstore => "52",
@@ -678,6 +692,9 @@ impl Opcode {
             Opcode::Msize => "59",
             Opcode::Gas => "5a",
             Opcode::Jumpdest => "5b",
+            Opcode::Tload => "5c",
+            Opcode::Tstore => "5d",
+            Opcode::Mcopy => "5e",
             Opcode::Push0 => "5f",
             Opcode::Push1 => "60",
             Opcode::Push2 => "61",
@@ -748,8 +765,6 @@ impl Opcode {
             Opcode::Log2 => "a2",
             Opcode::Log3 => "a3",
             Opcode::Log4 => "a4",
-            Opcode::TLoad => "b3",
-            Opcode::TStore => "b4",
             Opcode::Create => "f0",
             Opcode::Call => "f1",
             Opcode::Callcode => "f2",
@@ -814,7 +829,7 @@ impl Opcode {
                         let zeros_needed = size - literal.len() as u8;
                         let zero_prefix =
                             (0..zeros_needed).map(|_| "0").collect::<Vec<&str>>().join("");
-                        return format!("{zero_prefix}{literal}")
+                        return format!("{zero_prefix}{literal}");
                     }
                 }
             }
@@ -829,7 +844,7 @@ impl Opcode {
             if let Ok(len) = u8::from_str_radix(&self.to_string(), 16) {
                 if len >= 96 {
                     let size = (len - 96 + 1) * 2;
-                    return literal.len() > size as usize
+                    return literal.len() > size as usize;
                 }
             }
         }
diff --git a/huff_utils/src/file_provider.rs b/huff_utils/src/file_provider.rs
index 78fb0ac..be100a7 100644
--- a/huff_utils/src/file_provider.rs
+++ b/huff_utils/src/file_provider.rs
@@ -71,7 +71,7 @@ impl<'a> FileProvider<'a> for FileSystemFileProvider {
                     }
                     Err(e) => {
                         tracing::error!(target: "core", "ERROR UNPACKING FILE: {:?}", e);
-                        return Err(CompilerError::FileUnpackError(e))
+                        return Err(CompilerError::FileUnpackError(e));
                     }
                 }
             }
diff --git a/huff_utils/src/files.rs b/huff_utils/src/files.rs
index 56a1278..efee81e 100644
--- a/huff_utils/src/files.rs
+++ b/huff_utils/src/files.rs
@@ -92,7 +92,7 @@ impl Remapper {
                 // Gracefully read foundry.toml
                 if let Err(e) = br.read_to_string(&mut data) {
                     tracing::warn!(target: "parser", "Failed to read \"foundry.toml\" file contents!\nError: {:?}", e);
-                    return
+                    return;
                 }
 
                 // Parse the foundry.toml file as toml
@@ -100,7 +100,7 @@ impl Remapper {
                     t
                 } else {
                     tracing::warn!(target: "parser", "\"foundry.toml\" incorrectly formatted!");
-                    return
+                    return;
                 };
 
                 // Parse the toml as a map
@@ -190,7 +190,7 @@ impl Remapper {
             if path.starts_with(k) {
                 tracing::debug!(target: "parser", "found key {} and value {}", k, v);
                 path = path.replace(k, v);
-                return Some(format!("{}{path}", self.base_dir))
+                return Some(format!("{}{path}", self.base_dir));
             }
         }
         None
@@ -294,12 +294,12 @@ impl FileSource {
                         }
                         None => {
                             tracing::warn!("Failed to convert path to string");
-                            return None
+                            return None;
                         }
                     },
                     None => {
                         tracing::warn!("Failed to find parent for path: {:?}", path);
-                        return None
+                        return None;
                     }
                 }
                 res_str = res_str.replacen("../", "", 1);
diff --git a/huff_utils/src/io.rs b/huff_utils/src/io.rs
index e63228b..34703cf 100644
--- a/huff_utils/src/io.rs
+++ b/huff_utils/src/io.rs
@@ -22,7 +22,7 @@ pub fn unpack_files(path: &str) -> Result<Vec<String>, UnpackError> {
     match parse_extension(path) {
         Some(extension) => {
             if extension == "huff" {
-                return Ok(vec![path.to_string()])
+                return Ok(vec![path.to_string()]);
             }
             Err(UnpackError::UnsupportedExtension(path.to_string()))
         }
diff --git a/huff_utils/src/token.rs b/huff_utils/src/token.rs
index 547fbe8..7aa8f38 100644
--- a/huff_utils/src/token.rs
+++ b/huff_utils/src/token.rs
@@ -190,7 +190,7 @@ impl fmt::Display for TokenKind {
                 for b in l.iter() {
                     let _ = write!(&mut s, "{b:02x}");
                 }
-                return write!(f, "{s}")
+                return write!(f, "{s}");
             }
             TokenKind::Opcode(o) => return write!(f, "{o}"),
             TokenKind::Label(s) => return write!(f, "{s}"),
@@ -201,7 +201,7 @@ impl fmt::Display for TokenKind {
                     let brackets = if size > &0 { format!("[{size}]") } else { "[]".to_string() };
                     s.push_str(&brackets);
                 }
-                return write!(f, "{pt}{s}")
+                return write!(f, "{pt}{s}");
             }
             TokenKind::JumpTable => "jumptable",
             TokenKind::JumpTablePacked => "jumptable__packed",
diff --git a/huff_utils/src/types.rs b/huff_utils/src/types.rs
index 658009e..89885c8 100644
--- a/huff_utils/src/types.rs
+++ b/huff_utils/src/types.rs
@@ -41,7 +41,7 @@ impl TryFrom<String> for PrimitiveEVMType {
                 },
                 None => 256,
             };
-            return Ok(PrimitiveEVMType::Uint(size))
+            return Ok(PrimitiveEVMType::Uint(size));
         }
         if input.starts_with("int") {
             // Default to 256 if no size
@@ -55,7 +55,7 @@ impl TryFrom<String> for PrimitiveEVMType {
                 },
                 None => 256,
             };
-            return Ok(PrimitiveEVMType::Int(size))
+            return Ok(PrimitiveEVMType::Int(size));
         }
         if input.starts_with("bytes") && input.len() != 5 {
             let remaining = input.get(5..input.len()).unwrap();
@@ -63,16 +63,16 @@ impl TryFrom<String> for PrimitiveEVMType {
                 Ok(s) => s,
                 Err(_) => return Err(format!("Invalid bytes size : {remaining}")),
             };
-            return Ok(PrimitiveEVMType::Bytes(size))
+            return Ok(PrimitiveEVMType::Bytes(size));
         }
         if input.eq("bool") {
-            return Ok(PrimitiveEVMType::Bool)
+            return Ok(PrimitiveEVMType::Bool);
         }
         if input.eq("address") {
-            return Ok(PrimitiveEVMType::Address)
+            return Ok(PrimitiveEVMType::Address);
         }
         if input.eq("string") {
-            return Ok(PrimitiveEVMType::String)
+            return Ok(PrimitiveEVMType::String);
         }
         if input == "bytes" {
             Ok(PrimitiveEVMType::DynBytes)
@@ -133,7 +133,7 @@ impl TryFrom<String> for EToken {
                 // dyn bytes array
                 return Ok(EToken(Token::Bytes(
                     str_to_vec(cleaned_input).map_err(|e| e.to_string())?,
-                )))
+                )));
             }
         }
         // array
@@ -144,18 +144,18 @@ impl TryFrom<String> for EToken {
             let etokens: Result<Vec<EToken>, _> =
                 v.iter().map(|x| EToken::try_from(x.to_owned())).collect();
             let tokens: Vec<Token> = etokens?.iter().map(move |x| x.clone().0).collect();
-            return Ok(EToken(Token::Array(tokens)))
+            return Ok(EToken(Token::Array(tokens)));
         }
         if input.starts_with('-') || input.starts_with('+') {
-            return Ok(EToken(input.parse::<i128>().map_err(|e| e.to_string())?.into_token()))
+            return Ok(EToken(input.parse::<i128>().map_err(|e| e.to_string())?.into_token()));
         }
         if input == "true" || input == "false" {
-            return Ok(EToken(Token::Bool(input == "true")))
+            return Ok(EToken(Token::Bool(input == "true")));
         }
         if input.chars().all(|x| x.is_ascii_digit()) {
             return Ok(EToken(Token::Uint(
                 U256::from_str_radix(input.as_str(), 10).map_err(|e| e.to_string())?,
-            )))
+            )));
         }
         if input.chars().all(|x| x.is_alphanumeric()) {
             Ok(EToken(Token::String(input)))


Test patch:
diff --git a/huff_core/tests/erc20.rs b/huff_core/tests/erc20.rs
index 3c1144f..84ed1c3 100644
--- a/huff_core/tests/erc20.rs
+++ b/huff_core/tests/erc20.rs
@@ -18,7 +18,7 @@ fn test_erc20_compile() {
     .collect();
 
     // Recurse file deps + generate flattened source
-    let file_source = file_sources.get(0).unwrap();
+    let file_source = file_sources.first().unwrap();
     let recursed_file_source =
         Compiler::recurse_deps(Arc::clone(file_source), &files::Remapper::new("./"), file_provider)
             .unwrap();
diff --git a/huff_core/tests/erc721.rs b/huff_core/tests/erc721.rs
index 3460cec..29ee396 100644
--- a/huff_core/tests/erc721.rs
+++ b/huff_core/tests/erc721.rs
@@ -18,7 +18,7 @@ fn test_erc721_compile() {
     .collect();
 
     // Recurse file deps + generate flattened source
-    let file_source = file_sources.get(0).unwrap();
+    let file_source = file_sources.first().unwrap();
     let recursed_file_source =
         Compiler::recurse_deps(Arc::clone(file_source), &files::Remapper::new("./"), file_provider)
             .unwrap();
diff --git a/huff_core/tests/parser_errors.rs b/huff_core/tests/parser_errors.rs
index 8fd64b3..a41a7c2 100644
--- a/huff_core/tests/parser_errors.rs
+++ b/huff_core/tests/parser_errors.rs
@@ -251,7 +251,7 @@ fn test_invalid_single_arg() {
             !random_char.is_alphabetic() ||
             random_char.to_string().as_bytes().len() > 1
         {
-            continue
+            continue;
         }
         let source = &format!("#define macro CONSTANT() = takes ({random_char}) returns (0) {{}}");
 
diff --git a/huff_lexer/tests/builtins.rs b/huff_lexer/tests/builtins.rs
index 64cc6fc..e8ccb45 100644
--- a/huff_lexer/tests/builtins.rs
+++ b/huff_lexer/tests/builtins.rs
@@ -24,7 +24,7 @@ fn parses_builtin_function_in_macro_body() {
             "{", "}",
         );
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let mut lexer = Lexer::new(flattened_source.source.clone());
+        let mut lexer = Lexer::new(flattened_source.source);
 
         let _ = lexer.next(); // whitespace
         let _ = lexer.next(); // #define
@@ -89,7 +89,7 @@ fn fails_to_parse_builtin_outside_macro_body() {
     for builtin in builtin_funcs {
         let source = &format!("{builtin}(MAIN)");
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let mut lexer = Lexer::new(flattened_source.source.clone());
+        let mut lexer = Lexer::new(flattened_source.source);
 
         let tok = lexer.next();
         let unwrapped = tok.unwrap().unwrap();
@@ -123,7 +123,7 @@ fn fails_to_parse_invalid_builtin() {
             "{", "}",
         );
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let mut lexer = Lexer::new(flattened_source.source.clone());
+        let mut lexer = Lexer::new(flattened_source.source);
 
         let _ = lexer.next(); // whitespace
         let _ = lexer.next(); // #define
diff --git a/huff_lexer/tests/comments.rs b/huff_lexer/tests/comments.rs
index 898a692..962aab0 100644
--- a/huff_lexer/tests/comments.rs
+++ b/huff_lexer/tests/comments.rs
@@ -14,7 +14,7 @@ use huff_utils::prelude::*;
 fn instantiates() {
     let source = "#define macro HELLO_WORLD()";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let lexer = Lexer::new(flattened_source.source.clone());
+    let lexer = Lexer::new(flattened_source.source);
     assert!(!lexer.eof);
 }
 
@@ -22,7 +22,7 @@ fn instantiates() {
 fn single_line_comments() {
     let source = "// comment contents \n#define macro HELLO_WORLD()";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let mut lexer = Lexer::new(flattened_source.source.clone());
+    let mut lexer = Lexer::new(flattened_source.source);
 
     // The first token should be a single line comment
     let tok = lexer.next();
@@ -94,7 +94,7 @@ fn single_line_comments() {
 fn multi_line_comments() {
     let source = "/* comment contents*/#define macro HELLO_WORLD()";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let mut lexer = Lexer::new(flattened_source.source.clone());
+    let mut lexer = Lexer::new(flattened_source.source);
 
     // The first token should be a single line comment
     let tok = lexer.next();
diff --git a/huff_lexer/tests/context.rs b/huff_lexer/tests/context.rs
index 2887435..d213690 100644
--- a/huff_lexer/tests/context.rs
+++ b/huff_lexer/tests/context.rs
@@ -6,7 +6,7 @@ use huff_utils::prelude::*;
 fn function_context() {
     let source = "#define function test(bytes32) {} returns (address)";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let lexer = Lexer::new(flattened_source.source.clone());
+    let lexer = Lexer::new(flattened_source.source);
     let tokens = lexer
         .into_iter()
         .map(|x| x.unwrap())
@@ -26,7 +26,7 @@ fn function_context() {
 fn event_context() {
     let source = "#define event Transfer(bytes32,address)";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let lexer = Lexer::new(flattened_source.source.clone());
+    let lexer = Lexer::new(flattened_source.source);
     let tokens = lexer
         .into_iter()
         .map(|x| x.unwrap())
@@ -44,7 +44,7 @@ fn event_context() {
 fn macro_context() {
     let source = "#define macro TEST() = takes (0) returns (0) {byte}";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let lexer = Lexer::new(flattened_source.source.clone());
+    let lexer = Lexer::new(flattened_source.source);
     let tokens = lexer
         .into_iter()
         .map(|x| x.unwrap())
diff --git a/huff_lexer/tests/decorators.rs b/huff_lexer/tests/decorators.rs
index 4cf3fbf..2bc6b46 100644
--- a/huff_lexer/tests/decorators.rs
+++ b/huff_lexer/tests/decorators.rs
@@ -17,7 +17,7 @@ fn parses_decorator() {
         );
 
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let mut lexer = Lexer::new(flattened_source.source.clone());
+        let mut lexer = Lexer::new(flattened_source.source);
 
         let _ = lexer.next(); // whitespace
 
@@ -124,7 +124,7 @@ fn fails_to_parse_decorator_in_body() {
         );
 
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let mut lexer = Lexer::new(flattened_source.source.clone());
+        let mut lexer = Lexer::new(flattened_source.source);
 
         for token in lexer.by_ref() {
             if let Err(e) = token {
diff --git a/huff_lexer/tests/eof.rs b/huff_lexer/tests/eof.rs
index c363c72..e37bcea 100644
--- a/huff_lexer/tests/eof.rs
+++ b/huff_lexer/tests/eof.rs
@@ -5,7 +5,7 @@ use huff_utils::prelude::*;
 fn end_of_file() {
     let source = " ";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let mut lexer = Lexer::new(flattened_source.source.clone());
+    let mut lexer = Lexer::new(flattened_source.source);
 
     // Eats the whitespace
     let _ = lexer.next();
diff --git a/huff_lexer/tests/evm_types.rs b/huff_lexer/tests/evm_types.rs
index 0e11054..5c416a3 100644
--- a/huff_lexer/tests/evm_types.rs
+++ b/huff_lexer/tests/evm_types.rs
@@ -16,7 +16,7 @@ fn primitive_type_parsing() {
     for (evm_type, evm_type_enum) in evm_types {
         let source = &format!("#define function test({evm_type}) view returns (uint256)");
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let lexer = Lexer::new(flattened_source.source.clone());
+        let lexer = Lexer::new(flattened_source.source);
         let tokens = lexer
             .into_iter()
             .map(|x| x.unwrap())
@@ -42,7 +42,7 @@ fn bounded_array_parsing() {
     for (evm_type, evm_type_enum) in evm_types {
         let source = &format!("#define function test({evm_type}) view returns (uint256)");
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let lexer = Lexer::new(flattened_source.source.clone());
+        let lexer = Lexer::new(flattened_source.source);
         let tokens = lexer
             .into_iter()
             .map(|x| x.unwrap())
@@ -68,7 +68,7 @@ fn unbounded_array_parsing() {
     for (evm_type, evm_type_enum) in evm_types {
         let source = &format!("#define function test({evm_type}) view returns (uint256)");
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let lexer = Lexer::new(flattened_source.source.clone());
+        let lexer = Lexer::new(flattened_source.source);
         let tokens = lexer
             .into_iter()
             .map(|x| x.unwrap())
@@ -93,7 +93,7 @@ fn multidim_array_parsing() {
     for (evm_type, evm_type_enum) in evm_types {
         let source = &format!("#define function test({evm_type}) view returns (uint256)");
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let lexer = Lexer::new(flattened_source.source.clone());
+        let lexer = Lexer::new(flattened_source.source);
         let tokens = lexer
             .into_iter()
             .map(|x| x.unwrap())
diff --git a/huff_lexer/tests/fsp.rs b/huff_lexer/tests/fsp.rs
index bc254c6..d143efc 100644
--- a/huff_lexer/tests/fsp.rs
+++ b/huff_lexer/tests/fsp.rs
@@ -5,7 +5,7 @@ use huff_utils::prelude::*;
 fn free_storage_pointer() {
     let source = "FREE_STORAGE_POINTER() ";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let mut lexer = Lexer::new(flattened_source.source.clone());
+    let mut lexer = Lexer::new(flattened_source.source);
 
     // The first token should be the fsp
     let tok = lexer.next().unwrap().unwrap();
diff --git a/huff_lexer/tests/function_type.rs b/huff_lexer/tests/function_type.rs
index 10729ed..d8cf8fd 100644
--- a/huff_lexer/tests/function_type.rs
+++ b/huff_lexer/tests/function_type.rs
@@ -13,7 +13,7 @@ fn parses_function_type() {
     for (fn_type, fn_type_kind) in fn_types {
         let source = &format!("#define function test() {fn_type} returns (uint256)");
         let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-        let mut lexer = Lexer::new(flattened_source.source.clone());
+        let mut lexer = Lexer::new(flattened_source.source);
 
         let _ = lexer.next(); // #define
         let _ = lexer.next(); // whitespace
diff --git a/huff_lexer/tests/hex.rs b/huff_lexer/tests/hex.rs
index 0d5b1ff..b24ca84 100644
--- a/huff_lexer/tests/hex.rs
+++ b/huff_lexer/tests/hex.rs
@@ -5,7 +5,7 @@ use huff_utils::prelude::*;
 fn parses_single_hex() {
     let source = "0xa57B";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let mut lexer = Lexer::new(flattened_source.source.clone());
+    let mut lexer = Lexer::new(flattened_source.source);
 
     // The first and only token should be lexed as Literal(0xa57B)
     let tok = lexer.next().unwrap().unwrap();
@@ -20,7 +20,7 @@ fn parses_single_hex() {
 fn parses_bool() {
     let source = "false true";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let mut lexer = Lexer::new(flattened_source.source.clone());
+    let mut lexer = Lexer::new(flattened_source.source);
 
     // The first token should be lexed as a Literal representing 0x00
     let tok = lexer.next().unwrap().unwrap();
@@ -41,7 +41,7 @@ fn parses_bool() {
 fn parses_odd_len_hex() {
     let source = "0x1";
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let mut lexer = Lexer::new(flattened_source.source.clone());
+    let mut lexer = Lexer::new(flattened_source.source);
 
     // The first and only token should be lexed as Literal(0x1)
     let tok = lexer.next().unwrap().unwrap();
diff --git a/huff_lexer/tests/tables.rs b/huff_lexer/tests/tables.rs
index feabae2..1ff07d7 100644
--- a/huff_lexer/tests/tables.rs
+++ b/huff_lexer/tests/tables.rs
@@ -12,7 +12,7 @@ fn parses_jump_table() {
         .filter(|x| !matches!(x.kind, TokenKind::Whitespace))
         .collect::<Vec<Token>>();
 
-    assert_eq!(tokens.get(0).unwrap().kind, TokenKind::Define);
+    assert_eq!(tokens.first().unwrap().kind, TokenKind::Define);
     assert_eq!(tokens.get(1).unwrap().kind, TokenKind::JumpTable);
     assert_eq!(tokens.get(2).unwrap().kind, TokenKind::Ident(String::from("JUMP_TABLE")));
     assert_eq!(tokens.get(3).unwrap().kind, TokenKind::OpenParen);
@@ -30,7 +30,7 @@ fn parses_packed_jump_table() {
         .filter(|x| !matches!(x.kind, TokenKind::Whitespace))
         .collect::<Vec<Token>>();
 
-    assert_eq!(tokens.get(0).unwrap().kind, TokenKind::Define);
+    assert_eq!(tokens.first().unwrap().kind, TokenKind::Define);
     assert_eq!(tokens.get(1).unwrap().kind, TokenKind::JumpTablePacked);
     assert_eq!(tokens.get(2).unwrap().kind, TokenKind::Ident(String::from("JUMP_TABLE_PACKED")));
     assert_eq!(tokens.get(3).unwrap().kind, TokenKind::OpenParen);
@@ -48,7 +48,7 @@ fn parses_code_table() {
         .filter(|x| !matches!(x.kind, TokenKind::Whitespace))
         .collect::<Vec<Token>>();
 
-    assert_eq!(tokens.get(0).unwrap().kind, TokenKind::Define);
+    assert_eq!(tokens.first().unwrap().kind, TokenKind::Define);
     assert_eq!(tokens.get(1).unwrap().kind, TokenKind::CodeTable);
     assert_eq!(tokens.get(2).unwrap().kind, TokenKind::Ident(String::from("CODE_TABLE")));
     assert_eq!(tokens.get(3).unwrap().kind, TokenKind::OpenParen);
diff --git a/huff_parser/tests/abi.rs b/huff_parser/tests/abi.rs
index d054ce6..e9db7fc 100644
--- a/huff_parser/tests/abi.rs
+++ b/huff_parser/tests/abi.rs
@@ -7,7 +7,7 @@ fn build_abi_from_ast() {
     let source = "#define function test(uint256[2][],string) view returns(uint256)";
 
     let flattened_source = FullFileSource { source, file: None, spans: vec![] };
-    let lexer = Lexer::new(flattened_source.source.clone());
+    let lexer = Lexer::new(flattened_source.source);
     let tokens = lexer
         .into_iter()
         .map(|x| x.unwrap())
diff --git a/huff_parser/tests/macro.rs b/huff_parser/tests/macro.rs
index bc34e90..a201799 100644
--- a/huff_parser/tests/macro.rs
+++ b/huff_parser/tests/macro.rs
@@ -1232,3 +1232,67 @@ fn empty_test_with_multi_flag_decorator() {
     assert_eq!(macro_definition, expected);
     assert_eq!(parser.current_token.kind, TokenKind::Eof);
 }
+
+#[test]
+fn test_duplicate_macro_error() {
+    let source = r#"
+    #define macro CONSTRUCTOR() = takes(0) returns (0) {}
+
+    #define macro MINT() = takes(0) returns (0) {
+        0x04 calldataload   // [to]
+        0x00                // [from (0x00), to]
+        0x24 calldataload   // [value, from, to]
+    }
+
+    #define macro MINT() = takes(0) returns (0) {
+        0x04 calldataload   // [to]
+        0x00                // [from (0x00), to]
+        0x24 calldataload   // [value, from, to]
+    }
+
+    #define macro MAIN() = takes(0) returns (0) {
+        0x00 calldataload 0xE0 shr
+        dup1 0x40c10f19 eq mints jumpi
+
+        mints:
+            MINT()
+    }
+    "#;
+
+    let mut start = 0;
+    let target = "MINT";
+    let target_len = target.len();
+    let mut occurrences = Vec::new();
+
+    while let Some(pos) = source[start..].find(target) {
+        let adjusted_start = start + pos;
+        let adjusted_end = adjusted_start + target_len - 1;
+
+        occurrences.push((adjusted_start, adjusted_end));
+        start = adjusted_end + 1;
+    }
+
+    let full_source = FullFileSource { source, file: None, spans: vec![] };
+    let lexer = Lexer::new(full_source.source);
+    let tokens = lexer.into_iter().map(|x| x.unwrap()).collect::<Vec<Token>>();
+    let mut parser = Parser::new(tokens, Some("".to_string()));
+
+    // This should be caught before codegen invalid macro statement
+    match parser.parse() {
+        Ok(_) => panic!("moose"),
+        Err(e) => {
+            assert_eq!(
+                e,
+                ParserError {
+                    kind: ParserErrorKind::DuplicateMacro("MINT".to_string()),
+                    hint: Some("MACRO names should be unique".to_string()),
+                    spans: AstSpan(vec![Span {
+                        start: occurrences[1].0,
+                        end: occurrences[1].1,
+                        file: None
+                    }]),
+                }
+            )
+        }
+    }
+}
diff --git a/huff_tests/src/inspectors/cheats_inspector.rs b/huff_tests/src/inspectors/cheats_inspector.rs
index 4df7270..9c31d84 100644
--- a/huff_tests/src/inspectors/cheats_inspector.rs
+++ b/huff_tests/src/inspectors/cheats_inspector.rs
@@ -88,7 +88,7 @@ where
 
                 // Check if we have exactly one 32 byte input
                 if call.input.len() != 96 {
-                    return (InstructionResult::Revert, remaining_gas, out)
+                    return (InstructionResult::Revert, remaining_gas, out);
                 }
 
                 let log_item = hex::encode(&call.input[64..96]);
diff --git a/huff_tests/src/lib.rs b/huff_tests/src/lib.rs
index 487d5b0..a5d72c5 100644
--- a/huff_tests/src/lib.rs
+++ b/huff_tests/src/lib.rs
@@ -68,7 +68,7 @@ impl<'t> HuffTester<'t> {
     pub fn execute(mut self) -> Result<Vec<TestResult>, RunnerError> {
         // Check if any test macros exist
         if self.macros.is_empty() {
-            return Err(RunnerError(String::from("No test macros found.")))
+            return Err(RunnerError(String::from("No test macros found.")));
         }
 
         // Execute our tests and return a vector of the results
diff --git a/huff_tests/src/report.rs b/huff_tests/src/report.rs
index 0be48ca..7932dd2 100644
--- a/huff_tests/src/report.rs
+++ b/huff_tests/src/report.rs
@@ -83,7 +83,7 @@ pub fn print_test_report(results: Vec<TestResult>, report_kind: ReportKind, star
             } else {
                 eprintln!("Error serializing test results into JSON.");
             }
-            return
+            return;
         }
     }
     println!(
diff --git a/huff_tests/src/runner.rs b/huff_tests/src/runner.rs
index 912a31b..cd4fd23 100644
--- a/huff_tests/src/runner.rs
+++ b/huff_tests/src/runner.rs
@@ -145,7 +145,7 @@ impl TestRunner {
                         Some(hex::encode(b))
                     }
                 } else {
-                    return Err(RunnerError(String::from("Unexpected transaction kind")))
+                    return Err(RunnerError(String::from("Unexpected transaction kind")));
                 }
             }
             ExecutionResult::Revert { output, .. } => {