📄 readme.changes
字号:
- Made uncollectable allocations bypass black-listing, as they should.- Fixed a bug in typed_test in test.c that could cause (legitimate) GC crashes.- Fixed some potential synchronization problems in finalize.c- Fixed a real locking problem in typd_mlc.c.- Worked around an AIX 3.2 compiler feature that results in out of bounds memory references.- Partially worked around an IRIX5.2 beta problem (which may or may not persist to the final release).- Fixed a bug in the heap integrity checking code that could result in explicitly deallocated objects being identified as smashed. Fixed a bug in the dbg_mlc stack saving code that caused old argument pointers to be considered live.- Fixed a bug in CORD_ncmp (and hence CORD_str).- Repaired the OS2 port, which had suffered from bit rot in 4.0. Worked around what appears to be CSet/2 V1.0 optimizer bug.- Fixed a Makefile bug for target "c++".Since version 4.1:- Multiple bug fixes/workarounds in the Solaris threads version. (It occasionally failed to locate some register contents for marking. It also turns out that thr_suspend and friends are unreliable in Solaris 2.3. Dirty bit reads appear to be unreliable under some weird circumstances. My stack marking code contained a serious performance bug. The new code is extremely defensive, and has not failed in several cpu hours of testing. But no guarantees ...)- Added MacOS support (thanks to Patrick Beard.)- Fixed several syntactic bugs in gc_c++.h and friends. (These didn't bother g++, but did bother most other compilers.) Fixed gc_c++.h finalization interface. (It didn't.)- 64 bit alignment for allocated objects was not guaranteed in a few cases in which it should have been.- Added GC_malloc_atomic_ignore_off_page.- Added GC_collect_a_little.- Added some prototypes to gc.h.- Some other minor bug fixes (notably in Makefile).- Fixed OS/2 / EMX port (thanks to Ari Huttunen).- Fixed AmigaDOS port. (thanks to Michel Schinz).- Fixed the DATASTART definition under Solaris. There was a 1 in 16K chance of the collector missing the first 64K of static data (and thus crashing).- Fixed some blatant anachronisms in the README file.- Fixed PCR-Makefile for upcoming PPCR release.Since version 4.2:- Fixed SPARC alignment problem with GC_DEBUG.- Fixed Solaris threads /proc workaround. The real problem was an interaction with mprotect.- Incorporated fix from Patrick Beard for gc_c++.h (now gc_cpp.h).- Slightly improved allocator space utilization by fixing the GC_size_map mechanism.- Integrated some Sony News and MIPS RISCos 4.51 patches. (Thanks to Nobuyuki Hikichi of Software Research Associates, Inc. Japan)- Fixed HP_PA alignment problem. (Thanks to xjam@cork.cs.berkeley.edu.)- Added GC_same_obj and friends. Changed GC_base to return 0 for pointers past the end of large objects. Improved GC_base performance with ALL_INTERIOR_POINTERS on machines with a slow integer mod operation. Added GC_PTR_ADD, GC_PTR_STORE, etc. to prepare for preprocessor.- changed the default on most UNIX machines to be that signals are not disabled during critical GC operations. This is still ANSI-conforming, though somewhat dangerous in the presence of signal handlers. But the performance cost of the alternative is sometimes problematic. Can be changed back with a minor Makefile edit.- renamed IS_STRING in gc.h, to CORD_IS_STRING, thus following my own naming convention. Added the function CORD_to_const_char_star.- Fixed a gross bug in GC_finalize. Symptom: occasional address faults in that function. (Thanks to Anselm Baird-Smith (Anselm.BairdSmith@inria.fr)- Added port to ICL DRS6000 running DRS/NX. Restructured things a bit to factor out common code, and remove obsolete code. Collector should now run under SUNOS5 with either mprotect or /proc dirty bits. (Thanks to Douglas Steel (doug@wg.icl.co.uk)).- More bug fixes and workarounds for Solaris 2.X. (These were mostly related to putting the collector in a dynamic library, which didn't really work before. Also SOLARIS_THREADS didn't interact well with dl_open.) Thanks to btlewis@eng.sun.com.- Fixed a serious performance bug on the DEC Alpha. The text segment was getting registered as part of the root set. (Amazingly, the result was still fast enough that the bug was not conspicuous.) The fix works on OSF/1, version 1.3. Hopefully it also works on other versions of OSF/1 ...- Fixed a bug in GC_clear_roots.- Fixed a bug in GC_generic_malloc_words_small that broke gc_inl.h. (Reported by Antoine de Maricourt. I broke it in trying to tweak the Mac port.) - Fixed some problems with cord/de under Linux.- Fixed some cord problems, notably with CORD_riter4.- Added DG/UX port. Thanks to Ben A. Mesander (ben@piglet.cr.usgs.gov)- Added finalization registration routines with weaker ordering constraints. (This is necessary for C++ finalization with multiple inheritance, since the compiler often adds self-cycles.)- Filled the holes in the SCO port. (Thanks to Michael Arnoldus <chime@proinf.dk>.)- John Ellis' additions to the C++ support: From John:* I completely rewrote the documentation in the interface gc_c++.h(later renamed gc_cpp.h). I've tried to make it both clearer and moreprecise.* The definition of accessibility now ignores pointers from anfinalizable object (an object with a clean-up function) to itself.This allows objects with virtual base classes to be finalizable by thecollector. Compilers typically implement virtual base classes usingpointers from an object to itself, which under the old definition ofaccessibility prevented objects with virtual base classes from everbeing collected or finalized.* gc_cleanup now includes gc as a virtual base. This was enabled bythe change in the definition of accessibility.* I added support for operator new[]. Since most (all?) compilersdon't yet support operator new[], it is conditionalized on-DOPERATOR_NEW_ARRAY. The code is untested, but its trivial and lookscorrect.* The test program test_gc_c++ (later renamed test_cpp.cc)tries to test for the C++-specific functionality not tested by theother programs.- Added <unistd.h> include to misc.c. (Needed for ppcr.)- Added PowerMac port. (Thanks to Patrick Beard again.)- Fixed "srcdir"-related Makefile problems. Changed things so that all externally visible include files always appear in the include subdirectory of the source. Made gc.h directly includable from C++ code. (These were at Per Bothner's suggestion.)- Changed Intel code to also mark from ebp (Kevin Warne's suggestion).- Renamed C++ related files so they could live in a FAT file system. (Charles Fiterman's suggestion.)- Changed Windows NT Makefile to include C++ support in gc.lib. Added C++ test as Makefile target. Since version 4.3: - ASM_CLEAR_CODE was erroneously defined for HP PA machines, resulting in a compile error. - Fixed OS/2 Makefile to create a library. (Thanks to Mark Boulter (mboulter@vnet.ibm.com)). - Gc_cleanup objects didn't work if they were created on the stack. Fixed. - One copy of Gc_cpp.h in the distribution was out of synch, and failed to document some known compiler problems with explicit destructor invocation. Partially fixed. There are probably other compilers on which gc_cleanup is miscompiled. - Fixed Makefile to pass C compiler flags to C++ compiler. - Added Mac fixes. - Fixed os_dep.c to work around what appears to be a new and different VirtualQuery bug under newer versions of win32S. - GC_non_gc_bytes was not correctly maintained by GC_free. Fixed. Thanks to James Clark (jjc@jclark.com). - Added GC_set_max_heap_size. - Changed allocation code to ignore blacklisting if it is preventing use of a very large block of memory. This has the advantage that naive code allocating very large objects is much more likely to work. The downside is you might no longer find out that such code should really use GC_malloc_ignore_off_page. - Changed GC_printf under win32 to close and reopen the file between calls. FAT file systems otherwise make the log file useless for debugging. - Added GC_try_to_collect and GC_get_bytes_since_gc. These allow starting an abortable collection during idle times. This facility does not require special OS support. (Thanks to Michael Spertus of Geodesic Systems for suggesting this. It was actually an easy addition. Kumar Srikantan previously added a similar facility to a now ancient version of the collector. At the time this was much harder, and the result was less convincing.) - Added some support for the Borland development environment. (Thanks to John Ellis and Michael Spertus.) - Removed a misfeature from checksums.c that caused unexpected heap growth. (Thanks to Scott Schwartz.) - Changed finalize.c to call WARN if it encounters a finalization cycle. WARN is defined in gc_priv.h to write a message, usually to stdout. In many environments, this may be inappropriate. - Renamed NO_PARAMS in gc.h to GC_NO_PARAMS, thus adhering to my own naming convention. - Added GC_set_warn_proc to intercept warnings. - Fixed Amiga port. (Thanks to Michel Schinz (schinz@alphanet.ch).) - Fixed a bug in mark.c that could result in an access to unmapped memory from GC_mark_from_mark_stack on machines with unaligned pointers. - Fixed a win32 specific performance bug that could result in scanning of objects allocated with the system malloc. - Added REDIRECT_MALLOC.Since version 4.4: - Fixed many minor and one major README bugs. (Thanks to Franklin Chen (chen@adi.com) for pointing out many of them.) - Fixed ALPHA/OSF/1 dynamic library support. (Thanks to Jonathan Bachrach (jonathan@harlequin.com)). - Added incremental GC support (MPROTECT_VDB) for Linux (with some help from Bruno Haible). - Altered SPARC recognition tests in gc.h and config.h (mostly as suggested by Fergus Henderson). - Added basic incremental GC support for win32, as implemented by Windows NT and Windows 95. GC_enable_incremental is a noop under win32s, which doesn't implement enough of the VM interface. - Added -DLARGE_CONFIG. - Fixed GC_..._ignore_off_page to also function without -DALL_INTERIOR_POINTERS. - (Hopefully) fixed RS/6000 port. (Only the test was broken.) - Fixed a performance bug in the nonincremental collector running on machines supporting incremental collection with MPROTECT_VDB (e.g. SunOS 4, DEC AXP). This turned into a correctness bug under win32s with win32 incremental collection. (Not all memory protection was disabled.) - Fixed some ppcr related bit rot. - Caused dynamic libraries to be unregistered before reregistering. The old way turned out to be a performance bug on some machines. - GC_root_size was not properly maintained under MSWIN32. - Added -DNO_DEBUGGING and GC_dump. - Fixed a couple of bugs arising with SOLARIS_THREADS + REDIRECT_MALLOC. - Added NetBSD/M68K port. (Thanks to Peter Seebach <seebs@taniemarie.solon.com>.) - Fixed a serious realloc bug. For certain object sizes, the collector wouldn't scan the expanded part of the object. (Thanks to Clay Spence (cds@peanut.sarnoff.com) for noticing the problem, and helping me to track it down.) Since version 4.5: - Added Linux ELF support. (Thanks to Arrigo Triulzi <arrigo@ic.ac.uk>.) - GC_base crashed if it was called before any other GC_ routines. This could happen if a gc_cleanup object was allocated outside the heap before any heap allocation. - The heap expansion heuristic was not stable if all objects had finalization enabled. Fixed finalize.c to count memory in finalization queue and avoid explicit deallocation. Changed alloc.c to also consider this count. (This is still not recommended. It's expensive if nothing else.) Thanks to John Ellis for pointing this out. - GC_malloc_uncollectable(0) was broken. Thanks to Phong Vo for pointing this out. - The collector didn't compile under Linux 1.3.X. (Thanks to Fred Gilham for pointing this out.) The current workaround is ugly, but expected to be temporary. - Fixed a formatting problem for SPARC stack traces.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -