diff --git a/Cargo.lock b/Cargo.lock index a808278..4ff50ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,67 +8,54 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "aligned-vec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" - [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", "windows-sys 0.52.0", ] -[[package]] -name = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - [[package]] name = "app" version = "0.1.0" @@ -79,89 +66,33 @@ dependencies = [ "eval", "ir", "owo-colors", - "prowocessing", "ron", "serde", "serde_json", "time", ] -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "arbitrary" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" - -[[package]] -name = "arg_enum_proc_macro" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "ariadne" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44055e597c674aef7cb903b2b9f6e4cba1277ed0d2d61dae7cd52d7ffa81f8e2" +checksum = "dd002a6223f12c7a95cdd4b1cb3a0149d22d37f7a9ecdb2cb691a071fe236c29" dependencies = [ "unicode-width", "yansi", ] -[[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" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[package]] -name = "av1-grain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" -dependencies = [ - "anyhow", - "arrayvec", - "log", - "nom", - "num-rational", - "v_frame", -] - -[[package]] -name = "avif-serialize" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2" -dependencies = [ - "arrayvec", -] +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.21.7" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "beef" @@ -183,42 +114,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" dependencies = [ "serde", ] -[[package]] -name = "bitstream-io" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcde5f311c85b8ca30c2e4198d4326bc342c76541590106f5fa4a50946ea499" - -[[package]] -name = "built" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "by_address" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" - [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" @@ -226,32 +133,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" -[[package]] -name = "byteorder-lite" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" - -[[package]] -name = "cc" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" -dependencies = [ - "jobserver", - "libc", -] - -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -260,9 +141,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.8" +version = "4.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d" +checksum = "dcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056d" dependencies = [ "clap_builder", "clap_derive", @@ -270,9 +151,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.8" +version = "4.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708" +checksum = "fb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9" dependencies = [ "anstream", "anstyle", @@ -282,9 +163,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.8" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -294,9 +175,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "color_quant" @@ -306,9 +187,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "countme" @@ -318,9 +199,9 @@ checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if", ] @@ -349,20 +230,23 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" dependencies = [ + "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "0e3681d554572a651dda4186cd47240627c3d0114d45a95f6ad27f2f22e7548d" dependencies = [ + "autocfg", + "cfg-if", "crossbeam-utils", ] @@ -377,9 +261,12 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" +dependencies = [ + "cfg-if", +] [[package]] name = "crunchy" @@ -398,9 +285,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ "darling_core", "darling_macro", @@ -408,9 +295,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" dependencies = [ "fnv", "ident_case", @@ -421,9 +308,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", @@ -487,9 +374,9 @@ checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" [[package]] name = "either" -version = "1.13.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "enumset" @@ -523,26 +410,16 @@ name = "eval" version = "0.1.0" dependencies = [ "clap", - "image 0.24.9", + "image", "ir", "serde", ] -[[package]] -name = "executor-poc" -version = "0.1.0" -dependencies = [ - "image 0.25.1", - "indexmap", - "nalgebra", - "petgraph", -] - [[package]] name = "exr" -version = "1.72.0" +version = "1.71.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +checksum = "832a761f35ab3e6664babfbdc6cef35a4860e816ec3916dcfd0882954e98a8a8" dependencies = [ "bit_field", "flume", @@ -554,17 +431,11 @@ dependencies = [ "zune-inflate", ] -[[package]] -name = "fast-srgb8" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" - [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "209098dd6dfc4445aa6111f0e98653ac323eaa4dfd212c9ca3931bf9955c31bd" dependencies = [ "simd-adler32", ] @@ -577,9 +448,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -602,9 +473,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -613,9 +484,9 @@ dependencies = [ [[package]] name = "gif" -version = "0.13.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" dependencies = [ "color_quant", "weezl", @@ -623,25 +494,24 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" dependencies = [ - "cfg-if", "crunchy", ] [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "heck" -version = "0.5.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -657,9 +527,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "image" -version = "0.24.9" +version = "0.24.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" dependencies = [ "bytemuck", "byteorder", @@ -667,51 +537,13 @@ dependencies = [ "exr", "gif", "jpeg-decoder", + "num-rational", "num-traits", "png", "qoi", "tiff", ] -[[package]] -name = "image" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11" -dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "exr", - "gif", - "image-webp", - "num-traits", - "png", - "qoi", - "ravif", - "rayon", - "rgb", - "tiff", - "zune-core", - "zune-jpeg", -] - -[[package]] -name = "image-webp" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79afb8cbee2ef20f59ccd477a218c12a93943d075b492015ecb1bb81f8ee904" -dependencies = [ - "byteorder-lite", - "quick-error", -] - -[[package]] -name = "imgref" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126" - [[package]] name = "indexmap" version = "2.2.6" @@ -728,17 +560,6 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" -[[package]] -name = "interpolate_name" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "ir" version = "0.1.0" @@ -761,59 +582,25 @@ dependencies = [ [[package]] name = "is_ci" -version = "1.2.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] +checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "jobserver" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" -dependencies = [ - "libc", -] +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jpeg-decoder" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" dependencies = [ "rayon", ] -[[package]] -name = "json-pawarser" -version = "0.1.0" -dependencies = [ - "enumset", - "logos", - "pawarser", - "rowan", -] - [[package]] name = "lang" version = "0.1.0" @@ -836,9 +623,9 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.5.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lebe" @@ -852,57 +639,41 @@ version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" -[[package]] -name = "libfuzzer-sys" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7" -dependencies = [ - "arbitrary", - "cc", - "once_cell", -] - [[package]] name = "libredox" -version = "0.1.3" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.4.1", "libc", + "redox_syscall 0.4.1", ] [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", ] -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - [[package]] name = "logos" -version = "0.14.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c6b6e02facda28ca5fb8dbe4b152496ba3b1bd5a4b40bb2b1b2d8ad74e0f39b" +checksum = "161971eb88a0da7ae0c333e1063467c5b5727e7fb6b710b8db4814eade3a42e8" dependencies = [ "logos-derive", ] [[package]] name = "logos-codegen" -version = "0.14.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32eb6b5f26efacd015b000bfc562186472cd9b34bdba3f6b264e2a052676d10" +checksum = "8e31badd9de5131fdf4921f6473d457e3dd85b11b7f091ceb50e4df7c3eeb12a" dependencies = [ "beef", "fnv", @@ -915,47 +686,18 @@ dependencies = [ [[package]] name = "logos-derive" -version = "0.14.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5d0c5463c911ef55624739fc353238b4e310f0144be1f875dc42fec6bfd5ec" +checksum = "1c2a69b3eb68d5bd595107c9ee58d7e07fe2bb5e360cc85b0f084dedac80de0a" dependencies = [ "logos-codegen", ] -[[package]] -name = "loop9" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" -dependencies = [ - "imgref", -] - -[[package]] -name = "matrixmultiply" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" -dependencies = [ - "autocfg", - "rawpointer", -] - -[[package]] -name = "maybe-rayon" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" -dependencies = [ - "cfg-if", - "rayon", -] - [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memoffset" @@ -966,141 +708,51 @@ dependencies = [ "autocfg", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", "simd-adler32", ] -[[package]] -name = "nalgebra" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c4b5f057b303842cf3262c27e465f4c303572e7f6b0648f60e16248ac3397f4" -dependencies = [ - "approx", - "matrixmultiply", - "nalgebra-macros", - "num-complex", - "num-rational", - "num-traits", - "simba", - "typenum", -] - -[[package]] -name = "nalgebra-macros" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "noop_proc_macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -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-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "num-integer" -version = "0.1.46" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ + "autocfg", "num-traits", ] [[package]] name = "num-rational" -version = "0.4.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ - "num-bigint", + "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.19" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] [[package]] name = "num_threads" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" dependencies = [ "libc", ] @@ -1126,30 +778,6 @@ dependencies = [ "supports-color", ] -[[package]] -name = "palette" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" -dependencies = [ - "approx", - "fast-srgb8", - "palette_derive", - "phf", -] - -[[package]] -name = "palette_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" -dependencies = [ - "by_address", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "parking_lot_core" version = "0.9.10" @@ -1158,31 +786,16 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "pawarser" -version = "0.1.0" -dependencies = [ - "drop_bomb", - "enumset", - "rowan", + "windows-targets 0.52.0", ] [[package]] name = "petgraph" -version = "0.6.5" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", "indexmap", @@ -1230,17 +843,11 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pkg-config" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" - [[package]] name = "png" -version = "0.17.13" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -1255,48 +862,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] -[[package]] -name = "profiling" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" -dependencies = [ - "profiling-procmacros", -] - -[[package]] -name = "profiling-procmacros" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "prowocessing" -version = "0.1.0" -dependencies = [ - "image 0.24.9", - "palette", -] - [[package]] name = "qoi" version = "0.4.1" @@ -1306,12 +880,6 @@ dependencies = [ "bytemuck", ] -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quick-xml" version = "0.31.0" @@ -1324,9 +892,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -1337,18 +905,6 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", "rand_core", ] @@ -1357,65 +913,6 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rav1e" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" -dependencies = [ - "arbitrary", - "arg_enum_proc_macro", - "arrayvec", - "av1-grain", - "bitstream-io", - "built", - "cfg-if", - "interpolate_name", - "itertools", - "libc", - "libfuzzer-sys", - "log", - "maybe-rayon", - "new_debug_unreachable", - "noop_proc_macro", - "num-derive", - "num-traits", - "once_cell", - "paste", - "profiling", - "rand", - "rand_chacha", - "simd_helpers", - "system-deps", - "thiserror", - "v_frame", - "wasm-bindgen", -] - -[[package]] -name = "ravif" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ba61c28ba24c0cf8406e025cb29a742637e3f70776e61c27a8a8b72a042d12" -dependencies = [ - "avif-serialize", - "imgref", - "loop9", - "quick-error", - "rav1e", - "rayon", - "rgb", -] - -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" @@ -1439,18 +936,27 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ - "bitflags 2.6.0", + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.4.1", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ "getrandom", "libredox", @@ -1459,18 +965,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" - -[[package]] -name = "rgb" -version = "0.8.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade4539f42266ded9e755c605bdddf546242b2c961b03b06a7375260788a0523" -dependencies = [ - "bytemuck", -] +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "ron" @@ -1479,7 +976,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64", - "bitflags 2.6.0", + "bitflags 2.4.1", "serde", "serde_derive", ] @@ -1505,18 +1002,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "safe_arch" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" -dependencies = [ - "bytemuck", -] +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "scopeguard" @@ -1526,18 +1014,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.204" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", @@ -1546,52 +1034,21 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "cb0652c533506ad7a2e353cce269330d6afd8bdfb6d75e0ace5b35aacbd7b9e9" dependencies = [ "itoa", "ryu", "serde", ] -[[package]] -name = "serde_spanned" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" -dependencies = [ - "serde", -] - -[[package]] -name = "simba" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" -dependencies = [ - "approx", - "num-complex", - "num-traits", - "paste", - "wide", -] - [[package]] name = "simd-adler32" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" -[[package]] -name = "simd_helpers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" -dependencies = [ - "quote", -] - [[package]] name = "siphasher" version = "0.3.11" @@ -1600,9 +1057,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "smallvec" -version = "1.13.2" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "spin" @@ -1624,9 +1081,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.11.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "supports-color" @@ -1650,34 +1107,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.70" +version = "2.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0209b68b3613b093e0ec905354eccaedcfe83b8cb37cbdeae64026c3064c16" +checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck", - "pkg-config", - "toml", - "version-compare", -] - -[[package]] -name = "target-lexicon" -version = "0.12.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" - [[package]] name = "text-size" version = "1.1.1" @@ -1686,18 +1124,18 @@ checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "6e3de26b0965292219b4287ff031fcba86837900fe9cd2b34ea8ad893c0953d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "268026685b2be38d7103e9e507c938a1fcb3d7e6eb15e87870b617bf37b6d581" dependencies = [ "proc-macro2", "quote", @@ -1706,9 +1144,9 @@ dependencies = [ [[package]] name = "tiff" -version = "0.9.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" dependencies = [ "flate2", "jpeg-decoder", @@ -1717,13 +1155,12 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" dependencies = [ "deranged", "libc", - "num-conv", "num_threads", "powerfmt", "serde", @@ -1736,46 +1173,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" -[[package]] -name = "toml" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - [[package]] name = "unicode-ident" version = "1.0.12" @@ -1784,32 +1181,15 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "utf8parse" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "v_frame" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" -dependencies = [ - "aligned-vec", - "num-traits", - "wasm-bindgen", -] - -[[package]] -name = "version-compare" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "vte" @@ -1837,75 +1217,11 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasm-bindgen" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" - [[package]] name = "weezl" -version = "0.1.8" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" - -[[package]] -name = "wide" -version = "0.7.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2caba658a80831539b30698ae9862a72db6697dfdd7151e46920f5f2755c3ce2" -dependencies = [ - "bytemuck", - "safe_arch", -] +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "windows-sys" @@ -1922,7 +1238,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", + "windows-targets 0.52.0", ] [[package]] @@ -1942,18 +1258,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "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", + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -1964,9 +1279,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" @@ -1976,9 +1291,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" @@ -1988,15 +1303,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.6" +version = "0.52.0" 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 = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" @@ -2006,9 +1315,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" @@ -2018,9 +1327,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" @@ -2030,9 +1339,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" @@ -2042,30 +1351,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" -dependencies = [ - "memchr", -] +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "yansi" -version = "1.0.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - -[[package]] -name = "zune-core" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zune-inflate" @@ -2075,12 +1369,3 @@ checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ "simd-adler32", ] - -[[package]] -name = "zune-jpeg" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec866b44a2a1fd6133d363f073ca1b179f438f99e7e5bfb1e33f7181facfe448" -dependencies = [ - "zune-core", -] diff --git a/Cargo.toml b/Cargo.toml index 794dd5a..2d4a618 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,10 +5,6 @@ members = [ "crates/ir", "crates/lang", "crates/svg-filters", - "crates/prowocessing", - "crates/executor-poc", - "crates/pawarser", - "crates/json-pawarser", ] resolver = "2" diff --git a/crates/app/Cargo.toml b/crates/app/Cargo.toml index d316efc..10182c2 100644 --- a/crates/app/Cargo.toml +++ b/crates/app/Cargo.toml @@ -12,7 +12,6 @@ clap = { workspace = true, features = [ "derive", "env" ] } dirs = "5" eval = { path = "../eval" } ir = { path = "../ir" } -prowocessing = { path = "../prowocessing"} owo-colors = "4" ron = "0.8" serde = { workspace = true, features = [ "derive" ] } diff --git a/crates/app/src/config.rs b/crates/app/src/config.rs index 17cd39c..b4d1ed1 100644 --- a/crates/app/src/config.rs +++ b/crates/app/src/config.rs @@ -1,11 +1,18 @@ -use self::config_file::{find_config_file, Configs}; -pub(crate) use cli::CliConfigs; +use std::path::PathBuf; + +use clap::Parser; + +use self::{ + cli::Args, + config_file::{find_config_file, Configs}, +}; mod cli; mod config_file; /// this struct may hold all configuration pub struct Config { + pub source: PathBuf, pub evaluator: eval::Available, pub startup_msg: bool, @@ -13,17 +20,13 @@ pub struct Config { impl Config { /// Get the configs from all possible places (args, file, env...) - pub fn read(args: &CliConfigs) -> Self { - // let config = if let Some(config) = &args.config_path { - // Ok(config.clone()) - // } else { - // find_config_file() - // }; - let config = args - .config_path - .clone() - .ok_or(()) - .or_else(|()| find_config_file()); + pub fn read() -> Self { + let args = Args::parse(); + let config = if let Some(config) = args.config_path { + Ok(config) + } else { + find_config_file() + }; // try to read a maybe existing config file let config = config.ok().and_then(|path| { @@ -39,6 +42,7 @@ impl Config { if let Some(file) = config { Self { + source: args.source, evaluator: args.evaluator.and(file.evaluator).unwrap_or_default(), // this is negated because to an outward api, the negative is more intuitive, // while in the source the other way around is more intuitive @@ -46,6 +50,7 @@ impl Config { } } else { Self { + source: args.source, startup_msg: !args.no_startup_message, evaluator: args.evaluator.unwrap_or_default(), } diff --git a/crates/app/src/config/cli.rs b/crates/app/src/config/cli.rs index c0e6c4d..1d9c57a 100644 --- a/crates/app/src/config/cli.rs +++ b/crates/app/src/config/cli.rs @@ -1,9 +1,12 @@ use std::path::PathBuf; -use clap::{builder::BoolishValueParser, ArgAction, Args}; +use clap::{builder::BoolishValueParser, ArgAction, Parser}; + +#[derive(Parser)] +pub(crate) struct Args { + /// What file contains the pipeline to evaluate. + pub source: PathBuf, -#[derive(Args)] -pub(crate) struct CliConfigs { /// How to actually run the pipeline. /// Overrides the config file. Defaults to the debug evaluator. #[arg(short, long)] diff --git a/crates/app/src/main.rs b/crates/app/src/main.rs index 9c7c0de..58103a5 100644 --- a/crates/app/src/main.rs +++ b/crates/app/src/main.rs @@ -1,8 +1,6 @@ -use std::{fs, path::PathBuf}; +use std::fs; -use clap::{Parser, Subcommand}; -use config::{CliConfigs, Config}; -use dev::DevCommands; +use config::Config; use welcome_msg::print_startup_msg; mod config; @@ -11,60 +9,19 @@ mod config; mod error_reporting; mod welcome_msg; -#[derive(Parser)] -struct Args { - #[command(flatten)] - configs: CliConfigs, - #[command(subcommand)] - command: Commands, -} - -#[derive(Subcommand)] -enum Commands { - Run { - /// What file contains the pipeline to evaluate. - source: PathBuf, - }, - Dev { - #[command(subcommand)] - command: DevCommands, - }, -} - fn main() { // TODO: proper error handling across the whole function // don't forget to also look inside `Config` - let args = Args::parse(); - let cfg = Config::read(&args.configs); + let cfg = Config::read(); if cfg.startup_msg { print_startup_msg(); } - match args.command { - Commands::Run { source } => { - let source = fs::read_to_string(source).expect("can't find source file"); - let ir = ir::from_ron(&source).expect("failed to parse source to graph ir"); + let source = fs::read_to_string(cfg.source).expect("can't find source file"); + let ir = ir::from_ron(&source).expect("failed to parse source to graph ir"); - let mut machine = cfg.evaluator.pick(); - machine.feed(ir); - machine.eval_full(); - } - Commands::Dev { - command: dev_command, - } => dev_command.run(), - } -} - -mod dev { - use clap::Subcommand; - - #[derive(Subcommand)] - pub(crate) enum DevCommands {} - - impl DevCommands { - pub fn run(self) { - println!("There are currently no dev commands."); - } - } + let mut machine = cfg.evaluator.pick(); + machine.feed(ir); + machine.eval_full(); } diff --git a/crates/app/src/welcome_msg.rs b/crates/app/src/welcome_msg.rs index 63b7601..a3e15a3 100644 --- a/crates/app/src/welcome_msg.rs +++ b/crates/app/src/welcome_msg.rs @@ -13,10 +13,4 @@ pub fn print_startup_msg() { } else { println!("Hello, thanks for using iOwO! :3"); } - if now.year() >= 2100 { - println!("Is your system time set correctly? If yes, ... wow, humanity still exists! :0"); - println!( - "Given current politics, I'm surprised we as a species made it another 75 years..." - ); - } } diff --git a/crates/eval/src/lib.rs b/crates/eval/src/lib.rs index 8687d91..c3a6c38 100644 --- a/crates/eval/src/lib.rs +++ b/crates/eval/src/lib.rs @@ -37,7 +37,7 @@ impl Available { #[must_use] pub fn pick(&self) -> Box { match self { - Self::Debug => Box::::default(), + Self::Debug => Box::new(kind::debug::Evaluator::default()), } } } diff --git a/crates/executor-poc/Cargo.toml b/crates/executor-poc/Cargo.toml deleted file mode 100644 index 563b1aa..0000000 --- a/crates/executor-poc/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "executor-poc" -version = "0.1.0" -edition = "2021" - -[dependencies] -image = "0.25.1" -indexmap = "2.2.6" -nalgebra = "0.33.0" -petgraph.workspace = true - -[lints] -workspace = true diff --git a/crates/executor-poc/src/lib.rs b/crates/executor-poc/src/lib.rs deleted file mode 100644 index e5c703e..0000000 --- a/crates/executor-poc/src/lib.rs +++ /dev/null @@ -1,128 +0,0 @@ -use indexmap::IndexMap; -use instructions::Instruction; -use petgraph::graph::DiGraph; -use types::Type; - -trait Node { - fn inputs() -> IndexMap; - fn outputs() -> IndexMap; -} - -struct NodeGraph { - graph: DiGraph, -} - -struct TypedEdge { - from: String, - to: String, - typ: Type, -} - -mod instructions { - //! This is the lowest level of the IR, the one the executor will use. - - use std::path::Path; - - use indexmap::{indexmap, IndexMap}; - pub enum Instruction { - // File handling - LoadFile, - SaveFile, - - ColorMatrix, - PosMatrix, - - Blend, - SplitChannels, - } - - impl Instruction { - fn inputs(&self) -> IndexMap { - match self { - Instruction::LoadFile => indexmap! { - "path" => Type::Path - }, - Instruction::SaveFile => indexmap! { - "path" => Type::Path - }, - - Instruction::ColorMatrix => indexmap! { - "image" => Type::ImageData, - "matrix" => Type::Mat(4,5) - }, - Instruction::PosMatrix => indexmap! { - "image" => Type::ImageData, - "matrix" => Type::Mat(2, 3), - }, - - Instruction::Blend => todo!(), - Instruction::SplitChannels => todo!(), - } - } - fn outputs(&self) -> IndexMap { - match self { - Instruction::LoadFile => indexmap! { - "image" => Type::ImageData - }, - Instruction::SaveFile => indexmap! {}, - - Instruction::ColorMatrix => indexmap! { - "resut" => Type::ImageData - }, - Instruction::PosMatrix => todo!(), - - Instruction::Blend => todo!(), - Instruction::SplitChannels => todo!(), - } - } - } -} - -mod types { - pub enum Type { - // TODO: later do lower level type system for this stuff? - // Image(Size, PixelType), - // // image data for processing. - // // always PixelType::Rgba32F - // ImageData(Size), - // // stuff that's still to be generated, not sized and no pixeltype - // ProceduralImage, - ImageData, - Text, - Integer, - Float, - Double, - Path, - Bool, - Vec( - // length, - u8, - ), - Mat( - // Rows - u8, - // Columns - u8, - ), - } - - // pub struct Size { - // width: u16, - // height: u16, - // } - - // Pixel types. Taken from variants [here](https://docs.rs/image/latest/image/pub enum.DynamicImage.html). - // pub enum PixelType { - // Luma8, - // LumaA8, - // Rgb8, - // Rgba8, - // Luma16, - // LumaA16, - // Rgb16, - // Rgba16, - // Rgb32F, - // #[default] - // Rgba32F, - // } -} diff --git a/crates/json-pawarser/Cargo.toml b/crates/json-pawarser/Cargo.toml deleted file mode 100644 index eb342e9..0000000 --- a/crates/json-pawarser/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "json-pawarser" -version = "0.1.0" -edition = "2021" - -[dependencies] -logos = "0.14.2" -enumset = "1.1.3" -rowan = "0.15.15" -pawarser = { path = "../pawarser" } - -[lints] -workspace = true diff --git a/crates/json-pawarser/src/grammar.rs b/crates/json-pawarser/src/grammar.rs deleted file mode 100644 index bb94474..0000000 --- a/crates/json-pawarser/src/grammar.rs +++ /dev/null @@ -1,78 +0,0 @@ -use array::array; -use enumset::{enum_set, EnumSet}; -use pawarser::parser::ParserBuilder; - -use crate::{ - syntax_error::SyntaxError, - syntax_kind::{lex, SyntaxKind}, -}; - -use self::object::object; - -mod array; -mod object; - -pub(crate) type Parser<'src> = pawarser::Parser<'src, SyntaxKind, SyntaxError>; -pub(crate) type CompletedMarker = pawarser::CompletedMarker; - -const BASIC_VALUE_TOKENS: EnumSet = - enum_set!(SyntaxKind::BOOL | SyntaxKind::NULL | SyntaxKind::NUMBER | SyntaxKind::STRING); - -pub fn value(p: &mut Parser) -> bool { - if BASIC_VALUE_TOKENS.contains(p.current()) { - p.do_bump(); - return true; - } else { - object(p).or_else(|| array(p)).is_some() - } -} - -#[cfg(test)] -mod tests { - use super::{ - test_utils::{check_parser, gen_checks}, - value, - }; - - #[test] - fn value_lit() { - gen_checks! {value; - r#""helo world""# => r#"ROOT { STRING "\"helo world\""; }"#, - "42" => r#"ROOT { NUMBER "42"; }"#, - "null" => r#"ROOT { NULL "null"; }"#, - "true" => r#"ROOT { BOOL "true"; }"#, - "false" => r#"ROOT { BOOL "false"; }"# - }; - } -} - -#[cfg(test)] -mod test_utils { - use pawarser::parser::ParserBuilder; - - use crate::syntax_kind::{lex, SyntaxKind}; - - use super::Parser; - - macro_rules! gen_checks { - ($fn_to_test:ident; $($in:literal => $out:literal),+) => { - $(crate::grammar::test_utils::check_parser($in, |p| { $fn_to_test(p); }, $out);)+ - } - } - - pub(super) use gen_checks; - - pub(super) fn check_parser(input: &str, parser_fn: fn(&mut Parser), expected_output: &str) { - let toks = lex(input); - let mut p: Parser = ParserBuilder::new(toks) - .add_meaningless(SyntaxKind::WHITESPACE) - .add_meaningless(SyntaxKind::NEWLINE) - .build(); - - parser_fn(&mut p); - - let out = p.finish(); - - assert_eq!(format!("{out:?}").trim_end(), expected_output); - } -} diff --git a/crates/json-pawarser/src/grammar/array.rs b/crates/json-pawarser/src/grammar/array.rs deleted file mode 100644 index 3ae1726..0000000 --- a/crates/json-pawarser/src/grammar/array.rs +++ /dev/null @@ -1,52 +0,0 @@ -use crate::{syntax_error::SyntaxError, syntax_kind::SyntaxKind}; - -use super::{value, CompletedMarker, Parser}; - -pub(super) fn array(p: &mut Parser) -> Option { - let array_start = p.start("array"); - - if !p.eat(SyntaxKind::BRACKET_OPEN) { - array_start.abandon(p); - return None; - } - - let el = p.start("arr_el"); - value(p); - el.complete(p, SyntaxKind::ELEMENT); - - while p.at(SyntaxKind::COMMA) { - let potential_trailing_comma = p.start("potential_trailing_comma"); - - p.eat(SyntaxKind::COMMA); - let maybe_el = p.start("arr_el"); - if !value(p) { - maybe_el.abandon(p); - potential_trailing_comma.complete(p, SyntaxKind::TRAILING_COMMA); - } else { - maybe_el.complete(p, SyntaxKind::ELEMENT); - potential_trailing_comma.abandon(p); - } - } - - Some(if !p.eat(SyntaxKind::BRACKET_CLOSE) { - array_start.error(p, SyntaxError::UnclosedArray) - } else { - array_start.complete(p, SyntaxKind::ARRAY) - }) -} - -#[cfg(test)] -mod tests { - use crate::grammar::{array::array, test_utils::gen_checks}; - - #[test] - fn array_basic() { - gen_checks! {array; - r#"[1,2,3]"# => r#"ROOT { ARRAY { BRACKET_OPEN "["; ELEMENT { NUMBER "1"; } COMMA ","; ELEMENT { NUMBER "2"; } COMMA ","; ELEMENT { NUMBER "3"; } BRACKET_CLOSE "]"; } }"#, - r#"[1,2,]"# => r#"ROOT { ARRAY { BRACKET_OPEN "["; ELEMENT { NUMBER "1"; } COMMA ","; ELEMENT { NUMBER "2"; } TRAILING_COMMA { COMMA ","; } BRACKET_CLOSE "]"; } }"#, - r#"[1,2"# => r#"ROOT { PARSE_ERR: UnclosedArray { BRACKET_OPEN "["; ELEMENT { NUMBER "1"; } COMMA ","; ELEMENT { NUMBER "2"; } } }"#, - r#"[1,2,"# => r#"ROOT { PARSE_ERR: UnclosedArray { BRACKET_OPEN "["; ELEMENT { NUMBER "1"; } COMMA ","; ELEMENT { NUMBER "2"; } TRAILING_COMMA { COMMA ","; } } }"#, - r#"[{"hello":"world""# => r#"ROOT { PARSE_ERR: UnclosedArray { BRACKET_OPEN "["; ELEMENT { PARSE_ERR: UnclosedObject { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"hello\""; } COLON ":"; MEMBER_VALUE { STRING "\"world\""; } } } } } }"# - } - } -} diff --git a/crates/json-pawarser/src/grammar/object.rs b/crates/json-pawarser/src/grammar/object.rs deleted file mode 100644 index 02d9e73..0000000 --- a/crates/json-pawarser/src/grammar/object.rs +++ /dev/null @@ -1,92 +0,0 @@ -use crate::{grammar::value, syntax_error::SyntaxError, syntax_kind::SyntaxKind}; - -use super::{CompletedMarker, Parser, BASIC_VALUE_TOKENS}; - -pub(super) fn object(p: &mut Parser) -> Option { - let obj_start = p.start("object"); - - if !p.eat(SyntaxKind::BRACE_OPEN) { - obj_start.abandon(p); - return None; - } - - member(p); - while p.at(SyntaxKind::COMMA) { - // not always an error, later configurable - let potential_trailing_comma = p.start("potential_trailing_comma"); - p.eat(SyntaxKind::COMMA); - - if member(p).is_none() { - potential_trailing_comma.complete(p, SyntaxKind::TRAILING_COMMA); - } else { - potential_trailing_comma.abandon(p); - } - } - - Some(if p.eat(SyntaxKind::BRACE_CLOSE) { - obj_start.complete(p, SyntaxKind::OBJECT) - } else { - obj_start.error(p, SyntaxError::UnclosedObject) - }) -} - -fn member(p: &mut Parser) -> Option { - let member_start = p.start("member"); - - if p.at(SyntaxKind::BRACE_CLOSE) { - member_start.abandon(p); - return None; - } else if p.at(SyntaxKind::STRING) { - let member_name_start = p.start("member_name"); - p.eat(SyntaxKind::STRING); - member_name_start.complete(p, SyntaxKind::MEMBER_NAME); - } else { - return todo!("handle other tokens: {:?}", p.current()); - } - - if !p.eat(SyntaxKind::COLON) { - todo!("handle wrong tokens") - } - - let member_value_start = p.start("member_value_start"); - if value(p) { - member_value_start.complete(p, SyntaxKind::MEMBER_VALUE); - Some(member_start.complete(p, SyntaxKind::MEMBER)) - } else { - member_value_start.abandon(p); - let e = member_start.error(p, SyntaxError::MemberMissingValue); - Some( - e.precede(p, "member but failed already") - .complete(p, SyntaxKind::MEMBER), - ) - } -} - -#[cfg(test)] -mod tests { - use crate::grammar::{ - object::{member, object}, - test_utils::gen_checks, - }; - - #[test] - fn object_basic() { - gen_checks! {object; - r#"{"a": "b"}"# => r#"ROOT { OBJECT { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { STRING "\"b\""; } } BRACE_CLOSE "}"; } }"#, - r#"{"a": 42}"# => r#"ROOT { OBJECT { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { NUMBER "42"; } } BRACE_CLOSE "}"; } }"#, - r#"{"a": "b""# => r#"ROOT { PARSE_ERR: UnclosedObject { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { STRING "\"b\""; } } } }"#, - r#"{"a": }"# => r#"ROOT { OBJECT { BRACE_OPEN "{"; MEMBER { PARSE_ERR: MemberMissingValue { MEMBER_NAME { STRING "\"a\""; } COLON ":"; } } WHITESPACE " "; BRACE_CLOSE "}"; } }"#, - r#"{"a":"# => r#"ROOT { PARSE_ERR: UnclosedObject { BRACE_OPEN "{"; MEMBER { PARSE_ERR: MemberMissingValue { MEMBER_NAME { STRING "\"a\""; } COLON ":"; } } } }"#, - r#"{"a":true,}"# => r#"ROOT { OBJECT { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; MEMBER_VALUE { BOOL "true"; } } TRAILING_COMMA { COMMA ","; } BRACE_CLOSE "}"; } }"# - } - } - - #[test] - fn member_basic() { - gen_checks! {member; - r#""a": "b""# => r#"ROOT { MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { STRING "\"b\""; } } }"#, - r#""a": 42"# => r#"ROOT { MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { NUMBER "42"; } } }"#, - r#""a":"# => r#"ROOT { MEMBER { PARSE_ERR: MemberMissingValue { MEMBER_NAME { STRING "\"a\""; } COLON ":"; } } }"# - } - } -} diff --git a/crates/json-pawarser/src/lib.rs b/crates/json-pawarser/src/lib.rs deleted file mode 100644 index 89160be..0000000 --- a/crates/json-pawarser/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod grammar; -mod syntax_error; -mod syntax_kind; diff --git a/crates/json-pawarser/src/syntax_error.rs b/crates/json-pawarser/src/syntax_error.rs deleted file mode 100644 index 8c76de2..0000000 --- a/crates/json-pawarser/src/syntax_error.rs +++ /dev/null @@ -1,11 +0,0 @@ -use crate::syntax_kind::SyntaxKind; - -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum SyntaxError { - UnclosedObject, - UnclosedArray, - DisallowedKeyType(SyntaxKind), - MemberMissingValue, - UnexpectedTrailingComma, -} -impl pawarser::parser::SyntaxError for SyntaxError {} diff --git a/crates/json-pawarser/src/syntax_kind.rs b/crates/json-pawarser/src/syntax_kind.rs deleted file mode 100644 index 6e6b966..0000000 --- a/crates/json-pawarser/src/syntax_kind.rs +++ /dev/null @@ -1,117 +0,0 @@ -use logos::Logos; - -pub fn lex(src: &str) -> Vec<(SyntaxKind, &str)> { - let mut lex = SyntaxKind::lexer(src); - let mut r = Vec::new(); - - while let Some(tok_res) = lex.next() { - r.push((tok_res.unwrap_or(SyntaxKind::LEX_ERR), lex.slice())) - } - - r -} - -#[derive(enumset::EnumSetType, Debug, Logos, PartialEq, Eq, Clone, Copy, Hash)] -#[repr(u16)] -#[enumset(no_super_impls)] -#[allow(non_camel_case_types)] -pub enum SyntaxKind { - OBJECT, - MEMBER, - MEMBER_NAME, - MEMBER_VALUE, - - ARRAY, - ELEMENT, - - // SyntaxKinds for future json5/etc support - TRAILING_COMMA, - - // Tokens - // Regexes adapted from [the logos handbook](https://logos.maciej.codes/examples/json_borrowed.html) - #[token("true")] - #[token("false")] - BOOL, - #[token("{")] - BRACE_OPEN, - #[token("}")] - BRACE_CLOSE, - #[token("[")] - BRACKET_OPEN, - #[token("]")] - BRACKET_CLOSE, - #[token(":")] - COLON, - #[token(",")] - COMMA, - #[token("null")] - NULL, - #[regex(r"-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?")] - NUMBER, - #[regex(r#""([^"\\]|\\["\\bnfrt]|u[a-fA-F0-9]{4})*""#)] - STRING, - - // Whitespace tokens - #[regex("[ \\t\\f]+")] - WHITESPACE, - #[token("\n")] - NEWLINE, - - // Error SyntaxKinds - LEX_ERR, - PARSE_ERR, - - // Meta SyntaxKinds - ROOT, - EOF, -} - -impl pawarser::parser::SyntaxElement for SyntaxKind { - const SYNTAX_EOF: Self = Self::EOF; - - const SYNTAX_ERROR: Self = Self::PARSE_ERR; - const SYNTAX_ROOT: Self = Self::ROOT; -} - -impl From for rowan::SyntaxKind { - fn from(kind: SyntaxKind) -> Self { - Self(kind as u16) - } -} - -impl From for SyntaxKind { - fn from(raw: rowan::SyntaxKind) -> Self { - assert!(raw.0 <= SyntaxKind::EOF as u16); - #[allow(unsafe_code, reason = "The transmute is necessary here")] - unsafe { - std::mem::transmute::(raw.0) - } - } -} - -#[cfg(test)] -mod tests { - use crate::syntax_kind::{lex, SyntaxKind}; - - #[test] - fn simple_object() { - const TEST_DATA: &str = r#"{"hello_world": "meow", "some_num":7.42}"#; - - assert_eq!( - dbg!(lex(TEST_DATA)), - vec![ - (SyntaxKind::BRACE_OPEN, "{"), - (SyntaxKind::STRING, "\"hello_world\""), - (SyntaxKind::COLON, ":"), - (SyntaxKind::WHITESPACE, " "), - (SyntaxKind::STRING, "\"meow\""), - (SyntaxKind::COMMA, ","), - (SyntaxKind::WHITESPACE, " "), - (SyntaxKind::STRING, "\"some_num\""), - (SyntaxKind::COLON, ":"), - (SyntaxKind::NUMBER, "7.42"), - (SyntaxKind::BRACE_CLOSE, "}") - ] - ); - } -} diff --git a/crates/pawarser/Cargo.toml b/crates/pawarser/Cargo.toml deleted file mode 100644 index 787cb2f..0000000 --- a/crates/pawarser/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "pawarser" -version = "0.1.0" -edition = "2021" - -[dependencies] -rowan = "0.15.15" -drop_bomb = "0.1.5" -enumset = "1.1.3" - -[lints] -workspace = true diff --git a/crates/pawarser/src/lib.rs b/crates/pawarser/src/lib.rs deleted file mode 100644 index 26d8679..0000000 --- a/crates/pawarser/src/lib.rs +++ /dev/null @@ -1,8 +0,0 @@ -#![feature(iter_collect_into)] -pub mod parser; - -pub use parser::{ - error::SyntaxError, - marker::{CompletedMarker, Marker}, - Parser, SyntaxElement, -}; diff --git a/crates/pawarser/src/parser.rs b/crates/pawarser/src/parser.rs deleted file mode 100644 index c592cdb..0000000 --- a/crates/pawarser/src/parser.rs +++ /dev/null @@ -1,253 +0,0 @@ -use std::{cell::Cell, fmt, marker::PhantomData, mem}; - -use enumset::{EnumSet, EnumSetType}; -use rowan::{GreenNode, GreenNodeBuilder}; - -use crate::parser::event::NodeKind; - -use self::{event::Event, input::Input, marker::Marker}; -pub use {error::SyntaxError, output::ParserOutput}; - -pub mod error; -mod event; -mod input; -pub mod marker; -pub mod output; - -/// this is used to define some required SyntaxKinds like an EOF token or an error token -pub trait SyntaxElement -where - Self: EnumSetType - + Into - + From - + fmt::Debug - + Clone - + PartialEq - + Eq, -{ - /// EOF value. This will be used by the rest of the parser library to represent an EOF. - const SYNTAX_EOF: Self; - /// Error value. This will be used as a placeholder for associated respective errors. - const SYNTAX_ERROR: Self; - const SYNTAX_ROOT: Self; -} - -pub struct Parser<'src, SyntaxKind: SyntaxElement, SyntaxErr: SyntaxError> { - input: Input<'src, SyntaxKind>, - pos: usize, - events: Vec>, - step_limit: u32, - steps: Cell, -} - -impl<'src, 'toks, SyntaxKind: SyntaxElement, SyntaxErr: SyntaxError> - Parser<'src, SyntaxKind, SyntaxErr> -{ - /// eat all meaningless tokens at the end of the file. - pub fn eat_succeeding_meaningless(&mut self) { - self.push_ev(Event::Eat { - count: self.input.meaningless_tail_len(), - }); - } - - /// Get token from current position of the parser. - pub fn current(&self) -> SyntaxKind { - self.step(); - self.input.kind(self.pos) - } - - pub fn start(&mut self, name: &str) -> Marker { - let pos = self.events.len(); - self.push_ev(Event::tombstone()); - Marker::new(pos, name) - } - - /// Eat next token if it's of kind `kind` and return `true`. - /// Otherwise, `false`. - pub fn eat(&mut self, kind: SyntaxKind) -> bool { - if !self.at(kind) { - return false; - } - - self.do_bump(); - true - } - - pub fn do_bump(&mut self) { - self.push_ev(Event::Eat { - count: self.input.preceding_meaningless(self.pos), - }); - self.pos += 1; - } - - /// Check if the token at the current parser position is of `kind` - pub fn at(&self, kind: SyntaxKind) -> bool { - self.nth_at(0, kind) - } - - /// Check if the token that is `n` ahead is of `kind` - pub fn nth_at(&self, n: usize, kind: SyntaxKind) -> bool { - self.nth(n) == kind - } - - pub fn nth(&self, n: usize) -> SyntaxKind { - self.step(); - self.input.kind(self.pos + n) - } - - fn push_ev(&mut self, event: Event) { - self.events.push(event); - } - - fn step(&self) { - let steps = self.steps.get(); - assert!(steps <= self.step_limit, "the parser seems stuck."); - self.steps.set(steps + 1); - } - - pub fn finish(self) -> ParserOutput { - let Self { - input, - pos, - mut events, - step_limit, - steps, - } = self; - let (mut raw_toks, meaningless_tokens) = input.dissolve(); - let mut builder = GreenNodeBuilder::new(); - // TODO: document what the hell a forward parent is - let mut fw_parents = Vec::new(); - let mut errors: Vec = Vec::new(); - raw_toks.reverse(); - - // always have an implicit root node to avoid [`GreenNodeBuilder::finish()`] panicking due to multiple root elements. - builder.start_node(SyntaxKind::SYNTAX_ROOT.into()); - - for i in 0..events.len() { - match mem::replace(&mut events[i], Event::tombstone()) { - Event::Start { - kind, - forward_parent, - } => { - if kind == NodeKind::Tombstone && forward_parent.is_none() { - continue; - } - - // resolving forward parents - // temporarily jump around with the parser index and replace them with tombstones - fw_parents.push(kind); - let mut idx = i; - let mut fp = forward_parent; - while let Some(fwd) = fp { - idx += fwd as usize; - fp = match mem::replace(&mut events[idx], Event::tombstone()) { - Event::Start { - kind, - forward_parent, - } => { - fw_parents.push(kind); - forward_parent - } - _ => unreachable!(), - } - } - - // clear semantically meaningless tokens before the new tree node for aesthetic reasons - while raw_toks - .last() - .is_some_and(|v| meaningless_tokens.contains(v.0)) - { - // update first next Eat event - match events.iter_mut().find(|ev| matches!(ev, Event::Eat { .. })) { - Some(Event::Eat { count }) => *count -= 1, - _ => unreachable!(), - } - - // put whitespace into lst - let (tok, text) = raw_toks.pop().unwrap(); - builder.token(tok.into(), text); - } - - // insert forward parents into the tree in correct order - for kind in fw_parents.drain(..).rev() { - match kind { - NodeKind::Syntax(kind) => builder.start_node(kind.into()), - NodeKind::Error(err) => { - errors.push(err); - builder.start_node(SyntaxKind::SYNTAX_ERROR.into()) - } - _ => {} - } - } - } - Event::Finish => builder.finish_node(), - Event::Eat { count } => (0..count).for_each(|_| { - let (tok, text) = raw_toks.pop().unwrap(); - builder.token(tok.into(), text); - }), - } - } - - // finish SYNTAX_ROOT - builder.finish_node(); - - ParserOutput { - green_node: builder.finish(), - errors, - _syntax_kind: PhantomData::, - } - } -} - -pub struct ParserBuilder< - 'src, - SyntaxKind: SyntaxElement, - // SyntaxErr: SyntaxError, -> { - raw_toks: Vec<(SyntaxKind, &'src str)>, - meaningless_token_kinds: EnumSet, - step_limit: u32, -} - -impl<'src, SyntaxKind: SyntaxElement> ParserBuilder<'src, SyntaxKind> { - pub fn new(raw_toks: Vec<(SyntaxKind, &'src str)>) -> Self { - Self { - raw_toks, - meaningless_token_kinds: EnumSet::new(), - step_limit: 4096, - } - } - - /// Sets the parser step limit. - /// Defaults to 4096 - pub fn step_limit(mut self, new: u32) -> Self { - self.step_limit = new; - self - } - - pub fn add_meaningless(mut self, kind: SyntaxKind) -> Self { - self.meaningless_token_kinds.insert(kind); - self - } - - pub fn add_meaningless_many(mut self, kind: Vec) -> Self { - self.meaningless_token_kinds - .insert_all(kind.into_iter().collect()); - self - } - - pub fn build(self) -> Parser<'src, SyntaxKind, SyntaxErr> { - let Self { - raw_toks, - meaningless_token_kinds, - step_limit, - } = self; - Parser { - input: Input::new(raw_toks, Some(meaningless_token_kinds)), - pos: 0, - events: Vec::new(), - step_limit, - steps: Cell::new(0), - } - } -} diff --git a/crates/pawarser/src/parser/error.rs b/crates/pawarser/src/parser/error.rs deleted file mode 100644 index 9c9d893..0000000 --- a/crates/pawarser/src/parser/error.rs +++ /dev/null @@ -1,9 +0,0 @@ -use std::fmt; - -/// A marker trait... for now! -// TODO: constrain that conversion to `NodeKind::Error` is enforced to be possible -pub trait SyntaxError -where - Self: fmt::Debug + Clone + PartialEq + Eq, -{ -} diff --git a/crates/pawarser/src/parser/event.rs b/crates/pawarser/src/parser/event.rs deleted file mode 100644 index 1b71d8e..0000000 --- a/crates/pawarser/src/parser/event.rs +++ /dev/null @@ -1,42 +0,0 @@ -use enumset::EnumSetType; - -use super::{error::SyntaxError, SyntaxElement}; - -pub enum Event { - Start { - kind: NodeKind, - forward_parent: Option, - }, - Finish, - Eat { - count: usize, - }, -} - -impl Event { - pub fn tombstone() -> Self { - Self::Start { - kind: NodeKind::Tombstone, - forward_parent: None, - } - } -} - -#[derive(Clone, PartialEq, Eq)] -pub enum NodeKind { - Tombstone, - Syntax(SyntaxKind), - Error(SyntaxErr), -} - -impl NodeKind { - pub fn is_tombstone(&self) -> bool { - matches!(self, Self::Tombstone) - } - pub fn is_syntax(&self) -> bool { - matches!(self, Self::Syntax(_)) - } - pub fn is_error(&self) -> bool { - matches!(self, Self::Error(_)) - } -} diff --git a/crates/pawarser/src/parser/input.rs b/crates/pawarser/src/parser/input.rs deleted file mode 100644 index d7e14b3..0000000 --- a/crates/pawarser/src/parser/input.rs +++ /dev/null @@ -1,67 +0,0 @@ -use enumset::{EnumSet, EnumSetType}; - -use super::SyntaxElement; - -pub struct Input<'src, SyntaxKind: SyntaxElement> { - raw: Vec<(SyntaxKind, &'src str)>, - // enumset of meaningless tokens - semantically_meaningless: EnumSet, - // indices of non-meaningless tokens - meaningful_toks: Vec, -} - -impl<'src, SyntaxKind: SyntaxElement> Input<'src, SyntaxKind> { - pub fn new( - raw_toks: Vec<(SyntaxKind, &'src str)>, - meaningless: Option>, - ) -> Self { - let mut meaningful_toks = Vec::new(); - - if let Some(meaningless) = meaningless { - let meaningful_toks = raw_toks - .iter() - .enumerate() - .filter_map(|(i, tok)| (!meaningless.contains(tok.0)).then_some(i)) - .collect_into(&mut meaningful_toks); - } - - Self { - raw: raw_toks, - semantically_meaningless: meaningless.unwrap_or_default(), - meaningful_toks, - } - } - - pub fn kind(&self, idx: usize) -> SyntaxKind { - let Some(meaningful_idx) = self.meaningful_toks.get(idx) else { - return SyntaxKind::SYNTAX_EOF; - }; - - self.raw.get(*meaningful_idx).unwrap().0 - } - - pub fn preceding_meaningless(&self, idx: usize) -> usize { - assert!(self.meaningful_toks.len() > idx); - - if idx == 0 { - // maybe should be `self.meaningful_toks[idx]` instead?? - 1 - } else { - self.meaningful_toks[idx] - self.meaningful_toks[idx - 1] - } - } - - /// get the count of meaningless tokens at the end of the file. - pub fn meaningless_tail_len(&self) -> usize { - self.raw.len() - (self.meaningful_toks.last().unwrap() + 1) - } - - pub fn dissolve(self) -> (Vec<(SyntaxKind, &'src str)>, EnumSet) { - let Self { - raw, - semantically_meaningless, - .. - } = self; - (raw, semantically_meaningless) - } -} diff --git a/crates/pawarser/src/parser/marker.rs b/crates/pawarser/src/parser/marker.rs deleted file mode 100644 index 2e1244d..0000000 --- a/crates/pawarser/src/parser/marker.rs +++ /dev/null @@ -1,97 +0,0 @@ -use drop_bomb::DropBomb; -use rowan::SyntaxKind; - -use super::{ - error::SyntaxError, - event::{Event, NodeKind}, - Parser, SyntaxElement, -}; - -pub struct Marker { - pos: usize, - bomb: DropBomb, -} - -impl Marker { - pub(super) fn new(pos: usize, name: &str) -> Self { - Self { - pos, - bomb: DropBomb::new(format!("Marker {name} must be completed or abandoned.")), - } - } - - fn close_node( - mut self, - p: &mut Parser, - kind: NodeKind, - ) -> CompletedMarker { - self.bomb.defuse(); - - match &mut p.events[self.pos] { - Event::Start { kind: slot, .. } => *slot = kind.clone(), - _ => unreachable!(), - } - - p.push_ev(Event::Finish); - CompletedMarker { - pos: self.pos, - kind, - } - } - - pub fn complete( - self, - p: &mut Parser, - kind: SyntaxKind, - ) -> CompletedMarker { - self.close_node(p, NodeKind::Syntax(kind)) - } - - pub fn error( - self, - p: &mut Parser, - kind: SyntaxErr, - ) -> CompletedMarker { - self.close_node(p, NodeKind::Error(kind)) - } - - pub fn abandon( - mut self, - p: &mut Parser, - ) { - self.bomb.defuse(); - - // clean up empty tombstone event from marker - if self.pos == p.events.len() - 1 { - match p.events.pop() { - Some(Event::Start { - kind: NodeKind::Tombstone, - forward_parent: None, - }) => (), - _ => unreachable!(), - } - } - } -} - -pub struct CompletedMarker { - pos: usize, - kind: NodeKind, -} - -impl CompletedMarker { - pub fn precede(self, p: &mut Parser, name: &str) -> Marker { - let new_pos = p.start(name); - - match &mut p.events[self.pos] { - Event::Start { forward_parent, .. } => { - // point forward parent of the node this marker completed to the new node - // will later be used to make the new node a parent of the current node. - *forward_parent = Some(new_pos.pos - self.pos) - } - _ => unreachable!(), - } - - new_pos - } -} diff --git a/crates/pawarser/src/parser/output.rs b/crates/pawarser/src/parser/output.rs deleted file mode 100644 index 76c3cf7..0000000 --- a/crates/pawarser/src/parser/output.rs +++ /dev/null @@ -1,73 +0,0 @@ -use std::{fmt, marker::PhantomData}; - -use rowan::{GreenNode, GreenNodeData, GreenTokenData, NodeOrToken}; - -use crate::{SyntaxElement, SyntaxError}; - -pub struct ParserOutput { - pub green_node: GreenNode, - pub errors: Vec, - pub(super) _syntax_kind: PhantomData, -} - -impl std::fmt::Debug - for ParserOutput -{ - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - let mut errs: Vec<&SyntaxErr> = self.errors.iter().collect(); - errs.reverse(); - debug_print_output::( - NodeOrToken::Node(&self.green_node), - f, - 0, - &mut errs, - ) - } -} - -fn debug_print_output( - node: NodeOrToken<&GreenNodeData, &GreenTokenData>, - f: &mut std::fmt::Formatter<'_>, - lvl: i32, - errs: &mut Vec<&SyntaxErr>, -) -> std::fmt::Result { - if f.alternate() { - for _ in 0..lvl { - f.write_str(" ")?; - } - } - let maybe_newline = if f.alternate() { "\n" } else { " " }; - - match node { - NodeOrToken::Node(n) => { - let kind: SyntaxKind = node.kind().into(); - if kind != SyntaxKind::SYNTAX_ERROR { - write!(f, "{:?} {{{maybe_newline}", kind)?; - } else { - let err = errs - .pop() - .expect("all error syntax nodes should correspond to an error"); - - write!(f, "{:?}: {err:?} {{{maybe_newline}", kind)?; - } - for c in n.children() { - debug_print_output::(c, f, lvl + 1, errs)?; - } - - if f.alternate() { - for _ in 0..lvl { - f.write_str(" ")?; - } - } - write!(f, "}}{maybe_newline}") - } - NodeOrToken::Token(t) => { - write!( - f, - "{:?} {:?};{maybe_newline}", - Into::::into(t.kind()), - t.text() - ) - } - } -} diff --git a/crates/prowocessing/Cargo.toml b/crates/prowocessing/Cargo.toml deleted file mode 100644 index 42d1a80..0000000 --- a/crates/prowocessing/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "prowocessing" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -image = "0.24.8" -palette = "0.7.4" - -[lints] -workspace = true diff --git a/crates/prowocessing/src/experimental.rs b/crates/prowocessing/src/experimental.rs deleted file mode 100644 index 1a0f7e3..0000000 --- a/crates/prowocessing/src/experimental.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod enum_based; -pub mod trait_based; diff --git a/crates/prowocessing/src/experimental/enum_based.rs b/crates/prowocessing/src/experimental/enum_based.rs deleted file mode 100644 index c60f4a9..0000000 --- a/crates/prowocessing/src/experimental/enum_based.rs +++ /dev/null @@ -1,64 +0,0 @@ -pub enum Instruction { - Uppercase, - Lowercase, -} - -pub struct Pipeline { - pipeline: Vec String>, -} - -impl Pipeline { - pub fn run(&self, val: String) -> String { - let mut current = val; - - for instr in &self.pipeline { - current = instr(current); - } - - current - } -} - -pub struct PipelineBuilder { - pipeline: Vec, -} - -impl PipelineBuilder { - pub fn new() -> Self { - Self { - pipeline: Vec::new(), - } - } - - #[must_use] - pub fn insert(mut self, instr: Instruction) -> Self { - self.pipeline.push(instr); - self - } - - pub fn build(&self) -> Pipeline { - fn uppercase(v: String) -> String { - str::to_uppercase(&v) - } - fn lowercase(v: String) -> String { - str::to_lowercase(&v) - } - - let mut res = Vec::new(); - - for item in &self.pipeline { - res.push(match item { - Instruction::Uppercase => uppercase, - Instruction::Lowercase => lowercase, - }); - } - - Pipeline { pipeline: res } - } -} - -impl Default for PipelineBuilder { - fn default() -> Self { - Self::new() - } -} diff --git a/crates/prowocessing/src/experimental/trait_based.rs b/crates/prowocessing/src/experimental/trait_based.rs deleted file mode 100644 index 251fb35..0000000 --- a/crates/prowocessing/src/experimental/trait_based.rs +++ /dev/null @@ -1,11 +0,0 @@ -//! An experiment for a hyper-modular trait-based architecture. -//! -//! Patterns defining this (or well, which I reference a lot while writing this): -//! - [Command pattern using trait objects](https://rust-unofficial.github.io/patterns/patterns/behavioural/command.html) -//! - [Builder pattern](https://rust-unofficial.github.io/patterns/patterns/creational/builder.html) - -pub mod data; -#[macro_use] -pub mod element; -pub mod ops; -pub mod pipeline; diff --git a/crates/prowocessing/src/experimental/trait_based/data.rs b/crates/prowocessing/src/experimental/trait_based/data.rs deleted file mode 100644 index e3dd671..0000000 --- a/crates/prowocessing/src/experimental/trait_based/data.rs +++ /dev/null @@ -1,5 +0,0 @@ -//! Definitions of the data transfer and storage types. - -pub mod io; - -pub mod raw; diff --git a/crates/prowocessing/src/experimental/trait_based/data/io.rs b/crates/prowocessing/src/experimental/trait_based/data/io.rs deleted file mode 100644 index 4eb9bd3..0000000 --- a/crates/prowocessing/src/experimental/trait_based/data/io.rs +++ /dev/null @@ -1,53 +0,0 @@ -//! Types for element and pipeline IO - -use std::{borrow::ToOwned, convert::Into}; - -use super::raw::Data; - -/// Newtype struct with borrowed types for pipeline/element inputs, so that doesn't force a move or clone -#[derive(PartialEq, Eq, Debug)] -pub struct Inputs<'a>(pub Vec<&'a Data>); - -impl<'a> From> for Inputs<'a> { - fn from(value: Vec<&'a Data>) -> Self { - Self(value) - } -} - -impl<'a, T: Into<&'a Data>> From for Inputs<'a> { - fn from(value: T) -> Self { - Self(vec![value.into()]) - } -} - -impl<'a> From<&'a Outputs> for Inputs<'a> { - fn from(value: &'a Outputs) -> Self { - Self(value.0.iter().map(Into::into).collect()) - } -} - -/// Used for pipeline/element outputs -#[derive(PartialEq, Eq, Debug)] -pub struct Outputs(pub Vec); - -impl Outputs { - /// consume self and return inner value(s) - pub fn into_inner(self) -> Vec { - self.0 - } -} -impl From> for Outputs { - fn from(value: Vec) -> Self { - Self(value) - } -} -impl> From for Outputs { - fn from(value: T) -> Self { - Self(vec![value.into()]) - } -} -impl From> for Outputs { - fn from(value: Inputs) -> Self { - Self(value.0.into_iter().map(ToOwned::to_owned).collect()) - } -} diff --git a/crates/prowocessing/src/experimental/trait_based/data/raw.rs b/crates/prowocessing/src/experimental/trait_based/data/raw.rs deleted file mode 100644 index 6640e64..0000000 --- a/crates/prowocessing/src/experimental/trait_based/data/raw.rs +++ /dev/null @@ -1,20 +0,0 @@ -//! Dynamic data storage and transfer types for use in [`io`] - -// Dynamic data type -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum Data { - String(String), - Int(i32), -} - -impl From for Data { - fn from(value: String) -> Self { - Self::String(value) - } -} - -impl From for Data { - fn from(value: i32) -> Self { - Self::Int(value) - } -} diff --git a/crates/prowocessing/src/experimental/trait_based/element.rs b/crates/prowocessing/src/experimental/trait_based/element.rs deleted file mode 100644 index b07c739..0000000 --- a/crates/prowocessing/src/experimental/trait_based/element.rs +++ /dev/null @@ -1,29 +0,0 @@ -//! The trait and type representations - -use std::any::TypeId; - -use crate::experimental::trait_based::data::io::Inputs; - -use super::data::io::Outputs; - -pub(crate) trait PipelineElement { - /// return a static runner function pointer to avoid dynamic dispatch during pipeline execution - Types MUST match the signature - fn runner(&self) -> fn(&Inputs) -> Outputs; - /// return the signature of the element - fn signature(&self) -> ElementSignature; -} - -/// Type signature for an element used for static checking -pub(crate) struct ElementSignature { - pub inputs: Vec, - pub outputs: Vec, -} - -macro_rules! signature { - ($($inputs:ty),+ => $($outputs:ty),+) => ( - ElementSignature { - inputs: vec![$(std::any::TypeId::of::<$inputs>(), )+], - outputs: vec![$(std::any::TypeId::of::<$outputs>(), )+] - } - ) -} diff --git a/crates/prowocessing/src/experimental/trait_based/ops.rs b/crates/prowocessing/src/experimental/trait_based/ops.rs deleted file mode 100644 index e7c9d04..0000000 --- a/crates/prowocessing/src/experimental/trait_based/ops.rs +++ /dev/null @@ -1,7 +0,0 @@ -mod num; -mod str; - -pub mod prelude { - pub(crate) use super::num::*; - pub(crate) use super::str::*; -} diff --git a/crates/prowocessing/src/experimental/trait_based/ops/num.rs b/crates/prowocessing/src/experimental/trait_based/ops/num.rs deleted file mode 100644 index ea189bf..0000000 --- a/crates/prowocessing/src/experimental/trait_based/ops/num.rs +++ /dev/null @@ -1,62 +0,0 @@ -//! Operations on numeric data -use core::panic; -use std::any::TypeId; - -use crate::experimental::trait_based::{ - data::{ - io::{Inputs, Outputs}, - raw::Data, - }, - element::{ElementSignature, PipelineElement}, -}; - -/// Addition -pub struct Add(pub i32); -impl PipelineElement for Add { - fn runner(&self) -> fn(&Inputs) -> Outputs { - |input| { - let [Data::Int(i0), Data::Int(i1), ..] = input.0[..] else { - panic!("Invalid data passed") - }; - (i0 + i1).into() - } - } - - fn signature(&self) -> ElementSignature { - signature!(i32, i32 => i32) - } -} - -/// Subtraction -pub struct Subtract(pub i32); -impl PipelineElement for Subtract { - fn runner(&self) -> fn(&Inputs) -> Outputs { - |input| { - let [Data::Int(i0), Data::Int(i1), ..] = input.0[..] else { - panic!("Invalid data passed") - }; - (i0 + i1).into() - } - } - - fn signature(&self) -> ElementSignature { - signature!(i32, i32 => i32) - } -} - -/// Turn input to string -pub struct Stringify; -impl PipelineElement for Stringify { - fn runner(&self) -> fn(&Inputs) -> Outputs { - |input| { - let [Data::Int(int), ..] = input.0[..] else { - panic!("Invalid data passed") - }; - int.to_string().into() - } - } - - fn signature(&self) -> ElementSignature { - signature!(i32 => String) - } -} diff --git a/crates/prowocessing/src/experimental/trait_based/ops/str.rs b/crates/prowocessing/src/experimental/trait_based/ops/str.rs deleted file mode 100644 index fb59ada..0000000 --- a/crates/prowocessing/src/experimental/trait_based/ops/str.rs +++ /dev/null @@ -1,59 +0,0 @@ -//! Operation on String/text data -use crate::experimental::trait_based::{ - data::{ - io::{Inputs, Outputs}, - raw::Data, - }, - element::{ElementSignature, PipelineElement}, -}; - -/// Concatenate the inputs -pub struct Concatenate(pub String); -impl PipelineElement for Concatenate { - fn runner(&self) -> fn(&Inputs) -> Outputs { - |input| { - let [Data::String(s0), Data::String(s1), ..] = input.0[..] else { - panic!("Invalid data passed") - }; - format!("{s0}{s1}").into() - } - } - - fn signature(&self) -> ElementSignature { - signature!(String, String => String) - } -} - -/// Turn input text to uppercase -pub struct Upper; -impl PipelineElement for Upper { - fn runner(&self) -> fn(&Inputs) -> Outputs { - |input| { - let [Data::String(s), ..] = input.0[..] else { - panic!("Invalid data passed") - }; - s.to_uppercase().into() - } - } - - fn signature(&self) -> ElementSignature { - signature!(String => String) - } -} - -/// Turn input text to lowercase -pub struct Lower; -impl PipelineElement for Lower { - fn runner(&self) -> fn(&Inputs) -> Outputs { - |input| { - let [Data::String(s), ..] = input.0[..] else { - panic!("Invalid data passed") - }; - s.to_lowercase().into() - } - } - - fn signature(&self) -> ElementSignature { - signature!(String => String) - } -} diff --git a/crates/prowocessing/src/experimental/trait_based/pipeline.rs b/crates/prowocessing/src/experimental/trait_based/pipeline.rs deleted file mode 100644 index 715fda7..0000000 --- a/crates/prowocessing/src/experimental/trait_based/pipeline.rs +++ /dev/null @@ -1,107 +0,0 @@ -use super::data::io::{Inputs, Outputs}; -use super::element::PipelineElement; -use super::ops::prelude::*; - -/// Builder for the pipelines that are actually run -/// -/// TODO: -/// - Bind additional inputs if instruction has more then one and is passd without any additional -/// - allow binding to pointers to other pipelines? -/// - allow referencing earlier data -pub struct PipelineBuilder { - elements: Vec>, -} - -impl PipelineBuilder { - /// Create new, empty builder - pub fn new() -> Self { - Self { - elements: Vec::new(), - } - } - - /// Insert element into pipeline - fn insert(mut self, el: T) -> Self { - if let Some(previous_item) = self.elements.last() { - assert_eq!( - previous_item.signature().outputs[0], - el.signature().inputs[0] - ); - } - self.elements.push(Box::new(el)); - self - } - - /// insert string concatenattion element - #[must_use] - pub fn concatenate(self, sec: String) -> Self { - self.insert(Concatenate(sec)) - } - - /// insert string uppercase element - #[must_use] - pub fn upper(self) -> Self { - self.insert(Upper) - } - - /// insert string lowercase element - #[must_use] - pub fn lower(self) -> Self { - self.insert(Lower) - } - - /// insert numeric addition element - #[must_use] - #[allow( - clippy::should_implement_trait, - reason = "is not equivalent to addition" - )] - pub fn add(self, sec: i32) -> Self { - self.insert(Add(sec)) - } - - /// insert numeric subtraction element - #[must_use] - pub fn subtract(self, sec: i32) -> Self { - self.insert(Subtract(sec)) - } - - /// insert stringify element - #[must_use] - pub fn stringify(self) -> Self { - self.insert(Stringify) - } - - /// Build the pipeline. Doesn't check again - `insert` should verify correctness. - pub fn build(&self) -> Pipeline { - let mut r = Vec::new(); - - self.elements.iter().for_each(|el| r.push(el.runner())); - - Pipeline { runners: r } - } -} - -impl Default for PipelineBuilder { - fn default() -> Self { - Self::new() - } -} - -/// Runnable pipeline - at the core of this library -pub struct Pipeline { - runners: Vec Outputs>, -} - -impl Pipeline { - /// run the pipeline - pub fn run(&self, inputs: Inputs) -> Outputs { - let mut out: Outputs = inputs.into(); - - for runner in &self.runners { - out = runner(&(&out).into()); - } - - out - } -} diff --git a/crates/prowocessing/src/lib.rs b/crates/prowocessing/src/lib.rs deleted file mode 100644 index 083eb4f..0000000 --- a/crates/prowocessing/src/lib.rs +++ /dev/null @@ -1,40 +0,0 @@ -//! # This is the image processing library for iOwO -//! -//! One of the design goals for this library is, however, to be a simple, generic image processing library. -//! For now, it's just indev... lets see what comes of it! -#![feature(lint_reasons)] - -/// just some experiments, to test whether the architecture i want is even possible (or how to do it). probably temporary. -/// Gonna first try string processing... -pub mod experimental; - -#[cfg(test)] -mod tests { - use crate::experimental::{ - enum_based, - trait_based::{self, data::io::Outputs}, - }; - - #[test] - fn test_enums() { - let builder = enum_based::PipelineBuilder::new().insert(enum_based::Instruction::Uppercase); - let upr = builder.build(); - let upr_lowr = builder.insert(enum_based::Instruction::Lowercase).build(); - - assert_eq!(upr.run(String::from("Test")), String::from("TEST")); - assert_eq!(upr_lowr.run(String::from("Test")), String::from("test")); - } - - #[test] - fn add() { - let pipe = trait_based::pipeline::PipelineBuilder::new() - .add(0) - .stringify() - .build(); - - assert_eq!( - pipe.run(vec![&2.into(), &3.into()].into()), - Outputs(vec![String::from("5").into()]) - ); - } -} diff --git a/flake.lock b/flake.lock index 0d61b34..9719001 100644 --- a/flake.lock +++ b/flake.lock @@ -3,54 +3,12 @@ "cachix": { "inputs": { "devenv": "devenv_2", - "flake-compat": [ - "devenv", - "flake-compat" - ], - "git-hooks": [ - "devenv", - "pre-commit-hooks" - ], + "flake-compat": "flake-compat_2", "nixpkgs": [ "devenv", "nixpkgs" - ] - }, - "locked": { - "lastModified": 1726520618, - "narHash": "sha256-jOsaBmJ/EtX5t/vbylCdS7pWYcKGmWOKg4QKUzKr6dA=", - "owner": "cachix", - "repo": "cachix", - "rev": "695525f9086542dfb09fde0871dbf4174abbf634", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "cachix", - "type": "github" - } - }, - "cachix_2": { - "inputs": { - "devenv": "devenv_3", - "flake-compat": [ - "devenv", - "cachix", - "devenv", - "flake-compat" ], - "nixpkgs": [ - "devenv", - "cachix", - "devenv", - "nixpkgs" - ], - "pre-commit-hooks": [ - "devenv", - "cachix", - "devenv", - "pre-commit-hooks" - ] + "pre-commit-hooks": "pre-commit-hooks" }, "locked": { "lastModified": 1712055811, @@ -69,17 +27,17 @@ "devenv": { "inputs": { "cachix": "cachix", - "flake-compat": "flake-compat_2", - "nix": "nix_3", - "nixpkgs": "nixpkgs_3", + "flake-compat": "flake-compat_4", + "nix": "nix_2", + "nixpkgs": "nixpkgs_2", "pre-commit-hooks": "pre-commit-hooks_2" }, "locked": { - "lastModified": 1729445229, - "narHash": "sha256-3vhSEs2ufSvv2Oct8G9CWEPFI57c4NAZ2wR2accHELM=", + "lastModified": 1712925466, + "narHash": "sha256-MJ6VxGNu/ftbn8SErJjBz80FUNXkZfcObHg/JP7wwAc=", "owner": "cachix", "repo": "devenv", - "rev": "006016cf4191c34c17cfdb6669e0690e24302ac0", + "rev": "1af93652caf48bfeef6ba7d1cf59fc66e506e5c2", "type": "github" }, "original": { @@ -90,53 +48,15 @@ }, "devenv_2": { "inputs": { - "cachix": "cachix_2", "flake-compat": [ "devenv", "cachix", "flake-compat" ], - "nix": "nix_2", - "nixpkgs": [ - "devenv", - "cachix", - "nixpkgs" - ], - "pre-commit-hooks": [ - "devenv", - "cachix", - "git-hooks" - ] - }, - "locked": { - "lastModified": 1723156315, - "narHash": "sha256-0JrfahRMJ37Rf1i0iOOn+8Z4CLvbcGNwa2ChOAVrp/8=", - "owner": "cachix", - "repo": "devenv", - "rev": "ff5eb4f2accbcda963af67f1a1159e3f6c7f5f91", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "devenv", - "type": "github" - } - }, - "devenv_3": { - "inputs": { - "flake-compat": [ - "devenv", - "cachix", - "devenv", - "cachix", - "flake-compat" - ], "nix": "nix", "nixpkgs": "nixpkgs", "poetry2nix": "poetry2nix", "pre-commit-hooks": [ - "devenv", - "cachix", "devenv", "cachix", "pre-commit-hooks" @@ -159,15 +79,15 @@ }, "fenix": { "inputs": { - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1729492502, - "narHash": "sha256-d6L4bBlUWr4sHC+eRXo+4acFPEFXKmqHpM/BfQ5gQQw=", + "lastModified": 1712903033, + "narHash": "sha256-KcvsEm0h1mIwBHFAzWFBjGihnbf2fxpAaXOdVbUfAI4=", "owner": "nix-community", "repo": "fenix", - "rev": "4002a1ec3486b855f341d2b864ba06b61e73af28", + "rev": "c739f83545e625227f4d0af7fe2a71e69931fa4c", "type": "github" }, "original": { @@ -208,25 +128,51 @@ "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "devenv", - "nix", - "nixpkgs" - ] - }, + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, @@ -249,12 +195,33 @@ } }, "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -264,6 +231,29 @@ } }, "gitignore": { + "inputs": { + "nixpkgs": [ + "devenv", + "cachix", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { "inputs": { "nixpkgs": [ "devenv", @@ -285,28 +275,10 @@ "type": "github" } }, - "libgit2": { - "flake": false, - "locked": { - "lastModified": 1697646580, - "narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=", - "owner": "libgit2", - "repo": "libgit2", - "rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5", - "type": "github" - }, - "original": { - "owner": "libgit2", - "repo": "libgit2", - "type": "github" - } - }, "nix": { "inputs": { "flake-compat": "flake-compat", "nixpkgs": [ - "devenv", - "cachix", "devenv", "cachix", "devenv", @@ -315,11 +287,11 @@ "nixpkgs-regression": "nixpkgs-regression" }, "locked": { - "lastModified": 1712911606, - "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", + "lastModified": 1708577783, + "narHash": "sha256-92xq7eXlxIT5zFNccLpjiP7sdQqQI30Gyui2p/PfKZM=", "owner": "domenkozar", "repo": "nix", - "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", + "rev": "ecd0af0c1f56de32cbad14daa1d82a132bf298f8", "type": "github" }, "original": { @@ -332,8 +304,6 @@ "nix-github-actions": { "inputs": { "nixpkgs": [ - "devenv", - "cachix", "devenv", "cachix", "devenv", @@ -357,15 +327,8 @@ }, "nix_2": { "inputs": { - "flake-compat": [ - "devenv", - "cachix", - "devenv", - "flake-compat" - ], + "flake-compat": "flake-compat_5", "nixpkgs": [ - "devenv", - "cachix", "devenv", "nixpkgs" ], @@ -386,34 +349,6 @@ "type": "github" } }, - "nix_3": { - "inputs": { - "flake-compat": [ - "devenv", - "flake-compat" - ], - "flake-parts": "flake-parts", - "libgit2": "libgit2", - "nixpkgs": "nixpkgs_2", - "nixpkgs-23-11": "nixpkgs-23-11", - "nixpkgs-regression": "nixpkgs-regression_3", - "pre-commit-hooks": "pre-commit-hooks" - }, - "locked": { - "lastModified": 1727438425, - "narHash": "sha256-X8ES7I1cfNhR9oKp06F6ir4Np70WGZU5sfCOuNBEwMg=", - "owner": "domenkozar", - "repo": "nix", - "rev": "f6c5ae4c1b2e411e6b1e6a8181cc84363d6a7546", - "type": "github" - }, - "original": { - "owner": "domenkozar", - "ref": "devenv-2.24", - "repo": "nix", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1692808169, @@ -430,22 +365,6 @@ "type": "github" } }, - "nixpkgs-23-11": { - "locked": { - "lastModified": 1717159533, - "narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", - "type": "github" - } - }, "nixpkgs-regression": { "locked": { "lastModified": 1643052045, @@ -478,61 +397,45 @@ "type": "github" } }, - "nixpkgs-regression_3": { + "nixpkgs-stable": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1704874635, + "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-23.11", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-stable": { + "nixpkgs-stable_2": { "locked": { - "lastModified": 1720386169, - "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-24.05", + "ref": "nixos-23.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_2": { "locked": { - "lastModified": 1717432640, - "narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "88269ab3044128b7c2f4c7d68448b2fb50456870", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1716977621, - "narHash": "sha256-Q1UQzYcMJH4RscmpTkjlgqQDX5yi1tZL0O345Ri6vXQ=", + "lastModified": 1710796454, + "narHash": "sha256-lQlICw60RhH8sHTDD/tJiiJrlAfNn8FDI9c+7G2F0SE=", "owner": "cachix", "repo": "devenv-nixpkgs", - "rev": "4267e705586473d3e5c8d50299e71503f16a6fb6", + "rev": "06fb0f1c643aee3ae6838dda3b37ef0abc3c763b", "type": "github" }, "original": { @@ -542,13 +445,13 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { - "lastModified": 1729256560, - "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=", + "lastModified": 1712791164, + "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0", + "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5", "type": "github" }, "original": { @@ -558,13 +461,13 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { - "lastModified": 1729256560, - "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=", + "lastModified": 1712791164, + "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0", + "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5", "type": "github" }, "original": { @@ -579,8 +482,6 @@ "flake-utils": "flake-utils", "nix-github-actions": "nix-github-actions", "nixpkgs": [ - "devenv", - "cachix", "devenv", "cachix", "devenv", @@ -603,25 +504,43 @@ }, "pre-commit-hooks": { "inputs": { - "flake-compat": [ - "devenv", - "nix" - ], + "flake-compat": "flake-compat_3", "flake-utils": "flake-utils_2", - "gitignore": [ - "devenv", - "nix" - ], + "gitignore": "gitignore", "nixpkgs": [ "devenv", - "nix", + "cachix", "nixpkgs" ], - "nixpkgs-stable": [ + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks_2": { + "inputs": { + "flake-compat": [ + "devenv", + "flake-compat" + ], + "flake-utils": "flake-utils_3", + "gitignore": "gitignore_2", + "nixpkgs": [ "devenv", - "nix", "nixpkgs" - ] + ], + "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { "lastModified": 1712897695, @@ -637,49 +556,22 @@ "type": "github" } }, - "pre-commit-hooks_2": { - "inputs": { - "flake-compat": [ - "devenv", - "flake-compat" - ], - "gitignore": "gitignore", - "nixpkgs": [ - "devenv", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1726745158, - "narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, "root": { "inputs": { "devenv": "devenv", "fenix": "fenix", - "nixpkgs": "nixpkgs_5", - "systems": "systems_2" + "nixpkgs": "nixpkgs_4", + "systems": "systems_4" } }, "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1729454508, - "narHash": "sha256-1W5B/CnLgdC03iIFG0wtawO1+dGDWDpc84PeOHo2ecU=", + "lastModified": 1712818880, + "narHash": "sha256-VDxsvgj/bNypHq48tQWtc3VRbWvzlFjzKf9ZZIVO10Y=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "9323b5385863739d1c113f02e4cf3f2777c09977", + "rev": "657b33b0cb9bd49085202e91ad5b4676532c9140", "type": "github" }, "original": { @@ -718,6 +610,36 @@ "repo": "default", "type": "github" } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root",