Skip to content

Releases: bamless/extlib

extlib version 2.1.1

11 Apr 15:55

Choose a tag to compare

  • Now the hashmap grows only when actual live entries (i.e. not
    tombstones) occupy at least 37.5% (half of occupancy threshold - 75%) of the buckets
    after a successful EXT_HMAP_NEEDS_RESIZE check (that checks if live entries +
    tombstones exceed the 75% threshold). This should make the growing behaviour a little
    bit more conservative in mixed usage scenarios (lots of inserts, deleted and lookups).
  • Swapped old c-string hash function with FNV-1a Hash. This gives us a slightly better
    distribution at no extra downsides.

Full Changelog: v2.1.0...v2.1.1

extlib v2.1.0

08 Apr 08:21

Choose a tag to compare

  • Better hashmap grow and rehash behaviour. Now the hashmap tracks the number of tombstones
    in the hashmap, and triggers a re-hash if it exceeds the threshold. Same things happens
    with the number of actual entries, but instead of only re-hashing it grows by doubling
    and only then re-hashes.
  • Move back to static inline instead of inline/extern inline pairs for all inline
    functions defined in the header.

extlib v2.0.2

06 Apr 08:56

Choose a tag to compare

  • Minor changes to EXT_ALIGN_PAD macro.
  • Better strict-aliasing behaviour for ext__hmap_grow_.
  • Added EXTLIB_SHARED_EXPORT option and EXT_API macro to support building extlib as a
    shared library (.dll / .so). When EXTLIB_SHARED_EXPORT is defined, EXT_API expands to
    the appropriate export attribute in the EXTLIB_IMPL translation unit and to the
    corresponding import attribute everywhere else. All public non-inline functions,
    extern inline declarations in EXTLIB_IMPL, and exported data variables are
    annotated with EXT_API. Inline definitions in the header are left unmarked.

extlib v2.0.1

29 Mar 13:02

Choose a tag to compare

  • Better implementations of builtin functions when compiling wasm with clang.
  • Correctly mark ext_allocator_memdup and ext_allocator_strdup inline.

extlib v2.0.0

23 Mar 09:23

Choose a tag to compare

  • Breaking changes on hashmap implementation:
    Reworked the hashmap implementation to make possible the usage of ext_hmap_get and
    ext_hmap_get_default family of functions as expressions. Now it is possible to do
    things like:
    Entry* e = hmap_get_cstr(&hmap, "key");
    if(e != NULL) {
        ...
    }
  • Added Ext_Array and Ext_HashMap/Ext_Entry macros to define required struct layout
    for both dynamic arrays and hashmap in-line.
    This makes it possible to skip declaring the full struct by hand when we do not need
    to reference it by name (i.e. create variables to it, pass it to functions, etc.):
    Array(int) int_array = {0};
    HashMap(char*, int) int_map = {0};
    Declaring full struct layout by hand is still supported.
  • Breaking change: removed deprecated functions and macros:
    1. ext_strdup_alloc and ext_memdup_alloc
    2. EXT_DEFER_LOOP

extlib v1.4.0

12 Feb 11:36

Choose a tag to compare

  • Simplified arena allocator
  • Fixes in temp allocator and arena allocator

extlib version 1.3.2

10 Feb 13:38

Choose a tag to compare

  • Fix build on win32 clang

extlib version 1.3.1

10 Feb 13:13

Choose a tag to compare

  • Bugfixes in path handling functions, especially around win32 drive letters and UCN paths
  • Fixed ext_new_array macro
  • Minor other bugfixes

extlib version 1.3.0

09 Feb 11:02

Choose a tag to compare

Changelog:

  • New StringSlice functions: ss_strip_prefix, ss_strip_suffix (and _cstr
    variants), ss_eq_ignore_case, ss_cmp_ignore_case, ss_starts_with_ignore_case,
    ss_ends_with_ignore_case (and _cstr variants), ss_substr
  • New path manipulation functions: ss_basename, ss_dirname, ss_extension,
    sb_append_path (and _cstr variant). Handles both / and \ on Windows
  • New StringBuffer functions: sb_to_upper, sb_to_lower, sb_reverse
  • Added missing shorthand aliases for ss_foreach_split_cstr and
    ss_foreach_rsplit_cstr

extlib version 1.2.1

24 Dec 09:36

Choose a tag to compare

  • Added arena_push and arena_pop macros
  • Renamed DEFER_LOOP to defer_loop. Old version is mantained for backwards compatibility
  • Removed unused defines