Releases: ErikMcClure/buntils
bss-util v0.5.2 Binaries
These are precompiled binaries, symbols, and source code for bss-util v0.5.2 for both Windows and POSIX compatible systems. This build requires Visual Studio 2017 (updated to 15.5 or up) and GCC 7.2 for C++17 features.
- Use constexpr ifs to massively simplify
Variant
implementation - Allow Hash to work with
ARRAY_MOVE
properly - Add compile-time FNV hash
- Simplified
Hash
implementation and addedstd::tuple
support - Switched
Map
to usestd::tuple
so it can be iterated over withfor(auto[k,v] : map)
- Added precompiled header to makefile and visual studio projects
- VARARRAY now constructs and destructs nontrivial types
- Unified static/stateful allocators and require reallocations to input the correct old size
- Added CacheAlloc
- Removed
HashBase
and addedHashIns
instead Hash
iterator now returns anstd::tuple
key/value pair.- Renamed
Start()
toFront()
andEnd()
toBack()
inHash
- Added
std::array<T, N>
support to most constructors accepting a native array - Removed embedded engine in
AliasTable
and fixed constructor/assignment - Split off
RandomQueue
intoRandomQueue.h
- Rewrote internal implementation of
Serializer
, which now requires objects implementvoid(Serializer, const char*)
Serializer
includes a check to ensure an object has the appropriate function required- Added iterator to
ArrayCircular
- Added serialization support to
Array
,ArrayCircular
,ArraySort
,CompactArray
,Map
,Queue
,Stack
,BinaryHeap
, andPriorityQueue
- Added
std::tuple
support toSerializer
- Removed deprecated std::iterator
bss-util v0.5.1 Binaries
These are precompiled binaries, symbols, and source code for bss-util v0.5.1 for both Windows and POSIX compatible systems.
- Replace most instances of
uint32_t
withsize_t
- Static build now works with vcpkg
bssVersionInfo
was changed to a 64-bit int with 4 16 bit integers, which makes it easier to serialize/deserialize as an arrayDynArray
streams have been replaced by a generic read-only array stream and a read-writeDynArray
stream- Added a functional buffer stream
- Renamed
ArraySlice
toSlice
and improved support - Added
memsubset()
- Serializer completely rewritten, now natively supports hashes and variants for all implementations
- Added
fsign()
- Added
Collision.h
with 2D collision algorithms between different shapes - Added
Geometry.h
with N-dimensional and 2D shape objects - Added bit groups to BitField
- Remove
bssSeq
and use standardizedstd::index_sequence
instead - Drop all attempts to support VS2010 and remove legacy code
- Simplify template boilerplate with
if constexpr
- Add aligned allocator support
- Add move semantics to TRBTree
- Added constexpr support
- Added XML serializer engine
- Restructure animations
- Rename DYNARRAY to VARARRAY and make it fall back to heap allocation above 65535 bytes.
- Remove extraction operator from SSE and replace with Set()
- Move Xorshift implementation to XorshiftEngine.h, switch to std::generate_canonical
- Rename Reserve() to SetCapacity() and refactor arrays
bss-util v0.5.0 Binaries
These are precompiled binaries, symbols, and source code for bss-util v0.5.0 for both Windows and POSIX compatible systems.
- Added AttemptRLock(), AttemptStrictLock() to RWLock
- Removed thread-specific debug assertions in RWLock to allow complex usage
- Rewrote ring allocator with a per-bucket RWLock
- Added a Semaphore class to Thread and removed Thread Signal()/Wait()
- Rewrote ThreadPool to actually work properly
- Added Future class that utilizes ThreadPool
- Added SafeFormat() function which allows you to format output to an std::ostream via "{0}{1}" notation
- Rewrote Logger class for more customizability, adding source parameter, maximum error level, and formatting.
- Removed fastcall because it doesn't do anything on 64-bit platforms
- Removed BSS_EXPLICITSTATIC by fixing BSS_FORCEINLINE on clang/GCC, and removing spurious static keywords
- Added GetFontPath() for windows
- Updated khash.h and the corresponding cHash templatized version of it.
- Added CompactArray for creating simplistic arrays that avoid heap allocation as much as possible
- Moved FACTION to Traverse() in KDtree
- cTRBTree can now be used statically, and properly calls destructors
- changed include folder structure for vcpkg compatibility
- inverted include order on tests to catch header file mistakes
- Internal function refactored to camelCase
- All public functions that aren't meant to mimic standard library functions are now Capitalized
- Some function names have been expanded to full words for readability
- Singleton behavior has been changed, and now does not provide Instance() or instantiate the static variable for you to prevent DLL boundary accidents.
- bssFill added as typesafe alternative to memset()
- Removed rswap() and bssReverse(), use std::swap and std::reverse instead.
- Moved internal entities into the "internal" namespace
- Moved UTF function declarations to utf_conv.h
- Version info is now an exported symbol, thus accurately reflecting the version of the compiled DLL itself
- Fixed minor bugs in XML and TOML parsers
- Added install/uninstall to makefile
bss-util v0.4.7 Binaries
These are precompiled binaries, symbols, and source code for bss-util v0.4.7 for both Windows and POSIX compatible systems.
- AVL tree Insert now returns a pointer on success or null on failure
- Added Gauss–Legendre quadrature for approximating integrals
- Added C-style object functions to delegate.h
- Added Set() to DynArray and Array
- Fixed up headers and #defines so bss-util builds and runs under Linux Subsystem for Windows
- Fixed GetNear on TRBTree
- Add GetAttribute() helper functions to cXML.h
- Improve FixedPt class to work on 64-bits with minimal precision loss
- Added case-insensitive Trie implementation
- Optimized zero length arrays for UBJSON
- Fixed bug in UTF8 to UTF32 conversion
- Removed outdated leaktest.h
- Added SSE fallback for dealing with compilers or architectures that don't support SSE
- Project now compiles using clang under visual studio
- Added TOML parser/serializer under cTOML.h
- Made a few minor improvements to JSON parsing/serializing
- Added auxiliary binsearch function
- Added Capacity()/Length() to cTrie
- Added helper functions to cHash
- Added RWlock, a readers-writer lock.
- Added defer(), a function that defers another function or delegate until the end of the block
- Moved cAutoRef to cRefCounter.h and renamed to ref_ptr<>
- Made greedy allocator threadsafe
- Replaced Ring Allocator's reader writer lock with RWLock
bss-util v0.4.6 Binaries
These are precompiled binaries, symbols, and source code for bss-util v0.4.6 for both Windows and POSIX compatible systems.
- Added override specifiers whenever possible
- Removed cDef.h
- Added iteration to cArraySlice, added more GetSlice methods
- Removed cSettings.h
- Added a universal serializer as cSerializer.h, and changed JSON and UBJSON to serializer engines
- Made linked list operations move safe
- Fixed CARRAY_CONSTRUCT in cDynArray and cArray and added more vigorous testing to detect similar errors
- Fixed const bug in bss_vector.h
- added bssmalloc function
- Added missing UTF conversion functions and standardized them
- Added STRUPR and fixed cDisjoinSet.h include in bss_Graph
- Refactored tests into individual cpp files
- Added GetRegistryValue for windows platforms only
- Added bssloadfile for quickly loading files into memory
- Rewrote cHash to support ARRAY_TYPE and proper safe types, and added hash support for cStr.
- Fixed parsing bug in cXML and added more tests
bss-util v0.4.5 Binaries
These are precompiled binaries, symbols, and source code for bss-util v0.4.5 for both Windows and POSIX compatible systems.
- Added variant class, an algebriac data type implemented in variant.h
- Added bool array support and tests to UBJSON
- Added support for variants in both UBJSON and JSON parsing and serialization.
- Put bss_graph back in bss_util namespace but removed it from bss_algo.h
- Added base64 encoder and decoder using url-safe convention, but no padding.
- Added stream buffer for cDynArray, renamed StreamSplitter.h to bss_stream.h
- Added option for non-recursive DelDir
- Fixed comparison bug in bss_vector.h
- Added AddConstruct function to cDynArray
- Added FromC for stateless functions to delegate.h
- Added a Newton-Raphson root finder method, and a Newton-Raphson Bisection hybrid algorithm that should converge for all well behaved functions.
- Added cubic function solver
- Added cubic curve and quadratic curve splitter
- Removed VC++ __int32 style types
- Removed custom uint16, uint32, etc. types from bss_util namespace
- Standardized all types to C++11 uint32_t format
- Added ARRAY_MOVE so std::unique_ptr can be safely put into an array object so long as it isn't copied.
- Fixed AddConstruct so it uses perfect forwarding
- Changed uses of NULL to nullptr
- Used reinterpret_cast to avoid violating strict aliasing rules
- Add noexcept for some simpler functions
- Added a hash generation function for std::pair in cHash
bss-util-posix-0.4.5.tar.gz is intended for POSIX compatible systems.
bss-util-windows-0.4.5.zip is intended for Windows.
bss-util v0.4.4 Binaries
These are precompiled binaries, symbols, and source code for bss-util v0.4.4 for both Windows and POSIX compatible systems.
- Fixed static keywords on explicit template specializations.
- Fixed divide by zero error in bss_profiler.
- Created a #define version of fbnext that can be used instead of the template version, then removed bss_util references from several files.
- Added operator[] to cStack
- Added * operator to sseVeci
- Added bss_vector.h and moved n-dimensional vector algorithms from bss_algo.h to there.
- Changed cArraySimple/cArrayConstruct/cArraySafe into just cArrayBase<> that takes a template parameter and changed all the template signatures of dependent types. Removed WArray since you can use cArray now instead.
- Made ToArgV an inline template function
- cHash now directly implements kh_template_t, which was promoted to a real class
- cStr can now construct a substring from a larger string
- Added xorshift random number generator
- Fixed error in cHash Set() function definition
- Added multithreaded ring allocator, renamed Fixed to Block and Additive to Greedy
- Fixed issue with integer constants that were assumed to be 32-bits long when they should have been 64-bits long.
- Added AA tree
- Fixed errant precision issues in some unit tests
- Fixed some previously unused move constructors
- cThreadPool was completely rewritten to be entirely threadsafe and more extensible, while also eliminating race conditions
- All random number functions were completely overhauled to use C++ random number engines. bssrand() uses a default xorshift_engine to generate high quality random numbers.
- Fixed regression in TRB_Tree that did not handle duplicate values properly (then adjusted the unit tests to catch it)
- Removed bss_literals
- Fixed Shuffle() in sseVec and added Sum()
- Added std::initializer_list to cArray and cDynArray
- Removed const modifier from operators to prevent breaking move semantics
- Added cXML
- cHash was simplified so that the value is now set to void by default, which implies a set, so you no longer have to explicitly state that it is or isn't a map. Insert() was specialized so that Sets can only insert keys, not values.
- Added cJSON, a simple JSON parser
- Added cUBJSON, a simple UBJSON parser
- Animations were completely refactored and AniAttribute has been removed. Animation data is now separate from animation state, which is managed on a higher level.
- cRefCounter Grab() and Drop() now both return signed ints
- Removed strhex(x) because it was just strtoul(x,0,16)
- delegate can now accept a const T* pointer when referring to a constant member function.
- Added missing operations to cRational
- Added cPriorityHeap, a variation of cPriorityQueue that uses the key to keep track of each item's place in the heap, allowing item values to be adjusted.
- cArray now uses Capacity() instead of Size()
- cDynArray no longer initializes all potential members. Instead, it only constructs objects that were actually added, and immediately destructs removed objects. cArraySort, cArrayCircular and cBinaryHeap have all adopted this convention.
- the PROF_HEATNODE allocator now correctly performs a reallocation.
- Moved Graph into a ::graph namespace to reduce name collision problems.
- cBitArray has been supplanted by cDynArray, which now specializes to an efficient bit array representation.
bss-util-posix-0.4.4.tar.gz is intended for POSIX compatible systems.
bss-util-windows-0.4.4.zip is intended for Windows.
bss-util v0.4.3 Binaries
These are precompiled binaries, symbols, and source code for bss-util v0.4.3.
- Added version of Get() to cTrie that takes a string length parameter for non-null terminated strings.
- Fixed header includes
- Removed cCmdLineArgs and replaced it with a simple GetWindowsArgV() function and ProcessCmdArgs()
- Replaced cKhash specializations with cHash, which automatically chooses a hash for you and implements operator[]
- Restored CreateDir, DelDir, and ListDir functions in os.h
- Changed some functions to static so they don't cause link conflicts
- rewrote how bss_log does levels and renamed it cLog
- Renamed cArraySimple.h to cArray.h, but didn't rename the actual class.
- Added WriteLog() using variadic templates to cLog
- delegate now implicitely constructs from an equivalent lambda function
- Added FPU control functions
- Support was added (again) for VS2010
- SetInterpolate is no longer available on cAnimation. Use GetAttribute<> instead
- Added a high performance custom profiler in profiler.h and removed Shiny
- Added a time interpolation helper function
bss-util-posix-0.4.3.tar.gz is intended for POSIX compatible systems.
bss-util-windows-0.4.3.zip is intended for Windows.