update readme, breakup features

This commit is contained in:
sevki 2024-05-29 15:00:20 +01:00
parent a67fcad5c0
commit c9b7464538
10 changed files with 214 additions and 262 deletions

9
.rust-toolchain.toml Normal file
View file

@ -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",
]

300
Cargo.lock generated
View file

@ -4,11 +4,11 @@ version = 3
[[package]] [[package]]
name = "addr2line" name = "addr2line"
version = "0.21.0" version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
dependencies = [ dependencies = [
"gimli", "gimli 0.29.0",
] ]
[[package]] [[package]]
@ -28,9 +28,9 @@ dependencies = [
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.82" version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
[[package]] [[package]]
name = "arrayvec" name = "arrayvec"
@ -40,15 +40,15 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.2.0" version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]] [[package]]
name = "backtrace" name = "backtrace"
version = "0.3.71" version = "0.3.72"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11"
dependencies = [ dependencies = [
"addr2line", "addr2line",
"cc", "cc",
@ -62,9 +62,9 @@ dependencies = [
[[package]] [[package]]
name = "base64" name = "base64"
version = "0.22.0" version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]] [[package]]
name = "base64-simd" name = "base64-simd"
@ -87,6 +87,12 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
[[package]] [[package]]
name = "bitvec" name = "bitvec"
version = "1.0.1" version = "1.0.1"
@ -122,9 +128,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.0.95" version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f"
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
@ -178,60 +184,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff" checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff"
[[package]] [[package]]
name = "crc32fast" name = "crc32_digest"
version = "1.4.0" version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" 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 = [ dependencies = [
"cfg-if", "cfg-if",
] ]
[[package]] [[package]]
name = "crossbeam-utils" name = "crossbeam-utils"
version = "0.8.19" version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
[[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",
]
[[package]] [[package]]
name = "data-encoding" name = "data-encoding"
version = "2.5.0" version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
[[package]] [[package]]
name = "debugid" name = "debugid"
@ -243,6 +225,15 @@ dependencies = [
"uuid", "uuid",
] ]
[[package]]
name = "digest"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
dependencies = [
"generic-array",
]
[[package]] [[package]]
name = "dmsort" name = "dmsort"
version = "1.0.2" version = "1.0.2"
@ -306,20 +297,14 @@ dependencies = [
[[package]] [[package]]
name = "flate2" name = "flate2"
version = "1.0.29" version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4556222738635b7a3417ae6130d8f52201e45a0c4d1a907f0826383adb5f85e7" checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
dependencies = [ dependencies = [
"crc32fast", "crc32fast",
"miniz_oxide", "miniz_oxide",
] ]
[[package]]
name = "fnv"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]] [[package]]
name = "form_urlencoded" name = "form_urlencoded"
version = "1.2.1" version = "1.2.1"
@ -391,7 +376,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.63", "syn",
] ]
[[package]] [[package]]
@ -424,6 +409,15 @@ dependencies = [
"slab", "slab",
] ]
[[package]]
name = "generic-array"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd"
dependencies = [
"typenum",
]
[[package]] [[package]]
name = "gimli" name = "gimli"
version = "0.28.1" version = "0.28.1"
@ -434,6 +428,12 @@ dependencies = [
"stable_deref_trait", "stable_deref_trait",
] ]
[[package]]
name = "gimli"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
[[package]] [[package]]
name = "glob" name = "glob"
version = "0.3.1" version = "0.3.1"
@ -453,9 +453,9 @@ dependencies = [
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.14.3" version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
[[package]] [[package]]
name = "hermit-abi" name = "hermit-abi"
@ -469,12 +469,6 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "ident_case"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]] [[package]]
name = "idna" name = "idna"
version = "0.5.0" version = "0.5.0"
@ -560,15 +554,15 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.153" version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]] [[package]]
name = "lock_api" name = "lock_api"
version = "0.4.11" version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"scopeguard", "scopeguard",
@ -609,9 +603,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]] [[package]]
name = "miniz_oxide" name = "miniz_oxide"
version = "0.7.2" version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"
dependencies = [ dependencies = [
"adler", "adler",
] ]
@ -633,7 +627,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfb67c6dd0fa9b00619c41c5700b6f92d5f418be49b45ddb9970fbd4569df3c8" checksum = "bfb67c6dd0fa9b00619c41c5700b6f92d5f418be49b45ddb9970fbd4569df3c8"
dependencies = [ dependencies = [
"bitflags", "bitflags 1.3.2",
] ]
[[package]] [[package]]
@ -677,33 +671,32 @@ dependencies = [
[[package]] [[package]]
name = "object" name = "object"
version = "0.32.2" version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e"
dependencies = [ dependencies = [
"memchr", "memchr",
] ]
[[package]] [[package]]
name = "ok_macros" name = "ok_macros"
version = "0.1.6" version = "0.1.9"
dependencies = [ dependencies = [
"darling",
"proc-macro2", "proc-macro2",
"quote", "quote",
"slog", "syn",
"syn 2.0.63",
] ]
[[package]] [[package]]
name = "okstd" name = "okstd"
version = "0.1.6" version = "0.1.9"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"backtrace", "backtrace",
"base64", "base64",
"colored 2.1.0", "colored 2.1.0",
"crc16", "crc16",
"crc32_digest",
"fastvlq", "fastvlq",
"fern", "fern",
"futures", "futures",
@ -736,9 +729,9 @@ checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4"
[[package]] [[package]]
name = "parking_lot" name = "parking_lot"
version = "0.12.1" version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
dependencies = [ dependencies = [
"lock_api", "lock_api",
"parking_lot_core", "parking_lot_core",
@ -746,15 +739,15 @@ dependencies = [
[[package]] [[package]]
name = "parking_lot_core" name = "parking_lot_core"
version = "0.9.9" version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"libc", "libc",
"redox_syscall", "redox_syscall",
"smallvec", "smallvec",
"windows-targets 0.48.5", "windows-targets 0.52.5",
] ]
[[package]] [[package]]
@ -774,7 +767,7 @@ version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4e89a9f2f40b2389ba6da0814c8044bf942bece03dffa1514f84e3b525f4f9a" checksum = "c4e89a9f2f40b2389ba6da0814c8044bf942bece03dffa1514f84e3b525f4f9a"
dependencies = [ dependencies = [
"bitflags", "bitflags 1.3.2",
"elsa", "elsa",
"maybe-owned", "maybe-owned",
"pdb", "pdb",
@ -823,9 +816,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.81" version = "1.0.84"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
@ -858,11 +851,11 @@ dependencies = [
[[package]] [[package]]
name = "redox_syscall" name = "redox_syscall"
version = "0.4.1" version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
dependencies = [ dependencies = [
"bitflags", "bitflags 2.5.0",
] ]
[[package]] [[package]]
@ -896,9 +889,9 @@ checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
[[package]] [[package]]
name = "rustc-demangle" name = "rustc-demangle"
version = "0.1.23" version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]] [[package]]
name = "rustc-hash" name = "rustc-hash"
@ -917,9 +910,9 @@ dependencies = [
[[package]] [[package]]
name = "ryu" name = "ryu"
version = "1.0.17" version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]] [[package]]
name = "scopeguard" name = "scopeguard"
@ -944,7 +937,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.63", "syn",
] ]
[[package]] [[package]]
@ -958,9 +951,9 @@ dependencies = [
[[package]] [[package]]
name = "semver" name = "semver"
version = "1.0.22" version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]] [[package]]
name = "semver-parser" name = "semver-parser"
@ -970,29 +963,29 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.199" version = "1.0.203"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.199" version = "1.0.203"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.63", "syn",
] ]
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.116" version = "1.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
dependencies = [ dependencies = [
"itoa", "itoa",
"ryu", "ryu",
@ -1001,18 +994,18 @@ dependencies = [
[[package]] [[package]]
name = "serde_spanned" name = "serde_spanned"
version = "0.6.5" version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"
dependencies = [ dependencies = [
"serde", "serde",
] ]
[[package]] [[package]]
name = "signal-hook-registry" name = "signal-hook-registry"
version = "1.4.1" version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
dependencies = [ dependencies = [
"libc", "libc",
] ]
@ -1041,12 +1034,6 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "slog"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06"
[[package]] [[package]]
name = "smallvec" name = "smallvec"
version = "1.13.2" version = "1.13.2"
@ -1055,9 +1042,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]] [[package]]
name = "socket2" name = "socket2"
version = "0.5.6" version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
dependencies = [ dependencies = [
"libc", "libc",
"windows-sys 0.52.0", "windows-sys 0.52.0",
@ -1102,12 +1089,6 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "strsim"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
[[package]] [[package]]
name = "symbolic" name = "symbolic"
version = "12.8.0" version = "12.8.0"
@ -1145,7 +1126,7 @@ dependencies = [
"elsa", "elsa",
"fallible-iterator 0.3.0", "fallible-iterator 0.3.0",
"flate2", "flate2",
"gimli", "gimli 0.28.1",
"goblin", "goblin",
"lazy_static", "lazy_static",
"nom", "nom",
@ -1210,20 +1191,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "1.0.109" version = "2.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
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"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1247,22 +1217,22 @@ dependencies = [
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.58" version = "1.0.61"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
dependencies = [ dependencies = [
"thiserror-impl", "thiserror-impl",
] ]
[[package]] [[package]]
name = "thiserror-impl" name = "thiserror-impl"
version = "1.0.58" version = "1.0.61"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.63", "syn",
] ]
[[package]] [[package]]
@ -1307,14 +1277,14 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.63", "syn",
] ]
[[package]] [[package]]
name = "toml" name = "toml"
version = "0.8.12" version = "0.8.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba"
dependencies = [ dependencies = [
"serde", "serde",
"serde_spanned", "serde_spanned",
@ -1324,18 +1294,18 @@ dependencies = [
[[package]] [[package]]
name = "toml_datetime" name = "toml_datetime"
version = "0.6.5" version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
dependencies = [ dependencies = [
"serde", "serde",
] ]
[[package]] [[package]]
name = "toml_edit" name = "toml_edit"
version = "0.22.12" version = "0.22.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"serde", "serde",
@ -1363,7 +1333,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.63", "syn",
] ]
[[package]] [[package]]
@ -1389,6 +1359,12 @@ dependencies = [
"toml", "toml",
] ]
[[package]]
name = "typenum"
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]] [[package]]
name = "unicode-bidi" name = "unicode-bidi"
version = "0.3.15" version = "0.3.15"
@ -1446,7 +1422,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77f1154f1ab868e2a01d9834a805faca7bf8b50d041b4ca714d005d0dab1c50c" checksum = "77f1154f1ab868e2a01d9834a805faca7bf8b50d041b4ca714d005d0dab1c50c"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"semver 1.0.22", "semver 1.0.23",
] ]
[[package]] [[package]]
@ -1477,11 +1453,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]] [[package]]
name = "winapi-util" name = "winapi-util"
version = "0.1.6" version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
dependencies = [ dependencies = [
"winapi", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -1631,9 +1607,9 @@ checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
[[package]] [[package]]
name = "winnow" name = "winnow"
version = "0.6.8" version = "0.6.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6"
dependencies = [ dependencies = [
"memchr", "memchr",
] ]

View file

@ -1,13 +1,16 @@
[package] [package]
name = "okstd" name = "okstd"
version = "0.1.6" version = "0.1.9"
edition = "2021" edition = "2021"
[lib]
crate-type = ["cdylib", "rlib"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features] [features]
unstable = ["dep:symbolic", "dep:sourcemap"] unstable = ["dep:symbolic", "dep:sourcemap", "dep:backtrace", "macros" ]
macros = ["dep:ok_macros"]
[dependencies] [dependencies]
symbolic = { version = "12.8.0", features = [ symbolic = { version = "12.8.0", features = [
@ -17,27 +20,30 @@ symbolic = { version = "12.8.0", features = [
"symcache", "symcache",
"debuginfo", "debuginfo",
], optional = true } ], optional = true }
crc32_digest = "0.8.1"
sourcemap = { version = "8.0.1", optional = true } sourcemap = { version = "8.0.1", optional = true }
anyhow = "1.0.81" 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" base64 = "0.22.0"
crc16 = "0.4.0" crc16 = "0.4.0"
fastvlq = "1.1.1" fastvlq = "1.1.1"
futures = "0.3.30" futures = "0.3.30"
hex = "0.4.3" hex = "0.4.3"
num_cpus = "1.16.0" 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" rustc-demangle = "0.1.23"
serde = "*" serde = "*"
serde_json = "*" serde_json = "*"
log = "0.4" log = "0.4"
colored = "2" colored = "2"
fern = { version = "0.6", features = ["colored"] } fern = { version = "0.6", features = ["colored"] }
termcolor = "1.4.1" termcolor = "1.4.1"
tokio = { version = "1.37.0", features = ["full"] }
url = "2.5.0" url = "2.5.0"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { version = "1.37.0", features = ["full"] }
[workspace] [workspace]
members = ["integration", "ok_macros"] members = ["integration", "ok_macros"]

View file

@ -4,6 +4,12 @@
Standards that are OK. 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 ## Getting Started
```bash ```bash

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ok_macros" name = "ok_macros"
version = "0.1.6" version = "0.1.9"
edition = "2021" edition = "2021"
@ -12,6 +12,4 @@ proc-macro = true
[dependencies] [dependencies]
syn = { version = "2.0.63", features = ["full", "extra-traits", "visit-mut"] } syn = { version = "2.0.63", features = ["full", "extra-traits", "visit-mut"] }
quote = "^1" quote = "^1"
darling = "0.10.0"
proc-macro2 = "1.0.3" proc-macro2 = "1.0.3"
slog = "2.7.0"

View file

@ -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( pub fn setup_panic_hook(
_args: proc_macro::TokenStream, _args: proc_macro::TokenStream,
input: proc_macro::TokenStream, input: proc_macro::TokenStream,
@ -152,38 +134,7 @@ pub fn setup_panic_hook(
TokenStream::from(result) 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( pub fn test(
_args: proc_macro::TokenStream, _args: proc_macro::TokenStream,
input: proc_macro::TokenStream, input: proc_macro::TokenStream,
@ -192,7 +143,7 @@ pub fn test(
let fn_name = &item_fn.clone().sig.ident; let fn_name = &item_fn.clone().sig.ident;
let attrs: &Vec<syn::Attribute> = &item_fn.attrs; let _attrs: &Vec<syn::Attribute> = &item_fn.attrs;
let asyncness: &Option<syn::token::Async> = &item_fn.sig.asyncness; let asyncness: &Option<syn::token::Async> = &item_fn.sig.asyncness;
let generics: &syn::Generics = &item_fn.sig.generics; let generics: &syn::Generics = &item_fn.sig.generics;
let inputs: &Punctuated<syn::FnArg, syn::token::Comma> = &item_fn.sig.inputs; let inputs: &Punctuated<syn::FnArg, syn::token::Comma> = &item_fn.sig.inputs;

View file

@ -1,6 +1,4 @@
#![recursion_limit = "128"] #![recursion_limit = "128"]
extern crate proc_macro;
extern crate syn;
use proc_macro::TokenStream; use proc_macro::TokenStream;
use quote::quote; use quote::quote;

View file

@ -1,10 +1,10 @@
//!
pub mod oklog; pub mod oklog;
// if not wasm
#[cfg(not(target_arch = "wasm32"))]
pub mod okasync; pub mod okasync;
#[cfg(feature = "unstable")] #[cfg(feature = "unstable")]
pub mod notokpanic; pub mod okpanic;
mod e2e_tests; mod e2e_tests;
extern crate fern; extern crate fern;
@ -12,11 +12,14 @@ extern crate fern;
use log as rustlog; use log as rustlog;
pub mod prelude { pub mod prelude {
#[cfg(not(target_arch = "wasm32"))]
pub use crate::okasync::*; pub use crate::okasync::*;
pub use crate::oklog::setup_logging; pub use crate::oklog::setup_logging;
#[cfg(feature = "macros")]
pub use super::main; pub use super::main;
#[cfg(feature = "macros")]
pub use super::log; pub use super::log;
// re-export the slog macros // re-export the slog macros
@ -28,16 +31,21 @@ pub mod prelude {
pub use crate::rustlog::warn; pub use crate::rustlog::warn;
pub use crate::rustlog::LevelFilter; pub use crate::rustlog::LevelFilter;
#[cfg(feature = "macros")]
pub use std::panic::set_hook; pub use std::panic::set_hook;
#[cfg(feature = "macros")]
#[cfg(feature = "unstable")] #[cfg(feature = "unstable")]
pub use crate::notokpanic::panic_hook; pub use crate::okpanic::panic_hook;
} }
#[cfg(feature = "macros")]
pub use ok_macros::main; pub use ok_macros::main;
#[cfg(feature = "macros")]
pub use ok_macros::test; pub use ok_macros::test;
#[cfg(feature = "macros")]
pub use ok_macros::log; pub use ok_macros::log;
#[cfg(feature = "macros")]
#[cfg(feature = "unstable")] #[cfg(feature = "unstable")]
pub use ok_macros::crashdump; pub use ok_macros::crashdump;

View file

@ -5,17 +5,22 @@ use std::{io, path::PathBuf};
// get module color hashes the module name // get module color hashes the module name
// and attempts to return a unique color as far as ansi colors go // and attempts to return a unique color as far as ansi colors go
fn get_module_color(module: &str) -> colored::Color { fn get_module_color(module: &str) -> colored::Color {
// crc16 is a good hash for this let hash = module
let hash = crc16::State::<crc16::XMODEM>::calculate(module.as_bytes()); .chars()
let hash = hash + 5; .fold(0 as u32, |acc, c| acc.wrapping_add(c as u32));
match hash % 6 { match hash % 13 {
0 => Color::Red, 0 => Color::Red,
1 => Color::Green, 1 => Color::Green,
2 => Color::Yellow, 2 => Color::Yellow,
3 => Color::Blue, 3 => Color::Blue,
4 => Color::Magenta, 4 => Color::Magenta,
5 => Color::Cyan, 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!( out.finish(format_args!(
"{} {}:{} {} {}", "{} {}:{} {} {}",
format!("{}/{}", "ok.software/", module).color(module_color), format!("{}/{}", "ok.software", module).color(module_color),
loc, loc,
record.line().unwrap(), record.line().unwrap(),
colors.color(record.level()), colors.color(record.level()),
@ -57,6 +62,24 @@ mod tests {
use super::*; use super::*;
use log::info; 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] #[test]
fn test_logging() { fn test_logging() {
setup_logging(log::LevelFilter::Error).unwrap(); setup_logging(log::LevelFilter::Error).unwrap();

View file

@ -46,30 +46,6 @@ const WELL_KNOWN_BORDER_FRAMES: &[&str] = &[
"tracing_core::", "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 // generate_crashdump_url generates a crashdump URL for the
// given addresses, current platform, architecture and debugId // given addresses, current platform, architecture and debugId
// buildId, commit and cargo package meta. // 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 // decode_crashdump_url decodes a crashdump URL and returns the
// addresses, debugId, buildId, commit and cargo package meta. // addresses, debugId, buildId, commit and cargo package meta.
#[allow(dead_code)]
fn decode_crashdump_url(url: &str) -> (Vec<i64>, DebugId) { fn decode_crashdump_url(url: &str) -> (Vec<i64>, DebugId) {
let u = url::Url::parse(url).unwrap(); let u = url::Url::parse(url).unwrap();
let segments = u.path_segments().unwrap().collect::<Vec<_>>(); let segments = u.path_segments().unwrap().collect::<Vec<_>>();