From c9b746453832b8eb6cda13147543157f718bb6d5 Mon Sep 17 00:00:00 2001 From: sevki Date: Wed, 29 May 2024 15:00:20 +0100 Subject: [PATCH] update readme, breakup features --- .rust-toolchain.toml | 9 + Cargo.lock | 300 ++++++++++++++---------------- Cargo.toml | 20 +- README.md | 6 + ok_macros/Cargo.toml | 4 +- ok_macros/src/func_transformer.rs | 55 +----- ok_macros/src/lib.rs | 2 - src/lib.rs | 20 +- src/oklog.rs | 35 +++- src/{notokpanic.rs => okpanic.rs} | 25 +-- 10 files changed, 214 insertions(+), 262 deletions(-) create mode 100644 .rust-toolchain.toml rename src/{notokpanic.rs => okpanic.rs} (91%) diff --git a/.rust-toolchain.toml b/.rust-toolchain.toml new file mode 100644 index 0000000..1045010 --- /dev/null +++ b/.rust-toolchain.toml @@ -0,0 +1,9 @@ + +[toolchain] +channel = "1.78" +components = ["rust-src", "rustc-dev", "llvm-tools-preview"] +targets = [ + "wasm32-unknown-unknown", + "x86_64-unknown-linux-musl", + "x86_64-unknown-linux-gnu", +] diff --git a/Cargo.lock b/Cargo.lock index cbf03cf..1c35740 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,11 +4,11 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ - "gimli", + "gimli 0.29.0", ] [[package]] @@ -28,9 +28,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "arrayvec" @@ -40,15 +40,15 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" dependencies = [ "addr2line", "cc", @@ -62,9 +62,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64-simd" @@ -87,6 +87,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + [[package]] name = "bitvec" version = "1.0.1" @@ -122,9 +128,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" [[package]] name = "cfg-if" @@ -178,60 +184,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff" [[package]] -name = "crc32fast" -version = "1.4.0" +name = "crc32_digest" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "45d5efbc16ba04a6c1691aee22f18e9cce02fb7b7bdf85296d99139389b41983" +dependencies = [ + "crc32fast", + "digest", + "generic-array", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" - -[[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 1.0.109", -] - -[[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 1.0.109", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "data-encoding" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "debugid" @@ -243,6 +225,15 @@ dependencies = [ "uuid", ] +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array", +] + [[package]] name = "dmsort" version = "1.0.2" @@ -306,20 +297,14 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4556222738635b7a3417ae6130d8f52201e45a0c4d1a907f0826383adb5f85e7" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", ] -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "form_urlencoded" version = "1.2.1" @@ -391,7 +376,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.63", + "syn", ] [[package]] @@ -424,6 +409,15 @@ dependencies = [ "slab", ] +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + [[package]] name = "gimli" version = "0.28.1" @@ -434,6 +428,12 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + [[package]] name = "glob" version = "0.3.1" @@ -453,9 +453,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hermit-abi" @@ -469,12 +469,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "idna" version = "0.5.0" @@ -560,15 +554,15 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -609,9 +603,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] @@ -633,7 +627,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfb67c6dd0fa9b00619c41c5700b6f92d5f418be49b45ddb9970fbd4569df3c8" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -677,33 +671,32 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" dependencies = [ "memchr", ] [[package]] name = "ok_macros" -version = "0.1.6" +version = "0.1.9" dependencies = [ - "darling", "proc-macro2", "quote", - "slog", - "syn 2.0.63", + "syn", ] [[package]] name = "okstd" -version = "0.1.6" +version = "0.1.9" dependencies = [ "anyhow", "backtrace", "base64", "colored 2.1.0", "crc16", + "crc32_digest", "fastvlq", "fern", "futures", @@ -736,9 +729,9 @@ checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -746,15 +739,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -774,7 +767,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4e89a9f2f40b2389ba6da0814c8044bf942bece03dffa1514f84e3b525f4f9a" dependencies = [ - "bitflags", + "bitflags 1.3.2", "elsa", "maybe-owned", "pdb", @@ -823,9 +816,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" dependencies = [ "unicode-ident", ] @@ -858,11 +851,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags", + "bitflags 2.5.0", ] [[package]] @@ -896,9 +889,9 @@ checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -917,9 +910,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scopeguard" @@ -944,7 +937,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.63", + "syn", ] [[package]] @@ -958,9 +951,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "semver-parser" @@ -970,29 +963,29 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.199" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.199" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.63", + "syn", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", @@ -1001,18 +994,18 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -1041,12 +1034,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "slog" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" - [[package]] name = "smallvec" version = "1.13.2" @@ -1055,9 +1042,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1102,12 +1089,6 @@ dependencies = [ "serde", ] -[[package]] -name = "strsim" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" - [[package]] name = "symbolic" version = "12.8.0" @@ -1145,7 +1126,7 @@ dependencies = [ "elsa", "fallible-iterator 0.3.0", "flate2", - "gimli", + "gimli 0.28.1", "goblin", "lazy_static", "nom", @@ -1210,20 +1191,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.109" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -1247,22 +1217,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.63", + "syn", ] [[package]] @@ -1307,14 +1277,14 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.63", + "syn", ] [[package]] name = "toml" -version = "0.8.12" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" dependencies = [ "serde", "serde_spanned", @@ -1324,18 +1294,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.12" +version = "0.22.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" dependencies = [ "indexmap", "serde", @@ -1363,7 +1333,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.63", + "syn", ] [[package]] @@ -1389,6 +1359,12 @@ dependencies = [ "toml", ] +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -1446,7 +1422,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77f1154f1ab868e2a01d9834a805faca7bf8b50d041b4ca714d005d0dab1c50c" dependencies = [ "indexmap", - "semver 1.0.22", + "semver 1.0.23", ] [[package]] @@ -1477,11 +1453,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1631,9 +1607,9 @@ checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index c69b441..402c24e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,13 +1,16 @@ [package] name = "okstd" -version = "0.1.6" +version = "0.1.9" edition = "2021" +[lib] +crate-type = ["cdylib", "rlib"] + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] -unstable = ["dep:symbolic", "dep:sourcemap"] - +unstable = ["dep:symbolic", "dep:sourcemap", "dep:backtrace", "macros" ] +macros = ["dep:ok_macros"] [dependencies] symbolic = { version = "12.8.0", features = [ @@ -17,27 +20,30 @@ symbolic = { version = "12.8.0", features = [ "symcache", "debuginfo", ], optional = true } + +crc32_digest = "0.8.1" sourcemap = { version = "8.0.1", optional = true } anyhow = "1.0.81" -backtrace = { version = "0.3.71", features = ["serde", "serialize-serde"] } +backtrace = { version = "0.3.71", features = ["serde", "serialize-serde"], optional = true } base64 = "0.22.0" crc16 = "0.4.0" fastvlq = "1.1.1" futures = "0.3.30" hex = "0.4.3" num_cpus = "1.16.0" -ok_macros = { version = "0.1.6", path = "ok_macros", registry = "oksoftware" } +ok_macros = { version = "0.1.9", path = "ok_macros", registry = "oksoftware", optional = true } rustc-demangle = "0.1.23" serde = "*" serde_json = "*" log = "0.4" colored = "2" fern = { version = "0.6", features = ["colored"] } - termcolor = "1.4.1" -tokio = { version = "1.37.0", features = ["full"] } url = "2.5.0" +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +tokio = { version = "1.37.0", features = ["full"] } + [workspace] members = ["integration", "ok_macros"] diff --git a/README.md b/README.md index ea08694..453c371 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ Standards that are OK. +## Motivation + +Rust's ecosystem is known for its vibrant community and wealth of high-quality crates. However, this abundance has led to some fragmentation, especially when it comes to foundational aspects like asynchronous programming, I/O, and logging. Developers are often faced with choosing between multiple ways of handling async code (e.g., async-std, tokio, smol, surf), several approaches to async I/O, and numerous logging frameworks (e.g., log, env_logger, pretty_env_logger, femme, flexi_logger). While having options is valuable, it can also lead to decision paralysis and make it harder to build an ecosystem of interoperable libraries and frameworks. + +This is the crate when we reach for when we need such primitives, essentially the "Battery Included" crate. + ## Getting Started ```bash diff --git a/ok_macros/Cargo.toml b/ok_macros/Cargo.toml index 3563f75..497b5c9 100644 --- a/ok_macros/Cargo.toml +++ b/ok_macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ok_macros" -version = "0.1.6" +version = "0.1.9" edition = "2021" @@ -12,6 +12,4 @@ proc-macro = true [dependencies] syn = { version = "2.0.63", features = ["full", "extra-traits", "visit-mut"] } quote = "^1" -darling = "0.10.0" proc-macro2 = "1.0.3" -slog = "2.7.0" diff --git a/ok_macros/src/func_transformer.rs b/ok_macros/src/func_transformer.rs index d1105de..8d78c6e 100644 --- a/ok_macros/src/func_transformer.rs +++ b/ok_macros/src/func_transformer.rs @@ -93,25 +93,7 @@ pub fn setup_logging( } -/// setup panic hook for crashdu.mp -/// similar to log, we just want to setup the panic hook -/// and keep the function as is -/// -/// # Example -/// -/// ```rust,notest -/// #[okstd::crashdump] -/// fn does_something() { -/// // do something -/// } -///``` -/// to -/// ```rust,notest -/// fn does_something() { -/// setup_panic_hook(); -/// // do something -/// } -/// ``` + pub fn setup_panic_hook( _args: proc_macro::TokenStream, input: proc_macro::TokenStream, @@ -152,38 +134,7 @@ pub fn setup_panic_hook( TokenStream::from(result) } -/// testing -/// take a function and if it's not async, just add the #[test] attribute -/// if it's async, add the #[test] attribute and setup the runtime -/// take the previous function body then pass it into block_on as -/// a closure -/// ```rust,notest -/// #[okstd::test] -/// fn does_something() { -/// // do something -/// } -/// ``` -/// to -/// ```rust,notest -/// #[test] -/// fn does_something() { -/// // do something -/// } -/// ``` -/// or -/// ```rust,notest -/// #[okstd::test] -/// async fn does_something() { -/// // do something -/// } -/// ``` -/// to -/// ```rust,notest -/// #[test] -/// fn does_something() { -/// Runtimes::setup_runtimes().unwrap().block_on(async #body) -/// } -/// ``` + pub fn test( _args: proc_macro::TokenStream, input: proc_macro::TokenStream, @@ -192,7 +143,7 @@ pub fn test( let fn_name = &item_fn.clone().sig.ident; - let attrs: &Vec = &item_fn.attrs; + let _attrs: &Vec = &item_fn.attrs; let asyncness: &Option = &item_fn.sig.asyncness; let generics: &syn::Generics = &item_fn.sig.generics; let inputs: &Punctuated = &item_fn.sig.inputs; diff --git a/ok_macros/src/lib.rs b/ok_macros/src/lib.rs index f44b225..35dd0c8 100644 --- a/ok_macros/src/lib.rs +++ b/ok_macros/src/lib.rs @@ -1,6 +1,4 @@ #![recursion_limit = "128"] -extern crate proc_macro; -extern crate syn; use proc_macro::TokenStream; use quote::quote; diff --git a/src/lib.rs b/src/lib.rs index e654e28..b9a121d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,10 +1,10 @@ -//! - pub mod oklog; +// if not wasm +#[cfg(not(target_arch = "wasm32"))] pub mod okasync; #[cfg(feature = "unstable")] -pub mod notokpanic; +pub mod okpanic; mod e2e_tests; extern crate fern; @@ -12,11 +12,14 @@ extern crate fern; use log as rustlog; pub mod prelude { + #[cfg(not(target_arch = "wasm32"))] pub use crate::okasync::*; pub use crate::oklog::setup_logging; + #[cfg(feature = "macros")] pub use super::main; + #[cfg(feature = "macros")] pub use super::log; // re-export the slog macros @@ -28,16 +31,21 @@ pub mod prelude { pub use crate::rustlog::warn; pub use crate::rustlog::LevelFilter; - + #[cfg(feature = "macros")] pub use std::panic::set_hook; - + #[cfg(feature = "macros")] #[cfg(feature = "unstable")] - pub use crate::notokpanic::panic_hook; + pub use crate::okpanic::panic_hook; } +#[cfg(feature = "macros")] pub use ok_macros::main; +#[cfg(feature = "macros")] pub use ok_macros::test; +#[cfg(feature = "macros")] pub use ok_macros::log; + +#[cfg(feature = "macros")] #[cfg(feature = "unstable")] pub use ok_macros::crashdump; \ No newline at end of file diff --git a/src/oklog.rs b/src/oklog.rs index 722af4d..edaacb2 100644 --- a/src/oklog.rs +++ b/src/oklog.rs @@ -5,17 +5,22 @@ use std::{io, path::PathBuf}; // get module color hashes the module name // and attempts to return a unique color as far as ansi colors go fn get_module_color(module: &str) -> colored::Color { - // crc16 is a good hash for this - let hash = crc16::State::::calculate(module.as_bytes()); - let hash = hash + 5; - match hash % 6 { + let hash = module + .chars() + .fold(0 as u32, |acc, c| acc.wrapping_add(c as u32)); + match hash % 13 { 0 => Color::Red, 1 => Color::Green, 2 => Color::Yellow, 3 => Color::Blue, 4 => Color::Magenta, 5 => Color::Cyan, - _ => Color::White, + 8 => Color::BrightRed, + 9 => Color::BrightGreen, + 10 => Color::BrightYellow, + 11 => Color::BrightBlue, + 12 => Color::BrightMagenta, + _ => Color::BrightCyan, } } @@ -39,7 +44,7 @@ pub fn setup_logging(level: log::LevelFilter) -> Result<(), fern::InitError> { out.finish(format_args!( "{} {}:{} {} {}", - format!("{}/{}", "ok.software/", module).color(module_color), + format!("{}/{}", "ok.software", module).color(module_color), loc, record.line().unwrap(), colors.color(record.level()), @@ -57,6 +62,24 @@ mod tests { use super::*; use log::info; + #[test] + fn test_module_color() { + let module = "okstd::oklog"; + let color = get_module_color(module); + println!("Module: {} Color: {:?}", module, color); + } + + #[test] + fn test_module_color_randomness_by_hash() { + let mut colors = vec![]; + for i in 0..100 { + let module = format!("okstd::oklog::{}", i); + let color = get_module_color(&module); + colors.push(color); + } + println!("Colors: {:?}", colors); + } + #[test] fn test_logging() { setup_logging(log::LevelFilter::Error).unwrap(); diff --git a/src/notokpanic.rs b/src/okpanic.rs similarity index 91% rename from src/notokpanic.rs rename to src/okpanic.rs index 32cdddf..4b09e01 100644 --- a/src/notokpanic.rs +++ b/src/okpanic.rs @@ -46,30 +46,6 @@ const WELL_KNOWN_BORDER_FRAMES: &[&str] = &[ "tracing_core::", ]; -// i64 to u64 without loss of data -fn u64(x: i64) -> u64 { - x as u64 -} - -// i64 to u64 without loss of data -fn i64(x: u64) -> i64 { - x as i64 -} - -fn uuid_to_i64(uuid: Uuid) -> (i64, i64) { - let (high, low) = uuid.as_u64_pair(); - ( - i64::from_be_bytes(high.to_ne_bytes()), - i64::from_ne_bytes(low.to_ne_bytes()), - ) -} - -fn i64_to_uuid(high: i64, low: i64) -> Uuid { - let high = u64::from_ne_bytes(high.to_ne_bytes()); - let low = u64::from_ne_bytes(low.to_ne_bytes()); - Uuid::from_u64_pair(high, low) -} - // generate_crashdump_url generates a crashdump URL for the // given addresses, current platform, architecture and debugId // buildId, commit and cargo package meta. @@ -103,6 +79,7 @@ fn encode_crashdump_url(addresses: &[i64], debug_id: DebugId) -> String { // decode_crashdump_url decodes a crashdump URL and returns the // addresses, debugId, buildId, commit and cargo package meta. +#[allow(dead_code)] fn decode_crashdump_url(url: &str) -> (Vec, DebugId) { let u = url::Url::parse(url).unwrap(); let segments = u.path_segments().unwrap().collect::>();