diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7c188e4..8d893d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,14 +98,18 @@ jobs: name: cargo-deny runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v1 - - uses: EmbarkStudios/cargo-deny-action@v1 + - uses: actions/checkout@v4 + - uses: EmbarkStudios/cargo-deny-action@v2 with: + rust-version: "1.92.0" + log-level: error command: check ${{ matrix.checks }} - - uses: EmbarkStudios/cargo-deny-action@v1 + - uses: EmbarkStudios/cargo-deny-action@v2 with: manifest-path: demo-puffin/Cargo.toml + rust-version: "1.92.0" + log-level: error command: check ${{ matrix.checks }} check-msrv: @@ -114,10 +118,10 @@ jobs: matrix: config: - package: profiling - msrv: '1.60' + msrv: "1.92" extra-args: --no-default-features - package: profiling-procmacros - msrv: '1.65' + msrv: "1.92" steps: - uses: actions/checkout@v4 diff --git a/Cargo.toml b/Cargo.toml index 8e089ad..8588b96 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,3 @@ [workspace] -members = [ - "profiling", - "profiling-procmacros", - ".", -] -exclude = [ - "demo-puffin" -] \ No newline at end of file +members = ["profiling", "profiling-procmacros", "."] +exclude = ["demo-puffin"] diff --git a/demo-puffin/Cargo.toml b/demo-puffin/Cargo.toml index f153511..3c60487 100644 --- a/demo-puffin/Cargo.toml +++ b/demo-puffin/Cargo.toml @@ -20,12 +20,14 @@ categories = ["development-tools::profiling"] [dependencies] profiling = { path = "../profiling", features = ["profile-with-puffin"] } -puffin = "0.19.1" -puffin_egui = "0.29.0" -egui = "0.28.1" -# wgpu also works fine here -eframe = { version = "0.28.1", default-features = false, features = ["glow"] } - -log = "0.4" -env_logger = "0.11" +puffin = "0.20.0" +puffin_egui = "0.30.0" +egui = "0.33.3" +eframe = { version = "0.33.3", default-features = false, features = [ + "glow", + "wayland", + "x11", +] } +log = "0.4.29" +env_logger = "0.11.9" diff --git a/deny.toml b/deny.toml index f7563b2..266bbe8 100644 --- a/deny.toml +++ b/deny.toml @@ -1,213 +1,66 @@ -# This template contains all of the possible sections and their default values +# https://github.com/EmbarkStudios/cargo-deny +# +# cargo-deny checks our dependency tree for copy-left licenses, +# duplicate dependencies, and rustsec advisories (https://rustsec.org/advisories). +# +# Install: `cargo install cargo-deny` +# Check: `cargo deny check`. -# Note that all fields that take a lint level have these possible values: -# * deny - An error will be produced and the check will fail -# * warn - A warning will be produced, but the check will not fail -# * allow - No warning or error will be produced, though in some cases a note -# will be - -# The values provided in this template are the default values that will be used -# when any section or field is not specified in your own configuration - -# If 1 or more target triples (and optionally, target_features) are specified, -# only the specified targets will be checked when running `cargo deny check`. -# This means, if a particular package is only ever used as a target specific -# dependency, such as, for example, the `nix` crate only being used via the -# `target_family = "unix"` configuration, that only having windows targets in -# this list would mean the nix crate, as well as any of its exclusive -# dependencies not shared by any other crates, would be ignored, as the target -# list here is effectively saying which targets you are building for. +[graph] targets = [ - # The triple can be any string, but only the target triples built in to - # rustc (as of 1.40) can be checked against actual config expressions - #{ triple = "x86_64-unknown-linux-musl" }, - # You can also specify which target_features you promise are enabled for a - # particular target. target_features are currently not validated against - # the actual valid features supported by the target architecture. - #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, + { triple = "aarch64-apple-darwin" }, + { triple = "i686-pc-windows-gnu" }, + { triple = "i686-pc-windows-msvc" }, + { triple = "i686-unknown-linux-gnu" }, + { triple = "wasm32-unknown-unknown" }, + { triple = "x86_64-apple-darwin" }, + { triple = "x86_64-pc-windows-gnu" }, + { triple = "x86_64-pc-windows-msvc" }, + { triple = "x86_64-unknown-linux-gnu" }, + { triple = "x86_64-unknown-linux-musl" }, ] -# This section is considered when running `cargo deny check advisories` -# More documentation for the advisories section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html [advisories] -# The path where the advisory database is cloned/fetched into -db-path = "~/.cargo/advisory-db" -# The url of the advisory database to use -db-urls = ["https://github.com/rustsec/advisory-db"] -# The lint level for security vulnerabilities -vulnerability = "warn" -# The lint level for unmaintained crates -unmaintained = "warn" -# The lint level for crates that have been yanked from their source registry -yanked = "warn" -# The lint level for crates with security notices. Note that as of -# 2019-12-17 there are no security notice advisories in -# https://github.com/rustsec/advisory-db -notice = "warn" -# A list of advisory IDs to ignore. Note that ignored advisories will still -# output a note when they are encountered. +version = 2 ignore = [ - #"RUSTSEC-0000-0000", + "RUSTSEC-2025-0141", # https://rustsec.org/advisories/RUSTSEC-2025-0141 - bincode is unmaintained - https://git.sr.ht/~stygianentity/bincode/tree/v3.0/item/README.md ] -# Threshold for security vulnerabilities, any vulnerability with a CVSS score -# lower than the range specified will be ignored. Note that ignored advisories -# will still output a note when they are encountered. -# * None - CVSS Score 0.0 -# * Low - CVSS Score 0.1 - 3.9 -# * Medium - CVSS Score 4.0 - 6.9 -# * High - CVSS Score 7.0 - 8.9 -# * Critical - CVSS Score 9.0 - 10.0 -#severity-threshold = -# This section is considered when running `cargo deny check licenses` -# More documentation for the licenses section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html +[bans] +multiple-versions = "warn" +wildcards = "warn" +highlight = "all" + [licenses] -# The lint level for crates which do not have a detectable license -unlicensed = "deny" -# List of explictly allowed licenses -# See https://spdx.org/licenses/ for list of possible licenses -# [possible values: any SPDX 3.7 short identifier (+ optional exception)]. +version = 2 +private = { ignore = true } +confidence-threshold = 0.93 allow = [ - "MIT", - "Apache-2.0", - "BSD-3-Clause", - "Zlib", - "Unicode-DFS-2016", - "BSD-2-Clause", - "BSL-1.0", - "ISC", - "Unicode-3.0" - #"Apache-2.0 WITH LLVM-exception", -] -# List of explictly disallowed licenses -# See https://spdx.org/licenses/ for list of possible licenses -# [possible values: any SPDX 3.7 short identifier (+ optional exception)]. -deny = [ - #"Nokia", -] -# Lint level for licenses considered copyleft -copyleft = "deny" -# Blanket approval or denial for OSI-approved or FSF Free/Libre licenses -# * both - The license will be approved if it is both OSI-approved *AND* FSF -# * either - The license will be approved if it is either OSI-approved *OR* FSF -# * osi-only - The license will be approved if is OSI-approved *AND NOT* FSF -# * fsf-only - The license will be approved if is FSF *AND NOT* OSI-approved -# * neither - This predicate is ignored and the default lint level is used -allow-osi-fsf-free = "neither" -# Lint level used when no other predicates are matched -# 1. License isn't in the allow or deny lists -# 2. License isn't copyleft -# 3. License isn't OSI/FSF, or allow-osi-fsf-free = "neither" -default = "deny" -# The confidence threshold for detecting a license from license text. -# The higher the value, the more closely the license text must be to the -# canonical license text of a valid SPDX license file. -# [possible values: any between 0.0 and 1.0]. -confidence-threshold = 1.0 -# Allow 1 or more licenses on a per-crate basis, so that particular licenses -# aren't accepted for every possible crate as with the normal allow list -exceptions = [ - { allow = ["OFL-1.1", "LicenseRef-UFL-1.0"], name = "epaint", version = "*" }, + "Apache-2.0 WITH LLVM-exception", # https://spdx.org/licenses/LLVM-exception.html + "Apache-2.0", # https://tldrlegal.com/license/apache-license-2.0-(apache-2.0) + "BSD-2-Clause", # https://tldrlegal.com/license/bsd-2-clause-license-(freebsd) + "BSD-3-Clause", # https://tldrlegal.com/license/bsd-3-clause-license-(revised) + "BSL-1.0", # https://tldrlegal.com/license/boost-software-license-1.0-explained + "ISC", # https://www.tldrlegal.com/license/isc-license + "MIT-0", # https://choosealicense.com/licenses/mit-0/ + "MIT", # https://tldrlegal.com/license/mit-license + "OFL-1.1", # https://spdx.org/licenses/OFL-1.1.html + "Ubuntu-font-1.0", # https://ubuntu.com/legal/font-licence + "Unicode-3.0", # https://www.unicode.org/license.txt + "Zlib", # https://tldrlegal.com/license/zlib-libpng-license-(zlib) ] +exceptions = [] -# Some crates don't have (easily) machine readable licensing information, -# adding a clarification entry for it allows you to manually specify the -# licensing information [[licenses.clarify]] -# The name of the crate the clarification applies to name = "ring" -# THe optional version constraint for the crate -version = "*" -# The SPDX expression for the license requirements of the crate expression = "MIT AND ISC AND OpenSSL" -# One or more files in the crate's source used as the "source of truth" for -# the license expression. If the contents match, the clarification will be used -# when running the license check, otherwise the clarification will be ignored -# and the crate will be checked normally, which may produce warnings or errors -# depending on the rest of your configuration -license-files = [ -# Each entry is a crate relative path, and the (opaque) hash of its contents - { path = "LICENSE", hash = 0xbd0eed23 } -] +license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] [[licenses.clarify]] -# The name of the crate the clarification applies to name = "webpki" -# THe optional version constraint for the crate -version = "*" -# The SPDX expression for the license requirements of the crate expression = "ISC" -# One or more files in the crate's source used as the "source of truth" for -# the license expression. If the contents match, the clarification will be used -# when running the license check, otherwise the clarification will be ignored -# and the crate will be checked normally, which may produce warnings or errors -# depending on the rest of your configuration -license-files = [ - # Each entry is a crate relative path, and the (opaque) hash of its contents - { path = "LICENSE", hash = 0x001c7e6c } -] - -[licenses.private] -# If true, ignores workspace crates that aren't published, or are only -# published to private registries -ignore = false -# One or more private registries that you might publish crates to, if a crate -# is only published to private registries, and ignore is true, the crate will -# not have its license(s) checked -registries = [ - #"https://sekretz.com/registry -] - -# This section is considered when running `cargo deny check bans`. -# More documentation about the 'bans' section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html -[bans] -# Lint level for when multiple versions of the same crate are detected -multiple-versions = "warn" -# Lint level for when a crate version requirement is `*` -wildcards = "warn" -# The graph highlighting used when creating dotgraphs for crates -# with multiple versions -# * lowest-version - The path to the lowest versioned duplicate is highlighted -# * simplest-path - The path to the version with the fewest edges is highlighted -# * all - Both lowest-version and simplest-path are used -highlight = "all" -# List of crates that are allowed. Use with care! -allow = [ - #{ name = "ansi_term", version = "=0.11.0" }, -] -# List of crates to deny -deny = [ - # Each entry the name of a crate and a version range. If version is - # not specified, all versions will be matched. - #{ name = "ansi_term", version = "=0.11.0" }, -] -# Certain crates/versions that will be skipped when doing duplicate detection. -skip = [ - #{ name = "ansi_term", version = "=0.11.0" }, -] -# Similarly to `skip` allows you to skip certain crates during duplicate -# detection. Unlike skip, it also includes the entire tree of transitive -# dependencies starting at the specified crate, up to a certain depth, which is -# by default infinite -skip-tree = [ - #{ name = "ansi_term", version = "=0.11.0", depth = 20 }, -] +license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] -# This section is considered when running `cargo deny check sources`. -# More documentation about the 'sources' section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html [sources] -# Lint level for what to happen when a crate from a crate registry that is not -# in the allow list is encountered unknown-registry = "deny" -# Lint level for what to happen when a crate from a git repository that is not -# in the allow list is encountered unknown-git = "deny" -# List of URLs for allowed crate registries. Defaults to the crates.io index -# if not specified. If it is specified but empty, no registries are allowed. -allow-registry = ["https://github.com/rust-lang/crates.io-index"] -# List of URLs for allowed Git repositories -allow-git = ["https://github.com/EmbarkStudios/puffin.git"] diff --git a/profiling-procmacros/Cargo.toml b/profiling-procmacros/Cargo.toml index 5c5b8db..8853374 100644 --- a/profiling-procmacros/Cargo.toml +++ b/profiling-procmacros/Cargo.toml @@ -10,14 +10,14 @@ repository = "https://github.com/aclysma/profiling" homepage = "https://github.com/aclysma/profiling" keywords = ["performance", "profiling"] categories = ["development-tools::profiling"] -rust-version = "1.65" +rust-version = "1.60" [dependencies] -quote = { version = "1.0", default-features = false } -syn = { version = "2.0", features = ["full"] } +quote = { version = "1.0.45", default-features = false } +syn = { version = "2.0.117", features = ["full"] } [lib] -proc-macro=true +proc-macro = true [features] profile-with-puffin = [] diff --git a/profiling-procmacros/src/lib.rs b/profiling-procmacros/src/lib.rs index a4061f5..dd5f62b 100644 --- a/profiling-procmacros/src/lib.rs +++ b/profiling-procmacros/src/lib.rs @@ -14,7 +14,7 @@ pub fn function( let body = &function.block; let new_body: syn::Block = impl_block(body, &instrumented_function_name); - function.block = Box::new(new_body); + *function.block = new_body; (quote! { #function diff --git a/profiling/Cargo.toml b/profiling/Cargo.toml index d892056..b3b104b 100644 --- a/profiling/Cargo.toml +++ b/profiling/Cargo.toml @@ -14,7 +14,7 @@ exclude = ["/examples", "/screenshots"] rust-version = "1.60" [dependencies] -puffin = { version = "0.19", optional = true } +puffin = { version = "0.20", optional = true } optick = { version = "1.3", optional = true } tracing = { version = "0.1", optional = true } tracy-client = { version = "0.18", optional = true } @@ -22,13 +22,13 @@ superluminal-perf = { version = "0.4", optional = true } profiling-procmacros = { version = "1.0.17", path = "../profiling-procmacros", optional = true } [dev-dependencies] -bincode = "1.3.1" -lazy_static = "1" -log = "0.4" -env_logger = "0.6" +bincode = "1.3.3" +lazy_static = "1.5.0" +log = "0.4.29" +env_logger = "0.11.9" -tracing-tracy = { version = "0.11.3" } -tracing-subscriber = { version = "0.3" } +tracing-tracy = { version = "0.11.4" } +tracing-subscriber = { version = "0.3.23" } [features] default = ["procmacros"] diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..fbc0bfb --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "1.92.0" +components = ["clippy", "rustfmt"] +targets = ["wasm32-unknown-unknown"]