- fix weight/pickup bugs, visible_to - do more automatic nrof/weight updates - kill funcpoint.h
better logging, remove cruft
*** empty log message ***
*** empty log message ***
tuning, glibc-bugworkaround
*** empty log message ***
*** empty log message ***
add some primitive memory debugging
update copyrights and other minor stuff to deliantra
add slice and shstr statistics
*** empty log message ***
first, untested, try at spicing up the message system
indent
rather uncertain optimisation.. trying to take advantage of cmov instructions if refptr. a = b before: 510: 48 8b 16 mov (%rsi),%rdx 513: 48 85 d2 test %rdx,%rdx 516: 75 0c jne 524 <xyzzy(refptr<object>, refptr<object>)+0x14> 518: 48 8b 07 mov (%rdi),%rax 51b: 48 85 c0 test %rax,%rax 51e: 75 09 jne 529 <xyzzy(refptr<object>, refptr<object>)+0x19> 520: 48 89 17 mov %rdx,(%rdi) 523: c3 retq 524: ff 42 08 incl 0x8(%rdx) 527: eb ef jmp 518 <xyzzy(refptr<object>, refptr<object>)+0x8> 529: ff 48 08 decl 0x8(%rax) 52c: 0f 1f 40 00 nopl 0x0(%rax) 530: eb ee jmp 520 <xyzzy(refptr<object>, refptr<object>)+0x10> a = b after: 141: 4c 8b 0f mov (%rdi),%r9 144: ba 00 00 00 00 mov $0x0,%edx 149: 4d 8d 41 08 lea 0x8(%r9),%r8 14d: 4d 85 c9 test %r9,%r9 150: 4c 0f 44 c2 cmove %rdx,%r8 154: 41 ff 08 decl (%r8) 157: 48 8b 06 mov (%rsi),%rax 15a: 48 8d 48 08 lea 0x8(%rax),%rcx 15e: 48 85 c0 test %rax,%rax 161: 48 89 07 mov %rax,(%rdi) 164: 48 0f 45 d1 cmovne %rcx,%rdx 168: ff 02 incl (%rdx) 16a: c3 retq note no jumps but larger codeside (1.7kb net increase).
return 0 from name_to_material for unknown materials, to avoid unknown material message
- improve dynbuf implementation further - save now saves shstrs longer than HUGE_BUF, lets fix any brokenness remaining in the server... - converted most describe_*-functions to dynbuf_text, making them likely faster (or maybe slower), while removing any hardcoded length limit. - memory allocated for static dynbuf's is not being returned ever (at least not the initial chunk, maybe fix this?) - implement framework for predeclared const shstrs for comparison purposes (shstrinc.h). - enabled and enforced new material code. - implement hack to clean up book titles. - increases HUGE_BUF to 10240, to be similar to mac network packet size.
- upgrade crossfire trt to the GPL version 3 (hopefully correctly). - add a single file covered by the GNU Affero General Public License (which is not yet released, so I used the current draft, which is legally a bit wavy, but its likely better than nothing as it expresses direct intent by the authors, and we can upgrade as soon as it has been released). * this should ensure availability of source code for the server at least and hopefully also archetypes and maps even when modified versions are not being distributed, in accordance of section 13 of the agplv3.
- new map header boolean "no_reset 1" to deny reset. - allow reset of per-player maps, effectviely implementing player-private dungeons. - re-enabled reset-on-load feature again. - remove fail-safe mechanism that prevented per-player maps from being reset. keep your fingers crossed. - fixed two bugs in archetype finding (archname vs. object name). - singularities no longer crash the server but will log a backtrace now as they are really are fatal.
rename arch->name to arch->archname for preparation of subclassing object
update copyrights in common/*.C and util/*.C
- prepare common/ for head_ => head change - add some copyrights for files where they were missing
cleanup
fucking naming conventiosn
instrument random_roll with new logBacktrace and pray that it works
we get ever more nifty
- 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).
- rely on new stability for further cleanups and minor improvements
- fix tausworthe generator initialisation (no big deal) - use numerically more correct multiplication instead of remainder. this has surprisingly good consequences (which I originally didn't expect): - the generated code is smaller and faster - gcc optimises the 64 bit arithmetic extremely well on 32 bit archs. - behaviour for negative and zero arguments (both illegal) is pretty well-behaved.
- the damn rotate shift checksum just failed on me - add crc32 and use it for bmaps_checksum (probably also for images).
rework material code in preparation for nuking object->materials, also add some useful object methods in preparation of the mapspace limiting
fix dead code to confuse me less
- experimentall.y determine minimum random map size (12) - harden random map generator by stresstesting - reduced codesize while increasing readability (RANDOM => rndm) - fixed a likely unimportant bug in random_roll64 - possibly broke lots of code
added checkrusage extension
fix random number generator seeding
- goofing around with my skills (overoptimisation to learn something)
RANDOM was broken due to signedness issues, also rewrote random_roll, no longer uses luck, but should
just experimenting
comments
sigh
- fix crash bug - better fork & abort (untested)
added some copyrights
this is close to working
set original flag so decay object doesn't go wild
- style maps need very special treatment - cf has a nonzero chance of crashing in a random map
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
the big rename
interim.checkin
- 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.
- made refcounted use a virtual destructor (codesize enlargement ~5k), in preparation for correctly refcounted objects with definite lifetime on both perl and c sides.
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
ooification
another bug, do some adjustments to coredumping 'algorithm'
- 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
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
- simplify headerfiles (this is the 21st century) - remove long long hacks for printf etc.
lld -> I64_PFd
removed #ifn?def WIN32 from all files
* remove arch.h * use refcounting for archetypes * cleanup * strat of generic garbage collector
mapstruct => maptile removed many ytypedefs in favor of structure tags
indent
*** empty log message ***
tuning
make use of slice_allocator and inline zero_initialised
- improve assign to prepend "..." - make more use of assign - implement op->debug_desc() and make some more use of it
fix perl class for archetype, never free once-allocated objects, or destruct them, there are too many long-lived references (and refcount doesn't help, likely because it isn't correctly being incremented/decremented).
indent
fix a few ugly pod-constructs on non-pod objects, and a few newly introduced bugs
genaccess, take three
generic accessors, take one
Cleaned up code a little.
Changes... - alternative shstr representation, saves code - use glibs splice memory allocator (seems slower) - use simpler memory/lifetime management for objects, no recycling
THIS CODE WILL NOT COMPILE use the STABLE tag instead. - major changes in object lifetime and memory management - replaced manual refcounting by shstr class - removed quest system - many optimisations - major changes
expand initial tabs to spaces
Made server compile with C++. Removed cfanim plugin and crossedit. C++ here we come.
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.