*** empty log message ***
*** empty log message ***
slim down perl interface
refactoring of shstr classe,s new shstr_tmp, lots of minor rewriting
*** empty log message ***
optimise rng for powers of two
*** empty log message ***
rmeove the last remnants of the weather code
new los code
*** empty log message ***
*** empty log message ***
*** empty log message ***
update copyright
lotsa
kv rewrite
goof
*** empty log message ***
- implement archetype gc - implement "proper" refcounting for arches - serialise resource file loads - implement memory poisoning - minor cleanups
*** empty log message ***
better logging, remove cruft
*** empty log message ***
*** empty log message ***
tuning, glibc-bugworkaround
try 5.10.0 and 5.8.8
more const correctness and 5.10 gartituous breakage, sigh
*** empty log message ***
*** empty log message ***
add some primitive memory debugging
*** empty log message ***
update copyrights and other minor stuff to deliantra
add slice and shstr statistics
- nuke objects crossing map borders on save. bad luck.
first, untested, try at spicing up the message system
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).
- make attachable destructors protected (maybe they should be private...) - provide push_back for object vectors. - regions are now attachables, so manage their refcounts properly.
*** empty log message ***
- 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.
- pippijn unknowingly inspired the idea of documenting the type of the objetc_vector_index explicitly. - pippijn spotted a typoe, to, go figure!
- archetype is now a subclass of object. - store archetypes in an object_vector. - use a different startegy for archetype loading (reloading is MOST CERTAINLY broken).
rename arch->name to arch->archname for preparation of subclassing object
g++ finally got decltype
- update copyrights in .h files, where applicable - rename preprocess to genkeywords
- 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.
- introduce a notion of cpu load average within the server - use it to more gracefully increase swap intervals in the map-scheduler - add clip and lerp utility functions.
- 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.
replace AUTODECL by auto. this is the first time in my life, I think, that I redefined a keyword - fortunately only with arguments
nano-cleanups
- the damn rotate shift checksum just failed on me - add crc32 and use it for bmaps_checksum (probably also for images).
- useless ยต-opts - use maximum norm in get_rangevector (a bit, should use more)
added checkrusage extension
*** empty log message ***
- 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
- fix crash bug - better fork & abort (untested)
testing helps
more micro-optimisation, use idistance, min is faster than MIN
- faster implementation for isqrt - add fast idistance approximation now find_dir_2 has moved to the top of the profiling output for mlab/cwdccastleofmarquis3, followed by get_rangevector, hit_map and ok_to_put_more.
- micro-optimised hit_map and ok_to_put_more, this immensely helped reduce load on dense maps. - introduced xy_normalise, which is imho a saner interface and much faster than get_map_flags so should be used in new code (and time-critical code).
""
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.
- made refcounted use a virtual destructor (codesize enlargement ~5k), in preparation for correctly refcounted objects with definite lifetime on both perl and c sides.
- improved login code - removed some cruft code and (finally), the player_pod hack
- made client a first-class crossfire-perl object (its attachable), but perl support is missing. - added some client events - fixed reply not working after logout
another bug, do some adjustments to coredumping 'algorithm'
thats the crash bug
- 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
* remove arch.h * use refcounting for archetypes * cleanup * strat of generic garbage collector
*** empty log message ***
presuppose iso c++0x
reenable shstr gc, fix bug bad bug in allocator
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
- introduce shstr_cmp for mass comparisons to shstr and make use of it - introduce assign utility function to replace strncpy
- temporarily disabled shstr garbage collection - use sint64 instead of uint64 in shop code - implement fully recursive item iterator for object - add some utility functions
implement owner pointer using refcounted refptr templates
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).
Entirely removed cfpython.
*** empty log message ***
Changes... - alternative shstr representation, saves code - use glibs splice memory allocator (seems slower) - use simpler memory/lifetime management for objects, no recycling
use alternative shstr representation, might or might not be faster, but does save code
*** empty log message ***
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.