diff --git a/Cargo.lock b/Cargo.lock index c12a668..c6d5ffb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -216,15 +216,16 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91839b07e474b3995035fd8ac33ee54f9c9ccbbb1ea33d9909c71bffdf1259d" +checksum = "eaf3437355979f1e93ba84ba108c38be5767713051f3c8ffbf07c094e2e61f9f" dependencies = [ "arrow-arith", "arrow-array", "arrow-buffer", "arrow-cast", "arrow-data", + "arrow-ipc", "arrow-ord", "arrow-row", "arrow-schema", @@ -234,9 +235,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "855c57c4efd26722b044dcd3e348252560e3e0333087fb9f6479dc0bf744054f" +checksum = "31dce77d2985522288edae7206bffd5fc4996491841dda01a13a58415867e681" dependencies = [ "arrow-array", "arrow-buffer", @@ -249,9 +250,9 @@ dependencies = [ [[package]] name = "arrow-array" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd03279cea46569acf9295f6224fbc370c5df184b4d2ecfe97ccb131d5615a7f" +checksum = "2d45fe6d3faed0435b7313e59a02583b14c6c6339fa7729e94c32a20af319a79" dependencies = [ "ahash", "arrow-buffer", @@ -265,9 +266,9 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e4a9b9b1d6d7117f6138e13bc4dd5daa7f94e671b70e8c9c4dc37b4f5ecfc16" +checksum = "2b02656a35cc103f28084bc80a0159668e0a680d919cef127bd7e0aaccb06ec1" dependencies = [ "bytes", "half", @@ -276,9 +277,9 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc70e39916e60c5b7af7a8e2719e3ae589326039e1e863675a008bee5ffe90fd" +checksum = "c73c6233c5b5d635a56f6010e6eb1ab9e30e94707db21cea03da317f67d84cf3" dependencies = [ "arrow-array", "arrow-buffer", @@ -296,9 +297,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4e75edf21ffd53744a9b8e3ed11101f610e7ceb1a29860432824f1834a1f623" +checksum = "b7f2861ffa86f107b8ab577d86cff7c7a490243eabe961ba1e1af4f27542bb79" dependencies = [ "arrow-buffer", "arrow-schema", @@ -316,11 +317,25 @@ dependencies = [ "serde", ] +[[package]] +name = "arrow-ipc" +version = "53.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0270dc511f11bb5fa98a25020ad51a99ca5b08d8a8dfbd17503bb9dba0388f0b" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", + "flatbuffers", +] + [[package]] name = "arrow-ord" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece7b5bc1180e6d82d1a60e1688c199829e8842e38497563c3ab6ea813e527fd" +checksum = "c6f202a879d287099139ff0d121e7f55ae5e0efe634b8cf2106ebc27a8715dee" dependencies = [ "arrow-array", "arrow-buffer", @@ -333,9 +348,9 @@ dependencies = [ [[package]] name = "arrow-row" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745c114c8f0e8ce211c83389270de6fbe96a9088a7b32c2a041258a443fe83ff" +checksum = "a8f936954991c360ba762dff23f5dda16300774fafd722353d9683abd97630ae" dependencies = [ "ahash", "arrow-array", @@ -347,15 +362,15 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95513080e728e4cec37f1ff5af4f12c9688d47795d17cda80b6ec2cf74d4678" +checksum = "9579b9d8bce47aa41389fe344f2c6758279983b7c0ebb4013e283e3e91bb450e" [[package]] name = "arrow-select" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e415279094ea70323c032c6e739c48ad8d80e78a09bef7117b8718ad5bf3722" +checksum = "7471ba126d0b0aaa24b50a36bc6c25e4e74869a1fd1a5553357027a0b1c8d1f1" dependencies = [ "ahash", "arrow-array", @@ -367,9 +382,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "53.3.0" +version = "53.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d956cae7002eb8d83a27dbd34daaea1cf5b75852f0b84deb4d93a276e92bbf" +checksum = "72993b01cb62507b06f1fb49648d7286c8989ecfabdb7b77a750fcb54410731b" dependencies = [ "arrow-array", "arrow-buffer", @@ -2547,9 +2562,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flatbuffers" -version = "23.5.26" +version = "24.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640" +checksum = "4f1baf0dbf96932ec9a3038d57900329c015b0bfb7b63d904f3bc27e2b02a096" dependencies = [ "bitflags 1.3.2", "rustc_version", @@ -3328,9 +3343,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -4655,9 +4670,9 @@ dependencies = [ [[package]] name = "re_arrow2" -version = "0.18.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f046c5679b0f305d610f80d93fd51ad702cfc077bbe16d9553a1660a2505160" +checksum = "6973c87de24c9de7292447fa896f229278b010cb3fb5e7f4f857447e64e1bb6f" dependencies = [ "ahash", "arrow-array", @@ -4667,7 +4682,6 @@ dependencies = [ "arrow-schema", "bytemuck", "chrono", - "comfy-table", "dyn-clone", "either", "ethnum", @@ -4681,20 +4695,27 @@ dependencies = [ "simdutf8", ] +[[package]] +name = "re_arrow_util" +version = "0.22.0-alpha.1+dev" +dependencies = [ + "arrow", + "itertools 0.13.0", + "re_log", + "re_tracing", +] + [[package]] name = "re_build_info" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b88b413ebeee91520b7825e4fde0b65702394f5282f5e783e56d0d8155a536a" +version = "0.22.0-alpha.1+dev" dependencies = [ + "re_byte_size", "serde", ] [[package]] name = "re_build_tools" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0892c63699ce6d5a87a8b18a8b2ab587124aa32fee251c1107fab44ca4e4c786" +version = "0.22.0-alpha.1+dev" dependencies = [ "anyhow", "cargo_metadata 0.18.1", @@ -4705,11 +4726,18 @@ dependencies = [ "walkdir", ] +[[package]] +name = "re_byte_size" +version = "0.22.0-alpha.1+dev" +dependencies = [ + "arrow", + "half", + "smallvec", +] + [[package]] name = "re_capabilities" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff19bd8c1f2604f4207847a80b1ffebe1654a24f422872b60e873e28b369462" +version = "0.22.0-alpha.1+dev" dependencies = [ "document-features", "static_assertions", @@ -4717,18 +4745,14 @@ dependencies = [ [[package]] name = "re_case" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07dce93a41adb3c620e2b03c1c995eb9ba57e520143ef7ee4d8b4f7e53514a36" +version = "0.22.0-alpha.1+dev" dependencies = [ "convert_case", ] [[package]] name = "re_chunk" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0cc5e3e6c262b0c3b9babad886e30af36ca041da64121afbe68c6341e6d924" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "anyhow", @@ -4736,10 +4760,12 @@ dependencies = [ "bytemuck", "crossbeam", "document-features", + "half", "itertools 0.13.0", "nohash-hasher", "rand", - "re_arrow2", + "re_arrow_util", + "re_byte_size", "re_error", "re_format", "re_format_arrow", @@ -4750,30 +4776,32 @@ dependencies = [ "re_types_core", "serde", "similar-asserts", + "tap", "thiserror", ] [[package]] name = "re_chunk_store" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9468c4409588cba5cad103fe5205a922294ada40989cbbc13fd83a1ac982c932" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "anyhow", + "arrow", "document-features", "indent", "itertools 0.13.0", "nohash-hasher", "once_cell", "parking_lot", - "re_arrow2", + "re_arrow_util", + "re_byte_size", "re_chunk", "re_format", "re_log", "re_log_encoding", "re_log_types", "re_protos", + "re_sorbet", "re_tracing", "re_types_core", "thiserror", @@ -4782,9 +4810,7 @@ dependencies = [ [[package]] name = "re_crash_handler" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bdf77e0a0c1310fa5c02b9d66e33b73693bbd61d44a93bcb3d58cae8a34156" +version = "0.22.0-alpha.1+dev" dependencies = [ "backtrace", "econtext", @@ -4796,9 +4822,7 @@ dependencies = [ [[package]] name = "re_entity_db" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eec319df6d68a71390aae382ae2982915c95ab3fa69bd286104e6954b46d8986" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "document-features", @@ -4807,6 +4831,7 @@ dependencies = [ "nohash-hasher", "parking_lot", "re_build_info", + "re_byte_size", "re_chunk", "re_chunk_store", "re_format", @@ -4824,36 +4849,30 @@ dependencies = [ [[package]] name = "re_error" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0adebf7ffebab798e5171717bc99f228619cdf8bb9a79806346f3c41ef7a0f3" +version = "0.22.0-alpha.1+dev" [[package]] name = "re_format" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01706f49ef1e074aca58c7161280057f74ff181199c558146585b58f23c0ecd" +version = "0.22.0-alpha.1+dev" dependencies = [ "num-traits", ] [[package]] name = "re_format_arrow" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f318b5363e4d798b08f2fa0c0135f0fd137136100000a06adae235ba368344f" +version = "0.22.0-alpha.1+dev" dependencies = [ + "arrow", "comfy-table", - "re_arrow2", + "itertools 0.13.0", + "re_arrow_util", "re_tuid", "re_types_core", ] [[package]] name = "re_int_histogram" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd1fc768a59b0ffd7178cf592d6290f48346ade4adb930862f2c7d83ded2d32" +version = "0.22.0-alpha.1+dev" dependencies = [ "smallvec", "static_assertions", @@ -4861,9 +4880,7 @@ dependencies = [ [[package]] name = "re_log" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd546fa37286a0114641cf7b271eca4bce3b4a20041ca378fb3530b8dc947b8" +version = "0.22.0-alpha.1+dev" dependencies = [ "env_logger", "js-sys", @@ -4876,10 +4893,10 @@ dependencies = [ [[package]] name = "re_log_encoding" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ddf1fbcb460622f305711563047d1f04ca248f0dca046dbba19b4b6df51424" +version = "0.22.0-alpha.1+dev" dependencies = [ + "arrow", + "bytes", "lz4_flex", "parking_lot", "re_arrow2", @@ -4892,16 +4909,17 @@ dependencies = [ "re_tracing", "rmp-serde", "thiserror", + "tokio", + "tokio-stream", ] [[package]] name = "re_log_types" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a48047201720a8d950910b2d90471d36b05a4fc581d3b4c4ec1856c939d9a39" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "anyhow", + "arrow", "backtrace", "bytemuck", "clean-path", @@ -4914,10 +4932,11 @@ dependencies = [ "num-derive", "num-traits", "re_arrow2", + "re_arrow_util", "re_build_info", + "re_byte_size", "re_format", "re_log", - "re_protos", "re_string_interner", "re_tracing", "re_tuid", @@ -4943,9 +4962,7 @@ dependencies = [ [[package]] name = "re_memory" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec4106e54dde4835fc601458283c02a783f8fa5bfd5b010c74e7bf251c3bf83e" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "backtrace", @@ -4980,11 +4997,15 @@ dependencies = [ [[package]] name = "re_protos" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f75d9831745a5944ef6a338cc3cc06f8d39a83506f943896eaf602ab1166c4" +version = "0.22.0-alpha.1+dev" dependencies = [ + "arrow", "prost", + "re_build_info", + "re_byte_size", + "re_log_types", + "re_sorbet", + "re_tuid", "thiserror", "tonic", "tonic-web-wasm-client", @@ -4992,19 +5013,19 @@ dependencies = [ [[package]] name = "re_query" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9c7b7cd2bcd4ee1f2bdfaba50f10af72baca0ac44fb7865618f7108cd0e7f7b" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "anyhow", + "arrow", "backtrace", "indent", "itertools 0.13.0", "nohash-hasher", "parking_lot", "paste", - "re_arrow2", + "re_arrow_util", + "re_byte_size", "re_chunk", "re_chunk_store", "re_error", @@ -5019,9 +5040,7 @@ dependencies = [ [[package]] name = "re_sdk" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c3b408455022a5cbbfe3a36e0006eb87c07b3b63dd55f14ff01cfe0e7de902f" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "crossbeam", @@ -5031,9 +5050,9 @@ dependencies = [ "nohash-hasher", "once_cell", "parking_lot", - "re_arrow2", "re_build_info", "re_build_tools", + "re_byte_size", "re_chunk", "re_log", "re_log_encoding", @@ -5046,9 +5065,7 @@ dependencies = [ [[package]] name = "re_sdk_comms" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2eb73d054d2bea611e6eb5c8aba1e1b25010a46c834cbc545a9855dd9c0a8" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "crossbeam", @@ -5063,9 +5080,7 @@ dependencies = [ [[package]] name = "re_smart_channel" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7d07784b8939f05364f526590fc7aa3d3a43797f31db0a0492a279046f7d690" +version = "0.22.0-alpha.1+dev" dependencies = [ "crossbeam", "parking_lot", @@ -5074,11 +5089,20 @@ dependencies = [ "web-time", ] +[[package]] +name = "re_sorbet" +version = "0.22.0-alpha.1+dev" +dependencies = [ + "arrow", + "re_log", + "re_log_types", + "re_types_core", + "thiserror", +] + [[package]] name = "re_string_interner" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10218faacf52f7453a6fda036d4418907e3465229e9ec32bf662c181e6b365c0" +version = "0.22.0-alpha.1+dev" dependencies = [ "ahash", "nohash-hasher", @@ -5090,32 +5114,26 @@ dependencies = [ [[package]] name = "re_tracing" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6112ec08a39f169bdf843ffb318872c909038effde68e67e1b0b19ffa3f380c1" +version = "0.22.0-alpha.1+dev" dependencies = [ "puffin", ] [[package]] name = "re_tuid" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fab74c48f17a4a29b29e1184f690c4470f0f34126eedd5051868afc8e908af" +version = "0.22.0-alpha.1+dev" dependencies = [ "document-features", "getrandom", "once_cell", - "re_protos", + "re_byte_size", "serde", "web-time", ] [[package]] name = "re_types" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8969f3feb653267d32b3a50272adebd2b36e874572a591e61fa1081418a49ec3" +version = "0.22.0-alpha.1+dev" dependencies = [ "anyhow", "array-init", @@ -5136,8 +5154,9 @@ dependencies = [ "once_cell", "ply-rs", "rayon", - "re_arrow2", "re_build_tools", + "re_byte_size", + "re_error", "re_format", "re_log", "re_log_types", @@ -5152,9 +5171,7 @@ dependencies = [ [[package]] name = "re_types_builder" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d9a754673bb2a1a08266d32797cf429394dca0bf80c5d13594d6d7d207f9e11" +version = "0.22.0-alpha.1+dev" dependencies = [ "anyhow", "arrow", @@ -5185,9 +5202,7 @@ dependencies = [ [[package]] name = "re_types_core" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ba9a0b66c99a435560675ff422da8e5ee9f42eaf6bf9daae75a0cc9a084573" +version = "0.22.0-alpha.1+dev" dependencies = [ "anyhow", "arrow", @@ -5198,22 +5213,21 @@ dependencies = [ "itertools 0.13.0", "nohash-hasher", "once_cell", - "re_arrow2", + "re_arrow_util", + "re_byte_size", "re_case", "re_error", + "re_log", "re_string_interner", "re_tracing", "re_tuid", "serde", - "smallvec", "thiserror", ] [[package]] name = "re_video" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6626e79ef75582a27d3610ed777cfb12e928446dbccf5fec518a503e2c365e" +version = "0.22.0-alpha.1+dev" dependencies = [ "bit-vec 0.8.0", "cfg_aliases 0.2.1", @@ -5320,23 +5334,24 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "rerun" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "620b001ee2d8f6187e2c91ef2726379a29eb4d89c440aab8ed0bba886d9d4c83" +version = "0.22.0-alpha.1+dev" dependencies = [ "anyhow", + "arrow", "document-features", "itertools 0.13.0", "puffin", "rayon", "re_build_info", "re_build_tools", + "re_byte_size", "re_capabilities", "re_chunk", "re_crash_handler", "re_entity_db", "re_error", "re_format", + "re_format_arrow", "re_log", "re_log_encoding", "re_log_types", @@ -5351,7 +5366,7 @@ dependencies = [ [[package]] name = "revy" -version = "0.21.0" +version = "0.22.0" dependencies = [ "bevy", "itertools 0.13.0", @@ -5831,6 +5846,12 @@ dependencies = [ "slotmap", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "tempfile" version = "3.14.0" @@ -6390,20 +6411,21 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", @@ -6415,9 +6437,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -6428,9 +6450,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6438,9 +6460,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -6451,9 +6473,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" @@ -6470,9 +6495,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index fbed972..1624730 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revy" -version = "0.21.0" +version = "0.22.0" authors = ["rerun.io "] categories = [ "game-development", @@ -25,11 +25,17 @@ targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"] [dependencies] -rerun = { version = "0.21.0", default-features = false, features = [ +rerun = { path = "/home/cmc/dev/rerun-io/rerun/crates/top/rerun", default-features = false, features = [ "sdk", "image", "glam", ] } +# TODO +# rerun = { version = "0.22.0", default-features = false, features = [ +# "sdk", +# "image", +# "glam", +# ] } bevy = { version = "0.15" } # bevy = { path = "../../bevyengine/bevy/" } # `dynamic_linking` on windows hits error for maximum number of exported symbols on linking. diff --git a/README.md b/README.md index 7c95438..81b0873 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,11 @@ https://github.com/rerun-io/revy/assets/2910679/cd096cbe-5e68-4acf-8010-e6c32c55 ## Usage -1. [Install the Rerun Viewer](https://www.rerun.io/docs/getting-started/installing-viewer) (`0.21`). +1. [Install the Rerun Viewer](https://www.rerun.io/docs/getting-started/installing-viewer) (`0.22`). 2. Add `revy` to your dependencies: ```toml - revy = "0.21" # always matches the rerun version + revy = "0.22" # always matches the rerun version ``` 3. Initialize the `rerun` plugin: @@ -106,3 +106,4 @@ You can also register your own custom loggers by inserting a `RerunComponentLogg | [0.14](https://github.com/bevyengine/bevy/releases/tag/v0.14.0) | [0.17](https://github.com/rerun-io/revy/releases/tag/0.17.0) | [0.17](https://github.com/rerun-io/rerun/releases/tag/0.17.0) | | [0.15](https://github.com/bevyengine/bevy/releases/tag/v0.15.0) | [0.20](https://github.com/rerun-io/revy/releases/tag/0.20.0) | [0.20](https://github.com/rerun-io/rerun/releases/tag/0.20.0) | | [0.15](https://github.com/bevyengine/bevy/releases/tag/v0.15.0) | [0.21](https://github.com/rerun-io/revy/releases/tag/0.21.0) | [0.21](https://github.com/rerun-io/rerun/releases/tag/0.21.0) | +| [0.15](https://github.com/bevyengine/bevy/releases/tag/v0.15.0) | [0.22](https://github.com/rerun-io/revy/releases/tag/0.22.0) | [0.22](https://github.com/rerun-io/rerun/releases/tag/0.22.0) | diff --git a/src/default_loggers.rs b/src/default_loggers.rs index becae40..8072a0d 100644 --- a/src/default_loggers.rs +++ b/src/default_loggers.rs @@ -2,10 +2,11 @@ use bevy::{ ecs::component::ComponentInfo, prelude::*, render::{mesh::PlaneMeshBuilder, primitives::Aabb}, - utils::HashMap, }; -use crate::{compute_entity_path, Aliased, RerunLogger, ToRerun}; +use rerun::{external::nohash_hasher::IntMap, AsComponents as _, ComponentBatch}; + +use crate::{compute_entity_path, RerunLogger, ToRerun}; // --- @@ -15,13 +16,13 @@ use crate::{compute_entity_path, Aliased, RerunLogger, ToRerun}; /// /// Public so end users can easily inspect what is configured by default. #[derive(Resource, Deref, DerefMut, Clone, Debug)] -pub struct DefaultRerunComponentLoggers(HashMap>); +pub struct DefaultRerunComponentLoggers(IntMap>); // TODO(cmc): DataUi being typed makes aliases uninspectable :( #[allow(clippy::too_many_lines)] impl Default for DefaultRerunComponentLoggers { fn default() -> Self { - let mut loggers = HashMap::default(); + let mut loggers = IntMap::default(); loggers.insert( "bevy_transform::components::transform::Transform".into(), @@ -81,20 +82,23 @@ impl Default for DefaultRerunComponentLoggers { // --- +// TODO(cmc): all those aliasing reshenanigans should really just be custom archetype names in +// the descriptor, but the viewer won't be ready for that in 0.22. + fn bevy_transform<'w>( _world: &'w World, _all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, _component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { - let suffix = None; - - let data = entity - .get::() - .map(|transform| transform.to_rerun()) - .map(|data| Box::new(data) as _); - - (suffix, data) +) -> (Option<&'static str>, Vec) { + ( + None, + entity + .get::() + .into_iter() + .flat_map(|transform| transform.to_rerun().as_serialized_batches()) + .collect(), + ) } fn bevy_global_transform<'w>( @@ -102,27 +106,26 @@ fn bevy_global_transform<'w>( _all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, _component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { let suffix = None; - // TODO(cmc): once again the DataUi does the wrong thing... we really need to // go typeless. - let data = entity.get::().map(|transform| { - Box::new(vec![ - Box::new(Aliased::::new( - "GlobalTransform3D.translation", - transform.translation().to_rerun(), - )) as Box, - Box::new(Aliased::::new( - "GlobalTransform3D.rotation", - transform.rotation().to_rerun(), - )), - Box::new(Aliased::::new( - "GlobalTransform3D.scale", - transform.scale().to_rerun(), - )), - ]) as _ - }); + let data = entity + .get::() + .into_iter() + .flat_map(|transform| { + transform + .to_rerun() + .as_serialized_batches() + .into_iter() + .map(|batch| { + let name = batch.descriptor.component_name; + batch.with_descriptor_override(rerun::ComponentDescriptor::new(format!( + "{name}Global" + ))) + }) + }) + .collect(); (suffix, data) } @@ -133,13 +136,13 @@ fn bevy_mesh<'w>( entity: EntityRef<'_>, _component: &'w ComponentInfo, handle: Option<&Handle>, -) -> (Option<&'static str>, Option>) { - let suffix: Option<&str> = None; - - let data = handle +) -> (Option<&'static str>, Vec) { + let suffix = None; + let batches = handle .and_then(|handle| world.resource::>().get(handle)) .and_then(ToRerun::to_rerun) - .map(|mut mesh| { + .into_iter() + .flat_map(|mut mesh| { if let Some(mat) = entity .get::>() .and_then(|handle| world.resource::>().get(handle)) @@ -161,11 +164,10 @@ fn bevy_mesh<'w>( mesh = mesh.with_albedo_texture(image_format, image_data); } } - mesh + mesh.as_serialized_batches() }) - .map(|mesh| Box::new(mesh) as _); - - (suffix, data) + .collect(); + (suffix, batches) } fn bevy_mesh2d<'w>( @@ -173,16 +175,16 @@ fn bevy_mesh2d<'w>( all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { let suffix = Some("mesh2d"); - let (_, data) = bevy_mesh( + let (_, batches) = bevy_mesh( world, all_entities, entity, component, entity.get::().map(|handle| &handle.0), ); - (suffix, data) + (suffix, batches) } fn bevy_mesh3d<'w>( @@ -190,16 +192,16 @@ fn bevy_mesh3d<'w>( all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { let suffix = Some("mesh3d"); - let (_, data) = bevy_mesh( + let (_, batches) = bevy_mesh( world, all_entities, entity, component, entity.get::().map(|handle| &handle.0), ); - (suffix, data) + (suffix, batches) } fn bevy_camera<'w, C: Component + ToRerun>( @@ -207,14 +209,15 @@ fn bevy_camera<'w, C: Component + ToRerun>( _all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, _component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { let suffix = Some("cam"); - let data = entity + let batches = entity .get::() // TODO(cmc): log visible entities too? - .map(ToRerun::to_rerun) - .map(|mesh| Box::new(mesh) as _); - (suffix, data) + .into_iter() + .flat_map(|mesh| mesh.to_rerun().as_serialized_batches()) + .collect(); + (suffix, batches) } fn bevy_projection<'w>( @@ -222,7 +225,7 @@ fn bevy_projection<'w>( all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { bevy_camera::(world, all_entities, entity, component) } @@ -231,7 +234,7 @@ fn bevy_projection_orthographic<'w>( all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { bevy_camera::(world, all_entities, entity, component) } @@ -240,7 +243,7 @@ fn bevy_projection_perspective<'w>( all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { bevy_camera::(world, all_entities, entity, component) } @@ -250,10 +253,9 @@ fn bevy_sprite<'w>( _all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, _component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { let suffix = Some("sprite"); - - let data = entity + let batches = entity .get::() .and_then(|sprite| { world @@ -271,9 +273,10 @@ fn bevy_sprite<'w>( }) }) }) - .map(|data| Box::new(data) as _); - - (suffix, data) + .into_iter() + .flat_map(|mesh| mesh.as_serialized_batches()) + .collect(); + (suffix, batches) } fn bevy_aabb<'w>( @@ -281,9 +284,9 @@ fn bevy_aabb<'w>( _all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, _component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { let suffix = Some("aabb"); - let data = entity + let batches = entity .get::() .map(|aabb| { rerun::Boxes3D::from_centers_and_half_sizes( @@ -308,9 +311,10 @@ fn bevy_aabb<'w>( aabb } }) - .map(|data| Box::new(data) as _); - - (suffix, data) + .into_iter() + .flat_map(|aabb| aabb.as_serialized_batches()) + .collect(); + (suffix, batches) } fn bevy_parent<'w>( @@ -318,19 +322,21 @@ fn bevy_parent<'w>( all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, _component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { let suffix = None; - let data = entity + let batches = entity .get::() - .map(|parent| { + .and_then(|parent| { let parent_entity_path = compute_entity_path(world, all_entities, parent.get()); - Aliased::::new( - "Parent", - rerun::datatypes::EntityPath(parent_entity_path.to_string().into()), - ) + rerun::components::EntityPath(parent_entity_path.to_string().into()) + .serialized() + .map(|batch| { + batch.with_descriptor_override(rerun::ComponentDescriptor::new("Parent")) + }) }) - .map(|data| Box::new(data) as _); - (suffix, data) + .into_iter() + .collect(); + (suffix, batches) } fn bevy_children<'w>( @@ -338,43 +344,26 @@ fn bevy_children<'w>( all_entities: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, entity: EntityRef<'_>, _component: &'w ComponentInfo, -) -> (Option<&'static str>, Option>) { +) -> (Option<&'static str>, Vec) { let suffix = None; - - // TODO(cmc): it is once again super annoying that number of instances gets resolved at logging - // time... we need those clamp-to-edge semantics asap. - // let data = entity - // .get::() - // .map(|children| { - // let children = children - // .iter() - // .map(|entity_id| { - // rerun::datatypes::EntityPath( - // compute_entity_path(world, all_entities, *entity_id) - // .to_string() - // .into(), - // ) - // }) - // .collect::>(); - // Aliased::>::new( - // "RawChildren", - // children, - // ) - // }) - // .map(|data| Box::new(data) as _); - - let data = entity + let batches = entity .get::() - .map(|children| { + .and_then(|children| { let children = children .iter() - .map(|entity_id| compute_entity_path(world, all_entities, *entity_id).to_string()) + .map(|entity_id| { + rerun::components::EntityPath( + compute_entity_path(world, all_entities, *entity_id) + .to_string() + .into(), + ) + }) .collect::>(); - Aliased::::new( - "RawChildren", - rerun::components::Text(children.join("\n").into()), - ) + children.serialized().map(|batch| { + batch.with_descriptor_override(rerun::ComponentDescriptor::new("Children")) + }) }) - .map(|data| Box::new(data) as _); - (suffix, data) + .into_iter() + .collect(); + (suffix, batches) } diff --git a/src/lib.rs b/src/lib.rs index a1a564e..d5e5664 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -32,7 +32,7 @@ pub use self::conversions::ToRerun; pub use self::default_loggers::DefaultRerunComponentLoggers; pub use self::entity_path::{ancestors_from_world, compute_entity_path}; pub use self::rerun_logger::{ - get_component_logger, Aliased, RerunComponentLoggers, RerunLogger, RerunLoggerFn, + get_component_logger, RerunComponentLoggers, RerunLogger, RerunLoggerFn, }; pub(crate) use self::sync::RerunSyncPlugin; diff --git a/src/rerun_logger.rs b/src/rerun_logger.rs index 70a85b4..c1f51be 100644 --- a/src/rerun_logger.rs +++ b/src/rerun_logger.rs @@ -6,6 +6,7 @@ use bevy::{ reflect::{serde::ReflectSerializer, ReflectFromPtr}, utils::HashMap, }; +use rerun::ComponentBatch; use crate::DefaultRerunComponentLoggers; @@ -24,7 +25,7 @@ pub trait RerunLoggerFn: &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, EntityRef<'_>, &'w ComponentInfo, - ) -> (Option<&'static str>, Option>) + ) -> (Option<&'static str>, Vec) { } @@ -36,7 +37,7 @@ impl RerunLoggerFn for F where &'w QueryState<(Entity, Option<&'w Parent>, Option<&'w Name>)>, EntityRef<'_>, &'w ComponentInfo, - ) -> (Option<&'static str>, Option>) + ) -> (Option<&'static str>, Vec) { } @@ -136,13 +137,22 @@ pub fn get_component_logger<'a>( _all_entities: &QueryState<(Entity, Option<&Parent>, Option<&Name>)>, entity: EntityRef<'_>, component: &ComponentInfo, - ) -> (Option<&'static str>, Option>) { + ) -> (Option<&'static str>, Vec) { let name = component.name(); let body = component_to_ron(world, entity, component) .unwrap_or_else(|| "".into()); - let reflected = Aliased::::new(name.replace("::", "."), body); - - (None, Some(Box::new(reflected) as _)) + ( + None, + rerun::components::Text(body.into()) + .serialized() + .into_iter() + .map(|batch| { + batch.with_descriptor_override(rerun::ComponentDescriptor::new( + name.replace("::", "."), + )) + }) + .collect(), + ) } static LOG_IGNORED_COMPONENT: RerunLogger = RerunLogger::new_static(&log_ignored_component); @@ -177,52 +187,3 @@ fn component_to_ron( }) }) } - -// --- - -// TODO(cmc): Rerun should provide tools for this. -// TODO(cmc): All this traits are very messy... CompomnentName vs. DatatypeName in particular is -// very annoying. Actually just Component vs. Datatype being different types in general is very -// annoying. -// TODO(cmc): the whole Loggable vs. LoggableBatch is also so messy - -use rerun::external::{arrow2, re_types_core}; - -/// Helper to log any [`rerun::LoggableBatch`] as a [`rerun::Component`] with the specified name. -#[derive(Debug)] -pub struct Aliased { - descriptor: rerun::ComponentDescriptor, - data: C, -} - -impl Aliased { - pub fn new(name: impl Into, data: impl Into) -> Self { - Self { - descriptor: rerun::ComponentDescriptor::new(name.into()), - data: data.into(), - } - } -} - -impl rerun::AsComponents for Aliased { - #[inline] - fn as_component_batches(&self) -> Vec> { - vec![rerun::ComponentBatchCowWithDescriptor::new( - self as &dyn rerun::ComponentBatch, - )] - } -} - -impl rerun::LoggableBatch for Aliased { - #[inline] - fn to_arrow2(&self) -> re_types_core::SerializationResult> { - self.data.to_arrow2() - } -} - -impl rerun::ComponentBatch for Aliased { - #[inline] - fn descriptor(&self) -> std::borrow::Cow<'_, rerun::ComponentDescriptor> { - std::borrow::Cow::Borrowed(&self.descriptor) - } -} diff --git a/src/sync.rs b/src/sync.rs index e9e9eb0..4f4887e 100644 --- a/src/sync.rs +++ b/src/sync.rs @@ -36,7 +36,7 @@ pub struct RerunSyncPlugin { impl Plugin for RerunSyncPlugin { fn build(&self, app: &mut App) { self.rec - .log_static("world", &rerun::ViewCoordinates::RIGHT_HAND_Y_UP) + .log_static("world", &rerun::ViewCoordinates::RIGHT_HAND_Y_UP()) .ok_or_log_error(); let state = RerunSyncState { @@ -161,8 +161,10 @@ fn sync_components( .get::() .unwrap_or(&empty_hashes); - let mut as_components: HashMap, Vec>> = - Default::default(); + let mut all_batches: HashMap< + Option<&'static str>, + Vec>, + > = Default::default(); for component in world.inspect_entity(entity_id) { let mut has_changed = entity .get_change_ticks_by_id(component.id()) @@ -196,8 +198,8 @@ fn sync_components( if let Some(logger) = get_component_logger(component, loggers.as_ref(), &default_loggers) { - let (suffix, data) = logger(world, &all_entities, entity, component); - as_components.entry(suffix).or_default().extend(data); + let (suffix, batches) = logger(world, &all_entities, entity, component); + all_batches.entry(suffix).or_default().push(batches); } } @@ -207,15 +209,7 @@ fn sync_components( let mut current_components = HashMap::default(); - // TODO(cmc): lots of inneficiencies and awkward collections that are forced upon us - // because of how the RecordingStream API is designed. - // After quite a bit of juggling it's not too bad though. - for (suffix, as_components) in as_components { - let component_batches = as_components - .iter() - .map(|data| data.as_component_batches()) - .collect::>(); - + for (suffix, batches) in all_batches { let entity_path: rerun::EntityPath = suffix.map_or_else( || entity_path.clone(), // NOTE(cmc): The extra `comps/` is crucial so that we can easily clear everything @@ -223,24 +217,13 @@ fn sync_components( |suffix| entity_path.join(&"comps".into()).join(&suffix.into()), ); - for batches in &component_batches { + for batches in &batches { for batch in batches { - current_components.insert( - rerun::ComponentBatch::descriptor(batch).into_owned(), - entity_path.clone(), - ); + current_components.insert(batch.descriptor.clone(), entity_path.clone()); } } - rec.log_component_batches( - entity_path, - false, - component_batches - .iter() - .flatten() - .map(|batch| batch as &dyn rerun::ComponentBatch), - ) - .ok_or_log_error(); + rec.log(entity_path, &batches).ok_or_log_error(); } let empty_components = CurrentComponents::default();