diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /third_party/rust/profiling | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/profiling')
-rw-r--r-- | third_party/rust/profiling/.cargo-checksum.json | 1 | ||||
-rw-r--r-- | third_party/rust/profiling/CHANGELOG.md | 70 | ||||
-rw-r--r-- | third_party/rust/profiling/Cargo.lock | 2107 | ||||
-rw-r--r-- | third_party/rust/profiling/Cargo.toml | 129 | ||||
-rw-r--r-- | third_party/rust/profiling/LICENSE-APACHE | 201 | ||||
-rw-r--r-- | third_party/rust/profiling/LICENSE-MIT | 21 | ||||
-rw-r--r-- | third_party/rust/profiling/README.md | 224 | ||||
-rw-r--r-- | third_party/rust/profiling/deny.toml | 211 | ||||
-rw-r--r-- | third_party/rust/profiling/rustfmt.toml | 4 | ||||
-rw-r--r-- | third_party/rust/profiling/src/empty_impl.rs | 34 | ||||
-rw-r--r-- | third_party/rust/profiling/src/lib.rs | 78 | ||||
-rw-r--r-- | third_party/rust/profiling/src/optick_impl.rs | 35 | ||||
-rw-r--r-- | third_party/rust/profiling/src/puffin_impl.rs | 26 | ||||
-rw-r--r-- | third_party/rust/profiling/src/superluminal_impl.rs | 65 | ||||
-rw-r--r-- | third_party/rust/profiling/src/tracing_impl.rs | 22 | ||||
-rw-r--r-- | third_party/rust/profiling/src/tracy_impl.rs | 68 | ||||
-rw-r--r-- | third_party/rust/profiling/src/type_check_impl.rs | 25 |
17 files changed, 3321 insertions, 0 deletions
diff --git a/third_party/rust/profiling/.cargo-checksum.json b/third_party/rust/profiling/.cargo-checksum.json new file mode 100644 index 0000000000..8a5e0120fa --- /dev/null +++ b/third_party/rust/profiling/.cargo-checksum.json @@ -0,0 +1 @@ +{"files":{"CHANGELOG.md":"bd6b1c33aab70e9c0b390dff51d3c04db366472f5a3e907b0032bcdd5b82dc6a","Cargo.lock":"2117266a850a12e4c0219544203dd2359cdff44c73fc3b57d81f46d4e4f53175","Cargo.toml":"715a3a3ceb2a57c03e6f16f9597ac68e8e78f754f0d50295bab00a1dafc59e1c","LICENSE-APACHE":"10d30a673cd5e9349bdc02aeb48f14b3386d27d0da32df8f0a555d4aa16aa551","LICENSE-MIT":"c8167fdeeed46d3f244d3f85c5bf998ce889343691c32be2c61a8bc4b5c08333","README.md":"69072115dbf6226b692b61b59614859eec7da816d839ff15fb2e166350f747a7","deny.toml":"8cc04a7354c4ce56d54b0ba9beca33b8511ab7fba82184acd9baa04ba2af672b","rustfmt.toml":"df025a0d166890f7b73df8596d0135a441d20311c9251e39df90e552675cebf3","src/empty_impl.rs":"341753cbc92275dc45184c22d60b5192854f35d6c57fdcd68b4ba17a6df59a27","src/lib.rs":"33fa9f148a2f80410ca71fad0b6ab1587c698f318175dfb0015aca9075e75694","src/optick_impl.rs":"167d92d27ac5c0e29b022f93c64d1d3b0e08db5bf0282f8874df465ab2fbe350","src/puffin_impl.rs":"70423e2e348ea0539b253841ad0ce594dd814f60d02ca5f8413a492a8f5cf0ec","src/superluminal_impl.rs":"9bf236c5435147b090cdb1e706f0480639590c6ca1a08ce795c9bcb714a7f1f8","src/tracing_impl.rs":"92bdbd9fc760d258287df13f301f999f678f9ef742c599f7e71b668746743119","src/tracy_impl.rs":"7d5e0149e04a8bb3f2cc088390939612c8b85dc4033e52c999e442400e008e5e","src/type_check_impl.rs":"daf88bb080b6d68e38206667a3d725948a3c836a0c0577d09354bde1e4213920"},"package":"74605f360ce573babfe43964cbe520294dcb081afbf8c108fc6e23036b4da2df"}
\ No newline at end of file diff --git a/third_party/rust/profiling/CHANGELOG.md b/third_party/rust/profiling/CHANGELOG.md new file mode 100644 index 0000000000..f92e2349df --- /dev/null +++ b/third_party/rust/profiling/CHANGELOG.md @@ -0,0 +1,70 @@ +# Changelog + +## 1.0.7 +* Update tracy-client to 0.14.1 + +## 1.0.6 + * Update tracy-client to 0.13 + +## 1.0.5 + * Update puffin to 0.12.1 + +## 1.0.4 + * Update puffin to 0.10 + +## 1.0.3 + * Update puffin to 0.6 and puffin-imgui to 0.8 + +## 1.0.2 + * Fix tracing backend failing to compile when tracing crate is not a dependency in the downstream crate + +## 1.0.1 + * Rework feature flags so that downstream *libraries* no longer have to add feature flags per profiling backend. + * Add a backend that does type checking (for CI purposes) + +## 1.0.0 + * Republish 0.1.10 as 1.0.0 + +## 0.1.10 + * Build fix for when the default feature "procmacros" is disabled + +## 0.1.9 + * Bump tracy client version to 0.12 (tracy now uses the 0.7.6 protocol) + * Bump puffin to 0.4 + * Update the puffin demo to use rafx + * Aesthetic changes to the puffin example + +## 0.1.8 + * Bump tracy client version to 0.11 (tracy now uses the 0.7.5 protocol) + +## 0.1.7 + * Re-release due to root cargo.toml referencing 0.1.2 of procmacro crate instead of 0.1.3 + +## 0.1.6 + * Use tracy directly instead of going through tracy (use the profile-with-tracy feature). + * Going through tracing is still possible and demonstrated in the example (use the profile-with-tracing feature). + * Function instrumentation is now recorded to superluminal + +## 0.1.5 + * More info in readme, no functional change + +## 0.1.4 + * Fix the color passed to superluminal so that scopes are default-colored + +## 0.1.3 + * Re-export the profiler crates, simplifying changes needed in end-user's cargo.toml + +## 0.1.2 + * Remove unintended and unnecessary dependencies from the procmacro crate + * Republish the bindings crate mainly to fix readme typos and add a bit more info about the exposed APIs + +## 0.1.1 + * Add profiling::function procmacro + * Add profiling::register_thread!() + * Add profiling::finish_frame!() + * Add support for superluminal + * Fixed incorrect usage of span!() that affected tracy captures + * More examples, improved documentation + +## 0.1.0 + * Initial release
\ No newline at end of file diff --git a/third_party/rust/profiling/Cargo.lock b/third_party/rust/profiling/Cargo.lock new file mode 100644 index 0000000000..efa6220b86 --- /dev/null +++ b/third_party/rust/profiling/Cargo.lock @@ -0,0 +1,2107 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330223a1aecc308757b9926e9391c9b47f8ef2dbd8aea9df88312aea18c5e8d6" + +[[package]] +name = "addr2line" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr", +] + +[[package]] +name = "andrew" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c4afb09dd642feec8408e33f92f3ffc4052946f6b20f32fb99c1f58cd4fa7cf" +dependencies = [ + "bitflags", + "rusttype", + "walkdir", + "xdg", + "xml-rs", +] + +[[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 = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "ash" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06063a002a77d2734631db74e8f4ce7148b77fe522e6bca46f2ae7774fd48112" +dependencies = [ + "libloading 0.7.3", +] + +[[package]] +name = "ash-window" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d058436a3a8410c6e9b625c4e763ea6eaba97d771c303fc2c8e3595b666ffa3" +dependencies = [ + "ash", + "raw-window-handle 0.3.4", + "raw-window-metal", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "bumpalo" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "calloop" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b036167e76041694579972c28cf4877b4f92da222560ddb49008937b6a6727c" +dependencies = [ + "log", + "nix 0.18.0", +] + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chlorine" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75476fe966a8af7c0ceae2a3e514afa87d4451741fcdfab8bfaa07ad301842ec" + +[[package]] +name = "chrono" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" +dependencies = [ + "iana-time-zone", + "num-integer", + "num-traits", + "winapi", +] + +[[package]] +name = "cocoa" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys 0.8.3", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags", + "core-foundation 0.7.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if 0.1.10", + "core-foundation-sys 0.7.0", + "core-graphics 0.19.2", + "libc", + "objc", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b11f15d1e3268f140f68d390637d5e76d849782d971ae7063e0da69fe9709a76" +dependencies = [ + "libloading 0.6.7", +] + +[[package]] +name = "dlib" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +dependencies = [ + "libloading 0.7.3", +] + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "env_logger" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "generator" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc184cace1cea8335047a471cc1da80f18acf8a76f3bab2028d499e328948ec7" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "windows", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" + +[[package]] +name = "glam" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00572b5b10070ac495be20a25b4c8d379d20bcdec8ea0c870022b620ec79b20" + +[[package]] +name = "glam" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70155b56080764b8b758e91e4c63d06da0262c0c939f2cd991cd1382087147df" +dependencies = [ + "serde", + "spirv-std", +] + +[[package]] +name = "gpu-allocator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6115dafe080f3f6ddab8250559d66990b596f2a235e57f7306daf5c5b5c199a" +dependencies = [ + "ash", + "backtrace", + "log", + "thiserror", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd911b35d940d2bd0bea0f9100068e5b97b51a1cbe13d13382f132e0365257a0" +dependencies = [ + "android_system_properties", + "core-foundation-sys 0.8.3", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "imgui" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6a33933d4645d6db1bfa55ff75e13ef301644d4c001cfaec6fe3afcfb05b82c" +dependencies = [ + "bitflags", + "imgui-sys", + "parking_lot", +] + +[[package]] +name = "imgui-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "286f5338bd8281e3203de29cc317d123b178f2e565eca5aee770a2048074fdf7" +dependencies = [ + "cc", + "chlorine", +] + +[[package]] +name = "imgui-winit-support" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d8cb426a6ee9f1be8e379b18b9085585887056fcfbc2d66bddb2c355944624" +dependencies = [ + "imgui", + "winit", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "itoa" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.134" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb" + +[[package]] +name = "libloading" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "libm" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if 1.0.0", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber 0.3.16", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memmap2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +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.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "winapi", +] + +[[package]] +name = "mio-misc" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b47412f3a52115b936ff2a229b803498c7b4d332adeb87c2f1498c9da54c398c" +dependencies = [ + "crossbeam", + "crossbeam-queue", + "log", + "mio", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + +[[package]] +name = "natord" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308d96db8debc727c3fd9744aac51751243420e46edf401010908da7f8d5e57c" + +[[package]] +name = "ndk" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8794322172319b972f528bf90c6b467be0079f1fa82780ffb431088e741a73ab" +dependencies = [ + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-glue" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5caf0c24d51ac1c905c27d4eda4fa0635bbe0de596b8f79235e0b17a4d29385" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" +dependencies = [ + "darling", + "proc-macro-crate 0.1.5", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "nix" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" +dependencies = [ + "bitflags", + "cc", + "cfg-if 0.1.10", + "libc", +] + +[[package]] +name = "nix" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate 1.2.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "object" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" + +[[package]] +name = "optick" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7e7ab6068cdba9928db83674b18fe7aa2efbaa9920698d260ecbaf7906c6548" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owned_ttf_parser" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f61dcf0b917cd75d4521d7343d1ffff3d1583054133c9b5cbea3375c703c40d" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling" +version = "1.0.7" +dependencies = [ + "bincode", + "env_logger", + "glam 0.8.7", + "imgui", + "imgui-winit-support", + "lazy_static", + "log", + "optick", + "profiling-procmacros", + "puffin", + "puffin-imgui", + "rafx", + "superluminal-perf", + "tracing", + "tracing-subscriber 0.2.25", + "tracing-tracy", + "tracy-client 0.14.1", + "winit", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1e2417ef905b8ad94215f8a607bd2d0f5d13d416d18dca4a530811e8a0674c" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "puffin" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "023514fb1e29a290a5c8237ceba94a30e4637be78df9f168ae991c1b957457e2" +dependencies = [ + "anyhow", + "bincode", + "byteorder", + "once_cell", + "parking_lot", + "serde", + "zstd", +] + +[[package]] +name = "puffin-imgui" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f99f2a95149ce4c5dd74c84259a7d8a1927882465a8a32e4b57fa280402093fd" +dependencies = [ + "imgui", + "natord", + "puffin", + "serde", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rafx" +version = "0.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2e69bc36f8ef495c23201b8cb154f196d84b206865758b67b378f37bcfc937" +dependencies = [ + "rafx-api", + "rafx-base", + "rafx-framework", + "rafx-visibility", +] + +[[package]] +name = "rafx-api" +version = "0.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91860167246b7f469030e7793de87b592520cc984bf5ba5baa35ce6045e1f031" +dependencies = [ + "ash", + "ash-window", + "bitflags", + "crossbeam-channel", + "fnv", + "gpu-allocator", + "log", + "profiling 1.0.6", + "rafx-base", + "raw-window-handle 0.3.4", + "serde", + "serde_bytes", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "rafx-base" +version = "0.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c3e2b3d269da3e44c827cefb60674a25ce7b93b120141f33944002f5990164" +dependencies = [ + "crossbeam-channel", + "downcast-rs", + "fnv", + "instant", + "log", +] + +[[package]] +name = "rafx-framework" +version = "0.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5acf8d3b0f4bccb27f1a7decb72d7a6a372d262b7c6dfda7a6cd30877ec1f746" +dependencies = [ + "arrayvec", + "bitflags", + "crossbeam-channel", + "downcast-rs", + "fnv", + "glam 0.13.1", + "log", + "parking_lot", + "profiling 1.0.6", + "rafx-api", + "rafx-base", + "rafx-visibility", + "serde", + "serde_bytes", + "slotmap", +] + +[[package]] +name = "rafx-visibility" +version = "0.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1caa54d71caa79bace6f1923b08010d7c0101da916cbf3c9b63d0f33df223228" +dependencies = [ + "crossbeam-channel", + "glam 0.13.1", + "log", + "parking_lot", + "profiling 1.0.6", + "rustc-hash", + "serde", + "slotmap", +] + +[[package]] +name = "raw-window-handle" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28f55143d0548dad60bb4fbdc835a3d7ac6acc3324506450c5fdd6e42903a76" +dependencies = [ + "libc", + "raw-window-handle 0.4.3", +] + +[[package]] +name = "raw-window-handle" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +dependencies = [ + "cty", +] + +[[package]] +name = "raw-window-metal" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cd21ed1cdef7f1b1579b972148ba6058b5b545959a14d91ea83c4f0ea9f289b" +dependencies = [ + "cocoa", + "core-graphics 0.22.3", + "objc", + "raw-window-handle 0.3.4", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rusttype" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "rustversion" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "smithay-client-toolkit" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4750c76fd5d3ac95fa3ed80fe667d6a3d8590a960e5b575b98eea93339a80b80" +dependencies = [ + "andrew", + "bitflags", + "calloop", + "dlib 0.4.2", + "lazy_static", + "log", + "memmap2", + "nix 0.18.0", + "wayland-client", + "wayland-cursor", + "wayland-protocols", +] + +[[package]] +name = "spirv-std" +version = "0.4.0-alpha.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e2676f3e58345b7c742b266b5bec022445b43e6471b9a00895faec03a52723e" +dependencies = [ + "bitflags", + "num-traits", + "spirv-std-macros", + "spirv-types", +] + +[[package]] +name = "spirv-std-macros" +version = "0.4.0-alpha.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e982995d49be4bd31f7796a353d4fa39edcb45c8dcbc2b42e7b2a9cccb24eaf" +dependencies = [ + "proc-macro2", + "quote", + "spirv-std-types", + "syn", +] + +[[package]] +name = "spirv-std-types" +version = "0.4.0-alpha.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe8930b1572fcea37b73216fbb9dbd391281993407ca0fbcfe833225cfbac93" + +[[package]] +name = "spirv-types" +version = "0.4.0-alpha.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7509fe29b5051b494de4571309a9cdcd9e93aad937d168cacda449eb4a95844e" + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "superluminal-perf" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80ed8ddf5d2a4a849fa7dc75b3e0be740adb882fe7fee87e79584402ac9b1e60" +dependencies = [ + "superluminal-perf-sys", +] + +[[package]] +name = "superluminal-perf-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0342a02bcc62538822a46f54294130677f026666c2e19d078fc213b7bc07ff16" + +[[package]] +name = "syn" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "ansi_term", + "chrono", + "lazy_static", + "matchers 0.0.1", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers 0.1.0", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tracing-tracy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b668a0e08f29842a38973cc33317dba03a3062538c762df7425aa6397bce480a" +dependencies = [ + "tracing-core", + "tracing-subscriber 0.2.25", + "tracy-client 0.10.0", +] + +[[package]] +name = "tracy-client" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8ccdb37ca05e354a50011b8a195f115215e46324f65be92495859882cea453" +dependencies = [ + "tracy-client-sys 0.11.0", +] + +[[package]] +name = "tracy-client" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2243676f4198698947203bb36dfa8afb514e4ee9a04a7999dd843391939472b" +dependencies = [ + "loom", + "once_cell", + "tracy-client-sys 0.18.0", +] + +[[package]] +name = "tracy-client-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee6f0f7878155b6102ab5aba86a92ec4357702ad44683df68ab5493ba3c86a2" +dependencies = [ + "cc", +] + +[[package]] +name = "tracy-client-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052dffc5a3431553cf9c875aad12d0e993f6a02d7f2b67dd38d9d518c24ce79c" +dependencies = [ + "cc", +] + +[[package]] +name = "ttf-parser" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc" + +[[package]] +name = "unicode-ident" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "wasi" +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.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "wayland-client" +version = "0.28.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ab332350e502f159382201394a78e3cc12d0f04db863429260164ea40e0355" +dependencies = [ + "bitflags", + "downcast-rs", + "libc", + "nix 0.20.0", + "scoped-tls", + "wayland-commons", + "wayland-scanner", + "wayland-sys", +] + +[[package]] +name = "wayland-commons" +version = "0.28.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21817947c7011bbd0a27e11b17b337bfd022e8544b071a2641232047966fbda" +dependencies = [ + "nix 0.20.0", + "once_cell", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-cursor" +version = "0.28.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be610084edd1586d45e7bdd275fe345c7c1873598caa464c4fb835dee70fa65a" +dependencies = [ + "nix 0.20.0", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.28.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "286620ea4d803bacf61fa087a4242ee316693099ee5a140796aaba02b29f861f" +dependencies = [ + "bitflags", + "wayland-client", + "wayland-commons", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.28.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce923eb2deb61de332d1f356ec7b6bf37094dc5573952e1c8936db03b54c03f1" +dependencies = [ + "proc-macro2", + "quote", + "xml-rs", +] + +[[package]] +name = "wayland-sys" +version = "0.28.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d841fca9aed7febf9bed2e9796c49bf58d4152ceda8ac949ebe00868d8f0feb8" +dependencies = [ + "dlib 0.5.0", + "lazy_static", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +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.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + +[[package]] +name = "winit" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79610794594d5e86be473ef7763f604f2159cbac8c94debd00df8fb41e86c2f8" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio", + "mio-misc", + "ndk", + "ndk-glue", + "ndk-sys", + "objc", + "parking_lot", + "percent-encoding", + "raw-window-handle 0.3.4", + "scopeguard", + "smithay-client-toolkit", + "wayland-client", + "winapi", + "x11-dl", +] + +[[package]] +name = "x11-dl" +version = "2.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "xcursor" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +dependencies = [ + "nom", +] + +[[package]] +name = "xdg" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4583db5cbd4c4c0303df2d15af80f0539db703fa1c68802d4cbbd2dd0f88f6" +dependencies = [ + "dirs", +] + +[[package]] +name = "xml-rs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" + +[[package]] +name = "zstd" +version = "0.9.2+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "4.1.3+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "1.6.2+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" +dependencies = [ + "cc", + "libc", +] diff --git a/third_party/rust/profiling/Cargo.toml b/third_party/rust/profiling/Cargo.toml new file mode 100644 index 0000000000..e5ac884890 --- /dev/null +++ b/third_party/rust/profiling/Cargo.toml @@ -0,0 +1,129 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2018" +name = "profiling" +version = "1.0.7" +authors = ["Philip Degarmo <aclysma@gmail.com>"] +exclude = [ + "/examples", + "/screenshots", +] +description = "This crate provides a very thin abstraction over other profiler crates." +homepage = "https://github.com/aclysma/profiling" +readme = "README.md" +keywords = [ + "performance", + "profiling", +] +categories = ["development-tools::profiling"] +license = "MIT OR Apache-2.0" +repository = "https://github.com/aclysma/profiling" + +[[example]] +name = "puffin" +path = "examples/puffin/puffin.rs" +required-features = ["profile-with-puffin"] + +[[example]] +name = "simple" +path = "examples/simple.rs" +required-features = [] + +[dependencies.optick] +version = "1.3" +optional = true + +[dependencies.profiling-procmacros] +version = "1.0.7" +optional = true + +[dependencies.puffin] +version = "0.12.1" +optional = true + +[dependencies.superluminal-perf] +version = "0.1" +optional = true + +[dependencies.tracing] +version = "0.1" +optional = true + +[dependencies.tracy-client] +version = "0.14.1" +optional = true + +[dev-dependencies.bincode] +version = "1.3.1" + +[dev-dependencies.env_logger] +version = "0.6" + +[dev-dependencies.glam] +version = "0.8.6" + +[dev-dependencies.imgui] +version = "0.8" + +[dev-dependencies.imgui-winit-support] +version = "0.8" + +[dev-dependencies.lazy_static] +version = "1" + +[dev-dependencies.log] +version = "0.4" + +[dev-dependencies.puffin-imgui] +version = "0.15.0" + +[dev-dependencies.rafx] +version = "=0.0.14" +features = [ + "rafx-vulkan", + "framework", +] + +[dev-dependencies.tracing-subscriber] +version = "0.2" + +[dev-dependencies.tracing-tracy] +version = "0.4.0" + +[dev-dependencies.winit] +version = "0.25" + +[features] +default = ["procmacros"] +procmacros = ["profiling-procmacros"] +profile-with-optick = [ + "optick", + "profiling-procmacros/profile-with-optick", +] +profile-with-puffin = [ + "puffin", + "profiling-procmacros/profile-with-puffin", +] +profile-with-superluminal = [ + "superluminal-perf", + "profiling-procmacros/profile-with-superluminal", +] +profile-with-tracing = [ + "tracing", + "profiling-procmacros/profile-with-tracing", +] +profile-with-tracy = [ + "tracy-client", + "profiling-procmacros/profile-with-tracy", +] +type-check = [] diff --git a/third_party/rust/profiling/LICENSE-APACHE b/third_party/rust/profiling/LICENSE-APACHE new file mode 100644 index 0000000000..139dce95d4 --- /dev/null +++ b/third_party/rust/profiling/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.
\ No newline at end of file diff --git a/third_party/rust/profiling/LICENSE-MIT b/third_party/rust/profiling/LICENSE-MIT new file mode 100644 index 0000000000..6a84e059ad --- /dev/null +++ b/third_party/rust/profiling/LICENSE-MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Philip Degarmo and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.
\ No newline at end of file diff --git a/third_party/rust/profiling/README.md b/third_party/rust/profiling/README.md new file mode 100644 index 0000000000..64fe3a31b0 --- /dev/null +++ b/third_party/rust/profiling/README.md @@ -0,0 +1,224 @@ +# profiling + +Provides a very thin abstraction over instrumented profiling crates like `puffin`, `optick`, `tracy`, and `superluminal-perf`. + +Mark up your code like this: + +```rust +#[profiling::function] +fn some_function() { + burn_time(5); + + for i in 0..5 { + profiling::scope!("Looped Operation"); + } +} +``` + +See below for resulting visualization and more details on the exposed API. + +**Friendly Warning:** Some profiler backends implicitly listen on network ports immediately when the host app is +launched. If this is a concern, please review the enabled profiler(s) documentation for details! + +## Puffin + +* https://github.com/EmbarkStudios/puffin +* Cross-platform +* Unlike the other backends, `puffin` relies on your app providing an imgui window to draw the UI in-process. The +below screenshots have a profiled application open with the puffin imgui window visible. + +## Optick + +* https://github.com/bombomby/optick +* The upstream crate only provides binaries for windows. However it could probably be made to work by building +optick capture code and linking against it manually. The UI is windows only. + +[![Optick](screenshots/optick-small.png)](screenshots/optick.jpeg) + +## Superluminal + +* https://superluminal.eu +* Windows only + +[![Superluminal](screenshots/superluminal-small.png)](screenshots/superluminal.jpeg) + +## Tracing + +* https://crates.io/crates/tracing +* Cross-platform +* The tracing backend injects tracing `span!()` macros that match the lifetime of the profiling macros. +Tracing uses callbacks rather than inlining specific pre-determined code, +so it is more flexible than profiling +(at the cost of more lines of code and potentially higher overhead). +This allows existing and new tracing-compatible handlers to work with profiling. + +![Tracing](screenshots/tracing.png) + +## Tracy + +* https://github.com/wolfpld/tracy +* Cross-platform (windows, macOS, linux) + +[![Tracy](screenshots/tracy-small.png)](screenshots/tracy.jpeg) + +## Usage + +Currently, there's just four macros: + * `profiling::scope!(name: &str, [tag: &str])` + * name: scopes will appear in the profiler under this name + * tag: optional extra data + * `#[profiling::function]` + * procmacro placed on a function to quickly wrap it in a scope using the function name + * `profiling::register_thread!([name: &str])` + * name: optional, defaults to `std::thread::current().name`, or `.id` if it's unnamed + * `profiling::finish_frame!()` + * Many profilers have the concept of a "frame" as a unit of work. Use this to indicate where one frame ends and the + next one begins. + +Support for individual profilers can be turned on/off with feature flags. By default, they're all off, resulting in +no dependencies or runtime code. + +## Who is this for? + * Authors of binaries that want to have multiple options for profiling their code, but don't want to duplicate their + instrumentation once per each profiler's individual API. + * Authors of libraries that would like to instrument their crate for their end-users. + +This crate is intended to be **TINY**. It won't support every possible usage, just the basics. I'm open to adding +more things but I plan to be very selective to maintain a slim size. + +When enabled, using a macro produces identical code as if you used the wrapped profiling API directly. So it is +completely fine to directly use a profiler's API when this abstraction doesn't support something you want to do. + +## Alternatives + +**tracing**: `tracing` is more flexible than `profiling` but is significantly larger and has +some potential runtime cost. `profiling` is only useful for instrumented profiling. Instrumentation is inserted directly +into your code inline via macros as if you were using the profiler's crate directly. This results in smaller code with +no additional overhead. + +Using profiling crates (i.e. puffin/optick/etc.) directly: + * For authors of binaries, you may still need to use APIs on those crates to get started. But when instrumenting your + code, `profiling::scope!("Scope Name")` inside a function or `#[profiling::function]` on a function will instrument + it for all the supported profiler-specific crates. You can still use those crates directly if you want to take + advantage of custom APIs they provide to surface additional data. + * For authors of upstream libraries, this crate lets you implement simple instrumentation once. Hopefully this will + allow the community to benefit from instrumented profiling, even if a significant amount of a codebase is made + of upstream crates. + +## Using from a Binary + +It's up to you to initialize the profiling crate of your choice (although some do not need explicit initialization +and will immediately work). The examples demonstrate this for all the supported crates, but it's worth looking +at the docs for the profiler you're interested in using! `profiling` re-exports the profiler crates if they are +enabled, simplifying the modifications you would need to make to your Cargo.toml. + +Once initialized, you can mix/match the macros provided by your profiler of choice and the generic ones in this +crate. For example: + +```rust +// This may map to something like: +// - puffin::profile_scope!("Scope Name") +// - optick::event!("Scope Name") +// - tracing::span!(tracing::Level::INFO, "Scope Name") +// - superluminal_perf::begin_event("Scope Name") +profiling::scope!("Scope Name"); + +// This may map to something like: +// - puffin::profile_scope_data!("Scope Name", "extra data") +// - optick::event!("Scope Name"); optick::tag!("tag", "extra data"); +// - tracing::span!(tracing::Level::INFO, "Scope Name", tag = "extra data") +// - superluminal_perf::begin_event_with_data("Scope Name", "extra data", 0) +profiling::scope!("Scope Name", "extra data"); +``` + +There is also a proc macro to decorate functions: + +```rust +#[profiling::function] +fn my_function() { + +} +``` + +Take a look at the code for the helpful macros `register_thread!()` and `finish_frame!()`. + +I recommend adding features for each backend you want to use to your binary crate. This allows you to optionally compile +in code to setup and configure a backend. + +```toml +[dependencies] +profiling = "1.0" + +[features] +profile-with-puffin = ["profiling/profile-with-puffin"] +profile-with-optick = ["profiling/profile-with-optick"] +profile-with-superluminal = ["profiling/profile-with-superluminal"] +profile-with-tracing = ["profiling/profile-with-tracing"] +profile-with-tracy = ["profiling/profile-with-tracy"] +``` + + * You can use the default feature to quickly/temporarily turn something on: `default = ["profile-with-optick"]` + * `cargo run --features=profile-with-optick` works too! + +## Using from a Library + +Add the profiling crate to Cargo.toml: + +```toml +[dependencies] +profiling = "1.0" +``` + +Now you can instrument your library using the API exposed via the `profiling` crate. + +If the end-user of your library doesn't use profiling, the macros in this crate will emit no code at all. + +## Feature Flags + + * profile-with-puffin: Enable the `puffin` crate + * profile-with-optick: Enable the `optick` crate + * profile-with-superluminal: Enable the `superluminal-perf` crate + * profile-with-tracing: Enable the `tracing` crate. (This is just an abstraction layer - you'd want to hook it to do something!) + * profile-with-tracy: Enable the `tracy-client` crate. + +**Only one backend can be enabled at a time!** + +## Examples + + * simple: Shows a bare minimum requirements to do some simple instrumented profiling. Once it's running, you + can connect to the process using optick/tracy/superluminal. Some of these are windows only! + +``` +run --example simple --features="profile-with-optick" +run --example simple --features="profile-with-tracy" +run --example simple --features="profile-with-puffin" +run --example simple --features="profile-with-superluminal" +``` + + * puffin: Launches a basic app with imgui integration showing the puffin UI. This one should run everywhere + that supports imgui. + +``` +cargo run --example puffin --features="profile-with-puffin" +``` + +## License + +Licensed under either of + +* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) +* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) + +at your option. + +The examples directory contains [`NotoSans-Medium.ttf`](https://www.google.com/get/noto/), available under SIL Open Font +License (OFL). + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally +submitted for inclusion in the work by you, as defined in the Apache-2.0 +license, shall be dual licensed as above, without any additional terms or +conditions. + +See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT). diff --git a/third_party/rust/profiling/deny.toml b/third_party/rust/profiling/deny.toml new file mode 100644 index 0000000000..6555db8bb7 --- /dev/null +++ b/third_party/rust/profiling/deny.toml @@ -0,0 +1,211 @@ +# This template contains all of the possible sections and their default values + +# Note that all fields that take a lint level have these possible values: +# * deny - An error will be produced and the check will fail +# * warn - A warning will be produced, but the check will not fail +# * allow - No warning or error will be produced, though in some cases a note +# will be + +# The values provided in this template are the default values that will be used +# when any section or field is not specified in your own configuration + +# If 1 or more target triples (and optionally, target_features) are specified, +# only the specified targets will be checked when running `cargo deny check`. +# This means, if a particular package is only ever used as a target specific +# dependency, such as, for example, the `nix` crate only being used via the +# `target_family = "unix"` configuration, that only having windows targets in +# this list would mean the nix crate, as well as any of its exclusive +# dependencies not shared by any other crates, would be ignored, as the target +# list here is effectively saying which targets you are building for. +targets = [ + # The triple can be any string, but only the target triples built in to + # rustc (as of 1.40) can be checked against actual config expressions + #{ triple = "x86_64-unknown-linux-musl" }, + # You can also specify which target_features you promise are enabled for a + # particular target. target_features are currently not validated against + # the actual valid features supported by the target architecture. + #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, +] + +# This section is considered when running `cargo deny check advisories` +# More documentation for the advisories section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html +[advisories] +# The path where the advisory database is cloned/fetched into +db-path = "~/.cargo/advisory-db" +# The url of the advisory database to use +db-urls = ["https://github.com/rustsec/advisory-db"] +# The lint level for security vulnerabilities +vulnerability = "warn" +# The lint level for unmaintained crates +unmaintained = "warn" +# The lint level for crates that have been yanked from their source registry +yanked = "warn" +# The lint level for crates with security notices. Note that as of +# 2019-12-17 there are no security notice advisories in +# https://github.com/rustsec/advisory-db +notice = "warn" +# A list of advisory IDs to ignore. Note that ignored advisories will still +# output a note when they are encountered. +ignore = [ + #"RUSTSEC-0000-0000", +] +# Threshold for security vulnerabilities, any vulnerability with a CVSS score +# lower than the range specified will be ignored. Note that ignored advisories +# will still output a note when they are encountered. +# * None - CVSS Score 0.0 +# * Low - CVSS Score 0.1 - 3.9 +# * Medium - CVSS Score 4.0 - 6.9 +# * High - CVSS Score 7.0 - 8.9 +# * Critical - CVSS Score 9.0 - 10.0 +#severity-threshold = + +# This section is considered when running `cargo deny check licenses` +# More documentation for the licenses section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html +[licenses] +# The lint level for crates which do not have a detectable license +unlicensed = "deny" +# List of explictly allowed licenses +# See https://spdx.org/licenses/ for list of possible licenses +# [possible values: any SPDX 3.7 short identifier (+ optional exception)]. +allow = [ + "MIT", + "Apache-2.0", + "BSD-3-Clause", + "Zlib", + "Unicode-DFS-2016" + #"BSD-2-Clause" + #"Apache-2.0 WITH LLVM-exception", +] +# List of explictly disallowed licenses +# See https://spdx.org/licenses/ for list of possible licenses +# [possible values: any SPDX 3.7 short identifier (+ optional exception)]. +deny = [ + #"Nokia", +] +# Lint level for licenses considered copyleft +copyleft = "deny" +# Blanket approval or denial for OSI-approved or FSF Free/Libre licenses +# * both - The license will be approved if it is both OSI-approved *AND* FSF +# * either - The license will be approved if it is either OSI-approved *OR* FSF +# * osi-only - The license will be approved if is OSI-approved *AND NOT* FSF +# * fsf-only - The license will be approved if is FSF *AND NOT* OSI-approved +# * neither - This predicate is ignored and the default lint level is used +allow-osi-fsf-free = "neither" +# Lint level used when no other predicates are matched +# 1. License isn't in the allow or deny lists +# 2. License isn't copyleft +# 3. License isn't OSI/FSF, or allow-osi-fsf-free = "neither" +default = "deny" +# The confidence threshold for detecting a license from license text. +# The higher the value, the more closely the license text must be to the +# canonical license text of a valid SPDX license file. +# [possible values: any between 0.0 and 1.0]. +confidence-threshold = 1.0 +# Allow 1 or more licenses on a per-crate basis, so that particular licenses +# aren't accepted for every possible crate as with the normal allow list +exceptions = [ + # used by ash in an example + { allow = ["ISC"], name = "libloading", version = "*" }, +] + +# Some crates don't have (easily) machine readable licensing information, +# adding a clarification entry for it allows you to manually specify the +# licensing information +[[licenses.clarify]] +# The name of the crate the clarification applies to +name = "ring" +# THe optional version constraint for the crate +version = "*" +# The SPDX expression for the license requirements of the crate +expression = "MIT AND ISC AND OpenSSL" +# One or more files in the crate's source used as the "source of truth" for +# the license expression. If the contents match, the clarification will be used +# when running the license check, otherwise the clarification will be ignored +# and the crate will be checked normally, which may produce warnings or errors +# depending on the rest of your configuration +license-files = [ +# Each entry is a crate relative path, and the (opaque) hash of its contents + { path = "LICENSE", hash = 0xbd0eed23 } +] + +[[licenses.clarify]] +# The name of the crate the clarification applies to +name = "webpki" +# THe optional version constraint for the crate +version = "*" +# The SPDX expression for the license requirements of the crate +expression = "ISC" +# One or more files in the crate's source used as the "source of truth" for +# the license expression. If the contents match, the clarification will be used +# when running the license check, otherwise the clarification will be ignored +# and the crate will be checked normally, which may produce warnings or errors +# depending on the rest of your configuration +license-files = [ + # Each entry is a crate relative path, and the (opaque) hash of its contents + { path = "LICENSE", hash = 0x001c7e6c } +] + +[licenses.private] +# If true, ignores workspace crates that aren't published, or are only +# published to private registries +ignore = false +# One or more private registries that you might publish crates to, if a crate +# is only published to private registries, and ignore is true, the crate will +# not have its license(s) checked +registries = [ + #"https://sekretz.com/registry +] + +# This section is considered when running `cargo deny check bans`. +# More documentation about the 'bans' section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html +[bans] +# Lint level for when multiple versions of the same crate are detected +multiple-versions = "warn" +# Lint level for when a crate version requirement is `*` +wildcards = "warn" +# The graph highlighting used when creating dotgraphs for crates +# with multiple versions +# * lowest-version - The path to the lowest versioned duplicate is highlighted +# * simplest-path - The path to the version with the fewest edges is highlighted +# * all - Both lowest-version and simplest-path are used +highlight = "all" +# List of crates that are allowed. Use with care! +allow = [ + #{ name = "ansi_term", version = "=0.11.0" }, +] +# List of crates to deny +deny = [ + # Each entry the name of a crate and a version range. If version is + # not specified, all versions will be matched. + #{ name = "ansi_term", version = "=0.11.0" }, +] +# Certain crates/versions that will be skipped when doing duplicate detection. +skip = [ + #{ name = "ansi_term", version = "=0.11.0" }, +] +# Similarly to `skip` allows you to skip certain crates during duplicate +# detection. Unlike skip, it also includes the entire tree of transitive +# dependencies starting at the specified crate, up to a certain depth, which is +# by default infinite +skip-tree = [ + #{ name = "ansi_term", version = "=0.11.0", depth = 20 }, +] + +# This section is considered when running `cargo deny check sources`. +# More documentation about the 'sources' section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html +[sources] +# Lint level for what to happen when a crate from a crate registry that is not +# in the allow list is encountered +unknown-registry = "deny" +# Lint level for what to happen when a crate from a git repository that is not +# in the allow list is encountered +unknown-git = "deny" +# List of URLs for allowed crate registries. Defaults to the crates.io index +# if not specified. If it is specified but empty, no registries are allowed. +allow-registry = ["https://github.com/rust-lang/crates.io-index"] +# List of URLs for allowed Git repositories +allow-git = ["https://github.com/EmbarkStudios/puffin.git"] diff --git a/third_party/rust/profiling/rustfmt.toml b/third_party/rust/profiling/rustfmt.toml new file mode 100644 index 0000000000..e9648ecf98 --- /dev/null +++ b/third_party/rust/profiling/rustfmt.toml @@ -0,0 +1,4 @@ + +# This makes merge conflicts less likely to occur, and makes it easier to see +# symmetry between parameters. +fn_args_layout = "Vertical" diff --git a/third_party/rust/profiling/src/empty_impl.rs b/third_party/rust/profiling/src/empty_impl.rs new file mode 100644 index 0000000000..ac106a10bb --- /dev/null +++ b/third_party/rust/profiling/src/empty_impl.rs @@ -0,0 +1,34 @@ +/// Opens a scope. Two variants: +/// - profiling::scope!(name: &str) - Opens a scope with the given name +/// - profiling::scope!(name: &str, data: &str) - Opens a scope with the given name and an extra +/// datafield. Details of this depend on the API, but it should be a &str. If the extra data is +/// named, it will be named "tag". Some APIs support adding more data (for example, `optic::tag!`) +/// +/// ``` +/// profiling::scope!("outer"); +/// for _ in 0..10 { +/// profiling::scope!("inner", format!("iteration {}").as_str()); +/// } +/// ``` +#[macro_export] +macro_rules! scope { + ($name:expr) => {}; + ($name:expr, $data:expr) => {}; +} + +/// Registers a thread with the profiler API(s). This is usually setting a name for the thread. +/// Two variants: +/// - register_thread!() - Tries to get the name of the thread, or an ID if no name is set +/// - register_thread!(name: &str) - Registers the thread using the given name +#[macro_export] +macro_rules! register_thread { + () => {}; + ($name:expr) => {}; +} + +/// Finishes the frame. This isn't strictly necessary for some kinds of applications but a pretty +/// normal thing to track in games. +#[macro_export] +macro_rules! finish_frame { + () => {}; +} diff --git a/third_party/rust/profiling/src/lib.rs b/third_party/rust/profiling/src/lib.rs new file mode 100644 index 0000000000..75703408d8 --- /dev/null +++ b/third_party/rust/profiling/src/lib.rs @@ -0,0 +1,78 @@ +// +// To use this library, enable one of the feature flags. Each backend implementation provides the +// exact same interface. Only one may be active at a time. +// + +/// Proc macro for creating a scope around the function, using the name of the function for the +/// scope's name +/// +/// This must be done as a proc macro because tracing requires a const string +/// +/// ``` +/// #[profiling::function] +/// fn my_function() { +/// +/// } +/// ``` +#[cfg(feature = "procmacros")] +pub use profiling_procmacros::function; + +#[cfg(feature = "profile-with-puffin")] +pub use puffin; +#[cfg(feature = "profile-with-puffin")] +mod puffin_impl; +#[cfg(feature = "profile-with-puffin")] +pub use puffin_impl::*; + +#[cfg(feature = "profile-with-optick")] +pub use optick; +#[cfg(feature = "profile-with-optick")] +mod optick_impl; +#[cfg(feature = "profile-with-optick")] +pub use optick_impl::*; + +#[cfg(feature = "profile-with-superluminal")] +pub use superluminal_perf; +#[cfg(feature = "profile-with-superluminal")] +mod superluminal_impl; +#[cfg(feature = "profile-with-superluminal")] +pub use superluminal_impl::*; + +#[cfg(feature = "profile-with-tracing")] +pub use tracing; +#[cfg(feature = "profile-with-tracing")] +mod tracing_impl; +#[cfg(feature = "profile-with-tracing")] +pub use tracing_impl::*; + +#[cfg(feature = "profile-with-tracy")] +pub use tracy_client; +#[cfg(feature = "profile-with-tracy")] +mod tracy_impl; +#[cfg(feature = "profile-with-tracy")] +pub use tracy_impl::*; + +#[cfg(feature = "type-check")] +mod type_check_impl; +#[cfg(feature = "type-check")] +pub use type_check_impl::*; + +#[cfg(not(any( + feature = "profile-with-puffin", + feature = "profile-with-optick", + feature = "profile-with-superluminal", + feature = "profile-with-tracing", + feature = "profile-with-tracy", + feature = "type-check" +)))] +mod empty_impl; + +#[cfg(not(any( + feature = "profile-with-puffin", + feature = "profile-with-optick", + feature = "profile-with-superluminal", + feature = "profile-with-tracing", + feature = "profile-with-tracy", + feature = "type-check" +)))] +pub use empty_impl::*; diff --git a/third_party/rust/profiling/src/optick_impl.rs b/third_party/rust/profiling/src/optick_impl.rs new file mode 100644 index 0000000000..b49b1ad44b --- /dev/null +++ b/third_party/rust/profiling/src/optick_impl.rs @@ -0,0 +1,35 @@ +#[macro_export] +macro_rules! scope { + ($name:expr) => { + $crate::optick::event!($name); + }; + // NOTE: I've not been able to get attached data to work with optick + ($name:expr, $data:expr) => { + $crate::optick::event!($name); + $crate::optick::tag!("tag", $data); + }; +} + +#[macro_export] +macro_rules! register_thread { + () => { + let thread_name = std::thread::current() + .name() + .map(|x| x.to_string()) + .unwrap_or_else(|| format!("Thread {:?}", std::thread::current().id())); + + $crate::register_thread!(&thread_name); + }; + ($name:expr) => { + $crate::optick::register_thread($name); + }; +} + +/// Finishes the frame. This isn't strictly necessary for some kinds of applications but a pretty +/// normal thing to track in games. +#[macro_export] +macro_rules! finish_frame { + () => { + $crate::optick::next_frame(); + }; +} diff --git a/third_party/rust/profiling/src/puffin_impl.rs b/third_party/rust/profiling/src/puffin_impl.rs new file mode 100644 index 0000000000..5566648a46 --- /dev/null +++ b/third_party/rust/profiling/src/puffin_impl.rs @@ -0,0 +1,26 @@ +#[macro_export] +macro_rules! scope { + ($name:expr) => { + $crate::puffin::profile_scope!($name); + }; + ($name:expr, $data:expr) => { + $crate::puffin::profile_scope!($name, $data); + }; +} + +#[macro_export] +macro_rules! register_thread { + () => {}; + ($name:expr) => { + // puffin uses the thread name + }; +} + +/// Finishes the frame. This isn't strictly necessary for some kinds of applications but a pretty +/// normal thing to track in games. +#[macro_export] +macro_rules! finish_frame { + () => { + $crate::puffin::GlobalProfiler::lock().new_frame(); + }; +} diff --git a/third_party/rust/profiling/src/superluminal_impl.rs b/third_party/rust/profiling/src/superluminal_impl.rs new file mode 100644 index 0000000000..298df5cbf7 --- /dev/null +++ b/third_party/rust/profiling/src/superluminal_impl.rs @@ -0,0 +1,65 @@ +#[macro_export] +macro_rules! scope { + ($name:expr) => { + let _superluminal_guard = $crate::superluminal::SuperluminalGuard::new($name); + }; + ($name:expr, $data:expr) => { + let _superluminal_guard = + $crate::superluminal::SuperluminalGuard::new_with_data($name, $data); + }; +} + +#[macro_export] +macro_rules! register_thread { + () => { + let thread_name = std::thread::current() + .name() + .map(|x| x.to_string()) + .unwrap_or_else(|| format!("Thread {:?}", std::thread::current().id())); + + $crate::register_thread!(&thread_name); + }; + ($name:expr) => { + $crate::superluminal_perf::set_current_thread_name($name); + }; +} + +#[macro_export] +macro_rules! finish_frame { + () => { + // superluminal does not have a frame end function + }; +} + +// +// RAII wrappers to support superluminal. These are public as they need to be callable from macros +// but are not intended for direct use. +// +#[doc(hidden)] +pub mod superluminal { + pub struct SuperluminalGuard; + + // 0xFFFFFFFF means "use default color" + const DEFAULT_SUPERLUMINAL_COLOR: u32 = 0xFFFFFFFF; + + impl SuperluminalGuard { + pub fn new(name: &str) -> Self { + superluminal_perf::begin_event(name); + SuperluminalGuard + } + + pub fn new_with_data( + name: &str, + data: &str, + ) -> Self { + superluminal_perf::begin_event_with_data(name, data, DEFAULT_SUPERLUMINAL_COLOR); + SuperluminalGuard + } + } + + impl Drop for SuperluminalGuard { + fn drop(&mut self) { + superluminal_perf::end_event(); + } + } +} diff --git a/third_party/rust/profiling/src/tracing_impl.rs b/third_party/rust/profiling/src/tracing_impl.rs new file mode 100644 index 0000000000..9328b017d9 --- /dev/null +++ b/third_party/rust/profiling/src/tracing_impl.rs @@ -0,0 +1,22 @@ +#[macro_export] +macro_rules! scope { + ($name:expr) => { + let _span = $crate::tracing::span!($crate::tracing::Level::INFO, $name); + let _span_entered = _span.enter(); + }; + ($name:expr, $data:expr) => { + let _span = $crate::tracing::span!($crate::tracing::Level::INFO, $name, tag = $data); + let _span_entered = _span.enter(); + }; +} + +#[macro_export] +macro_rules! register_thread { + () => {}; + ($name:expr) => {}; +} + +#[macro_export] +macro_rules! finish_frame { + () => {}; +} diff --git a/third_party/rust/profiling/src/tracy_impl.rs b/third_party/rust/profiling/src/tracy_impl.rs new file mode 100644 index 0000000000..94f8eaf3b5 --- /dev/null +++ b/third_party/rust/profiling/src/tracy_impl.rs @@ -0,0 +1,68 @@ +#[macro_export] +macro_rules! scope { + // Note: literal patterns provided as an optimization since they can skip an allocation. + ($name:literal) => { + // Note: callstack_depth is 0 since this has significant overhead + let _tracy_span = $crate::tracy_client::span!($name, 0); + }; + ($name:literal, $data:expr) => { + // Note: callstack_depth is 0 since this has significant overhead + let _tracy_span = $crate::tracy_client::span!($name, 0); + _tracy_span.emit_text($data); + }; + ($name:expr) => { + let function_name = { + struct S; + let type_name = core::any::type_name::<S>(); + &type_name[..type_name.len() - 3] + }; + let _tracy_span = $crate::tracy_client::Client::running() + .expect("scope! without a running tracy_client::Client") + // Note: callstack_depth is 0 since this has significant overhead + .span_alloc($name, function_name, file!(), line!(), 0); + }; + ($name:expr, $data:expr) => { + let function_name = { + struct S; + let type_name = core::any::type_name::<S>(); + &type_name[..type_name.len() - 3] + }; + let _tracy_span = $crate::tracy_client::Client::running() + .expect("scope! without a running tracy_client::Client") + // Note: callstack_depth is 0 since this has significant overhead + .span_alloc($name, function_name, file!(), line!(), 0); + _tracy_span.emit_text($data); + }; +} + +/// Registers a thread with the profiler API(s). This is usually setting a name for the thread. +/// Two variants: +/// - register_thread!() - Tries to get the name of the thread, or an ID if no name is set +/// - register_thread!(name: &str) - Registers the thread using the given name +#[macro_export] +macro_rules! register_thread { + () => { + let thread_name = std::thread::current() + .name() + .map(|x| x.to_string()) + .unwrap_or_else(|| format!("Thread {:?}", std::thread::current().id())); + + $crate::register_thread!(&thread_name); + }; + ($name:expr) => { + $crate::tracy_client::Client::running() + .expect("register_thread! without a running tracy_client::Client") + .set_thread_name($name); + }; +} + +/// Finishes the frame. This isn't strictly necessary for some kinds of applications but a pretty +/// normal thing to track in games. +#[macro_export] +macro_rules! finish_frame { + () => { + $crate::tracy_client::Client::running() + .expect("finish_frame! without a running tracy_client::Client") + .frame_mark(); + }; +} diff --git a/third_party/rust/profiling/src/type_check_impl.rs b/third_party/rust/profiling/src/type_check_impl.rs new file mode 100644 index 0000000000..717fe73a07 --- /dev/null +++ b/third_party/rust/profiling/src/type_check_impl.rs @@ -0,0 +1,25 @@ +// This backend is intended to force type checking + +#[macro_export] +macro_rules! scope { + ($name:expr) => { + let _: &str = $name; + }; + ($name:expr, $data:expr) => { + let _: &str = $name; + let _: &str = $data; + }; +} + +#[macro_export] +macro_rules! register_thread { + () => {}; + ($name:expr) => { + let _: &str = $name; + }; +} + +#[macro_export] +macro_rules! finish_frame { + () => {}; +} |