Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Merge fix from HEAD to allow hashing of NaNs.
Trying to has a NaN causes an error. Don't add zero if it's a NaN.
Change uses of _"foo" to (intl:gettext "foo"). This is because slime may get confused with source locations if the reader macros are installed.
Remove _N"" reader macro from docstrings when possible.
Merge intl-branch 2010-03-18 to HEAD. To build, you need to use boot-2010-02-1 as the bootstrap file. You should probably also use the new -P option for build.sh to generate and update the po files while building.
Restart internalization work. This new branch starts with code from the intl-branch on date 2010-02-12 18:00:00+0500. This version works and LANG=en@piglatin bin/lisp works (once the piglatin translation is added).
o Marking more translatable strings that were previously missed. o Regenerated cmucl.pot and cmucl.po's. o Fixed some problems with ko/cmucl.po introduced in last checkin.
Use _N for docstrings.
Mark translatable strings; update cmucl.pot and ko/cmucl.po accordingly.
Add (intl:textdomain "cmucl") to the files to set the textdomain.
code/class.lisp: o Make layout-hash-max the same size as used for 32-bit. code/hash-new.lisp: o Make max-hash be the same size as used for 32-bit. These changes are needed because the index type is still a small fixnum. Have not yet figured out how to make that a big fixnum type yet.
Fix some typos. From Paul Foley.
boot-2009-07.lisp: o Bootstrap file needed to compile this change (because the current shrink-vector derive-type optimizer didn't handle union types). compiler/fndb.lisp: o Make the compiler warn if the result of lisp::shrink-vector is not used. This is a problem because the compiler doesn't know that shrink-vector destructively modifies the length of a vector. As a partial solution, warn the user if the result of shrink-vector is not. code/hash-new.lisp: code/seq.lisp: o Make sure the result of shrink-vector is used, to get rid of a new compiler warning. code/unidata.lisp: o Modify %unicode-full-case so that it doesn't use shrink-vector anymore. compiler/seqtran.lisp: o Fix shrink-vector derive-type optimizer to handle union types. tools/build-unidata.lisp: o Fix typo that someone got in. o Make sure the result of shrink-vector is used, to get rid of a new compiler warning.
Merge Unicode work to trunk. From label unicode-utf16-extfmt-2009-06-11.
o Lots of spelling fixes from Paul. o Add unicode codepoints in final-sigma.lisp (in case the characters there don't show up correctly). o Support partial-fill in READ-INTO-STRING.
Merge from unicode-utf16-branch to get equal hash-table fixes so that name-char works again.
Merge from HEAD to get the SXHASH fix for characters.
code/hash-new.lisp: o Don't convert characters to uppercase when computing SXHASH for characters. The characters aren't EQUAL anyway, so the hash value doesn't have to be the same. general-info/release-20a.txt: o Update
[cmucl-ticket] #16: Read-time hash-table issue MAKE-HASH-TABLE-LOAD-FORM was missing a comma for the value of the :weak-p arg.
Update docstring to note that weak tables can be created only with a test of 'EQ or 'EQL.
Fix problem with cross-compiles needing SXHASH-INSTANCE because TRACE uses EQUAL hash-tables now to keep track of labels/flets. Basically moved the implementation of sxhash-instance from pcl/low.lisp to hash-new.lisp.
Fix bug noted by Chisheng Huang, cmucl-imp, 25 Sep 2007. MAPHASH needs to grab the kv-vector from the hash table for each iteration because the hash table may have been rehashed. (This mostly reverts the code to the previous version, where this bug was introduced.)
code/hash-new.lisp: o Replace the magic value #x80000000 with +eq-based-hash-value+. lisp/gencgc.c: o Replace the magic value 0x80000000 with EQ_BASED_HASH_VALUE. o When freeing the hash entry, we forgot to reset the hash-vector entry to EQ_BASED_HASH_VALUE.
Add support for weak value, key-and-value, and key-or-value hash tables. Use boot-2006-08-1-cross to cross-compile. During worldload, you'll get a restart. Choose the CLOBBER-IT restart. bootfiles/19c/boot-2006-08-1-cross.lisp: o Cross-compile script to mark that a cross-compile is needed. Nothing fancy, just load up the example scripts. code/hash-new.lisp: o Update the allowed values for the weak-p slot of a hash table. o Change hash table printer to print out the test and weak style. o Update MAKE-HASH-TABLE to allow other values for :weak-p keyword arg and set the weak-p slot appropriately. o Produce an error if a weak key, key-and-value, or key-or-value table is created but the test is not EQ or EQL. compiler/ppc/parms.lisp: compiler/sparc/parms.lisp: o Add :KEY, :VALUE, :KEY-AND-VALUE, and :KEY-OR-VALUE symbols to the static symbols because C code needs them. lisp/gencgc.c: o Add necessary support to handle the new hash types.
code/hash-new.lisp: o Add a new slot to the hash-table structure for GC to use for linking weak tables together. (Previously we used the weak-p slot for this. Let's make it explicit, now. Plus, this allows us to use weak-p to indicate other types of weak tables, should they be implemented.) lisp/gencgc.c: o Update defstruct appropriately. o Use the new next-weak-table slot to chain the weak tables together. o Previously we scanned the weak tables in several places in the code. However, this scanning also removed entries. I don't think we want that because later scans could make a key valid. Thus: - Change scav_hash_entries so that it doesn't remove a hash-table entry unless told to. - Add new function to scavenge weak tables without removing a weak entry. - Adjust scan_weak_tables to remove weak entries. NOTE: When building, you'll be asked twice about the hash-table structure changing size. Just select the CLOBBER-IT restart in both cases.
o Print a warning when creating a weak hash table with a test other than 'EQ. o Make the hash-table printer indicate if the hash table is weak.
Instead of using :empty to denote empty hash entries, use 'lisp::empty-hash-entry instead. Not the best solution, since the user can still access this symbol, but being an implementation-specific, non-exported symbol, this seems acceptable. Should try to use the unbound marker instead.
Don't hardwire the :EMPTY symbol all over the code. Element 1 of the key-value vector contains the desired value, so use that wherever we need to. :EMPTY should only be used for initializing the kv vector.
This large checkin merges the double-double float support to HEAD. The merge is from the tag "double-double-irrat-end". The double-double branch is now obsolete. The code should build without double-double support (tested on sparc) as well as build with double-double support (tested also on sparc).
Add basic support for kernel:double-double-float type. The primitive type is there, and basic arithmetic operations work as well as PRINT. But many things do not work: No reader, formatted output, many mixed type arithmetic operations, special functions are just double-float values, coerced to double-double-float. compiler/generic/interr.lisp: o Add new error compiler/generic/new-genesis.lisp: o Dump double-double-float objects (barely tested) compiler/generic/primtype.lisp: o Tell compiler about the new primitive type double-double-float. compiler/generic/vm-fndb.lisp: o Make double-double-float-p a known function. compiler/generic/vm-type.lisp: o Update FLOAT-FORMAT-NAME to include double-double-float compiler/generic/vm-typetran.lisp: o Tell compiler about double-double-float type predicate. compiler/sparc/float.lisp: o Add necessary vops to move double-double-float args, store and load double-double-floats to/from the double-double-stack, double-double-reg moves, box and unbox double-double-floats, move double-double-floats to and from args o Add necessary vops to create a double-double-float and to extract the high and low parts out of a double-double-float. compiler/sparc/parms.lisp: o Define double-double-float-digits compiler/sparc/type-vops.lisp: o Define double-double-float type vop o Adjust number hierarchy to include double-double-float compiler/sparc/vm.lisp: o Define the necessary storage class and storage base for the double-double-reg and double-double-stack. lisp/gencgc.c: o Tell GC about double-double-float objects. lisp/purify.c: o Tell purify about double-double-float objects. code/class.lisp: o Add the new double-double-float class. code/exports.lisp: o Add the necessary symbols to the various packages. (This is important to get right otherwise there's confusion on what symbol really represents double-double-float stuff.) code/float.lisp: o Implement some of the necessary functions to support double-double-float. code/hash-new.lisp: o Hash double-double-floats by xor'ing the hashes of each double-float part. (Is that good enough?) code/irrat.lisp: o Implement the special functions by calling the double-float versions and coercing the result to a double-double-float. This is needed to get type-derivation working, but the precise value isn't that important right now. We'll have to implement them later. code/kernel.lisp: o Make make-double-double-float, double-double-hi, and double-double-lo known functions. code/lispinit.lisp: o Register the :double-double float feature. code/load.lisp: o Add FOP for reading double-double-float values from fasls. (Barely tested, if at all.) code/numbers.lisp: o Implement basic arithmetic operations for double-double-floats. This needs quite a bit of work to clean up, but most things work. code/pred.lisp: o Tell the type system about double-double-float type. code/print.lisp: o Add very rudimentary printing for double-double-float. Basically copied from code written by Richard Fateman, with permission. code/seq.lisp: o Tell coerce how to coerce things to a double-double-float. code/type.lisp: o Tell type system about the new float format double-double-float and how numeric contagion works with double-double-float. code/dump.lisp: o Tell dumper how to dump double-double-float values to a fasl. compiler/float-tran.lisp: o Add appropriate deftransforms to handle conversion of things to double-double-float and from from double-double-float to other float types. o The basic implmentation of double-double-float arithmetic is also here. o Add deftransforms to tell the compiler how to do basic arithmetic and comparisions on double-double-float numbers. compiler/srctran.lisp: o Fix a bug in interval-range-info when :low is 0dd0 and :high is 0. We weren't returning the right value, which confuses interval-div, which caused an infinite loop because we couldn't split the numerator into positive and negative parts. o Tell other parts about double-double-float.
Merge code from main branch of 2005-12-17 to ppc gencgc branch. Still doesn't work of course.
Slight modification so we don't cause underflows when the underflow traps are enabled and rehash-threshold is very small.
For all intents and purposes, pathnames with :version nil and :version :newest are equivalent in CMUCL. src/pathname.lisp: o Make EQUAL compare pathnames such that version nil and :newest are equal. src/hash-new.lisp: o Adjust sxhash to treat :version nil and :newest the same. (Version :newest is hashed as if it were nil.)
Make SXHASH handle PATHNAME objects better by having it hash all the components of a pathname object.
Port lazy sxhash on symbols and one-at-a-time hash to ppc. Use boot6-sxhash to bootstrap this change for ppc.
sxhash is supposed to return the same value for -0.0 and +0.0 since they are arithmetically equal. Do this by adding 0.0 to the number, which does nothing to the number, except convert -0.0 to 0.0.
Implement lazy computation of the symbol hash. The hash is set to zero on creation, and is computed when sxhash is called, which is then cached.
Make the symbol hash slot contain the sxhash of the symbol name instead of a random value, just like on sparc.
Add support for storing the symbol hash into a slot in the symbol itself. Only for sparc currently. Doesn't lazily compute the symbol hash yet. Simple test shows a 5% increase in compilation speed, despite making make-symbol significantly slower. * src/code/hash-new.lisp (internal-sxhash): Use the symbol-hash slot instead of computing the hash value. * src/compiler/generic/new-genesis.lisp (allocate-symbol): Write out the sxhash value of the symbol into the symbol-hash slot. * src/compiler/globaldb.lisp (info-hash): Update to use the symbol hash instead of computing the sxhash. * src/code/symbol.lisp (make-symbol): Compute the symbol hash when creating the symbol. * src/compiler/sparc/cell.lisp ((symbol-hash)): Add vop to extract out the symbol hash from a symbol. * src/compiler/generic/objdef.lisp: Rename the unused slot to hash, so we can make it the symbol hash.
Silently limit the minimum rehash-threshold to 0.1, like SBCL. This prevents division by zero or overflow errors if the rehash-threshold is too small.
Implmement Pierre Mai's idea of adding 2 macros for setting *FEATURES* and *RUNTIME-FEATURES* and setting them appropriately as files are loaded so that recompiling CMUCL produces a result with the same set of features. *RUNTIME-FEATURES* is a subset of *FEATURES* that is written out to internals.h so the C code can be compiled appropriately. A simple bootstrap with boot17 is needed.
Remove the without-gcing stuff that was added erroneously.
Initial port of gencgc to Solaris.
* src/code/hash-new.lisp (internal-sxhash): Don't fail on interpreted functions.
Remove package nicknames USER from COMMON-LISP-USER. Add a new package COMMON-LISP which LISP uses, so that COMMON-LISP no longer has the non-ANSI nickname LISP. To bootstrap, use boot13.lisp as target:bootstrap.lisp with pmai's build scripts, and do a full compile. * src/bootfiles/18e/boot13.lisp: Change for all the package changes. * src/code/exports.lisp: New package common-lisp, which lisp uses. * src/tools/worldload.lisp: * src/tools/setup.lisp: Use cl-user instead of user. Use lisp:: instead of cl::. * src/tools/worldcom.lisp: * src/tools/snapshot-update.lisp: * src/tools/pclcom.lisp: * src/tools/mk-lisp: * src/tools/hemcom.lisp: * src/tools/config.lisp: * src/tools/comcom.lisp: * src/tools/clxcom.lisp: * src/tools/clmcom.lisp: * src/pcl/defsys.lisp: * src/motif/lisp/initial.lisp: * src/interface/initial.lisp: * src/hemlock/lispmode.lisp (setup-lisp-mode): Use cl-user instead of user. * src/code/save.lisp (assert-user-package): * src/code/print.lisp (%with-standard-io-syntax): Find cl-user package instead of user. * src/code/package.lisp (package-locks-init): Add lisp. (package-init): Don't add user nickname to cl-user. * src/code/ntrace.lisp (*trace-encapsulate-package-names*): Add common-lisp. * src/code/hash.lisp (toplevel): * src/code/hash-new.lisp (toplevel): Use in-package :lisp instead of :common-lisp. * src/code/float-trap.lisp (sigfpe-handler): Don't qualify floating-point-inexact with ext:. * src/pcl/simple-streams/strategy.lisp (sc): * src/pcl/simple-streams/null.lisp (null-read-char): * src/pcl/simple-streams/internal.lisp (allocate-buffer) (free-buffer): * src/pcl/simple-streams/impl.lisp (%check, %read-line) (%peek-char, %read-byte): * src/pcl/simple-streams/file.lisp (open-file-stream) (device-close): * src/pcl/simple-streams/classes.lisp (simple-stream) (device-close): * src/pcl/macros.lisp (toplevel): * src/pcl/braid.lisp (lisp::sxhash-instance): * src/pcl/env.lisp (toplevel): * src/compiler/generic/objdef.lisp (symbol-hash): * src/code/stream.lisp (read-sequence, write-sequence): * src/code/macros.lisp (defmacro, deftype): * src/code/eval.lisp (interpreted-function): * src/code/defstruct.lisp (defstruct): * src/code/debug.lisp (debug-eval-print): Use lisp:: instead of cl::.
* src/code/hash-new.lisp (internal-sxhash): Treat conditions like structures.
* code/hash-new.lisp (make-hash-table): Put warning about creating weak tables in #-gencgc. * lisp/gencgc.c (gc_assert): Ensure macro expansion is always a C statement. (struct hash_table): New struct. (HASH_TABLE_SIZE, EQ_HASH): New macros. (weak_hash_tables): New variable. (survives_gc, u32_vector, free_hash_entry, record_for_rehashing) (scav_hash_entries, scav_weak_entries, scan_weak_tables) (scav_hash_vector): New functions. (scav_vector): Removed. (scav_weak_pointer, trans_weak_pointer, scan_weak_pointers): Cleaned up. (gc_init_tables): Use scav_hash_vector instead of scav_vector. (garbage_collect_generation): Call scan_weak_tables. (everywhere): Add casts, change format strings, etc. to placate the compiler. * lisp/FreeBSD-os.h: Fix a function prototype.
* bootfiles/18e/boot.lisp: Bootstrap files for the lisp:class = pcl:class part. To get it booted from 18e, cross-compile using boot1.lisp as bootstrap.lisp in pmai's build scripts, then do a normal compile with boot2.lisp as bootstrap.lisp with the resulting Lisp. * code/byte-interp.lisp, code/defstruct.lisp, code/describe.lisp: * code/error.lisp, code/exports.lisp, code/hash-new.lisp: * code/hash.lisp, code/macros.lisp, code/misc.lisp: * code/package.lisp, code/pred.lisp, code/sharpm.lisp, code/type.lisp: * compiler/dump.lisp, compiler/fndb.lisp, compiler/globaldb.lisp: * compiler/proclaim.lisp, compiler/typetran.lisp, compiler/xref.lisp: * compiler/generic/primtype.lisp, compiler/generic/vm-type.lisp: Changes for to use kernel::class etc. * code/class.lisp (toplevel): Shadow class, built-in-class etc. (class): Give it conc-name %class-. (toplevel) [#+bootstrap-lisp-class=pcl-class]: Define old accessors. (everywhere): Use new class accessors. * compiler/generic/vm-fndb.lisp (%make-instance): Change from unsafe to flushable and movable. * code/ntrace.lisp (expand-trace, untrace): Changes for method tracing. * code/profile.lisp (profile, profile-all, unprofile): Method profiling. * pcl/*.text, pcl/bench.lisp, pcl/extensions.lisp: * pcl/fast-init.lisp, pcl/precom1.lisp, pcl/precom4.lisp: * pcl/structure-class.lisp, pcl/user-instances.lisp: Removed. * tools/pclcom.lisp: Changes for my PCL and lisp:class = pcl::class.
* code/defstruct.lisp, code/describe.lisp, code/error.lisp: * code/exports.lisp, code/hash-new.lisp, code/hash.lisp * code/macros.lisp, code/misc.lisp, code/package.lisp * code/pred.lisp, code/sharpm.lisp, code/type.lisp: Changes for lisp:class = pcl:class. * compiler/dump.lisp, compiler/fndb.lisp, compiler/globaldb.lisp: * compiler/ir1tran.lisp, compiler/ir1util.lisp: * compiler/node.lisp, compiler/proclaim.lisp, compiler/typetran.lisp: * compiler/xref.lisp, compiler/generic/primtype.lisp: * compiler/generic/vm-type.lisp: Likewise. * code/class.lisp (toplevel): Shadow class, built-in-class etc. (class): Give it conc-name %class-. (toplevel) [#-lisp-class-is-pcl-class]: Define old accessors. (everywhere): Use new class accessors. * code/byte-interp.lisp (load-type-predicate): Use kernel::structure-class instead of structure-class.
Merge with HEAD.
* code/hash-new.lisp (internal-equalp-hash, internal-sxhash): Treat NIL as a symbol, to produce the same result as the DEFTRANSFORM for sxhash/symbol in c:generic/vm-tran.lisp.
*** empty log message ***
Entomotomy Bug: sxhash-on-pcl-instances-returns-42 This commit is a slight rewrite of the previously committed fix, which sxhash-instance work even when handed non-PCL instances and funcallable-instances, while enabling the use of stored hash-codes for all PCL funcallable-instances.
Entomotomy Bug: sxhash-on-pcl-instances-returns-42 Committed a slightly reworked patch by Gerd Moellmann that introduces new hash-code slots into (funcallable-)standard-instances, which get initialized to persistent, sequential numbers upon instance creation, thus providing better sxhash/equal hashing.
Checked in Brian Spilsbury's experimental Unicode, locales, and dialect support patchset. This lives on its own branch, so that people can play with it and tweak it, without disturbing 18e release engineering on the main branch. Bootstrapping has only been tried on LINKAGE_TABLE x86/Linux builds. A working cross-compile script is checked in under bootfiles/19a/boot1-cross-unicode.lisp. The script still leaves you with some interactive errors, on the cross compile, which you should answer with 2. See the mailing list for more information.
From Eric Marsden: * (pcl:class-precedence-list (find-class 'null)) should have symbol occurring before list, as per CLHS. * minor changes to certain error conditions: eg trying to set DEFAULT-DIRECTORY to a non-existent directory should raise a condition of type FILE-ERROR. (Some of these changes are from Alexey Dejneka, via SBCL). * cleanup of some Hemlock-related symbols that shouldn't be exported when :no-hemlock is defined.
Mega commit to bring RELENG_18 branch in sync with HEAD in preparation for release tagging 18d.
From Tim Moore internal-sxhash doesn't deal correctly with strings that have fill pointers; consequently, equal hash tables don't work correctly either. >From 18c: *(defvar foo (make-array 32 :element-type 'base-char :adjustable t :fill-pointer 7)) FOO * (setf (subseq foo 0) "typedef") "typedef" * (sxhash foo) 182883518 * (sxhash "typedef") 194663162 * (defvar h (make-hash-table :test #'equal)) H * (setf (gethash foo h) 'bar) BAR * (gethash "typedef" h) NIL NIL Attached is a fix. Tim
Send the warning about weak-p hash table to *debug-io* not *standard-output*; from Eric Marsden.
Send the warning about weak-p hash table to *debug-io* not *standard-output*; from Eric Marsden.
Reworking of the values-type system to overcome a number of inconsistencies causing problems: o Redefine coerce-to-values to convert a single value type into (values type), rather than the former definition (values type &rest t). A single value type such as fixnum is now equivalent to (values fixnum). o Now when the compiler makes assertions for the first value of continuations that may be generating multiple values it asserts the type as (values type &rest t), or as (value &optional type &rest t) if it is not sure that the continuation does generate a value. o Enhance the type check generation to better handle the now common values types with optional and rest arguments. Add the new function Values-types-asserted which converts asserted optional and rest arguments to required arguments that have been proven to be delivered, Thus an assertion such as (values &optional fixnum &rest t) will generate a fixnum type check if the proven type if (values t). o The compiler is now far more likely to pickup attempts to use an assertion to select a subset of values. For example (the (values fixnum) (values x y)) will generated a compiler warning. o Update single values type assertions where appropriate to clarify that the received values may be optional or that multiple values may be received. For example, a macro argument which had been asserted to be a list via (the list ,...) would now be asserted to be (the (values &optional list &rest t)) etc. o Have the IR1 translator for THE convert single value types into (values &optional type &rest t) so that code such as (the fixnum (values x y)) will still work acceptably. This does not restrict the possible type assertions as the values types may be used and are not modified.
Reworking of the values-type system to overcome a number of inconsistencies causing problems: o Redefine coerce-to-values to convert a single value type into (values type), rather than the former definition (values type &rest t). A single value type such as fixnum is now equivalent to (values fixnum). Values-type-union and values-type-intersection will canonicalise values types with a single value such as (values fixnum) back to a single value type such as fixnum. o Now when the compiler makes assertions for the first value of continuations that may be generating multiple values it asserts the type as (values type &rest t), or as (value &optional type &rest t) if it is not sure that the continuation does generate a value. o Enhance the type check generation to better handle the now common values types with optional and rest arguments. Add the new function Values-types-asserted which converts asserted optional and rest arguments to required arguments that have been proven to be delivered, Thus an assertion such as (values &optional fixnum &rest t) will generate a fixnum type check if the proven type if (values t). o The compiler is now far more likely to pickup attempts to use an assertion to select a subset of values. For example (the (values fixnum) (values x y)) will generated a compiler warning. o Update single values type assertions where appropriate to clarify that the received values may be optional or that multiple values may be received. For example, a macro argument which had been asserted to be a list via (the list ,...) would now be asserted to be (the (values &optional list &rest t)) etc. o Have the IR1 translator for THE convert single value types into (values &optional type &rest t) so that code such as (the fixnum (values x y)) will still work acceptably. This does not restrict the possible type assertions as the values types may be used and are not modified.
Clarify type assertions on forms returning multiple values, such as truncate, to use a values type assertion rather than a single non-values type assertion.
When asserting a single value from truncate etc, rather than using a single value type assertion following values '(the index (values ...)), use a multiple values types assertion '(the (values index t) ...), which is simpler for the compiler.
Clarify an assertion on the result of round, firstly receiving the only the first value.
This set of revisions brings the RELENG_18 branch up to HEAD in preparation for an 18c release.
The equalp-hash algorithms for vectors and arrays differs because the fill-pointer must be respected for vectors but was being ignored for some vector types.
Ensure that equal-hash is consistent across the various vector types; string and simple-vectors were giving a different hash to the other vector types.
Modify the sxhash-bits-byte to be 29 bits wide rather than just 23 bits. It is typically better not the throw away bits of the key, and the hash may be a 29 bit unsigned fixnum. Similarly modify sxmash to use all 29 bits rather than just 26 bits.
Special case bit vectors within sxhash, returning a useful hash for them rather than a hash of 1.
Add support for EQUALP hash tables; by Douglas Crosher based on the work of William H. Newman and Cadabra Inc. Special case characters within sxhash returning the character code rather than returning a constant, as per the new equalp-hash. Declare hash-table-count and hash-table-size inline so they compile to inline slot accesses.
Fix the handling of fixnums in sxhash; the fixnum hash must be consistent with the integer sxhash transform.
Modify the sxhash double-float and long-float functions to allow them to be compiled to fast native code, and to make use of the sign bit. Fix and update the sxhash double-float transform to be consistent. Add a transform for the sxhash of long-floats.
Minor documentation fixes.
Add an type declaration plus some documentation fixes to the with-hash-table-iterator macro, giving improved performance; from Bill Newman.
Fix a bug in remhash which was often incorrectly returning False even when an entry was found in which case it should return True. Bug spotted by Bill Newman.
Fix a bug in remhash which was often incorrectly returning False even when an entry was found in which case it should return True. Bug spotted by Bill Newman.
This (huge) revision brings the RELENG_18 branch up to the current HEAD. Note code/unix-glib2.lisp not yet included -- not sure it is ready to go.
Re-write of the hash table algorithms to improve the memory efficiency and solve problems with rehashing during hash traversal.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|