From 9573d3d03a13c23edf988712188b99e77717c632 Mon Sep 17 00:00:00 2001 From: Mario Carneiro Date: Tue, 16 Jul 2024 04:15:07 +0200 Subject: [PATCH] update dependencies --- mm0-rs/Cargo.lock | 1114 ++++++++--------- mm0-rs/Cargo.toml | 32 +- mm0-rs/components/debug_derive/Cargo.toml | 2 +- mm0-rs/components/mm0_deepsize/Cargo.toml | 6 +- mm0-rs/components/mm0_deepsize/src/lib.rs | 4 +- .../components/mm0_deepsize_derive/Cargo.toml | 2 +- mm0-rs/components/mm0_util/Cargo.toml | 8 +- mm0-rs/components/mm0_util/src/ids.rs | 5 +- mm0-rs/components/mm0_util/src/lib.rs | 31 +- mm0-rs/components/mm0b_parser/Cargo.toml | 6 +- mm0-rs/components/mm0b_parser/src/lib.rs | 14 +- mm0-rs/components/mm0b_parser/src/parser.rs | 16 +- mm0-rs/components/mm0b_parser/src/ty.rs | 4 +- mm0-rs/components/mm1_parser/Cargo.toml | 8 +- mm0-rs/components/mm1_parser/fuzz/Cargo.toml | 2 +- mm0-rs/components/mm1_parser/src/lib.rs | 14 +- mm0-rs/components/mmcc/Cargo.toml | 12 +- mm0-rs/components/mmcc/src/types/ast.rs | 1 + mm0-rs/components/mmcc/src/types/mir.rs | 1 + mm0-rs/components/mmcc/src/types/ty.rs | 5 +- mm0-rs/src/compiler.rs | 124 +- mm0-rs/src/doc/mod.rs | 18 +- mm0-rs/src/elab/lisp/debug.rs | 2 +- mm0-rs/src/server.rs | 5 +- 24 files changed, 669 insertions(+), 767 deletions(-) diff --git a/mm0-rs/Cargo.lock b/mm0-rs/Cargo.lock index c5893955..970d8024 100644 --- a/mm0-rs/Cargo.lock +++ b/mm0-rs/Cargo.lock @@ -19,6 +19,12 @@ dependencies = [ "version_check", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -30,56 +36,94 @@ dependencies = [ [[package]] name = "annotate-snippets" -version = "0.9.1" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b9d411ecbaf79885c6df4d75fff75858d5995ff25385657a28af47e82f9c36" +checksum = "24e35ed54e5ea7997c14ed4c70ba043478db1112e98263b3b035907aa197d991" dependencies = [ + "anstyle", "unicode-width", - "yansi-term", ] [[package]] -name = "arrayvec" -version = "0.5.2" +name = "anstream" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] [[package]] -name = "arrayvec" -version = "0.7.2" +name = "anstyle" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] -name = "atty" -version = "0.2.14" +name = "anstyle-parse" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ - "hermit-abi", - "libc", - "winapi", + "utf8parse", ] [[package]] -name = "autocfg" +name = "anstyle-query" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "base-x" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" [[package]] name = "bit-set" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" +checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" dependencies = [ - "bit-vec", + "bit-vec 0.7.0", ] [[package]] @@ -88,12 +132,24 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" + [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + [[package]] name = "bitmaps" version = "2.1.0" @@ -103,29 +159,38 @@ dependencies = [ "typenum", ] +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.1.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" [[package]] name = "cc" -version = "1.0.79" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" [[package]] name = "cesu8" @@ -141,70 +206,67 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.23" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ + "android-tzdata", "iana-time-zone", - "num-integer", "num-traits", - "winapi", + "windows-targets 0.52.6", ] [[package]] name = "clap" -version = "3.1.18" +version = "4.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" +checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" dependencies = [ - "atty", - "bitflags", + "clap_builder", "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +dependencies = [ + "anstream", + "anstyle", "clap_lex", - "indexmap", - "lazy_static", "strsim", - "termcolor", - "textwrap", ] [[package]] name = "clap_derive" -version = "3.1.18" +version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" +checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" dependencies = [ "heck", - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.96", + "syn 2.0.71", ] [[package]] name = "clap_lex" -version = "0.2.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" -dependencies = [ - "os_str_bytes", -] +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] -name = "codespan-reporting" -version = "0.11.1" +name = "colorchoice" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "combine" -version = "4.6.4" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a604e93b79d1808327a6fca85a6f2d69de66461e7620f5a4cbf5fb4d1d7c948" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -222,9 +284,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -232,26 +294,25 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" dependencies = [ - "cfg-if", "crossbeam-channel", "crossbeam-deque", "crossbeam-epoch", @@ -261,135 +322,62 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.4" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.8" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "lazy_static", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.5" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" -dependencies = [ - "cfg-if", - "lazy_static", -] - -[[package]] -name = "cty" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" - -[[package]] -name = "cxx" -version = "1.0.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc831ee6a32dd495436e317595e639a587aa9907bef96fe6e6abc290ab6204e9" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.89" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94331d54f1b1a8895cd81049f7eaaaef9d05a7dcb4d1fd08bf3ff0806246789d" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 1.0.96", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dcd35ba14ca9b40d6e4b4b39961f23d835dbb8eed74565ded361d93e1feb8a" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bbeb29798b407ccd82a3324ade1a7286e0d29851475990b612670f6f5124d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.96", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "debug_derive" version = "0.1.0" dependencies = [ "quote", - "syn 1.0.96", -] - -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", + "syn 2.0.71", ] [[package]] -name = "dirs-sys" -version = "0.3.7" +name = "deranged" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ - "libc", - "redox_users", - "winapi", + "powerfmt", ] [[package]] @@ -400,45 +388,53 @@ checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "either" -version = "1.6.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "errno" -version = "0.3.5" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", ] +[[package]] +name = "fluent-uri" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "futures" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -451,9 +447,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -461,15 +457,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -479,38 +475,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 1.0.96", + "syn 2.0.71", ] [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -544,9 +540,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -555,33 +551,24 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" - -[[package]] -name = "hashbrown" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ "ahash", ] [[package]] name = "heck" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -589,37 +576,44 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows-core", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] name = "idna" -version = "0.2.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] @@ -644,21 +638,11 @@ dependencies = [ "version_check", ] -[[package]] -name = "indexmap" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a" -dependencies = [ - "autocfg", - "hashbrown 0.11.2", -] - [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", "js-sys", @@ -668,42 +652,40 @@ dependencies = [ ] [[package]] -name = "io-lifetimes" -version = "1.0.5" +name = "is_terminal_polyfill" +version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" -dependencies = [ - "libc", - "windows-sys 0.45.0", -] +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "itertools" -version = "0.10.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jni" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", "thiserror", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -714,54 +696,42 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "js-sys" -version = "0.3.57" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.139" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" - -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "log" -version = "0.4.17" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lsp-server" -version = "0.6.0" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f70570c1c29cf6654029b8fe201a5507c153f0d85be6f234d471d756bc36775a" +checksum = "248f65b78f6db5d8e1b1604b4098a28b43d21a8eb1deeca22b1c421b276c7095" dependencies = [ "crossbeam-channel", "log", @@ -771,37 +741,22 @@ dependencies = [ [[package]] name = "lsp-types" -version = "0.93.0" +version = "0.97.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70c74e2173b2b31f8655d33724b4b45ac13f439386f66290f539c22b144c2212" +checksum = "53353550a17c04ac46c585feb189c2db82154fc84b79c7a66c96c2c644f66071" dependencies = [ - "bitflags", + "bitflags 1.3.2", + "fluent-uri", "serde", "serde_json", "serde_repr", - "url", ] -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" - [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap" @@ -813,20 +768,11 @@ dependencies = [ "winapi", ] -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "miniz_oxide" -version = "0.6.4" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2e212582ede878b109755efd0773a4f0f4ec851584cf0aefbeb4d9ecc114822" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] @@ -836,9 +782,9 @@ name = "mm0-rs" version = "0.1.0" dependencies = [ "annotate-snippets", - "arrayvec 0.7.2", + "arrayvec 0.7.4", "bit-set", - "bitflags", + "bitflags 2.6.0", "byteorder", "clap", "console_error_panic_hook", @@ -867,11 +813,13 @@ dependencies = [ "pretty", "procfs", "pulldown-cmark", + "pulldown-cmark-escape", "serde", "serde_json", "serde_repr", "simplelog", "typed-arena", + "url", "wasm-bindgen", "web-sys", "webbrowser", @@ -883,7 +831,7 @@ name = "mm0_deepsize" version = "0.1.3" dependencies = [ "bit-set", - "bit-vec", + "bit-vec 0.7.0", "futures", "lsp-types", "memmap", @@ -899,14 +847,14 @@ version = "0.1.2" dependencies = [ "proc-macro2", "quote", - "syn 1.0.96", + "syn 2.0.71", ] [[package]] name = "mm0_util" version = "0.1.4" dependencies = [ - "bitflags", + "bitflags 2.6.0", "libc", "lsp-types", "mm0_deepsize", @@ -945,13 +893,13 @@ dependencies = [ name = "mmcc" version = "0.1.0" dependencies = [ - "arrayvec 0.7.2", + "arrayvec 0.7.4", "bit-set", - "bit-vec", - "bitflags", + "bit-vec 0.6.3", + "bitflags 2.6.0", "bumpalo", "byteorder", - "hashbrown 0.12.1", + "hashbrown", "hex", "if_chain", "im", @@ -974,9 +922,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "num" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-bigint", "num-complex", @@ -988,39 +936,43 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-complex" -version = "0.4.1" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fbc387afefefd5e9e39493299f3069e14a140dd34dc19b4c1c1a8fddb6a790" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -1029,11 +981,10 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-bigint", "num-integer", "num-traits", @@ -1041,18 +992,18 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ "hermit-abi", "libc", @@ -1060,33 +1011,52 @@ dependencies = [ [[package]] name = "num_threads" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" dependencies = [ "libc", ] [[package]] -name = "objc" -version = "0.2.7" +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ - "malloc_buf", + "objc-sys", + "objc2-encode", ] [[package]] -name = "once_cell" -version = "1.19.0" +name = "objc2-encode" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", +] [[package]] -name = "os_str_bytes" -version = "6.1.0" +name = "once_cell" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "pathdiff" @@ -1096,15 +1066,15 @@ checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -1113,91 +1083,90 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "pretty" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f3aa1e3ca87d3b124db7461265ac176b40c277f37e503eaa29c9c75c037846" -dependencies = [ - "arrayvec 0.5.2", - "log", - "typed-arena", - "unicode-segmentation", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.96", - "version_check", -] +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "pretty" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "b55c4d17d994b637e2f4daf6e5dc5d660d209d5642377d675d7a1c3ab69fa579" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "arrayvec 0.5.2", + "typed-arena", + "unicode-width", ] [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "procfs" -version = "0.14.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de8dacb0873f77e6aefc6d71e044761fcc68060290f5b1089fcdf84626bb69" +checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" dependencies = [ - "bitflags", - "byteorder", + "bitflags 2.6.0", "chrono", "flate2", "hex", "lazy_static", + "procfs-core", "rustix", ] +[[package]] +name = "procfs-core" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" +dependencies = [ + "bitflags 2.6.0", + "chrono", + "hex", +] + [[package]] name = "pulldown-cmark" -version = "0.9.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f197a544b0c9ab3ae46c359a7ec9cbbb5c7bf97054266fecb7ead794a181d6" +checksum = "8746739f11d39ce5ad5c2520a9b75285310dbfe78c541ccf832d38615765aec0" dependencies = [ - "bitflags", + "bitflags 2.6.0", "getopts", "memchr", + "pulldown-cmark-escape", "unicase", ] +[[package]] +name = "pulldown-cmark-escape" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" + [[package]] name = "quote" -version = "1.0.33" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" [[package]] name = "rand_xoshiro" @@ -1208,40 +1177,11 @@ dependencies = [ "rand_core", ] -[[package]] -name = "raw-window-handle" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" -dependencies = [ - "cty", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom", - "redox_syscall", - "thiserror", -] - [[package]] name = "regalloc2" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d37148700dbb38f994cd99a1431613057f37ed934d7e4d799b7ab758c482461" +checksum = "4a8d23b35d7177df3b9d31ed8a9ab4bf625c668be77a319d4f5efd4a5257701c" dependencies = [ "fxhash", "log", @@ -1260,23 +1200,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.16" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6da3636faa25820d8648e0e31c5d519bbb01f72fdf57131f0f5f7da5fed36eab" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags", + "bitflags 2.6.0", "errno", - "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.45.0", + "windows-sys 0.52.0", ] [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -1287,18 +1226,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scratch" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" - [[package]] name = "semver" version = "0.9.0" @@ -1316,29 +1243,29 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.137" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.137" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 1.0.96", + "syn 2.0.71", ] [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ "itoa", "ryu", @@ -1347,13 +1274,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.8" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ad84e47328a31223de7fed7a4f5087f2d6ddfe586cf3ca25b7a165bc0a5aed" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.96", + "syn 2.0.71", ] [[package]] @@ -1373,9 +1300,9 @@ checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "simplelog" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dfff04aade74dd495b007c831cd6f4e0cee19c344dd9dc0884c0289b70a786" +checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0" dependencies = [ "log", "termcolor", @@ -1394,21 +1321,24 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] [[package]] name = "slice-group-by" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.8.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "stdweb" @@ -1436,7 +1366,7 @@ dependencies = [ "quote", "serde", "serde_derive", - "syn 1.0.96", + "syn 1.0.109", ] [[package]] @@ -1452,7 +1382,7 @@ dependencies = [ "serde_derive", "serde_json", "sha1", - "syn 1.0.96", + "syn 1.0.109", ] [[package]] @@ -1463,15 +1393,15 @@ checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "1.0.96" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -1480,9 +1410,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.41" +version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ "proc-macro2", "quote", @@ -1491,139 +1421,146 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] -[[package]] -name = "textwrap" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" - [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.96", + "syn 2.0.71", ] [[package]] name = "time" -version = "0.3.9" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ + "deranged", "itoa", "libc", + "num-conv", "num_threads", + "powerfmt", + "serde", + "time-core", "time-macros", ] +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + [[package]] name = "time-macros" -version = "0.2.4" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "typed-arena" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0685c84d5d54d1c26f7d3eb96cd41550adb97baed141a761cf335d3d33bcd0ae" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "typenum" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.0" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" - [[package]] name = "unicode-width" -version = "0.1.9" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "url" -version = "2.2.2" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", - "serde", ] +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "version_check" version = "0.9.4" @@ -1632,20 +1569,19 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" @@ -1668,7 +1604,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.71", "wasm-bindgen-shared", ] @@ -1690,7 +1626,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.71", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1703,9 +1639,9 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.57" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -1713,29 +1649,22 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa61ff77f695a94d9c8558e0bb5c362a8fd1f27c74663770fbc633acbafedbb6" +checksum = "425ba64c1e13b1c6e8c5d2541c8fac10022ca584f33da781db01b5756aef1f4e" dependencies = [ + "block2", "core-foundation", - "dirs", + "home", "jni", "log", "ndk-context", - "objc", - "raw-window-handle", + "objc2", + "objc2-foundation", "url", "web-sys", - "widestring", - "winapi", ] -[[package]] -name = "widestring" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" - [[package]] name = "winapi" version = "0.3.9" @@ -1754,11 +1683,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1767,152 +1696,159 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets 0.42.1", + "windows-targets 0.42.2", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "windows-targets" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm 0.42.1", - "windows_aarch64_msvc 0.42.1", - "windows_i686_gnu 0.42.1", - "windows_i686_msvc 0.42.1", - "windows_x86_64_gnu 0.42.1", - "windows_x86_64_gnullvm 0.42.1", - "windows_x86_64_msvc 0.42.1", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] name = "windows-targets" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "yansi-term" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1" -dependencies = [ - "winapi", -] +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "zerocopy" -version = "0.6.6" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", "zerocopy-derive", @@ -1920,11 +1856,11 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.6.6" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.71", ] diff --git a/mm0-rs/Cargo.toml b/mm0-rs/Cargo.toml index ead04341..d1883bc6 100644 --- a/mm0-rs/Cargo.toml +++ b/mm0-rs/Cargo.toml @@ -18,7 +18,7 @@ server = [ "lsp-types", "mm0_deepsize/lsp-types", "lsp-server", "crossbeam", "simplelog", "log", "mm0_util/server", "mm1_parser/server"] -doc = ["lsp-types", "pulldown-cmark", "webbrowser"] +doc = ["lsp-types", "url", "pulldown-cmark", "pulldown-cmark-escape", "webbrowser"] memory = [ "mm0_deepsize", "mm0_deepsize_derive", "mm0_util/memory", "mm1_parser/memory", "mmcc/memory"] @@ -32,25 +32,25 @@ debug = true opt-level = 2 [dependencies] -bitflags = "1.3" -byteorder = "1.4" +bitflags = "2.6" +byteorder = "1.5" once_cell = "1.12" if_chain = "1.0" -itertools = "0.10" +itertools = "0.13" pathdiff = "0.2" arrayvec = "0.7" num = "0.4" -pretty = "0.11" -clap = { version = "3.1", features = ["derive", "unstable-v4"] } +pretty = "0.12" +clap = { version = "4.5", features = ["derive"] } futures = { version = "0.3", features = ["thread-pool"] } serde = "1.0" serde_json = "1.0" serde_repr = "0.1" -annotate-snippets = { version = "0.9", features = ["color"] } +annotate-snippets = "0.11" libc = "0.2" -zerocopy = "0.6" -memchr = "2.5" -bit-set = "0.5" +zerocopy = "0.7" +memchr = "2.7" +bit-set = "0.6" typed-arena = "2.0" mm0_deepsize_derive = { path = "components/mm0_deepsize_derive", optional = true } debug_derive = { path = "components/debug_derive" } @@ -64,12 +64,14 @@ mm1_parser = { path = "components/mm1_parser" } log = { version = "0.4", optional = true } simplelog = { version = "0.12", optional = true } crossbeam = { version = "0.8", optional = true } -lsp-types = { version = "0.93", optional = true } -lsp-server = { version = "0.6", optional = true } +lsp-types = { version = "0.97", optional = true } +lsp-server = { version = "0.7", optional = true } # For "doc" feature -pulldown-cmark = { version = "0.9", optional = true } -webbrowser = { version = "0.8", optional = true } +url = { version = "2.5", optional = true } +pulldown-cmark = { version = "0.11", optional = true } +pulldown-cmark-escape = { version = "0.11", optional = true } +webbrowser = { version = "1.0", optional = true } # For "wasm" feature console_error_panic_hook = { version = "0.1", optional = true } @@ -82,7 +84,7 @@ mmcc = { path = "components/mmcc", optional = true } im = { version = "15.1", optional = true } [target.'cfg(target_os = "linux")'.dependencies] -procfs = "0.14" +procfs = "0.16" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] memmap = "0.7" diff --git a/mm0-rs/components/debug_derive/Cargo.toml b/mm0-rs/components/debug_derive/Cargo.toml index 431977cd..a0560a37 100644 --- a/mm0-rs/components/debug_derive/Cargo.toml +++ b/mm0-rs/components/debug_derive/Cargo.toml @@ -11,4 +11,4 @@ proc-macro = true [dependencies] quote = "1.0" -syn = { version = "1.0", features = ["full"] } +syn = { version = "2.0", features = ["full"] } diff --git a/mm0-rs/components/mm0_deepsize/Cargo.toml b/mm0-rs/components/mm0_deepsize/Cargo.toml index eaf190e1..083ab906 100644 --- a/mm0-rs/components/mm0_deepsize/Cargo.toml +++ b/mm0-rs/components/mm0_deepsize/Cargo.toml @@ -18,9 +18,9 @@ mm0_deepsize_derive = { version = "0.1.1", path = "../mm0_deepsize_derive" } num = { version = "0.4", optional = true } typed-arena = { version = "2.0", optional = true } smallvec = { version = "1.8", optional = true } -bit-vec = { version = "0.6", optional = true } -bit-set = { version = "0.5", optional = true } -lsp-types = { version = "0.93", optional = true } +bit-vec = { version = "0.7", optional = true } +bit-set = { version = "0.6", optional = true } +lsp-types = { version = "0.97", optional = true } futures = { version = "0.3", optional = true } hybrid-rc = { version = "0.6", optional = true } diff --git a/mm0-rs/components/mm0_deepsize/src/lib.rs b/mm0-rs/components/mm0_deepsize/src/lib.rs index 21fa811b..ecaffc6a 100644 --- a/mm0-rs/components/mm0_deepsize/src/lib.rs +++ b/mm0-rs/components/mm0_deepsize/src/lib.rs @@ -408,9 +408,9 @@ impl DeepSizeOf for num::BigInt { } #[cfg(feature = "lsp-types")] -impl DeepSizeOf for lsp_types::Url { +impl DeepSizeOf for lsp_types::Uri { fn deep_size_of_children(&self, _: &mut Context) -> usize { - // this is an underestimate, but Url doesn't expose its capacity + // this is an underestimate, but Uri doesn't expose its capacity self.as_str().len() } } diff --git a/mm0-rs/components/mm0_deepsize_derive/Cargo.toml b/mm0-rs/components/mm0_deepsize_derive/Cargo.toml index f46d7230..4d94863f 100644 --- a/mm0-rs/components/mm0_deepsize_derive/Cargo.toml +++ b/mm0-rs/components/mm0_deepsize_derive/Cargo.toml @@ -32,4 +32,4 @@ version = "^1.0" version = "^1.0" [dependencies.syn] -version = "^1.0" +version = "^2.0" diff --git a/mm0-rs/components/mm0_util/Cargo.toml b/mm0-rs/components/mm0_util/Cargo.toml index 7552b8c7..38a7b954 100644 --- a/mm0-rs/components/mm0_util/Cargo.toml +++ b/mm0-rs/components/mm0_util/Cargo.toml @@ -15,18 +15,18 @@ categories = ["command-line-utilities", "development-tools", "mathematics"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bitflags = "1.3" +bitflags = "2.6" # optional dependencies mm0_deepsize = { version = "0.1.0", path = "../mm0_deepsize", optional = true } mm0_deepsize_derive = { version = "0.1.1", path = "../mm0_deepsize_derive", optional = true } -once_cell = { version = "1.12", optional = true } +once_cell = { version = "1.19", optional = true } pathdiff = { version = "0.2", optional = true } libc = { version = "0.2", optional = true } -lsp-types = { version = "0.93", optional = true } +lsp-types = { version = "0.97", optional = true } [target.'cfg(target_os = "linux")'.dependencies] -procfs = { version = "0.14", optional = true } +procfs = { version = "0.16", optional = true } [features] default = ["lined_string"] diff --git a/mm0-rs/components/mm0_util/src/ids.rs b/mm0-rs/components/mm0_util/src/ids.rs index dc649650..120f14bd 100644 --- a/mm0-rs/components/mm0_util/src/ids.rs +++ b/mm0-rs/components/mm0_util/src/ids.rs @@ -107,6 +107,7 @@ id_wrapper!(AtomId: u32, AtomVec); bitflags::bitflags! { /// Visibility and sort modifiers for Sort statements and Declarations. + #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct Modifiers: u8 { // Note: These particular values are important because they are used in the MMB format. @@ -153,7 +154,7 @@ impl Modifiers { /// Construct a [`Modifiers`] from a byte. #[must_use] - pub fn new(bits: u8) -> Self { Self { bits } } + pub fn new(bits: u8) -> Self { Self::from_bits_retain(bits) } /// The set of all valid sort modifiers. One can check if a modifier set is valid for a sort /// using `sort_data().contains(m)`. @@ -164,7 +165,7 @@ impl Modifiers { /// Parses a string into a singleton [`Modifiers`], or [`NONE`](Self::NONE) if the string is not valid. #[must_use] - pub fn from_name(s: &[u8]) -> Modifiers { + pub fn from_keyword(s: &[u8]) -> Modifiers { match s { b"pure" => Modifiers::PURE, b"strict" => Modifiers::STRICT, diff --git a/mm0-rs/components/mm0_util/src/lib.rs b/mm0-rs/components/mm0_util/src/lib.rs index 25fcc45d..a9e7cb99 100644 --- a/mm0-rs/components/mm0_util/src/lib.rs +++ b/mm0-rs/components/mm0_util/src/lib.rs @@ -487,14 +487,14 @@ struct FileRefInner { path: PathBuf, rel: String, #[cfg(feature = "server")] - url: Option, + uri: Option, } /// A reference to a file. It wraps an [`Arc`] so it can be cloned thread-safely. /// A [`FileRef`] can be constructed either from a [`PathBuf`] or a -/// (`file://`) [`Url`](lsp_types::Url), +/// (`file://`) [`Uri`](lsp_types::Uri), /// and provides (precomputed) access to these views using -/// [`path()`](FileRef::path) and [`url()`](FileRef::url), as well as +/// [`path()`](FileRef::path) and [`uri()`](FileRef::uri), as well as /// [`rel()`](FileRef::rel) to get the relative path from [`struct@CURRENT_DIR`]. #[cfg_attr(feature = "memory", derive(DeepSizeOf))] #[derive(Clone, Default)] @@ -503,12 +503,15 @@ pub struct FileRef(Arc); #[cfg(any(target_arch = "wasm32", feature = "lined_string"))] impl From for FileRef { fn from(path: PathBuf) -> FileRef { + fn from_file_path(path: &std::path::Path) -> Option { + std::str::FromStr::from_str(&format!("file://{}", path.to_str()?)).ok() + } let rel = make_relative(&path); FileRef(Arc::new(FileRefInner { #[cfg(all(not(target_arch = "wasm32"), feature = "server"))] - url: lsp_types::Url::from_file_path(&path).ok(), + uri: from_file_path(&path), #[cfg(all(target_arch = "wasm32", feature = "server"))] - url: lsp_types::Url::parse(&format!("wasm:/{rel}")).ok(), + uri: lsp_types::Uri::from_str(&format!("wasm:/{rel}")).ok(), rel, path, })) @@ -516,14 +519,18 @@ impl From for FileRef { } #[cfg(feature = "server")] -impl From for FileRef { - fn from(url: lsp_types::Url) -> FileRef { +impl From for FileRef { + fn from(uri: lsp_types::Uri) -> FileRef { + fn to_file_path(uri: &lsp_types::Uri) -> Option { + if uri.scheme()?.as_str() != "file" || uri.authority().is_some() { return None } + Some(PathBuf::from(uri.path().as_str())) + } #[cfg(not(target_arch = "wasm32"))] - let path = url.to_file_path().expect("bad URL"); + let path = to_file_path(&uri).expect("bad URI"); #[cfg(target_arch = "wasm32")] - let path = PathBuf::from(url.path()); + let path = PathBuf::from(uri.path().as_str()); let rel = make_relative(&path); - FileRef(Arc::new(FileRefInner { path, rel, url: Some(url) })) + FileRef(Arc::new(FileRefInner { path, rel, uri: Some(uri) })) } } @@ -536,10 +543,10 @@ impl FileRef { #[must_use] pub fn rel(&self) -> &str { &self.0.rel } - /// Convert this [`FileRef`] to a `file://` URL, for use with LSP. + /// Convert this [`FileRef`] to a `file://` URI, for use with LSP. #[cfg(feature = "server")] #[must_use] - pub fn url(&self) -> &lsp_types::Url { self.0.url.as_ref().expect("bad file location") } + pub fn url(&self) -> &lsp_types::Uri { self.0.uri.as_ref().expect("bad file location") } /// Get a pointer to this allocation, for use in hashing. #[must_use] diff --git a/mm0-rs/components/mm0b_parser/Cargo.toml b/mm0-rs/components/mm0b_parser/Cargo.toml index 07c7fd9d..0fe1a73c 100644 --- a/mm0-rs/components/mm0b_parser/Cargo.toml +++ b/mm0-rs/components/mm0b_parser/Cargo.toml @@ -14,7 +14,7 @@ categories = ["command-line-utilities", "development-tools", "mathematics"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -byteorder = "1.4" -zerocopy = "0.6" -memchr = "2.5" +byteorder = "1.5" +zerocopy = { version = "0.7", features = ["derive"] } +memchr = "2.7" mm0_util = { version = "0.1.4", path = "../mm0_util", default-features = false } diff --git a/mm0-rs/components/mm0b_parser/src/lib.rs b/mm0-rs/components/mm0b_parser/src/lib.rs index b5681432..4945c1bc 100644 --- a/mm0-rs/components/mm0b_parser/src/lib.rs +++ b/mm0-rs/components/mm0b_parser/src/lib.rs @@ -64,7 +64,7 @@ use std::mem::size_of; use byteorder::LE; use mm0_util::{Modifiers, SortId, TermId, ThmId}; -use zerocopy::{AsBytes, FromBytes, Unaligned, U16, U32, U64}; +use zerocopy::{AsBytes, FromZeroes, FromBytes, Unaligned, U16, U32, U64}; pub use mm0_util::u32_as_usize; pub use {parser::*, ty::*, write::*}; @@ -514,7 +514,7 @@ impl TryFrom<(u8, u32)> for UnifyCmd { /// It is followed by a `sorts: [`[`SortData`]`; num_sorts]` array /// (which we keep separate because of the dependency). #[repr(C, align(8))] -#[derive(Debug, Clone, Copy, Default, FromBytes, AsBytes)] +#[derive(Debug, Clone, Copy, Default, FromZeroes, FromBytes, AsBytes)] pub struct Header { /// The magic number, which is used to identify this as an mmb file. Must be /// equal to [`MM0B_MAGIC`](cmd::MM0B_MAGIC) = `"MM0B"`. @@ -584,7 +584,7 @@ impl Header { /// of the modifiers in [`Modifiers::sort_data`]: [`PURE`](Modifiers::PURE), /// [`STRICT`](Modifiers::STRICT), [`PROVABLE`](Modifiers::PROVABLE), [`FREE`](Modifiers::FREE). #[repr(C)] -#[derive(Debug, Clone, Copy, FromBytes, AsBytes, Unaligned)] +#[derive(Debug, Clone, Copy, FromZeroes, FromBytes, AsBytes, Unaligned)] pub struct SortData(pub u8); impl TryFrom for Modifiers { @@ -603,7 +603,7 @@ impl TryFrom for Modifiers { /// An entry in the term table, which describes the "signature" of the term/def, /// the information needed to apply the term and use it in theorems. #[repr(C, align(8))] -#[derive(Debug, Clone, Copy, FromBytes, AsBytes)] +#[derive(Debug, Clone, Copy, FromZeroes, FromBytes, AsBytes)] pub struct TermEntry { /// The number of arguments to the term. pub num_args: U16, @@ -621,7 +621,7 @@ pub struct TermEntry { /// An entry in the theorem table, which describes the "signature" of the axiom/theorem, /// the information needed to apply the theorem to use it in other theorems. #[repr(C, align(8))] -#[derive(Debug, Clone, Copy, FromBytes, AsBytes)] +#[derive(Debug, Clone, Copy, FromZeroes, FromBytes, AsBytes)] pub struct ThmEntry { /// The number of arguments to the theorem (exprs, not hyps). pub num_args: U16, @@ -635,7 +635,7 @@ pub struct ThmEntry { /// An index table entry, which is essentially an ID describing the table format, and some /// additional data to find the actual table. #[repr(C, align(8))] -#[derive(Debug, Clone, Copy, FromBytes, AsBytes)] +#[derive(Debug, Clone, Copy, FromZeroes, FromBytes, AsBytes)] pub struct TableEntry { /// A magic number that identifies this table entry, and determines the interpretation of the /// rest of the data. @@ -649,7 +649,7 @@ pub struct TableEntry { /// An individual symbol name entry in the index. #[repr(C, align(8))] -#[derive(Debug, Clone, Copy, FromBytes, AsBytes)] +#[derive(Debug, Clone, Copy, FromZeroes, FromBytes, AsBytes)] pub struct NameEntry { /// A pointer to the location in the proof stream which introduced this entity. pub p_proof: U64, diff --git a/mm0-rs/components/mm0b_parser/src/parser.rs b/mm0-rs/components/mm0b_parser/src/parser.rs index ec88be63..bc8a17db 100644 --- a/mm0-rs/components/mm0b_parser/src/parser.rs +++ b/mm0-rs/components/mm0b_parser/src/parser.rs @@ -8,7 +8,7 @@ use mm0_util::{SortId, TermId, ThmId}; use std::borrow::Cow; use std::ops::Range; use std::{io, mem, mem::size_of}; -use zerocopy::{FromBytes, LayoutVerified, U16, U32, U64}; +use zerocopy::{FromBytes, Ref, U16, U32, U64}; /// A parsed `MMB` file, as a borrowed type. This does only shallow parsing; /// additional parsing is done on demand via functions on this type. @@ -256,10 +256,10 @@ pub fn parse_cmd(mmb: &[u8], starts_at: usize) -> Result<(u8, u32, usize), Parse .first() .map(|&n| (val, n.into(), starts_at + size_of::() + size_of::())) .ok_or_else(|| exhausted!()), - DATA_16 => LayoutVerified::<_, U16>::new_from_prefix(tl) + DATA_16 => Ref::<_, U16>::new_from_prefix(tl) .map(|(n, _)| (val, n.get().into(), starts_at + size_of::() + size_of::())) .ok_or_else(|| exhausted!()), - DATA_32 => LayoutVerified::<_, U32>::new_from_prefix(tl) + DATA_32 => Ref::<_, U32>::new_from_prefix(tl) .map(|(n, _)| (val, n.get(), starts_at + size_of::() + size_of::())) .ok_or_else(|| exhausted!()), _ => unreachable!(), @@ -591,7 +591,7 @@ fn new_slice_prefix(bytes: &[u8], n: usize) -> Option<(&[T], &[u8] let mid = mem::size_of::().checked_mul(n)?; if mid <= bytes.len() { let (left, right) = bytes.split_at(mid); - Some((LayoutVerified::new_slice(left)?.into_slice(), right)) + Some((Ref::new_slice(left)?.into_slice(), right)) } else { None } @@ -628,7 +628,7 @@ impl<'a, X: MmbIndexBuilder<'a>> MmbFile<'a, X> { pub fn parse(buf: &'a [u8]) -> Result { use ParseError::{BadIndexParse, BadSorts, BadTerms, BadThms}; let (zc_header, sorts) = - LayoutVerified::<_, Header>::new_from_prefix(buf).ok_or_else(|| find_header_error(buf))?; + Ref::<_, Header>::new_from_prefix(buf).ok_or_else(|| find_header_error(buf))?; // For potential error reporting let p_sorts = zc_header.bytes().len(); let header = zc_header.into_ref(); @@ -638,7 +638,7 @@ impl<'a, X: MmbIndexBuilder<'a>> MmbFile<'a, X> { // so if this fails, it's a size issue. let sorts = sorts .get(..header.num_sorts.into()) - .and_then(LayoutVerified::new_slice_unaligned) + .and_then(Ref::new_slice_unaligned) .ok_or_else(|| BadSorts(p_sorts..u32_as_usize(header.p_terms.get())))? .into_slice(); let terms = buf @@ -660,7 +660,7 @@ impl<'a, X: MmbIndexBuilder<'a>> MmbFile<'a, X> { if n != 0 { let (entries, _) = (|| -> Option<_> { let (num_entries, rest) = - LayoutVerified::<_, U64>::new_unaligned_from_prefix(buf.get(n..)?)?; + Ref::<_, U64>::new_unaligned_from_prefix(buf.get(n..)?)?; new_slice_prefix(rest, num_entries.get().try_into().ok()?) })() .ok_or_else(|| BadIndexParse { p_index: u64_as_usize(header.p_index) })?; @@ -954,7 +954,7 @@ str_list_wrapper! { impl<'a, X> MmbFile<'a, X> { fn str_list_ref(&self, p_vars: U64) -> Option> { - let (num_vars, rest) = LayoutVerified::<_, U64>::new_unaligned_from_prefix( + let (num_vars, rest) = Ref::<_, U64>::new_unaligned_from_prefix( self.buf.get(u64_as_usize(p_vars)..)?, )?; Some(StrListRef { diff --git a/mm0-rs/components/mm0b_parser/src/ty.rs b/mm0-rs/components/mm0b_parser/src/ty.rs index 72e23f25..e706ef66 100644 --- a/mm0-rs/components/mm0b_parser/src/ty.rs +++ b/mm0-rs/components/mm0b_parser/src/ty.rs @@ -2,7 +2,7 @@ use byteorder::LE; use mm0_util::SortId; -use zerocopy::{AsBytes, FromBytes, Unaligned, U64}; +use zerocopy::{AsBytes, FromZeroes, FromBytes, Unaligned, U64}; /// bound mask: `10000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000` pub const TYPE_BOUND_MASK: u64 = 1 << 63; @@ -22,7 +22,7 @@ pub const TYPE_DEPS_MASK: u64 = (1 << 55) - 1; /// * Bits 0-55 (the low 7 bytes) are a bitset giving the set of bound variables /// earlier in the list that this variable is allowed to depend on. #[repr(C)] -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, FromBytes, AsBytes, Unaligned)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, FromZeroes, FromBytes, AsBytes, Unaligned)] pub struct Type(U64); /// Newtype for `Type` that makes some situations easier to read. diff --git a/mm0-rs/components/mm1_parser/Cargo.toml b/mm0-rs/components/mm1_parser/Cargo.toml index 9bbb4d5e..8688785b 100644 --- a/mm0-rs/components/mm1_parser/Cargo.toml +++ b/mm0-rs/components/mm1_parser/Cargo.toml @@ -16,15 +16,15 @@ categories = ["command-line-utilities", "development-tools", "mathematics"] [dependencies] mm0_util = { path = "../mm0_util" } num = "0.4" -annotate-snippets = { version = "0.9", features = ["color"] } -byteorder = "1.4" -zerocopy = "0.6" +annotate-snippets = "0.11" +byteorder = "1.5" +zerocopy = "0.7" # optional dependencies mm0_deepsize = { path = "../mm0_deepsize", optional = true } mm0_deepsize_derive = { path = "../mm0_deepsize_derive", optional = true } libc = { version = "0.2", optional = true } -lsp-types = { version = "0.93", optional = true } +lsp-types = { version = "0.97", optional = true } [features] default = [] diff --git a/mm0-rs/components/mm1_parser/fuzz/Cargo.toml b/mm0-rs/components/mm1_parser/fuzz/Cargo.toml index c8b579c3..1c759b15 100644 --- a/mm0-rs/components/mm1_parser/fuzz/Cargo.toml +++ b/mm0-rs/components/mm1_parser/fuzz/Cargo.toml @@ -10,7 +10,7 @@ edition = "2018" cargo-fuzz = true [dependencies] -libfuzzer-sys = "0.3" +libfuzzer-sys = "0.4" mm0_util = { path = "../mm0_util" } [dependencies.mm1_parser] diff --git a/mm0-rs/components/mm1_parser/src/lib.rs b/mm0-rs/components/mm1_parser/src/lib.rs index 4ee54a1b..638c66ec 100644 --- a/mm0-rs/components/mm1_parser/src/lib.rs +++ b/mm0-rs/components/mm1_parser/src/lib.rs @@ -58,7 +58,7 @@ pub mod ast; -use annotate_snippets::snippet::AnnotationType; +use annotate_snippets::Level; use ast::{ Atom, Binder, Const, Decl, DeclKind, Delimiter, DepType, Formula, GenNota, Literal, LocalKind, SExpr, SExprKind, SimpleNota, SimpleNotaKind, Stmt, StmtKind, Type, @@ -107,13 +107,13 @@ impl ErrorLevel { } } - /// Convert an [`ErrorLevel`] to [`AnnotationType`], used by the CLI compiler. + /// Convert an [`ErrorLevel`] to [`annotate_snippets::Level`], used by the CLI compiler. #[must_use] - pub fn to_annotation_type(self) -> AnnotationType { + pub fn to_annotation_type(self) -> Level { match self { - ErrorLevel::Info => AnnotationType::Info, - ErrorLevel::Warning => AnnotationType::Warning, - ErrorLevel::Error => AnnotationType::Error, + ErrorLevel::Info => Level::Info, + ErrorLevel::Warning => Level::Warning, + ErrorLevel::Error => Level::Error, } } } @@ -449,7 +449,7 @@ impl<'a> Parser<'a> { loop { match self.ident_() { None => return (modifiers, None), - Some(id) => match Modifiers::from_name(self.span(id)) { + Some(id) => match Modifiers::from_keyword(self.span(id)) { Modifiers::NONE => return (modifiers, Some(id)), m => { if modifiers.intersects(m) { diff --git a/mm0-rs/components/mmcc/Cargo.toml b/mm0-rs/components/mmcc/Cargo.toml index 72cfc3ff..924ded9d 100644 --- a/mm0-rs/components/mmcc/Cargo.toml +++ b/mm0-rs/components/mmcc/Cargo.toml @@ -13,19 +13,19 @@ categories = ["compilers", "mathematics"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bitflags = "1.3" -byteorder = "1.4" +bitflags = "2.6" +byteorder = "1.5" hex = "0.4" num = "0.4" once_cell = "1.12" -itertools = "0.10" +itertools = "0.13" if_chain = "1.0" smallvec = { version = "1.8", features = ["union"] } arrayvec = "0.7" im = "15.1" -bit-vec = "0.6" -bit-set = "0.5" -hashbrown = "0.12" +bit-vec = "0.7" +bit-set = "0.6" +hashbrown = "0.14" typed-arena = "2.0" # simplelog = "0.11" bumpalo = { version = "3.10", features = ["boxed", "collections"] } diff --git a/mm0-rs/components/mmcc/src/types/ast.rs b/mm0-rs/components/mmcc/src/types/ast.rs index fadafb14..0f8c97cc 100644 --- a/mm0-rs/components/mmcc/src/types/ast.rs +++ b/mm0-rs/components/mmcc/src/types/ast.rs @@ -827,6 +827,7 @@ pub enum ProcKind { bitflags::bitflags! { /// Attributes on function arguments. + #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)] pub struct ArgAttr: u8 { /// A `(mut x)` argument, which is modified in the body and passed out /// via an `(out x x')` in the returns. diff --git a/mm0-rs/components/mmcc/src/types/mir.rs b/mm0-rs/components/mmcc/src/types/mir.rs index d83b8ae7..5e77a3bb 100644 --- a/mm0-rs/components/mmcc/src/types/mir.rs +++ b/mm0-rs/components/mmcc/src/types/mir.rs @@ -106,6 +106,7 @@ impl HasAlpha for Lifetime { bitflags::bitflags! { /// Attributes on arguments in a `(struct)` dependent tuple type. + #[derive(Clone, Copy, Hash, PartialEq, Eq)] pub struct ArgAttr: u8 { /// An argument is nondependent if the remainder of the type does not depend on this variable. const NONDEP = 1 << 0; diff --git a/mm0-rs/components/mmcc/src/types/ty.rs b/mm0-rs/components/mmcc/src/types/ty.rs index bc39e8e4..46a418aa 100644 --- a/mm0-rs/components/mmcc/src/types/ty.rs +++ b/mm0-rs/components/mmcc/src/types/ty.rs @@ -48,6 +48,7 @@ impl<'a, C: DisplayCtx<'a>> CtxDisplay for VarId { bitflags::bitflags! { /// A list of flags that are propagated on type/expr construction /// for quick answers to some basic questions. + #[derive(Clone, Copy)] pub struct Flags: u8 { /// Does this type/expr have a type metavariable? const HAS_TY_MVAR = 1 << 0; @@ -63,8 +64,8 @@ bitflags::bitflags! { const HAS_ERROR = 1 << 5; /// Does this type/expr have a metavariable? const HAS_MVAR = - Self::HAS_TY_MVAR.bits | Self::HAS_PROP_MVAR.bits | - Self::HAS_EXPR_MVAR.bits | Self::HAS_LFT_MVAR.bits; + Self::HAS_TY_MVAR.bits() | Self::HAS_PROP_MVAR.bits() | + Self::HAS_EXPR_MVAR.bits() | Self::HAS_LFT_MVAR.bits(); /// (For Ty:) Is this type not (necessarily) a copy type? const IS_NON_COPY = 1 << 6; /// (For Ty:) Is this a computationally relevant type? diff --git a/mm0-rs/src/compiler.rs b/mm0-rs/src/compiler.rs index 9e91f9c1..59ba6c5c 100644 --- a/mm0-rs/src/compiler.rs +++ b/mm0-rs/src/compiler.rs @@ -15,9 +15,7 @@ use futures::{FutureExt, future::BoxFuture}; use futures::channel::oneshot::{Sender as FSender, channel}; use futures::executor::{ThreadPool, block_on}; use futures::lock::Mutex as FMutex; -use annotate_snippets::{ - snippet::{Snippet, Annotation, AnnotationType, SourceAnnotation, Slice}, - display_list::{DisplayList, FormatOptions}}; +use annotate_snippets::{Message, Snippet, Level, Renderer}; use once_cell::sync::Lazy; use typed_arena::Arena; #[cfg(feature = "memory")] use mm0_deepsize_derive::DeepSizeOf; @@ -196,23 +194,20 @@ impl ElabErrorKind { /// - `arena`: A temporary [`typed_arena::Arena`] for storing [`String`]s that are /// allocated for the snippet /// - `to_range`: a function for converting (index-based) spans to (line/col) ranges - pub fn to_footer<'a>(&self, arena: &'a Arena, - mut to_range: impl FnMut(&FileSpan) -> Option) -> Vec> { - match self { - ElabErrorKind::Boxed(_, Some(info)) => - info.iter().map(|(fs, e)| Annotation { - id: None, - label: Some(arena.alloc({ - if let Some(Range {start, ..}) = to_range(fs) { - format!("{}:{}:{}: {e}", fs.file.rel(), start.line + 1, start.character + 1) - } else { - format!("{}:{:#x}: {e}", fs.file.rel(), fs.span.start) - } - })), - annotation_type: AnnotationType::Note, - }).collect(), - _ => vec![] - } + pub fn to_footer<'a: 'b, 'b>(&'b self, arena: &'a Arena, + mut to_range: impl FnMut(&FileSpan) -> Option + 'b + ) -> impl IntoIterator> + 'b { + let info = match self { + ElabErrorKind::Boxed(_, Some(info)) => &**info, + _ => &[], + }; + info.iter().map(move |(fs, e)| Level::Note.title(arena.alloc({ + if let Some(Range {start, ..}) = to_range(fs) { + format!("{}:{}:{}: {e}", fs.file.rel(), start.line + 1, start.character + 1) + } else { + format!("{}:{:#x}: {e}", fs.file.rel(), fs.span.start) + } + }))) } } @@ -228,7 +223,7 @@ impl ElabErrorKind { /// - `footer`: The snippet footer (calculated by [`ElabErrorKind::to_footer`]) /// - `to_range`: a function for converting (index-based) spans to (line/col) ranges fn make_snippet<'a>(path: &'a FileRef, file: &'a LinedString, pos: Span, - msg: &'a str, level: ErrorLevel, footer: Vec>) -> Snippet<'a> { + msg: &'a str, level: ErrorLevel, footer: impl IntoIterator>) -> Message<'a> { let annotation_type = level.to_annotation_type(); let (start, start_line) = file.line_start(pos.start); let (_, end_line) = file.line_start(pos.end); @@ -237,55 +232,21 @@ fn make_snippet<'a>(path: &'a FileRef, file: &'a LinedString, pos: Span, line: u32::try_from(end_line).expect("too many lines") + 1, character: 0 }).unwrap_or(file.len()); - Snippet { - title: Some(Annotation { - id: None, - label: Some(msg), - annotation_type, - }), - slices: vec![Slice { - source: { - // Safety: We assume `Span` is coming from the correct file, - unsafe { std::str::from_utf8_unchecked(&file[(start..end).into()]) } - }, - line_start: start_line + 1, - origin: Some(path.rel()), - fold: end_line - start_line >= 5, - annotations: vec![SourceAnnotation { - range: (pos.start - start, pos.end - start), - label: "", - annotation_type, - }], - }], - footer, - opt: FormatOptions { color: true, anonymized_line_numbers: false, margin: None } - } -} - -/// Create a [`Snippet`] from a message, when there is no source to display. -/// -/// # Parameters -/// -/// - `msg`: The error message -/// - `level`: The error level -fn make_snippet_no_source(msg: &str, level: ErrorLevel) -> Snippet<'_> { - let annotation_type = level.to_annotation_type(); - Snippet { - title: Some(Annotation { - id: None, - label: Some(msg), - annotation_type, - }), - slices: vec![], - footer: vec![], - opt: FormatOptions { color: true, anonymized_line_numbers: false, margin: None } - } + // Safety: We assume `Span` is coming from the correct file. + let source = unsafe { std::str::from_utf8_unchecked(&file[(start..end).into()]) }; + annotation_type.title(msg) + .snippet(Snippet::source(source) + .line_start(start_line + 1) + .origin(path.rel()) + .fold(end_line - start_line >= 5) + .annotation(annotation_type.span(pos.start - start..pos.end - start))) + .footers(footer) } impl ElabError { - /// Create a [`Snippet`] from this error. + /// Create a [`Message`] from this error. /// - /// Because [`Snippet`] is a borrowed type, we "return" the snippet in CPS form, + /// Because [`Message`] is a borrowed type, we "return" the snippet in CPS form, /// passing it to `f` which is used to produce an (unborrowed) value `T` that is returned. /// This idiom allows us to scope references to the snippet to the passed closure. /// @@ -297,12 +258,12 @@ impl ElabError { /// - `f`: The function to pass the constructed snippet fn to_snippet(&self, path: &FileRef, file: &LinedString, to_range: impl FnMut(&FileSpan) -> Option, - f: impl for<'a> FnOnce(Snippet<'a>) -> T) -> T { + f: impl for<'a> FnOnce(Message<'a>) -> T) -> T { f(make_snippet(path, file, self.pos, &self.kind.msg(), self.level, self.kind.to_footer(&Arena::new(), to_range))) } - /// Create a [`Snippet`] from an error when the file source is not available + /// Create a [`Message`] from an error when the file source is not available /// (e.g. for binary files). /// /// # Parameters @@ -310,20 +271,20 @@ impl ElabError { /// - `path`: The location of the error /// - `f`: The function to pass the constructed snippet fn to_snippet_no_source(&self, path: &FileRef, span: Span, - f: impl for<'a> FnOnce(Snippet<'a>) -> T) -> T { + f: impl for<'a> FnOnce(Message<'a>) -> T) -> T { let s = if span.end == span.start { format!("{path}:{:#x}: {}", span.start, self.kind.msg()) } else { format!("{path}:{:#x}-{:#x}: {}", span.start, span.end, self.kind.msg()) }; - f(make_snippet_no_source(&s, self.level)) + f(self.level.to_annotation_type().title(&s)) } } -/// Create a [`Snippet`] from this error. See [`ElabError::to_snippet`] for information +/// Create a [`Message`] from this error. See [`ElabError::to_snippet`] for information /// about the parameters. fn to_snippet(err: &ParseError, path: &FileRef, file: &LinedString, - f: impl for<'a> FnOnce(Snippet<'a>) -> T) -> T { + f: impl for<'a> FnOnce(Message<'a>) -> T) -> T { f(make_snippet(path, file, err.pos, &format!("{}", err.msg), err.level, vec![])) } @@ -383,10 +344,10 @@ async fn elaborate(path: FileRef, rd: ArcList) -> io::Result) -> io::Result> = if errors.is_empty() { None } else { - fn print(s: Snippet<'_>) { println!("{}\n", DisplayList::from(s)) } + fn print(s: Message<'_>) { println!("{}\n", Renderer::styled().render(s)) } let mut to_range = mk_to_range(); let mut level = 0; if let FileContents::Ascii(text) = &file.text { @@ -530,7 +491,7 @@ impl Args { let e = ElabError::new_e(fsp.span, e); let file = VFS.get_or_insert(fsp.file.clone())?.1; e.to_snippet(&fsp.file, file.text.ascii(), &mut mk_to_range(), - |s| println!("{}\n", DisplayList::from(s))); + |s| println!("{}\n", Renderer::styled().render(s))); std::process::exit(1); } } @@ -545,16 +506,7 @@ impl Args { env.export_mmu(w)?; } else { let mut report = |lvl: ErrorLevel, err: &str| { - println!("{}\n", DisplayList::from(Snippet { - title: Some(Annotation { - label: Some(err), - id: None, - annotation_type: lvl.to_annotation_type(), - }), - footer: vec![], - slices: vec![], - opt: FormatOptions { color: true, ..Default::default() }, - })); + println!("{}\n", Renderer::styled().render(lvl.to_annotation_type().title(err))); MAX_EMITTED_ERROR.fetch_max(lvl as u8, Ordering::Relaxed); }; let mut ex = MmbExporter::new(path, file.try_ascii().map(|fc| &**fc), &env, &mut report, w); diff --git a/mm0-rs/src/doc/mod.rs b/mm0-rs/src/doc/mod.rs index 2f64e2c2..6d311c5b 100644 --- a/mm0-rs/src/doc/mod.rs +++ b/mm0-rs/src/doc/mod.rs @@ -1,8 +1,8 @@ //! Build documentation pages for MM1/MM0 files use std::{collections::{hash_map::Entry, HashMap}, hash::Hash, path::PathBuf}; use bit_set::BitSet; -use lsp_types::Url; -use pulldown_cmark::escape::WriteWrapper; +use url::Url; +use pulldown_cmark_escape::IoWriter; use std::fs::{self, File}; use std::io::{self, BufWriter, Write}; use std::mem; @@ -17,7 +17,7 @@ struct HtmlPrinter<'a, W: Write> { env: &'a Environment, mangler: &'a mut Mangler, rel: &'static str, - w: WriteWrapper<&'a mut W>, + w: IoWriter<&'a mut W>, stack: Vec<&'static str> } @@ -25,7 +25,7 @@ impl<'a, W: Write> HtmlPrinter<'a, W> { /// Make a new `HtmlPrinter` from some writer. fn new(env: &'a Environment, mangler: &'a mut Mangler, w: &'a mut W, rel: &'static str) -> Self { - HtmlPrinter { env, mangler, w: WriteWrapper(w), rel, stack: Vec::new() } + HtmlPrinter { env, mangler, w: IoWriter(w), rel, stack: Vec::new() } } } @@ -33,7 +33,7 @@ impl<'a, W: Write> pretty::Render for HtmlPrinter<'a, W> { type Error = std::io::Error; fn write_str(&mut self, s: &str) -> io::Result { - pulldown_cmark::escape::escape_html(&mut self.w, s)?; + pulldown_cmark_escape::escape_html(&mut self.w, s)?; Ok(s.len()) } @@ -433,7 +433,7 @@ impl PartialEq for CaseInsensitiveName { impl Eq for CaseInsensitiveName {} /// Sets the order of steps in a proof. -#[derive(Clone, Copy, Debug, clap::ArgEnum)] +#[derive(Clone, Copy, Debug, clap::ValueEnum)] pub enum ProofOrder { /// Preorder traversal. This means that each step precedes its subproofs, /// which makes it easier to read proofs top-down but may be confusing @@ -526,7 +526,7 @@ fn render_doc(w: &mut impl Write, doc: &Option) -> io::Result<()> { if let Some(doc) = doc { use pulldown_cmark::{Parser, html}; write!(w, r#"
"#)?; - html::write_html(&mut *w, Parser::new(doc))?; + html::write_html_io(&mut *w, Parser::new(doc))?; writeln!(w, "
")?; } Ok(()) @@ -620,7 +620,7 @@ impl<'a, W: Write> BuildDoc<'a, W> { write!(file, " {}\n (", @@ -731,7 +731,7 @@ pub struct Args { #[clap(long, value_name = "THM")] pub open_to: Option, /// Proof tree traversal order - #[clap(long, arg_enum, default_value_t = ProofOrder::Post)] + #[clap(long, value_enum, default_value_t = ProofOrder::Post)] pub order: ProofOrder, /// Use URL as the base for source doc links (use - to disable) #[clap(long, value_name = "URL")] diff --git a/mm0-rs/src/elab/lisp/debug.rs b/mm0-rs/src/elab/lisp/debug.rs index 96b43ec3..81613c7d 100644 --- a/mm0-rs/src/elab/lisp/debug.rs +++ b/mm0-rs/src/elab/lisp/debug.rs @@ -235,7 +235,7 @@ env_debug! { } #[cfg(feature = "server")] -env_debug! {lsp_types::Url} +env_debug! {lsp_types::Uri} dbg_tuples! { { diff --git a/mm0-rs/src/server.rs b/mm0-rs/src/server.rs index 3fd6c216..621bcabb 100644 --- a/mm0-rs/src/server.rs +++ b/mm0-rs/src/server.rs @@ -499,6 +499,7 @@ impl Vfs { } else if e.get().text.ulock().0.take().is_some() { let file = e.get().clone(); drop(g); + #[allow(clippy::mutable_key_type)] let deps = file.downstream.ulock().clone(); for dep in deps { Job::DepChange(path.clone(), dep.clone(), DepChangeReason::Close).spawn(); @@ -639,7 +640,7 @@ fn log_message(message: String) -> Result<()> { }) } -fn send_diagnostics(uri: Url, version: Option, diagnostics: Vec) -> Result<()> { +fn send_diagnostics(uri: Uri, version: Option, diagnostics: Vec) -> Result<()> { send_message(Notification { method: "textDocument/publishDiagnostics".to_owned(), params: to_value(PublishDiagnosticsParams {uri, diagnostics, version})? @@ -1181,7 +1182,7 @@ async fn completion_resolve(ci: CompletionItem) -> Result