1iowow (1.4.16) testing; urgency=medium 2 3 * Fixed behavior of iwp_tmpdir() accourding to #47 4 * Fixed Incorrect serialization of INT64_MIN by iwitoa() #48 (iwconv.h) 5 * Added iwxstr_insert() (iwxstr.h) 6 * ~8% IO performance improvements due to use of MADV_RANDOM 7 * Fixed Github Vulnerability Report GHSL-2022-066 8 * Added additional IW_ERROR_XX codes (iwlog.h) 9 * Added VERBOSE log level (iwlog.h) 10 * Added iwhmap_put_str() (iwhmap.h) 11 * Added iwulist_remove_first_by(), iwulist_find_first() (iwarr.h) 12 * Added iwxstr_new_printf() (iwxstr.h) 13 * Reduced iwkv code complexity. Removed in-memory db cache since benchmarks shows only minor perf imprivements with cache. 14 * Fixed many of UB errors (eg: misaligned access) 15 * Removed dependency on kbtree.h replaced with iwavl.h 16 * Added json module (migrated from ejdb) (iwjson.h, iwbinn.h) 17 * Added platform neutral iwp_basename() and iwp_dirname() (iwp.h) 18 * Added iwu_file_read_as_buf_len() (iwutils.h) 19 * Added IW_NORET (basedefs.h) 20 * iwxstr_destroy_keep_ptr() now returns pointer to underlying buffer 21 * IWHMAP can operate in LRU cache mode (iwhmap.h) 22 * Added .ini file parsing utility module (iwini.h) 23 * Added iw_cond_timed_wait_ms() (iwth.h) 24 * Added iwstw_set_on_task_discard(), iwstw_schedule_only() (iwstw.h) 25 * Fixed iwp_exec_path() on FreeBSD sinceprocfs(5) is not mounted by default in FreeBSD. 26 * iwp_exec_path() implemented for FreeBSD & Macos 27 * Added `int64_t iwatoi2(const char *str, size_t len)` (iwconv.h) 28 * iwpool_split_xx() now returns const pointer (iwpool.h) 29 * Fixed iwre() regexp compilation error. 30 * Added new regexp API implementation (iwre.h) based on https://github.com/jserv/cregex/ 31 * Removed iwsha256() from sources. Use iwnet/beassl for hashing instead. 32 33 -- Anton Adamansky <adamansky@gmail.com> Mon, 14 Nov 2022 18:31:50 +0200 34 35iowow (1.4.15) testing; urgency=medium 36 37 * Added format checking __attribute__ to all printf like functions. 38 39 -- Anton Adamansky <adamansky@gmail.com> Fri, 18 Feb 2022 21:54:04 +0700 40 41iowow (1.4.14) testing; urgency=medium 42 43 * Used ftruncate() instead of posix_fallocate() due to EINVAL on ZFS (unix.c) 44 * Enable XOPEN_SOURCE only for linux 45 * Fixed incorrect selection of `strerror_r` for musl builds. 46 * Set appropriate _XOPEN_SOURCE=700 level for `nftw` (unix.c) 47 * iwxstr_printf() now conforms to stdlib printf function (iwxstr.h) 48 * Moved some useful defs from iwutil.h into basedefs.h 49 * Fixed iwre_match() function signatute allowing `const char* input` 50 (iwre.h) 51 * Added lightweight regexp implementation (iwre.h) 52 * Added `size_t iwxstr_asize(IWXSTR*)` (iwxstr.h) 53 * Added locale independed strtod: iwstrtod() (iwconv.h) 54 55 -- Anton Adamansky <adamansky@gmail.com> Mon, 14 Feb 2022 18:01:17 +0700 56 57iowow (1.4.13) testing; urgency=medium 58 59 * Fixed SEGV in iwkv_cursor_open with zero-length key and IWDB_VNUM64_KEYS (#42) 60 * Fixed Heap UAF in iwkv_close after invoking iwkv_db_set_meta on a database (#41) 61 * Added `iwxstr_wrap()` (iwxstr.h) 62 * Added `RCT()` checker for pthread routines (basedefs.h) 63 * Added iwbin2hex() (iwconv.h) 64 * iwxstr_clear() sets value of intgernal string buffer to zero (iwxstr.h) 65 * Added user data store capability to iwxstr (iwxstr.h) 66 * Added iwpool_strdup2(), iwpool_strndup2() (iwpool.h) 67 * Added iwp_set_current_thread_name() (iwp.h) 68 * Added RCENO define (basedefs.h) 69 * Thread poll, single thread worker fixes 70 * Added IW_MIN, IW_MAX, IW_XSTR defines 71 72 -- Anton Adamansky <adamansky@gmail.com> Fri, 03 Sep 2021 16:03:05 +0700 73 74iowow (1.4.12) testing; urgency=medium 75 76 * Added IW_ERROR_UNSUPPORTED error code 77 * Added IW_ALLOC __attribute__((malloc)) optimization 78 * Added ring buffer implementation (iwrb.h) 79 * Added `queue_blocking` argument `iwstw_start()` (iwstw.h) 80 * Minor changes in iwlog.h api 81 * `memcpy` replaced by `memmove` for overlaping cases (iwarr.c) 82 83 -- Anton Adamansky <adamansky@gmail.com> Mon, 19 Jul 2021 10:09:05 +0700 84 85iowow (1.4.11) testing; urgency=medium 86 87 * Fixed typo (qsort_r => sort_r) (iwarr.c) 88 * Added simple threads pool implementation (iwtp.h) 89 * Added IW_ERROR_NOT_ALLOWED error code (iwlog.h) 90 * Added RCR() error checking macro (basedefs.h) 91 * Added iwlist_sort(), iwulist_sort() (iwarr.h) 92 * Added iwstw_schedule_empty_only() (iwstw.h) 93 * Added iwstw_queue_size() (iwstw.h) 94 * Set O_CLOEXEC flag on all file open() calls 95 * Added IW_ERROR_UNEXPECTED_RESPONSE error code (iwlog.h) 96 * Added iwxstr_set_size(), iwxstr_destroy_keep_ptr() (iwxstr.h) 97 * Added iwlist_at2() (iwarr.h) 98 * Added handy ZRET definition (basedefs.h) 99 * Added handy ZGO definition (basedefs.h) 100 * Project code reformatted using uncrustify 101 * Updated copyright headers 102 * Fixed build errors on macOS 103 * Removed dependency on glibc specific features 104 * Added new iwxstr_pop() (iwxstr.h) 105 106 -- Anton Adamansky <adamansky@gmail.com> Mon, 10 May 2021 16:43:52 +0700 107 108iowow (1.4.10) testing; urgency=medium 109 110 * Tuned iwkv file resizing policy 111 * Fixed misuse of `IWKV_OPTS.file_lock_fail_fast` (#35) 112 * Correct handling of EINTR, EAGAIN in read/write functions (unix.c) 113 114 -- Anton Adamansky <adamansky@gmail.com> Tue, 22 Dec 2020 23:55:36 +0700 115 116iowow (1.4.9) testing; urgency=medium 117 118 * Code review of iwkv cache keys comparison, related issue: https://github.com/Softmotions/ejdb/issues/291 119 * Added `bool iwu_uuid_valid(const char *uuid)` (iwuuid.h) 120 121 -- Anton Adamansky <adamansky@gmail.com> Wed, 18 Nov 2020 15:04:03 +0700 122 123iowow (1.4.8) testing; urgency=medium 124 125 * Fixed serios bug concerning non-unique ejdb2 indexes, details: https://github.com/Softmotions/ejdb/issues/291 126 * Fixed potencial memory leak in `iwlist_create()` (iwarr.h) 127 * Fixed wrong `iwulist_clear()` behaviour (iwarr.h) 128 * Code cleanup 129 * Added `iwulist_at2()` (iwarr.h) 130 * Removed not needed assertion (iwstree.c) 131 132 -- Anton Adamansky <adamansky@gmail.com> Sun, 08 Nov 2020 21:51:49 +0700 133 134iowow (1.4.7) testing; urgency=medium 135 136 * Correct handling of EINTR, EAGAIN in read/write functions (unix.c) 137 * Minor fixes on iwhmap 138 139 -- Anton Adamansky <adamansky@gmail.com> Mon, 21 Sep 2020 12:14:06 +0700 140 141iowow (1.4.6) testing; urgency=medium 142 143 * Added `iwpool_user_data_detach()` (iwpool.h) 144 * Added `iwpool_create_empty()` (iwpool.h) 145 * Added simple hashmap implementation (iwhmap.h) 146 * `IWPOOL` is able to store associated user data (iwpool.h) 147 * `pthread_barrierattr` shim for android API < 24 148 * Added `iwsha256()` SHA-256 hash implementation (iwsha2.h) 149 * Added single thread worker (iwstw.h) 150 * Added `iwstree_clear()` (iwstree.h) 151 152 -- Anton Adamansky <adamansky@gmail.com> Wed, 24 Jun 2020 18:32:24 +0700 153 154iowow (1.4.5) testing; urgency=medium 155 156 * Added `iwulist_clear` (iwarr.h) 157 * Added `RCIF` (basedefs.h) 158 * Fix assertion error in `iwstree_remove()` (iwstree.h) 159 * Allows zero key/value placeholders in `iwstree_iter_next()` (iwstree.h) 160 * Added `iwstree_put_overwrite` (iwstree.h) 161 * Added iwstree iteration API (iwstree.h) 162 * Added `iwpool_used_size` (iwpool.h) 163 * Added `iwstree_int64_cmp` (iwstree.h) 164 * Added `IW_DEPRECATED` (basedefs.h) 165 166 -- Anton Adamansky <adamansky@gmail.com> Thu, 18 Jun 2020 14:19:32 +0700 167 168iowow (1.4.4) testing; urgency=medium 169 170 * Fixed incorrect copying of cursor key data in `IWDB_COMPOUND_KEYS` mode (iwkv.c) 171 * Adde compound key example code (compoundkeys1.c) 172 * Added `iwstree_visit` (iwstree.h) 173 174 -- Anton Adamansky <adamansky@gmail.com> Sat, 02 May 2020 19:38:31 +0700 175 176iowow (1.4.3) testing; urgency=medium 177 178 * Fixed errors found by PVS studio 179 180 -- Anton Adamansky <adamansky@gmail.com> Fri, 24 Apr 2020 00:16:42 +0700 181 182iowow (1.4.2) testing; urgency=medium 183 184 * Added IWULIST, IWLIST implementation (iwarr.h) 185 * Added iwpool_split_string (iwpool.h) 186 * Added iwpool_printf (iwpool.h) 187 * Added iwpool_printf_split (iwpool.h) 188 * Added iwxstr_shift (iwxstr.h) 189 * Added `#define RCHECK` (basedefs.h) 190 * Better error handling of `kh_put` 191 192 -- Anton Adamansky <adamansky@gmail.com> Mon, 20 Apr 2020 16:23:50 +0700 193 194iowow (1.4.1) testing; urgency=medium 195 196 * Fixed possible data corruption in `_fsm_blk_allocate_aligned_lw` (iwfsmfile.c) 197 * Better new SBLK blocks locality (performance) 198 199 -- Anton Adamansky <adamansky@gmail.com> Sat, 07 Mar 2020 23:23:13 +0700 200 201iowow (1.4.0) testing; urgency=medium 202 203 * Implemented new compact and performant data storage format v2 204 * Added WiredTiger v3.2.1 benchmarks 205 * Added BerkeleyDB v5.3.28 benchmarks 206 * Added TokyoCabinet v1.4.48 benchmarks 207 208 -- Anton Adamansky <adamansky@gmail.com> Fri, 06 Mar 2020 23:23:16 +0700 209 210iowow (1.3.37) testing; urgency=medium 211 212 * Added iwrc iwp_mkdirs(const char *path) (iwp.h) 213 * Added uint32_t iwu_x31_u32_hash(const char *s) (iwutils.h) 214 * Added iwu_replace() (iwutils.h) 215 * Added RCA( macro definition 216 * Removed IW_EXPORT iwrc iwkv_db_last_access_time(IWDB db, uint64_t *ts) 217 for performance and simplicity reasons 218 * Added `IW_ERROR_INVALID_VALUE` 219 * Added iwstree - splay tree imlementation (iwstree.h) 220 * Pointers allocated by iwpool are now 8-byte aligned 221 222 -- Anton Adamansky <adamansky@gmail.com> Mon, 17 Feb 2020 23:16:31 +0700 223 224iowow (1.3.36) testing; urgency=medium 225 226 * Safer iowow initialization bootstrap process. 227 228 -- Anton Adamansky <adamansky@gmail.com> Thu, 16 Jan 2020 12:44:31 +0700 229 230iowow (1.3.35) testing; urgency=medium 231 232 * Added specific checks for TARGET_OS_IPHONE 233 * Ported to iOS 234 * Added wal locking interceptor to WAL opts 235 236 -- Anton Adamansky <adamansky@gmail.com> Wed, 15 Jan 2020 13:10:51 +0700 237 238iowow (1.3.32) testing; urgency=medium 239 240 * Improved WAL durability 241 242 -- Anton Adamansky <adamansky@gmail.com> Thu, 19 Dec 2019 10:49:08 +0700 243 244iowow (1.3.31) testing; urgency=medium 245 246 * Keys comparison refactoring 247 248 -- Anton Adamansky <adamansky@gmail.com> Wed, 20 Nov 2019 00:41:15 +0700 249 250iowow (1.3.30) testing; urgency=medium 251 252 * Added check if __unused is already defined in `iwth.c` 253 * CRITICAL Comparsions keys fix #30 254 255 -- Anton Adamansky <adamansky@gmail.com> Tue, 19 Nov 2019 20:23:41 +0700 256 257iowow (1.3.29) testing; urgency=medium 258 259 * FIXED iwkv_open assertion fail on opening garbage file #29 260 261 -- Anton Adamansky <adamansky@gmail.com> Wed, 13 Nov 2019 23:55:35 +0700 262 263iowow (1.3.28) testing; urgency=medium 264 265 * iwlog now supports ANDROID NDK logging (iwlog.h) 266 267 -- Anton Adamansky <adamansky@gmail.com> Thu, 07 Nov 2019 14:44:59 +0700 268 269iowow (1.3.27) testing; urgency=medium 270 271 * CRITICAL WAL durability fixes 272 * Support of online backups #24 273 * Windows platform functions fixes 274 * CLion project files added 275 * WAL recovering fixes 276 277 -- Anton Adamansky <adamansky@gmail.com> Mon, 28 Oct 2019 19:08:59 +0700 278 279iowow (1.3.25) testing; urgency=medium 280 281 * CRITICAL Fixed heap corruption due incorrect usage of khash API in `_db_destroy_lw` (iwkv.c) 282 283 -- Anton Adamansky <adamansky@gmail.com> Thu, 29 Aug 2019 12:20:25 +0700 284 285iowow (1.3.24) testing; urgency=medium 286 287 * CRITICAL Fixed race condition in WAL rollforward 288 289 -- Anton Adamansky <adamansky@gmail.com> Thu, 22 Aug 2019 02:04:08 +0700 290 291iowow (1.3.23) testing; urgency=medium 292 293 * WAL refactoring, better stability 294 295 -- Anton Adamansky <adamansky@gmail.com> Sat, 17 Aug 2019 21:17:05 +0700 296 297iowow (1.3.22) testing; urgency=medium 298 299 * Small optimizations in `iwfsmfile.c` 300 * Added `iwp_clock_get_time` as portable version of `clock_gettime` 301 * `static_assert` is set to `_Static_assert` if not defined 302 * Added `__USE_MINGW_ANSI_STDIO` for MinGW build 303 304 -- Anton Adamansky <adamansky@gmail.com> Thu, 18 Jul 2019 17:50:14 +0700 305 306iowow (1.3.20) testing; urgency=medium 307 308 * CRITICAL Fixed incorrect keys allocation in IWDB_COMPOUND_KEYS mode 309 310 -- Anton Adamansky <adamansky@gmail.com> Thu, 13 Jun 2019 21:43:47 +0700 311 312iowow (1.3.19) testing; urgency=medium 313 314 * CRITICAL: Fixed assertion fail in iwkv records cache 315 316 -- Anton Adamansky <adamansky@gmail.com> Thu, 13 Jun 2019 19:08:48 +0700 317 318iowow (1.3.18) testing; urgency=medium 319 320 * Limit one time file allocation step to 2G 321 322 -- Anton Adamansky <adamansky@gmail.com> Wed, 12 Jun 2019 16:42:47 +0700 323 324iowow (1.3.17) testing; urgency=medium 325 326 * CRITICAL: State of previously deleted database may have influence on newly created dbs 327 * BUG: Fixed database metadata blocks leak (db->meta_blk) on database destroy 328 329 -- Anton Adamansky <adamansky@gmail.com> Fri, 03 May 2019 18:20:39 +0700 330 331iowow (1.3.16) testing; urgency=medium 332 333 * CRITICAL: Fixed deadlock on database removal 334 335 -- Anton Adamansky <adamansky@gmail.com> Fri, 03 May 2019 11:56:29 +0700 336 337iowow (1.3.15) testing; urgency=medium 338 339 * CRITICAL: Fixed database file corruption during sequential records deletion with `iwkv_cursor_del` (iwkv.c) 340 341 -- Anton Adamansky <adamansky@gmail.com> Wed, 01 May 2019 23:29:18 +0700 342 343iowow (1.3.14) testing; urgency=medium 344 345 * CRITICAL: Fixed unexpected database file truncation and data loss on close. 346 * Adjusted default WAL options for Android 347 348 -- Anton Adamansky <adamansky@gmail.com> Sat, 27 Apr 2019 01:04:28 +0700 349 350iowow (1.3.13) testing; urgency=medium 351 352 * Performance impovements in Write Ahead Logging (iwal.c) 353 * BUG: WAL file was not truncated after `wal->checkpoint_timeout_sec` timeout (iwal.c) 354 355 -- Anton Adamansky <adamansky@gmail.com> Thu, 25 Apr 2019 17:43:06 +0700 356 357iowow (1.3.12) testing; urgency=medium 358 359 * Android NDK support (#23) 360 * Pthreads `PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP` is used by default 361 362 -- Anton Adamansky <adamansky@gmail.com> Sun, 21 Apr 2019 12:18:16 +0700 363 364iowow (1.3.11) testing; urgency=medium 365 366 * Added size_t iwpool_allocated_size(IWPOOL *pool) (iwpool.h) 367 * Added `file_lock_fail_fast` iwkv open option. 368 If `true` - do not wait and raise error if database is locked by another process 369 * Fixed meaningful PVP studio errors: 370 - kv/iwkv.c:593:1: error: V774 371 - kv/iwkv.c:1375:1: warning: V649 372 - kv/iwkv.c:3357:1: warning: V581 373 - utils/iwxstr.c:59:1: warning: V701 374 375 -- Anton Adamansky <adamansky@gmail.com> Mon, 08 Apr 2019 11:47:59 +0700 376 377iowow (1.3.10) testing; urgency=medium 378 379 * Added cmake `OWNER_PROJECT_NAME` option used to install header files in `CMAKE_INSTALL_INCLUDEDIR}/OWNER_PROJECT_NAME/PROJECT_NAME` 380 * Removed `-fvisibility=hidden` C flag when building shared library 381 382 -- Anton Adamansky <adamansky@gmail.com> Fri, 05 Apr 2019 11:53:34 +0700 383 384iowow (1.3.9) testing; urgency=medium 385 386 * BUG `IW_HAVE_PTHREAD_CONDATTR_SETCLOCK` was not properly set for `iwal.c` hence high CPU usage when `wal` mode is on. 387 388 -- Anton Adamansky <adamansky@gmail.com> Fri, 29 Mar 2019 23:56:25 +0700 389 390iowow (1.3.8) testing; urgency=medium 391 392 * BUG Fixed incorrect call of `_kvblk_kv_get` in `iwkv_cursor_seth`. 393 See https://github.com/Softmotions/ejdb/issues/231 394 395 -- Anton Adamansky <adamansky@gmail.com> Wed, 27 Mar 2019 12:34:10 +0700 396 397iowow (1.3.7) testing; urgency=medium 398 399 * Added `iwkv_cursor_del()` (#22) 400 * Fixed memory corruption during simultaneous cursor iteration and value updating 401 402 -- Anton Adamansky <adamansky@gmail.com> Tue, 26 Mar 2019 18:24:35 +0700 403 404iowow (1.3.6) testing; urgency=medium 405 406 * BUG: Memory leak in `iwkv_cursor_open` on error (#21) 407 * BUG: `iwxstr_new2()` with zero size argument causes illegal memory write (#20) 408 * Added `iwkv_cursor_seth()` record update handle supported by `iwkv_cursor_set` 409 * Avoided deadlocks with `iwkv_del()` - now this function does't escalate exclusive lock on storage 410 * More consistent error reporting using cursor functions 411 412 -- Anton Adamansky <adamansky@gmail.com> Fri, 22 Mar 2019 16:29:32 +0700 413 414iowow (1.3.5) testing; urgency=medium 415 416 * BUG: Data from deleted database can interfere with newly created db (#19) 417 418 -- Anton Adamansky <adamansky@gmail.com> Wed, 20 Mar 2019 20:26:22 +0700 419 420iowow (1.3.4) testing; urgency=medium 421 422 * Code documentation improvements 423 424 -- Anton Adamansky <adamansky@gmail.com> Mon, 11 Mar 2019 22:42:51 +0700 425 426iowow (1.3.3) testing; urgency=medium 427 428 * BUG: `iwkv_puth` called with incorrect previous value (iwkv.h) 429 * _kvblk_getvalue renamed to _kvblk_value_get (iwkv.c) 430 * _kvblk_peek_val renamed to _kvblk_value_peek (iwkv.c) 431 * _kvblk_getkey renamed to _kvblk_key_get (iwkv.c) 432 * _kvblk_getkv renamed to _kvblk_kv_get (iwkv.c) 433 434 -- Anton Adamansky <adamansky@gmail.com> Fri, 08 Mar 2019 17:02:46 +0700 435 436iowow (1.3.2) testing; urgency=medium 437 438 * Added `iwkv_cursor_is_matched_key` (iwkv.h) 439 * `iwkv_cursor_copy_key` now aware of `IWDB_COMPOUND_KEYS` mode (iwkv.h) 440 * `iwkv_cursor_copy_key` can accept zero kbuf,kbufsz only compound part will returned in this case (iwkv.h) 441 442 -- Anton Adamansky <adamansky@gmail.com> Mon, 04 Mar 2019 20:50:03 +0700 443 444iowow (1.3.1) testing; urgency=medium 445 446 * Eliminate adaptive `IWDB_VNUM64_KEYS` key sizing in `_unpack_effective_key` for the sake of API simplicity (iwkv.c) 447 * BUG: incorrect key handling in `iwkv_del` - key was not unpacked before. (iwkv.h) 448 449 -- Anton Adamansky <adamansky@gmail.com> Thu, 28 Feb 2019 10:40:11 +0700 450 451iowow (1.3.0) testing; urgency=medium 452 453 * `IWKV_PUT_HANDLER` called for insert operations (not only for updates) 454 * Added `IWFS_OUNLINK` flag. Unlink(delete) file on close (iwfile.h) 455 * Added `IWFS_OTMP` flag. Create tmp file (iwfile.h) 456 * Added UUID v4 generation function (iwuuid.h) 457 * Added iwp_tmpdir() (iwp.h) 458 * Added iwp_allocate_tmpfile_path() (iwp.h) 459 * Added iwxstr_printf() (iwxstr.h) 460 * Added iwxstr_cat2() (iwxstr.h) 461 * Added `IWKV_VAL_INCREMENT` mode for `iwkv_put()` and test case (iwkv.h) 462 * Added support of variable-length encoded integer keys `IWDB_VNUM64_KEYS` (iwkv.h) 463 * Added support of compound keys (`IWDB_COMPOUND_KEYS`) (#18) 464 * Removed `dup` integer value routines 465 * Code cleanup and refactoring 466 467 -- Anton Adamansky <adamansky@gmail.com> Wed, 27 Feb 2019 12:11:48 +0700 468 469iowow (1.2.14) testing; urgency=medium 470 471 * BUG: Fix WAL checkpoint workflow to avoid deadlocks with cursor threads 472 * BUG: Clang6 fatal error: variable 'cur' is used uninitialized (#15) 473 * Implemented new multithreaded stress test (iwkv_test6.c) used OMP stack 474 * Added iwkv_new_db(IWKV iwkv, iwdb_flags_t dbflg, uint32_t *odbid, IWDB *dbp) (iwkv.h) 475 * Removed unused `IWKV_NOLOCKS` option. 476 * Added `IW_EXPORT` to `iowow_version_*` API functions (iowow.h) 477 * Added iwrc iwkv_state(IWKV iwkv, IWFS_FSM_STATE *out) (iwkv.h) 478 * Do not check `IWKV_NO_OVERWRITE` for databases in `IWDB_DUP_UINTXX_VALS` mode 479 * Added iwkv_puth() with provided old value interceptor: `IWKV_PUT_HANDLER` (iwkv.h) 480 * Added `IWKV_RC_DUP_ARRAY_EMPTY` flag and `IWKV_DUP_REPORT_EMPTY` opflag for `iwkv_put()` (iwkv.h) 481 482 -- Anton Adamansky <adamansky@gmail.com> Tue, 06 Nov 2018 23:14:39 +0700 483 484iowow (1.2.13) testing; urgency=medium 485 486 * BUG: Correct cursors adjustments during db update operations (#13) 487 * BUG: Fixed WAL integration for updates in IWDB_DUP_UINT32_VALS|IWDB_DUP_UINT64_VALS mode 488 * Store arbitrary data blocks associated with iwkv internal databases (#12) 489 * Checking of max key/value size (IWKV_MAX_KVSZ) for updates in IWDB_DUP_UINT32_VALS|IWDB_DUP_UINT64_VALS mode 490 * Minor allocation performance optimizations in _kvblk_addkv() 491 492 -- Anton Adamansky <adamansky@gmail.com> Thu, 02 Aug 2018 20:29:08 +0700 493 494iowow (1.2.12) testing; urgency=medium 495 496 * Set terminating '\0' in iwitoa() (iwconv.h) 497 * Added MAP_NORESERVE option for PRIVATE mmaping on Linux (#11) 498 * Added iwu_file_read_as_buf() (iwutils.h) 499 * Optimized cmake config files generation 500 501 -- Anton Adamansky <adamansky@gmail.com> Sat, 21 Jul 2018 01:59:40 +0700 502 503iowow (1.2.11) testing; urgency=medium 504 * iwpool refactoring fixed pool memory corruption (iwpool.h) 505 * Fixed set terminating `\0` in iwpool_strdup() (iwpool.h) 506 * Fixed wrong `if` in iwpool_calloc() (iwpool.h) 507 508 -- Anton Adamansky <adamansky@gmail.com> Fri, 15 Jun 2018 17:58:20 +0700 509 510iowow (1.2.10) testing; urgency=medium 511 512 * Added iwpool_calloc() (iwpool.h) 513 * Added iwpool_strdup(), iwpool_strndup() (iwpool.h) 514 * Fixed memory leak in iwpool_destroy() (iwpool.h) 515 * Renamed platform/linux/linux.c to platform/unix/unix.c (#9) 516 * Added iwu_replace_char() (iwutils.h) 517 518 -- Anton Adamansky <adamansky@gmail.com> Mon, 11 Jun 2018 23:00:21 +0700 519 520iowow (1.2.9) testing; urgency=medium 521 522 * Rewrite of iwftoa() (iwconv.h) 523 * Fixed typo: iwtoa renamed to iwitoa (iwconv.h) 524 * Added iwu_cmp_files (iwutils.h) 525 * Return type of iwxstr_ptr() changed to char* (iwxstr.h) 526 527 -- Anton Adamansky <adamansky@gmail.com> Tue, 29 May 2018 01:01:56 +0700 528 529iowow (1.2.8) testing; urgency=medium 530 531 * IOWOW Ported to MIPS32 (big-endian) tested on Debian GNU/Linux 9.4 532 533 -- Anton Adamansky <adamansky@gmail.com> Sat, 19 May 2018 21:09:04 +0700 534 535iowow (1.2.7) testing; urgency=medium 536 537 * Fixed incorrect exclusive locking in iwkv_del()" 538 539 -- Anton Adamansky <adamansky@gmail.com> Thu, 17 May 2018 11:27:58 +0700 540 541iowow (1.2.6) testing; urgency=medium 542 543 * Fixed: database file is not created automatically if no open modes specified in opts 544 545 -- Anton Adamansky <adamansky@gmail.com> Wed, 16 May 2018 19:57:35 +0700 546 547iowow (1.2.5) testing; urgency=medium 548 549 * Added iwkv_opflags opflags into iwkv_del 550 551 -- Anton Adamansky <adamansky@gmail.com> Wed, 16 May 2018 19:33:16 +0700 552 553iowow (1.2.4) testing; urgency=medium 554 555 * Fixed race conditions in iwkv_cursor_to() 556 557 -- Anton Adamansky <adamansky@gmail.com> Mon, 14 May 2018 09:28:13 +0700 558 559iowow (1.2.3) testing; urgency=medium 560 561 * Fixed race conditions in iwkv_cursor_set() 562 563 -- Anton Adamansky <adamansky@gmail.com> Fri, 11 May 2018 23:17:13 +0700 564 565iowow (1.2.2) testing; urgency=medium 566 567 * Added static iowow_s libraries to the default CMake exports. 568 569 -- Anton Adamansky <adamansky@gmail.com> Tue, 08 May 2018 22:58:41 +0700 570 571iowow (1.2.1) testing; urgency=medium 572 573 * Removed unistd.h from src/fs/iwdlsnr.h since it is not portable. 574 * C++ friendly header files 575 576 -- Anton Adamansky <adamansky@gmail.com> Mon, 07 May 2018 12:47:46 +0700 577 578iowow (1.2.0) testing; urgency=medium 579 580 * IOWOW ported to Windows x86-64 platform #1 581 582 -- Anton Adamansky <adamansky@gmail.com> Sun, 06 May 2018 20:35:14 +0700 583 584iowow (1.1.0) testing; urgency=medium 585 586 * Write Ahead Log (WAL) implemented #2 587 * Changed database block size to 128 bytes so max db size 512Gb 588 WARNING: Database format of version 1.1.x is incompatible with previous versions. 589 * Better basename/basename_r detection in iwlog.c #4 590 591 -- Anton Adamansky <adamansky@gmail.com> Wed, 02 May 2018 17:28:14 +0700 592 593iowow (1.0.6) testing; urgency=medium 594 595 * src/CMakeLists.txt cleanups #3 596 * x86-specific code in src/platform/iwp.c is not guarded #7 597 * Database size limited to 2GB on 32 bit CPUs #5 598 * Database block size changed: 64 to 128 bytes #8 599 600 -- Anton Adamansky <adamansky@gmail.com> Mon, 16 Apr 2018 10:21:00 +0700 601 602iowow (1.0.5) testing; urgency=medium 603 604 * iwextfile: do msync before munmap on file resizing 605 606 -- Anton Adamansky <adamansky@gmail.com> Thu, 12 Apr 2018 20:48:26 +0700 607 608iowow (1.0.4) testing; urgency=medium 609 610 * Added IWFSM_SYNC_BMAP option to iwfs_fsm_aflags 611 * Removed IWFS_NO_MMASYNC since it does noop on many platforms 612 * Set exclusive iwkv write lock in iwkv_sync() 613 614 -- Anton Adamansky <adamansky@gmail.com> Thu, 12 Apr 2018 12:33:53 +0700 615 616iowow (1.0.3) testing; urgency=medium 617 618 * Added basic iowow.3 man page to distribution archive 619 * Use posix_fallocate() to extend iwkv file instead of ftruncate() on Linux/FreeBSD 620 621 -- Anton Adamansky <adamansky@gmail.com> Tue, 10 Apr 2018 18:56:11 +0700 622 623iowow (1.0.2) testing; urgency=medium 624 625 * Removed unneeded -D_LARGE_FILE_SOURCE from iowow.h 626 627 -- Anton Adamansky <adamansky@gmail.com> Mon, 09 Apr 2018 13:56:53 +0700 628 629iowow (1.0.1) testing; urgency=medium 630 631 * Fix export flags iwlog2 method 632 633 -- Anton Adamansky <adamansky@gmail.com> Mon, 09 Apr 2018 12:44:23 +0700 634 635iowow (1.0.0) testing; urgency=medium 636 637 * Initial release. 638 639 -- Anton Adamansky <adamansky@gmail.com> Sun, 08 Apr 2018 14:21:43 +0700 640