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

pre-release6 days 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.
Mainly this release is aimed to be a stable version of the current changes and anything unstable was either fixed or disabled.

This Update

- [+] Any files in lua/autorun/_holylua/ are loaded by HolyLib on startup.
- [+] Added a new module luathreads
- [+] Added NS_ enums to gameserver module.
- [+] Added missing CNetChan:Shutdown function to the gameserver module.
- [+] Added LZ4 compression for newly implemented net channel.
- [+] Added util.CompressLZ4 & util.DecompressLZ4 to util module.
- [+] Implemented a custom CNetChan for faster Server <-> Server connections. See #42
- [+] Added HolyLib.ReceiveClientMessage to HolyLib module.
- [+] Added physenv.IVP_NONE flag to physenv module.
- [+] Added a few stringtable related functions to the stringtable module.
- [+] Added a new hook HolyLib:OnClientTimeout to the gameserver module.
- [+] Optimized GM:PlayerCanHearPlayersVoice by only calling it for actively speaking players/when a voice packet is received.
- [+] Added voicechat.LoadVoiceStreamFromWaveString, voicechat.ApplyEffect, voicechat.IsPlayerTalking & voicechat.LastPlayerTalked to the voicechat module.
- [+] Added VoiceStream:ResetTick, VoiceStream:GetNextTick, VoiceStream:GetCurrentTick, VoiceStream:GetPreviousTick to the voicechat module.
- [+] Added util.FancyJSONToTable & util.AsyncTableToJSON to the util module.
- [+] Added gameserver.GetClientByUserID to the gameserver module.
- [+] Added a config system allowing one to set convars without using the command line.
- [+] Added IPhysicsEnvironment:SetInSimulation to the physenv module.
- [+] Added HttpResponse:SetStatusCode to httpserver module. (See #62)
- [+] Added HttpRequest:GetPathParam to httpserver module. (See #63)
- [+] Added bitbuf.CreateStackReadBuffer & bitbuf.CreateStackWriteBuffer to bitbuf module.
- [+] Added a fallback method for HolyLib's internal Util::PushEntity function in case a Gmod update breaks our offsets which previously lead to undefined behavior
- [#] Added some more safeguards to IPhysicsEnvironment:Simulate to prevent one from simulating a environment that is already being simulated.
- [#] Highly optimized util module's json code to be noticably faster and use noticably 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 netadr stuct to now properly support loopback and localhost inputs for IP's.
- [#] Possibly fixed memory issues caused by IGModAudioChannel's being deleted & having undefined behavior.
- [#] Fixed HolyLib:OnPhysicsLag possibly being called recursively causing a crash.
- [#] Fixed every function from the physenv module not accepting gmod's PhysObj.
- [#] Fixed a crash caused by comcommand module since Gmod's ConCommand_IsBlocked changed. (See #45)
- [#] Fixed a few Windows issues.
- - [+] Added support for the stringtable module on Windows.
- - [#] Fixed entitylist not being loaded on Windows
- [#] Solved a few Bass bugs.
- [#] Fixed possible undefined behavor & two buffer overflows in gameserver module.
- [#] Updated VoiceStream file structure to also save the server tickrate and include a file version.
- - The VoiceStream now properly updates the tickCount for the saved VoiceData to scale the tickCount when the server changed tickrate which should ensure the audio remains usable.
- [#] Fixed a issue with the gameserver moduel causing random Lost Connection disconnects (See #51)
- [#] Extented networking module to include some new things.
- - Made some optimization for PackEntities_Normal reducing overhead
- - Slightly optimized our own implementation of CServerGameEnts::CheckTransmit
- - Added holylib_networking_fastpath which will use a transmit cache for CServerGameEnts::CheckTransmit as a noticable optimization.
- - Added holylib_networking_maxviewmodels allowing one to limit view models to 1 for each player instead of each having 3 of which 2 often 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 VoiceStream Load/Save function to be able to read/write .wav files
- [#] Fixed IModule::ServerActivate not being called when being loaded as a binary module
- [#] Fixed HolyLib:ProcessConnectionlessPacket being called for SourceTV packets
- [#] Fixed gameserver.SendConnectionlessPacket crashing instead of throwing a lua error when NET_SendPacket couldn't be loaded
- [-] Removed some unused code of former fixes that were implemented into Gmod

You can see all changes/commits here:
Release0.7...main

Existing Lua API Changes

- [+] Added third protocolVersion argument to gameserver.CreateNetChannel
- [+] Added fourth socket(use NS_ enums) argument to gameserver.CreateNetChannel & gameserver.SendConnectionlessPacket
- [+] Added second and thrid arguments to HolyLib:OnPhysicsLag providing the entities it was working on when it triggered.
- [+] Added voicechat.SaveVoiceStream 4th argument returnWaveData (previously the 4th argument was async but that one was removed)
- [+] Added directData argument to VoiceStream:GetData, VoiceStream:GetIndex, VoiceStream:SetIndex and VoiceStream:SetData
- [+] Added overflow checks for gameserver.BroadcastMessage, CNetChan:SendMessage and CBaseClient:SendNetMsg when you try to use a overflowed buffer
- [+] Added a few more arguments to HolyLib:OnPhysicsLag like phys1, phys2, recalcPhys, callerFunction and the arguments ent1 & ent2 were removed since you can call PhysObj:GetEntity
- [#] Fixed addonsystem.ShouldMount & addonsystem.SetShouldMount workshopID arguments being a number when they should have been a string.
- [#] Changed VoiceData:GetUncompressedData to now returns a statusCode/a number on failure instead of possibly returning a garbage string.
- [#] Limited HttpServer:SetName to have a length limit of 64 characters.
- [#] Fixed IGModAudioChannel:IsValid throwing a error when it's NULL instead of returning false.
- [#] Fixed HttpServer:SetWriteTimeout using the wrong arguments. (See #65)
- [#] Fixed bf_read:ReadBytes and bf_read:ReadBits both failing to push the string properly to lua.
- [#] Changed voicechat.SaveVoiceStream & voicechat.LoadVoiceStream to remove their 4th sync argument, if a callback is provided it will be async, else it'll run sync
- [-] Removed VoiceData:GetUncompressedData decompress size argument
- [-] Removed CBaseClient:Transmit third argument fragments.
- [-] Removed gameserver.CalculateCPUUsage and gameserver.ApproximateProcessMemoryUsage since they never worked.

QoL updates

- [#] Changed some console message to be more consistent.
- [#] Solved a possible crash caused by a CGameClient disconnecting after g_Lua became NULL

Don't miss a new gmod-holylib release

NewReleases is sending notifications on new releases.