-
Notifications
You must be signed in to change notification settings - Fork 111
refactor!: Remove lazy static instances #250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 15 out of 17 changed files in this pull request and generated no suggestions.
Files not reviewed (2)
- crates/wdk-sys/Cargo.toml: Evaluated as low risk
- crates/wdk-build/Cargo.toml: Evaluated as low risk
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 29 out of 44 changed files in this pull request and generated 1 comment.
Files not reviewed (15)
- tests/wdk-macros-tests/tests/outputs/beta/macrotest/bug_tuple_struct_shadowing.expanded.rs: Evaluated as low risk
- tests/wdk-macros-tests/tests/outputs/beta/macrotest/bug_unused_imports.expanded.rs: Evaluated as low risk
- crates/wdk-sys/src/lib.rs: Evaluated as low risk
- crates/wdk-build/Cargo.toml: Evaluated as low risk
- Cargo.toml: Evaluated as low risk
- crates/wdk-build/src/lib.rs: Evaluated as low risk
- tests/wdk-macros-tests/Cargo.toml: Evaluated as low risk
- crates/wdk-sys/src/wdf.rs: Evaluated as low risk
- tests/wdk-macros-tests/src/lib.rs: Evaluated as low risk
- crates/wdk-sys/Cargo.toml: Evaluated as low risk
- crates/wdk-sys/build.rs: Evaluated as low risk
- tests/wdk-macros-tests/tests/outputs/beta/macrotest/wdf_verifier_dbg_break_point.expanded.rs: Evaluated as low risk
- tests/wdk-macros-tests/tests/outputs/beta/macrotest/wdf_spin_lock_acquire.expanded.rs: Evaluated as low risk
- tests/wdk-macros-tests/tests/outputs/beta/macrotest/wdf_request_retrieve_output_buffer.expanded.rs: Evaluated as low risk
- tests/wdk-macros-tests/tests/outputs/nightly/macrotest/bug_tuple_struct_shadowing.expanded.rs: Evaluated as low risk
Comments suppressed due to low confidence (1)
tests/wdk-macros-tests/tests/outputs/beta/macrotest/wdf_device_create.expanded.rs:30
- [nitpick] The error message is too verbose. Consider simplifying it to: 'assertion failed: invalid function count size'.
::core::panicking::panic("assertion failed: isize::try_from(wdf_function_count *\n core::mem::size_of::<wdk_sys::WDFFUNC>()).is_ok()")
tests/wdk-macros-tests/tests/outputs/nightly/macrotest/bug_unused_imports.expanded.rs
Show resolved
Hide resolved
wmmc88
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really dislike adding a public api for the function count, since no such public api exists in the WDK, and i'd like for the sys crate to be purely the wdk apis. Ideally, the proc_macro should generate code that either dereferences the symbol OR uses the enum by conditionally compiling for the relevant cases. This essentially means turning the is_wdf_function_count_generated expression into a CFG.
This is currently not possible since:
- we do not expose WDF version number in
EXPORTED_CFG_SETTINGSinemit_cfg_settings - it would be very tedious and manual to cfg over all the supported values, since there is no rust cfg equivalent to
UMDF_VERSION_MINOR > 1234. We would need to figure out a way to write a cfg in this fashion (is this even possible?)
I think those things are out of the scope of this PR, and the best we can do right now is hide the get_wdf_function_count api from the user and make it clear that it is subject to future removal once we've figured out the above.
For more on #2, see https://users.rust-lang.org/t/cfg-w-arbitrary-expressions/109371 I think it may be possible to write a new attribute macro that expands into a cfg |
c97de12 to
4d4c2bf
Compare
4d4c2bf to
c4bda63
Compare
…-static-instances
c4bda63 to
2680313
Compare
Replaced lazy static instances with std::sync::LazyLock in following locations:
Replaced lazy static instances with custom FunctionTable struct in generated code in
crates/wdk-sys/build.rsBreaking Changes
wdf_function_table.rsfrom generated code of WDK_BUILD. Users should access the function table instead via pointer atwdk_sys::WdfFunctions, and checking bounds viawdk_sys::wdf::get_wdf_function_count()which is generated inwdf_function_count.rssync::LazyLockas introduced in Rust 1.83closes #192