2005-11-10 Release 0.8
	* API CHANGE: changed all string's find members to return offsets
		instead of iterators. That's what the STL standard requires.
		Also added standard-required replace/inserts with offset
		arguments. Yes, this is a bit painful. I was using it a lot...
		But it's all for the better. I promise!
	* Removed char_at and ichar from string; use utf8_begin/end instead.
	* Iterator-based string insert now return an iterator, like vector.
	* Added more wchar_t overloads to string, include append and assign.
	* Updated bsconf to use malloc instead of static buffers.
	* construct/destruct will now disappear for integral types.
		Integral types have no destructors/constructors.
	* Fixed istream_iterator to read on construction and in operator++
		as the standard says. Unfortunately, this makes it almost
		totally useless, since using it as a source for copy will
		always overread by one because copy will call ++ past the
		end, which will read one element past the end. This behaviour
		is understandable when reading to EOF (which is the only
		example ever shown for using it), but worthless when you
		have a fixed number of elements you want to read. I'm only
		using it to implement utf8 from streams, so, having fixed
		that to not overread, I'll chalk it up to standard
		compliance.
	* Made istream_iterator default constructible and implemented the
		EOF check during reading. This should make read-to-EOF
		scenario possible.
	* Made streams runtime bounds checking on by default.
	* Added operator-- to istream_iterator to do unputs.
		This works only once for variable-length types because there
		is no way to know the length to back up to get the element
		before the currently cached one. Constant-length types can
		be unput multiple times, and can use -= and - operators.
	* fdistringstream underflow will no longer erase the entire buffer.
		This helps to keep ungetc working most of the time.
	* Similarly fixed utf8in_iterator to read on construction.
		This fixed the double-advance bug in utf8in_iterator.
	* Fixed utf8in_iterator to not read ahead (except in constructor)
		before operator++ is called. This ensures that it does not
		read past the end of the string if it isn't 0-terminated.
		(Although it will still do so if you call ++)
	* Field width should be padded with spaces, not zeroes.
	* Implemented some heap algorithms.
	* Added VectorRange macro.
	* Added relink() call to memlinks for faster resizing.
		relink does the work of link, but without calling unlink.
	* Added to string substr and like functions.
	* Moved simd fill into ualgobase.cc
	* configure now recompiles bsconf if its sources change.
	* Fixed a rare off-by-one error in ostringstream vprintf.
	* Removed fdostringstream printf, since ostringstream has it already.
	* Fixed bsconf crash when all inline options are enabled.
	* Fixed crash when NULL filename given to file_exception.
	* Corrected potential buffer overflow in file_exception and sistream.
	* Fixed string rfind for strings; was returning a wrong value sometimes.
	* Added copy_link call to memblock to make a copy of linked data.
	* Added assert to memlink begin() to warn when writing to a const block.
	* Makefile now correctly uses ${MAKE} to recurse.
	* Removed all usage of "y" in SIMD asm blocks; gcc<4-> movd, not movq.
		This fixes problems with MMX fround on some platforms.
	* Removed SSE3 detection from bsconf; it just doesn't work!
	* Added BYTE_ORDER detection in bsconf.
	* Made BYTE_ORDER and bswap always defined.

2005-06-28 Release 0.7-1
	* Now compiles with gcc 4.0.0
	* Standard exception constructors now take const char* instead
		of string&; this generates much less code.
	* Fixed reversed conditional ostringstream.format
		This was causing a seek exception sometimes.
	* Added ostringstream.vformat
	* Added FPU registers to reset_mmx modlist; apparently gcc doesn't
		know that they are shared with MMX registers.
	* Moved simd copy into ualgobase.cc; they are not inlined anyway.
	* Added workaround for BSD which has no __va_copy.
		I wonder why nobody reported this as a bug. Is anyone running
		BSD out there? Anyone? Anyone at all? Is the damn thing dead?
	* So it now compiles on BSD again... Whoohoo...

2005-04-16 Release 0.7
	* Removed vector inheritance from memblock.
		There are just too many problems with treating a vector
		this way. You can still do it explicitly by linking a
		memblock to the vector. Removing the inheritance causes
		vector to be non-virtual, which drastically reduces
		instantiation cost.
	* Removed elementSize, elementBytes member functions from cmemlink.
		Only vector inheritance needed elementSize.
	* Restricted vector link calls to T* instead of void*.
		This way there would be explicit casts to warn of weirdness.
	* Optimized vector push_back
	* ostream will now zero bytes skipped by align.
	* memblock will no longer zero newly allocated storage.
	* Inlined empty constructors on map,multimap,set,multiset.
	* NUMERIC_LIMITS macros to facilitate specialization.
	* Fixed string vformat problem crashing on x86_64
		Because vsnprintf is called twice, need to copy arglist.
	* Added an rm before ln in install to avoid "already exists" errors.
		SunOS still doesn't know about the -f flag...
	* Split the distribution into ustl and ustl-docs
	* New SIZE_OF_BOOL system substitution in bsconf
		Only Alpha and Mac have bool as a long, so a define is better.
	* Fixed configure being confused with multiple gcc versions.
	* Reduced Align code for nonstandard values.
	* Pulled up vector/tuple stream operators into generic container
		templates in uctrstm.h and made use of resulting macros.
	* New TEMPLATE_TYPE macros to allow template building with macros.
	* Fixed SSE3 detection in bsconf; thanks to Aloysius Indrayanto.
	* Fixed get_temporary_buffer to return size in elements, not in bytes.
		This is the proper behaviour as specified in the C++ standard.
	* Now using libc qsort in the sort algorithm.
		This may give you trouble if you are using a custom comparator
		that requires initialization outside the constructor. You can
		write a wrapper class that does the initialization in the
		constructor. Or, you can use stable_sort.
		I'm doing this to both speed up the common case and to reuse
		the functionality already linked to in libc. If you really
		need to have a sort with a parametrized comparator and don't
		want to change your code, file a bug report and I'll change
		it back. I just don't think anyone is using this type of
		construction.

