- restore after combined mainboard+harddisk crash - cleanup/fixes for 2.1 release - fix invoke to actually do work - refactor invoke shortcuts, gcc cannot inline varargs functions. - optimised invoke to 4-5 insns in the common case. - optimised (For no good reason) the int-to-ascii conversions of dynbuf_text into division-less and branchless code (of which I am pretty proud). - actually move players to their savebed when they did not use one and the map has been reste in the meantime. does not kill (yet) when too long. - enter_map is now handled completely in perl. - goto is now using generation counting to ensure that only the most-recently-issues goto will succeed. - make some heavy use of __builtin_expect to streamline rare callbacks even more. - optimised thawer.
add books from books.pod via some most dire hacks
- optimise invoke by using an inline check on a bitset (kind of a simplified bloom filter for all events).
- add format utility function. - split dynbuf into dynbuf and dynbuf_text. - use dynbuf_text for examine strings instead of outputting each line seperately. tried to use stringstreams but they add insane overheads (as does std::string, but less so).
cede less often in background tasks while still reducing jittering
load archetypes and treasures from perl, make terasures reloadable
VERY EXPERIMENTAL - change the way archetypes and treasurelists are being loaded: - referring to a nonexisting treasurelist will create an empty one - referring to a nonexisting archetype will create an empty one - archetypes/treasurelists will overwrite any existing object of the same name. - net effect should be to allow reloading of archetypes and treasurelists at runtime at a later stage.
ohne worte
nano-cleanups
- identified random memory corrutpion bug - fixed most likely cause for bug above - rewrote object loader etc. into a simple one-line lookahead parser. - rewrote/cleaned up archetype, treasure, artifact, formula parser. - some optimisations / cleanups
- use a simpler, less fancy loader base design (basically a one-line-lookahead top-down parser).
- make server more fragile w.r.t. watchdog on freeze - try to make a perl backtrace on crash, too.
- likely fix the memleak problem. - leave some dbeuggig code in purposely.
- improve error messages from object_thawer to incldue line numbers - provide geenric parse error handler - finish basic design of generic object loader - implement generic regions loader - use it to load regions: loader_region loader; if (!loader.load (filename)) error; - regions should now be the very first filetype that could be reloaded at runtime
abstractify attachable sv_unmagic operation
I knew there was an explanation
- added $cf::WAIT_FOR_TICK* - tuned map-scheduler and player-scheduler - added $op->inv_recursive - added objects_size/objects($index) and actives_size/actives($index) for access to the object and actives vector. - more robust player loader - removed _perl_data attribute support - SIGINT/TERM/HUP are now safe as they are handled synchronously. - replaced LOOK_OBJ by client_visible - cleanups
more preperations for player eviction
re-enable map reattach, re-enable emergency player save
""
use freezer api for saving players, too
many minor changes everywhere, random maps crash sometimes but design is in place
different interface design for c++/perl map handling, some random map framework
minor fixes, apartment hopping seems to work now
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
- small, but subtle, rewrite of object management - perl will now keep attachable objects alive - objects are now refcounted - refcouts need to be tested explicitly (refcnt_chk) - explicit destroy is required current - explicit destroy asks "nicely" for the object to self destruct, if possible - refcounts will be used during mortal killing - minor bugfixes, optimisations etc. - some former hacks removed.
- separate all comamnds into immediate/socket-level and queued/player-level - clean up player command handling, handle up to 8 commands/tick
- clean up some code - fix some possible (minor) bugs - use a bitset for anims_sent - fix a memory leak - removed dead code
- socket i/o is completely asynchronous now - some command sare handled immediately - others (most palying related commands) are queued for later (as of now synchronous) processing - specifying a max queue length (in seconds) is possible, but disabled - also add some syntax sugar for network code
the rename for sanity campaign hits you died - renamed stuff - partially updated copyrights - some cleanups
- implement c++ interface to Event->io watchers - cut number of write()'s the server does in half
- remove some old socket mode cruft - preliminarily added attachable client_socket interface to perl (untested but also unreachable from perl code atm)
reduced dependencies on old plug-in api, fixed some bugs and renamed some methods while I was at it.
- use new event mechanism for command handling instead of the old plugin system
* remove arch.h * use refcounting for archetypes * cleanup * strat of generic garbage collector
re-implement dump and dumpbelow
- likely fix patch/create variable setters - abstract away access rights with $ob->may ("xxx") and use it
further simplify and speed up map saving, fixed - flag_player_sold was incorrectly saved as "player sold 1" - flag_has_ready_range was not saved - flag_is_dust is not in use anymore not well tested
*** empty log message ***
*** empty log message ***
mapstruct => maptile removed many ytypedefs in favor of structure tags
remaining bugfixes
fix a few ugly pod-constructs on non-pod objects, and a few newly introduced bugs
fix, uhm, bug. da.
Changes... - alternative shstr representation, saves code - use glibs splice memory allocator (seems slower) - use simpler memory/lifetime management for objects, no recycling
string scanning (e.g. for patch) is not implemented ATM but should be easy to add with an alternative constructor for object_thawer. Rewrote flex scanner to be simpler, faster and more modularised. Initial speedup: 16% (ah well)
*** empty log message ***
rewrote object serialiser, parser is next
*** empty log message ***
*** empty log message ***
remove compression support, intiialise perl earlier etc. etc.
introduce overhead in the hope of decreasing it at some point
improve thawer interface, implement some monster event support
disable old-style plug-ins, implement attach-field for map headers and map attachments
improved,more automatic freezer
better but more wasteful serialisation support, perl can invoke events, fixes
fixes, objects on maps get instantiated properly
first, untested persistent objetc storage for players and objects, not yte for maps
further refinements
intermediate check-in, per-object events work
many, many cleanups
converted more events, broken per-object events (needs map support), lots of fixes
Move callback checks to C++ and short-circuit when no callback exists for an event: No perl is touched when an event doesn't have a callback registered, so this is very fast (compared to the old way).
Implemented a rough outline of the new event system and made use of it for a number of events. The corresponding plugin-events have been disabled.
- fix extmap protocol - lay foundation for new event interface (not used, not tested) - "slow down" in-game time specials
- added cfperl.h, soon to be used by events - no perl == exit, its no longer optional - moved server main loop entirely in perl - removed lots of unneeded timekeeping cruft
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.