Commit graph

435 commits

Author SHA1 Message Date
Araq
d8b0edc323 Merge branch 'mget' of https://github.com/def-/Nim into def--mget
Conflicts:
	lib/pure/collections/critbits.nim
	lib/pure/collections/tables.nim
	lib/pure/xmltree.nim
	lib/system/sets.nim
	tests/collections/ttables.nim
	tests/collections/ttablesref.nim
2015-10-13 00:22:27 +02:00
Andreas Rumpf
7b9d929d50 Merge pull request #3423 from petermora/breakSequtils
Break sequtils
2015-10-12 20:42:17 +02:00
Araq
732bdd54a0 added critbits.inc proc 2015-10-06 15:50:59 +02:00
Peter Mora
6318f77821 restore {.immediate.} to toSeq 2015-10-06 08:15:00 +02:00
Peter Mora
75097e2981 sequtils related changes 2015-10-05 22:42:22 +02:00
Alexander Mitchell-Robinson
564c9f4013 Fixed my name. 2015-09-07 19:51:52 -05:00
Adam Strzelecki
43bddf62dd lib: Trim .nim files trailing whitespace
via OSX: find . -name '*.nim' -exec sed -i '' -E 's/[[:space:]]+$//' {} +
2015-09-04 23:03:56 +02:00
Araq
d230b75e0a removed sequtils.reversed again since it's already in algorithm.nim 2015-08-10 01:49:56 +02:00
Araq
cf4879bc48 added sequtils.reversed; refs #3148 2015-08-09 20:29:03 +02:00
Araq
c733b3181e breaking change: symbol lookups in generics follows spec more closely; fixes #2664 2015-08-07 21:28:45 +02:00
Araq
a2b8b8b0dd 'sequtils doesn't take confusing default args anymore 2015-07-08 11:49:33 +02:00
Araq
62cea4e29c prepared selectors module for multi threading 2015-06-30 13:39:14 +02:00
Araq
28de800d61 Merge branch 'more_concurrency' into devel
Conflicts:
	doc/tut1.txt
	lib/core/locks.nim
	lib/pure/collections/tables.nim
	lib/pure/selectors.nim
2015-06-30 12:50:24 +02:00
pdw
192ba3bbc0 lib/pure/a-c - Dropped 'T' from types 2015-06-04 13:17:11 +02:00
Araq
21ea8e6913 some progress on making async multithreaded 2015-05-28 12:49:08 +02:00
Jonathan
8e4af5ace0 Add contains proc for tables to allow usage of in 2015-05-05 23:26:58 +01:00
Araq
7d3a6b42d9 fixes #2625 2015-05-03 01:08:48 +02:00
Oleh Prypin
22db40e5e4 Turn some test outputs into actual tests 2015-04-21 15:59:32 +03:00
Oleh Prypin
32109a7867 Don't run non-test code when defined(testing) 2015-04-21 14:37:29 +03:00
Andreas Rumpf
d203d6fad4 Merge pull request #2411 from reactormonk/merge-counttables
merge for CountTable, see #1680
2015-04-21 09:04:46 +02:00
Oleh Prypin
27071319c6 Remove unneeded import os from intsets 2015-04-09 03:48:35 +03:00
def
22b4e4c2f2 Use more Natural and Positive numbers in proc parameters
- Didn't go through all modules, only the main ones I thought of
- Building the compiler and tests still work
2015-04-06 02:24:17 +02:00
ReneSac
e41a3e9661 Fix warning about sets.testModule() not used. 2015-04-04 15:28:38 -03:00
def
63f9385327 Rename mget to []
- In sets, tables, strtabs, critbits, xmltree
- This uses the new var parameter overloading
- mget variants still exist, but are deprecated in favor of `[]`
- Includes tests and fixed tests and usages of mget
- The non-var `[]` now throws an exception instead of returning binary 0
  or an empty string
