Skip to content

fix(openal): re-exec macOS runtime without DYLD env#96

Open
chalharu wants to merge 2 commits into
masterfrom
fix/macos-services-menu-crash
Open

fix(openal): re-exec macOS runtime without DYLD env#96
chalharu wants to merge 2 commits into
masterfrom
fix/macos-services-menu-crash

Conversation

@chalharu
Copy link
Copy Markdown
Owner

Summary

  • re-exec macOS frontend processes without DYLD image search path overrides before AppKit and ImageIO initialize
  • remove the brittle runtime ImageIO/HIServices/PNGReadPlugin preloading workaround
  • add focused tests for the macOS runtime env decision logic

Validation

  • cargo test -p nerust_sound_openal
  • cargo check -p nerust_glutin -p nerust_wgpu -p nerust_gtk

@linter-service-checker
Copy link
Copy Markdown

linter-service-checker Bot commented May 21, 2026

linter-service

1 of 5 selected linter(s) reported issues or failed.

Linter Result Checked Passed Issues
rustfmt ✅ Pass 1 file 1 0
cargo-clippy ✅ Pass 1 file 1 0
cargo-coupling ❌ Issues 1 Cargo project n/a n/a
cargo-symbol-length ✅ Pass 1 Cargo project 1 0
editorconfig-checker ✅ Pass 1 file 1 0
Show checked targets for rustfmt

Target file paths:

  • sound/openal/src/lib.rs
Show checked targets for cargo-clippy

Target file paths:

  • sound/openal/src/lib.rs

Cargo project targets:

  • sound/openal/Cargo.toml
Show checked targets for cargo-coupling

Target file paths:

  • sound/openal/src/lib.rs

Cargo project targets:

  • sound/openal/Cargo.toml
Show checked targets for cargo-symbol-length

Target file paths:

  • sound/openal/src/lib.rs

Cargo project targets:

  • sound/openal/Cargo.toml
Show checked targets for editorconfig-checker

Target file paths:

  • sound/openal/src/lib.rs
Show details for 1 linter(s) with warnings or failures

cargo-coupling

==> docker run cargo-coupling coupling --json --no-git src
Grade: C | Score: 87% | Quality gate: FAILED
Thresholds: min_grade=B, max_critical=0, max_circular=0
Modules: 140 | Couplings: 2381 | Critical: 0 | High: 7 | Medium: 61 | Circular: 0
Blocking issues:
 - Grade C is below minimum B
Issues:
21 dependents -> nerust_rom_test::nerust_rom_test: medium[High Afferent Coupling]: Module nerust_rom_test::nerust_rom_test is depended on by 21 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_rom_testInterface` with methods: // Define stable public API
22 dependents -> nerust_screen_filter::nerust_screen_filter: medium[High Afferent Coupling]: Module nerust_screen_filter::nerust_screen_filter is depended on by 22 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_filterInterface` with methods: // Define stable public API
24 dependents -> nerust_core::cart_device: medium[High Afferent Coupling]: Module nerust_core::cart_device is depended on by 24 other components (threshold: 20)
 suggestion: Introduce trait `Cart_deviceInterface` with methods: // Define stable public API
28 dependents -> nerust_core::CartridgeDataParts: medium[High Afferent Coupling]: Module nerust_core::CartridgeDataParts is depended on by 28 other components (threshold: 20)
 suggestion: Introduce trait `CartridgeDataPartsInterface` with methods: // Define stable public API
35 dependents -> nerust_core::cpu: medium[High Afferent Coupling]: Module nerust_core::cpu is depended on by 35 other components (threshold: 20)
 suggestion: Introduce trait `CpuInterface` with methods: // Define stable public API
36 dependents -> nerust_core::CartridgeData: medium[High Afferent Coupling]: Module nerust_core::CartridgeData is depended on by 36 other components (threshold: 20)
 suggestion: Introduce trait `CartridgeDataInterface` with methods: // Define stable public API
39 dependents -> nerust_core::mapper: medium[High Afferent Coupling]: Module nerust_core::mapper is depended on by 39 other components (threshold: 20)
 suggestion: Introduce trait `MapperInterface` with methods: // Define stable public API
39 dependents -> nerust_core::mapper_state: medium[High Afferent Coupling]: Module nerust_core::mapper_state is depended on by 39 other components (threshold: 20)
 suggestion: Introduce trait `Mapper_stateInterface` with methods: // Define stable public API
41 dependents -> nerust_core::*: high[High Afferent Coupling]: Module nerust_core::* is depended on by 41 other components (threshold: 20)
 suggestion: Introduce trait `*Interface` with methods: // Define stable public API
