1 |
786 |
skrzyp |
2010-03-21 Release 1.4
|
2 |
|
|
* Fixed crash in destructor of empty vector, introduced by 1.3
|
3 |
|
|
* Fixed list merge, which previously did not compile
|
4 |
|
|
* Some portability changes to configure so it will work with dash
|
5 |
|
|
when escape char processing bug is fixed (Ubuntu bug #268929)
|
6 |
|
|
|
7 |
|
|
2009-08-04 Release 1.3
|
8 |
|
|
* Some API changes to comply with the current C++ standard
|
9 |
|
|
binary_search algo returns true, not the found iterator
|
10 |
|
|
stack and queue are now type templates, not container adaptors.
|
11 |
|
|
Correctly set eof and fail flags in all stream functions
|
12 |
|
|
This allows the use of the non-exception path in streams
|
13 |
|
|
verify_remaining will no longer throw unless exceptions are on in the stream
|
14 |
|
|
verify_remaining will return false if space is insufficient and set flags
|
15 |
|
|
exceptions are on by default in istream and ostream and off elsewhere
|
16 |
|
|
Updated return values of stream functions to match the standard
|
17 |
|
|
what() on message exceptions returns the text passed to the ctor
|
18 |
|
|
set insert also returns an iterator/bool pair
|
19 |
|
|
map insert now returns an iterator,bool pair
|
20 |
|
|
* streamsize and streamoff types defined
|
21 |
|
|
* Added string resize with a value arg
|
22 |
|
|
* Added standalone getline
|
23 |
|
|
* Added numeric_limits digits and digits10
|
24 |
|
|
* Name demangling is now an option, off by default, removing ~20k
|
25 |
|
|
* A new and improved nonrecursive make system
|
26 |
|
|
* Numerous small size and speed optimizations
|
27 |
|
|
* A few minor bugfixes
|
28 |
|
|
|
29 |
|
|
2008-02-17 Release 1.2
|
30 |
|
|
* Fixed ifstream readsome to work correctly on nonblocking fds.
|
31 |
|
|
* Yet another try at fixing noalias rearrangments.
|
32 |
|
|
Added a memory clobber and +g to noalias templates.
|
33 |
|
|
* Added dtors template which will embody range destructors for
|
34 |
|
|
destroy and vector dtor instead of vector deallocate. It is
|
35 |
|
|
called by destroy through a selector template, turning it off
|
36 |
|
|
completely for integral types. This removes empty deallocate
|
37 |
|
|
instantiations for integral type vectors.
|
38 |
|
|
* Fixed bitset stream_size (bits-words confusion)
|
39 |
|
|
* Added workaround for compile error when printing a char array.
|
40 |
|
|
* Added static_assert from Loki.
|
41 |
|
|
|
42 |
|
|
2007-09-02 Release 1.1
|
43 |
|
|
* Due to the demise of SourceForge compile farm, this and subsequent
|
44 |
|
|
releases are not as well tested the previous ones. So please
|
45 |
|
|
report compilation problems, if any, on non-x86_64 platforms.
|
46 |
|
|
* Fixed various aliasing problems complained about by gcc 4.2.
|
47 |
|
|
* Added noalias_cast(v) to aid in working around the above
|
48 |
|
|
aliasing problem. The aliased variables also must be
|
49 |
|
|
explicitly touched by an empty asm statement or something.
|
50 |
|
|
* Reimplemented stream_size_of as a template stack because the old
|
51 |
|
|
implmentation is invalid in gcc 4.2+ due to a change in
|
52 |
|
|
overloaded set lookup scope. vector and tuple now have the
|
53 |
|
|
standard read/write/stream_size members.
|
54 |
|
|
* Reimplemented flow operators as templates.
|
55 |
|
|
* STD_STREAMABLE and TEXT_STREAMABLE are no longer necessary.
|
56 |
|
|
* Merged some template metaprogramming stuff from Alexandrescu's Loki
|
57 |
|
|
library, including typelists and type traits.
|
58 |
|
|
* Implemented generic macro list macros. See metamac.h.
|
59 |
|
|
* Fixed some bsconf warnings.
|
60 |
|
|
* memblock is_linked now correctly returns true when linked to NULL.
|
61 |
|
|
* Added back() to string.
|
62 |
|
|
* Fixed a memory leak in CBacktrace GetSymbols.
|
63 |
|
|
* Changed written exception data to look like an IFF chunk.
|
64 |
|
|
* Removed "memory" from some simd spec clobber lists.
|
65 |
|
|
* Reduced the amount of code generated by vector stream templates.
|
66 |
|
|
* talign will no longer generate a temp object when called with
|
67 |
|
|
non-trivial classes. Uses NullValue template to avoid.
|
68 |
|
|
* Linking with gcc instead of using -nodefaultlibs is simpler.
|
69 |
|
|
* Removed link number overloads. Sadly, I don't know what this will
|
70 |
|
|
break, if anything. On my machine the only case is link(p,0),
|
71 |
|
|
which generates an ambiguity error and is easily fixed by
|
72 |
|
|
explicitly casting the zero to a size_t. The benefit is
|
73 |
|
|
cleaner code and fewer problems for the Symbian port, so the
|
74 |
|
|
change stays until/unless somebody reports it as a problem.
|
75 |
|
|
* Added long4grain and ptr4grain wrappers to explicitly write long
|
76 |
|
|
values on 4-grain, even on 64bit platforms.
|
77 |
|
|
|
78 |
|
|
2006-10-27 Release 1.0 SVN 428
|
79 |
|
|
* API CHANGE: ostringstream now works like std::ostringstream, with
|
80 |
|
|
an internal buffer instead of writing to an external one
|
81 |
|
|
through a link. Instead of passing the buffer to the ctor,
|
82 |
|
|
write directly to a default-constructed stream object and
|
83 |
|
|
assign buf = os.str() when finished.
|
84 |
|
|
* Format change: containers will now write their size as a uint32_t
|
85 |
|
|
instead of size_t to allow binary compatibility with 64 bit
|
86 |
|
|
architectures. On 32 bit machines this makes no difference.
|
87 |
|
|
* Renamed fdostringstream to ofstream.
|
88 |
|
|
* Renamed fdistringstream to ifstream.
|
89 |
|
|
* Renamed iterator_swap to iter_swap, as in the standard.
|
90 |
|
|
* file.h/cc was removed; fstream replaces its functionality.
|
91 |
|
|
* Added most remaining i/ostringstream functions that make sense in
|
92 |
|
|
this implementation: str, put, get, getline, ignore, peek,
|
93 |
|
|
readsome, putback, unget, tellg, seekg, sync, flush, seekp,
|
94 |
|
|
tellp, good. The rest will probably not be implemented at
|
95 |
|
|
all, since they reference streambufs which don't exist in uSTL.
|
96 |
|
|
* Implemented fstream and used it in ifstream/ofstream.
|
97 |
|
|
* Added remaining algorithms: find_end, find_first_of, includes,
|
98 |
|
|
is_sorted, lexicographical_compare, max_element, min_element,
|
99 |
|
|
partial_sort, partial_sort_copy, partition, next_permutation,
|
100 |
|
|
prev_permutation, reverse_copy, rotate_copy, search, search_n,
|
101 |
|
|
set_difference, set_intersection, set_symmetric_difference,
|
102 |
|
|
set_union, and stable_partition. All the algorithms defined by
|
103 |
|
|
the C++ standard are now implemented.
|
104 |
|
|
* Made ios_base and ios classes instead of namespaces and derived
|
105 |
|
|
all stream objects from ios_base. Pulled up state and all
|
106 |
|
|
related functions into it. The only problem with this is that
|
107 |
|
|
end() conflicts with seekdir end, so you'll need to use
|
108 |
|
|
ios scope when you want the latter.
|
109 |
|
|
* Align container ends on 4 grain.
|
110 |
|
|
While this is not very friendly to 64bit architectures, it is
|
111 |
|
|
the only way to allow writing containers portably. It is
|
112 |
|
|
better to always align to an arbitrary value than to align to
|
113 |
|
|
a platform-dependent one.
|
114 |
|
|
* Removed non-const data pointer from memlink.
|
115 |
|
|
While enforcing const-correctness is a good thing, the errors
|
116 |
|
|
this catches are relatively rare and are all programmer errors.
|
117 |
|
|
I must concede that the benefits of having memblocks, strings,
|
118 |
|
|
and containers be 16 bytes in size is a great advantage in both
|
119 |
|
|
speed and codesize. As a result, one needs to be more mindful
|
120 |
|
|
to not modify memlink-derived objects that are linked to const
|
121 |
|
|
data; before this change it would have caused a crash, now it
|
122 |
|
|
might or might not do that, as with regular pointers.
|
123 |
|
|
* Added CBacktrace class for printing backtrace information.
|
124 |
|
|
* x86_64 cleanup and improvements, including MMX support.
|
125 |
|
|
* Micro-optimization pass for size. Saved 24% (32k)!
|
126 |
|
|
* exception now creates a backtrace when thrown.
|
127 |
|
|
* Do cout.flush() before read in cin, like std does.
|
128 |
|
|
* max_size() on linked objects should return size(), because it is.
|
129 |
|
|
* >=, <=, and compare templates no longer require == (>= is !<)
|
130 |
|
|
* Pulled rotate code into rotate_fast for memory blocks.
|
131 |
|
|
* stream_bounds_exception demangles type names.
|
132 |
|
|
* set,map,multiset,multimap now instantiate less crud.
|
133 |
|
|
* Abandoned any attempt to use the goddamned byteswap.h.
|
134 |
|
|
* Implemented bitset any, none, and count.
|
135 |
|
|
* New popcount algorithms.
|
136 |
|
|
* Implemented compose1 and compose2 extensions.
|
137 |
|
|
* Support building as a .dylib on MacOS.
|
138 |
|
|
* Removed --without-cout configure option.
|
139 |
|
|
|
140 |
|
|
2005-11-10 Release 0.8
|
141 |
|
|
* API CHANGE: changed all string's find members to return offsets
|
142 |
|
|
instead of iterators. That's what the STL standard requires.
|
143 |
|
|
Also added standard-required replace/inserts with offset
|
144 |
|
|
arguments. Yes, this is a bit painful. I was using it a lot...
|
145 |
|
|
But it's all for the better. I promise!
|
146 |
|
|
* Removed char_at and ichar from string; use utf8_begin/end instead.
|
147 |
|
|
* Iterator-based string insert now return an iterator, like vector.
|
148 |
|
|
* Added more wchar_t overloads to string, include append and assign.
|
149 |
|
|
* Updated bsconf to use malloc instead of static buffers.
|
150 |
|
|
* construct/destruct will now disappear for integral types.
|
151 |
|
|
Integral types have no destructors/constructors.
|
152 |
|
|
* Fixed istream_iterator to read on construction and in operator++
|
153 |
|
|
as the standard says. Unfortunately, this makes it almost
|
154 |
|
|
totally useless, since using it as a source for copy will
|
155 |
|
|
always overread by one because copy will call ++ past the
|
156 |
|
|
end, which will read one element past the end. This behaviour
|
157 |
|
|
is understandable when reading to EOF (which is the only
|
158 |
|
|
example ever shown for using it), but worthless when you
|
159 |
|
|
have a fixed number of elements you want to read. I'm only
|
160 |
|
|
using it to implement utf8 from streams, so, having fixed
|
161 |
|
|
that to not overread, I'll chalk it up to standard
|
162 |
|
|
compliance.
|
163 |
|
|
* Made istream_iterator default constructible and implemented the
|
164 |
|
|
EOF check during reading. This should make read-to-EOF
|
165 |
|
|
scenario possible.
|
166 |
|
|
* Made streams runtime bounds checking on by default.
|
167 |
|
|
* Added operator-- to istream_iterator to do unputs.
|
168 |
|
|
This works only once for variable-length types because there
|
169 |
|
|
is no way to know the length to back up to get the element
|
170 |
|
|
before the currently cached one. Constant-length types can
|
171 |
|
|
be unput multiple times, and can use -= and - operators.
|
172 |
|
|
* fdistringstream underflow will no longer erase the entire buffer.
|
173 |
|
|
This helps to keep ungetc working most of the time.
|
174 |
|
|
* Similarly fixed utf8in_iterator to read on construction.
|
175 |
|
|
This fixed the double-advance bug in utf8in_iterator.
|
176 |
|
|
* Fixed utf8in_iterator to not read ahead (except in constructor)
|
177 |
|
|
before operator++ is called. This ensures that it does not
|
178 |
|
|
read past the end of the string if it isn't 0-terminated.
|
179 |
|
|
(Although it will still do so if you call ++)
|
180 |
|
|
* Field width should be padded with spaces, not zeroes.
|
181 |
|
|
* Implemented some heap algorithms.
|
182 |
|
|
* Added VectorRange macro.
|
183 |
|
|
* Added relink() call to memlinks for faster resizing.
|
184 |
|
|
relink does the work of link, but without calling unlink.
|
185 |
|
|
* Added to string substr and like functions.
|
186 |
|
|
* Moved simd fill into ualgobase.cc
|
187 |
|
|
* configure now recompiles bsconf if its sources change.
|
188 |
|
|
* Fixed a rare off-by-one error in ostringstream vprintf.
|
189 |
|
|
* Removed fdostringstream printf, since ostringstream has it already.
|
190 |
|
|
* Fixed bsconf crash when all inline options are enabled.
|
191 |
|
|
* Fixed crash when NULL filename given to file_exception.
|
192 |
|
|
* Corrected potential buffer overflow in file_exception and sistream.
|
193 |
|
|
* Fixed string rfind for strings; was returning a wrong value sometimes.
|
194 |
|
|
* Added copy_link call to memblock to make a copy of linked data.
|
195 |
|
|
* Added assert to memlink begin() to warn when writing to a const block.
|
196 |
|
|
* Makefile now correctly uses ${MAKE} to recurse.
|
197 |
|
|
* Removed all usage of "y" in SIMD asm blocks; gcc<4-> movd, not movq.
|
198 |
|
|
This fixes problems with MMX fround on some platforms.
|
199 |
|
|
* Removed SSE3 detection from bsconf; it just doesn't work!
|
200 |
|
|
* Added BYTE_ORDER detection in bsconf.
|
201 |
|
|
* Made BYTE_ORDER and bswap always defined.
|
202 |
|
|
|
203 |
|
|
2005-06-28 Release 0.7-1
|
204 |
|
|
* Now compiles with gcc 4.0.0
|
205 |
|
|
* Standard exception constructors now take const char* instead
|
206 |
|
|
of string&; this generates much less code.
|
207 |
|
|
* Fixed reversed conditional ostringstream.format
|
208 |
|
|
This was causing a seek exception sometimes.
|
209 |
|
|
* Added ostringstream.vformat
|
210 |
|
|
* Added FPU registers to reset_mmx modlist; apparently gcc doesn't
|
211 |
|
|
know that they are shared with MMX registers.
|
212 |
|
|
* Moved simd copy into ualgobase.cc; they are not inlined anyway.
|
213 |
|
|
* Added workaround for BSD which has no __va_copy.
|
214 |
|
|
I wonder why nobody reported this as a bug. Is anyone running
|
215 |
|
|
BSD out there? Anyone? Anyone at all? Is the damn thing dead?
|
216 |
|
|
* So it now compiles on BSD again... Whoohoo...
|
217 |
|
|
|
218 |
|
|
2005-04-16 Release 0.7
|
219 |
|
|
* Removed vector inheritance from memblock.
|
220 |
|
|
There are just too many problems with treating a vector
|
221 |
|
|
this way. You can still do it explicitly by linking a
|
222 |
|
|
memblock to the vector. Removing the inheritance causes
|
223 |
|
|
vector to be non-virtual, which drastically reduces
|
224 |
|
|
instantiation cost.
|
225 |
|
|
* Removed elementSize, elementBytes member functions from cmemlink.
|
226 |
|
|
Only vector inheritance needed elementSize.
|
227 |
|
|
* Restricted vector link calls to T* instead of void*.
|
228 |
|
|
This way there would be explicit casts to warn of weirdness.
|
229 |
|
|
* Optimized vector push_back
|
230 |
|
|
* ostream will now zero bytes skipped by align.
|
231 |
|
|
* memblock will no longer zero newly allocated storage.
|
232 |
|
|
* Inlined empty constructors on map,multimap,set,multiset.
|
233 |
|
|
* NUMERIC_LIMITS macros to facilitate specialization.
|
234 |
|
|
* Fixed string vformat problem crashing on x86_64
|
235 |
|
|
Because vsnprintf is called twice, need to copy arglist.
|
236 |
|
|
* Added an rm before ln in install to avoid "already exists" errors.
|
237 |
|
|
SunOS still doesn't know about the -f flag...
|
238 |
|
|
* Split the distribution into ustl and ustl-docs
|
239 |
|
|
* New SIZE_OF_BOOL system substitution in bsconf
|
240 |
|
|
Only Alpha and Mac have bool as a long, so a define is better.
|
241 |
|
|
* Fixed configure being confused with multiple gcc versions.
|
242 |
|
|
* Reduced Align code for nonstandard values.
|
243 |
|
|
* Pulled up vector/tuple stream operators into generic container
|
244 |
|
|
templates in uctrstm.h and made use of resulting macros.
|
245 |
|
|
* New TEMPLATE_TYPE macros to allow template building with macros.
|
246 |
|
|
* Fixed SSE3 detection in bsconf; thanks to Aloysius Indrayanto.
|
247 |
|
|
* Fixed get_temporary_buffer to return size in elements, not in bytes.
|
248 |
|
|
This is the proper behaviour as specified in the C++ standard.
|
249 |
|
|
* Now using libc qsort in the sort algorithm.
|
250 |
|
|
This may give you trouble if you are using a custom comparator
|
251 |
|
|
that requires initialization outside the constructor. You can
|
252 |
|
|
write a wrapper class that does the initialization in the
|
253 |
|
|
constructor. Or, you can use stable_sort.
|
254 |
|
|
I'm doing this to both speed up the common case and to reuse
|
255 |
|
|
the functionality already linked to in libc. If you really
|
256 |
|
|
need to have a sort with a parametrized comparator and don't
|
257 |
|
|
want to change your code, file a bug report and I'll change
|
258 |
|
|
it back. I just don't think anyone is using this type of
|
259 |
|
|
construction.
|
260 |
|
|
* Finished heap algorithms.
|
261 |
|
|
* Added priority_queue.
|
262 |
|
|
* Added deque as a define to list.
|
263 |
|
|
* Added noalias template to circumvent the type-punned pointer
|
264 |
|
|
dereference warning given by gcc 4.1.0+
|
265 |
|
|
|
266 |
|
|
2005-01-17 Release 0.6
|
267 |
|
|
* The library is relicensed under the MIT License (was LGPL)
|
268 |
|
|
* Dropped support for locale due to its great complexity and ugliness.
|
269 |
|
|
You can include from libstdc++ if you still want it.
|
270 |
|
|
* ostringstream now uses snprintf for all integer types, so the output
|
271 |
|
|
will be localized according to libc locale settings. As a side
|
272 |
|
|
effect of this, you will not be able to print negative hex
|
273 |
|
|
numbers any more (as in -6AD4), not that it was a good idea...
|
274 |
|
|
* tuple will no longer align at the end:
|
275 |
|
|
This affects you if you write tuples with small elements
|
276 |
|
|
off default grain. For example, writing tuple<2,int16>
|
277 |
|
|
on grain 2 would have aligned prior to this change, causing
|
278 |
|
|
sub-optimal packing if you wrote an array of such tuples,
|
279 |
|
|
since each one only needs grain 2 alignment.
|
280 |
|
|
* Fixed incorrect use of __alignof__ in pair stream operators.
|
281 |
|
|
* Added size_t ul-or-ui detection code to bsconf and fixed the
|
282 |
|
|
size_t/pointer overload in uutility to use it.
|
283 |
|
|
* Added erase(iterator,const_iterator) overload for string
|
284 |
|
|
* Added alloca_link macro.
|
285 |
|
|
* cmemlink will now throw bad_alloc if linking to !p && n.
|
286 |
|
|
* multiset and multimap will insert equal elements in order.
|
287 |
|
|
I wasn't able to find any guidance concerning the order of
|
288 |
|
|
equal elements; it appears to be unspecified. Prior to this
|
289 |
|
|
change equal elements were inserted in reverse order, which
|
290 |
|
|
is bad idea because it causes a larger copy to make space.
|
291 |
|
|
(Note that multimap only compares the key, since the mapped
|
292 |
|
|
value is not required to have an operator<. If you want them
|
293 |
|
|
sorted, you can use sort() on it.)
|
294 |
|
|
* Fixed remove_copy algorithms to not require value operator !=.
|
295 |
|
|
* bool will now be written as a byte regardless of the type size.
|
296 |
|
|
* sistream now handles 64bit types correctly.
|
297 |
|
|
|
298 |
|
|
2004-11-11 Release 0.5
|
299 |
|
|
* configure will now properly enable mmx compiler flags.
|
300 |
|
|
* configure has a --with-profile option.
|
301 |
|
|
* Fixed a bug in ostringstream format inserting extra '\0'
|
302 |
|
|
* Fixed a bug in string find which sometimes did not match at the
|
303 |
|
|
beginning of the text.
|
304 |
|
|
* ostringstream will now use faster paged allocation.
|
305 |
|
|
* New alignof specializations for cmemlink(size_t) and string(1)
|
306 |
|
|
* Fixed tuple's value constructors to zero unspecified values.
|
307 |
|
|
* Added parentheses around ctr argument in foreach for computed vars.
|
308 |
|
|
* General simd interface for tuple optimization.
|
309 |
|
|
* Proper link interface in vector, that takes element count.
|
310 |
|
|
* set_terminate and set_unxpected prototypes are now available.
|
311 |
|
|
* LOOKUP_TEXT_STREAMABLE macro for printing through name arrays.
|
312 |
|
|
* Fixed iterator_swap to take iterators by value (reference& swap bad)
|
313 |
|
|
* Container random_shuffle.
|
314 |
|
|
* vformat method for string to allow implementation of custom printfs.
|
315 |
|
|
* TestAndSet inline utility function with the cmpxchg instruction.
|
316 |
|
|
* Fixed tuple stream_size_of to add up the elements if nonintegral.
|
317 |
|
|
* Added is_integral member to numeric_limits for specialization aid.
|
318 |
|
|
* Changed limits is_signed from a function to a bool like SGI does it.
|
319 |
|
|
|
320 |
|
|
2004-07-28 Release 0.4-3
|
321 |
|
|
* A ChangeLog! After all these years...
|
322 |
|
|
* SIMD instruction support for fill and copy
|
323 |
|
|
* matrix template (on top of tuple)
|
324 |
|
|
3dNow! instructions are supported for vector transforms.
|
325 |
|
|
* New utility templates
|
326 |
|
|
absv - absolute value.
|
327 |
|
|
sign - -1 for negative, 0 for 0, 1 for positive
|
328 |
|
|
abs_distance - returns an absolute value of the difference.
|
329 |
|
|
distance - now returns ptrdiff_t, as in SGI STL.
|
330 |
|
|
size_of_elements - useful for working with static arrays in
|
331 |
|
|
templates; returns sizeof(T) * n.
|
332 |
|
|
pack_type - useful for unrolling loops, packs a small
|
333 |
|
|
type into a big one.
|
334 |
|
|
alignof - recommended alignment for a type (uses GCC
|
335 |
|
|
__alignof__ extension, if available)
|
336 |
|
|
eachfor - same as foreach, but for reverse_iterator
|
337 |
|
|
* get_temporary_buffer implemented using alloca and macros
|
338 |
|
|
* Updated rotate to use alloca for small moves.
|
339 |
|
|
This should speed up vector operations, like insert and erase.
|
340 |
|
|
* Fixed copy_backward to actually copy backward rather than reverse.
|
341 |
|
|
* Made resize virtual in memblock to properly handle strings.
|
342 |
|
|
* sostream/sistream will handle wchar_t properly (as utf8 read/write)
|
343 |
|
|
* ustring.cc: fixed multiple wchar_t insert
|
344 |
|
|
* ustring.cc: changed allocation strategy to simply reserve the space
|
345 |
|
|
for the null terminator instead of tweaking size() all the
|
346 |
|
|
time. It's cleaner and saner this way.
|
347 |
|
|
* benchmarking tool in bvt
|
348 |
|
|
* More functions implemented in bitset.
|
349 |
|
|
* Added --with-static and --without-shared flags to configure.
|
350 |
|
|
|
351 |
|
|
2004-05-22 Release 0.4-2
|
352 |
|
|
* ostringstreams will now correctly resize the buffer as needed.
|
353 |
|
|
* Fixed floating point output
|
354 |
|
|
(well, not really, just switched to using snprintf)
|
355 |
|
|
|