forked from ivmai/bdwgc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
10040 lines (9107 loc) · 472 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
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
== [8.1.0] (development) ==
* Add API for accessing incremental GC time limit with nanosecond precision
* Add I_HOLD_LOCK assertion to expand_hp_inner and related functions
* Add assertion that GC is initialized to base incremental_protection_needs
* Add testing of GC_CALLOC/MALLOC_EXPLICITLY_TYPED (gctest)
* Adjust formatting of numbered lists in README.md to match other .md files
* Adjust highlighting of API prototypes in gcinterface.md
* Adjust macro def/usage for AVR32, CRIS, NETBSD, OPENBSD, SH4 in gcconfig.h
* Adjust printf calls in gctest check_heap_stats so that each has new-line
* Allow incremental GC on Cygwin
* Allow memory unmapping in case of MPROTECT_VDB
* Check real-symbols are already initialized in pthread_join/detach
* Comments reformatting in mark.c to properly delimit sentences
* Eliminate 'hash_val value is never used' cppcheck false positive
* Eliminate 'stop variable is always 0' compiler warning in print_callers
* Enable compilation without C runtime (Win32)
* Enable mprotect-based incremental GC for Linux/arm and Linux/aarch64
* Enable true incremental collection even if parallel marker is on
* Move QNX and Emscripten macro definitions to proper place in gcconfig.h
* New API function to get size of object debug header
* New macro (GCTEST_PRINT_VERBOSE) to enable verbose logging in test.c only
* Print pid of child processes if verbose logging (gctest)
* Refine flags field comment in pthread_support.h
* Reformat gc.man (wrap long lines)
* Remove 'current users' section from overview.md
* Remove 'distributed ports', 'scalable versions' sections from overview.md
* Remove Linux-specific commands for building cord/de from Makefile.direct
* Remove Win32 main_thread static variable if threads discovery is disabled
* Remove dash characters comprising prefix of some verbose logs (gctest)
* Remove documentation specific to particular old BDWGC releases
* Remove goto statement in print_callers (code refactoring)
* Remove redundant options for building 'cord' in gc.mak
* Remove redundant type casts in backgraph HEIGHT_UNKNOWN/IN_PROGRESS
* Remove unused STACK_GRAN macro definitions (code refactoring)
* Remove unused sparc_sunos4_mach_dep.s file
* Replace "msecs" with "ms" in all comments and messages
* Replace 'stack base' with 'stack bottom' in the documentation
* Report time with a nanosecond precision where available
* Simplify logged message in scratch_recycle
* Simplify loops of collect_a_little/stopped_mark invoking mark_some
* Update libgc.so version info to differentiate against v8.0.x
* Update the ASCII diagrams describing the tree structure for pointer lookups
* Update the documentation to match the current GC implementation
* Use KB/MB/GB abbreviations uniformly across entire documentation
* Use atomic primitives for Sony PlayStation Portable 2 and PS4
* Use better precision Windows timers
* Workaround '*_stubborn function is never used' cppcheck warnings
* Workaround 'GC_get_thr_restart_signal is never used' cppcheck warning
* Workaround '__data_start<_etext is always false' cppcheck false positive
* Workaround 'argument dummy to GC_noop1 is always 1' cppcheck false positive
* Workaround 'checking if unsigned expression < 0' cppcheck warnings
* Workaround 'duplicate expression for condition and assignment' cppcheck FP
* Workaround 'identical inner return condition always true' cppcheck warning
* Workaround 'if condition is the same as the previous one' cppcheck warnings
* Workaround 'me assigned value never used' cppcheck FP in register_my_thread
* Workaround 'name var reassign before old value use' cppcheck false positive
* Workaround 'nl-result_buf is out of bounds' cppcheck false positive
* Workaround 'uninitialized variable: info' cppcheck false positive (OS X)
* Workaround 'var reassigned before old value use' cppcheck false positive
== [8.0.6] (not released yet) ==
* Add support of OpenBSD/aarch64
* Allow GC_PAUSE_TIME_TARGET environment variable values smaller than 5 ms
* Avoid compiler warning about unused d in GC_CALLOC/MALLOC_EXPLICITLY_TYPED
* Enable sbrk-to-mmap fallback on major supported Unix-like platforms
* Explicitly zero-initialize trace_buf (fix trace_buf initialization)
* Fix MPROTECT_VDB definition for single-threaded GC builds
* Fix OS_TYPE and USE_MMAP_ANON definitions for Cygwin/x64
* Fix compiling by Makefile.direct on OpenBSD/UltraSparc
* Fix configure message about 'AIX gcc optimization fix'
* Fix first_thread stack_base initialization if custom GC_stackbottom (Win32)
* Fix incorrect markup formatting in documentation
* Fix printf format specifier in simple_example.md
* Fix save_callers for multi-threaded case if built-in backtrace unavailable
* Fix various typos mostly in documentation files
* Fix word size, data start and alignment for OpenBSD/mips64(el)
* Refine GC_INIT documentation about its multiple invocation
* Refine GC_parallel documentation in gc.h
* Refine do_blocking() documentation in gc.h
* Remove a misleading comment about Solaris in gc.h
* Support MSYS builds by CMake and configure
* Update documentation about the incremental collector support
== [8.0.4] 2019-03-02 ==
* Avoid a full GC when growing finalizer tables if in incremental mode
* Avoid potential race in hb_sz access between realloc and reclaim_block
* Avoid test.o rebuild on tests folder timestamp change (Makefile.direct)
* Avoid unexpected heap growth in gctest caused by GC_disable
* Ensure result of every variant of MS_TIME_DIFF has unsigned long type
* Fix 'duplicate symbol' error for tests using multiple static libs (OS X)
* Fix 'undefined reference to __data_start' linker error (Android/aarch64)
* Fix 'unexpected mark stack overflow' abort in push_all_stack
* Fix 'wrong __data_start/_end pair' error on Android
* Fix BSD_TIME variant of MS_TIME_DIFF for the case of a.tv_usec < b.tv_usec
* Fix GetThreadContext stale register values use if WoW64 (Win32)
* Fix invalid initializer of CLOCK_TYPE variables if BSD_TIME
* Fix thread_info() count argument value (OS X)
* Support de_win.c compilation by Makefile.direct (cord/de)
== [8.0.2] 2018-12-23 ==
* Abort with appropriate message if executable pages cannot be allocated
* Add initial testing of GC_enable/disable, MALLOC[_ATOMIC]_IGNORE_OFF_PAGE
* Add paths to filenames mentioned in the copyright section in README
* Add test using disclaim notifiers to implement a weak map
* Adjust #error messages format
* Allow to force executable pages allocation in gctest
* Avoid potential 'macro redefinition' errors for config.h macros
* Call real pthread_sigmask instead of its wrapper in start_mark_threads
* Check result of pthread_mutex_unlock in specific.c
* Default to a single-threaded build for Nintendo, Orbis, Sony PSP targets
* Default to non-executable memory allocation across all make scripts
* Define GC_ATOMIC_UNCOLLECTABLE and JAVA_FINALIZATION in all make scripts
* Do not prevent GC from looking at environment variables (BCC_MAKEFILE)
* Do not use 'ifndef AO_CLEAR' in mark, pthread_support and gctest
* Do not use spin locks if AO test-and-set is emulated (pthreads)
* Document HANDLE_FORK macro optional usage in Makefile.direct
* Document assertion in the setters that used to return old value
* Eliminate 'assigned value never used' compiler warning in test_cpp WinMain
* Eliminate 'casting signed to bigger unsigned int' CSA warning
* Eliminate 'different const qualifiers' MS VC warnings in cordbscs
* Eliminate 'function is never used' cppcheck warning for calloc/realloc
* Eliminate 'non-virtual destructor for class with inheritors' CSA warning
* Eliminate 'pointer targets differ in signedness' compiler warning (Win32)
* Eliminate 'struct member is never used' cppcheck warnings in os_dep
* Eliminate 'uninitialized var' cppcheck false positive in mach_dep, os_dep
* Eliminate 'unreferenced formal parameter' compiler warning in msvc_dbg
* Eliminate redundant check in backwards_height
* Fix 'USE_MUNMAP macro redefinition' error for NaCl
* Fix 'collecting from unknown thread' abort in leak-finding mode for Win32
* Fix 'mprotect remapping failed' abort on NetBSD with PaX enabled
* Fix 'too wide non-owner permissions are set for resource' code defect
* Fix GC_VSNPRINTF in cordprnt for DJGPP and MS VC for WinCE
* Fix GC_register_disclaim_proc for leak-finding mode
* Fix a deadlock in write_fault_handler if AO_or is emulated
* Fix comment typo in CMakeLists.txt
* Fix concurrent bitmap update in GC_dirty
* Fix deadlocks in write and suspend handlers if AO test-and-set is emulated
* Fix executable memory allocation in GC_unix_get_mem
* Fix hbp overflow in GC_install_counts
* Fix linkage with a system libatomic_ops shared library
* Fix lock assertion violation in get_index if GC_ALWAYS_MULTITHREADED
* Fix marking of finalizer closure object
* Fix marks and hb_n_marks consistency when disclaim returns true
* Fix memory allocation on GCF (Linux/x64)
* Fix missing curses.h in cord/de when compiling manually (MS VC, MinGW)
* Fix test_cpp assertion violation in find-leak mode
* Fix tests linkage with internal atomic_ops.o
* Fix unneeded end_stubborn_change/ptr_store_and_dirty in disclaim_test
* Guard against potential buffer overflow in CORD_next and CORD_pos_fetch
* New macro to suppress printing of leaked objects
* Pass -Wall -Wextra -Wpedantic to g++ if supported (configure)
* Prefix internal durango_get_mem symbol with 'GC_'
* Prevent double inclusion of javaxfc.h and private/specific.h
* Print relevant message in tests not appropriate for leak detection mode
* Reduce scope of local variables in GC_remove_all_threads_but_me
* Refine HIDE_POINTER documentation for the case of the leak-finding mode
* Refine documentation in gc_disclaim.h
* Remove extra USE_MMAP definition for Interix
* Remove redundant header double-inclusion checks in the private headers
* Remove strlen calls with a constant string argument in msvc_dbg
* Specify register_disclaim_proc and finalized_malloc argument as non-null
* Support UWP/arm64 target
* Test marking of finalizer closure object in disclaim_test
* Turn off leak detection mode explicitly in cord/de
* Turn off parallel marker, thread-local allocation if used AO ops emulated
* Turn on gcj functionality in BCC, DMC, NT, OS/2, WCC makefiles
* Turn on memory unmapping in BCC/DMC/NT/WCC makefiles and Makefile.direct
* Update NO_EXECUTE_PERMISSION documentation
* Update documentation about arm64 ABI in gcconfig.h
* Use AO_or in async_set_pht_entry_from_index if available
* Use GC_WORD_MAX macro across all C source files
* Use macro to operate on a flag residing in GC_stop_count
* Use standalone private macro to guard against ptr_t redefinition
* Workaround '#error' cppcheck messages in backgraph and private headers
* Workaround 'AST broken' syntax error reported by cppcheck in GC_mark_some
* Workaround 'GC_dump function is never used' cppcheck warning
* Workaround 'local address assignment to a global variable' CSA warning
* Workaround 'local variable end shadows outer symbol' cppcheck warnings
* Workaround 'local variable obj_displ shadows outer symbol' cppcheck warning
* Workaround 'nonlocal var will use ptr to local var' cppcheck false positive
* Workaround 'pointer addition with NULL pointer' cppcheck error in msvc_dbg
* Workaround 'potential non-terminated string' false positive in cordbscs
* Workaround 'value of _MAX_PATH is unknown' cppcheck warning
* Workaround cppcheck warnings regarding CLOCKS_PER_SEC, REDIRECT_REALLOC
== [8.0.0] 2018-09-05 ==
* Accept Android platform by both CMake and configure
* Access finalize_now atomically to avoid TSan warning without no-sanitize
* Acknowledge thread restart from suspend_handler (NetBSD)
* Add a sanity check that load_acquire and store_release are available
* Add AO primitives implementation to GC based on C11 atomic intrinsic
* Add assertion for suspend_ack_sem in start_world
* Add assertion to allocobj that live unmarked object cannot be reclaimed
* Add assertions about held lock when accessing all_bottom_indices
* Add assertions to ensure ADD_CALL_CHAIN is called holding the lock
* Add assertions to finalize and threads support for MANUAL_VDB needs
* Add basic calculation of the total full-collection time
* Add check that gc_cpp operator delete is called (test_cpp)
* Add debug logging to new_thread about GC_threads hash table collisions
* Add GC prefix to _MSVC_DBG_H macro
* Add initial RISC-V support
* Add Makefile target to run all tests without test-driver
* Add test_atomic_ops to perform minimal testing of used atomic primitives
* Add two-argument alloc_size attribute to calloc_explicitly_typed (GCC)
* Align IRIX/OSF1_THREADS definition in gc_config_macros.h with gcconfig.h
* Allocate non-executable memory by default (CMake)
* Allow compilation of PROC_VDB code on Linux host (GC_NO_SYS_FAULT_H)
* Allow configure --with-libatomic-ops=none to use GCC atomic intrinsics
* Allow custom N_LOCAL_ITERS and ENTRIES_TO_GET values
* Allow disabling of dynamic loading in CMake script and configure
* Allow disabling of main static data registration in CMake and configure
* Allow disabling of threads discovery in CMake script and configure
* Allow gc_assertions enabling in CMake script
* Allow gc_debug, redirect_malloc, large_config options in CMake script
* Allow GC_NETBSD_THREADS_WORKAROUND macro manual definition
* Allow mmap enabling in CMake script and configure
* Allow passing -D DEFAULT_VDB to CFLAGS
* Allow subthreadcreate_test to be compiled with zero NTHREADS
* Allow to turn on spin locking even if thread-local allocations are used
* Always include gc_atomic_ops.h unless threads are disabled
* Avoid 'Unexpected heap growth' in 64-bit multi-threaded gctest if n_tests=1
* Avoid duplication of code handling pthreads case in configure
* Avoid potential data race during apply_to_each_object(reset_back_edge)
* Avoid potential data race during GC_dump execution
* Avoid potential race between malloc_kind and mark_thread_local_fls_for
* Avoid potential race between realloc and clear_hdr_marks/reclaim_generic
* Avoid potential race in print_static_roots called by dyld_image_add/remove
* Avoid potential race in SET_MARK_BIT_EXIT_IF_SET if parallel marking
* Avoid potential race when accessing size_map table
* Avoid potential race when storing oh_back_ptr during parallel marking
* Avoid SIGSEGV during GC_INIT on some Android devices
* Build only shared libraries by default (configure)
* Change pointer arguments of push_all[_eager]/conditional API to void* type
* Change type of hb_sz field (of hblkhdr) from size_t to word
* Check consistency of descr, adjust, clear arguments of GC_new_kind
* Check that GC_WIN32_PTHREADS is not specified for Cygwin
* Check thread_local is initialized before accessing thread_key
* Collapse multiple BCOPY_EXISTS macro definitions
* Collapse multiple NT_*_MAKEFILE scripts into a single NT_MAKEFILE
* Collapse multiple page_was_dirty, remove_protection, read_dirty definitions
* Compile checksums.c only if --enable-checksums is given (configure)
* Consistently define WIN32_LEAN_AND_MEAN/NOSERVICE before include windows.h
* Convert .html files to Markdown format
* Convert code of .c files to valid C++ code
* Decide between memory unmapping and mprotect-based dirty bits at runtime
* Declare t local variable in the block where the variable is used
* Define ABORT() using _CrtDbgBreak (if available) on Windows host
* Define CLANG/GNUC_PREREQ macros to check gcc/clang minimum version
* Define DYNAMIC_LOADING for Darwin unless IGNORE_DYNAMIC_LOADING
* Define GC_ASSERT(x) as C assert(x) for external clients of gc_inline.h
* Define GC_PREFETCH_FOR_WRITE to __builtin_prefetch in gc_inline.h (GCC)
* Define GC_THREADS instead of GC_x_THREADS in Makefiles
* Define macro to specify the environment file name extension (Win32/WinCE)
* Define static resend_lost_signals(), restart_all() in pthread_stop_world
* Detect sigsetjmp() availability by configure
* Determine whether to use compiler TLS for kFreeBSD at compile time
* Do not call BCOPY and BZERO if size is zero
* Do not call sem_getvalue in stop_world if one thread exists
* Do not call set_handle_fork(1) in gctest if pthread_atfork not supported
* Do not compile pcr_interface.c and real_malloc.c except by PCR-Makefile
* Do not declare dl_iterate_phdr as weak for kFreeBSD
* Do not include windows.h when compiling gc_cpp.cc
* Do not install gc_allocator.h, gc_disclaim.h unless the features enabled
* Do not merge dynamic root with the existing static one in add_roots_inner
* Do not print n_rescuing_pages value if incremental collections disabled
* Do not push cpsr and frame pointer on Darwin/arm and Darwin/arm64
* Do not rebuild_root_index unless remove_root_at_pos is called
* Do not specify version info for test libraries (Automake)
* Do not use alternate thread library on Solaris
* Do not use asm in GC_pause
* Do not use PKG_CHECK_MODULES in configure
* Do not use system clock consistently if NO_CLOCK
* Do not use x86 asm in PUSH_CONTENTS_HDR for NaCl
* Document GC_BUILTIN_ATOMIC macro (and gc_atomic_ops private header file)
* Document STACK_NOT_SCANNED macro in gcconfig.h (Emscripten)
* Eliminate 'comparison is always false' code defect in get_maps
* Eliminate 'GC_DEBUG redefined' compiler warning in smashtest
* Eliminate 'potential unsafe sign check of a bitwise operation' code defect
* Enable alternative finalization interface (DISCLAIM) in all makefiles
* Enable compilation for Cygwin with MPROTECT_VDB
* Enable handle-fork and memory unmapping by default
* Enable mprotect-based incremental GC for Win64 (GCC)
* Expose API to control rate and max prior attempts of collect_a_little
* Expose API to control the minimum bytes allocated before a GC occurs
* Fix 'comparison of 255 with expr of type bool' error in gc_atomic_ops.h
* Fix 'doc' files installation folder
* Fix build of cord tests as C++ files (Makefile.direct)
* Fix comment typos in backgraph.c, de.c, gcconfig.h
* Fix delete operator redirection if gc_cpp is built as .dll (Cygwin, MinGW)
* Fix start_world not resuming all threads on Darwin
* Fix test_cpp failure in case GC_DEBUG is defined
* Group common defines for POSIX platforms in configure and CMake scripts
* Guard against USE_PTHREAD_LOCKS and USE_SPIN_LOCK are both defined
* Handle pthread restart signals loss if retry_signals
* Hide value stored to thread-specific entries for a test purpose
* Implement FindTopOfStack(0) for ARM and AArch64 (Darwin)
* Implement memory unmapping for Sony PS/3
* Imply configure --single-obj-compilation if --disable-static
* Include malloc.c in extra/gc.c after include gc_inline.h
* Increase MAX_HEAP_SECTS (10 times) for large-config
* Initial single-threaded support of Interix subsystem
* Initial support of Nintendo, Orbis, Sony PSP2, WinRT, Xbox One
* Initial support of TIZEN platform
* Install gc.3 man page instead of copying gc.man to doc folder (configure)
* Make extend_size_map() static (code refactoring)
* Make subthreadcreate test compilable even without libatomic_ops
* Match GC_FAST_MALLOC_GRANS formal and actual arguments where possible
* Move de_win compiled resource files to cord/tests
* Move pcr_interface.c, real_malloc.c to 'extra' folder
* New API function (GC_dump_named) to produce named dumps
* New API function (GC_is_incremental_mode)
* New API function (get_expl_freed_bytes_since_gc)
* New API function (get_size_map_at) to get content of size_map table
* New API to stop and start the GC world externally
* New API to turn on manual VDB at runtime
* New field (expl_freed_bytes_since_gc) in public prof_stats_s
* New macro ALWAYS_SMALL_CLEAR_STACK to avoid clearing large stack sections
* New public API (PTR_STORE_AND_DIRTY) to simplify store-and-dirty operation
* Pass CFLAGS_FOR_PIC value to CFLAGS in Makefile.direct
* Print time passed since GC initialization in GC_dump
* Public API (GC_deinit) to allow Win32 critical sections deletion
* Reduce probability of collision in threads hashtable for 64-bit targets
* Reduce the default MUNMAP_THRESHOLD value to 2 for Sony PS/3
* Refactoring of USE_MMAP/USE_MMAP_ANON pairs definition in gcconfig.h
* Reformat code and comments in gc_allocator.h
* Remove 'dist' target from Makefile.direct
* Remove a redundant check of __cplusplus in Symbian-specific .cpp files
* Remove Android-specific code in gcconfig.h for M68K
* Remove C++ WeakPointer and CleanUp API which lacks implementation
* Remove DGUX_THREADS macro which duplicates GC_DGUX386_THREADS (configure)
* Remove done_init static variable from fnlz_mlc.c
* Remove duplicate definition of ALIGNMENT macro for OpenBSD/arm
* Remove duplicated sample code in leak.md
* Remove EMX_MAKEFILE (add EMX support to Makefile.direct)
* Remove GC code fragment (which already merged) from README.Mac
* Remove GC_GNU_THREADS macro (HURD)
* Remove GENERAL_MALLOC internal macro
* Remove HIGH_BIT macro duplicating SIGNB
* Remove lint-specific code
* Remove Makefile KandRtest target (that supported K&R C compiler)
* Remove MIN_WORDS macro from gc_priv.h
* Remove multi-line macros (FOR_EACH_PRED, ITERATE_DL_HASHTBL_*, PUSH_OBJ)
* Remove name of optional arguments of operator new and new[] in gc_cpp.h
* Remove notes that K&R C compiler is unsupported
* Remove PUSH_CONTENTS_HDR multi-line macro
* Remove redundant check that clear_fl_marks argument is non-null
* Remove redundant THREADS macro checks in alloc.c and gc_priv.h
* Remove stubborn objects allocation code completely, remove stubborn.c
* Remove unnecessary argument casts in add_roots_inner calls
* Remove unnecessary type casts in n_set_marks
* Remove unused USE_GENERIC macro definition and description
* Remove version info in 'de' cord test application
* Replace GC_MALLOC(sizeof T) with GC_NEW(T) in tests
* Replace GC_NO_RETRY_SIGNALS environment variable with GC_RETRY_SIGNALS=0
* Replace some FIXME items with TODO ones
* Run command passed to if_not_there directly from Makefile.direct
* Same type casts for GC_PTR_STORE arguments regardless of GC_DEBUG
* Skip grungy_pages update when mark state invalid to speedup read_dirty
* Skip typed_test in gctest if NO_TYPED_TEST macro is defined
* Support configure --disable-thread-local-alloc option (similar for CMake)
* Support enable_checksums option in CMake script
* Support Haiku multi-threaded build by CMake
* Support threads for DragonFly in configure
* Turn on 'atomic uncollectable' functionality by default (CMake)
* Turn on GC assertions in NT_MAKEFILE for debug builds
* Turn on gcj, disclaim and java finalization by default (CMake)
* Turn on incremental collection in gctest also if DEFAULT_VDB or MANUAL_VDB
* Turn on incremental mode in cordtest and cord/de
* Turn on incremental mode in disclaim_test, test_cpp and staticroots test
* Turn on parallel marker by default for all multi-threaded builds
* Update GC compilation and usage notes for Win32
* Update shared libraries version info to differentiate against v7.6
* Update top_index entry pointer only when the entry is constructed fully
* Use __builtin_expect in SIZET_SAT_ADD macro
* Use __declspec(allocator) for malloc-like prototypes (MS VS 2015+)
* Use __int64 instead of 'long long' in LONG_MULT if appropriate
* Use __thread keyword for Android NDK r12b+ Clang (arm)
* Use atomic allocation for leafs in reverse_test (gctest)
* Use atomic load/store for the concurrently accessed variables in GC_lock
* Use C11 static_assert if available
* Use compiler atomic intrinsics by default if available (configure)
* Use EXPECT FALSE for mark_from code documented as executed rarely
* Use heap-allocated memory for local mark stack of non-marker thread
* Use HOST_ANDROID define instead of PLATFORM_ANDROID
* Use include gc.h with the angle brackets in the man page synopsis
* Use longjmp in fault_handler_openbsd if siglongjmp unavailable (OpenBSD)
* Use MARK_BIT_PER_GRANULE instead of MARK_BIT_PER_OBJ where appropriate
* Use noexcept specifier in gc_allocator and gc_cpp if C++11
* Use same macro (NTHREADS) across all tests to specify number of threads
* Use sigsetjmp() in setjmp_t tool if available
* Use thread-local allocations for all multi-threaded builds
* Use THREAD_EQUAL consistently to compare pthread_t values
* Workaround 'bad pointer arithmetic' false waring in check_annotated_obj
* Workaround Clang optimizer bug crashing clear_stack_inner on OS X 10.8
* Workaround Thread Sanitizer (TSan) false positive warnings
== [7.6.14] (not released yet) ==
* Add support of OpenBSD/aarch64
* Explicitly zero-initialize trace_buf (fix trace_buf initialization)
* Fix MPROTECT_VDB definition for single-threaded GC builds
* Fix OS_TYPE and USE_MMAP_ANON definitions for Cygwin/x64
* Fix compiling by Makefile.direct on OpenBSD/UltraSparc
* Fix configure message about 'AIX gcc optimization fix'
* Fix first_thread stack_base initialization if custom GC_stackbottom (Win32)
* Fix incorrect define GC_OPENBSD_THREADS on sparc64
* Fix printf format specifier in simple_example.html
* Fix save_callers for multi-threaded case if built-in backtrace unavailable
* Fix various typos mostly in documentation files
* Fix word size, data start and alignment for OpenBSD/mips64(el)
* Remove a misleading comment about Solaris in gc.h
== [7.6.12] 2019-03-01 ==
* Eliminate 'assigned value never used' compiler warning in test_cpp WinMain
* Fix 'mprotect remapping failed' abort on NetBSD with PaX enabled
* Fix 'undefined reference to __data_start' linker error (Android/aarch64)
* Fix 'unexpected mark stack overflow' abort in push_all_stack
* Fix 'wrong __data_start/_end pair' error on Android
* Fix BSD_TIME variant of MS_TIME_DIFF for the case of a.tv_usec < b.tv_usec
* Fix GetThreadContext stale register values use if WoW64 (Win32)
* Fix executable memory allocation in GC_unix_get_mem
* Fix invalid initializer of CLOCK_TYPE variables if BSD_TIME
* Fix thread_info() count argument value (OS X)
* Update NO_EXECUTE_PERMISSION documentation
== [7.6.10] 2018-12-13 ==
* Add paths to filenames mentioned in the copyright section in README
* Call real pthread_sigmask instead of its wrapper in start_mark_threads
* Eliminate 'casting signed to bigger unsigned int' CSA warning
* Eliminate 'non-virtual destructor for class with inheritors' CSA warning
* Fix 'collecting from unknown thread' abort in leak-finding mode for Win32
* Fix 'too wide non-owner permissions are set for resource' code defect
* Fix 'undefined reference to GC_incremental' linker error in pthread_start
* Fix GC_VSNPRINTF in cordprnt for DJGPP and MS VC for WinCE
* Fix GC_register_disclaim_proc for leak-finding mode
* Fix a deadlock in write_fault_handler if AO_or is emulated
* Fix comment typos in CMakeLists.txt, backgraph.c, de.c, gcconfig.h
* Fix concurrent bitmap update in GC_dirty
* Fix delete operator redirection if gc_cpp is built as .dll (Cygwin, MinGW)
* Fix hbp overflow in GC_install_counts
* Fix linkage with a system libatomic_ops shared library
* Fix lock assertion violation in get_index if GC_ALWAYS_MULTITHREADED
* Fix marking of finalizer closure object
* Fix marks and hb_n_marks consistency when disclaim returns true
* Fix memory allocation on GCF (Linux/x64)
* Fix missing curses.h in cord/de when compiling manually (MS VC, MinGW)
* Fix start_world not resuming all threads on Darwin
* Fix test_cpp assertion violation in find-leak mode
* Fix tests linkage with internal atomic_ops.o
* Fix unneeded end_stubborn_change in disclaim_test
* Guard against potential buffer overflow in CORD_next and CORD_pos_fetch
* New macro to suppress printing of leaked objects
* Prevent double inclusion of javaxfc.h and private/specific.h
* Reduce scope of local variables in GC_remove_all_threads_but_me
* Refine HIDE_POINTER documentation for the case of the leak-finding mode
* Refine documentation in gc_disclaim.h
* Test marking of finalizer closure object in disclaim_test
* Update documentation about arm64 ABI in gcconfig.h
* Use AO_or in async_set_pht_entry_from_index if available
* Use include gc.h with the angle brackets in the man page synopsis
== [7.6.8] 2018-08-12 ==
* Add cpu, make_as_lib, nothreads options to NT_MAKEFILE
* Add NetBSD/aarch64 and initial RISC-V support
* Adjust formatting of configure help messages and config.h comments
* Avoid multiple 'getcontext failed' warnings if getcontext is broken
* Cleanup BCC Makefile (remove absolute GC paths, fix del cmd, update clean)
* Collapse multiple NT_*_MAKEFILE scripts into a single NT_MAKEFILE
* Do not call GC_dirty_inner unless GC_incremental
* Do not use NULL in gc_inline.h
* Eliminate 'cast between incompatible function types' compiler warning
* Eliminate 'comparing signed and unsigned values' compiler warnings (bcc)
* Eliminate 'condition is always true' cppcheck warning in init_gcj_malloc
* Eliminate 'declaration of var hides global declaration' compiler warning
* Eliminate 'language extension used' Clang warning in gc.h
* Eliminate 'possibly incorrect assignment in CORD_vsprintf' compiler warning
* Eliminate 'ptr arithmetic with NULL' cppcheck warning in alloc_mark_stack
* Eliminate 'scope of var can be reduced' cppcheck warning in pthread_join
* Eliminate 'switch statement contains no case label' compiler warning
* Eliminate 'variable might be uninitialized' warning in win32_start_inner
* Eliminate duplicate clear_mark_bit call when removing disappearing link
* Fast fail on invalid CPU parameter passed to NT_MAKEFILE
* Fix 'collecting from unknown thread' abort in leak-finding mode
* Fix 'pointer arithmetic with NULL' code defect in print_callers
* Fix Borland version in documentation to match that in BCC_MAKEFILE
* Fix comment about inv_sz computation in setup_header
* Fix comments style in configure.ac and Makefile.am
* Fix compilation by digimars.mak (DMC)
* Fix compilation by WCC makefile
* Fix compilation of darwin_stop_world for iOS 8+
* Fix cords for MANUAL_VDB
* Fix dependency on gc_cpp source in BCC_MAKEFILE and NT_MAKEFILE
* Fix GC_is_valid_displacement and GC_is_visible for non-small objects
* Fix gctest in leak-finding mode
* Fix infinite restarting of mark_some when a static root disappeared (Linux)
* Fix large object base computation in PUSH_CONTENTS() if MARK_BIT_PER_OBJ
* Fix mark stack overflow checking in push_selected
* Fix missing GC_dirty calls for GC-allocated objects used internally
* Fix missing GC_dirty invocation from debug_end_stubborn_change
* Fix MSWIN32 macro redefinition (WCC)
* Fix multi-threaded gctest for the case of NTHREADS is set to zero
* Fix new and delete operators definition for DigitalMars compiler
* Fix NT_MAKEFILE for VS 2017
* Fix potential null dereference in GC_CONS
* Fix register_dynamic_libraries on Windows 10
* Fix result computation in n_set_marks
* Fix return type in GC_set_warn_proc API documentation
* Fix tests for GC compiled with MANUAL_VDB
* Fix the build for Emscripten
* Fix typo in comment for CORD_ec_flush_buf prototype
* Fix typos in ChangeLog and generic_malloc
* Fix UNTESTED for multi-threaded API functions in gctest
* Fix VirtualQuery call in case of malloc failure (Win32)
* Install gc.3 man page instead of copying gc.man to doc folder (configure)
* Keep pointer to the start of previous entry in remove_specific_after_fork
* Move de_win compiled resource files to cord/tests
* Never return null by C++ GC allocators and gc_cpp operator new
* Perform thread_suspend in loop as it may be interrupted (Darwin)
* Really abort if failed to read /proc for library registration (Linux)
* Remove code duplication in gcj_malloc and malloc_explicitly_typed
* Remove duplicate local variable in reclaim_block
* Remove information how to send bugs from README.cords file
* Remove libatomic_ops license information
* Remove unused USE_GENERIC macro definition and description
* Suppress 'functions containing switch are not expanded inline' bcc warning
* Suppress 'non-member operator new/delete may not be inline' VC++ warning
* Turn on incremental collection in gctest also if MANUAL_VDB
* Update copyright information in alloc.c, gc.c/h and the documentation
* Update EXTRA_DIST in Makefile, Win32/64 docs after NT_*_MAKEFILE removal
* Update NT_MAKEFILE usage information in README files for Win32 and Win64
* Workaround 'class C does not have a copy constructor' cppcheck warning
* Workaround 'function nested_sp is never used' cppcheck style warning
* Workaround 'opposite expression on both sides of &' cppcheck style warning
* Workaround 'template-id not supported in this context' compiler error (WCC)
== [7.6.6] 2018-04-20 ==
* Define GC_FREEBSD_THREADS and GC_ADD_CALLER macros for kFreeBSD
* Eliminate 'boolean result used in bitwise operation' cppcheck warning
* Eliminate 'there is pointer arithmetic with NULL' cppcheck warning
* Explicitly unblock GC signals on GC initialization
* Fix 'scope of var can be reduced' cppcheck err in enqueue_all_finalizers
* Fix 'undefined reference to __builtin_unwind_init' linker error (ArmCC)
* Fix arguments delimiter in pcr_interface.c (PCR)
* Fix assertion violation in DllMain of win32_threads
* Fix comment for debug_generic_malloc_inner[_ignore_off_page]
* Fix data race during apply_to_each_object(reset_back_edge)
* Fix dbg_mlc.c/o file name in documentation
* Fix gctest with musl libc on s390x
* Fix include gc_gcj.h in thread_local_alloc.c
* Fix man section number (3)
* Fix missing GC_generic_malloc_words_small implementation in new_gc_alloc.h
* Fix missing new-line in ABORT_ARG<n> definition
* Fix missing SIGBUS handler setup for kFreeBSD
* Fix null dereference in print_callers on backtrace_symbols failure
* Fix null pointer dereference in get_private_path_and_zero_file (Symbian)
* Fix the collector hang when it is configured with --enable-gc-debug
* Fix thread_suspend fail for threads registered from key destructor (OS X)
* Fix type of local variables receiving result of PHT_HASH
* Fix typo in AIX macro name
* Fix typo in comment in specific.h
* Fix unbounded heap growth in case of intensive disappearing links usage
* Remove API symbols renaming in WCC_MAKEFILE
* Support Haiku/amd64 and Haiku/x86 hosts
* Support threads for DragonFly in configure
* Workaround 'address of auto-variable returned' cppcheck error
* Workaround gctest hang on kFreeBSD (if thread-local allocations are on)
== [7.6.4] 2018-01-26 ==
* Add note of set_free_space_divisor, set_warn_proc ABI change after gc-7.1
* Change compiler invocation example in gc.man to use dynamic libgc
* Delete dont_ar_* build intermediate files on make clean (Makefile.direct)
* Do not declare dl_iterate_phdr as weak for DragonFly
* Fix 'cords' parallel build in Makefile.direct
* Fix 'undeclared identifier USRSTACK' compiler error on OpenBSD-6.2
* Fix error code in abort message if sem_wait failed in start_world (NetBSD)
* Fix GC allocation mutex in child after a fork
* Fix global operator delete definition for C++14 in gc_cpp
* Fix last_reclaimed..gc_no interval comparison to threshold in unmap_old
* Fix libgc version which was changed in linkage breaking way
* Fix missing EOLn output in threadlibs tool
* Fix threadlibs tool to output '-lpthread' for DragonFly
* Prevent DATASTART redefinition for NaCl
* Remove obsolete advice about linking with _DYNAMIC=0 (Linux)
== [7.6.2] 2017-12-23 ==
* Add assertion that no hb_n_marks underflow occurs
* Add minimal testing of GC_MALLOC_[ATOMIC_]WORDS and GC_CONS (gctest)
* Add minimal testing of GC_set_bit (gctest)
* Add more cases to huge_test to cover sizes close to word-type maximum
* Add testing of new[]/delete[] (test_cpp)
* Adjust AO_HAVE_x check to match AO_fetch_and_add primitive variant used
* Adjust code indentation of calloc_explicitly_typed
* Align local_mark_stack in help_marker explicitly
* Allow custom TRACE_ENTRIES value
* Allow gctest and thread_leak_test with zero NTHREADS
* Avoid data race in finalized_count (gctest)
* Code refactoring of divide-by-HBLKSIZE occurrences
* Code refactoring of huge_test
* Code refactoring of tests/subthread_create regarding AO add primitive
* Compile thread_local_alloc only if multi-threaded build (Makefile.am)
* Delete preprocessor output on make clean (Makefile.direct)
* Disable implicit multi-threaded mode for Win32 to avoid LOCK crash
* Do not disable parallel mark for WRAP_MARK_SOME
* Do not enable mprotect-based incremental mode if unmapping is on (gctest)
* Do not install documentation if configure --disable-docs (new option)
* Do not use tkill (Android)
* Document base and size of objects allocated by finalized_malloc
* Document configure 'syntax error' issue in README
* Eliminate 'address of local variable returned' static analyzer warning
* Eliminate 'array vs singleton' code defect in typed_test (gctest)
* Eliminate 'assigned value never used' CSA warning in min_bytes_allocd
* Eliminate 'boolean result used in bitwise op' cppcheck false warning
* Eliminate 'C-style pointer casting' cppcheck style warnings in test
* Eliminate 'checking if unsigned variable is <0' cppcheck style warning
* Eliminate 'class member var with name also defined in parent' warning
* Eliminate 'comparison is always false' static analyzer warning in finalize
* Eliminate 'Condition 0==datastart always false' cppcheck warning (dyn_load)
* Eliminate 'condition is always true' cppcheck style warning
* Eliminate 'constructor with 1 argument is not explicit' cppcheck warning
* Eliminate 'CORD_*printf is never used' cppcheck style warnings (cordtest)
* Eliminate 'dereference of null' CSA false warning in array_mark_proc
* Eliminate 'function result not used' code defect in GC_mark_local
* Eliminate 'GC_collecting is set but never used' code defect (Win32)
* Eliminate 'GC_record_fault is never used' cppcheck style warning
* Eliminate 'integer shift by a negative amount' code defect in finalize
* Eliminate 'label not used' cppcheck false warnings in GC_mark_X
* Eliminate 'memory leak' code defect for scratch-allocated memory
* Eliminate 'memory leak' code defect in remove_specific
* Eliminate 'non-null arg compared to null' warning in toggleref_add (GCC)
* Eliminate 'non-reentrant function strtok called' cppcheck warning (POSIX)
* Eliminate 'possible integer underflow' code defect (cord-de)
* Eliminate 'potential overflow' static analyzer warning in test
* Eliminate 'printf format specifies type void*' GCC pedantic warnings
* Eliminate 'scope of variable can be reduced' cppcheck warnings
* Eliminate 'suspicious pointer subtraction' cppcheck warning (gc_cpp)
* Eliminate 'this statement may fall through' GCC warnings
* Eliminate 'unnecessary comparison of static strings' cppcheck warning
* Eliminate 'unsafe vsprintf is deprecated' compiler warning
* Eliminate 'unused formal parameter' compiler warnings in C++ code (MS VC)
* Eliminate 'unused variable' compiler warning in remove_all_threads_but_me
* Eliminate 'use of vulnerable sprintf' code defect in de_win test (cord)
* Eliminate 'value exceeds maximum object size' GCC warning in huge_test
* Eliminate 'value of CLOCK_TYPE unknown' cppcheck info message
* Eliminate 'value of DATASTART2 unknown' cppcheck info messages
* Eliminate 'value of GC_PTHREAD_EXIT_ATTRIBUTE unknown' cppcheck messages
* Eliminate 'value of GC_RETURN_ADDR_PARENT unknown' cppcheck info messages
* Eliminate 'value of NEED_FIXUP_POINTER unknown' cppcheck info messages
* Eliminate 'write to memory that was const-qualified' code analyzer warning
* Eliminate all 'scope of variable can be reduced' cppcheck style warnings
* Eliminate CSA warning about incorrect cast applied to HBLK_OBJS
* Eliminate CSA warning about narrowing cast in CleanUp of test_cpp
* Eliminate CSA warning of non-virtual destructor in test_cpp base class
* Eliminate CSA warning of staticroot that can be a local variable (tests)
* Eliminate CSA warning of unmodified non-const static var (disclaim_test)
* Eliminate redundant local variable in register_finalizer
* Eliminate TSan (Thread Sanitizer) warnings in gctest
* Eliminate UBSan warning of overflow during descr subtraction in mark_from
* Eliminate unreachable PROC/DEFAULT_VDB GC_printf calls in gctest main()
* Eliminate unsigned fl_builder_count underflow in mark_thread
* Enable GC_is_tmp_root for all platforms
* Execute more single-threaded GC tests by CMake
* Expand tabs to spaces in de_win.rc (tests)
* Export GC_dump_finalization/regions()
* Export GC_is_tmp_root() and GC_print_trace[_inner]()
* Export GC_print_free_list()
* Fix '32-bit value shift followed by expansion to 64-bit' code defect
* Fix 'GC_written_pages never read' code defect (GWW_VDB)
* Fix 'label cannot be reached' static analyzer warning in disclaim_test
* Fix 'size of tv is unknown' error in brief_async_signal_safe_sleep (musl)
* Fix 'syntax error' reported by cppcheck for mach_dep
* Fix 'unknown type name GC_INNER' compilation error (FreeBSD)
* Fix 'variable assigned a value that is never used' cppcheck style warnings
* Fix 'void pointers in calculations: behavior undefined' cppcheck warning
* Fix assertion violation about disabled cancel in try_to_collect_inner
* Fix atomic_ops build in Makefile.direct for Solaris
* Fix Clang static analyzer warning about not found gc_priv.h in extra files
* Fix compilation error in get_main_stack_base (Emscripten)
* Fix compilation for winpthreads if HANDLE_FORK
* Fix compilation if configured with --enable-werror on OS X
* Fix cord/de build in Makefile.direct (Linux)
* Fix data race in a list referenced by A.aa (gctest)
* Fix data race in collectable_count (gctest)
* Fix data race in do_local_mark when comparing active_count to helper_count
* Fix data race in GC_suspend/resume_thread
* Fix data race in last_stop_count access (suspend_handler_inner)
* Fix data race in make_descriptor when setting explicit_typing_initialized
* Fix data race in mark_thread when updating mark_no
* Fix data race when getting object size in explicitly-typed allocators
* Fix deadlock in GC_suspend_thread
* Fix gctest failure for Darwin if CPPCHECK is defined
* Fix lack of barriers to synchronize memory for suspend_handler
* Fix marking of disclaim-reachable objects in the incremental mode
* Fix message of VDB implementation used if MPROTECT_VDB+GWW_VDB (gctest)
* Fix missing started_thread_while_stopped call from mark_some if GCC/Clang
* Fix null dereference in GC_stack_range_for if not DARWIN_DONT_PARSE_STACK
* Fix page calculation in checksums
* Fix parallel build in Makefile.direct
* Fix test_cpp and c++ parallel build in Makefile.direct
* Fix typo in comment of GC_mark_some
* Fix typos in cdescr.html and README.sgi
* Make GC_INIT optional for clients even if thread-local allocations enabled
* Match uclinux pattern in configure
* Move conditional GC_need_to_lock setting to gc_locks.h (refactoring)
* Move README.QUICK from DOC_FILES to OTHER_FILES in Makefile.direct
* New API function (GC_is_init_called) to check if BDWGC is initialized
* New target (check-cpp) in Makefile.direct
* Prevent abort in register_data_segments for Symbian and Emscripten
* Prevent multiple 'Caught ACCESS_VIOLATION in marker' per collection
* Print realloc_count value in gctest
* Put invariant name in quotes to make mark_state comments clearer
* Refine configure messages when checking for compiler option support
* Remove extraneous semicolons after AC_MSG_WARN (configure)
* Remove page_was_dirty and remove_protection duplicate definitions
* Remove unnecessary type casts of printf arguments to unsigned long
* Remove unused ALIGN_DOUBLE, USE_GENERIC_PUSH_REGS macros (TILE-Gx/Pro)
* Rename 'test' to 'check' target in Makefile.direct
* Replace deprecated rewind to fseek in cordxtra
* Report gcc/clang pedantic warnings (configure)
* Skip thread suspend/resume API testing for Tru64 (OSF1)
* Support AddressSanitizer (Clang/GCC) and MemorySanitizer (Clang)
* Support GC_init (and get_stack_base) from non-main thread on FreeBSD/NetBSD
* Suppress 'tainted string passed to vulnerable operation' false defects
* Suppress 'taking address of label non-standard' GCC/Clang pedantic warning
* Test GC initialization from non-main thread on FreeBSD and NetBSD
* Test GCJ object creation with length-based descriptor (gctest)
* Update comment in finalized_disclaim to match FINALIZER_CLOSURE_FLAG
* Update README regarding make cords with Makefile.direct
* Update README to use autogen.sh on build from the source repository
* Update shared libraries version info to differentiate against v7.4
* Use mprotect instead of mmap in GC_unmap() on Cygwin
* Use same style of include gc.h in documentation
* Workaround '!GC_page_size is always false' cppcheck style warning
* Workaround '#error' cppcheck error messages
* Workaround '32-bit value shift by >31 bits is undefined' cppcheck warnings
* Workaround 'array compared to 0', 'untrusted loop bound' false defects
* Workaround 'bad address arithmetic' static analysis tool false positive
* Workaround 'checking if unsigned value is negative' cppcheck warning
* Workaround 'checking unsigned value is negative' code defect in mark_from
* Workaround 'comparison of identical expressions' false code defects
* Workaround 'Condition 0!=GETENV() is always false' cppcheck style warnings
* Workaround 'condition is always false' cppcheck warning in get_next_stack
* Workaround 'condition is always true' cppcheck style warnings in GC_init
* Workaround 'function is never used' cppcheck style warnings
* Workaround 'insecure libc pseudo-random number generator used' code defect
* Workaround 'int shift by negative amount' false code defect in finalize
* Workaround 'local variable size too big' static analyzer warning
* Workaround 'memory leak: result' cppcheck false error (POSIX)
* Workaround 'null pointer dereference' false positive in push_next_marked
* Workaround 'obsolescent bcopy, bzero called' cppcheck warnings (POSIX)
* Workaround 'obsolescent usleep called' cppcheck warning (POSIX)
* Workaround 'obsolete function alloca() called' cppcheck warnings
* Workaround 'passing untyped NULL to variadic function' cppcheck warning
* Workaround 'pointer used before comparison to null' code defect (pthread)
* Workaround 'possible null pointer dereference' cppcheck warnings
* Workaround 'potential multiplication overflow' code defect in de_win (cord)
* Workaround 'redundant assignment of *result to itself' cppcheck warning
* Workaround 'resource leak' false positives in alloc_MS, bl/envfile_init
* Workaround 'same expression on both sides of ==' cppcheck style warning
* Workaround 'same expression on both sides of OR' cppcheck style warning
* Workaround 'struct member is never used' cppcheck style warnings
* Workaround 'tainted int used as loop bound' static analysis tool warning
* Workaround 'Uninitialized variable' cppcheck errors
* Workaround 'unused variable' cppcheck style warnings
* Workaround 'va_list used before va_start' cppcheck error in cord
* Workaround 'value of macro unknown' cppcheck info messages
* Workaround 'value of REDIRECT_MALLOC/FREE unknown' cppcheck info messages
* Workaround 'value of SIGBUS unknown' cppcheck info messages
* Workaround 'value of WINAPI unknown' cppcheck info messages
* Workaround 'variable hides enumerator with same name' cppcheck warnings
* Workaround 'variable reassigned before old value used' cppcheck warnings
* Workaround 'waiting while holding lock' code defect in stop_world (Unix)
* Workaround false 'uninitialized var use' code defect (initsecondarythread)
Also, includes 7.4.6 changes
== [7.6.0] 2016-08-02 ==
* ABORT_ARGn log details at INFO level (Android)
* Add 'pragma message' to gc.h to detect inconsistent WIN64/_WIN64 (MS VC)
* Add API function to calculate total memory in use by all GC blocks
* Add API function to set/modify GC log file descriptor (Unix)
* Add alloc_size attribute to GC_generic_malloc
* Add alt-stack registration support
* Add assertion for GC_new_kind boolean arguments
* Add assertion on lock status to GC_alloc_large and its callers
* Add build scripts for VC 9 (Win32/64)
* Add build system plumbing for building with -Werror
* Add incremental GC support for Darwin/arm64
* Add profiling callback events to indicate start/end of reclaim phase
* Add support for enumerating the reachable objects in the heap
* Add toggle-ref support (following Mono GC API)
* Added instructions to README.md for building from git
* Adjust code indentation of malloc/calloc/str[n]dup
* Allow fork() automatic handling on Android with API level 21+
* Allow specific TLS attributes for GC_thread_key
* Allow thread local allocations from within pthread TLS destructors
* Allow to force GC_dump_regularly set on at compilation
* Altera NIOS2 support
* Change 'cord' no-argument functions declaration style to ANSI C
* Check DATASTART is less than DATAEND even assertions off
* Check for execinfo.h by configure
* Code refactoring of GC_push_finalizer/thread/typed_structures
* Code refactoring regarding 'data start' definition for FreeBSD
* Consistently set type of DATASTART/END to ptr_t (code refactoring)
* Consistently use int[] type for '_end' symbol (code refactoring)
* Consistently use outermost parentheses for DATASTART/END, STACKBOTTOM
* Define GC_LINUX_THREADS, NO_EXECUTE_PERMISSION in configure for NaCl
* Define ROUNDUP_PAGESIZE, ROUNDUP_GRANULE_SIZE macros (code refactoring)
* Define public GC_GENERIC_OR_SPECIAL_MALLOC and GC_get_kind_and_size
* Do no declare kernel_id field of GC_Thread_Rep for 64-bit Android
* Do not allow SHORT_DBG_HDRS if KEEP_BACK_PTRS or MAKE_BACK_GRAPH
* Do not warn of missing PT_GNU_RELRO segment when custom DSO filter used
* Document GC_register_my_thread returned value
* Dump the block information in CSV format
* Eliminate redundant *flh check for null in GC_allocobj
* Enable atomic-uncollectable in operator new in gc_cpp.h
* Enable build with musl libc
* Enable gc.h inclusion by client without implicit include windows.h (Win32)
* Enable huge_test for Win64 (and LLP64 target)
* Enable thread-local storage for Android Clang
* Enable thread-local storage usage for GC_malloc/calloc_explicitly_typed
* Export GC_push_all_eager, GC_push_finalizer_structures
* Fix 'arg parameter might be clobbered by setjmp' compiler warning
* Fix assertion in GC_mark_from for non-heap regions
* Fix compilation for Android clang/arm with bfd linker
* Fix integer shift undefined behavior in GC_init_explicit_typing
* Fix missing new-line and redundant trailing dot in WARN messages
* Fix STACKBOTTOM for Solaris 11/x86
* Fix tag collision between ENABLE_DISCLAIM and KEEP_BACK_PTRS
* Fix unchecked fork() result in gctest (Unix, Cygwin)
* Fix user-defined signals drop by marker threads
* Fix various typos in comments and documentation
* FreeBSD/arm support improvement
* GC_make_descriptor code refactoring (eliminate two local variables)
* GC_malloc[_atomic] global and thread-local generalization with kind
* GC_malloc_[atomic_]uncollectable generalization
* GC_scratch_alloc code refactoring (and WARN message improvement)
* Group all compact fields of GC_arrays to fit in single page
* Handle load_segs overflow in register_dynlib_callback gracefully
* Harmonize OSX/iOS configuration; enable compiling for iPhone simulator
* Implement event callbacks for profiling (following Mono GC API)
* Implement the finalization extension API
* Implement thread suspend/resume API (Linux threads only)
* Improve documentation for disappearing links in gc.h
* Make heap growth more conservative after GC_gcollect_and_unmap call
* Mark fo_head, finalize_now with a single GC_push_all call (refactoring)
* Move MessageBox invocation code from GC_abort to a separate routine (Win32)
* NaCl/arm initial support; NaCl runtime fixes for other CPUs
* New macro (GC_ALWAYS_MULTITHREADED) to set multi-threaded mode implicitly
* New macro (NO_WINMAIN_ENTRY) to prefer main() instead of WinMain in test
* New macro (REDIRECT_MALLOC_IN_HEADER) to enable source-level redirection
* Process all PT_LOAD segments before PT_GNU_RELRO segments (Glibc)
* Re-implement GC_finalized_malloc using GC_malloc_kind
* Refactoring of android_thread_kill/pthread_kill calls
* Refactoring of GC_Xobjfreelist (use single array to keep free lists)
* Refactoring of thread-local *_freelists (use single array of free lists)
* Refine description in README how to build from source repository
* Refine GC_free_space_divisor comment regarding its initial value
* Reformat code of gc_cpp.cc/h
* Remove 'opp' local variable in GC_malloc_X
* Remove 'sig' argument of GC_suspend_handler_inner (code refactoring)
* Remove code commented out by 'ifdef UNDEFINED'
* Remove hb_large_block field (use 1 extra bit of hb_flags instead)
* Remove obsolete BACKING_STORE_ALIGNMENT/DISPLACEMENT macros for Linux/IA64
* Remove redundant casts in GC_generic_or_special_malloc and similar
* Remove unsupported FreeBSD/ia64 case from gcconfig.h file
* Remove unused GC_gcjdebugobjfreelist
* Rename ATOMIC_UNCOLLECTABLE to GC_ATOMIC_UNCOLLECTABLE
* Replace non-API occurrences of GC_word to word (code refactoring)
* Return GC_UNIMPLEMENTED instead of abort in GC_get_stack_base (OS/2)
* Show WoW64 warning message if running 32-bit on Win64 (enabled by macro)
* Standalone profiling callback for threads suspend/resume
* Support (add machine description for) TILE-Gx and TILEPro targets
* Support build for Android 64-bit (arm64, mips64, x86_64)
* Support FreeBSD/aarch64, FreeBSD/mips
* Support iOS7 64-bit (AArch64) and iOS8+ 32/64-bit (Darwin)
* Support MinGW build in scripts
* Turn off sigsetjmp workaround for Android/x86 starting from NDK r8e
* Use magic header on objects to improve disclaim_test
* Workaround 'sa_sigaction member missing' compiler error (Android/x32)
* Workaround 'unresolved __tls_get_addr' error for Android NDK Clang
* Workaround a bug in winpthreads causing parallel marks deadlock (MinGW)
Also, includes 7.4.4 changes
== [7.4.20] (not released yet) ==
* Fix OS_TYPE and USE_MMAP_ANON definitions for Cygwin/x64
* Fix configure message about 'AIX gcc optimization fix'
Also, includes 7.2o changes
== [7.4.18] 2019-03-01 ==
* Fix 'wrong __data_start/_end pair' error on Android
* Fix thread_info() count argument value (OS X)
Also, includes 7.2n changes
== [7.4.16] 2018-12-13 ==
* Fix 'collecting from unknown thread' abort in leak-finding mode for Win32
* Fix 'undefined reference to GC_incremental' linker error in pthread_start
* Fix GC_register_disclaim_proc for leak-finding mode
* Fix concurrent bitmap update in GC_dirty
* Fix marking of finalizer closure object
* Fix marks and hb_n_marks consistency when disclaim returns true
* Fix missing curses.h in cord/de when compiling manually (MS VC, MinGW)
* Refine documentation in gc_disclaim.h
Also, includes 7.2m changes
== [7.4.14] 2018-08-11 ==
* Cleanup BCC Makefile (remove absolute GC paths, fix del cmd, update clean)
* Do not call GC_dirty_inner unless GC_incremental
* Eliminate 'cast between incompatible function types' compiler warning
* Eliminate 'comparing signed and unsigned values' compiler warnings (bcc)
* Eliminate 'language extension used' Clang warning in gc.h
* Eliminate 'possibly incorrect assignment in CORD_vsprintf' compiler warning
* Eliminate 'switch statement contains no case label' compiler warning
* Eliminate 'variable might be uninitialized' warning in win32_start_inner
* Eliminate duplicate clear_mark_bit call when removing disappearing link
* Fix 'collecting from unknown thread' abort in leak-finding mode
* Fix compilation by digimars.mak (DMC) and by WCC makefile
* Fix cords for MANUAL_VDB
* Fix dependency on gc_cpp source in BCC_MAKEFILE and NT_MAKEFILE
* Fix gctest in leak-finding mode
* Fix missing GC_dirty calls for GC-allocated objects used internally
* Fix missing GC_dirty invocation from debug_end_stubborn_change
* Fix multi-threaded gctest for the case of NTHREADS is set to zero
* Fix typos in ChangeLog and generic_malloc
* Keep pointer to the start of previous entry in remove_specific_after_fork
* New API function (GC_is_init_called) to check if BDWGC is initialized
* Remove code duplication in gcj_malloc and malloc_explicitly_typed
* Remove duplicate local variable in reclaim_block
* Remove libatomic_ops license information from README
* Workaround 'dynamic exception specifications deprecated in C++11' warning
Also, includes 7.2l changes
== [7.4.12] 2018-04-19 ==
* Define GC_FREEBSD_THREADS and GC_ADD_CALLER macros for kFreeBSD
* Fix comment for debug_generic_malloc_inner[_ignore_off_page]
* Fix gctest with musl libc on s390x
* Fix missing new-line in ABORT_ARG<n> definition
* Fix null pointer dereference in get_private_path_and_zero_file (Symbian)
* Fix type of local variables receiving result of PHT_HASH
* Remove API symbols renaming in WCC_MAKEFILE
Also, includes 7.2k changes
== [7.4.10] 2018-01-22 ==
* Fix error code in abort message if sem_wait failed in start_world (NetBSD)
Also, includes 7.2j changes
== [7.4.8] 2017-12-22 ==
* Eliminate 'this statement may fall through' GCC warnings
* Eliminate 'value exceeds maximum object size' GCC warning in huge_test
* Fix data race in make_descriptor when setting explicit_typing_initialized
* Fix marking of disclaim-reachable objects in the incremental mode
* Update comment in finalized_disclaim to match FINALIZER_CLOSURE_FLAG
Also, includes 7.2i changes
== [7.4.6] 2017-10-26 ==