github ec-/Quake3e 2026-10-14

latest release: latest
4 hours ago
  • Client: make sure a local server is ACTUALLY killed before starting demo playback
  • Client: don't warn about g_sync if autoRecord
  • Vulkan: fix texture bind regression on flames map
  • Common: use more explicit hunk memory control, remove CL_ClearMemory()
  • FS: increase \fs_basegame folder 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-pipe redirection 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_list output
  • 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_lagged and 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()

Don't miss a new Quake3e release

NewReleases is sending notifications on new releases.