Assets 4

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 added std::tuple support
  • Switched Map to use std::tuple so it can be iterated over with for(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 added HashIns instead
  • Hash iterator now returns an std::tuple key/value pair.
  • Renamed Start() to Front() and End() to Back() in Hash
  • 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 into RandomQueue.h
  • Rewrote internal implementation of Serializer, which now requires objects implement void(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, and PriorityQueue
  • Added std::tuple support to Serializer
  • Removed deprecated std::iterator
Assets 4

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 with size_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 array
  • DynArray streams have been replaced by a generic read-only array stream and a read-write DynArray stream
  • Added a functional buffer stream
  • Renamed ArraySlice to Slice 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 standardized std::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
Assets 4

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
Assets 4

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

@blackhole12 blackhole12 released this Jul 20, 2016 · 109 commits to master since this release

Assets 4

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
Assets 4

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.

Assets 4

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.

Assets 4

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.