chore: Run cargo +nightly fmt --all - #24376
Merged
Merged
Conversation
kjarosh
reviewed
Aug 4, 2026
kjarosh
left a comment
Member
There was a problem hiding this comment.
Can we wait until this is in beta? Nightly changes often and there's no guarantee that this formatting will go stable.
SuchAFuriousDeath
approved these changes
Aug 5, 2026
torokati44
approved these changes
Aug 5, 2026
torokati44
left a comment
Member
There was a problem hiding this comment.
I personally wouldn't mind this getting in, even if nightly stuff will end up getting removed from CI (or even if this rule/capability of cargo-fmt never gets into beta/stable).
kjarosh
enabled auto-merge (rebase)
August 5, 2026 19:09
Hancock33
added a commit
to Hancock33/batocera.piboy
that referenced
this pull request
Aug 9, 2026
-----------------------------------------------------
amiberry.mk v8.3.0 # Version: Commits on Aug 05, 2026
-----------------------------------------------------
Windows release binaries are signed through SignPath. See the Code signing policy: https://amiberry.com/code-signing-policy
<!-- Release notes generated using configuration in .github/release.yml at v8.3.0 -->
## What's Changed
### Other Changes
* Capsimage 5.2 update by @midwan in https://github.com/BlitterStudio/amiberry/pull/2120
* feat(android): adaptive CPU performance tuning via ADPF with affinity/uclamp fallback by @midwan in https://github.com/BlitterStudio/amiberry/pull/2121
* Android: Integer Scaling toggle + Hard Drives in Storage settings by @midwan in https://github.com/BlitterStudio/amiberry/pull/2123
* Fix collapsed group box hiding sibling column; more collapsible panels by @midwan in https://github.com/BlitterStudio/amiberry/pull/2124
* Collapsible left-nav sections to reduce scrolling by @midwan in https://github.com/BlitterStudio/amiberry/pull/2125
* Fix editing device/controller in CD & Tape Drive Settings (#2119) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2126
* Fix macOS crash when bsdsocket library closes from a trap thread (#2115) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2127
* Fix uae_sem_init semaphore-count inflation + RTG render lock + bsdsocket log spam (#2122) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2128
* Redirect debugger I/O via shell stdin/stdout (#2117) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2129
* libretro: add Crop Overscan core option by @midwan in https://github.com/BlitterStudio/amiberry/pull/2130
* Android: document-style config edit/save UX (Save / Save As, dirty tracking, unsaved-changes guard) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2132
* capsimage: fix IPF/CT-Raw images failing to lock with 5.2 library by @midwan in https://github.com/BlitterStudio/amiberry/pull/2133
* Android Kotlin UI UX improvements by @midwan in https://github.com/BlitterStudio/amiberry/pull/2137
* Fix Host Only cursor handling by @midwan in https://github.com/BlitterStudio/amiberry/pull/2138
* Fix serial RBF clear after SERDATR read by @midwan in https://github.com/BlitterStudio/amiberry/pull/2139
* Fix libretro audio starvation padding by @midwan in https://github.com/BlitterStudio/amiberry/pull/2140
* Improve AutoCrop policy by @midwan in https://github.com/BlitterStudio/amiberry/pull/2143
* Read and write RTG autoscale setting. by @dlundqvist in https://github.com/BlitterStudio/amiberry/pull/2142
* Persist used GFX filter settings by @midwan in https://github.com/BlitterStudio/amiberry/pull/2144
* Improve ImGui Play UX by @midwan in https://github.com/BlitterStudio/amiberry/pull/2146
* Fix warp mode after closing GUI by @midwan in https://github.com/BlitterStudio/amiberry/pull/2148
* Fix hardfile creation mode by @midwan in https://github.com/BlitterStudio/amiberry/pull/2149
* Fix Host Only cursor without Magic Mouse untrap by @midwan in https://github.com/BlitterStudio/amiberry/pull/2150
* Keep libretro crop from hiding visible content by @midwan in https://github.com/BlitterStudio/amiberry/pull/2151
* Fix native host cursor coordinate clamp by @midwan in https://github.com/BlitterStudio/amiberry/pull/2152
* a2065: poll the host receive queue from the hsync handler by @jusii in https://github.com/BlitterStudio/amiberry/pull/2153
* a4091: fix 53C710 register and SCSI FIFO tests (ncr7xx -t) by @codewiz in https://github.com/BlitterStudio/amiberry/pull/2156
* a4091: reject illegal 53C710 Memory Move opcodes (ncr7xx bus/DMA tests) by @codewiz in https://github.com/BlitterStudio/amiberry/pull/2157
* a4091: emulate 53C710 SCSI loopback pins (ncr7xx -t8) by @codewiz in https://github.com/BlitterStudio/amiberry/pull/2158
* Fix native host cursor hotspot by @midwan in https://github.com/BlitterStudio/amiberry/pull/2159
* Expose native aspect correction setting by @midwan in https://github.com/BlitterStudio/amiberry/pull/2160
* Fix native host cursor hotspot learning by @midwan in https://github.com/BlitterStudio/amiberry/pull/2161
* Add optional on-screen keyboard numpad by @midwan in https://github.com/BlitterStudio/amiberry/pull/2163
* Fix libretro OSK link failures by @midwan in https://github.com/BlitterStudio/amiberry/pull/2164
* Fix controller input capture during mapping by @midwan in https://github.com/BlitterStudio/amiberry/pull/2165
* Fix configuration naming for loaded media by @midwan in https://github.com/BlitterStudio/amiberry/pull/2166
* Fix debugger console selection across launches by @midwan in https://github.com/BlitterStudio/amiberry/pull/2169
* feat(libretro): add statusline by @beudbeud in https://github.com/BlitterStudio/amiberry/pull/2167
* Fix host-only cursor alignment across native and P96 modes by @midwan in https://github.com/BlitterStudio/amiberry/pull/2172
* Fix LSI DMA crash without queued request by @midwan in https://github.com/BlitterStudio/amiberry/pull/2174
* fix(android): sync SDL Java shim with 3.4.12 by @midwan in https://github.com/BlitterStudio/amiberry/pull/2176
* Fix legacy path migration reliability by @midwan in https://github.com/BlitterStudio/amiberry/pull/2177
* Stabilize KMSDRM display timing and GUI resume by @midwan in https://github.com/BlitterStudio/amiberry/pull/2181
* fix(scsi): match SDMAC register behavior by @midwan in https://github.com/BlitterStudio/amiberry/pull/2182
* Fix IPC debugger control after breakpoints by @midwan in https://github.com/BlitterStudio/amiberry/pull/2183
* fix(scsi): correct SDMAC address mirroring by @midwan in https://github.com/BlitterStudio/amiberry/pull/2185
* fix: list top-level external shaders by @midwan in https://github.com/BlitterStudio/amiberry/pull/2187
* fix: show shader parameter editor in shared GUI by @midwan in https://github.com/BlitterStudio/amiberry/pull/2189
* Fix Linux exclusive-fullscreen aspect ratio by @midwan in https://github.com/BlitterStudio/amiberry/pull/2190
* Add RP9 package support by @midwan in https://github.com/BlitterStudio/amiberry/pull/2186
* Add ZZ9000 RTG emulation by @midwan in https://github.com/BlitterStudio/amiberry/pull/2188
* Save Native and RTG shader parameters by @midwan in https://github.com/BlitterStudio/amiberry/pull/2191
* Fix shader scaling in Linux fullscreen mode by @midwan in https://github.com/BlitterStudio/amiberry/pull/2192
* fix(p96): prevent host cursor jump by @midwan in https://github.com/BlitterStudio/amiberry/pull/2193
* Fix ZZ9000 screen mode crash on ARM64 by @midwan in https://github.com/BlitterStudio/amiberry/pull/2194
* fix(gfx): replace fullscreen with full-window by @midwan in https://github.com/BlitterStudio/amiberry/pull/2195
* Fix theme, RP9, and shader settings by @midwan in https://github.com/BlitterStudio/amiberry/pull/2197
* fix(p96): keep declared cursor hotspot stable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2198
* Fix native cursor jumps at screen edges by @midwan in https://github.com/BlitterStudio/amiberry/pull/2199
* fix(zz9000): translate VRAM for ARM64 JIT by @midwan in https://github.com/BlitterStudio/amiberry/pull/2200
* Improve Global Settings UI controls by @midwan in https://github.com/BlitterStudio/amiberry/pull/2201
* fix(gfx): restore native autocrop bounds by @midwan in https://github.com/BlitterStudio/amiberry/pull/2202
* Gate host integration behind Native Code by @midwan in https://github.com/BlitterStudio/amiberry/pull/2203
* Fix remaining Global Settings input controls by @midwan in https://github.com/BlitterStudio/amiberry/pull/2204
* fix(gfx): preserve visible content in autocrop by @midwan in https://github.com/BlitterStudio/amiberry/pull/2205
* fix(gfx): detect non-black autocrop borders by @midwan in https://github.com/BlitterStudio/amiberry/pull/2206
* perf(gfx): optimize autocrop scan by @midwan in https://github.com/BlitterStudio/amiberry/pull/2207
* perf(osdep): reduce renderer overhead by @midwan in https://github.com/BlitterStudio/amiberry/pull/2208
* perf: streamline machdep and P96 hot paths by @midwan in https://github.com/BlitterStudio/amiberry/pull/2209
* Fix live AutoCrop updates and filtered edge seams by @midwan in https://github.com/BlitterStudio/amiberry/pull/2212
* fix(gui): honor WHDLoad splash and expose shader params by @midwan in https://github.com/BlitterStudio/amiberry/pull/2213
* Fix Host Only cursors with ZZ9000 by @midwan in https://github.com/BlitterStudio/amiberry/pull/2214
* Fix S3 line drawing destination and stepping by @midwan in https://github.com/BlitterStudio/amiberry/pull/2216
* Fix controller hotplug reconnection by @midwan in https://github.com/BlitterStudio/amiberry/pull/2223
* Fix indirect trap callback crash with clipboard sharing by @midwan in https://github.com/BlitterStudio/amiberry/pull/2224
* Fix sidebar section header text color by @midwan in https://github.com/BlitterStudio/amiberry/pull/2226
* Fix wide-window GUI layout issues by @midwan in https://github.com/BlitterStudio/amiberry/pull/2227
* Fix physical CD capacity reporting by @midwan in https://github.com/BlitterStudio/amiberry/pull/2228
* Clarify resolution autoswitch and KMSDRM Play mode by @midwan in https://github.com/BlitterStudio/amiberry/pull/2229
* Fix ZZ9000 combined complement draw modes by @midwan in https://github.com/BlitterStudio/amiberry/pull/2230
* Honor runtime controller selections on reconnect by @midwan in https://github.com/BlitterStudio/amiberry/pull/2231
* Fix KMSDRM GUI resume page-flip handoff by @midwan in https://github.com/BlitterStudio/amiberry/pull/2232
* Fix KMSDRM full-speed GUI handoff by @midwan in https://github.com/BlitterStudio/amiberry/pull/2233
* perf(rpi4): restore SDL 3.2 KMSDRM throughput by @midwan in https://github.com/BlitterStudio/amiberry/pull/2234
* perf(rpi4): reduce Copper overhead and add PGO support by @midwan in https://github.com/BlitterStudio/amiberry/pull/2238
* Fix libretro ROM lookup in the frontend system directory by @midwan in https://github.com/BlitterStudio/amiberry/pull/2241
* ci: add GitLab CI for the libretro buildbot (Linux x64 + aarch64) by @WizzardSK in https://github.com/BlitterStudio/amiberry/pull/2239
* ci: add remaining libretro buildbot targets by @midwan in https://github.com/BlitterStudio/amiberry/pull/2242
* zz9000: accept a template with a zero source pitch by @codewiz in https://github.com/BlitterStudio/amiberry/pull/2237
* feat(configurations): add category grouping by @midwan in https://github.com/BlitterStudio/amiberry/pull/2243
* feat(android): improve emulator setup reliability by @midwan in https://github.com/BlitterStudio/amiberry/pull/2244
* Update Capsimg library to latest version by @midwan in https://github.com/BlitterStudio/amiberry/pull/2245
* Fix build warnings caused by type mismatch by @c0d3h4x0r in https://github.com/BlitterStudio/amiberry/pull/2247
* fix(android): make legacy content migration reliable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2248
* fix(android): make on-screen controls responsive and reliable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2249
* fix: preserve scaling geometry through filters by @midwan in https://github.com/BlitterStudio/amiberry/pull/2250
* fix(android): make ROM management reliable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2251
* fix(android): add touch trackpad mouse controls by @midwan in https://github.com/BlitterStudio/amiberry/pull/2253
* feat(android): expose native shader selection by @midwan in https://github.com/BlitterStudio/amiberry/pull/2255
* fix(gfx): prevent autocrop panning around edge sprites by @midwan in https://github.com/BlitterStudio/amiberry/pull/2258
* fix(filesys): keep regular host files non-executable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2261
* UI Display panel improvements by @midwan in https://github.com/BlitterStudio/amiberry/pull/2262
* Enhance mouse positioning for ICP by @sacredbanana in https://github.com/BlitterStudio/amiberry/pull/2252
* fix(filesys): defer clock sync until OS heartbeat by @midwan in https://github.com/BlitterStudio/amiberry/pull/2263
* IPC screenshot gui automation by @midwan in https://github.com/BlitterStudio/amiberry/pull/2264
* Eliminate build warning by preventing buffer overflow by @c0d3h4x0r in https://github.com/BlitterStudio/amiberry/pull/2265
* fix: prevent heap corruption when switching between RTG and native modes by @midwan in https://github.com/BlitterStudio/amiberry/pull/2267
## New Contributors
* @dlundqvist made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2142
* @jusii made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2153
* @WizzardSK made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2239
* @c0d3h4x0r made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2247
* @sacredbanana made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2252
**Full Changelog**: https://github.com/BlitterStudio/amiberry/compare/v8.2.2...v8.3.0,
------------------------------------------------------------------------------------------
duckstation.mk 8778034bf2a2e350865e068ec3806f2e2efce8c0 # Version: Commits on Aug 06, 2026
------------------------------------------------------------------------------------------
RegTest: Fix compiling again,
-----------------------------------------------------------------------------------
eden.mk a43664c0fd9bb56d2bb4ef3b4f1943a19b767066 # Version: Commits on Aug 05, 2026
-----------------------------------------------------------------------------------
[audio_core] Fix jamboree crash due to OOB access (#4252)
----------------------------------------------------
pcsx2.mk v2.7.514 # Version: Commits on Aug 04, 2026
----------------------------------------------------
- [GS: Fix status bar GPU % when OSD GPU usage is off](https://github.com/PCSX2/pcsx2/pull/14809)
,
-------------------------------------------------------------------------------------
ppsspp.mk e009d182ff526dc8042c80bc7ab23f5b74de05c4 # Version: Commits on Aug 06, 2026
-------------------------------------------------------------------------------------
Merge pull request #22034 from hrydgard/disable-opengl-on-ios
Remove OpenGL support on iOS,
------------------------------------------------------------------------------------
rpcs3.mk 3d587726a23f514be0e7c3ac43e2db0cf2fe931a # Version: Commits on Jan 07, 2026
------------------------------------------------------------------------------------
spu: Clear the MFC_LSA_offs bits higher than the limit,
---------------------------------------------------------------------------------------
touchhle.mk 331903de883405a8597036e4ed5ce8333f1604c9 # Version: Commits on Jul 26, 2026
---------------------------------------------------------------------------------------
NSDictionary: add setDictionary
This is documented as erasing the source dictionary before replacing
its contents with the contents of the other. This is called at startup
by Castlevania Puzzle: Encore of the Night.
Change-Id: I801e782567de57f4eed1823581baad5dc06c69ff,
-----------------------------------------------------------------------------------------
xenia-edge.mk 2fe66280ac26502261414703bc7187b77dacc8d3 # Version: Commits on Aug 05, 2026
-----------------------------------------------------------------------------------------
patch: @@ -11,6 +11,8 @@
Only file issues specific to Xenia Edge. If you're using Xenia Master, Canary, Netplay, etc. file the issue on those bug trackers.
+ DO NOT post issues with the macOS port, it's experimental and many games don't work. Once it reaches higher compatibility it will be better supported, for now it is best effort only.
+
If the issue is for a specific game, ONLY file it here if it is a regression in a particular version of Xenia Edge. This means that
YOU need to verify it does not occur in some earlier Xenia Edge build or works correctly in Xenia Canary or another Xenia fork.
If none of these apply proceed to https://github.com/xenia-canary/game-compatibility#game-compatibility and file the game-specific
@@ -28,6 +30,8 @@
required: true
- label: The Xenia build used is from a Xenia Edge branch. (not Canary/master/netplay/pull requests, etc)
required: true
+ - label: The issue is on Windows or Linux, and NOT macOS which is currently unsupported.
+ required: true
- label: This issue isn't for tech support (help with Xenia).
required: true
- label: If this issue occurs in a specific game, I've identified an earlier build or Xenia fork where the issue does not occur.
-------------------------------------------------------------------------------------
ikemen.mk 75dac8298ceef5cc22fa715eafbc749a857788d7 # Version: Commits on Aug 04, 2026
-------------------------------------------------------------------------------------
Merge pull request #3858 from rakieldev/fixes
refactor: drawPal trigger syntax, motifIsInherited,
-------------------------------------------------------------------------------------------
moonlight-qt.mk 7cf8b46c7952da70bb82af89ef8a2c1408d5b087 # Version: Commits on Aug 06, 2026
-------------------------------------------------------------------------------------------
Pass the correct renderer to EGLImageFactory
We should be using the EGL renderer's colorspace and color range
rather than the backend renderer's for fallbacks. The former is
what actually gets passed to the host PC during stream init.,
---------------------------------------------------------------
ruffle.mk nightly-2026-08-06 # Version: Commits on Aug 06, 2026
---------------------------------------------------------------
## What's Changed
* core: Migrate ruffle_macros to syn 3 by @torokati44 in https://github.com/ruffle-rs/ruffle/pull/24378
* chore: Run cargo +nightly fmt --all by @danielhjacobs in https://github.com/ruffle-rs/ruffle/pull/24376
* avm2: Add more AV implementation by @ChrisCPI in https://github.com/ruffle-rs/ruffle/pull/24375
**Full Changelog**: https://github.com/ruffle-rs/ruffle/compare/nightly-2026-08-05...nightly-2026-08-06,
----------------------------------------------------------------------------------------------------
gamenetworkingsockets.mk e707b3a6b638f4de31ee3e13a64284bd9abfa98e # Version: Commits on Aug 05, 2026
----------------------------------------------------------------------------------------------------
ICE: Be more deliberate about checking username length
We check the length on input from peer, and reject according to
RFC spec. And before filling in an attribute, we double-check
that the name we are going to use is not too long.
In practice, the names that we generate are extremely short and
we are nowhere near the RFC limit.
The previous code was actually safe and no overflow was possible,
but the reason is very indirect. Better to remove this landmine
now and be more deliberate and make the code more obviously safe.,
------------------------------------------------------------------------
aic8800.mk 5.0+git20260123.5f7be68d-8 # Version: Commits on Aug 05, 2026
------------------------------------------------------------------------
feat: release 5.0+git20260123.5f7be68d-8,
------------------------------------------------------------------------------------------
devilutionx.mk aff9a4a9c886b26766801d705923150b4b195b92 # Version: Commits on Aug 06, 2026
------------------------------------------------------------------------------------------
Restore AmigaOS build and runtime support (#8660),
------------------------------------------------------------------------------------------
fallout2-ce.mk fc8fe334ff01945a3a57513444581c4b2eba74a7 # Version: Commits on Aug 06, 2026
------------------------------------------------------------------------------------------
Fix NPC reactions in \use best weapon\ button (#647),
-------------------------------------------------------------------------------------------
jazz2-native.mk c24d80d7da59ef79bc9f40f0c3600d0cece463bb # Version: Commits on Aug 06, 2026
-------------------------------------------------------------------------------------------
Minor fixes,
------------------------------------------------------
fastfetch.mk 2.67.0 # Version: Commits on Aug 06, 2026
------------------------------------------------------
Merge pull request #2497 from fastfetch-cli/dev,
------------------------------------------------------
syncthing.mk v2.1.3 # Version: Commits on Aug 05, 2026
------------------------------------------------------
## Major changes in 2.1
- Devices and folders can now be grouped in the GUI by setting the new
`group` attribute.
- HTTP and HTTPS proxies with support for CONNECT can now be used, in
addition to the existing support for SOCKS proxies (the environment
variable `all_proxy=https://...`).
- Block indexing can be turned off for folders where it's more desirable to
optimise for reduced database size and overhead than minimal transfer
size (the `blockIndexing` attribute on folder configuration).
- GUI login session duration can be configured to be longer or shorter than
the default one week, or set to infinitely long. The cookie path can also
be adjusted. (The `sessionCookieDurationS` and `sessionCookiePath`
attributes in the GUI configuration.)
This release is also available as:
* APT repository: https://apt.syncthing.net/
* Docker image: `docker.io/syncthing/syncthing:2.1.3` or `ghcr.io/syncthing/syncthing:2.1.3`
(`{docker,ghcr}.io/syncthing/syncthing:2` to follow just the major version)
## What's Changed
### Fixes
* fix(ignore, fs): allow loading ignore patterns behind symlink (fixes #10785) by @calmh in https://github.com/syncthing/syncthing/pull/10786
* fix: avoid warning on does-not-exist scan error (fixes #10465) by @calmh in https://github.com/syncthing/syncthing/pull/10791
* fix(strelaypoolsrv): locking correctness by @calmh in https://github.com/syncthing/syncthing/pull/10801
* fix(model): properly health-check up-to-date folders (fixes #10546) by @calmh in https://github.com/syncthing/syncthing/pull/10773
* fix(gui): fix expanding one folder not collapsing others in group by @tbodt in https://github.com/syncthing/syncthing/pull/10809
* fix(gui): add bottom margin to folder action buttons for wrapped spacing by @rohitanwar in https://github.com/syncthing/syncthing/pull/10728
* fix(upnp): guard against out of index string access by @calmh in https://github.com/syncthing/syncthing/pull/10834
* fix(ignore): handle pattern resulting in empty string by @calmh in https://github.com/syncthing/syncthing/pull/10835
* fix(versioner): handle invalid empty command by @calmh in https://github.com/syncthing/syncthing/pull/10836
* fix(api): handle empty path in static request by @calmh in https://github.com/syncthing/syncthing/pull/10837
* fix(db, model): better handle db connections, puller concurrency, avoid deadlock (fixes #10841) by @calmh in https://github.com/syncthing/syncthing/pull/10842
### Other
* chore(fs): use x/sys/windows where possible by @greatroar in https://github.com/syncthing/syncthing/pull/10766
* chore(model): simplify FileInfoBatch size computation by @calmh in https://github.com/syncthing/syncthing/pull/10776
* build: allow inotify on Android amd64 (ref #8710) by @chenxiaolong in https://github.com/syncthing/syncthing/pull/10783
* chore: fix a couple of unclosed http connections by @calmh in https://github.com/syncthing/syncthing/pull/10806
* chore(gui): lazy-render collapsed panels to reduce watcher count by @Finomosec in https://github.com/syncthing/syncthing/pull/10772
* build(deps): update dependencies by @calmh in https://github.com/syncthing/syncthing/pull/10824
* chore: new code contribution guidelines by @calmh in https://github.com/syncthing/syncthing/pull/10821
* chore: remove ignore file caching entirely by @calmh in https://github.com/syncthing/syncthing/pull/10813
* chore: slightly optimise rename detection (ref #10777) by @calmh in https://github.com/syncthing/syncthing/pull/10819
* chore(gui): better describe when a pending folder/device notification will reappear by @tbodt in https://github.com/syncthing/syncthing/pull/10808
* chore: deflake TestRecvOnlyRevertNeeds by @calmh in https://github.com/syncthing/syncthing/pull/10827
* chore(model): don't check existing file twice in rename detection by @imsodin in https://github.com/syncthing/syncthing/pull/10833
* chore(fs): optimise casefs caching performance by @calmh in https://github.com/syncthing/syncthing/pull/10830
* chore(model): optimise fsync calls by @calmh in https://github.com/syncthing/syncthing/pull/10831
* chore(syncthing): include local db entries in perfstats by @calmh in https://github.com/syncthing/syncthing/pull/10839
## New Contributors
* @chenxiaolong made their first contribution in https://github.com/syncthing/syncthing/pull/10783
* @Finomosec made their first contribution in https://github.com/syncthing/syncthing/pull/10772
* @tbodt made their first contribution in https://github.com/syncthing/syncthing/pull/10809
* @rohitanwar made their first contribution in https://github.com/syncthing/syncthing/pull/10728
**Full Changelog**: https://github.com/syncthing/syncthing/compare/v2.1.2...v2.1.3,
-----------------------------------------------------------------------------------------
winetricks.mk 8e6f0d529b0077bc8602c5de62a08583c7cd0f4e # Version: Commits on Aug 01, 2026
-----------------------------------------------------------------------------------------
dpi: new verb
When running Wine on a high-DPI display, it is very difficult to
navigate the tiny winecfg interface to increase the DPI to a reasonable
value. Add a winetrick to set the DPI from the command line. The
possible values are 96, 120, 144, 168, 192, 216, 240, 288, 336, 384,
432, and 480, which is the same set of values that winecfg allows.,
--------------------------------------------------------
logi-wheel.mk v0.28.0 # Version: Commits on Aug 06, 2026
--------------------------------------------------------
release: 0.28.0,
----------------------------------------------------------------
logitech-trueforce.mk v0.28.0 # Version: Commits on Aug 06, 2026
----------------------------------------------------------------
release: 0.28.0,
----------------------------------------------------------------------------------------
retroarch.mk 79f5ef5d7f87c973503a35e7ea93e973295dd330 # Version: Commits on Aug 06, 2026
----------------------------------------------------------------------------------------
libretro-common: add rmpeg1, an MPEG-1 program stream and video decoder
Backported from beetle-psx-libretro, where it was written to replace a
vendored pl_mpeg in the Video CD path for the SCPH-5903. It is not
PSX-specific: it takes a byte stream and has no opinion about where the
bytes came from, so it also covers the Saturn Video CD card, CD-i, the
3DO MPEG cartridge and plain .mpg files.
rmpeg1_ps MPEG-1 Systems (program stream) demultiplexer, 11172-1
rmpeg1_video MPEG-1 video decoder, I, P and B pictures, 11172-2
rmpeg1_tables generated variable length code tables
MPEG-1 audio is layer II, which rmp3 already decodes -- it covers layers
1, 2 and 3, not only layer 3 -- so no audio decoder is added here. A
consumer that wants sound needs HAVE_RMP3 as well.
Written from ITU-T H.262, whose non-scalable syntax is a superset of
11172-2 and whose Annex B carries the same code tables. Not derived from
any existing implementation. The tables are parsed out of the
specification by tools/mpeg1/gen_tables.py rather than transcribed; the
generator proves each one prefix-free, checks its Kraft sum and asserts
completeness before emitting anything, which caught two defects during
development that would otherwise have shipped as tables that were still
prefix-free and quietly missing entries.
Both interfaces are push/pull, so a caller feeds spans as it has them --
2324-byte Mode 2 Form 2 payloads straight off a disc, or 2048-byte
sectors from a file. Entering mid-stream is supported.
Validation, reproducible from libretro-common/tools/mpeg1:
IDCT against a double-precision reference in the style of IEEE
1180-1990: peak error 1 at L=256, L=5, L=300 and for intra-like input,
with mse, me and worst per-position mean error inside the 1180 bounds.
DC-only exact, all-zero in gives all-zero out.
Frame-for-frame against pl_mpeg over NTSC VCD, PAL VCD, video-only and
a B-picture stream: worst luma deviation 5 across 90, 100 and 89
frames, zero slice errors, identical output at input chunk sizes from
one byte to a megabyte.
Demuxer: 64 truncation points, 64 mid-stream entry points, 3000 byte
corruption runs, 400 pure-random buffers, clean under ASan and UBSan.
Throughput 11.4 ms against pl_mpeg's 12.6 ms on the same stream.
tools/stack_budget.py: no frame over the 2 KiB budget, and the full
libretro-common walk is unchanged.
Compiles unmodified against this tree under -std=c89 -pedantic -Wall
-Wextra -Wvla, and under the griffin unity build.,
----------------------------------------------------------------------------------------
doomretro.mk ce77a9852b98a6184b59cfe1f9d33e7ea18e2772 # Version: Commits on Aug 06, 2026
----------------------------------------------------------------------------------------
Still show \messages off\ message when toggling messages off,
---------------------------------------------------------------------------------------
vkquake2.mk 6763f207229f97cffabb6fc2da72017a794b139b # Version: Commits on Aug 04, 2026
---------------------------------------------------------------------------------------
Tidying up physical device selection.,
--------------------------------------------------------------------------------------
yquake2.mk fd06651488c4e7522ce37056b17c279b8149ef5b # Version: Commits on Aug 06, 2026
--------------------------------------------------------------------------------------
game: improve dynamic weapons logic
Updates logic in 41505c8d, 57e19eb8.,
------------------------------------------------------------------------------------------
xash3d-fwgs.mk 15276ef92a2dea2edb710670c964dfd95f8d2d44 # Version: Commits on Aug 05, 2026
------------------------------------------------------------------------------------------
engine: client: sound: fix inverted check for inaudible channel auto free,
--------------------------------------------------------------
libretro-amiberry.mk v8.3.0 # Version: Commits on Aug 05, 2026
--------------------------------------------------------------
Windows release binaries are signed through SignPath. See the Code signing policy: https://amiberry.com/code-signing-policy
<!-- Release notes generated using configuration in .github/release.yml at v8.3.0 -->
## What's Changed
### Other Changes
* Capsimage 5.2 update by @midwan in https://github.com/BlitterStudio/amiberry/pull/2120
* feat(android): adaptive CPU performance tuning via ADPF with affinity/uclamp fallback by @midwan in https://github.com/BlitterStudio/amiberry/pull/2121
* Android: Integer Scaling toggle + Hard Drives in Storage settings by @midwan in https://github.com/BlitterStudio/amiberry/pull/2123
* Fix collapsed group box hiding sibling column; more collapsible panels by @midwan in https://github.com/BlitterStudio/amiberry/pull/2124
* Collapsible left-nav sections to reduce scrolling by @midwan in https://github.com/BlitterStudio/amiberry/pull/2125
* Fix editing device/controller in CD & Tape Drive Settings (#2119) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2126
* Fix macOS crash when bsdsocket library closes from a trap thread (#2115) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2127
* Fix uae_sem_init semaphore-count inflation + RTG render lock + bsdsocket log spam (#2122) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2128
* Redirect debugger I/O via shell stdin/stdout (#2117) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2129
* libretro: add Crop Overscan core option by @midwan in https://github.com/BlitterStudio/amiberry/pull/2130
* Android: document-style config edit/save UX (Save / Save As, dirty tracking, unsaved-changes guard) by @midwan in https://github.com/BlitterStudio/amiberry/pull/2132
* capsimage: fix IPF/CT-Raw images failing to lock with 5.2 library by @midwan in https://github.com/BlitterStudio/amiberry/pull/2133
* Android Kotlin UI UX improvements by @midwan in https://github.com/BlitterStudio/amiberry/pull/2137
* Fix Host Only cursor handling by @midwan in https://github.com/BlitterStudio/amiberry/pull/2138
* Fix serial RBF clear after SERDATR read by @midwan in https://github.com/BlitterStudio/amiberry/pull/2139
* Fix libretro audio starvation padding by @midwan in https://github.com/BlitterStudio/amiberry/pull/2140
* Improve AutoCrop policy by @midwan in https://github.com/BlitterStudio/amiberry/pull/2143
* Read and write RTG autoscale setting. by @dlundqvist in https://github.com/BlitterStudio/amiberry/pull/2142
* Persist used GFX filter settings by @midwan in https://github.com/BlitterStudio/amiberry/pull/2144
* Improve ImGui Play UX by @midwan in https://github.com/BlitterStudio/amiberry/pull/2146
* Fix warp mode after closing GUI by @midwan in https://github.com/BlitterStudio/amiberry/pull/2148
* Fix hardfile creation mode by @midwan in https://github.com/BlitterStudio/amiberry/pull/2149
* Fix Host Only cursor without Magic Mouse untrap by @midwan in https://github.com/BlitterStudio/amiberry/pull/2150
* Keep libretro crop from hiding visible content by @midwan in https://github.com/BlitterStudio/amiberry/pull/2151
* Fix native host cursor coordinate clamp by @midwan in https://github.com/BlitterStudio/amiberry/pull/2152
* a2065: poll the host receive queue from the hsync handler by @jusii in https://github.com/BlitterStudio/amiberry/pull/2153
* a4091: fix 53C710 register and SCSI FIFO tests (ncr7xx -t) by @codewiz in https://github.com/BlitterStudio/amiberry/pull/2156
* a4091: reject illegal 53C710 Memory Move opcodes (ncr7xx bus/DMA tests) by @codewiz in https://github.com/BlitterStudio/amiberry/pull/2157
* a4091: emulate 53C710 SCSI loopback pins (ncr7xx -t8) by @codewiz in https://github.com/BlitterStudio/amiberry/pull/2158
* Fix native host cursor hotspot by @midwan in https://github.com/BlitterStudio/amiberry/pull/2159
* Expose native aspect correction setting by @midwan in https://github.com/BlitterStudio/amiberry/pull/2160
* Fix native host cursor hotspot learning by @midwan in https://github.com/BlitterStudio/amiberry/pull/2161
* Add optional on-screen keyboard numpad by @midwan in https://github.com/BlitterStudio/amiberry/pull/2163
* Fix libretro OSK link failures by @midwan in https://github.com/BlitterStudio/amiberry/pull/2164
* Fix controller input capture during mapping by @midwan in https://github.com/BlitterStudio/amiberry/pull/2165
* Fix configuration naming for loaded media by @midwan in https://github.com/BlitterStudio/amiberry/pull/2166
* Fix debugger console selection across launches by @midwan in https://github.com/BlitterStudio/amiberry/pull/2169
* feat(libretro): add statusline by @beudbeud in https://github.com/BlitterStudio/amiberry/pull/2167
* Fix host-only cursor alignment across native and P96 modes by @midwan in https://github.com/BlitterStudio/amiberry/pull/2172
* Fix LSI DMA crash without queued request by @midwan in https://github.com/BlitterStudio/amiberry/pull/2174
* fix(android): sync SDL Java shim with 3.4.12 by @midwan in https://github.com/BlitterStudio/amiberry/pull/2176
* Fix legacy path migration reliability by @midwan in https://github.com/BlitterStudio/amiberry/pull/2177
* Stabilize KMSDRM display timing and GUI resume by @midwan in https://github.com/BlitterStudio/amiberry/pull/2181
* fix(scsi): match SDMAC register behavior by @midwan in https://github.com/BlitterStudio/amiberry/pull/2182
* Fix IPC debugger control after breakpoints by @midwan in https://github.com/BlitterStudio/amiberry/pull/2183
* fix(scsi): correct SDMAC address mirroring by @midwan in https://github.com/BlitterStudio/amiberry/pull/2185
* fix: list top-level external shaders by @midwan in https://github.com/BlitterStudio/amiberry/pull/2187
* fix: show shader parameter editor in shared GUI by @midwan in https://github.com/BlitterStudio/amiberry/pull/2189
* Fix Linux exclusive-fullscreen aspect ratio by @midwan in https://github.com/BlitterStudio/amiberry/pull/2190
* Add RP9 package support by @midwan in https://github.com/BlitterStudio/amiberry/pull/2186
* Add ZZ9000 RTG emulation by @midwan in https://github.com/BlitterStudio/amiberry/pull/2188
* Save Native and RTG shader parameters by @midwan in https://github.com/BlitterStudio/amiberry/pull/2191
* Fix shader scaling in Linux fullscreen mode by @midwan in https://github.com/BlitterStudio/amiberry/pull/2192
* fix(p96): prevent host cursor jump by @midwan in https://github.com/BlitterStudio/amiberry/pull/2193
* Fix ZZ9000 screen mode crash on ARM64 by @midwan in https://github.com/BlitterStudio/amiberry/pull/2194
* fix(gfx): replace fullscreen with full-window by @midwan in https://github.com/BlitterStudio/amiberry/pull/2195
* Fix theme, RP9, and shader settings by @midwan in https://github.com/BlitterStudio/amiberry/pull/2197
* fix(p96): keep declared cursor hotspot stable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2198
* Fix native cursor jumps at screen edges by @midwan in https://github.com/BlitterStudio/amiberry/pull/2199
* fix(zz9000): translate VRAM for ARM64 JIT by @midwan in https://github.com/BlitterStudio/amiberry/pull/2200
* Improve Global Settings UI controls by @midwan in https://github.com/BlitterStudio/amiberry/pull/2201
* fix(gfx): restore native autocrop bounds by @midwan in https://github.com/BlitterStudio/amiberry/pull/2202
* Gate host integration behind Native Code by @midwan in https://github.com/BlitterStudio/amiberry/pull/2203
* Fix remaining Global Settings input controls by @midwan in https://github.com/BlitterStudio/amiberry/pull/2204
* fix(gfx): preserve visible content in autocrop by @midwan in https://github.com/BlitterStudio/amiberry/pull/2205
* fix(gfx): detect non-black autocrop borders by @midwan in https://github.com/BlitterStudio/amiberry/pull/2206
* perf(gfx): optimize autocrop scan by @midwan in https://github.com/BlitterStudio/amiberry/pull/2207
* perf(osdep): reduce renderer overhead by @midwan in https://github.com/BlitterStudio/amiberry/pull/2208
* perf: streamline machdep and P96 hot paths by @midwan in https://github.com/BlitterStudio/amiberry/pull/2209
* Fix live AutoCrop updates and filtered edge seams by @midwan in https://github.com/BlitterStudio/amiberry/pull/2212
* fix(gui): honor WHDLoad splash and expose shader params by @midwan in https://github.com/BlitterStudio/amiberry/pull/2213
* Fix Host Only cursors with ZZ9000 by @midwan in https://github.com/BlitterStudio/amiberry/pull/2214
* Fix S3 line drawing destination and stepping by @midwan in https://github.com/BlitterStudio/amiberry/pull/2216
* Fix controller hotplug reconnection by @midwan in https://github.com/BlitterStudio/amiberry/pull/2223
* Fix indirect trap callback crash with clipboard sharing by @midwan in https://github.com/BlitterStudio/amiberry/pull/2224
* Fix sidebar section header text color by @midwan in https://github.com/BlitterStudio/amiberry/pull/2226
* Fix wide-window GUI layout issues by @midwan in https://github.com/BlitterStudio/amiberry/pull/2227
* Fix physical CD capacity reporting by @midwan in https://github.com/BlitterStudio/amiberry/pull/2228
* Clarify resolution autoswitch and KMSDRM Play mode by @midwan in https://github.com/BlitterStudio/amiberry/pull/2229
* Fix ZZ9000 combined complement draw modes by @midwan in https://github.com/BlitterStudio/amiberry/pull/2230
* Honor runtime controller selections on reconnect by @midwan in https://github.com/BlitterStudio/amiberry/pull/2231
* Fix KMSDRM GUI resume page-flip handoff by @midwan in https://github.com/BlitterStudio/amiberry/pull/2232
* Fix KMSDRM full-speed GUI handoff by @midwan in https://github.com/BlitterStudio/amiberry/pull/2233
* perf(rpi4): restore SDL 3.2 KMSDRM throughput by @midwan in https://github.com/BlitterStudio/amiberry/pull/2234
* perf(rpi4): reduce Copper overhead and add PGO support by @midwan in https://github.com/BlitterStudio/amiberry/pull/2238
* Fix libretro ROM lookup in the frontend system directory by @midwan in https://github.com/BlitterStudio/amiberry/pull/2241
* ci: add GitLab CI for the libretro buildbot (Linux x64 + aarch64) by @WizzardSK in https://github.com/BlitterStudio/amiberry/pull/2239
* ci: add remaining libretro buildbot targets by @midwan in https://github.com/BlitterStudio/amiberry/pull/2242
* zz9000: accept a template with a zero source pitch by @codewiz in https://github.com/BlitterStudio/amiberry/pull/2237
* feat(configurations): add category grouping by @midwan in https://github.com/BlitterStudio/amiberry/pull/2243
* feat(android): improve emulator setup reliability by @midwan in https://github.com/BlitterStudio/amiberry/pull/2244
* Update Capsimg library to latest version by @midwan in https://github.com/BlitterStudio/amiberry/pull/2245
* Fix build warnings caused by type mismatch by @c0d3h4x0r in https://github.com/BlitterStudio/amiberry/pull/2247
* fix(android): make legacy content migration reliable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2248
* fix(android): make on-screen controls responsive and reliable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2249
* fix: preserve scaling geometry through filters by @midwan in https://github.com/BlitterStudio/amiberry/pull/2250
* fix(android): make ROM management reliable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2251
* fix(android): add touch trackpad mouse controls by @midwan in https://github.com/BlitterStudio/amiberry/pull/2253
* feat(android): expose native shader selection by @midwan in https://github.com/BlitterStudio/amiberry/pull/2255
* fix(gfx): prevent autocrop panning around edge sprites by @midwan in https://github.com/BlitterStudio/amiberry/pull/2258
* fix(filesys): keep regular host files non-executable by @midwan in https://github.com/BlitterStudio/amiberry/pull/2261
* UI Display panel improvements by @midwan in https://github.com/BlitterStudio/amiberry/pull/2262
* Enhance mouse positioning for ICP by @sacredbanana in https://github.com/BlitterStudio/amiberry/pull/2252
* fix(filesys): defer clock sync until OS heartbeat by @midwan in https://github.com/BlitterStudio/amiberry/pull/2263
* IPC screenshot gui automation by @midwan in https://github.com/BlitterStudio/amiberry/pull/2264
* Eliminate build warning by preventing buffer overflow by @c0d3h4x0r in https://github.com/BlitterStudio/amiberry/pull/2265
* fix: prevent heap corruption when switching between RTG and native modes by @midwan in https://github.com/BlitterStudio/amiberry/pull/2267
## New Contributors
* @dlundqvist made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2142
* @jusii made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2153
* @WizzardSK made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2239
* @c0d3h4x0r made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2247
* @sacredbanana made their first contribution in https://github.com/BlitterStudio/amiberry/pull/2252
**Full Changelog**: https://github.com/BlitterStudio/amiberry/compare/v8.2.2...v8.3.0,
--------------------------------------------------------------------------------------------------
libretro-beetle-psx.mk 3ec62d112d500968d008e2c4c0376c85da6fb939 # Version: Commits on Aug 06, 2026
--------------------------------------------------------------------------------------------------
patch: @@ -1,8 +1,15 @@
-/* rvorbis - Ogg Vorbis decoder (stb_vorbis-derived), memory-only.
+/* rvorbis - Ogg Vorbis decoder (stb_vorbis-derived), memory-resident.
*
- * The public API in <formats/rvorbis.h> is the pull interface used by
- * libretro-common's audio_transfer: open a whole file from memory,
- * query the stream info, pull interleaved f32 frames, seek by sample.
+ * Two interfaces in <formats/rvorbis.h> share the decode core. The
+ * pull interface opens a whole file from memory, queries the stream
+ * info, pulls interleaved frames and seeks by sample. The stream
+ * interface (rvorbis_stream_*) decodes from a sliding window instead:
+ * the caller presents what bytes it has, rvorbis_stream_process
+ * consumes from the front and reports how much, and NEED_IN asks for
+ * more - which is what lets audio_transfer's Vorbis arm play a file
+ * that is still arriving, holding at most one packet across calls.
+ * The stream contract, including caller-driven seeking by granule
+ * bisection, is documented at its declarations in the header.
*
* Decode pipeline, in the order the code runs it:
*
@@ -56,6 +63,7 @@
#elif !defined(alloca)
#define alloca __builtin_alloca /* gcc/clang builtin: no header, portable everywhere */
#endif
+#include <encodings/crc32.h>
#include <formats/rvorbis.h>
/* Convert a float coefficient in [-1, 1] to Q31, round half away from
* zero, clamped (the window hits exactly 1.0). Double arithmetic: at
@@ -282,15 +290,6 @@ typedef struct
uint16_t transformtype;
} Mode;
-typedef struct
-{
- uint32_t goal_crc; /* expected crc if match */
- int bytes_left; /* bytes left in packet */
- uint32_t crc_so_far; /* running crc */
- int bytes_done; /* bytes processed in _current_ chunk */
- uint32_t sample_loc; /* granule pos encoded in page */
-} CRCscan;
-
typedef struct
{
uint32_t page_start, page_end;
@@ -317,6 +316,15 @@ struct rvorbis
uint8_t push_mode;
+ /* Raw-packet mode (rvorbis_open_packets): the input is one bare
+ * Vorbis packet at a time rather than an Ogg stream. next_segment
+ * synthesises the lacing over the packet where it lies, so the bit
+ * reader, the setup parser and the frame decoder are the same code
+ * in both modes and no framing is ever materialised. */
+ uint8_t packet_mode;
+ uint8_t packet_ready; /* a fed packet the decoder has not taken yet */
+ uint32_t packet_left; /* bytes of it not yet handed to a segment */
+
uint32_t first_audio_page_offset;
ProbedPage p_first, p_last;
@@ -359,6 +367,17 @@ struct rvorbis
int16_t *finalY[RVORBIS_MAX_CHANNELS];
+ /* per-packet channel flags for decode_packet_rest, held here rather
+ * than as 2 KiB of int[256] locals on the decode stack. Sized by
+ * RVORBIS_MAX_CHANNELS rather than the locals' spec-maximum 256:
+ * both arrays are indexed only by channel number, header setup
+ * rejects streams above the cap, and the struct can be placed in a
+ * caller-provided alloc buffer whose budget should not grow by more
+ * than it must. (The floor decoder's step2_flag stays a local --
+ * it is indexed by floor curve point, not by channel.) */
+ int zero_channel[RVORBIS_MAX_CHANNELS];
+ int really_zero_channel[RVORBIS_MAX_CHANNELS];
+
uint32_t current_loc; /* sample location of next frame to decode */
int current_loc_valid;
@@ -396,9 +415,6 @@ struct rvorbis
int discard_samples_deferred;
uint32_t samples_output;
- /* push mode scanning */
- int page_crc_tests; /* only in push_mode: number of tests active; -1 if not searching */
-
/* sample-access */
int channel_buffer_start;
int channel_buffer_end;
@@ -485,24 +501,46 @@ static void setup_temp_free(vorb *f, void *p, int sz)
free(p);
}
-#define CRC32_POLY 0x04c11db7 /* from spec */
-static uint32_t rvorbis_crc_table[256];
-static void crc32_init(void)
+/* Folds n stream bytes into an Ogg page CRC in one call.
+ *
+ * The three page-scanning loops this replaces each called a one-byte
+ * checksum through get8(), so a 64 KiB page cost 64 Ki bounds checks,
+ * pointer bumps and calls to fold one byte apiece. The stream is a
+ * plain memory span - get8() is \if (stream >= stream_end) { eof = 1;
+ * return 0; } return *stream++;\ and there is no file or callback
+ * path - so the bytes are already contiguous and can go in one call.
+ *
+ * A short stream is folded the way the byte loop folded it: get8()
+ * yields a zero for every byte past the end and sets eof, so fold what
+ * is there and then that many zeroes. */
+static uint32_t crc32_stream(vorb *f, uint32_t crc, uint32_t n)
{
- int i,j;
- uint32_t s;
- for(i=0; i < 256; i++)
+ size_t avail = (size_t)(f->stream_end - f->stream);
+
+ if ((size_t)n <= avail)
{
- for (s=(uint32_t)i<<24, j=0; j < 8; ++j)
- s = (s << 1) ^ (s >= (1U<<31) ? CRC32_POLY : 0);
- rvorbis_crc_table[i] = s;
+ crc = encoding_crc32_ogg(crc, f->stream, (size_t)n);
+ f->stream += n;
+ return crc;
}
-}
-static INLINE uint32_t crc32_update(uint32_t crc, uint8_t byte)
-{
- return (crc << 8) ^ rvorbis_crc_table[byte ^ (crc >> 24)];
+ {
+ static const uint8_t zeros[64] = { 0 };
+ size_t missing = (size_t)n - avail;
+
+ crc = encoding_crc32_ogg(crc, f->stream, avail);
+ f->stream = f->stream_end;
+ f->eof = 1;
+
+ while (missing)
+ {
+ size_t chunk = (missing < sizeof(zeros)) ? missing : sizeof(zeros);
+ crc = encoding_crc32_ogg(crc, zeros, chunk);
+ missing -= chunk;
+ }
+ }
+ return crc;
}
/* used in setup, and for huffman that doesn't go fast path */
@@ -515,7 +553,6 @@ static unsigned int bit_reverse(unsigned int n)
return (n >> 16) | (n << 16);
}
-static float square(float x) { return x * x; }
/* this is a weird definition of log2() for which log2(1) = 1, log2(2) = 2, log2(4) = 3
* as required by the specification. fast(?) implementation from stb.h
@@ -795,7 +832,14 @@ static void compute_window(int n, float *window)
{
int n2 = n >> 1, i;
for (i=0; i < n2; ++i)
- window[i] = (float) sin(0.5 * M_PI * square((float) sin((i - 0 + 0.5) / n2 * 0.5 * M_PI)));
+ {
+ /* sin(pi/2 * sin(x)^2), with both steps narrowed to float the
+ * way the old square() helper narrowed them - the temporaries
+ * keep the multiply in float rather than letting it stay wide. */
+ float a = (float)sin((i - 0 + 0.5) / n2 * 0.5 * M_PI);
+ float b = a * a;
+ window[i] = (float)sin(0.5 * M_PI * b);
+ }
}
static void compute_bitreverse(int n, uint16_t *rev)
@@ -1033,6 +1077,17 @@ static int start_packet(vorb *f)
static int maybe_start_packet(vorb *f)
{
+ if (f->packet_mode)
+ {
+ /* The bounds were set when the packet was fed; there is no page
+ * to open. Consuming the flag here is what stops the retry loop
+ * in vorbis_decode_initial from re-reading a drained packet when
+ * the one fed was not an audio packet. */
+ if (!f->packet_ready)
+ return 0;
+ f->packet_ready = 0;
+ return 1;
+ }
if (f->next_seg == -1)
{
int x = get8(f);
@@ -1065,6 +1120,24 @@ static int next_segment(vorb *f)
int len;
if (f->last_seg)
return 0;
+ if (f->packet_mode)
+ {
+ /* One packet, laced as Ogg would have laced it, but computed
+ * rather than read: 255-byte segments until fewer than 255
+ * bytes remain, then the short (possibly zero-length) segment
+ * that terminates the packet. A length that is a multiple of
+ * 255 therefore ends on a returned 0, which the callers already
+ * read as end of packet. */
+ len = (f->packet_left >= 255) ? 255 : (int)f->packet_left;
+ f->packet_left -= (uint32_t)len;
+ if (len < 255)
+ {
+ f->last_seg = 1;
+ f->last_seg_which = 0;
+ }
+ f->bytes_in_seg = (uint8_t)len;
+ return len;
+ }
if (f->next_seg == -1)
{
f->last_seg_which = f->segment_count-1; /* in case start_page fails */
@@ -1160,6 +1233,33 @@ static INLINE void prep_huffman(vorb *f)
{
if (f->valid_bits <= 24)
{
+ /* Bulk refill: this runs before every Huffman symbol, and the
+ * byte loop below pays a segment test, an EOP test, counter
+ * updates and a bounds check per byte to move at most four
+ * contiguous bytes. When the current segment and the stream
+ * both hold the bytes the loop would take, take them in one
+ * step; every boundary - segment end, packet end, truncation -
+ * falls through to the byte loop unchanged. */
+ int want = (32 - f->valid_bits) >> 3;
+ if (f->valid_bits >= 0
+ && (int)f->bytes_in_seg >= want
+ && f->stream_end - f->stream >= want)
+ {
+ const uint8_t *p = f->stream;
+ uint32_t w = p[0];
+ if (want > 1) w |= (uint32_t)p[1] << 8;
+ if (want > 2) w |= (uint32_t)p[2] << 16;
+ if (want > 3) w |= (uint32_t)p[3] << 24;
+ if (f->valid_bits == 0)
+ f->acc = w;
+ else
+ f->acc += w << f->valid_bits;
+ f->valid_bits += want << 3;
+ f->stream += want;
+ f->bytes_in_seg -= (uint8_t)want;
+ f->packet_bytes += want;
+ return;
+ }
if (f->valid_bits == 0)
f->acc = 0;
do
@@ -1455,7 +1555,13 @@ static int codebook_decode_deinterleave_repeat(vorb *f, Codebook *c, float **out
* buffer (len*ch), our current offset within it (p_inter*ch)+(c_inter),
* and the length we'll be using (effective) */
if (c_inter + p_inter*ch + effective > len * ch) {
- effective = len*ch - (p_inter*ch - c_inter);
+ /* The offset is p_inter*ch + c_inter, as the note above says;
+ * subtracting c_inter instead of adding it overstates what is
+ * left by twice it, and writes that far past the end of the
+ * virtual vector. Harmless at two channels, where c_inter is
+ * 0 or 1 and this path is not the one taken anyway, and not
+ * harmless beyond that. */
+ effective = len*ch - (p_inter*ch + c_inter);
}
z *= c->dimensions;
@@ -1728,8 +1834,20 @@ static void decode_residue(vorb *f, float *residue_buffers[], int ch, int n, int
* interleaved ch*n vector); the spec behaviour, and upstream
* stb_vorbis's, is to clamp to the actual vector size at decode
* time, never to reject. This also bounds part_read, keeping the
- * temp classification array allocation below safe. */
- unsigned int actual_size = rtype == 2 ? (unsigned int)n * 2 : (unsigned int)n;
+ * temp classification array allocation below safe.
+ *
+ * ch*n, not 2*n: a type-2 residue is one vector with every
+ * channel interleaved into it, so its length follows the channel
+ * count. Two is only right for stereo, and clamping a wider
+ * stream to it drops the partitions past the clamp - they are
+ * never decoded, and what comes out is noise.
+ *
+ * Inherited from upstream stb_vorbis, which has the same 2*n here
+ * and the same missing channel count in the setup bound; the two
+ * together are why multichannel Vorbis does not decode there
+ * either. */
+ unsigned int actual_size = rtype == 2
+ ? (unsigned int)n * (unsigned int)ch : (unsigned int)n;
unsigned int limit_r_begin = r->begin < actual_size ? r->begin : actual_size;
unsigned int limit_r_end = r->end < actual_size ? r->end : actual_size;
int n_read = (int)(limit_r_end - limit_r_begin);
@@ -3391,7 +3509,13 @@ static int codebook_decode_deinterleave_repeat_q(vorb *f, Codebook *c, int32_t *
* buffer (len*ch), our current offset within it (p_inter*ch)+(c_inter),
* and the length we'll be using (effective) */
if (c_inter + p_inter*ch + effective > len * ch) {
- effective = len*ch - (p_inter*ch - c_inter);
+ /* The offset is p_inter*ch + c_inter, as the note above says;
+ * subtracting c_inter instead of adding it overstates what is
+ * left by twice it, and writes that far past the end of the
+ * virtual vector. Harmless at two channels, where c_inter is
+ * 0 or 1 and this path is not the one taken anyway, and not
+ * harmless beyond that. */
+ effective = len*ch - (p_inter*ch + c_inter);
}
z *= c->dimensions;
@@ -3529,8 +3653,20 @@ static void decode_residue_q(vorb *f, int32_t *residue_buffers[], int ch, int n,
* interleaved ch*n vector); the spec behaviour, and upstream
* stb_vorbis's, is to clamp to the actual vector size at decode
* time, never to reject. This also bounds part_read, keeping the
- * temp classification array allocation below safe. */
- unsigned int actual_size = rtype == 2 ? (unsigned int)n * 2 : (unsigned int)n;
+ * temp classification array allocation below safe.
+ *
+ * ch*n, not 2*n: a type-2 residue is one vector with every
+ * channel interleaved into it, so its length follows the channel
+ * count. Two is only right for stereo, and clamping a wider
+ * stream to it drops the partitions past the clamp - they are
+ * never decoded, and what comes out is noise.
+ *
+ * Inherited from upstream stb_vorbis, which has the same 2*n here
+ * and the same missing channel count in the setup bound; the two
+ * together are why multichannel Vorbis does not decode there
+ * either. */
+ unsigned int actual_size = rtype == 2
+ ? (unsigned int)n * (unsigned int)ch : (unsigned int)n;
unsigned int limit_r_begin = r->begin < actual_size ? r->begin : actual_size;
unsigned int limit_r_end = r->end < actual_size ? r->end : actual_size;
int n_read = (int)(limit_r_end - limit_r_begin);
@@ -3687,17 +3823,45 @@ static void decode_residue_q(vorb *f, int32_t *residue_buffers[], int ch, int n,
done:
temp_alloc_restore(f,temp_alloc_point);
}
-/* Q31 twin of inverse_db_table, generated once; entries are (0,1]. */
-static int32_t inverse_db_q31[256];
-static int inverse_db_q31_ready;
-static void rvq_init_db_q31(void)
-{
- int i;
- if (inverse_db_q31_ready) return;
- for (i = 0; i < 256; i++)
- inverse_db_q31[i] = rvq_coef_q31(inverse_db_table[i]);
- inverse_db_q31_ready = 1;
-}
+/* Q31 twin of inverse_db_table; entries are (0,1]. This used to
+ * be built at first use behind a non-atomic flag, a data race when
+ * two decoders enter s16 mode concurrently. The 256 entries are
+ * rvq_coef_q31() over the float inverse_db_table, baked as const data
+ * generated by that same converter; const data has no initialiser
+ * to race on. */
+static const int32_t inverse_db_q31[256] = {
+ 229,244,259,276,294,313,334,355,
+ 378,403,429,457,487,518,552,588,
+ 626,667,710,756,806,858,914,973,
+ 1036,1104,1175,1252,1333,1420,1512,1610,
+ 1715,1826,1945,2072,2206,2350,2502,2665,
+ 2838,3023,3219,3428,3651,3888,4141,4410,
+ 4696,5002,5327,5673,6042,6434,6852,7298,
+ 7772,8277,8815,9388,9998,10647,11339,12076,
+ 12861,13697,14587,15535,16544,17619,18764,19984,
+ 21283,22666,24139,25707,27378,29157,31052,33070,
+ 35219,37507,39945,42541,45305,48249,51385,54724,
+ 58281,62068,66102,70397,74972,79844,85033,90559,
+ 96444,102711,109386,116494,124065,132127,140714,149858,
+ 159597,169968,181014,192777,205305,218647,232855,247988,
+ 264103,281266,299544,319011,339742,361820,385333,410374,
+ 437043,465444,495691,527904,562210,598746,637656,679094,
+ 723226,770225,820278,873585,930355,990815,1055204,1123777,
+ 1196806,1274581,1357411,1445623,1539568,1639617,1746169,1859645,
+ 1980495,2109199,2246266,2392242,2547703,2713267,2889590,3077372,
+ 3277357,3490338,3717160,3958722,4215982,4489960,4781743,5092488,
+ 5423426,5775871,6151220,6550961,6976679,7430063,7912910,8427135,
+ 8974778,9558009,10179143,10840641,11545127,12295394,13094418,13945367,
+ 14851616,15816757,16844620,17939278,19105072,20346628,21668866,23077032,
+ 24576706,26173840,27874762,29686224,31615400,33669948,35858008,38188264,
+ 40669952,43312916,46127636,49125268,52317704,55717604,59338448,63194596,
+ 67301336,71674952,76332792,81293328,86576232,92202440,98194280,104575488,
+ 111371400,118608936,126316816,134525600,143267824,152578176,162493568,173053312,
+ 184299296,196276096,209031216,222615248,237082048,252488976,268897120,286371552,
+ 304981600,324801024,345908448,368387520,392327392,417823040,444975520,473892576,
+ 504688768,537486272,572415168,609613952,649230080,691420736,736353088,784205504,
+ 835167552,889441472,947242432,1008799552,1074356992,1144174848,1218529664,1297716608,
+ 1382049536,1471862912,1567512832,1669378688,1777864320,1893399936,2016443776,2147483647 };
/* Fused floor apply: Q20 residue * Q31 floor -> Q28 spectral sample,
* rounded. Peak product ~2^60, int64-safe. */
#define RVQ_FLOORMUL(r, fq) \\
@@ -3872,8 +4036,8 @@ static int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start,
{
Mapping *map;
int i,j,k,n,n2;
- int zero_channel[256];
- int really_zero_channel[256];
+ int *zero_channel = f->zero_channel;
+ int *really_zero_channel = f->really_zero_channel;
/* WINDOWING */
@@ -4320,29 +4484,14 @@ static void rvorbis_materialize_first_frame(rvorbis *f)
}
}
-static int start_decoder(vorb *f)
+/* The identification header: 30 fixed bytes read straight out of the
+ * stream where it sits, the packet layer buying nothing for a packet
+ * whose length is already known. Shared by the Ogg opener, which has
+ * just checked that the first page carries exactly this packet, and by
+ * the raw-packet opener, which is handed the packet by its container. */
+static int parse_id_header(vorb *f)
{
- uint8_t header[6], x,y;
- int len,i,j,k, max_submaps = 0;
- int longest_floorlist=0;
-
- /* first page, first packet */
-
- if (!start_page(f))
- return 0;
-
- /* validate page flag */
- if (!(f->page_flag & PAGEFLAG_first_page))
- return error(f, RVORBIS_invalid_first_page);
- if (f->page_flag & PAGEFLAG_last_page)
- return error(f, RVORBIS_invalid_first_page);
- if (f->page_flag & PAGEFLAG_continued_packet)
- return error(f, RVORBIS_invalid_first_page);
- /* check for expected packet length */
- if (f->segment_count != 1)
- return error(f, RVORBIS_invalid_first_page);
- if (f->segments[0] != 30)
- return error(f, RVORBIS_invalid_first_page);
+ uint8_t header[6], x;
/* read packet
* check packet header */
if (get8(f) != RVORBIS_packet_id)
@@ -4383,6 +4532,37 @@ static int start_decoder(vorb *f)
x = get8(f);
if (!(x & 1))
return error(f, RVORBIS_invalid_first_page);
+ return 1;
+}
+
+/* From the setup header on: the setup parse, and the allocation and
+ * precomputation that it sizes. Entered with the bit reader positioned
+ * at the first byte of the setup packet, under either framing. */
+static int start_decoder_setup(vorb *f);
+
+static int start_decoder(vorb *f)
+{
+ int len;
+
+ /* first page, first packet */
+
+ if (!start_page(f))
+ return 0;
+
+ /* validate page flag */
+ if (!(f->page_flag & PAGEFLAG_first_page))
+ return error(f, RVORBIS_invalid_first_page);
+ if (f->page_flag & PAGEFLAG_last_page)
+ return error(f, RVORBIS_invalid_first_page);
+ if (f->page_flag & PAGEFLAG_continued_packet)
+ return error(f, RVORBIS_invalid_first_page);
+ /* check for expected packet length */
+ if (f->segment_count != 1)
+ return error(f, RVORBIS_invalid_first_page);
+ if (f->segments[0] != 30)
+ return error(f, RVORBIS_invalid_first_page);
+ if (!parse_id_header(f))
+ return 0;
/* second packet! */
if (!start_page(f))
@@ -4402,7 +4582,15 @@ static int start_decoder(vorb *f)
if (!start_packet(f))
return 0;
- crc32_init(); /* always init it, to avoid multithread race conditions */
+ return start_decoder_setup(f);
+}
+
+static int start_decoder_setup(vorb *f)
+{
+ uint8_t header[6], x,y;
+ int i,j,k, max_submaps = 0;
+ int longest_floorlist=0;
+
if (get8_packet(f) != RVORBIS_packet_setup)
return error(f, RVORBIS_invalid_setup);
@@ -4791,9 +4979,17 @@ skip:;
* clamps to the actual decoded vector at run time (as upstream
* stb_vorbis does), which is what makes the temp classification
* array sizing safe; here only reject inverted ranges and values
- * beyond the largest vector any mode can decode. */
+ * beyond the largest vector any mode can decode.
+ *
+ * Channels times the half-block, which is what the interleaved
+ * vector holds. It read two, and refused 5.1 for it: libvorbis
+ * couples 5.1 across the vector and writes an end of 4020
+ * against a ceiling of 2048. That refusal was hiding the same
+ * omission in decode_residue's own clamp, so widening this
+ * alone let the file open and decode to noise. Both say ch
+ * now, and neither should go back to two. */
if (r->begin > r->end ||
- r->end > 2u * (uint32_t)(f->blocksize_1 >> 1))
+ r->end > (uint32_t)f->channels * (uint32_t)(f->blocksize_1 >> 1))
return error(f, RVORBIS_invalid_setup);
r->classifications = get_bits(f,6)+1;
r->class…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fix CI issues on Nightly
Testing
Check CI
Checklist