diff --git a/.gitignore b/.gitignore index 461e7d1..c8f7745 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -**/target/* +**/target **/*.rs.bk diff --git a/Cargo.lock b/Cargo.lock index 5534b4a..5d09f1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,13 +4,31 @@ version = 3 [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] +[[package]] +name = "aho-corasick" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anes" version = "0.1.6" @@ -25,52 +43,35 @@ checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" [[package]] name = "askama" -version = "0.11.2" -source = "git+https://github.com/djc/askama?branch=main#ecf671945a1d3bdb5426a38f7ee1477e51a55bca" +version = "0.12.0" +source = "git+https://github.com/djc/askama?branch=main#4c98685b81509a59bf7719321eb2136d7dccca38" dependencies = [ "askama_derive", "askama_escape", - "askama_shared", + "humansize", + "num-traits", + "percent-encoding", ] [[package]] name = "askama_derive" -version = "0.12.0" -source = "git+https://github.com/djc/askama?branch=main#ecf671945a1d3bdb5426a38f7ee1477e51a55bca" +version = "0.12.1" +source = "git+https://github.com/djc/askama?branch=main#4c98685b81509a59bf7719321eb2136d7dccca38" dependencies = [ + "basic-toml", "mime", "mime_guess", "nom", "proc-macro2", "quote", "serde", - "syn", - "toml", + "syn 2.0.15", ] [[package]] name = "askama_escape" version = "0.10.3" -source = "git+https://github.com/djc/askama?branch=main#ecf671945a1d3bdb5426a38f7ee1477e51a55bca" - -[[package]] -name = "askama_shared" -version = "0.13.0" -source = "git+https://github.com/djc/askama?branch=main#ecf671945a1d3bdb5426a38f7ee1477e51a55bca" -dependencies = [ - "askama_escape", - "humansize", - "mime", - "mime_guess", - "nom", - "num-traits", - "percent-encoding", - "proc-macro2", - "quote", - "serde", - "syn", - "toml", -] +source = "git+https://github.com/djc/askama?branch=main#4c98685b81509a59bf7719321eb2136d7dccca38" [[package]] name = "atty" @@ -78,7 +79,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -91,9 +92,18 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.13.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + +[[package]] +name = "basic-toml" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0de75129aa8d0cceaf750b89013f0e08804d6ec61416da787b35ad0d7cddf1" +dependencies = [ + "serde", +] [[package]] name = "bitflags" @@ -103,45 +113,28 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "block-buffer" -version = "0.7.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "block-padding", - "byte-tools", - "byteorder", "generic-array", ] -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - [[package]] name = "bstr" -version = "0.2.17" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" dependencies = [ "memchr", + "serde", ] [[package]] name = "bumpalo" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" - -[[package]] -name = "byte-tools" -version = "0.3.1" +version = "3.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" [[package]] name = "bytecount" @@ -149,18 +142,18 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - [[package]] name = "cast" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + [[package]] name = "cfg-if" version = "1.0.0" @@ -169,11 +162,11 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" dependencies = [ - "libc", + "iana-time-zone", "num-integer", "num-traits", "winapi", @@ -249,6 +242,31 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +dependencies = [ + "libc", +] + [[package]] name = "criterion" version = "0.4.0" @@ -287,9 +305,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.4" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -297,9 +315,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -308,26 +326,78 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.8" +version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "lazy_static", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.8" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ "cfg-if", - "lazy_static", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cxx" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.15", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", ] [[package]] @@ -338,11 +408,12 @@ checksum = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690" [[package]] name = "digest" -version = "0.8.1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "generic-array", + "block-buffer", + "crypto-common", ] [[package]] @@ -353,26 +424,20 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] -name = "fake-simd" -version = "0.1.2" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "filetime" -version = "0.2.16" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0408e2626025178a6a7f7ffc05a25bc47103229f19c113755de7bf63816290c" +checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" dependencies = [ "cfg-if", "libc", "redox_syscall", - "winapi", + "windows-sys", ] [[package]] @@ -383,23 +448,24 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fomat-macros" -version = "0.3.1" -source = "git+https://github.com/krdln/fomat-macros#7e790d5cf205f05ed8c5ce2c81f4eb39de68b457" +version = "0.3.2" +source = "git+https://github.com/krdln/fomat-macros#76c2aadcf9f219434518d05f8606dfb6d1ee271c" [[package]] name = "generic-array" -version = "0.12.4" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", + "version_check", ] [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if", "libc", @@ -408,11 +474,11 @@ dependencies = [ [[package]] name = "globset" -version = "0.4.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd" +checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" dependencies = [ - "aho-corasick", + "aho-corasick 0.7.20", "bstr", "fnv", "log", @@ -438,8 +504,8 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "handlebars" -version = "4.3.1-alpha.0" -source = "git+https://github.com/sunng87/handlebars-rust#7e7b33a84be82890112073c5f7c919fe5482df62" +version = "5.0.0-beta.1" +source = "git+https://github.com/sunng87/handlebars-rust#27a9a9a1ee015056a3f803b28f4b1d1e68f048de" dependencies = [ "log", "pest", @@ -464,11 +530,20 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + [[package]] name = "home" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654" +checksum = "747309b4b440c06d57b0b25f2aee03ee9b5e5397d288c60e21fc709bb98a7408" dependencies = [ "winapi", ] @@ -476,21 +551,47 @@ dependencies = [ [[package]] name = "horrorshow" version = "0.8.4" -source = "git+https://github.com/Stebalien/horrorshow-rs#7cd724e620a0584ae22475551b53c147ed1000e2" +source = "git+https://github.com/Stebalien/horrorshow-rs#368122e22d48f16a2173b131776b267a75d181aa" [[package]] name = "humansize" -version = "1.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" +dependencies = [ + "libm", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] [[package]] name = "ignore" -version = "0.4.18" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" +checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" dependencies = [ - "crossbeam-utils", "globset", "lazy_static", "log", @@ -504,9 +605,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown", @@ -514,24 +615,18 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] [[package]] name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "itoap" @@ -541,9 +636,9 @@ checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" [[package]] name = "js-sys" -version = "0.3.57" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -566,14 +661,29 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.126" +version = "0.2.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" + +[[package]] +name = "libm" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" + +[[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] [[package]] name = "liquid" -version = "0.26.0" -source = "git+https://github.com/cobalt-org/liquid-rust#30ad5c4e3f84f918c1be46215187bcbb5ebde37d" +version = "0.26.1" +source = "git+https://github.com/cobalt-org/liquid-rust#23dbef9df8d93600e5fa7b54a3a0648f8e0e567d" dependencies = [ "doc-comment", "liquid-core", @@ -584,8 +694,8 @@ dependencies = [ [[package]] name = "liquid-core" -version = "0.26.0" -source = "git+https://github.com/cobalt-org/liquid-rust#30ad5c4e3f84f918c1be46215187bcbb5ebde37d" +version = "0.26.1" +source = "git+https://github.com/cobalt-org/liquid-rust#23dbef9df8d93600e5fa7b54a3a0648f8e0e567d" dependencies = [ "anymap2", "itertools", @@ -601,18 +711,18 @@ dependencies = [ [[package]] name = "liquid-derive" -version = "0.26.0" -source = "git+https://github.com/cobalt-org/liquid-rust#30ad5c4e3f84f918c1be46215187bcbb5ebde37d" +version = "0.26.1" +source = "git+https://github.com/cobalt-org/liquid-rust#23dbef9df8d93600e5fa7b54a3a0648f8e0e567d" dependencies = [ "proc-macro2", "proc-quote", - "syn", + "syn 1.0.109", ] [[package]] name = "liquid-lib" -version = "0.26.0" -source = "git+https://github.com/cobalt-org/liquid-rust#30ad5c4e3f84f918c1be46215187bcbb5ebde37d" +version = "0.26.1" +source = "git+https://github.com/cobalt-org/liquid-rust#23dbef9df8d93600e5fa7b54a3a0648f8e0e567d" dependencies = [ "itertools", "liquid-core", @@ -632,49 +742,42 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - [[package]] name = "markup" -version = "0.13.0" -source = "git+https://github.com/utkarshkukreti/markup.rs#4f4a31c9301885fac76b8694abb6aa215e046dea" +version = "0.13.1" +source = "git+https://github.com/utkarshkukreti/markup.rs#482700ccedd4573d1a8e4517b489023e5883f808" dependencies = [ - "itoa 1.0.2", "markup-proc-macro", ] [[package]] name = "markup-proc-macro" -version = "0.13.0" -source = "git+https://github.com/utkarshkukreti/markup.rs#4f4a31c9301885fac76b8694abb6aa215e046dea" +version = "0.13.1" +source = "git+https://github.com/utkarshkukreti/markup.rs#482700ccedd4573d1a8e4517b489023e5883f808" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "maud" -version = "0.23.0" -source = "git+https://github.com/lambda-fairy/maud#5aa543a6c262af31b1130bd0217855816c514964" +version = "0.25.0" +source = "git+https://github.com/lambda-fairy/maud#ca7b93c7904b2881b6078de39536eb0f0fb9fedd" dependencies = [ - "itoa 0.4.8", + "itoa", "maud_macros", ] [[package]] name = "maud_macros" -version = "0.23.0" -source = "git+https://github.com/lambda-fairy/maud#5aa543a6c262af31b1130bd0217855816c514964" +version = "0.25.0" +source = "git+https://github.com/lambda-fairy/maud#ca7b93c7904b2881b6078de39536eb0f0fb9fedd" dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -691,18 +794,18 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.6.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ "autocfg", ] [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" @@ -722,9 +825,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", @@ -751,28 +854,19 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_threads" -version = "0.1.6" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ + "hermit-abi 0.2.6", "libc", ] [[package]] name = "once_cell" -version = "1.12.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "oorandom" @@ -780,17 +874,11 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" [[package]] name = "parse-zoneinfo" @@ -803,24 +891,25 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.1.3" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +checksum = "7b1403e8401ad5dedea73c626b99758535b342502f8d1e361f4a2dd952749122" dependencies = [ + "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.1.0" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" +checksum = "be99c4c1d2fc2769b1d00239431d711d08f6efedcecb8b6e30707160aee99c15" dependencies = [ "pest", "pest_generator", @@ -828,26 +917,26 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.1.3" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" +checksum = "e56094789873daa36164de2e822b3888c6ae4b4f9da555a1103587658c805b1e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "pest_meta" -version = "2.1.3" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" +checksum = "6733073c7cff3d8459fda0e42f13a047870242aed8b509fe98000928975f359e" dependencies = [ - "maplit", + "once_cell", "pest", - "sha-1", + "sha2", ] [[package]] @@ -891,9 +980,9 @@ dependencies = [ [[package]] name = "plotters" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" dependencies = [ "num-traits", "plotters-backend", @@ -904,24 +993,24 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" [[package]] name = "plotters-svg" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" dependencies = [ "plotters-backend", ] [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-error" @@ -932,7 +1021,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "version_check", ] @@ -949,17 +1038,17 @@ dependencies = [ [[package]] name = "proc-macro-hack" -version = "0.5.19" +version = "0.5.20+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -972,7 +1061,7 @@ dependencies = [ "proc-macro2", "proc-quote-impl", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -988,9 +1077,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.18" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -1018,30 +1107,28 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] name = "rayon" -version = "1.5.3" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ - "autocfg", - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.9.3" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1051,34 +1138,34 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.5.6" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" +checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" dependencies = [ - "aho-corasick", + "aho-corasick 1.0.1", "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.26" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" +checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" [[package]] name = "ructe" -version = "0.14.1-PRE" -source = "git+https://github.com/kaj/ructe#b551c8d2fde31ea7e7dbb8094081e86e68de1e01" +version = "0.16.2-PRE" +source = "git+https://github.com/kaj/ructe#4065b75e69926a8daaaa4510bb971077ea56b4c1" dependencies = [ "base64", "bytecount", @@ -1087,16 +1174,36 @@ dependencies = [ "nom", ] +[[package]] +name = "rusty-html" +version = "0.1.2" +source = "git+https://github.com/michaelvanstraten/rusty-html#1a868bcd7ae57f83b6a94d62d6dc3c0c9c7c5439" +dependencies = [ + "rusty-html-macros", +] + +[[package]] +name = "rusty-html-macros" +version = "0.1.0" +source = "git+https://github.com/michaelvanstraten/rusty-html#1a868bcd7ae57f83b6a94d62d6dc3c0c9c7c5439" +dependencies = [ + "pest", + "pest_derive", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "sailfish" -version = "0.4.0" -source = "git+https://github.com/Kogia-sima/sailfish#afcca6dd0c4a05497b76f46370dc86334fe8e064" +version = "0.6.1" +source = "git+https://github.com/Kogia-sima/sailfish#9b0cd6263c843948fe9e528561b18c1b975bb678" dependencies = [ "itoap", "ryu", @@ -1106,8 +1213,8 @@ dependencies = [ [[package]] name = "sailfish-compiler" -version = "0.4.0" -source = "git+https://github.com/Kogia-sima/sailfish#afcca6dd0c4a05497b76f46370dc86334fe8e064" +version = "0.6.1" +source = "git+https://github.com/Kogia-sima/sailfish#9b0cd6263c843948fe9e528561b18c1b975bb678" dependencies = [ "filetime", "home", @@ -1115,14 +1222,14 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn", + "syn 2.0.15", "toml", ] [[package]] name = "sailfish-macros" -version = "0.4.0" -source = "git+https://github.com/Kogia-sima/sailfish#afcca6dd0c4a05497b76f46370dc86334fe8e064" +version = "0.6.1" +source = "git+https://github.com/Kogia-sima/sailfish#9b0cd6263c843948fe9e528561b18c1b975bb678" dependencies = [ "proc-macro2", "sailfish-compiler", @@ -1143,60 +1250,74 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scratch" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" + [[package]] name = "serde" -version = "1.0.147" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ - "itoa 1.0.2", + "itoa", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +dependencies = [ + "serde", +] + [[package]] name = "serde_yaml" -version = "0.9.17" +version = "0.9.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb06d4b6cdaef0e0c51fa881acb721bed3c924cfaa71d9c94a3b771dfdf6567" +checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c" dependencies = [ "indexmap", - "itoa 1.0.2", + "itoa", "ryu", "serde", "unsafe-libyaml", ] [[package]] -name = "sha-1" -version = "0.8.2" +name = "sha2" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ - "block-buffer", + "cfg-if", + "cpufeatures", "digest", - "fake-simd", - "opaque-debug", ] [[package]] @@ -1222,13 +1343,24 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" -version = "1.0.94" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07e33e919ebcd69113d5be0e4d70c5707004ff45188910106854f38b960df4a" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -1244,6 +1376,7 @@ dependencies = [ "markup", "maud", "ructe", + "rusty-html", "sailfish", "sailfish-macros", "serde", @@ -1255,8 +1388,8 @@ dependencies = [ [[package]] name = "tera" -version = "1.15.0" -source = "git+https://github.com/Keats/tera#48bcb01b6259d555dbcd5d3d799cd49d8c26f936" +version = "1.18.1" +source = "git+https://github.com/Keats/tera#46ae8583144b0438ed4fca84af9a3d1529058900" dependencies = [ "chrono", "chrono-tz", @@ -1271,9 +1404,19 @@ dependencies = [ "serde", "serde_json", "slug", + "thread_local", "unic-segment", ] +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + [[package]] name = "textwrap" version = "0.16.0" @@ -1282,22 +1425,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] @@ -1311,21 +1454,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.9" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" dependencies = [ - "itoa 1.0.2", - "libc", - "num_threads", + "itoa", + "serde", + "time-core", "time-macros", ] +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + [[package]] name = "time-macros" -version = "0.2.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +dependencies = [ + "time-core", +] [[package]] name = "tinytemplate" @@ -1339,24 +1491,49 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.9" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" dependencies = [ "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", ] [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "ucd-trie" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" [[package]] name = "uncased" @@ -1426,23 +1603,29 @@ dependencies = [ "version_check", ] +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] -name = "unicode-xid" -version = "0.2.3" +name = "unicode-width" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unsafe-libyaml" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7ed8ba44ca06be78ea1ad2c3682a43349126c8818054231ee6f4748012aed2" +checksum = "1865806a559042e51ab5414598446a5871b561d21b6764f2eabb0dd481d880a6" [[package]] name = "version_check" @@ -1452,26 +1635,25 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.80" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1479,24 +1661,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.80" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.80" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1504,28 +1686,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.80" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.80" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "web-sys" -version = "0.3.57" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" dependencies = [ "js-sys", "wasm-bindgen", @@ -1561,3 +1743,87 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +dependencies = [ + "memchr", +] diff --git a/Cargo.toml b/Cargo.toml index 904191a..5b67d62 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,7 @@ serde_yaml = "0.9" tera = { git = "https://github.com/Keats/tera" } fomat-macros = { git = "https://github.com/krdln/fomat-macros" } maud = { git = "https://github.com/lambda-fairy/maud" } +rusty-html = { git = "https://github.com/michaelvanstraten/rusty-html" } [build-dependencies] ructe = { git = "https://github.com/kaj/ructe" } diff --git a/README.md b/README.md index 1e6e840..0ccb581 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,18 @@ This repo tries to assess Rust template engine performance. Following the download ratings from [crates.io][crates], these nine projects are assessed: -- [write!][write]: the std library `write!` macro -- [Handlebars][handlebars]: Handlebars templating implemented in Rust -- [Tera][tera]: template engine based on Jinja2/Django templates -- [Liquid][liquid]: the liquid templating language for Rust -- [Askama][askama]: type-safe, compiled Jinja-like templates for Rust -- [horrorshow][horrorshow]: a templating library written in rust macros -- [ructe][ructe]: Rust Compiled Templates, efficient type-safe web page templates -- [fomat][fomat]: alternative syntax for print/write/format-like macros with a small templating language -- [markup][markup]: A blazing fast, type-safe template engine for Rust. -- [maud][maud]: A Compile-time HTML template engine for Rust. -- [sailfish][sailfish]: Simple, small, and extremely fast template engine for Rust +- [write!][write]: the std library `write!` macro +- [Handlebars][handlebars]: Handlebars templating implemented in Rust +- [Tera][tera]: template engine based on Jinja2/Django templates +- [Liquid][liquid]: the liquid templating language for Rust +- [Askama][askama]: type-safe, compiled Jinja-like templates for Rust +- [horrorshow][horrorshow]: a templating library written in rust macros +- [ructe][ructe]: Rust Compiled Templates, efficient type-safe web page templates +- [fomat][fomat]: alternative syntax for print/write/format-like macros with a small templating language +- [markup][markup]: A blazing fast, type-safe template engine for Rust. +- [maud][maud]: A Compile-time HTML template engine for Rust. +- [sailfish][sailfish]: Simple, small, and extremely fast template engine for Rust +- [rusty-html][rusty-html]: Rusty HTML is a html-templating framework [crates]: https://crates.io/categories/template-engine [write]: https://doc.rust-lang.org/std/macro.write.html @@ -27,15 +28,16 @@ download ratings from [crates.io][crates], these nine projects are assessed: [markup]: https://github.com/utkarshkukreti/markup.rs [sailfish]: https://github.com/Kogia-sima/sailfish [maud]: https://github.com/lambda-fairy/maud +[rusty-html]: https://github.com/michaelvanstraten/rusty-html ## Results -These results are from 2023-3-11 (rustc 1.68.0), running on an MacBook Pro 16 (2021) M1 Pro CPU. Your mileage may vary. +These results are from 2023-4-25 (rustc 1.70.0), running on an MacBook Pro 16 (2021) M1 Max CPU. Your mileage may vary. As a [violin plot] generated by [Criterion]: -![Big table violin plot](big-table.svg) -![Teams violin plot](teams.svg) +![Big table violin plot](./results/big-table.svg) +![Teams violin plot](./results/teams.svg) [violin plot]: https://en.wikipedia.org/wiki/Violin_plot [Criterion]: https://japaric.github.io/criterion.rs/ @@ -43,29 +45,31 @@ As a [violin plot] generated by [Criterion]: Numbers, as output by Criterion: ``` -Big table/Askama time: [330.10 µs 330.50 µs 330.95 µs] -Big table/fomat time: [226.79 µs 227.74 µs 228.66 µs] -Big table/Handlebars time: [3.6592 ms 3.6656 ms 3.6717 ms] -Big table/Horrorshow time: [166.35 µs 167.28 µs 168.16 µs] -Big table/Liquid time: [4.3793 ms 4.3828 ms 4.3864 ms] -Big table/Markup time: [54.963 µs 55.928 µs 56.784 µs] -Big table/Maud time: [71.931 µs 72.305 µs 72.697 µs] -Big table/Ructe time: [205.25 µs 205.70 µs 206.13 µs] -Big table/Sailfish time: [17.695 µs 17.711 µs 17.729 µs] -Big table/Tera time: [856.34 µs 857.40 µs 858.65 µs] -Big table/write time: [249.80 µs 250.29 µs 250.76 µs] +Big table/Askama time: [270.72 µs 270.85 µs 270.99 µs] +Big table/fomat time: [187.50 µs 187.87 µs 188.26 µs] +Big table/Handlebars time: [3.1371 ms 3.1435 ms 3.1497 ms] +Big table/Horrorshow time: [143.90 µs 144.46 µs 145.00 µs] +Big table/Liquid time: [4.3673 ms 4.3724 ms 4.3776 ms] +Big table/Markup time: [114.28 µs 114.55 µs 114.79 µs] +Big table/Maud time: [62.309 µs 62.775 µs 63.403 µs] +Big table/Ructe time: [173.42 µs 173.78 µs 174.13 µs] +Big table/Sailfish time: [16.677 µs 16.694 µs 16.713 µs] +Big table/Tera time: [713.96 µs 714.37 µs 714.81 µs] +Big table/write time: [211.24 µs 211.47 µs 211.72 µs] +Big table/rusty-html time: [364.98 µs 365.31 µs 365.64 µs] -Teams/Askama time: [527.14 ns 527.87 ns 528.64 ns] -Teams/fomat time: [345.85 ns 346.65 ns 347.67 ns] -Teams/Handlebars time: [3.4753 µs 3.4808 µs 3.4860 µs] -Teams/Horrorshow time: [304.40 ns 305.30 ns 306.29 ns] -Teams/Liquid time: [4.3580 µs 4.3630 µs 4.3678 µs] -Teams/Markup time: [133.69 ns 134.39 ns 135.14 ns] -Teams/Maud time: [124.09 ns 124.53 ns 125.07 ns] -Teams/Ructe time: [461.57 ns 462.53 ns 463.52 ns] -Teams/Sailfish time: [89.921 ns 90.015 ns 90.100 ns] -Teams/Tera time: [3.0020 µs 3.0062 µs 3.0105 µs] -Teams/write time: [478.97 ns 480.01 ns 481.01 ns] +Teams/Askama time: [354.37 ns 354.84 ns 355.32 ns] +Teams/fomat time: [290.25 ns 290.59 ns 290.93 ns] +Teams/Handlebars time: [3.1749 µs 3.1787 µs 3.1825 µs] +Teams/Horrorshow time: [242.59 ns 243.08 ns 243.61 ns] +Teams/Liquid time: [4.5712 µs 4.5752 µs 4.5795 µs] +Teams/Markup time: [152.88 ns 153.44 ns 154.03 ns] +Teams/Maud time: [104.42 ns 105.00 ns 105.62 ns] +Teams/Ructe time: [394.30 ns 397.86 ns 401.71 ns] +Teams/Sailfish time: [77.824 ns 78.297 ns 78.841 ns] +Teams/Tera time: [2.1584 µs 2.1604 µs 2.1623 µs] +Teams/write time: [411.73 ns 413.63 ns 415.92 ns] +Teams/rusty-html time: [365.90 ns 366.35 ns 366.80 ns] ``` ## Running the benchmarks diff --git a/benches/all.rs b/benches/all.rs index 7d963a6..ad449b6 100644 --- a/benches/all.rs +++ b/benches/all.rs @@ -1,3 +1,9 @@ +use template_benchmarks_rs::*; + +use criterion::criterion_group; +use criterion::criterion_main; +use criterion::Criterion; + fn big_table(c: &mut Criterion) { let input = 100; @@ -14,6 +20,7 @@ fn big_table(c: &mut Criterion) { group.bench_with_input("Sailfish", &input, sailfish::big_table); group.bench_with_input("Tera", &input, tera::big_table); group.bench_with_input("write", &input, std_write::big_table); + group.bench_with_input("rusty-html", &input, rusty_html::big_table); group.finish(); } @@ -34,6 +41,10 @@ fn teams(c: &mut Criterion) { group.bench_with_input("Sailfish", &input, sailfish::teams); group.bench_with_input("Tera", &input, tera::teams); group.bench_with_input("write", &input, std_write::teams); + group.bench_with_input("rusty-html", &input, rusty_html::teams); group.finish(); } + +criterion_group!(benches, big_table, teams); +criterion_main!(benches); diff --git a/big-table.svg b/big-table.svg deleted file mode 100644 index 6540eaa..0000000 --- a/big-table.svg +++ /dev/null @@ -1,1013 +0,0 @@ - - - diff --git a/make-results.sh b/make-results.sh new file mode 100755 index 0000000..20ff689 --- /dev/null +++ b/make-results.sh @@ -0,0 +1,3 @@ +cargo bench | ggrep -P 'time:[[:space:]]*\[[^\]]*\]' > ./results/results.txt +cp ./target/criterion/Teams/report/violin.svg ./results/teams.svg +cp ./target/criterion/Big\ table/report/violin.svg ./results/big-table.svg diff --git a/results/big-table.svg b/results/big-table.svg new file mode 100644 index 0000000..bedf379 --- /dev/null +++ b/results/big-table.svg @@ -0,0 +1,1088 @@ + + + diff --git a/results/results.txt b/results/results.txt new file mode 100644 index 0000000..fefdcd8 --- /dev/null +++ b/results/results.txt @@ -0,0 +1,24 @@ +Big table/Askama time: [270.72 µs 270.85 µs 270.99 µs] +Big table/fomat time: [187.50 µs 187.87 µs 188.26 µs] +Big table/Handlebars time: [3.1371 ms 3.1435 ms 3.1497 ms] +Big table/Horrorshow time: [143.90 µs 144.46 µs 145.00 µs] +Big table/Liquid time: [4.3673 ms 4.3724 ms 4.3776 ms] +Big table/Markup time: [114.28 µs 114.55 µs 114.79 µs] +Big table/Maud time: [62.309 µs 62.775 µs 63.403 µs] +Big table/Ructe time: [173.42 µs 173.78 µs 174.13 µs] +Big table/Sailfish time: [16.677 µs 16.694 µs 16.713 µs] +Big table/Tera time: [713.96 µs 714.37 µs 714.81 µs] +Big table/write time: [211.24 µs 211.47 µs 211.72 µs] +Big table/rusty-html time: [364.98 µs 365.31 µs 365.64 µs] +Teams/Askama time: [354.37 ns 354.84 ns 355.32 ns] +Teams/fomat time: [290.25 ns 290.59 ns 290.93 ns] +Teams/Handlebars time: [3.1749 µs 3.1787 µs 3.1825 µs] +Teams/Horrorshow time: [242.59 ns 243.08 ns 243.61 ns] +Teams/Liquid time: [4.5712 µs 4.5752 µs 4.5795 µs] +Teams/Markup time: [152.88 ns 153.44 ns 154.03 ns] +Teams/Maud time: [104.42 ns 105.00 ns 105.62 ns] +Teams/Ructe time: [394.30 ns 397.86 ns 401.71 ns] +Teams/Sailfish time: [77.824 ns 78.297 ns 78.841 ns] +Teams/Tera time: [2.1584 µs 2.1604 µs 2.1623 µs] +Teams/write time: [411.73 ns 413.63 ns 415.92 ns] +Teams/rusty-html time: [365.90 ns 366.35 ns 366.80 ns] diff --git a/results/teams.svg b/results/teams.svg new file mode 100644 index 0000000..2358f36 --- /dev/null +++ b/results/teams.svg @@ -0,0 +1,1100 @@ + + + diff --git a/src/lib.rs b/src/lib.rs index fdab941..ddf8330 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,5 +9,6 @@ pub mod sailfish; pub mod std_write; pub mod tera; pub mod maud_bench; +pub mod rusty_html; include!(concat!(env!("OUT_DIR"), "/templates.rs")); diff --git a/src/ructe.rs b/src/ructe.rs index 18ea207..ef20266 100644 --- a/src/ructe.rs +++ b/src/ructe.rs @@ -12,7 +12,7 @@ pub fn big_table(b: &mut criterion::Bencher<'_>, size: &usize) { } b.iter(|| { let mut buf = Vec::new(); - templates::big_table(&mut buf, &table).unwrap(); + templates::big_table_html(&mut buf, &table).unwrap(); }); } @@ -38,7 +38,7 @@ pub fn teams(b: &mut criterion::Bencher<'_>, _: &usize) { ]; b.iter(|| { let mut buf = Vec::new(); - templates::teams(&mut buf, year, &teams).unwrap(); + templates::teams_html(&mut buf, year, &teams).unwrap(); }); } diff --git a/src/rusty_html.rs b/src/rusty_html.rs new file mode 100644 index 0000000..03ccaef --- /dev/null +++ b/src/rusty_html.rs @@ -0,0 +1,75 @@ +use criterion::Bencher; +use rusty_html::html; + +pub fn big_table(b: &mut Bencher<'_>, size: &usize) { + let mut table = Vec::with_capacity(*size); + for _ in 0..*size { + let mut inner = Vec::with_capacity(*size); + for i in 0..*size { + inner.push(i); + } + table.push(inner); + } + + b.iter(|| { + html!( +
{col} | + } + }