48 dependents -> nerust_persistence::nerust_persistence: high[High Afferent Coupling]: Module nerust_persistence::nerust_persistence is depended on by 48 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_persistenceInterface` with methods: // Define stable public API
50 dependents -> nerust_core::nerust_core: high[High Afferent Coupling]: Module nerust_core::nerust_core is depended on by 50 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_coreInterface` with methods: // Define stable public API
52 dependents -> nerust_screen_traits::nerust_screen_traits: high[High Afferent Coupling]: Module nerust_screen_traits::nerust_screen_traits is depended on by 52 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_traitsInterface` with methods: // Define stable public API
54 dependents -> nerust_core::persistence: high[High Afferent Coupling]: Module nerust_core::persistence is depended on by 54 other components (threshold: 20)
 suggestion: Introduce trait `PersistenceInterface` with methods: // Define stable public API
nerust_cartridge_data::ines -> nerust_core::nerust_core: medium[Global Complexity]: Intrusive coupling to nerust_core::nerust_core across module boundary
 suggestion: Introduce trait `Nerust_coreTrait` with methods: // Extract required methods
nerust_cartridge_data::nes20 -> nerust_core::nerust_core: medium[Global Complexity]: Intrusive coupling to nerust_core::nerust_core across module boundary
 suggestion: Introduce trait `Nerust_coreTrait` with methods: // Extract required methods
nerust_console::lib -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_console::lib depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_console::lib_core, nerust_console::lib_integration
nerust_console::lib -> nerust_core::nerust_core: medium[Global Complexity]: Intrusive coupling to nerust_core::nerust_core across module boundary
 suggestion: Introduce trait `Nerust_coreTrait` with methods: // Extract required methods
nerust_console::lib -> nerust_core::nerust_core: medium[Global Complexity]: Intrusive coupling to nerust_core::nerust_core across module boundary
 suggestion: Introduce trait `Nerust_coreTrait` with methods: // Extract required methods
nerust_console::lib -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_core::cartridge_data -> nerust_core::CartridgeData: medium[Global Complexity]: Intrusive coupling to nerust_core::CartridgeData across module boundary
 suggestion: Introduce trait `CartridgeDataTrait` with methods: // Extract required methods
nerust_core::cartridge_data -> nerust_core::CartridgeDataParts: medium[Global Complexity]: Intrusive coupling to nerust_core::CartridgeDataParts across module boundary
 suggestion: Introduce trait `CartridgeDataPartsTrait` with methods: // Extract required methods
nerust_core::cartridge::mapper::action53 -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_core::cartridge::mapper::action53 depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_core::cartridge::mapper::action53_core, nerust_core::cartridge::mapper::action53_integration
nerust_core::cartridge::mapper::fme7 -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_core::cartridge::mapper::fme7 depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_core::cartridge::mapper::fme7_core, nerust_core::cartridge::mapper::fme7_integration
nerust_core::cartridge::mapper::mmc2 -> 22 dependencies: medium[High Efferent Coupling]: Module nerust_core::cartridge::mapper::mmc2 depends on 22 other components (threshold: 15)
 suggestion: Split into modules: nerust_core::cartridge::mapper::mmc2_core, nerust_core::cartridge::mapper::mmc2_integration
nerust_core::cartridge::mapper::mmc3::shared -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_core::cartridge::mapper::mmc3::shared depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_core::cartridge::mapper::mmc3::shared_core, nerust_core::cartridge::mapper::mmc3::shared_integration
nerust_core::cartridge::mapper::mmc5 -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_core::cartridge::mapper::mmc5 depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_core::cartridge::mapper::mmc5_core, nerust_core::cartridge::mapper::mmc5_integration
nerust_core::cartridge::mapper::sxrom -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_core::cartridge::mapper::sxrom depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_core::cartridge::mapper::sxrom_core, nerust_core::cartridge::mapper::sxrom_integration
nerust_core::ppu -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_core::ppu depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_core::ppu_core, nerust_core::ppu_integration
nerust_glutin::lib -> 25 dependencies: medium[High Efferent Coupling]: Module nerust_glutin::lib depends on 25 other components (threshold: 15)
 suggestion: Split into modules: nerust_glutin::lib_core, nerust_glutin::lib_integration
nerust_glutin::lib -> nerust_console::nerust_console: medium[Global Complexity]: Intrusive coupling to nerust_console::nerust_console across module boundary
 suggestion: Introduce trait `Nerust_consoleTrait` with methods: // Extract required methods
nerust_glutin::lib -> nerust_persistence::nerust_persistence: medium[Global Complexity]: Intrusive coupling to nerust_persistence::nerust_persistence across module boundary
 suggestion: Introduce trait `Nerust_persistenceTrait` with methods: // Extract required methods
nerust_gtk::main -> 29 dependencies: medium[High Efferent Coupling]: Module nerust_gtk::main depends on 29 other components (threshold: 15)
 suggestion: Split into modules: nerust_gtk::main_core, nerust_gtk::main_integration
nerust_gtk::main -> nerust_console::nerust_console: medium[Global Complexity]: Intrusive coupling to nerust_console::nerust_console across module boundary
 suggestion: Introduce trait `Nerust_consoleTrait` with methods: // Extract required methods
nerust_gtk::main -> nerust_persistence::nerust_persistence: medium[Global Complexity]: Intrusive coupling to nerust_persistence::nerust_persistence across module boundary
 suggestion: Introduce trait `Nerust_persistenceTrait` with methods: // Extract required methods
nerust_gtk::main -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_persistence::lib -> nerust_core::nerust_core: medium[Global Complexity]: Intrusive coupling to nerust_core::nerust_core across module boundary
 suggestion: Introduce trait `Nerust_coreTrait` with methods: // Extract required methods
nerust_persistence::lib -> nerust_core::nerust_core: medium[Global Complexity]: Intrusive coupling to nerust_core::nerust_core across module boundary
 suggestion: Introduce trait `Nerust_coreTrait` with methods: // Extract required methods
nerust_rom_test::bin::perf -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_rom_test::bin::perf depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_rom_test::bin::perf_core, nerust_rom_test::bin::perf_integration
nerust_rom_test::harness -> nerust_rom_test::results: medium[Global Complexity]: Intrusive coupling to nerust_rom_test::results across module boundary
 suggestion: Introduce trait `ResultsTrait` with methods: // Extract required methods
nerust_rom_test::manifest -> nerust_core::nerust_core: medium[Global Complexity]: Intrusive coupling to nerust_core::nerust_core across module boundary
 suggestion: Introduce trait `Nerust_coreTrait` with methods: // Extract required methods
nerust_rom_test::runner -> 38 dependencies: high[High Efferent Coupling]: Module nerust_rom_test::runner depends on 38 other components (threshold: 15)
 suggestion: Split into modules: nerust_rom_test::runner_core, nerust_rom_test::runner_integration
nerust_rom_test::runner -> nerust_rom_test::results: medium[Global Complexity]: Intrusive coupling to nerust_rom_test::results across module boundary
 suggestion: Introduce trait `ResultsTrait` with methods: // Extract required methods
nerust_rom_test::runner -> nerust_rom_test::results: medium[Global Complexity]: Intrusive coupling to nerust_rom_test::results across module boundary
 suggestion: Introduce trait `ResultsTrait` with methods: // Extract required methods
nerust_rom_test::runner -> nerust_rom_test::results: medium[Global Complexity]: Intrusive coupling to nerust_rom_test::results across module boundary
 suggestion: Introduce trait `ResultsTrait` with methods: // Extract required methods
nerust_rom_test::runner -> nerust_rom_test::results: medium[Global Complexity]: Intrusive coupling to nerust_rom_test::results across module boundary
 suggestion: Introduce trait `ResultsTrait` with methods: // Extract required methods
nerust_rom_test::runner -> nerust_rom_test::results: medium[Global Complexity]: Intrusive coupling to nerust_rom_test::results across module boundary
 suggestion: Introduce trait `ResultsTrait` with methods: // Extract required methods
nerust_rom_test::runner -> nerust_rom_test::results: medium[Global Complexity]: Intrusive coupling to nerust_rom_test::results across module boundary
 suggestion: Introduce trait `ResultsTrait` with methods: // Extract required methods
nerust_rom_test::runner -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_buffer::screen_buffer -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_filter::filters::ntsc -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_filter::filters::ntsc -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_filter::filters::ntsc -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_filter::filters::rgb -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_filter::lib -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_screen_filter::lib depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_screen_filter::lib_core, nerust_screen_filter::lib_integration
nerust_screen_filter::lib -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_filter::lib -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_filter::presentation -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_filter::presentation -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_opengl::lib -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_wgpu::renderer -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_screen_wgpu::renderer depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_screen_wgpu::renderer_core, nerust_screen_wgpu::renderer_integration
nerust_screen_wgpu::renderer -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_wgpu::renderer -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_wgpu::upload -> nerust_screen_traits::nerust_screen_traits: medium[Global Complexity]: Intrusive coupling to nerust_screen_traits::nerust_screen_traits across module boundary
 suggestion: Introduce trait `Nerust_screen_traitsTrait` with methods: // Extract required methods
nerust_screen_wgpu::upload -> nerust_screen_wgpu::FrameUploadLayout: medium[Global Complexity]: Intrusive coupling to nerust_screen_wgpu::FrameUploadLayout across module boundary
 suggestion: Introduce trait `FrameUploadLayoutTrait` with methods: // Extract required methods
nerust_wgpu::main -> nerust_core::nerust_core: medium[Global Complexity]: Intrusive coupling to nerust_core::nerust_core across module boundary
 suggestion: Introduce trait `Nerust_coreTrait` with methods: // Extract required methods
nerust_wgpu::window::runtime -> 37 dependencies: high[High Efferent Coupling]: Module nerust_wgpu::window::runtime depends on 37 other components (threshold: 15)
 suggestion: Split into modules: nerust_wgpu::window::runtime_core, nerust_wgpu::window::runtime_integration
nerust_wgpu::window::runtime -> nerust_console::nerust_console: medium[Global Complexity]: Intrusive coupling to nerust_console::nerust_console across module boundary
 suggestion: Introduce trait `Nerust_consoleTrait` with methods: // Extract required methods
nerust_wgpu::window::runtime -> nerust_persistence::nerust_persistence: medium[Global Complexity]: Intrusive coupling to nerust_persistence::nerust_persistence across module boundary
 suggestion: Introduce trait `Nerust_persistenceTrait` with methods: // Extract required methods
Analyzing project at 'src'...
Analysis complete: 163 files, 140 modules

Comment thread sound/openal/src/lib.rs Fixed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants