By moving our logging to a DLL we see a drop in CPU/real time of 2-3 orders of magnitude. This is due to BYOND opening and closing file handles on every write, causing incredible amounts of unneeded overhead. The logging library also handles timestamps for us, further increasing performance gains.
This library will also allow for further offloading in the future, such as completely replacing file2text() and friends.
A pre-compiled DLL is bundled, but Linux users will have to compile manually. Directions can be found at the rust-g repo.
Log output is enhanced with millisecond time stamps:
[2018-04-01 15:56:23.522] blah blah blah
This includes runtimes as well, which benefit from the same timestamp improvements and no longer have hacky splitting code to add their own timestamps.
Log shutdown is handled in a dedicated proc called as late as possible, as rust-g integration expands this will be factored out into a generic native code shutdown proc.
cl ShizCalev
fix: Fixed a large number of missing APCs on Omegastation
fix: Fixed unpowered Incinerator outlet injector on Omegastation.
fix: Replaced glass window at Omegastation's incinerator with a plasma window.
fix: Fixes broken atmos injectors on Omega
fix: Fixes broken air outlet on Meta
fix: Fixed a couple of malfunctioning atmospheric monitors across the rest of the maps
add: New test atmos monitoring console debug verb to help alleviate future issues.
/cl
Added a ton of missing APCs and cleaned up some dirty camera name varedits.
This is basically extracting the functionality of the animation spell into an admin verb.
Please excuse the browser.dm code, this is more of a stepping stone towards the more complicated popup needed for custom ERTs.
cl Naksu
admin: Admins can now easily spawn mobs that look like objects. Googly eyes optional!
/cl
* Virus antagonist initial commit
* Updated disease code
* Sentient virus improvements
* Renamed /mob/living/var/viruses to diseases, and /mob/living/var/resistances to disease_resistances
* Added sentient virus event
* Renamed VIRUS defines to DISEASE defines
* Fixed bugs in rewritten disease code
* Fixed advanced disease Copy()
* Finalized disease antagonist
* Made cooldown buttons stop processing if they are removed from an owner.
Made sentient disease active sneeze and cough not available if the host is unconscious.
Made sentient disease menu refresh when adaptations are ready or hosts are added or removed.
Made sentient disease following use movement signals instead of fastprocess.
* Added better icons to sentient disease abilities
* updates sqladmins with excluded flags and tempminning
* rank, editing and permission protections; json backup
* fixes
* reverted the wrong file
* fix slidecolor cascading and disabled switches not being sent in form
* removes debug uncommenting
* whoops this too
* commas fix + versions for changelog entry headers since 3.0
* actually account for can_edit_flags and use of @ with - or *
* fixes and rearrangement of admin > localhost > autoadmin precedence
* in case you want to not have autologin autoadmins
* Deadmin tweaks, Admins without +ADMIN start deadmined.
Deadmining no longer destroys the admin datum.
Admins without +ADMIN start deadmined, reloading admins re-deadmins them.
Moved some code around to make it more sane
People with +PERMISSION can now deadmin or readmin other admins at will.
* Adds new flag for if the role should automatically log in, defaults to on, can be removed with -AUTOLOGIN
Also fixes a bug in permission panel not handling these cases gracefully
* wip
* wip2
* makes code actually compile on 511 + fixes
* versioning
* s
* adds python conversion script, schema change and removes 'force ' from item_used_for_combat
* fix to compile
* forgot to actually commit this
🆑 ninjanomnom
add: You can now select a nearby area to expand when using a blueprint instead of making a new area.
add: New shuttle areas can be created using blueprints. This is currently not useful but will be used later for shuttle construction.
tweak: Blueprints can modify existing areas on station.
admin: Blueprint functionality has been added to the debug tab as a verb.
/🆑
Additionally the code for getting all turfs in a contained space has been refactored for some pretty good performance improvements.
Old proc: Self CPU 8.816, Total CPU: 10.009, Real Time: 10.009, Calls: 5000
New proc: Self CPU 4.174, Total CPU: 9.000, Real Time: 9.001, Calls: 5000
They've been moved into a area helpers file.
* Overlay per-type cost logging.
Overlays will now log how long each type took to process.
Changed up how overlays was done to account for the fact its a queue and not a processor. (it was using almost none of the processing subsystem framework)
Made the overlay loop faster by making it not cut the list until the end.
Added a simple generic benchmark stat tracking system.
I don't know how much overhead this adds to overlays. i may put it behind testing or something, but i do want to test this on the serbers to get some stats.
* Removes flush() as it was creating race conditions
* Use ref
* text2file
* Atoms added as an overlay will have their pending overlays compiled before being converted to an appearance
* Configuration datum refactor
* More WIP
* New easier on the eyes format
* More WIP
* Finished config.txt
* Fucktons more WIP
* The end of conversion draws near...
* Add all this shit
* Done converting entries finally
* Hunting down compile errors
* More WIP
* MORE CONVERSIONS
* More WIP
* More WIP
* Oh shit only 90 errors this time!
* IT COMPILES!!!
* Fixes world start runtimes
* Adds Internet admin midi
* Moves global regex into proc (shell_url_scrub)
* Moves shelleo to world
Adds quotes around the command in shelleo, to encapsulate it
* Admins can stop playing web sounds
* Revised internet midi extension order
Moved m4a to least preferred,
as it can potentially carry non-aac or non-mpeg-3 audio
* Kills \n in web sound
* play_web_sound availability based on config
* play web sound and shelleo tweaks
istypeless for in play web sound & readability parenthesis around binary AND
add return index defines for shelleo proc
* Security fix for play web sound
* Ports Paradise Job exp system
* changed to use json_decode and json_encode as recommended by oranges
* updates changelog
* Reee cyberboss
* Changes to use a seperate table
* Updates database changelog
Changes to use mediumint
* Back to wip we go.
Changes sql stuff to how mso suggested
Attempts the changes requested in the other pr.
* work on stuff.
* work on stuff.
* Renamed proc for time remaining.
Fixed updating time amounts.
Added delay to fix firing at roundstart
* exp is now stored in a global list, and only updated to the db at round end.
* some stuff
* Added button to toggle exempt status on a player.
Still need to make it update the db
* REEE Jordie.
Undoes delaying exp updating to round end.
Adds the updating filtering to the update_exp_client proc which is used again
* Lowers a bunch of the times needed.
* Makes tracking per job instead of per department.
Department time is now calculated from job time.
* Whoops forgot to update master first. Lemme save this
Reverb should play cheeki breeki to people
* I think I did this right.
Too tired to test atm.
Busy rewatching twintails ni narimasu
* Removes var from proc arguments
Fixes database stuff
* Does some requested changes.
Makes special_role be tracked instead of bundled under special.
* Done, but need to refactor how it handles ghost roles.
* Less false data wew
* Changes
* Updates db version
More changes
* More changes
* More changes
* revision fix
* OOPS
* fix schemas
* Makes SQL error logging handled by Execute
Gang role tracking now strips out the gang name and is generic.
This is a admin version of the ghost preference that hides radio chatter even when human, even from near by radios/intercoms
Its an old verb, it was removed accidentally in my datum top menu rewrite, and it needs to come back because a admin got their shit stuck in disabled and couldn't re-enable it.
* Begins converting Ninjas into the new antagonist datum system. Does not compile. Work in progress.
* More work towards datumizing ninjas. Still not finished. Now compiles.
* Adds ninja to traitor panel.
* Add objectives now takes an arg for number of objectives.
* Event now actually ninjas the ninja.
* Ninja suit initialization now works.
* Cleans up the suit initialization code some.
* Suit initialization is now action rather than verb based.
* Now properly adds objectives and memories to the mind upon gaining datum.
* Starts to replace ninja verbs with actions.
* Hooks ninja abilities up to action buttons.
* Whoops, missed a verb. Gloves are next.
* Adds toggle ineraction type action button.
* Changes icons as per ChanglingRain's suggestions.
* Second round of changes for ChanglingRain
* Replaces sleeps with addtimers. It's ugly, but more CPU efficient.
* Fixes compile errors.
* Fixes compile error, again.
Shouldn't break anything, stops warning spam, logs errors qdel style at the end of the game.
Initialize now expects a hint to be returned, one of:
INITIALIZE_HINT_NORMAL - Does nothing, returned by the root proc
INITIALIZE_HINT_LATELOAD - Call atom/proc/LateInitialize
INITIALIZE_HINT_QDEL - Calls qdel on the atom
LateInitialize currently defaults to the old re-calling behavior so there should be no issues with that.
Things that didn't return a hint or fucked up somehow will be logged less loudly than they were before
No more world start warnings!