summary refs log tree commit diff stats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* Fix typosFederico Ceratto2015-02-1520-44/+44
|
* Merge pull request #2133 from def-/cleanupAndreas Rumpf2015-02-151-2/+3
|\ | | | | Cleanup
| * Fix documentation a bit in unicodedef2015-02-141-2/+3
| |
* | Merge pull request #2115 from oderwat/no-pthread-on-osxAndreas Rumpf2015-02-151-1/+3
|\ \ | | | | | | Disable -pthread for compiler/linker on OSX
| * | Disable -pthread for linker on OSXHans Raaf2015-02-131-1/+3
| | | | | | | | | | | | | | | The -pthread is not needed on Darwin/OS X and the Apple compilers give a warning about this if you use --threads:on with the Nim compiler.
* | | Merge pull request #2132 from fowlmouth/patch-2Andreas Rumpf2015-02-151-1/+1
|\ \ \ | | | | | | | | Patch 2
| * | | Update basic3d.nimBillingsly Wetherfordshire2015-02-141-1/+1
| | |/ | |/| | | | fix rst error
* | | Merge pull request #2122 from c-blake/develAndreas Rumpf2015-02-152-74/+158
|\ \ \ | | | | | | | | Update collections/tables.nim as with sets.nim
| * | | assignment -> shallowCopy for efficiency.Charles Blake2015-02-132-2/+2
| | | |
| * | | Merge ../Nim into devel; track ttables.nim delete.Charles Blake2015-02-1312-121/+458
| |\| |
| * | | Update doc comments to mention rightSize.Charles Blake2015-02-132-10/+10
| | | |
| * | | Oops - missed updates to a few later rawGet()s.Charles Blake2015-02-121-4/+8
| | | |
| * | | Add hcode,rightSize,rawGetKnownHC. Fix inf loop.Charles Blake2015-02-121-60/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make similar changes to those made in sets.nim, including hcode, rightSize rawGet/rawGetKnownHC result protocol, nextTry probe sequence to be the cache friendlier h=h+1 which in turn allows supporting changing deletion to fix the infinite loop bug with local rehashing which in turn has desirable properties of graceful table aging when deletes do happen and also making insert-only usage patterns no longer pay any time/space cost to check deleted status. Unlike collections.sets, this module has add() for duplicate key inserts and a 3rd type of table, CountTable. The first wrinkle is handled by introducing a rawGetDeep for unconditionally adding entries along collision chains. This point of CountTable seems to be space efficiency at 2 items per slot. These changes retain that by keeping the val==0 => EMPTY rule and not caching hash codes. putImpl is expanded in-place for CountTable since the new putImpl() is too different. { Depending on table size relative to caches & key expense, regular Table[A,B] may become faster than CountTable, especially if the basic count update could be something like inc(mGetOrPut(t, key, 0)). } Unit tests pass, but in this module those are much more of just a demo than probing for bugs. Should exercise/test this a little more before merging.
* | | | Fixed non exhaustive case by adding elseHans Raaf2015-02-151-1/+1
| |/ / |/| |
* | | fixes #2116Araq2015-02-131-11/+4
| | |
* | | fixes os.moveFile on WindowsAraq2015-02-132-2/+18
| |/ |/|
* | Merge pull request #2097 from jferg2010/develAndreas Rumpf2015-02-121-1/+328
|\ \ | | | | | | Date/time parsing
| * | Date/time parsing - removed comments from assertJeff2015-02-111-6/+6
| | |
| * | Date/time parsing with changes suggested by AraqJeff2015-02-111-334/+283
| | |
| * | Date/time parsing with minor changes requested by Dom96Jeff2015-02-091-32/+29
| | |
| * | Date/time parsingJeff2015-02-091-7/+388
| | |
* | | Merge pull request #2095 from def-/rdstdin-winfixAndreas Rumpf2015-02-121-6/+12
|\ \ \ | | | | | | | | Fix readPasswordFromStdin for Windows
| * | | Add a new line after readPasswordFromStdin, add resultdef2015-02-091-5/+11
| | | |
| * | | Fix readPasswordFromStdin for Windowsdef2015-02-081-1/+1
| | | |
* | | | Merge pull request #2111 from lyro/fix-2110Andreas Rumpf2015-02-121-2/+2
|\ \ \ \ | | | | | | | | | | fix conditions for int size in 'math.nextPowerOfTwo' #2110
| * | | | fix conditions for int size in 'math.nextPowerOfTwo' #2110Frank Fischer2015-02-121-2/+2
| | |_|/ | |/| |
* | | | made a test greenAraq2015-02-121-1/+1
| | | |
* | | | fixed minor bugs; cleaned up testsAraq2015-02-128-98/+93
|/ / /
* | | Merge pull request #2108 from oderwat/patch-1Andreas Rumpf2015-02-122-3/+3
|\ \ \ | | | | | | | | Fixing dylib name for OSX
| * | | Corrected warnings about deprecated namesHans Raaf2015-02-111-2/+2
| | | | | | | | | | | | | | | | I got warning about deprecated names here. I also know that other names probably need to change (T/P prefixes) but I am unsure about the exact rules. I may do that later if you like.
| * | | Fixing dylib name for OSXHans Raaf2015-02-111-1/+1
| | | | | | | | | | | | | | | | I don't know if the (15|16...) is supposed to work on OSX. I have "libmysqlclient.18.dylib" in my lib directory and get "could not load: libmysqlclient.(15|16|17[18).dylib" on execution. After removing the pattern I can run my little example program and it works as "libmysqlclient.dylib" is a softlink to the current version anyway.
* | | | Merge pull request #2053 from reactormonk/message-for-koch-tempAndreas Rumpf2015-02-121-0/+14
|\ \ \ \ | |/ / / |/| | | report how to create a compiler stacktrace #1280
| * | | report how to create a compiler stacktrace #1280Simon Hafner2015-02-011-0/+14
| | | |
* | | | Merge pull request #2078 from c-blake/develAndreas Rumpf2015-02-111-44/+112
|\ \ \ \ | | | | | | | | | | Add hcode. Re-factor rawGet. Fix infinite loop.
| * | | | Address Andreas' complaint about code duplication.Charles Blake2015-02-071-2/+3
| | | | |
| * | | | Merge /home/cb/pkg/nim/Nim into develCharles Blake2015-02-078-10/+381
| |\ \ \ \ | | | | | | | | | | | | | | | | | | pull from master
| * | | | | Fix unnecessarily slow set building from openArray.Charles Blake2015-02-071-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The estimation of the initialSize as simply array len + 10 was too small for for all but the smallest sets. It would not elide/skip one final enlarge(). That last one is actually always the most expensive enlarge(). Indeed, in a series where one to start from tiny and build up the table..that last one is about 50% of all the enlarging time in general. So, this simple and reasonable optimization (compared to just starting at 64) was only helping about half as much as it could. Introduce a rightSize() proc to be the inverse to mustRehash(). Export it to clients since pre-sizing is externally useful in set construction and the current mustRehash rules are opaque and beyond the control of clients. Also add test module logic to check that rightSize() and mustRehash() are inverses in the appropriate sense..not really in a block/assertion throwing unit test since this is a peformance nice-to-have issue rather than about basic correctness. (Also, fix a too vs. two typo in doc comment.)
| * | | | | Merge /home/cb/pkg/nim/Nim into develCharles Blake2015-02-075-12/+24
| |\ \ \ \ \
| * | | | | | Add hcode. Re-factor rawGet. Fix infinite loop.Charles Blake2015-02-061-41/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace state enum with a cached hash code which has the same memory overhead and locality as the enum, but can really speed things up with non-integer-like keys (keys for which either hash() or == take more than couple cycles, or where the key data is "indirect" and might incur another cache miss). To function as both empty/filled state and a hash code cache, it only needs to be ensured that hash codes are non-zero for any real key. That is done at the one place in the whole file hash() is called. Keep convention clear via isFilled() & isEmpty(). An isDeleted state will no longer be necessary as per below excl/inf loop fix. Since some use sites know hc and some do not, re-factor rawGet into two forms - one with known hash code and one with an unknown HC that returns it. Both forms still return <0 on missing, but returns the much more informative "-1 - index". That return can be quickly inverted by -1 - result to recover the index where insert should happen, provided no modifications are made to the table in the meantime. This protocol retains the prior <0 interface and also makes it easy to avoid unnecessary duplicate search work in procs like containsOrInclImpl (which formerly searched in the initial get and AGAIN in rawInsert). Strip the searching part out of rawInsert to "make it even more raw". swap(s.data, n) a bit earlier so rawGet and rawGetKnownHC can have similar parameter lists and integrate well with rawInsert/code sharing between Set and OrderedSet impls. This PR also fixes infinite looping upon too many deletes. [ The deleted state (aka "tombstone") approach is vulnerable to the table filling up with deleted items which forces giant scans for missing keys which could be anywhere. In the version prior to this PR, table wraparound wasn't even detected yielding infinite loops. ] This PR changes excl() from marking slots as deleted to Knuth algo 6.4R, "local/incremental moveback rehashing" - adapted from Knuth's h->h-1 to the cache-friendlier h->h+1 probe sequence and adapted from "gotos" to a new doWhile template. This method restores the table to a state that would have resulted from pure inserts (in some order). Update nextTry accordingly. Since linear probing can degrade a little faster, 50% rather than 66% may be a better default growth threshold, but users should be able to adjust threshold anyway. Old unit tests all pass. More extensive testing in this module is probably warranted before taking similar enhancements over to collections.tables.
* | | | | | | cleaned up GC tests; fixes object variant re-assign bugAraq2015-02-101-3/+7
| | | | | | |
* | | | | | | fixes #2070Araq2015-02-102-19/+29
| | | | | | |
* | | | | | | Async await try statement fixes.Dominik Picheta2015-02-091-10/+48
| |_|_|_|_|/ |/| | | | |
* | | | | | Merge pull request #2059 from def-/getchVarriount2015-02-091-0/+28
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | Getch
| * | | | | Document terminal.getchdef2015-02-041-0/+2
| | | | | |
| * | | | | Add copyright headerdef2015-02-031-0/+9
| | | | | |
| * | | | | Add terminal.getch to get a single characterdef2015-02-031-0/+26
| | | | | |
* | | | | | 'nimsuggest' compiles againAraq2015-02-081-11/+13
| | | | | |
* | | | | | fixes #2073Araq2015-02-081-1/+1
| | | | | |
* | | | | | merged #2083 manuallyAraq2015-02-081-1/+10
| |_|_|/ / |/| | | |
* | | | | Merge pull request #1869 from def-/json-stuffAndreas Rumpf2015-02-071-2/+75
|\ \ \ \ \ | | | | | | | | | | | | Json stuff