diff --git a/Cargo.lock b/Cargo.lock index 3dbe538..8cf0eef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -150,7 +150,7 @@ version = "0.1.101" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "365c0acd5b2e8dd0111a46c4faea83fb3cfb6e39a49a7c73a06e090db7b2eff0" dependencies = [ - "bitcoin_hashes", + "bitcoin_hashes 0.14.101", ] [[package]] @@ -173,17 +173,36 @@ checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" [[package]] name = "bip39" -version = "2.2.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90dbd31c98227229239363921e60fcf5e558e43ec69094d46fc4996f08d1d5bc" +checksum = "4559bb9225f8401dcea601cf8dc9ed81ea0dadd9cf7755fdefdd93ef7961e19e" dependencies = [ - "bitcoin_hashes", - "rand", - "rand_core", + "bitcoin_hashes 0.14.101", + "rand 0.8.7", + "rand_core 0.6.4", "serde", "unicode-normalization", ] +[[package]] +name = "bit-set" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56d87354e4229f54a44f7bf2435906a4656dba36026ab6eaca629a2c436a691c" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5727b15fa97d4f4fee0a3b7c3d550ed0269f54329207b86388de918604e31269" +dependencies = [ + "borsh", + "serde", +] + [[package]] name = "bitcoin" version = "0.32.102" @@ -193,9 +212,10 @@ dependencies = [ "base58ck", "base64 0.21.7", "bech32", + "bitcoin-consensus-encoding", "bitcoin-io", "bitcoin-units", - "bitcoin_hashes", + "bitcoin_hashes 0.14.101", "hex-conservative 0.2.2", "hex_lit", "secp256k1", @@ -255,6 +275,18 @@ dependencies = [ "serde", ] +[[package]] +name = "bitcoin_hashes" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5304e53726dbe5f93141535e102ed97b5bf4714fbecefdda8f9fb98d7fdaff0e" +dependencies = [ + "bitcoin-consensus-encoding", + "bitcoin-internals", + "hex-conservative 1.2.0", + "serde", +] + [[package]] name = "bitcoincore-rpc" version = "0.19.0" @@ -306,11 +338,35 @@ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "borsh" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" dependencies = [ - "generic-array", + "borsh-derive", + "bytes", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cdfe656708a01f89b451a7d36466e6fe6c414de0aa18fc54f864f6f9ca9f56" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 3.0.9", ] [[package]] @@ -335,6 +391,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" + [[package]] name = "cc" version = "1.4.2" @@ -353,6 +415,23 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cfg_aliases" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures", + "rand_core 0.10.1", +] + [[package]] name = "chumsky" version = "0.11.2" @@ -403,17 +482,35 @@ dependencies = [ "cc", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + +[[package]] +name = "core_detect" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f8f80099a98041a3d1622845c271458a2d73e688351bf3cb999266764b81d48" + [[package]] name = "cpufeatures" -version = "0.2.17" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" dependencies = [ "libc", ] @@ -445,23 +542,32 @@ checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "typenum", + "hybrid-array", +] + +[[package]] +name = "ctutils" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261af4dc7a06ea8a527a8717d8cbba3417530d6ea14e1edb3de6b67806be474f" +dependencies = [ + "cmov", ] [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", + "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -478,9 +584,9 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" +checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" dependencies = [ "serde", ] @@ -512,12 +618,16 @@ dependencies = [ [[package]] name = "elements" -version = "0.25.3" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c63a04238f4b7f3564fe9705921452c2900efd00982545e5c634fac9024fe2" +checksum = "34e00f7ddcd826d2f4c9bd72d79a6b6991a0ac4286e7e2b2ff8eecd130549073" dependencies = [ "bech32", "bitcoin", + "bitcoin-consensus-encoding", + "bitcoin-internals", + "bitcoin_hashes 1.2.0", + "hex-conservative 1.2.0", "secp256k1-zkp", "serde", "serde_json", @@ -525,9 +635,9 @@ dependencies = [ [[package]] name = "elements-miniscript" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571fa105690f83c7833df2109eb2e14ca0e62d633d2624ffcb166ff18a3da870" +checksum = "0c18e931c81e6e7e58d63b6fea1c57f5534717f0e6721741c4fce72a6c547e19" dependencies = [ "bitcoin", "elements", @@ -563,6 +673,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "foldhash" version = "0.1.5" @@ -599,16 +715,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getopts" version = "0.2.24" @@ -640,6 +746,7 @@ dependencies = [ "cfg-if", "libc", "r-efi", + "rand_core 0.10.1", ] [[package]] @@ -648,12 +755,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8449d342b1c67f49169e92e71deb7b9b27f30062301a16dbc27a4cc8d2351b7" -[[package]] -name = "glob" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" - [[package]] name = "globset" version = "0.4.20" @@ -727,9 +828,9 @@ checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] @@ -743,6 +844,15 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "hybrid-array" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" +dependencies = [ + "typenum", +] + [[package]] name = "ignore" version = "0.4.33" @@ -933,6 +1043,15 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + [[package]] name = "object" version = "0.39.1" @@ -1006,12 +1125,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.37" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +checksum = "2bfe0f4c752e450fc2faf62654f1c134747922825d5b04ca717b8874f41a40c0" dependencies = [ "proc-macro2", - "syn 2.0.119", + "syn 3.0.9", ] [[package]] @@ -1023,27 +1142,19 @@ dependencies = [ "pretty", "serde", "similar", - "simplicityhl 0.7.1", + "simplicityhl 0.9.0", "term", "thiserror", - "toml", + "toml 0.9.12+spec-1.1.0", ] [[package]] -name = "prettysimf" -version = "0.0.1" +name = "proc-macro-crate" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff006fb5abee0676279d3eb61cea7ddce0884f23f93567e34d22d555085f9120" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "annotate-snippets", - "either", - "pretty", - "serde", - "similar", - "simplicityhl 0.7.1", - "term", - "thiserror", - "toml", + "toml_edit", ] [[package]] @@ -1055,6 +1166,26 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proptest" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8530004ccb15eae51c7e40009fbe317f341f804db54dc033eec1c50be28cfa0" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.13.1", + "chacha20", + "core_detect", + "num-traits", + "rand 0.10.3", + "rand_xorshift", + "regex-syntax 0.8.11", + "rusty-fork", + "tempfile", + "unarray", +] + [[package]] name = "psm" version = "0.1.32" @@ -1065,6 +1196,12 @@ dependencies = [ "cc", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quote" version = "1.0.47" @@ -1088,7 +1225,18 @@ checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "libc", "rand_chacha", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", ] [[package]] @@ -1098,7 +1246,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1110,6 +1258,21 @@ dependencies = [ "getrandom 0.2.17", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rand_xorshift" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60aa6af80be32871323012e02e6e65f8a7cc7890931ae421d217ad8fe0df2ccf" +dependencies = [ + "rand_core 0.10.1", +] + [[package]] name = "regex-automata" version = "0.3.9" @@ -1226,6 +1389,18 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" +[[package]] +name = "rusty-fork" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + [[package]] name = "same-file" version = "1.0.6" @@ -1241,8 +1416,8 @@ version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ - "bitcoin_hashes", - "rand", + "bitcoin_hashes 0.14.101", + "rand 0.8.7", "secp256k1-sys", "serde", ] @@ -1263,7 +1438,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52a44aed3002b5ae975f8624c5df3a949cfbf00479e18778b6058fcd213b76e3" dependencies = [ "bitcoin-private", - "rand", + "rand 0.8.7", "secp256k1", "secp256k1-zkp-sys", "serde", @@ -1312,14 +1487,14 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] [[package]] name = "serde_json" -version = "1.0.151" +version = "1.0.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6" dependencies = [ "itoa", "memchr", @@ -1330,18 +1505,18 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +checksum = "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c" dependencies = [ "serde_core", ] [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "47d7069beb7d6ac7b9acd1039986e73443f24234f41074da099d6f994ac9ad19" dependencies = [ "cfg-if", "cpufeatures", @@ -1370,10 +1545,10 @@ dependencies = [ "anyhow", "getopts", "paste", - "prettysimf 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prettysimf", "smplx-std", "thiserror", - "toml", + "toml 0.9.12+spec-1.1.0", "tracing", "tracing-subscriber", ] @@ -1389,37 +1564,38 @@ dependencies = [ [[package]] name = "simplicity-lang" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13ed081e3046d66c146d7201bcbf3b655ca3436cb83f6efc26d7895bd2b79d06" +checksum = "cff7b10251528d46d9cf60238267911984fedbb0948cccea98dd74fc6bf9f729" dependencies = [ "bitcoin", - "bitcoin_hashes", + "bitcoin_hashes 1.2.0", "byteorder", "elements", "getrandom 0.2.17", "ghost-cell", - "hex-conservative 0.2.2", + "hex-conservative 1.2.0", "miniscript", "simplicity-sys", ] [[package]] name = "simplicity-sys" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d1ec5477c7650b8ef511aa56dccb28f2e8cdb6e87f260ecffdaf0ebfef2d3b" +checksum = "955935733b2735665b4735d9b1361eade6be4c7aea6bca2640345e4c81756f58" dependencies = [ - "bitcoin_hashes", + "bitcoin_hashes 1.2.0", "cc", ] [[package]] name = "simplicityhl" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "361316795ec753230c421d964ab60940d20d5252c2d39272452528832c9e0ec5" +checksum = "9e110f12190a4df92970b50d701f7da979638a60c5bf8294d55e4a55aceebf3e" dependencies = [ + "ariadne", "base64 0.21.7", "chumsky", "clap", @@ -1427,6 +1603,7 @@ dependencies = [ "getrandom 0.2.17", "itertools", "miniscript", + "semver", "serde", "serde_json", "simplicity-lang", @@ -1434,9 +1611,9 @@ dependencies = [ [[package]] name = "simplicityhl" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9483a06afd760e341a3770dc0be007d61a0978c12353dc215ca9f39edd9efc" +checksum = "850c93fc9906e3324a299f50912d6176cdb381d31959362a7dd116fd2d0679a3" dependencies = [ "ariadne", "base64 0.21.7", @@ -1466,40 +1643,40 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smplx-build" -version = "0.0.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f3e2235cc1bb20a5dda4bd32c9be665f39c95f1bcc62d7aa2a9adfc8fb670f" +checksum = "9c9a9658644c4f02ccbc3b937abe5b4d705bf966a8e3e53bc1cd8e667c388d04" dependencies = [ - "glob", "globwalk", "pathdiff", "prettyplease", "proc-macro2", "quote", "serde", - "simplicityhl 0.6.0", - "syn 2.0.119", + "serde_json", + "simplicityhl 0.8.0", + "syn 3.0.9", "thiserror", - "toml", + "toml 1.2.0+spec-1.1.0", "toml_edit", ] [[package]] name = "smplx-macros" -version = "0.0.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e1a764666ba1aada361499286710a0d5d7f1a0251d882a0843bb67ae5b7973" +checksum = "3a18f860c7887452be1ef87ef7d4d5a902f36a4e06e24eceddce9d93c4ddf7c5" dependencies = [ "smplx-build", "smplx-test", - "syn 2.0.119", + "syn 3.0.9", ] [[package]] name = "smplx-regtest" -version = "0.0.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60a5ca5ccc0b531f4915f1d044c68b7ba3bc344e84ac019f539b2e488c8c8d7" +checksum = "ae054f3398f028a95f4ed90b08e335e5cb28577ed38adfd7afe9ef8e7918e53e" dependencies = [ "electrsd", "hex", @@ -1508,17 +1685,16 @@ dependencies = [ "sha2", "smplx-sdk", "thiserror", - "toml", + "toml 1.2.0+spec-1.1.0", ] [[package]] name = "smplx-sdk" -version = "0.0.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940acb2e942bda24f3f27c3a387aabcf866dc16299746e79a58b47d091162f5d" +checksum = "bbee01803607eb960ab359e672e8950bdb470505d76d7292f293f03bc675fb62" dependencies = [ "bip39", - "bitcoin_hashes", "bitcoincore-rpc", "dyn-clone", "elements-miniscript", @@ -1526,20 +1702,21 @@ dependencies = [ "minreq 3.0.0", "serde", "serde_json", - "sha2", - "simplicityhl 0.6.0", + "simplicityhl 0.8.0", "thiserror", ] [[package]] name = "smplx-std" -version = "0.0.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfa462d2e480d1fa6baa382d578501991fd19c3fb15ae5cdd44be362ef5e9ef" +checksum = "252afbfab65a8a7eb570e2b735c6457173a4b58e480401c450cc46e8e9987104" dependencies = [ "either", + "rand 0.10.3", + "rand_core 0.10.1", "serde", - "simplicityhl 0.6.0", + "simplicityhl 0.8.0", "smplx-macros", "smplx-sdk", "smplx-test", @@ -1547,20 +1724,22 @@ dependencies = [ [[package]] name = "smplx-test" -version = "0.0.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76eab48bbf610aea049644b6aacffebbb194e59c663cd450b1f30a29ead19c1" +checksum = "0a8318de9a6cc44f0cd03fd1af0092e0b8c670257536111e27d1782728ba0656" dependencies = [ "electrsd", "proc-macro2", + "proptest", "quote", + "rand 0.10.3", "serde", - "simplicityhl 0.6.0", + "simplicityhl 0.8.0", "smplx-regtest", "smplx-sdk", - "syn 2.0.119", + "syn 3.0.9", "thiserror", - "toml", + "toml 1.2.0+spec-1.1.0", ] [[package]] @@ -1601,9 +1780,9 @@ dependencies = [ [[package]] name = "syn" -version = "3.0.3" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" dependencies = [ "proc-macro2", "quote", @@ -1634,22 +1813,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.20" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" +checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.20" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" +checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] [[package]] @@ -1691,6 +1870,21 @@ dependencies = [ "winnow 0.7.15", ] +[[package]] +name = "toml" +version = "1.2.0+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5ffcdf8f50436dbbfd675c1fe1b8e0854f42b7defea8584bdebe1aee900e561" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime 1.1.2+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 1.0.4", +] + [[package]] name = "toml_datetime" version = "0.7.5+spec-1.1.0" @@ -1702,21 +1896,21 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "1.1.1+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +checksum = "2b86d767906c6c42421dcba507eb9d203e779497710a47782a224bb871653053" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.25.13+spec-1.1.0" +version = "0.25.18+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" +checksum = "1ec6e78bd70db9420d8d212fa9dc97f116448a1ceff5d00eabb991d407e21396" dependencies = [ "indexmap", - "toml_datetime 1.1.1+spec-1.1.0", + "toml_datetime 1.1.2+spec-1.1.0", "toml_parser", "toml_writer", "winnow 1.0.4", @@ -1724,18 +1918,18 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.1.3+spec-1.1.0" +version = "1.1.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" +checksum = "baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c" dependencies = [ "winnow 1.0.4", ] [[package]] name = "toml_writer" -version = "1.1.2+spec-1.1.0" +version = "1.2.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" +checksum = "009dbb7700f11c55ef83aebbe4c0e9cf1f1ac0844bd8d6f00dc38f302026e13a" [[package]] name = "tracing" @@ -1810,6 +2004,12 @@ version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" +[[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.24" @@ -1862,10 +2062,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] -name = "version_check" -version = "0.9.5" +name = "wait-timeout" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] [[package]] name = "walkdir" diff --git a/Cargo.toml b/Cargo.toml index d69032e..d16e99d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,14 +17,15 @@ deprecated_in_future = "warn" multiple_crate_versions = "allow" [workspace.dependencies] -simplicityhl = { version = "0.7.1", features = ["fmt"] } +prettysimf = { path = "./crates/prettysimf", version = "=0.0.1" } + +simplicityhl = { version = "0.9.0", features = ["fmt"] } annotate-snippets = { version = "0.12.16" } anyhow = { version = "1.0.103" } either = { version = "1.16.0" } getopts = { version = "0.2.24" } pretty = { version = "0.12.5" } -prettysimf = { version = "0.0.1" } serde = { version = "1.0.228" } similar = { version = "3.1.1" } term = { version = "1.2.1" } diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 46157d7..c329fc0 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -37,4 +37,4 @@ tracing-subscriber = { workspace = true } [dev-dependencies] paste = "1.0.15" -smplx-std = { version = "0.0.9" } +smplx-std = { version = "0.2.0" } diff --git a/crates/cli/tests/simfmt/ui/mod.rs b/crates/cli/tests/simfmt/ui/mod.rs index 2bfb06b..8cd1504 100644 --- a/crates/cli/tests/simfmt/ui/mod.rs +++ b/crates/cli/tests/simfmt/ui/mod.rs @@ -1,6 +1,8 @@ use std::fs; use std::path::Path; +use simplex::simplicityhl::TemplateAst; + use crate::simfmt; fn assert_fixture(input_file: &str, target_file: &str) { @@ -54,12 +56,11 @@ fn assert_eq_cmr( } fn get_cmr(source_name: &str, source: &str, arguments: simplex::simplicityhl::Arguments) -> String { + use simplex::simplicityhl::UnstableFeatures; use simplex::simplicityhl::ast::ElementsJetHinter; - use simplex::simplicityhl::{TemplateProgram, UnstableFeatures}; - let template = - TemplateProgram::new_with_unstable(source, &UnstableFeatures::all(), Box::new(ElementsJetHinter::new())) - .unwrap_or_else(|error| panic!("failed to compile template `{source_name}`: {error}")); + let template = TemplateAst::new_with_unstable(source, &UnstableFeatures::all(), Box::new(ElementsJetHinter::new())) + .unwrap_or_else(|error| panic!("failed to compile template `{source_name}`: {error}")); let compiled = template .instantiate(arguments, false) .unwrap_or_else(|error| panic!("failed to instantiate `{source_name}`: {error}")); @@ -110,32 +111,95 @@ macro_rules! ui_tests { // We wrap arguments type in literal to reduce errors in IDEs macro_rules! cmr_ui_tests { - ($($name:ident: $input:tt => $expected:tt, $module:ident, $arguments:literal,)+) => { + ($($name:ident: $input:tt => $expected:tt, $args_module:ident, $arguments:literal, $program:literal, $source:literal),+ $(,)?) => { $( #[test] fn $name() { - use simplex::program::ArgumentsTrait; - #[allow(clippy::unused_unit)] mod input { simplex::include_simf!($input); paste::paste! { - pub(super) type TestArguments = $module::[<$arguments>]; + use simplex::program::{Program}; + use simplex::simplicityhl::Arguments; + + #[allow(dead_code)] + struct [<$program>] { + program: Program + } + + impl [<$program>] { + #[allow(dead_code)] + const SOURCE: &'static str = $args_module::[<$source>]; + + #[allow(dead_code)] + fn new(arguments: impl Into) -> Self { + Self { + program: Program::new(Self::SOURCE, arguments.into()), + } + } + } + + impl AsRef for [<$program>] { + fn as_ref(&self) -> &Program { + &self.program + } + } + + impl AsMut for [<$program>] { + fn as_mut(&mut self) -> &mut Program { + &mut self.program + } + } + + pub(super) type TestArguments = $args_module::[<$arguments>]; } } + #[allow(clippy::unused_unit)] mod target { simplex::include_simf!($expected); paste::paste! { - pub(super) type TestArguments = $module::[<$arguments>]; + use simplex::program::{Program}; + use simplex::simplicityhl::Arguments; + + #[allow(dead_code)] + struct [<$program>] { + program: Program + } + + impl [<$program>] { + #[allow(dead_code)] + const SOURCE: &'static str = $args_module::[<$source>]; + + #[allow(dead_code)] + fn new(arguments: impl Into) -> Self { + Self { + program: Program::new(Self::SOURCE, arguments.into()), + } + } + } + + impl AsRef for [<$program>] { + fn as_ref(&self) -> &Program { + &self.program + } + } + + impl AsMut for [<$program>] { + fn as_mut(&mut self) -> &mut Program { + &mut self.program + } + } + + pub(super) type TestArguments = $args_module::[<$arguments>]; } } assert_eq_cmr( $input, - input::TestArguments::default().build_arguments(), + input::TestArguments::default().into(), $expected, - target::TestArguments::default().build_arguments(), + target::TestArguments::default().into(), ); } )+ @@ -154,19 +218,19 @@ macro_rules! failing_ui_tests { } cmr_ui_tests! { - cmr_array_tr_storage: "tests/source/real_contracts/array_tr_storage.simf" => "tests/target/real_contracts/array_tr_storage.simf", derived_array_tr_storage, "ArrayTrStorageArguments", - cmr_bytes32_tr_storage: "tests/source/real_contracts/bytes32_tr_storage.simf" => "tests/target/real_contracts/bytes32_tr_storage.simf", derived_bytes32_tr_storage, "Bytes32TrStorageArguments", - cmr_dual_currency_deposit: "tests/source/real_contracts/dual_currency_deposit.simf" => "tests/target/real_contracts/dual_currency_deposit.simf", derived_dual_currency_deposit, "DualCurrencyDepositArguments", - cmr_either_with_single_witness: "tests/source/real_contracts/either_with_single_witness.simf" => "tests/target/real_contracts/either_with_single_witness.simf", derived_either_with_single_witness, "EitherWithSingleWitnessArguments", - cmr_exotic_values: "tests/source/real_contracts/exotic_values.simf" => "tests/target/real_contracts/exotic_values.simf", derived_exotic_values, "ExoticValuesArguments", - cmr_option_offer: "tests/source/real_contracts/option_offer.simf" => "tests/target/real_contracts/option_offer.simf", derived_option_offer, "OptionOfferArguments", - cmr_options: "tests/source/real_contracts/options.simf" => "tests/target/real_contracts/options.simf", derived_options, "OptionsArguments", - cmr_simple_storage: "tests/source/real_contracts/simple_storage.simf" => "tests/target/real_contracts/simple_storage.simf", derived_simple_storage, "SimpleStorageArguments", - cmr_single_bit: "tests/source/real_contracts/single_bit.simf" => "tests/target/real_contracts/single_bit.simf", derived_single_bit, "SingleBitArguments", - cmr_maker_order: "tests/source/real_contracts/maker_order.simf" => "tests/target/real_contracts/maker_order.simf", derived_maker_order, "MakerOrderArguments", - cmr_prediction_market: "tests/source/real_contracts/prediction_market.simf" => "tests/target/real_contracts/prediction_market.simf", derived_prediction_market, "PredictionMarketArguments", - cmr_match_arm_blocks: "tests/source/various/match_arm_blocks.simf" => "tests/target/various/match_arm_blocks.simf", derived_match_arm_blocks, "MatchArmBlocksArguments", - cmr_omit_comas_in_tuples: "tests/source/various/omit_comas_in_tuples.simf" => "tests/target/various/omit_comas_in_tuples.simf", derived_omit_comas_in_tuples, "OmitComasInTuplesArguments", + cmr_array_tr_storage: "tests/source/real_contracts/array_tr_storage.simf" => "tests/target/real_contracts/array_tr_storage.simf", derived_array_tr_storage, "ArrayTrStorageArguments", "ArrayTrStorageProgram", "ARRAY_TR_STORAGE_CONTRACT_SOURCE", + cmr_bytes32_tr_storage: "tests/source/real_contracts/bytes32_tr_storage.simf" => "tests/target/real_contracts/bytes32_tr_storage.simf", derived_bytes32_tr_storage, "Bytes32TrStorageArguments", "Bytes32TrStorageProgram", "BYTES32_TR_STORAGE_CONTRACT_SOURCE", + cmr_dual_currency_deposit: "tests/source/real_contracts/dual_currency_deposit.simf" => "tests/target/real_contracts/dual_currency_deposit.simf", derived_dual_currency_deposit, "DualCurrencyDepositArguments", "DualCurrencyDepositProgram", "DUAL_CURRENCY_DEPOSIT_CONTRACT_SOURCE", + cmr_either_with_single_witness: "tests/source/real_contracts/either_with_single_witness.simf" => "tests/target/real_contracts/either_with_single_witness.simf", derived_either_with_single_witness, "EitherWithSingleWitnessArguments", "EitherWithSingleWitnessProgram", "EITHER_WITH_SINGLE_WITNESS_CONTRACT_SOURCE", + cmr_exotic_values: "tests/source/real_contracts/exotic_values.simf" => "tests/target/real_contracts/exotic_values.simf", derived_exotic_values, "ExoticValuesArguments", "ExoticValuesProgram", "EXOTIC_VALUES_CONTRACT_SOURCE", + cmr_option_offer: "tests/source/real_contracts/option_offer.simf" => "tests/target/real_contracts/option_offer.simf", derived_option_offer, "OptionOfferArguments", "OptionOfferProgram", "OPTION_OFFER_CONTRACT_SOURCE", + cmr_options: "tests/source/real_contracts/options.simf" => "tests/target/real_contracts/options.simf", derived_options, "OptionsArguments", "OptionsProgram", "OPTIONS_CONTRACT_SOURCE", + cmr_simple_storage: "tests/source/real_contracts/simple_storage.simf" => "tests/target/real_contracts/simple_storage.simf", derived_simple_storage, "SimpleStorageArguments", "SimpleStorageProgram", "SIMPLE_STORAGE_CONTRACT_SOURCE", + cmr_single_bit: "tests/source/real_contracts/single_bit.simf" => "tests/target/real_contracts/single_bit.simf", derived_single_bit, "SingleBitArguments", "SingleBitProgram", "SINGLE_BIT_CONTRACT_SOURCE", + cmr_maker_order: "tests/source/real_contracts/maker_order.simf" => "tests/target/real_contracts/maker_order.simf", derived_maker_order, "MakerOrderArguments", "MakerOrderProgram", "MAKER_ORDER_CONTRACT_SOURCE", + cmr_prediction_market: "tests/source/real_contracts/prediction_market.simf" => "tests/target/real_contracts/prediction_market.simf", derived_prediction_market, "PredictionMarketArguments", "PredictionMarketProgram", "PREDICTION_MARKET_CONTRACT_SOURCE", + cmr_match_arm_blocks: "tests/source/various/match_arm_blocks.simf" => "tests/target/various/match_arm_blocks.simf", derived_match_arm_blocks, "MatchArmBlocksArguments", "MatchArmBlocksProgram", "MATCH_ARM_BLOCKS_CONTRACT_SOURCE", + cmr_omit_comas_in_tuples: "tests/source/various/omit_comas_in_tuples.simf" => "tests/target/various/omit_comas_in_tuples.simf", derived_omit_comas_in_tuples, "OmitComasInTuplesArguments", "OmitComasInTuplesProgram", "OMIT_COMAS_IN_TUPLES_CONTRACT_SOURCE", } // We can't generate arguments for this contracts: diff --git a/crates/prettysimf/src/emitter/diff.rs b/crates/prettysimf/src/emitter/diff.rs index 7d2b991..bacc519 100644 --- a/crates/prettysimf/src/emitter/diff.rs +++ b/crates/prettysimf/src/emitter/diff.rs @@ -1,8 +1,5 @@ use super::{Emitter, EmitterConfig, EmitterResult, FormattedFile, Write, io}; -#[cfg(test)] -use super::FileName; - use crate::utils::{OutputWriter, Verbosity}; use similar::{ChangeTag, DiffTag, TextDiff}; @@ -100,7 +97,9 @@ fn make_diff<'a>(original: &'a str, formatted: &'a str) -> TextDiff<'a, 'a, str> #[cfg(test)] mod tests { + use super::super::FileName; use super::*; + use std::path::PathBuf; use std::sync::atomic::{AtomicUsize, Ordering}; @@ -202,7 +201,7 @@ mod tests { ) .unwrap(); assert!(result.has_diff); - assert!(writer.is_empty()); + assert_eq!(writer, [] as [u8; 0]); } #[test] diff --git a/crates/prettysimf/src/fmt_processor/fmt_context.rs b/crates/prettysimf/src/fmt_processor/fmt_context.rs index 31c57d0..e87001e 100644 --- a/crates/prettysimf/src/fmt_processor/fmt_context.rs +++ b/crates/prettysimf/src/fmt_processor/fmt_context.rs @@ -143,7 +143,7 @@ mod tests { let mut formatted = String::new(); ensure_single_trailing_newline(NewlineStyle::Unix, &mut formatted, ""); - assert!(formatted.is_empty()); + assert_eq!(formatted, ""); } #[test]