Release 0.8 #156
RaphaelIT7
announced in
Announcements
Release 0.8
#156
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Note
This build requires the server to run on the newest GMod version! (The
2026.04.29net compat update)It took over a year, though here we are :)
This Update (may not include every single new thing)
- [+] Any files in
lua/autorun/_holylua/are loaded by HolyLib on startup.- [+] Added a new modules
luathreads,networkthreading,soundscape,luagc,nw2,crashhandler- [+] Added
NS_enums togameservermodule.- [+] Added missing
CNetChan:Shutdownfunction to thegameservermodule.- [+] Added LZ4 compression for newly implemented net channel.
- [+] Added
util.CompressLZ4&util.DecompressLZ4toutilmodule.- [+] Implemented a custom
CNetChanfor faster Server <-> Server connections. See #42- [+] Added
HolyLib.ReceiveClientMessage&HolyLib.GetEnvironmentValue(See #139) toHolyLibmodule.- [+] Added
physenv.IVP_NONEflag tophysenvmodule.- [+] Added a few stringtable related functions to the
stringtablemodule.- [+] Added a new hook
HolyLib:OnClientTimeout&HolyLib:OnClientExecuteStringCommandto thegameservermodule.- [+] Added
voicechat.LoadVoiceStreamFromWaveString,voicechat.ApplyEffect,voicechat.IsPlayerTalking&voicechat.LastPlayerTalkedto thevoicechatmodule.- [+] Added
VoiceStream:ResetTick,VoiceStream:GetNextTick,VoiceStream:GetCurrentTick,VoiceStream:GetPreviousTickto thevoicechatmodule.- [+] Added
util.FancyJSONToTable&util.AsyncTableToJSONto theutilmodule.- [+] Added
gameserver.GetClientByUserID&gameserver.GetClientBySteamID&gameserver.GetCPUUsage(See #136) to thegameservermodule.- [+] Added a config system allowing one to set convars without using the command line.
- [+] Added
IPhysicsEnvironment:SetInSimulationto thephysenvmodule.- [+] Added
HttpResponse:SetStatusCodetohttpservermodule. (See #62)- [+] Added
HttpRequest:GetPathParamtohttpservermodule. (See #63)- [+] Added
HttpServer:AddProxyAddresstohttpservermodule.- [+] Added
bitbuf.CreateStackReadBuffer&bitbuf.CreateStackWriteBuffertobitbufmodule.- [+] Added a fallback method for HolyLib's internal
Util::PushEntityfunction in case a Gmod update breaks our offsets which previously lead to undefined behavior- [+] Added a
ILuaThreadedCallto call all modules Think function when HolyLib is loaded as a binary module/loaded usingrequire("holylib")- [+] Added a new DLL system if anything wants to be loaded with HolyLib. (See: example-module-dll)
- [+] Added JIT support to some C functions & to our
__indexand__newindexfunctions.- [+] Added
steamworks.GetGameServerSteamIDto thesteamworksmodule.- [+] Added
HolyLib:OnLuaRunStringhook to theholylibmodule.- [+] Added
pvs.SetMaxViewDistance&pvs.PreventTransmitAllExceptto thepvsmodule.- [+] Added the
-norconoption for thehttpservermodule to disable RCON and free the TCP port, allowing one to run an httpserver on the gameserver port instead.- [#] Added missing numeric key conversion to
util.FancyJSONToTable(See #105)- [#] Added some more safeguards to
IPhysicsEnvironment:Simulateto prevent one from simulating a environment that is already being simulated. (else you might end up with all memory freed & a certain crash)- [#] Highly optimized
utilmodule's json code to be noticeably faster and use noticeably less memory.- [#] Better support for multiple Lua states
- - This required most of the lua setup to be changed >:(
- [#] Solved a few possible stack issues
- [#] Fixed a crash after a map change. See #41
- [#] Update internal
netadrstruct to now properly supportloopbackandlocalhostinputs for IP's.- [#] Possibly fixed memory issues caused by
IGModAudioChannel's being deleted & having undefined behavior.- [#] Fixed
HolyLib:OnPhysicsLagpossibly being called recursively causing a crash.- [#] Fixed every function from the
physenvmodule not accepting gmod's PhysObj.- [#] Fixed a crash caused by
comcommandmodule since Gmod'sConCommand_IsBlockedchanged. (See #45)- [#] Fixed a few Windows issues.
- - [+] Added support for the
stringtablemodule on Windows.- - [#] Fixed entitylist not being loaded on Windows
- [#] Solved a few Bass bugs.
- [#] Fixed possible undefined behavior & two buffer overflows in
gameservermodule.- [#] Updated
VoiceStreamfile structure to also save the server tickrate and include a file version.- - The
VoiceStreamnow properly updates the tickCount for the savedVoiceDatato scale the tickCount when the server changed tickrate which should ensure the audio remains usable.- [#] Fixed a issue with the
gameservermodule causing randomLost Connectiondisconnects (See #51)- [#] Extended
networkingmodule to include some new things.- - Made some optimization for
PackEntities_Normalreducing overhead- - Slightly optimized our own implementation of
CServerGameEnts::CheckTransmit- - Added
holylib_networking_fastpathwhich will use a transmit cache forCServerGameEnts::CheckTransmitas a noticeable optimization.- - Added
holylib_networking_maxviewmodelsallowing one to limit view models to1for each player instead of each having3of which2often remain unused.- - Added
holylib_networking_transmit_all_weapons- - Added
holylib_networking_transmit_all_weapons_to_owner- [#] Slightly improved memory usage & performance for UserData created by HolyLib
- [#] Updated
VoiceStreamLoad/Savefunction to be able to read/write.wavfiles- [#] Fixed
IModule::ServerActivatenot being called when being loaded as a binary module- [#] Fixed
HolyLib:ProcessConnectionlessPacketbeing called for SourceTV packets- [#] Fixed
gameserver.SendConnectionlessPacketcrashing instead of throwing a lua error when NET_SendPacket couldn't be loaded- [#] Fixed
HttpServernot properly shutting down and possibly crashing- [#] Fixed
CGameClient&CHLTVClientpossibly crashing when accessed after the client already disconnected- [#] Reduced HolyLib's userdata size by 16 bytes.
- [#] Improved
bitbuf.CreateStackReadBufferthanks to our userdata changes making it 3x faster- [#] Fixed possible memory leaks when using
bf_readandbf_write- [#] Tried to improve out of memory handling of
bitbuf.Create[Read/Write]Bufferandbf_read:ReadString()functions- [#] Fixed a regression with
util.FancyTableToJSONcrashing with the0.8-prebuild when it falsely tried to become sequential while being already non-sequential. (Reported by @Noahbg)- [#] Fixed absolute search cache causing files from any search path to be returned / destroying separation between search paths (See #83)
- [#] Fixed HolyLua being unable to register any metatable causing crashes when trying to use them.
- [#] Fixed some small memory leaks in HolyLibs CLuaInterface class
- [#] Fixed
steamworks.ForceAuthenticatebeing silently broken- [#] Fully separated HolyLib's core from all modules allowing anyone to remove modules they don't want.
- [#] Removed all dependencies modules had on each other allowing each module to compile without requiring another one.
- [#] Fixed some issues in
luathreadsmodule that caused either crashes or simply were bugs- [#] Fixed lua error handler used by any
CLuaInterfacecreated by HolyLib failing (error in error handler)- [#] Moved
HolyLuafrom HolyLib's core into a module to separate it and allow anyone to remove it- [#] Fixed some memory leaks from our own
CLuaInterfacesince on shutdown they never cleared up on removal/shutdown- [#] Added a speedup for pushing networked entities to Lua (On 64x pushing entities became 2.6x faster)
- [#] Fixed some issues where
Vectors &Angles pushed from HolyLib would be the original one instead of a copy causing issues like corruption when modified- [#] Fixed
IGModAudioChannel:__tostring()including a full filepath, this also fixedbass.PlayFilebeing unable to play sounds mounted by the filesystem from GMAs or VPK files (See #98)- [#] Fixed
DEDICATEDflag being set on Windows builds- [#] Fixed
util.FancyJSONToTablenot being unloaded when disabled causing a invalid function to remain in Lua that would crash on call- [#] Fixed
util.FancyJSONToTablecrashing when given sequential arrays (See: #101)- [#] Fixed
util.FancyTableToJSONbeing unable to handlemath.hugecausing the parser to stop leaving invalid json- [#] Implemented a workaround for 64x possibly hanging indefinitely when a threadpool is deleted
- [#] Fixed
holylib_filesystem_splitgamepathbreaking searchpath separation. It now only takes effects for theGAMEpath- [#] Fixed
INetworkStringTable:GetStringUserDatanot fully pushing the userdata as a string- [#] Changed internal code to use
ArgErrorinstead ofThrowErrorwhere possible to improve Lua errors when invalid function arguments are given- [#] Removed dependency on bass allowing HolyLib to be loaded on Windows srcds
- [#] Fixed LuaJIT breaking with FTZ & DAZ XMCSR flags
- - Our LuaJIT build will now save, override and restore the flags when entering and exiting the VM
- [#] Fixed our FFI Vector & Angle implementations failing to handle input strings
- [#] Fixed our FFI Vector's
:GetNormalizedfunction returning a number instead of a vector (See #130)- [#] Improved thread safety for lua state access
- [#] Fixed workshop map being prioritied over local map version (See #138)
- [#] Fixed our LuaJIT build failing to call
gmod13_unloadwhen closing a module (See #140)- [-] Removed some unused code of former fixes that were implemented into GMod
You can see all changes/commits here:
Release0.7...Release0.8
Existing Lua API Changes
- [+] Added third
protocolVersionargument togameserver.CreateNetChannel- [+] Added fourth
socket(useNS_enums) argument togameserver.CreateNetChannel&gameserver.SendConnectionlessPacket- [+] Added second and third arguments to
HolyLib:OnPhysicsLagproviding the entities it was working on when it triggered.- [+] Added
voicechat.SaveVoiceStream4th argumentreturnWaveData(previously the 4th argument wasasyncbut that one was removed)- [+] Added
directDataargument toVoiceStream:GetData,VoiceStream:GetIndex,VoiceStream:SetIndexandVoiceStream:SetData- [+] Added overflow checks for
gameserver.BroadcastMessage,CNetChan:SendMessageandCBaseClient:SendNetMsgwhen you try to use a overflowed buffer- [+] Added a few more arguments to
HolyLib:OnPhysicsLaglikephys1,phys2,recalcPhys,callerFunctionand the argumentsent1&ent2were removed since you can callPhysObj:GetEntity- [+] Added
holylib_gameserver_maxplayersallowing the player queue to support up to 8192 players (in theory more but you'd never need more)- [#] Fixed
addonsystem.ShouldMount&addonsystem.SetShouldMountworkshopIDarguments being a number when they should have been a string.- [#] Changed
VoiceData:GetUncompressedDatato now returns a statusCode/a number on failure instead of possibly returning a garbage string.- [#] Limited
HttpServer:SetNameto have a length limit of64characters.- [#] Fixed
IGModAudioChannel:IsValidthrowing a error when it's NULL instead of returning false.- [#] Fixed
HttpServer:SetWriteTimeoutusing the wrong arguments. (See #65)- [#] Fixed
bf_read:ReadBytesandbf_read:ReadBitsboth failing to push the string properly to lua.- [#] Changed
voicechat.SaveVoiceStream&voicechat.LoadVoiceStreamto remove their 4thsyncargument, if a callback is provided it will be async, else it'll run sync- [#] Renamed
HolyLib:OnPhysFrametoHolyLib:PrePhysFrame- [#] Fixed a typo
bf_write:WriteBitVec3normal->bf_write:WriteBitVec3Normal- [#] Changed arguments and return value of
HolyLib:PostEntityConstructor- [#] Changed
pvs.AddEntityToTransmitto only work insideHolyLib:PreCheckTransmitdue to safety & performance reasons- [#] Changed
HolyLib:[Pre/Post]CheckTransmithooks to be disabled by default needing to be now enabled usingpvs.Enable[Pre/Post]TransmitHook- [#] Changed
HttpServer:[Get/Put/Post/OtherShit]callback return value to be flipped, returnfalseto mark a request asNOThandled, returntrueto mark it as handled- [#] Fixed
networkingmodule partially not working without thepvsmodule - it internally had depended on it.- [#] Fixed
stringtable.CreateStringTableandstringtable.CreateStringTableExboth failing to catch the case in which all stringtable slots were used leading to a server error/shutdown.- [#] Fixed pvs.GetEntitiesFromTransmit failing internally due to it using the wrong value
- [#] Changed callback arguments of
HttpServer:[Get/Put/Post/Patch/Delete/Options]to remove theresponse.- -> The
HttpRequestnow contains all methods of theHttpResponseso you should use therequestdirectly! (This was done to help the Lua GC a bit & slightly improve callback performance)- [#] Fixed
HttpServer:IsRunning()falsely reportingtrueeven if it failed to start.- [-] Removed
VoiceData:GetUncompressedDatadecompress size argument- [-] Removed
CBaseClient:Transmitthird argumentfragments.- [-] Removed
gameserver.CalculateCPUUsageandgameserver.ApproximateProcessMemoryUsagesince they never worked.QoL updates
- [#] Changed some console message to be more consistent.
- [#] Solved a possible crash caused by a
CGameClientdisconnecting afterg_LuabecameNULLContributors
All reactions