- Client: make sure a local server is ACTUALLY killed before starting demo playback
- Client: don't warn about
g_syncif autoRecord - Vulkan: fix texture bind regression on
flamesmap - Common: use more explicit hunk memory control, remove CL_ClearMemory()
- FS: increase
\fs_basegamefolder limit from 4 to 8 - FS: always report the filename extension from FS_AllowedExtension()
- Client: avoid duplicate download URL separator
- botlib: reject missing jump candidates before midpoint calculation
- Renderers: give PNG chunk headers byte alignment
- Sound: use pthread-compatible ALSA callbacks
- QVM: initialize unused native call arguments
- Qcommon: match zlib allocator callback signatures
- FS: validate extension before pointer arithmetic
- botlib: initialize the complete movement result
- SDL: include Windows declarations independently of curl
- Common: validate affinity hex digits before widening
- Common: preserve affinity expression operators
- Botlib: preserve the signed chat offset sentinel
- Common: simplify and use more explicit hunk zone memory management
- Renderers: apply client-side CM + BSP hunk memory load optimization
- Win32: set WASAPI thread termination timeout to 10s
- Win32: fixed WIN32 ARM64 build
- Client: use named pipes for
\video-piperedirection on Win32 - Client: allow setting target file extension for \video-pipe via adding "|" suffix ("|mkv" for example) at the end of
\cl_aviPipeFormat - CM: fixed another tiny precision loss/misprediction on q3dm12
- CM: fixed precision for curve mesh collisions
- CM: fix root of MAX_PATCH_PLANES error, reduce definition MAX_PATCH_PLANES to the original value
- x86: enforce x87 double precision by default for all platforms to unify behavior/IEEE-754 compliance
- VM_x86: implemented new x87 JIT compiler
- VM_x86: use more explicit x87 precision/rounding control for better determination
- VM_x86: corrected NaN-checks for CPUs without fast FPU comparisons
- VM_x86: optimized some int->float SSE conversions
- FS: refined filesystem checks (e.g. check extensions of a short source file not whole ospath)
- QVM: explicitly mark all jump targets with unsafe bit
- VM_x86: add more const optimizations
- VM_x86: improve VM_FindSameLoad4()
- VM_x86: implement instruction length detection for RIP-related offsets instead of using hardcoded values
- VM_x86: call FlushInstructionCache() for generated bytecode in win32, allocate initial memory with RW permissions instead of RWX
- VM_x86: fixed out-of-bounds access with macro optimization enabled
- VM_x86: added more macro optimizations
- Win32: apply Win key hooks only if key is bound
- FS: keep qvm-referenced paks always locked
- FS: reduce simultaneously opened file handle limit to 250
- FS: refactor/cleanup FS_TouchFileInPak()
- Misc: raize description limit for Cvar_SetDescription2() from MAX_CVAR_VALUE_STRING (256) to MAX_STRING_CHARS (1024)
- Vulkan: disabled discard optimization for depth-write shaders
- Network: fixed incorrect timeout parameter for NET_FlushPacketQueue()
- Win32: added netmask detection function for ipv4 addresses
- Vulkan: corrected initial swapchain image layout transition (write-after-read hazard)
- QVM-JIT: fixed potential clobbering of aliased registers on sign-extension optimizations
- VM_x86: slightly refactored MACRO_OPTIMIZE and enabled by default
- ppc64-QVM: zero-extend cached OP_LOAD1/LOAD2 instead of sign-extend
- ppc64-QVM: honor IEEE unordered semantics for float <= and >=
- ppc64-QVM: do not clobber an aliased register when reducing a cached load
- ppc64-QVM: zero-extend cached OP_LOAD1/LOAD2 instead of sign-extend
- CI: Update deps & fix warns for brew
- Client: Add CG_KEY_CAPSLOCK_ON cgame trap for Caps Lock latch state
- Renderers: fixed compatibility with ut43_azurea_b1 map
- Vulkan: fixed recent SDK validation layer warnings
- QVM: fixed opStack flush conditions
- win32: improved forward compatibility for msvc2017 project files
- FS: block autoexec.cfg and q3config from
*.pk3dir - ppc64-QVM: debug-only emit-macro range checks + diagnostic data trap
- ppc64-QVM: tighten CONST_OPTIMIZE immediate-fit check for BAND/BOR/BXOR
- ppc64-QVM: drop branch-trap data check, always mask in emit_CheckReg
- aarch64-QVM: split fixed-size MOVXi into emit_MOVXi64
- ppc64-QVM: clear high bits before data-segment bounds check
- ppc64-QVM: direct mov_sx_rx via mtvsrws+xscvspdp on POWER9+
- botlib: fixed BotNextConsoleMessage() argument aligment issues reported by UBSan
- Sound: fixed heavy sound swapping on ut4_skipjumps_b2 with default soundmegs
- Sound: fixed
\s_listoutput - Add VSX Q_rsqrt with Newton-Raphson refinement
- Add PPC64 VSX SIMD compiler flags
- Server: fixed redundant gamestate retransmission
- Server: refactored/re-applied "delta snapshot developer print fix" + "don't delta from pre-map restart messages"
- Server: fixed client' gamestate acknowledge state after cURL downloads
- Server: improved gamestate acknowledge function to be more packet-loss friendly
- Client: reworked packet retransmission logic to use relative times
- Cmake: Update regex filter for QCOMMON_SRCS to avoid PowerPC code.
- QVM: moved x86-specific optimization to the common
- Win32: removed
\in_laggedand related code - QVM: fixed/improved MACRO_OPTIMIZE for x86, changed function align to 16 bytes
- arm64-QVM: implemented avoidance of long conditional branches, code cleanup
- QVM: corrected RCONST usage with forced data mask
- ppc-QVM: added more const-optimizations, implemented avoidance of long conditional branches
- x86-QVM: corrected error functions offsets, code cleanup
- win32: added description for
EXCEPTION_INT_DIVIDE_BY_ZERO - QVM: implemented FPU load/store and variable mapping optimizations for PowerPC
- QVM: various fixes/improvements
- implemented jump expansions and load/store optimizations for PowerPC
- implemented empty function optimization for armv7l
- replaced explicit color codes with corresponding warning/error defitions
- reset proc_len at empty function detection
- fixed SX/RX definition typo in vm_optimize.h
- Renderers: set correct shader time on 3D->2D transition
- QVM: slightly optimize scalar loads from syscall returns
- Common: reworked/simplified free block search for zone memory allocator and reduced overhead
- Server: do not rate-limit local client
- Fix OpenGL1 renderer failed to init
- Server: correct entity number for BotImport_EntityTrace()
- Server: correct entity numner for SV_Trace() as well
- QVM: Skip VM syscall array bounds check if DLL is used
- Common: Simplify RotatePointAroundVector()
- QMV: Add missing CG_CM_MARKFRAGMENTS syscall bounds checks
- Sound: Validate entity number passed to sound functions
- FS: Forbid reading/writing negative amount of bytes
- FS: Check FS_Read() return values in various subsystems
- Common: Use buffer size safe string functions where possible
- Server: Fix potential integer overflow in sv_filter code
- Renderers: Fix some minor PVS handling issues
- Renderers: Fix broken MD3 LODs registration
- Server: Harden game syscall argument validation
- Renderers: Harden BSP structure validity checks
- Renderers: Harden IQM, MD3 header validity checks
- QVM: Harden QVM header validity checks
- Botlib: Validate AAS file structure, Validate botlib vars range
- Botlib: Validate AAS_UpdateEntity() argument
- Botlib: Clean up botlib memory allocation code.
- QVM: apply generic (OP_LOAD + sign extendsion + OP_CONST + OP_EQ/OP_NE) optimization instead of platform-specific ones
- CI: Fix warn to update actions to Node24
- x86-QVM: implemented literal pool for FP immediates, implemented per-function jump compression
- QVM: added more optimizations for PowerPC JIT
- QVM: added basic const-optimizations for powerpc, fixed reduce_map_size() for BE systems
- QVM: utilize shared optimization framework for PowerPC bytecode compiler, estimated speedup is ~2x for now
- QVM: moved all platform-independend opStack/register optimizations to a separate header file
- QVM: refactored x86/armv7l/aarch64 bytecode compilers to utilize new optimization framework
- Makefile: added detection for aarch64 over 32-bit runtime environments like RPi4b + Debian Trixie armhf
- Win32: somewhat improved support for arm32 platform
- Huffman: reduced internal buffer sizes
- OpenGL: use GL_ARB_texture_border_clamp unconditionally if available
- OpenGL: Do not use VBO or per-pixel lighting without ARB shaders
- OpenGL: Prevent using merged lightmaps without GL_ARB_texture_border_clamp
- Renderers: fix drawSurf->sort typo in RB_RenderDrawSurfList()
- Vulkan: print note about buggy drivers
- Misc: define S_COLOR_DEVEL/S_COLOR_WARNING/S_COLOR_ERROR, replace some definitions as well
- QVM: slightly optimize syscallCount handling
- x86-QVM: use divss instead of divps for OP_DIVF to avoid triggering "Invalid Operation" bit
- Server: Add syscall overflow detection to prevent VM infinite loops
- Wire up max_routingcache cvar to routing cache eviction logic
- Renderers: Fix NULL pointer dereference in RE_Shutdown when renderer interface is not initialized
- Fix CMake renderer library naming to omit 'lib' prefix
- QVM: Add Power ISA 2.07/3.0 JIT optimizations to vm_powerpc.c
- Misc: Fix RENDERER_DEFAULT double-quoting in Makefile and CMakeLists.txt
- QVM: Add ppc64 big-endian (ELFv1 ABI) JIT support to vm_powerpc.c
- Make, CMake: Add ppc64 (PowerPC 64-bit BE) architecture support
- QVM: Add PPC64le JIT compiler (vm_powerpc.c)
- Make, Cmake: Add ppc64le (PowerPC 64-bit LE) architecture support
- x86-QVM: use movss instead of movd for explicit FP register initialization on old SSE1-only CPUs
- Renderers: fix dlight regression and optimize shaders on simpsons_q3 map
- Renderers: unlock \r_flareSize and limit its range to [1..40]
- SDL: sync modifier keys with SDL state
- Win32: use GetKeyState() instead of GetAsyncKeyState()
- SDL: add crash workaround for SDL_WarpMouseGlobal()