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