2015-03-31 00:32:39 +02:00
Simon Hafner
6dfb13b2b8 doc comments for merge 2015-03-26 03:40:39 +05:00
Simon Hafner
73655e3dd6 merge for CountTable, see #1680 2015-03-26 03:38:30 +05:00
Araq
a541be8935 prepare for upcoming parsing change of unary operators 2015-03-22 09:31:15 +01:00
Hans Raaf
b42c729da4 Making tuples anonymous (so far... not finished). 2015-03-17 00:15:23 +01:00
Hans Raaf
51034d7e3a Changed cast to type conversion and added XXX. 2015-03-07 17:51:03 +01:00
Hans Raaf
9e2f79251c Do we want we to use the typesystem like this? 2015-03-06 18:16:00 +01:00
Hans Raaf
534fe46b82 Added repeat(seq, n) to sequtils.
This adds a repeat proc for sequences. There is also an test for it at the end of file.
2015-03-06 18:16:00 +01:00
krolik
4fe0a72577 Fixed table getter not compiling when table value type had not '$' proc overriden 2015-03-05 14:43:15 +02:00
Hans Raaf
93aa73284e Fix unknown symbol in tables mpairs iterator.
Fixes an error with mpairs iterator which was introduced with 5fbcf93860. This is used by nimforum thats why I found it. I also added a testcase for the mpairs iterator.
2015-02-21 23:20:02 +01:00
Andreas Rumpf
358d4b958c Merge pull request #2139 from c-blake/devel
Add mgetOrPut to support just one probe chase for the common
2015-02-18 15:56:23 +01:00
Araq
9fe1aa6996 intsets.empty is wrong 2015-02-18 13:44:00 +01:00
Charles Blake
55840d9505 Merge ../Nim into devel 2015-02-16 14:55:08 -05:00
Charles Blake
629decd170 Add comments explaining odd looking i<0..data[i]. 2015-02-16 07:48:31 -05:00
Charles Blake
0a3e732b9f Just do wide interface of hasKeyOrPut & mgetOrPut.
Extract maybe re-hash/re-search and insert logic into a new template.
Use this new template to do impl templates for all three put forms
(which required renaming a couple 'value' arguments to 'val').
Added OrderedTable and OrderedTableRef versions of both as well.
2015-02-16 06:52:23 -05:00
Charles Blake
614a1f9d5a Add TableRef version of mgetOrPut. 2015-02-16 06:02:31 -05:00
Federico Ceratto
657dca5c3b Fix typos 2015-02-15 16:20:32 +00:00
Federico Ceratto
c95f6f117a Fix typos 2015-02-15 16:06:06 +00:00
Charles Blake
7c1c9a6a9d Add mgetOrPut to support just one probe chase for the common
pattern of either updating or initializing table entries.
2015-02-15 10:03:41 -05:00
Charles Blake
5068a5aa01 assignment -> shallowCopy for efficiency. 2015-02-13 14:10:09 -05:00
Charles Blake
45a2c1b1d1 Merge ../Nim into devel; track ttables.nim delete. 2015-02-13 08:42:41 -05:00
Charles Blake
d129e8f6c6 Update doc comments to mention rightSize. 2015-02-13 08:28:58 -05:00
Araq
10335fd726 fixed minor bugs; cleaned up tests 2015-02-12 14:56:56 +01:00
Charles Blake
49d88cee68 Oops - missed updates to a few later rawGet()s. 2015-02-12 06:44:09 -05:00
Charles Blake
5fbcf93860 Add hcode,rightSize,rawGetKnownHC. Fix inf loop.
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.
2015-02-12 05:22:04 -05:00
Charles Blake
1f3ce26421 Address Andreas' complaint about code duplication. 2015-02-07 13:13:03 -05:00
Charles Blake
42f8f1cd1f Fix unnecessarily slow set building from openArray.
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.)
2015-02-07 09:37:17 -05:00