• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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