2005-01-17 Release 0.6
	* The library is relicensed under the MIT License (was LGPL)
	* Dropped support for locale due to its great complexity and ugliness.
		You can include <locale> from libstdc++ if you still want it.
	* ostringstream now uses snprintf for all integer types, so the output
		will be localized according to libc locale settings. As a side
		effect of this, you will not be able to print negative hex
		numbers any more (as in -6AD4), not that it was a good idea...
	* tuple will no longer align at the end:
		This affects you if you write tuples with small elements
		off default grain. For example, writing tuple<2,int16>
		on grain 2 would have aligned prior to this change, causing
		sub-optimal packing if you wrote an array of such tuples,
		since each one only needs grain 2 alignment.
	* Fixed incorrect use of __alignof__ in pair stream operators.
	* Added size_t ul-or-ui detection code to bsconf and fixed the
		size_t/pointer overload in uutility to use it.
	* Added erase(iterator,const_iterator) overload for string
	* Added alloca_link macro.
	* cmemlink will now throw bad_alloc if linking to !p && n.
	* multiset and multimap will insert equal elements in order.
		I wasn't able to find any guidance concerning the order of
		equal elements; it appears to be unspecified. Prior to this
		change equal elements were inserted in reverse order, which
		is bad idea because it causes a larger copy to make space.
		(Note that multimap only compares the key, since the mapped
		value is not required to have an operator<. If you want them
		sorted, you can use sort() on it.)
	* Fixed remove_copy algorithms to not require value operator !=.
	* bool will now be written as a byte regardless of the type size.
	* sistream now handles 64bit types correctly.

2004-11-11 Release 0.5
	* configure will now properly enable mmx compiler flags.
	* configure has a --with-profile option.
	* Fixed a bug in ostringstream format inserting extra '\0'
	* Fixed a bug in string find which sometimes did not match at the
		beginning of the text.
	* ostringstream will now use faster paged allocation.
	* New alignof specializations for cmemlink(size_t) and string(1)
	* Fixed tuple's value constructors to zero unspecified values.
	* Added parentheses around ctr argument in foreach for computed vars.
	* General simd interface for tuple optimization.
	* Proper link interface in vector, that takes element count.
	* set_terminate and set_unxpected prototypes are now available.
	* LOOKUP_TEXT_STREAMABLE macro for printing through name arrays.
	* Fixed iterator_swap to take iterators by value (reference& swap bad)
	* Container random_shuffle.
	* vformat method for string to allow implementation of custom printfs.
	* TestAndSet inline utility function with the cmpxchg instruction.
	* Fixed tuple stream_size_of to add up the elements if nonintegral.
	* Added is_integral member to numeric_limits for specialization aid.
	* Changed limits is_signed from a function to a bool like SGI does it.

2004-07-28 Release 0.4-3
	* A ChangeLog! After all these years...
	* SIMD instruction support for fill and copy
	* matrix template (on top of tuple)
		3dNow! instructions are supported for vector transforms.
	* New utility templates
	    absv		- absolute value.
	    sign		- -1 for negative, 0 for 0, 1 for positive
	    abs_distance	- returns an absolute value of the difference.
	    distance		- now returns ptrdiff_t, as in SGI STL.
	    size_of_elements	- useful for working with static arrays in
				  templates; returns sizeof(T) * n.
	    pack_type		- useful for unrolling loops, packs a small
				  type into a big one.
	    alignof		- recommended alignment for a type (uses GCC
				  __alignof__ extension, if available)
	    eachfor		- same as foreach, but for reverse_iterator
	* get_temporary_buffer implemented using alloca and macros
	* Updated rotate to use alloca for small moves.
		This should speed up vector operations, like insert and erase.
	* Fixed copy_backward to actually copy backward rather than reverse.
	* Made resize virtual in memblock to properly handle strings.
	* sostream/sistream will handle wchar_t properly (as utf8 read/write)
	* ustring.cc: fixed multiple wchar_t insert
	* ustring.cc: changed allocation strategy to simply reserve the space
		for the null terminator instead of tweaking size() all the
		time. It's cleaner and saner this way.
	* benchmarking tool in bvt	
	* More functions implemented in bitset.
	* Added --with-static and --without-shared flags to configure.

2004-05-22 Release 0.4-2
	* ostringstreams will now correctly resize the buffer as needed.
	* Fixed floating point output
		(well, not really, just switched to using snprintf)

