Tags: andrewprock/ustl
Tags
2013-02-14 Release 2.0 * Some C++11 features implemented. All containers now have move operations, emplace, and initializer lists. noexcept and constexpr added where appropriate. * Conform string API to standard All standard member functions are now present API change: insert(s,c,n) to insert(s,n,c) * Compilation with clang is now supported. clang 3.2 required. * Change margin allocation strategy to pow2 growth from +64 * reserve will now use margin allocation by default, resize is still exact * Detect sys/mman.h and make it optional * Do not close stdin,stdout,stderr on exit * Do not use %m to format errors * Enable copy-on-write in memblock erase * Replace header guards with pragma once * Stop stripping zeroes when assigning specified-length strings
2012-02-18 Release 1.6 * Fixed compilation with c++0x alignof is a keyword in c++0x, so the stream version usually not needed now. On the other hand, alignof can not be overloaded, so stream_align_of is the new name for the old alignof. Most code should not require changes due to this. * Fix iat in string, which did not handle npos argument correctly, sometimes resulting in failures of other functions using it, like substr.
2011-03-16 Release 1.5 * Updated set, map, and multimap with full set of insert, erase, and search overloads * Added public lower_bound, upper_bound, and equal_range to map, as per standard * Added comparator parameter to set, multiset, map, and multimap. * Implemented FirstBit, Rol, Ror, and a generic NextPow2 * Remove memlink copy because it conflicts with string copy * Operators returning a new value should be const * Added char* + string operator, and a noarg erase * Added --force-inline configure option * Removed all references to stdc++ headers when not using libstdc++ * Fixed minor glitches compiling with clang++ * Other small fixes
2009-08-04 Release 1.3 * Some API changes to comply with the current C++ standard binary_search algo returns true, not the found iterator stack and queue are now type templates, not container adaptors. Correctly set eof and fail flags in all stream functions This allows the use of the non-exception path in streams verify_remaining will no longer throw unless exceptions are on in the stream verify_remaining will return false if space is insufficient and set flags exceptions are on by default in istream and ostream and off elsewhere Updated return values of stream functions to match the standard what() on message exceptions returns the text passed to the ctor set insert also returns an iterator/bool pair map insert now returns an iterator,bool pair * streamsize and streamoff types defined * Added string resize with a value arg * Added standalone getline * Added numeric_limits digits and digits10 * Name demangling is now an option, off by default, removing ~20k * A new and improved nonrecursive make system * Numerous small size and speed optimizations * A few minor bugfixes
2008-02-17 Release 1.2 * Fixed ifstream readsome to work correctly on nonblocking fds. * Yet another try at fixing noalias rearrangments. Added a memory clobber and +g to noalias templates. * Added dtors template which will embody range destructors for destroy and vector dtor instead of vector deallocate. It is called by destroy through a selector template, turning it off completely for integral types. This removes empty deallocate instantiations for integral type vectors. * Fixed bitset stream_size (bits-words confusion) * Added workaround for compile error when printing a char array. * Added static_assert from Loki. * Fixed some asm problems on i386
2007-09-02 Release 1.1 * Due to the demise of SourceForge compile farm, this and subsequent releases are not as well tested the previous ones. So please report compilation problems, if any, on non-x86_64 platforms. * Fixed various aliasing problems complained about by gcc 4.2. * Added noalias_cast<type>(v) to aid in working around the above aliasing problem. The aliased variables also must be explicitly touched by an empty asm statement or something. * Reimplemented stream_size_of as a template stack because the old implmentation is invalid in gcc 4.2+ due to a change in overloaded set lookup scope. vector and tuple now have the standard read/write/stream_size members. * Reimplemented flow operators as templates. * STD_STREAMABLE and TEXT_STREAMABLE are no longer necessary. * Merged some template metaprogramming stuff from Alexandrescu's Loki library, including typelists and type traits. * Implemented generic macro list macros. See metamac.h. * Fixed some bsconf warnings. * memblock is_linked now correctly returns true when linked to NULL. * Added back() to string. * Fixed a memory leak in CBacktrace GetSymbols. * Changed written exception data to look like an IFF chunk. * Removed "memory" from some simd spec clobber lists. * Reduced the amount of code generated by vector stream templates. * talign will no longer generate a temp object when called with non-trivial classes. Uses NullValue template to avoid. * Linking with gcc instead of using -nodefaultlibs is simpler. * Removed link number overloads. Sadly, I don't know what this will break, if anything. On my machine the only case is link(p,0), which generates an ambiguity error and is easily fixed by explicitly casting the zero to a size_t. The benefit is cleaner code and fewer problems for the Symbian port, so the change stays until/unless somebody reports it as a problem. * Added long4grain and ptr4grain wrappers to explicitly write long values on 4-grain, even on 64bit platforms.
2006-10-27 Release 1.0 SVN 428 * API CHANGE: ostringstream now works like std::ostringstream, with an internal buffer instead of writing to an external one through a link. Instead of passing the buffer to the ctor, write directly to a default-constructed stream object and assign buf = os.str() when finished. * Format change: containers will now write their size as a uint32_t instead of size_t to allow binary compatibility with 64 bit architectures. On 32 bit machines this makes no difference. * Renamed fdostringstream to ofstream. * Renamed fdistringstream to ifstream. * Renamed iterator_swap to iter_swap, as in the standard. * file.h/cc was removed; fstream replaces its functionality. * Added most remaining i/ostringstream functions that make sense in this implementation: str, put, get, getline, ignore, peek, readsome, putback, unget, tellg, seekg, sync, flush, seekp, tellp, good. The rest will probably not be implemented at all, since they reference streambufs which don't exist in uSTL. * Implemented fstream and used it in ifstream/ofstream. * Added remaining algorithms: find_end, find_first_of, includes, is_sorted, lexicographical_compare, max_element, min_element, partial_sort, partial_sort_copy, partition, next_permutation, prev_permutation, reverse_copy, rotate_copy, search, search_n, set_difference, set_intersection, set_symmetric_difference, set_union, and stable_partition. All the algorithms defined by the C++ standard are now implemented. * Made ios_base and ios classes instead of namespaces and derived all stream objects from ios_base. Pulled up state and all related functions into it. The only problem with this is that end() conflicts with seekdir end, so you'll need to use ios scope when you want the latter. * Align container ends on 4 grain. While this is not very friendly to 64bit architectures, it is the only way to allow writing containers portably. It is better to always align to an arbitrary value than to align to a platform-dependent one. * Removed non-const data pointer from memlink. While enforcing const-correctness is a good thing, the errors this catches are relatively rare and are all programmer errors. I must concede that the benefits of having memblocks, strings, and containers be 16 bytes in size is a great advantage in both speed and codesize. As a result, one needs to be more mindful to not modify memlink-derived objects that are linked to const data; before this change it would have caused a crash, now it might or might not do that, as with regular pointers. * Added CBacktrace class for printing backtrace information. * x86_64 cleanup and improvements, including MMX support. * Micro-optimization pass for size. Saved 24% (32k)! * exception now creates a backtrace when thrown. * Do cout.flush() before read in cin, like std does. * max_size() on linked objects should return size(), because it is. * >=, <=, and compare templates no longer require == (>= is !<) * Pulled rotate code into rotate_fast for memory blocks. * stream_bounds_exception demangles type names. * set,map,multiset,multimap now instantiate less crud. * Abandoned any attempt to use the goddamned byteswap.h. * Implemented bitset any, none, and count. * New popcount algorithms. * Implemented compose1 and compose2 extensions. * Support building as a .dylib on MacOS. * Removed --without-cout configure option.
PreviousNext