diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 8f9e4d9..42f8091 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -10,172 +10,190 @@ env: CARGO_TERM_COLOR: always jobs: - linux-build-and-test: + linux-cargo-clippy: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v3 - - - uses: Swatinem/rust-cache@v2 - - - name: Update apt - run: sudo apt update - - name: Install depencies - run: sudo apt-get install libasound2-dev libgtk-3-dev - - - name: Install resvg - run: cargo install resvg - - name: Install cargo-about - run: cargo install cargo-about - - - uses: robinraju/release-downloader@v1.5 - with: - repository: "c-sp/gameboy-test-roms" - tag: "v5.1" - fileName: "game-boy-test-roms-v5.1.zip" - - - name: Unzip test roms - run: unzip game-boy-test-roms-v5.1.zip -d core/tests/gameboy-test-roms/ - - - name: Run tests - run: cargo test --verbose --workspace - - - uses: jetli/wasm-pack-action@v0.3.0 - with: - # Optional version of wasm-pack to install(eg. 'v0.9.1', 'latest') - version: 'latest' - - - name: Build Linux - run: > - cargo build --profile=fast --verbose -p gameroy-native - --target=x86_64-unknown-linux-gnu - --features=static - - - name: Cargo About - run: cargo about generate -m native/Cargo.toml -c license/about-linux.toml license/about.hbs > license/license.html - - - name: Form a Package - run: | - mkdir package - cp target/x86_64-unknown-linux-gnu/fast/gameroy-native package/gameroy.exe - cp license/license.html package/ - cp gameroy.toml package/ - - - name: Archive Linux - uses: actions/upload-artifact@v3 - with: - name: gameroy-x86_64-unknown-linux-gnu - path: package/ - - - name: Build Wasm - run: | - cd wasm - wasm-pack build --target web - cp ../license/license.html . - - - name: Archive Web - uses: actions/upload-artifact@v3 - with: - name: gameroy-wasm - path: | - wasm/index.html - wasm/license.html - wasm/pkg/gameroy_wasm_bg.wasm - wasm/pkg/gameroy_wasm.js + - uses: actions/checkout@v3 - windows-build: + - uses: Swatinem/rust-cache@v2 + + - name: Install dependencies + run: | + sudo apt update + sudo apt-get install libasound2-dev libgtk-3-dev + rustup target add wasm32-unknown-unknown + + - name: Clippy All Features + run: cargo clippy --workspace --all-targets --all-features -- -D warnings + - name: Clippy No Features + run: cargo clippy --workspace --all-targets --no-default-features -- -D warnings + + - name: Clippy Wasm + run: cargo clippy --target wasm32-unknown-unknown -p gameroy-wasm --all-features -- -D warnings + + linux-build-and-test: + runs-on: ubuntu-20.04 + needs: linux-cargo-clippy + + steps: + - uses: actions/checkout@v3 + + - uses: Swatinem/rust-cache@v2 + + - name: Install dependencies + run: | + sudo apt update + sudo apt-get install libasound2-dev libgtk-3-dev + + - uses: robinraju/release-downloader@v1.5 + with: + repository: "c-sp/gameboy-test-roms" + tag: "v5.1" + fileName: "game-boy-test-roms-v5.1.zip" + + - name: Unzip test roms + run: unzip game-boy-test-roms-v5.1.zip -d core/tests/gameboy-test-roms/ + + - name: Run tests + run: cargo test --verbose --workspace + + - uses: jetli/wasm-pack-action@v0.3.0 + with: + # Optional version of wasm-pack to install(eg. 'v0.9.1', 'latest') + version: 'latest' + + - name: Build Linux + run: > + cargo build --profile=fast --verbose -p gameroy-native + --target=x86_64-unknown-linux-gnu + --features=static + + - name: Install cargo-about + run: cargo install cargo-about --version 0.6.6 + + - name: Cargo About + run: cargo about generate -m native/Cargo.toml -c license/about-linux.toml license/about.hbs -o license/license.html + + - name: Form a Package + run: | + mkdir package + cp target/x86_64-unknown-linux-gnu/fast/gameroy-native package/gameroy.exe + cp license/license.html package/ + cp gameroy.toml package/ + + - name: Archive Linux + uses: actions/upload-artifact@v3 + with: + name: gameroy-x86_64-unknown-linux-gnu + path: package/ + + - name: Build Wasm + run: | + cd wasm + wasm-pack build --target web + cp ../license/license.html . + + - name: Archive Web + uses: actions/upload-artifact@v3 + with: + name: gameroy-wasm + path: | + wasm/index.html + wasm/license.html + wasm/pkg/gameroy_wasm_bg.wasm + wasm/pkg/gameroy_wasm.js + + windows-build: runs-on: windows-latest + needs: linux-cargo-clippy steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - - uses: Swatinem/rust-cache@v2 + - uses: Swatinem/rust-cache@v2 - - name: Install resvg - run: cargo install resvg - - name: Install cargo-about - run: cargo install cargo-about + - name: Install cargo-about + run: cargo install cargo-about - - name: Build Windows - run: > - cargo build -p gameroy-native --profile=fast --verbose - --target=x86_64-pc-windows-msvc - --no-default-features --features=static,rfd,audio-engine,threads + - name: Build Windows + run: > + cargo build -p gameroy-native --profile=fast --verbose + --target=x86_64-pc-windows-msvc + --no-default-features --features=static,rfd,audio-engine,threads - - name: Cargo About - run: cargo about generate -m native\Cargo.toml -c license\about-windows.toml license\about.hbs > license\license.html + - name: Cargo About + run: cargo about generate -m native\Cargo.toml -c license\about-windows.toml license\about.hbs -o license\license.html - - name: Form a Package - run: | - mkdir package - copy target\x86_64-pc-windows-msvc\fast\gameroy-native.exe package\gameroy.exe - copy license\license.html package\ - copy gameroy.toml package\ + - name: Form a Package + run: | + mkdir package + copy target\x86_64-pc-windows-msvc\fast\gameroy-native.exe package\gameroy.exe + copy license\license.html package\ + copy gameroy.toml package\ - - name: Archive Windows - uses: actions/upload-artifact@v3 - with: - name: gameroy-x86_64-pc-windows-msvc - path: package/ + - name: Archive Windows + uses: actions/upload-artifact@v3 + with: + name: gameroy-x86_64-pc-windows-msvc + path: package/ android-build: - runs-on: ubuntu-latest + needs: linux-cargo-clippy defaults: run: working-directory: ./android steps: - - uses: actions/checkout@v3 - - - uses: Swatinem/rust-cache@v2 - - - name: set up JDK 11 - uses: actions/setup-java@v3 - with: - java-version: '11' - distribution: 'temurin' - cache: gradle - - - name: Update apt - run: sudo apt update - - name: Install depencies - run: sudo apt-get install libasound2-dev libgtk-3-dev - - - name: Install android targets - run: >- - rustup target install - aarch64-linux-android - armv7-linux-androideabi - i686-linux-android - x86_64-linux-android - - - name: Install resvg - run: cargo install resvg - - name: Install cargo-about - run: cargo install cargo-about - - - name: Write Keystore.properties - env: - KEYSTORE_PROPERTIES: ${{ secrets.KEYSTORE_PROPERTIES }} - run: echo "$KEYSTORE_PROPERTIES" > keystore.properties - - - name: Write keystore.jks - env: - ENCODED_KEYSTORE: ${{ secrets.KEYSTORE }} - run: echo $ENCODED_KEYSTORE | base64 -di > keystore.jks - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: Build Android - run: ./gradlew build - - - name: Archive release APK - uses: actions/upload-artifact@v3 - with: - name: gameroy-android - path: android/app/build/outputs/apk/release/app-release.apk + - uses: actions/checkout@v3 + + - uses: Swatinem/rust-cache@v2 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: adopt + cache: gradle + + - name: Install dependencies + run: | + sudo apt update + sudo apt-get install libasound2-dev libgtk-3-dev + + - name: Install android targets + run: >- + rustup target install + aarch64-linux-android + armv7-linux-androideabi + i686-linux-android + x86_64-linux-android + + - name: Install cargo-about + run: cargo install cargo-about + + - name: Write Keystore.properties + env: + KEYSTORE_PROPERTIES: ${{ secrets.KEYSTORE_PROPERTIES }} + run: echo "$KEYSTORE_PROPERTIES" > keystore.properties + + - name: Write keystore.jks + env: + ENCODED_KEYSTORE: ${{ secrets.KEYSTORE }} + run: echo $ENCODED_KEYSTORE | base64 -di > keystore.jks + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build Android + run: ./gradlew assembleRelease + + - name: Archive release APK + uses: actions/upload-artifact@v3 + with: + name: gameroy-android + path: android/app/build/outputs/apk/release/app-release.apk diff --git a/Cargo.lock b/Cargo.lock index ab9d779..40422e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.23" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" +checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -19,16 +19,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -55,6 +55,12 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_log-sys" version = "0.2.0" @@ -84,6 +90,15 @@ dependencies = [ "once_cell", ] +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anes" version = "0.1.6" @@ -96,52 +111,53 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -149,9 +165,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -161,9 +177,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "atk-sys" @@ -183,9 +199,9 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -204,21 +220,21 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "base64" -version = "0.13.1" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bindgen" @@ -245,22 +261,20 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.4" +version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", + "itertools 0.13.0", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.52", + "syn 2.0.82", ] [[package]] @@ -271,9 +285,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] [[package]] name = "block" @@ -302,15 +319,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.4" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.14.3" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" [[package]] name = "byteorder" @@ -318,11 +335,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "cairo-sys-rs" @@ -366,12 +389,13 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.90" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -391,9 +415,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" dependencies = [ "smallvec", "target-lexicon", @@ -426,6 +450,18 @@ dependencies = [ "libc", ] +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.52.6", +] + [[package]] name = "ciborium" version = "0.2.2" @@ -455,13 +491,13 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.3", + "libloading 0.8.5", ] [[package]] @@ -474,28 +510,16 @@ dependencies = [ "atty", "bitflags 1.3.2", "strsim 0.8.0", - "textwrap 0.11.0", + "textwrap", "unicode-width", "vec_map", ] [[package]] name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "bitflags 1.3.2", - "clap_lex 0.2.4", - "indexmap 1.9.3", - "textwrap 0.16.1", -] - -[[package]] -name = "clap" -version = "4.5.2" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -503,42 +527,33 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.0", - "strsim 0.11.0", + "clap_lex", + "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.52", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", + "syn 2.0.82", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "clipboard-win" @@ -547,14 +562,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fdf5e01086b6be750428ba4a40619f847eb2e95756eee84b18e06e5f0b50342" dependencies = [ "lazy-bytes-cast", - "winapi", + "winapi 0.3.9", ] [[package]] name = "cmake" -version = "0.1.50" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" dependencies = [ "cc", ] @@ -585,7 +600,7 @@ dependencies = [ "block", "cocoa-foundation", "core-foundation 0.9.4", - "core-graphics 0.23.1", + "core-graphics 0.23.2", "foreign-types 0.5.0", "libc", "objc", @@ -613,15 +628,15 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -667,7 +682,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "libc", ] @@ -679,9 +694,9 @@ checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -710,9 +725,9 @@ dependencies = [ [[package]] name = "core-graphics" -version = "0.23.1" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", @@ -739,7 +754,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9d2790b5c08465d49f8dc05c8bcae9fea467855947db39b0f8145c091aaced5" dependencies = [ "core-foundation 0.9.4", - "core-graphics 0.23.1", + "core-graphics 0.23.2", "foreign-types 0.5.0", "libc", ] @@ -769,11 +784,11 @@ dependencies = [ [[package]] name = "coreaudio-sys" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9" +checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b" dependencies = [ - "bindgen 0.69.4", + "bindgen 0.70.1", ] [[package]] @@ -782,7 +797,7 @@ version = "0.14.0" source = "git+https://github.com/Rodrigodd/cpal.git?branch=oboe-low-latency#9b9189c86afe5f38b6b64e5dbe5f182e4602799a" dependencies = [ "alsa", - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "coreaudio-rs", "jni", "js-sys", @@ -793,7 +808,7 @@ dependencies = [ "nix 0.23.2", "oboe", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "stdweb", "thiserror", "wasm-bindgen", @@ -803,28 +818,28 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if 1.0.0", ] [[package]] name = "criterion" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" dependencies = [ "anes", - "atty", "cast", "ciborium", - "clap 3.2.25", + "clap 4.5.20", "criterion-plot", + "is-terminal", "itertools 0.10.5", - "lazy_static", "num-traits", + "once_cell", "oorandom", "plotters", "rayon", @@ -867,9 +882,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossfont" @@ -879,8 +894,8 @@ checksum = "3eb5a3822b594afc99b503cc1859b94686d3c3efdd60507a28587dab80ee1071" dependencies = [ "cocoa 0.25.0", "core-foundation 0.9.4", - "core-foundation-sys 0.8.6", - "core-graphics 0.23.1", + "core-foundation-sys 0.8.7", + "core-graphics 0.23.2", "core-text", "dwrote", "foreign-types 0.5.0", @@ -891,7 +906,7 @@ dependencies = [ "once_cell", "pkg-config", "servo-fontconfig", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -959,61 +974,61 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.3", + "libloading 0.8.5", ] [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dwrote" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +checksum = "70182709525a3632b2ba96b6569225467b18ecb4a77f46d255f713a6bebf05fd" dependencies = [ "lazy_static", "libc", "serde", "serde_derive", - "winapi", + "winapi 0.3.9", "wio", ] [[package]] name = "dynasm" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33dc03612f42465a8ed7f5e354bc2b79ba54cedefa81d5bd3a064f1835adaba8" +checksum = "767de053f78ef46295114c1d3bd46dff9e2542c817c9c0f313f2a6a95eaad2de" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "byteorder", "lazy_static", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.82", ] [[package]] name = "dynasmrt" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7dccc31a678058996aef614f6bd418ced384da70f284e83e2b7bf29b27b6a28" +checksum = "f814029fdd01bc8c85a5783a10932b25edae8d22f25d3152db086a6f444538d8" dependencies = [ "byteorder", "dynasm", "fnv", - "memmap2 0.5.10", + "memmap2 0.9.5", ] [[package]] name = "either" -version = "1.10.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "embed-resource" @@ -1025,7 +1040,21 @@ dependencies = [ "rustc_version", "toml 0.5.11", "vswhom", - "winreg", + "winreg 0.10.1", +] + +[[package]] +name = "embed-resource" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e24052d7be71f0efb50c201557f6fe7d237cfd5a64fd5bcd7fd8fe32dbbffa" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.8.19", + "vswhom", + "winreg 0.52.0", ] [[package]] @@ -1069,9 +1098,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1089,18 +1118,18 @@ dependencies = [ [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" dependencies = [ "simd-adler32", ] [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -1123,6 +1152,19 @@ dependencies = [ "time", ] +[[package]] +name = "flexi_logger" +version = "0.29.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719236bdbcf6033a3395165f797076b31056018e6723ccff616eb25fc9c99de1" +dependencies = [ + "chrono", + "log", + "nu-ansi-term", + "regex", + "thiserror", +] + [[package]] name = "float-cmp" version = "0.9.0" @@ -1131,9 +1173,9 @@ checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" [[package]] name = "flume" -version = "0.10.14" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" dependencies = [ "spin", ] @@ -1146,11 +1188,11 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fontconfig-parser" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d" +checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" dependencies = [ - "roxmltree 0.19.0", + "roxmltree 0.20.0", ] [[package]] @@ -1194,7 +1236,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.82", ] [[package]] @@ -1242,9 +1284,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1257,9 +1299,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1267,15 +1309,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1284,38 +1326,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.82", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1334,10 +1376,10 @@ name = "gameroy" version = "0.3.1" dependencies = [ "audio-engine", - "base64 0.13.1", + "base64 0.22.1", "cfg-if 1.0.0", "flate2", - "flexi_logger", + "flexi_logger 0.22.6", "flume", "gameroy-core", "gameroy-jit", @@ -1350,13 +1392,13 @@ dependencies = [ "ndk-context", "ndk-glue 0.7.0", "once_cell", - "parking_lot 0.11.2", + "parking_lot 0.12.3", "resvg", "rfd", "ron", "serde", "sprite-render", - "toml 0.5.11", + "toml 0.8.19", "ureq", "urlencoding", "wasm-bindgen", @@ -1383,6 +1425,7 @@ dependencies = [ "image", "rand", "rayon", + "text-diff", ] [[package]] @@ -1392,9 +1435,9 @@ dependencies = [ "cfg-if 1.0.0", "dynasmrt", "gameroy-core", - "memoffset 0.8.0", + "memoffset 0.9.1", "rayon", - "windows-sys 0.45.0", + "windows-sys 0.59.0", ] [[package]] @@ -1410,9 +1453,9 @@ dependencies = [ name = "gameroy-native" version = "0.3.1" dependencies = [ - "clap 4.5.2", - "embed-resource", - "flexi_logger", + "clap 4.5.20", + "embed-resource 2.5.0", + "flexi_logger 0.29.3", "gameroy", "gameroy-jit", "log", @@ -1472,14 +1515,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" dependencies = [ "libc", - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", ] [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1506,7 +1558,7 @@ dependencies = [ "gobject-sys", "libc", "system-deps", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1648,9 +1700,9 @@ dependencies = [ [[package]] name = "half" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ "cfg-if 1.0.0", "crunchy", @@ -1664,15 +1716,15 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -1683,6 +1735,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "home" version = "0.5.9" @@ -1704,6 +1762,29 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys 0.8.7", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1722,13 +1803,12 @@ dependencies = [ [[package]] name = "image" -version = "0.24.9" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "bc144d44a31d753b02ce64093d532f55ff8dc4ebf2ffb8a63c0dda691385acae" dependencies = [ "bytemuck", - "byteorder", - "color_quant", + "byteorder-lite", "num-traits", "png", ] @@ -1751,12 +1831,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.5" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.15.0", ] [[package]] @@ -1770,6 +1850,23 @@ dependencies = [ "web-sys", ] +[[package]] +name = "is-terminal" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.10.5" @@ -1781,18 +1878,18 @@ dependencies = [ [[package]] name = "itertools" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jni" @@ -1816,9 +1913,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.28" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -1831,13 +1928,23 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "keyed_priority_queue" version = "0.3.2" @@ -1859,7 +1966,7 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", ] [[package]] @@ -1870,9 +1977,9 @@ checksum = "10257499f089cd156ad82d0a9cd57d9501fa2c989068992a97eb3c27836f206b" [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -1893,9 +2000,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libloading" @@ -1904,30 +2011,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if 1.0.0", - "winapi", + "winapi 0.3.9", ] [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if 1.0.0", - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[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", @@ -1935,9 +2042,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "mach" @@ -1959,9 +2066,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" @@ -1990,6 +2097,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -2008,6 +2124,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -2016,11 +2141,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", "simd-adler32", ] @@ -2127,7 +2252,7 @@ dependencies = [ "ndk-macro", "ndk-sys 0.4.1+23.1.7779620", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", ] [[package]] @@ -2228,6 +2353,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "num-derive" version = "0.3.3" @@ -2241,9 +2375,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -2367,29 +2501,23 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" -version = "11.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" - -[[package]] -name = "os_str_bytes" -version = "6.6.1" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "owned_ttf_parser" -version = "0.20.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" +checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" dependencies = [ - "ttf-parser 0.20.0", + "ttf-parser 0.25.0", ] [[package]] @@ -2417,12 +2545,12 @@ dependencies = [ [[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 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] @@ -2436,20 +2564,20 @@ dependencies = [ "libc", "redox_syscall 0.2.16", "smallvec", - "winapi", + "winapi 0.3.9", ] [[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 1.0.0", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.7", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -2472,9 +2600,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2484,15 +2612,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plotters" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -2503,24 +2631,24 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] [[package]] name = "png" -version = "0.17.13" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -2531,9 +2659,12 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro-crate" @@ -2546,43 +2677,41 @@ dependencies = [ ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error-attr2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ - "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ + "proc-macro-error-attr2", "proc-macro2", "quote", - "version_check", + "syn 2.0.82", ] [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2634,9 +2763,9 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "rayon" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -2669,18 +2798,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.3" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -2690,9 +2819,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -2701,9 +2830,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "resvg" @@ -2730,7 +2859,7 @@ dependencies = [ "block", "cfg-if 1.0.0", "dispatch", - "embed-resource", + "embed-resource 1.8.0", "glib-sys", "gobject-sys", "gtk-sys", @@ -2751,22 +2880,23 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.37" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" dependencies = [ "bytemuck", ] [[package]] name = "ron" -version = "0.6.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86018df177b1beef6c7c8ef949969c4f7cb9a9344181b92486b23c79995bdaa4" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.21.7", + "bitflags 2.6.0", "serde", + "serde_derive", ] [[package]] @@ -2780,9 +2910,9 @@ dependencies = [ [[package]] name = "roxmltree" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rust-libretro-sys" @@ -2802,20 +2932,20 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -2824,9 +2954,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rustybuzz" @@ -2846,9 +2976,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 = "safe_arch" @@ -2894,46 +3024,47 @@ 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 = "serde" -version = "1.0.197" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.82", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -3006,9 +3137,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smithay-client-toolkit" @@ -3115,9 +3246,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "svgtypes" @@ -3142,9 +3273,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.52" +version = "2.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" +checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" dependencies = [ "proc-macro2", "quote", @@ -3153,22 +3284,32 @@ dependencies = [ [[package]] name = "system-deps" -version = "6.2.0" +version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2d580ff6a20c55dfb86be5f9c238f67835d0e81cbdea8bf5680e0897320331" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ "cfg-expr", "heck", "pkg-config", - "toml 0.8.10", + "toml 0.8.19", "version-compare", ] [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "term" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2077e54d38055cf1ca0fd7933a2e00cd3ec8f6fed352b2a377f06dcdaaf3281" +dependencies = [ + "kernel32-sys", + "winapi 0.2.8", +] [[package]] name = "termcolor" @@ -3179,6 +3320,16 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "text-diff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "309238dd66f8bf11a20d015b727b926f294a13fcb8d56770bb984e7a22c43897" +dependencies = [ + "getopts", + "term", +] + [[package]] name = "texture-cache" version = "0.1.0" @@ -3194,30 +3345,24 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "textwrap" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" - [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.82", ] [[package]] @@ -3260,7 +3405,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7db11798945fa5c3e5490c794ccca7c6de86d3afdd54b4eb324109939c6f37bc" dependencies = [ "arrayref", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "bytemuck", "cfg-if 1.0.0", "log", @@ -3301,9 +3446,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3325,21 +3470,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.10" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.6", + "toml_edit 0.22.22", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -3350,22 +3495,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.6.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.6" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.5", + "winnow 0.6.20", ] [[package]] @@ -3382,15 +3527,15 @@ checksum = "49d64318d8311fc2668e48b63969f4343e0a85c4a109aa8460d6672e364b8bd1" [[package]] name = "ttf-parser" -version = "0.20.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" +checksum = "5902c5d130972a0000f60860bfbf46f7ca3db5391eddfedd1b8728bd9dc96c0e" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-bidi-mirroring" @@ -3412,9 +3557,9 @@ checksum = "2281c8c1d221438e373249e065ca4989c4c36952c211ff21a0ee91c44a3869e7" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-linebreak" @@ -3424,24 +3569,24 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-script" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-vo" @@ -3451,17 +3596,17 @@ checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "ureq" -version = "2.9.6" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "log", "once_cell", "url", @@ -3469,9 +3614,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -3547,9 +3692,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vec_map" @@ -3559,15 +3704,15 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vswhom" @@ -3607,34 +3752,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if 1.0.0", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.82", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -3644,9 +3790,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3654,22 +3800,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.82", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-logger" @@ -3784,9 +3930,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -3810,6 +3956,12 @@ dependencies = [ "rustix", ] +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + [[package]] name = "winapi" version = "0.3.9" @@ -3820,6 +3972,12 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -3828,20 +3986,20 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] name = "winapi-wsapoll" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +checksum = "1eafc5f679c576995526e81635d0cf9695841736712b4e892f87abbe6fed3f28" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -3863,6 +4021,15 @@ dependencies = [ "windows_x86_64_msvc 0.37.0", ] +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.36.1" @@ -3900,7 +4067,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3935,17 +4111,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3962,9 +4139,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -3992,9 +4169,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4022,9 +4199,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4052,9 +4235,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4082,9 +4265,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4100,9 +4283,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4130,9 +4313,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winit" @@ -4163,7 +4346,7 @@ dependencies = [ "wayland-client", "wayland-protocols", "web-sys", - "winapi", + "winapi 0.3.9", "x11-dl", ] @@ -4185,7 +4368,7 @@ dependencies = [ "ndk-glue 0.7.0", "objc", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "percent-encoding", "raw-window-handle 0.4.3", "raw-window-handle 0.5.2", @@ -4211,9 +4394,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.5" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -4224,7 +4407,17 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", ] [[package]] @@ -4233,7 +4426,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -4264,7 +4457,7 @@ checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" dependencies = [ "gethostname", "nix 0.24.3", - "winapi", + "winapi 0.3.9", "winapi-wsapoll", "x11rb-protocol", ] @@ -4280,15 +4473,15 @@ dependencies = [ [[package]] name = "xcursor" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" [[package]] name = "xml-rs" -version = "0.8.19" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "xmlparser" @@ -4301,3 +4494,24 @@ name = "xmlwriter" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.82", +] diff --git a/Cargo.toml b/Cargo.toml index 47444ab..5654612 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ license.workspace = true [lib] name = "gameroy_lib" -crate_type = ["cdylib", "rlib"] +crate-type = ["cdylib", "rlib"] path = "src/lib.rs" [features] @@ -38,7 +38,7 @@ statistics = ["gameroy-jit/statistics"] emit_debug_info = ["gameroy-jit/emit_debug_info"] -default = ["rfd", "audio-engine" ] +default = ["rfd", "audio-engine"] [build-dependencies] resvg = "0.35.0" @@ -62,21 +62,21 @@ audio-engine = { version = "0.4.2", optional = true } rfd = { version = "0.9.1", optional = true, features = ["file-handle-inner"] } -serde = { version = "1", features = ["derive"] } -ron = "0.6" +serde = { version = "1.0.210", features = ["derive"] } +ron = "0.8.1" winit = { version = "0.27.5", features = ["serde"] } -log = "0.4.14" +log = "0.4.22" -image = { version = "0.24.3", default-features = false, features = ["png"] } -parking_lot = "0.11" -once_cell = "1.10.0" +image = { version = "0.25.4", default-features = false, features = ["png"] } +parking_lot = "0.12.3" +once_cell = "1.20.2" instant = { version = "0.1.12", features = ["wasm-bindgen"] } -flume = { version = "0.10.12", default-features = false } +flume = { version = "0.11.1", default-features = false } cfg-if = "1.0.0" -toml = "0.5.9" -flate2 = "1.0.24" -ureq = { version = "2.6.2", default-features = false } +toml = "0.8.19" +flate2 = "1.0.34" +ureq = { version = "2.10.1", default-features = false } [target.'cfg(target_arch = "x86_64")'.dependencies] @@ -84,20 +84,20 @@ gameroy-jit = { path = "jit" } [target.'cfg(target_arch = "wasm32")'.dependencies] -wasm-bindgen = "0.2.80" -js-sys = "0.3" +wasm-bindgen = "0.2.95" +js-sys = "0.3.72" wasm-bindgen-futures = "0.4" -base64 = "0.13" +base64 = "0.22.1" [target.'cfg(target_arch = "wasm32")'.dependencies.web-sys] -version = "0.3" +version = "0.3.72" features = ['Document', 'Element', 'Storage', 'Window', 'File', 'FileReader'] [target.'cfg(target_os = "android")'.dependencies] -ndk-glue = { version = "0.7", features = ["logger"] } +ndk-glue = { version = "0.7.0", features = ["logger"] } ndk-context = { version = "0.1.1" } jni = "0.19.0" -urlencoding = "2.1" +urlencoding = "2.1.3" [patch.crates-io] @@ -130,8 +130,6 @@ opt-level = 3 opt-level = 3 [profile.dev.package.miniz_oxide] opt-level = 3 -[profile.dev.package.adler] -opt-level = 3 [profile.dev.package.flate2] opt-level = 3 diff --git a/android/Cargo.toml b/android/Cargo.toml index c3b4a52..9544c66 100644 --- a/android/Cargo.toml +++ b/android/Cargo.toml @@ -10,7 +10,7 @@ license.workspace = true [lib] name = "gameroy_android" -crate_type = ["cdylib", "rlib"] +crate-type = ["cdylib", "rlib"] path = "src/lib.rs" [features] @@ -24,8 +24,8 @@ default = ["threads", "audio-engine", "static", "rfd"] [dependencies] gameroy = { path = "..", default-features = false } -log = "0.4.14" +log = "0.4.22" jni = "0.19.0" [target.'cfg(target_os = "android")'.dependencies] -ndk-glue = { version = "0.7", features = ["logger"] } +ndk-glue = { version = "0.7.0", features = ["logger"] } diff --git a/android/app/build.gradle b/android/app/build.gradle index 114dc71..88022f7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -14,7 +14,7 @@ android { compileSdk 30 - ndkVersion "24.0.8215888" + ndkVersion "26.3.11579264" defaultConfig { applicationId "io.github.rodrigodd.gameroy" @@ -83,12 +83,15 @@ tasks.whenTaskAdded { task -> if (task.name == 'mergeDebugJniLibFolders' || task.name == 'mergeReleaseJniLibFolders') { task.dependsOn 'cargoBuild' } - if (/*task.name == 'generateDebugAssets' ||*/ task.name == 'generateReleaseAssets') { + if (/*task.name == 'mergeDebugAssets' ||*/ task.name == 'mergeReleaseAssets') { task.dependsOn 'generateLicenseAsset' } if (task.name == 'lintVitalAnalyzeRelease') { task.dependsOn 'generateLicenseAsset' } + if (task.name == 'generateReleaseLintVitalReportModel') { + task.dependsOn 'generateLicenseAsset' + } for (target in cargo.targets) { if (task.name == "cargoBuild${target.capitalize()}") { task.dependsOn "copy_libc++_shared${target.capitalize()}" diff --git a/android/build.gradle b/android/build.gradle index ce0da69..b7a8cfe 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,11 +1,11 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.4.0' apply false + id 'com.android.application' version '8.7.0' apply false id 'com.android.library' version '7.1.2' apply false id 'org.mozilla.rust-android-gradle.rust-android' version "0.9.3" apply false id "com.dorongold.task-tree" version "2.1.0" } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } diff --git a/android/gradle.properties b/android/gradle.properties index d5e8af3..f7faa42 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -19,3 +19,5 @@ android.useAndroidX=true # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true +android.defaults.buildfeatures.buildconfig=true +android.nonFinalResIds=false diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index 943f0cb..2c35211 100644 Binary files a/android/gradle/wrapper/gradle-wrapper.jar and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index f398c33..09523c0 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew index 65dcd68..f5feea6 100755 --- a/android/gradlew +++ b/android/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -83,10 +85,9 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +134,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +148,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +156,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,11 +201,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/android/gradlew.bat b/android/gradlew.bat index 93e3f59..9b42019 100644 --- a/android/gradlew.bat +++ b/android/gradlew.bat @@ -1,92 +1,94 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/core/Cargo.toml b/core/Cargo.toml index 6e14d6b..1237e80 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -22,7 +22,8 @@ io_trace = [] [dependencies] [dev-dependencies] -image = { version = "0.24", default-features = false, features = ["png"] } +image = { version = "0.25.4", default-features = false, features = ["png"] } rand = "0.8.4" -criterion = "0.4" -rayon = "1.6.1" +criterion = "0.5.1" +rayon = "1.10.0" +text-diff = "0.4.0" diff --git a/core/src/gameboy.rs b/core/src/gameboy.rs index d945b91..2eb04d9 100644 --- a/core/src/gameboy.rs +++ b/core/src/gameboy.rs @@ -68,7 +68,7 @@ pub struct GameBoy { /// The clock_count when the next interrupt may happen. pub next_interrupt: Cell, - /// trace of reads and writes. (kind | ((clock_count & !3) >> 1), address, value), kind: 0=read,1=write + /// trace of reads and writes. (kind | ((clock_count & !3) >> 1), address, value), kind: 0=GameBoy::IO_READ,1=GameBoy::IO_WRITE #[cfg(feature = "io_trace")] pub io_trace: RefCell>, } @@ -148,6 +148,11 @@ crate::save_state!(GameBoy, self, ctx, data { on_load self.update_next_interrupt(); }); impl GameBoy { + #[cfg(feature = "io_trace")] + pub const IO_READ: u8 = 0; + #[cfg(feature = "io_trace")] + pub const IO_WRITE: u8 = 1; + pub fn new(boot_rom: Option<[u8; 0x100]>, cartridge: Cartridge) -> Self { let mut this = Self { trace: RefCell::new(Trace::new()), diff --git a/core/src/gameboy/cartridge.rs b/core/src/gameboy/cartridge.rs index 8b67586..397be68 100644 --- a/core/src/gameboy/cartridge.rs +++ b/core/src/gameboy/cartridge.rs @@ -148,6 +148,7 @@ impl CartridgeHeader { } } +#[allow(clippy::enum_variant_names)] #[derive(PartialEq, Eq, Clone)] enum Mbc { None(Mbc0), @@ -227,7 +228,7 @@ impl Cartridge { let mbc_kind = header.cartridge_type; let mbc = match mbc_kind { 0 | 8 | 9 => Mbc::None(Mbc0 {}), - 1 | 2 | 3 => 'mbc1: { + 1..=3 => 'mbc1: { // Detect if it is a MBC1M card if header.rom_size == 5 { let mut number_of_games = 0; @@ -248,8 +249,8 @@ impl Cartridge { Mbc::Mbc1(Mbc1::new()) } 5 | 6 => Mbc::Mbc2(Mbc2::new()), - 0x0F | 0x10 | 0x11 | 0x12 | 0x13 => Mbc::Mbc3(Mbc3::new()), - 0x19 | 0x1A | 0x1B | 0x1C | 0x1D | 0x1E => Mbc::Mbc5(Mbc5::new()), + 0x0F..=0x13 => Mbc::Mbc3(Mbc3::new()), + 0x19..=0x1E => Mbc::Mbc5(Mbc5::new()), _ => { return Err(format!( "MBC type '{}' ({:02x}) is not supported", @@ -585,7 +586,7 @@ impl Mbc1 { (lower_bank, upper_bank) } - pub fn read(&self, address: u16, rom: &[u8], ram: &Vec) -> u8 { + pub fn read(&self, address: u16, rom: &[u8], ram: &[u8]) -> u8 { match address { // ROM Bank X0 0x0000..=0x3FFF => { @@ -631,7 +632,7 @@ impl Mbc1 { } } - pub fn write(&mut self, address: u16, value: u8, rom: &[u8], ram: &mut Vec) { + pub fn write(&mut self, address: u16, value: u8, rom: &[u8], ram: &mut [u8]) { match address { // RAM Enable 0x0000..=0x1FFF => { @@ -745,7 +746,7 @@ impl Mbc1M { (lower_bank, upper_bank) } - pub fn read(&self, address: u16, rom: &[u8], ram: &Vec) -> u8 { + pub fn read(&self, address: u16, rom: &[u8], ram: &[u8]) -> u8 { match address { // ROM Bank X0 0x0000..=0x3FFF => { @@ -791,7 +792,7 @@ impl Mbc1M { } } - pub fn write(&mut self, address: u16, value: u8, rom: &[u8], ram: &mut Vec) { + pub fn write(&mut self, address: u16, value: u8, rom: &[u8], ram: &mut [u8]) { match address { // RAM Enable 0x0000..=0x1FFF => { @@ -1015,7 +1016,7 @@ impl Mbc3 { (lower_bank, upper_bank) } - pub fn read(&self, address: u16, rom: &[u8], ram: &Vec) -> u8 { + pub fn read(&self, address: u16, rom: &[u8], ram: &[u8]) -> u8 { match address { // ROM Bank 00 0x0000..=0x3FFF => rom[address as usize], @@ -1060,7 +1061,7 @@ impl Mbc3 { } } - pub fn write(&mut self, address: u16, value: u8, _rom: &[u8], ram: &mut Vec) { + pub fn write(&mut self, address: u16, value: u8, _rom: &[u8], ram: &mut [u8]) { match address { // RAM Enable 0x0000..=0x1FFF => { @@ -1191,7 +1192,7 @@ impl Mbc5 { (lower_bank, upper_bank) } - pub fn read(&self, address: u16, rom: &[u8], ram: &Vec) -> u8 { + pub fn read(&self, address: u16, rom: &[u8], ram: &[u8]) -> u8 { match address { // ROM Bank 00 0x0000..=0x3FFF => rom[address as usize], @@ -1214,7 +1215,7 @@ impl Mbc5 { } } - pub fn write(&mut self, address: u16, value: u8, _rom: &[u8], ram: &mut Vec) { + pub fn write(&mut self, address: u16, value: u8, _rom: &[u8], ram: &mut [u8]) { match address { // RAM Enable 0x0000..=0x1FFF => { diff --git a/core/src/gameboy/ppu.rs b/core/src/gameboy/ppu.rs index 70d04b9..79ed5a2 100644 --- a/core/src/gameboy/ppu.rs +++ b/core/src/gameboy/ppu.rs @@ -1596,6 +1596,7 @@ impl Ppu { // The ly becomes 0, 6 cycles after becoming 153 let ly = if self.ly == 0 { + #[allow(clippy::manual_range_patterns)] match self.state { 19 | 20 | 21 | 22 | 23 => 153, _ => 0, diff --git a/core/src/interpreter.rs b/core/src/interpreter.rs index dd72eb0..7619fea 100644 --- a/core/src/interpreter.rs +++ b/core/src/interpreter.rs @@ -1294,7 +1294,7 @@ impl Interpreter<'_> { let value = self.0.read(address); #[cfg(feature = "io_trace")] self.0.io_trace.borrow_mut().push(( - 0 | ((self.0.clock_count & !3) as u8 >> 1), + GameBoy::IO_READ | ((self.0.clock_count & !3) as u8 >> 1), address, value, )); @@ -1304,7 +1304,7 @@ impl Interpreter<'_> { fn gb_write(&mut self, address: u16, value: u8) { #[cfg(feature = "io_trace")] self.0.io_trace.borrow_mut().push(( - 1 | ((self.0.clock_count & !3) as u8 >> 1), + GameBoy::IO_WRITE | ((self.0.clock_count & !3) as u8 >> 1), address, value, )); diff --git a/core/src/save_state.rs b/core/src/save_state.rs index 26a600d..011bc78 100644 --- a/core/src/save_state.rs +++ b/core/src/save_state.rs @@ -72,7 +72,7 @@ impl SaveState for SaveStateHeader { if let Some(time) = ctx.time { time.save_state(ctx, data)?; } else { - u64::max_value().save_state(ctx, data)?; + u64::MAX.save_state(ctx, data)?; } Ok(()) } @@ -93,7 +93,7 @@ impl SaveState for SaveStateHeader { if ctx.version > 1 { let mut time = 0; time.load_state(ctx, data)?; - ctx.time = (time != u64::max_value()).then_some(time); + ctx.time = (time != u64::MAX).then_some(time); } else { ctx.time = None; } diff --git a/core/tests/test_rom.rs b/core/tests/test_rom.rs index fabc152..8fef6de 100644 --- a/core/tests/test_rom.rs +++ b/core/tests/test_rom.rs @@ -526,13 +526,20 @@ fn save_state3() { log!(romstr, "number of loads: {}", count); } +fn diff(a: &T, b: &T) { + text_diff::print_diff(&format!("{:#?}", a), &format!("{:#?}", b), "\n"); +} + fn assert_gb_eq(a: &GameBoy, b: &GameBoy) -> bool { + a.update_all(); + b.update_all(); + if a != b { println!(); println!(); if a.cpu != b.cpu { - println!("cpu don't match: {:?}", a.cpu); - println!(" {:?}", b.cpu); + println!("cpu don't match:"); + diff(&a.cpu, &b.cpu); } if a.cartridge != b.cartridge { println!("cartridge don't match") @@ -550,15 +557,15 @@ fn assert_gb_eq(a: &GameBoy, b: &GameBoy) -> bool { println!("clock_count don't match") } if a.timer != b.timer { - println!("timer don't match: {:?}", a.timer); - println!(" {:?}", b.timer); + println!("timer don't match:"); + diff(&a.timer, &b.timer); } if a.sound != b.sound { println!("sound don't match") } if a.ppu != b.ppu { - println!("ppu don't match: {:?}", a.ppu); - println!(" {:?}", b.ppu); + println!("ppu don't match:"); + diff(&a.ppu, &b.ppu); } if a.joypad != b.joypad { println!("joypad don't match: {:02x}", a.joypad); @@ -834,6 +841,7 @@ mod mooneye { oam_dma_basic("acceptance/oam_dma/basic", 120*CLOCK_SPEED); oam_dma_reg_read("acceptance/oam_dma/reg_read", 120*CLOCK_SPEED); oam_dma_sources_gs("acceptance/oam_dma/sources-GS", 120*CLOCK_SPEED); + #[ignore] ppu_hblank_ly_scx_timing_gs("acceptance/ppu/hblank_ly_scx_timing-GS", 120*CLOCK_SPEED); ppu_intr_1_2_timing_gs("acceptance/ppu/intr_1_2_timing-GS", 120*CLOCK_SPEED); ppu_intr_2_0_timing("acceptance/ppu/intr_2_0_timing", 120*CLOCK_SPEED); diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 2347ecd..75985cb 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -11,7 +11,7 @@ cargo-fuzz = true io_trace = ["gameroy-core/io_trace", "gameroy-jit/io_trace"] [dependencies] -libfuzzer-sys = "0.4" +libfuzzer-sys = "0.4.7" gameroy-core = { path = "../core" } gameroy-jit = { path = "../jit" } diff --git a/jit/Cargo.toml b/jit/Cargo.toml index 393d20b..76d4b0c 100644 --- a/jit/Cargo.toml +++ b/jit/Cargo.toml @@ -19,15 +19,15 @@ emit_debug_info = [] [dependencies] gameroy-core = { path = "../core" } -dynasmrt = "2.0.0" +dynasmrt = "3.0.0" cfg-if = "1.0.0" -memoffset = "0.8.0" +memoffset = "0.9.1" [target.'cfg(windows)'.dependencies] -windows-sys = { version = "0.45.0", features = [ +windows-sys = { version = "0.59.0", features = [ "Win32_System_Diagnostics_Debug", "Win32_Foundation", ] } [dev-dependencies] -rayon = "1.6.1" +rayon = "1.10.0" diff --git a/jit/src/lib.rs b/jit/src/lib.rs index de07ab0..1c54887 100644 --- a/jit/src/lib.rs +++ b/jit/src/lib.rs @@ -24,7 +24,15 @@ pub struct Block { _length: u16, initial_block_clock_cycles: u32, _max_clock_cycles: u32, + + /// The function pointer to the compiled code. Points into `_compiled_code`'s' buffer, so its + /// lifetime is associated with that one. + /// + /// # SAFETY + /// + /// Must not be called after `_compiled_code` is dropped. fn_ptr: unsafe extern "sysv64" fn(&mut GameBoy), + pub _compiled_code: ExecutableBuffer, _bytes: usize, @@ -39,9 +47,7 @@ pub struct Block { impl Block { #[inline(never)] fn call(&self, gb: &mut GameBoy) { - // SAFETY: As long as `Block`s are only generated from BlockCompiler::compile, and - // Self::_compiled_code is not mutated, self.fn_ptr should be pointing to a valid x64 - // function. + // SAFETY: `_compiled_code` is still a valid executable buffer. unsafe { (self.fn_ptr)(gb) } } } diff --git a/jit/src/x64.rs b/jit/src/x64.rs index 1808299..0833208 100644 --- a/jit/src/x64.rs +++ b/jit/src/x64.rs @@ -225,11 +225,7 @@ impl<'a> BlockCompiler<'a> { self.instrs[i].accum_clock_count = self.accum_clock_count; // if false, the opcode was compiled to a interpreter call. - if self.compile_opcode(ops, op) { - last_one_was_compiled = true; - } else { - last_one_was_compiled = false; - } + last_one_was_compiled = self.compile_opcode(ops, op); if curr_check > 0 { debug_assert!( @@ -333,7 +329,15 @@ impl<'a> BlockCompiler<'a> { _length: self.block_trace.length, initial_block_clock_cycles: self.block_trace.interrupt_checks[0].1, _max_clock_cycles: self.block_trace.interrupt_checks.iter().map(|x| x.1).sum(), - fn_ptr: unsafe { std::mem::transmute(compiled_code.as_ptr()) }, + + // SAFETY: The pointer points to executable memory, containing valid machine code, + // complying with the function ABI. + fn_ptr: unsafe { + std::mem::transmute::<*const u8, unsafe extern "sysv64" fn(&mut GameBoy)>( + compiled_code.as_ptr(), + ) + }, + _compiled_code: compiled_code, _bytes: bytes, #[cfg(feature = "statistics")] @@ -483,7 +487,7 @@ impl<'a> BlockCompiler<'a> { .position(|x| x.pc == address && x.bank == curr_bank); let Some(target) = target else { - return self.exit_block(ops) + return self.exit_block(ops); }; let target_was_compiled = self.curr_instr >= target; @@ -496,7 +500,7 @@ impl<'a> BlockCompiler<'a> { .find(|x| *x > self.instrs[target].curr_clock_count); let Some(next_check) = next_check else { - return self.exit_block(ops) + return self.exit_block(ops); }; self.check_interrupt(ops, self.instrs[target].curr_clock_count, next_check); @@ -1719,16 +1723,16 @@ impl<'a> BlockCompiler<'a> { } #[cfg(feature = "io_trace")] - let mut io_trace = |ops: &mut Assembler, address: u16| { + let io_trace = |this: &mut Self, ops: &mut Assembler, address: u16| { extern "sysv64" fn trace_write(gb: &mut GameBoy, address: u16, value: u8) { gb.io_trace.borrow_mut().push(( - 1 | ((gb.clock_count & !3) as u8 >> 1), + GameBoy::IO_WRITE | ((gb.clock_count & !3) as u8 >> 1), address, value, )); } - self.update_clock_count(ops); + this.update_clock_count(ops); dynasm!(ops ; .arch x64 ; mov rax, QWORD trace_write as usize as i64 @@ -1758,7 +1762,7 @@ impl<'a> BlockCompiler<'a> { ); #[cfg(feature = "io_trace")] - io_trace(&mut *ops, address); + io_trace(self, &mut *ops, address); self.tick(4); return; @@ -1781,7 +1785,7 @@ impl<'a> BlockCompiler<'a> { ); #[cfg(feature = "io_trace")] - io_trace(ops, address); + io_trace(self, ops, address); self.tick(4); return; @@ -1821,11 +1825,11 @@ impl<'a> BlockCompiler<'a> { let address = self.get_immediate16(); #[cfg(feature = "io_trace")] - let mut io_trace = |this: &mut Self, ops: &mut Assembler, address: u16| { + let io_trace = |this: &mut Self, ops: &mut Assembler, address: u16| { extern "sysv64" fn trace_read(gb: &mut GameBoy, address: u16) { let value = gb.read(address); gb.io_trace.borrow_mut().push(( - 0 | ((gb.clock_count & !3) as u8 >> 1), + GameBoy::IO_READ | ((gb.clock_count & !3) as u8 >> 1), address, value, )); @@ -1841,6 +1845,7 @@ impl<'a> BlockCompiler<'a> { ); }; + #[allow(clippy::manual_range_patterns)] match address { // Cartridge ROM, lower bank 0x0000..=0x3FFF => { @@ -4127,9 +4132,11 @@ impl<'a> BlockCompiler<'a> { let start_next_interrupt = gb.next_interrupt.get(); let value = gb.read(address); #[cfg(feature = "io_trace")] - gb.io_trace - .borrow_mut() - .push((0 | ((gb.clock_count & !3) as u8 >> 1), address, value)); + gb.io_trace.borrow_mut().push(( + GameBoy::IO_READ | ((gb.clock_count & !3) as u8 >> 1), + address, + value, + )); debug_assert!( gb.next_interrupt.get() >= start_next_interrupt, "{} >= {} (read {:04x})", @@ -4155,9 +4162,11 @@ impl<'a> BlockCompiler<'a> { fn write_mem(&mut self, ops: &mut Assembler) { extern "sysv64" fn write(gb: &mut GameBoy, address: u16, value: u8) { #[cfg(feature = "io_trace")] - gb.io_trace - .borrow_mut() - .push((1 | ((gb.clock_count & !3) as u8 >> 1), address, value)); + gb.io_trace.borrow_mut().push(( + GameBoy::IO_WRITE | ((gb.clock_count & !3) as u8 >> 1), + address, + value, + )); gb.write(address, value); } diff --git a/libretro/Cargo.toml b/libretro/Cargo.toml index 156b8aa..ae3a440 100644 --- a/libretro/Cargo.toml +++ b/libretro/Cargo.toml @@ -14,4 +14,4 @@ crate-type = ["cdylib"] [dependencies] rust-libretro-sys = "0.1.5" gameroy-core = { path = "../core", default-features = false } -log = "0.4.17" +log = "0.4.22" diff --git a/native/Cargo.toml b/native/Cargo.toml index 9592527..b0a5f4d 100644 --- a/native/Cargo.toml +++ b/native/Cargo.toml @@ -30,8 +30,8 @@ default = ["threads", "console", "audio-engine", "rfd"] gameroy = { path = "..", default-features = false } winit = "0.26.1" -flexi_logger = "0.22.3" -clap = { version = "4.3.0", features = ["derive"] } +flexi_logger = "0.29.3" +clap = { version = "4.5.20", features = ["derive"] } log = "0.4" [target.'cfg(target_arch = "x86_64")'.dependencies] @@ -39,4 +39,4 @@ log = "0.4" gameroy-jit = { path = "../jit" } [build-dependencies] -embed-resource = "1.7.1" +embed-resource = "2.5.0" diff --git a/native/build.rs b/native/build.rs index 946e78a..4867b90 100644 --- a/native/build.rs +++ b/native/build.rs @@ -4,6 +4,6 @@ fn main() { println!("cargo:rerun-if-changed=../assets/resources.rc"); let target = std::env::var("TARGET").unwrap(); if target.contains("windows") { - embed_resource::compile("../assets/resources.rc") + embed_resource::compile("../assets/resources.rc", embed_resource::NONE) } } diff --git a/package.sh b/package.sh index 5b2e0c5..bf8fa76 100644 --- a/package.sh +++ b/package.sh @@ -2,7 +2,7 @@ # a script for packaging the app for linux release. -cargo about generate -m native\Cargo.toml -c license\about-linux.toml license\about.hbs > license\license.html +cargo about generate -m native/Cargo.toml -c license/about-linux.toml license/about.hbs -o license/license.html cargo build --profile minsize --features=static,rfd,audio-engine mkdir package diff --git a/src/emulator.rs b/src/emulator.rs index 9f8731b..6b7f8d5 100644 --- a/src/emulator.rs +++ b/src/emulator.rs @@ -1,4 +1,4 @@ -use std::{collections::VecDeque, io::Write, sync::Arc}; +use std::{io::Write, sync::Arc}; #[cfg(feature = "audio-engine")] use audio_engine::{AudioEngine, SoundSource}; @@ -50,7 +50,7 @@ enum EmulatorState { #[cfg(feature = "audio-engine")] struct Buffer { - buffer: Arc>>, + buffer: Arc>>, sample_rate: u32, } #[cfg(feature = "audio-engine")] @@ -346,7 +346,7 @@ impl Timeline { #[cfg(feature = "audio-engine")] struct SoundBackend { _audio_engine: AudioEngine, - audio_buffer: Arc>>, + audio_buffer: Arc>>, last_buffer_len: usize, } @@ -397,7 +397,8 @@ impl Emulator { #[cfg(feature = "audio-engine")] let sound = match AudioEngine::new() { Ok(audio_engine) => { - let audio_buffer = Arc::new(ParkMutex::new(VecDeque::::new())); + let audio_buffer = + Arc::new(ParkMutex::new(std::collections::VecDeque::::new())); let buffer = Buffer { buffer: audio_buffer.clone(), sample_rate: audio_engine.sample_rate(), @@ -432,7 +433,7 @@ impl Emulator { let joypad_timeline = movie.map_or(Vec::new(), |m| { (0..BOOT_FRAMES) .map(|_| 0) - .chain(m.controller_data.into_iter()) + .chain(m.controller_data) .map(|x| { let joy = !(x as u8); ((joy & 0x0F) << 4) | (joy >> 4) @@ -650,7 +651,7 @@ impl Emulator { let mut gb = self.gb.lock(); let mut joypad = self.joypad.lock(); loop { - let Some(last_clock_count) = joypad.last_frame_clock_count() else { + let Some(last_clock_count) = joypad.last_frame_clock_count() else { log::warn!("there is no last frame"); break; }; @@ -802,9 +803,6 @@ impl Emulator { } fn update_audio(&mut self) { - let mut gb = self.gb.lock(); - let clock_count = gb.clock_count; - let buffer = gb.sound.get_mut().get_output(clock_count); #[cfg(feature = "audio-engine")] if let Some(SoundBackend { audio_buffer, @@ -812,6 +810,10 @@ impl Emulator { .. }) = &mut self.sound { + let mut gb = self.gb.lock(); + let clock_count = gb.clock_count; + let buffer = gb.sound.get_mut().get_output(clock_count); + let mut lock = audio_buffer.lock(); if lock.len() == 0 { // if the buffer is empty, add zeros to increase it diff --git a/src/event_table.rs b/src/event_table.rs index 33c7ff5..78b4e07 100644 --- a/src/event_table.rs +++ b/src/event_table.rs @@ -10,10 +10,6 @@ use giui::{Context, Id}; pub trait Event: Clone + 'static {} -#[derive(Clone)] -pub struct Debug(pub bool); -impl Event for Debug {} - #[derive(Clone, Copy)] pub struct FrameUpdated; impl Event for FrameUpdated {} @@ -90,7 +86,7 @@ impl EventTable { let list = self.listeners.entry(TypeId::of::()).or_insert_with(|| { Rc::new(List:: { listeners: Default::default(), - _event: PhantomData::default(), + _event: PhantomData, }) }); list.clone().downcast::>().unwrap() diff --git a/src/lib.rs b/src/lib.rs index f6526a9..2af3587 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,6 @@ +// To minimize changes between platforms, we still use Arc-Mutex on Wasm. +#![allow(clippy::arc_with_non_send_sync)] + #[cfg(target_arch = "wasm32")] pub static RESIZE: parking_lot::Mutex> = parking_lot::const_mutex(None); @@ -222,7 +225,7 @@ fn start_event_loop( } => { log::debug!("clear ui"); ui.clear(); - ui.reload_graphics(&*window); + ui.reload_graphics(&window); log::debug!("build ui"); last(app).build_ui(&mut ui); } @@ -260,7 +263,7 @@ fn start_event_loop( { if let Some((width, height)) = RESIZE.lock().take() { let size = winit::dpi::PhysicalSize { width, height }; - ui.resize(size.clone(), &window); + ui.resize(size, &window); window.set_inner_size(size); } } @@ -347,8 +350,6 @@ trait App: Any { ); fn build_ui(&self, ui: &mut ui::Ui); - - fn as_any(&mut self) -> &mut dyn Any; } struct RomLoadingApp; @@ -392,13 +393,10 @@ impl App for RomLoadingApp { let style = &gui.get::().clone(); ui::create_rom_loading_ui(gui, style, ui.event_table.clone()); } - - fn as_any(&mut self) -> &mut dyn Any { - self - } } struct EmulatorApp { + #[cfg(feature = "threads")] lcd_screen: Arc< parking_lot::lock_api::Mutex, >, @@ -473,7 +471,9 @@ impl EmulatorApp { }; EmulatorApp { + #[cfg(feature = "threads")] lcd_screen, + emu_channel, #[cfg(feature = "threads")] emu_thread, @@ -611,7 +611,6 @@ impl App for EmulatorApp { WatchsUpdated => ui.notify(event_table::WatchsUpdated), Debug(value) => { ui.get::().debug = value; - ui.notify(event_table::Debug(value)); self.emu_channel.send(EmulatorEvent::Debug(value)).unwrap(); } _ => {} @@ -620,10 +619,6 @@ impl App for EmulatorApp { _ => {} } } - - fn as_any(&mut self) -> &mut dyn Any { - self - } } pub enum UserEvent { diff --git a/src/rom_loading.rs b/src/rom_loading.rs index 659442f..3a962bc 100644 --- a/src/rom_loading.rs +++ b/src/rom_loading.rs @@ -88,7 +88,7 @@ pub fn get_thumb(file_name: &str) -> Result, String> { image.as_raw().as_slice(), image.width(), image.height(), - image::ColorType::Rgba8, + image::ExtendedColorType::Rgba8, ) .map_err(|err| format!("failed to png encode thumbnail: {}", err))?; diff --git a/src/rom_loading/wasm.rs b/src/rom_loading/wasm.rs index 0693953..32d0e2b 100644 --- a/src/rom_loading/wasm.rs +++ b/src/rom_loading/wasm.rs @@ -1,6 +1,6 @@ use std::borrow::Cow; -use gameroy::gameboy::cartridge::CartridgeHeader; +use base64::engine::{general_purpose::STANDARD as BASE64, Engine}; use wasm_bindgen::{closure::Closure, JsCast, JsValue}; pub fn load_roms(_roms_path: &str) -> Result, String> { @@ -22,7 +22,9 @@ pub fn load_file(file_name: &str) -> Result, String> { .map_err(|_| "error getting item from local storage".to_string())? .ok_or_else(|| "save not found".to_string())?; - base64::decode(save).map_err(|err| format!("failed decoding save: {}", err.to_string())) + BASE64 + .decode(save) + .map_err(|err| format!("failed decoding save: {}", err)) } pub fn save_file(file_name: &str, data: &[u8]) -> Result<(), String> { @@ -32,7 +34,7 @@ pub fn save_file(file_name: &str, data: &[u8]) -> Result<(), String> { .map_err(|_| "error getting local storage".to_string())? .ok_or_else(|| "local storage is null".to_string())?; - let save = base64::encode(data); + let save = BASE64.encode(data); local_storage .set_item(file_name, &save) diff --git a/src/style.rs b/src/style.rs index e6b092e..8cf2a7f 100644 --- a/src/style.rs +++ b/src/style.rs @@ -85,13 +85,13 @@ mod loaded_files { return *texture; } - let data = loop { + let data = 'data: { if name == "white.png" { let mut image_buffer = ImageBuffer::new(1, 1); image_buffer .pixels_mut() .for_each(|x| *x = Rgba::::from([255, 255, 255, 255])); - break image_buffer; + break 'data image_buffer; } let mut path = config::base_folder().unwrap(); @@ -105,9 +105,8 @@ mod loaded_files { return (0, 0, 0); } }; - let data = data.to_rgba8(); - break data; + data.to_rgba8() }; // FIXME: this is vunerable to hash collisions, and relies on how TextureId is used @@ -296,7 +295,12 @@ pub struct Style { pub fold_icon: FoldIcon, pub button_panel: Graphic, pub delete_icon: Graphic, + #[cfg_attr( + not(all(feature = "rfd", not(target_arch = "wasm32"))), + allow(dead_code) + )] pub open_icon: Graphic, + #[cfg_attr(not(feature = "rfd"), allow(dead_code))] pub file_icon: Graphic, pub menu_icon: Graphic, pub forward_icon: Graphic, diff --git a/src/ui.rs b/src/ui.rs index caaefbe..b19e521 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -7,7 +7,7 @@ use giui::{ widgets::{ListBuilder, ScrollBar, ScrollView, ViewLayout}, BuilderContext, ControlBuilder, Gui, GuiRender, Id, }; -use sprite_render::{Camera, NoopSpriteRender, SpriteInstance, SpriteRender, Texture, TextureId}; +use sprite_render::{Camera, SpriteInstance, SpriteRender, Texture, TextureId}; use winit::{ dpi::PhysicalSize, event::WindowEvent, @@ -21,7 +21,7 @@ mod emulator_ui; pub use emulator_ui::create_emulator_ui; mod rom_loading_ui; -pub use rom_loading_ui::{create_rom_loading_ui, RomEntries, RomEntry}; +pub use rom_loading_ui::{create_rom_loading_ui, RomEntries}; struct Render<'a>(&'a mut dyn SpriteRender); impl<'a> GuiRenderer for Render<'a> { @@ -79,10 +79,10 @@ impl Ui { .map(|x| Box::new(x) as Box) .unwrap_or_else(|err| { log::error!("failed to create GlSpriteRender: {:?}", err); - Box::new(NoopSpriteRender) + Box::new(sprite_render::NoopSpriteRender) }); #[cfg(target_arch = "wasm32")] - let mut render = Box::new(sprite_render::WebGLSpriteRender::new(window)); + let render = Box::new(sprite_render::WebGLSpriteRender::new(window)); log::info!("loading graphics"); @@ -157,7 +157,6 @@ impl Ui { .set_position((size.width as f32) / 2.0, (size.height as f32) / 2.0); let scale_factor = window.scale_factor(); - log::info!("scale factor: {}", scale_factor); self.gui.set_scale_factor(scale_factor); @@ -210,6 +209,7 @@ impl Ui { } } + #[cfg(feature = "threads")] pub fn update_screen_texture(&mut self, img_data: &[u8]) { self.render .update_texture(TextureId(self.textures.screen), Some(img_data), None) diff --git a/src/ui/emulator_ui/disassembler_viewer.rs b/src/ui/emulator_ui/disassembler_viewer.rs index 501c317..ba9908a 100644 --- a/src/ui/emulator_ui/disassembler_viewer.rs +++ b/src/ui/emulator_ui/disassembler_viewer.rs @@ -1,4 +1,4 @@ -use std::{any::Any, ops::Range, sync::Arc, usize}; +use std::{any::Any, ops::Range, sync::Arc}; use gameroy::{ debugger::{break_flags, Debugger}, diff --git a/src/ui/rom_loading_ui.rs b/src/ui/rom_loading_ui.rs index e316d53..2edc0ec 100644 --- a/src/ui/rom_loading_ui.rs +++ b/src/ui/rom_loading_ui.rs @@ -12,7 +12,7 @@ use giui::{ widgets::{Button, ListBuilder}, Id, }; -use winit::{event_loop::EventLoopProxy, window::Window}; +use winit::event_loop::EventLoopProxy; use crate::{ config::config, @@ -622,7 +622,7 @@ pub fn create_rom_loading_ui( style.delete_button.clone(), true, move |_, ctx| { - let handle = ctx.get::>().clone(); + let handle = ctx.get::>().clone(); let proxy = ctx.get::>().clone(); let task = async move { let handle = &*handle; @@ -676,7 +676,7 @@ pub fn create_rom_loading_ui( style.delete_button.clone(), true, move |_, ctx| { - let handle = ctx.get::>().clone(); + let handle = ctx.get::>().clone(); let proxy = ctx.get::>().clone(); let task = async move { let handle = &*handle; diff --git a/src/widget/split_view.rs b/src/widget/split_view.rs index f4f62d1..953405f 100644 --- a/src/widget/split_view.rs +++ b/src/widget/split_view.rs @@ -63,7 +63,7 @@ impl Layout for SplitView { let left = ctx .get_active_children(this) - .get(0) + .first() .map(|&id| ctx.get_min_size(id)) .unwrap_or([0.0, 0.0]); let right = ctx @@ -96,7 +96,7 @@ impl Layout for SplitView { return; } - let left_child = ctx.get_active_children(this).get(0).copied(); + let left_child = ctx.get_active_children(this).first().copied(); let right_child = ctx.get_active_children(this).get(1).copied(); let rect = ctx.get_layouting(this); diff --git a/wasm/Cargo.toml b/wasm/Cargo.toml index 67e03a6..061dc11 100644 --- a/wasm/Cargo.toml +++ b/wasm/Cargo.toml @@ -10,7 +10,7 @@ license.workspace = true [lib] name = "gameroy_wasm" -crate_type = ["cdylib", "rlib"] +crate-type = ["cdylib", "rlib"] path = "src/lib.rs" [features] @@ -23,6 +23,6 @@ default = ["audio-engine", "static", "rfd"] [dependencies] gameroy = { path = "..", default-features = false } -wasm-bindgen = "0.2.80" +wasm-bindgen = "0.2.95" console_error_panic_hook = "0.1.7" wasm-logger = "0.2.0"