github RaphaelIT7/gmod-holylib Release0.8-pre2
Release 0.8-pre2

pre-release8 hours ago

Warning

This is a pre-release for the upcoming 0.8
This release does not include all the changes that were planned to be inside of the 0.8 though it still has a lot of things.
This update requires the latest Gmod update for the networkthreading module to be safe.

Note

This update includes some new changes related to networking, it is not guaranteed to be stable, though it should be.
the networking changes should noticeably improve performance for huge player counts.
If you notice any networking issues, like entities not being networked or flickering in and out of existence, please tell me.
You can always try to disable holylib_networking_areasplit 0 in case there are any networking issues as this one is known to be a bit funky

Release build source: https://github.com/RaphaelIT7/gmod-holylib/actions/runs/19306218867

This Update (may not include every single new thing)

- [+] Added a new modules networkthreading, soundscape
- [+] Added gameserver.GetClientBySteamID to the gameserver module.
- [+] Added a ILuaThreadedCall to call all modules Think function when HolyLib is loaded as a binary module/loaded using require("holylib")
- [+] Added a new DLL system if anything wants to be loaded with HolyLib. (See: example-module-dll)
- [#] Added missing numeric key conversion to util.FancyJSONToTable (See #105)
- [#] Fixed HttpServer not properly shutting down and possibly crashing
- [#] Fixed CGameClient & CHLTVClient possibly crashing when accessed after the client already disconnected
- [#] Reduced HolyLib's userdata size by 16 bytes.
- [#] Improved bitbuf.CreateStackReadBuffer thanks to our userdata changes making it 3x faster
- [#] Fixed possible memory leaks when using bf_read and bf_write
- [#] Tried to improve out of memory handling of bitbuf.Create[Read/Write]Buffer and bf_read:ReadString() functions
- [#] Fixed a regression with util.FancyTableToJSON crashing with the 0.8-pre build 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 seperation 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.ForceAuthenticate being silently broken
- [#] Fully seperated 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 luathreads module that caused either crashes or simply were bugs
- [#] Fixed lua error handler used by any CLuaInterface created by HolyLib failing (error in error handler)
- [#] Moved HolyLua from HolyLib's core into a module to seperate it and allow anyone to remove it
- [#] Fixed some memory leaks from our own CLuaInterface since 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 fixed bass.PlayFile being unable to play sounds mounted by the filesystem from GMAs or VPK files (See #98)
- [#] Fixed DEDICATED flag being set on Windows builds
- [#] Fixed util.FancyJSONToTable not being unloaded when disabled causing a invalid function to remain in Lua that would crash on call
- [#] Fixed util.FancyJSONToTable crashing when given sequential arrays (See: #101)
- [#] Fixed util.FancyTableToJSON being unable to handle math.huge causing the parser to stop leaving invalid json
- [#] Implemented a workaround for 64x possibly hanging indefinetly when a threadpool is deleted
- [#] Fixed holylib_filesystem_splitgamepath breaking searchpath seperation. It now only takes effects for the GAME path

Existing Lua API Changes

- [#] Renamed HolyLib:OnPhysFrame to HolyLib:PrePhysFrame
- [#] Fixed a typo bf_write:WriteBitVec3normal -> bf_write:WriteBitVec3Normal
- [#] Changed arguments and return value of HolyLib:PostEntityConstructor
- [#] Changed pvs.AddEntityToTransmit to only work inside HolyLib:PreCheckTransmit due to safety & performance reasons
- [#] Changed HolyLib:[Pre/Post]CheckTransmit hooks to be disabled by default needing to be now enabled using pvs.Enable[Pre/Post]TransmitHook

Important behavior changes

HolyLib internally caches the TValue's of metatables

This is like keeping a reference though faster but also more unsafe.
If a metatable is replaced with another table / the GC Object internally changes
HolyLib will most definetly experience issues / crashes
though generally this should never happen unless you touch the Lua registry yourself

Contributors

Don't miss a new gmod-holylib release

NewReleases is sending notifications on new releases.