d55eac3bac
Refactor allSatisfy, anySatisfy, staticIndexOf
2019-04-03 18:34:39 +02:00
b55bb767e5
Merge pull request #84 from n8sh/inoutConstIteration
...
In tanya.algorithm.iteration.take & retro preserve const/inout for `empty`/`front`/etc.
2019-03-29 08:36:50 +01:00
2b8471fe34
Add meta.trait.hasFunctionAttributes
2019-03-24 21:59:29 +01:00
Nathan Sashihara
10afe47bae
In tanya.algorithm.iteration.take & retro preserve const/inout for empty
/front
/etc.
2019-03-23 23:41:20 -04:00
76f2cd7080
Add DIP25 compatibility. Fix #83
2019-03-23 06:42:50 +01:00
ad46afb10b
Move memory/package.d into memory.allocator
2019-03-22 08:18:01 +01:00
a36b51f0c3
Fix MmapPool private tests; move remaining tests
2019-03-21 14:54:16 +01:00
0fe7308a22
algorithm: import searching publically
2019-03-20 07:30:47 +01:00
20c7e47ff7
net: Add missing public imports, move tests
2019-03-19 08:47:39 +01:00
484cb13317
Separate non-documentation tests from the code
2019-03-19 07:45:52 +01:00
5ab99cf887
Move memory functions into memory.lifecycle
...
- move
- moveEmplace
- forward
- emplace
- swap
2019-03-17 10:56:44 +01:00
85d7a2b9ca
Move memory exception into memory.lifecycle
2019-03-16 10:35:28 +01:00
b458c6a380
Make subpackages of os, sys and encoding
2019-03-05 20:47:02 +01:00
5b850d532e
Move meta into a separate subpackage
2019-03-02 08:08:10 +01:00
d7dfa3f6f1
net.ip.Address6.toString() recommended notation
...
Fix #65 .
2019-03-01 08:28:36 +01:00
8fd0452cd0
algorithm.iteration: Add singleton()
...
... iterating over a single value.
2019-02-25 09:27:03 +01:00
df99ea45f2
range.adapter: new arrayInserter
2019-02-24 13:14:30 +01:00
87ba58098e
format.sformat: Support range-based toString()
2019-02-19 06:39:39 +01:00
5a134ce768
net.ip: Implement .toString() with output ranges
2019-02-16 08:37:45 +01:00
0835edce1d
range.adapter: Add container-range adapters. Fix #67
2019-02-16 08:36:50 +01:00
Nathan Sashihara
a786bdbec5
Use word-wise hash instead of FNV-1a for arrays of word-aligned scalars
...
Also special case int-aligned scalars on 64-bit machines.
On a 64-bit machine hashing an array of pointers is now ~5.95x faster
with LDC2 and ~8.54x faster with DMD, and hashing an array of ints is
~3.34x faster with LDC2 and ~8.12x faster with DMD.
2019-02-12 10:34:18 -05:00
0bef2ef76d
Add sformat() writing to an output range
2019-02-12 07:37:24 +01:00
1d3d750adb
Update dmd to 2.084.1
2019-02-11 22:14:59 +01:00
0c8f1eb4ce
Deprecate InputRange source for OutputRanges
...
An output range for E won't be automatically an output range for [E]
anymore. The same, an output range for [E] won't be automatically an
output range for E. Automatic E <-> [E] conversion seems to be a nice
feature at first glance, but it causes much ambiguity.
1) If I want that my output range accepts only UTF-8 strings but not
single characters (because it could be only part of a code point and
look like broken UTF-8 without the remaining code units), I can't do it
because an OutputRange(R, E) can't distinguish between char and string.
2) Here is an example from 2013:
import std.range;
import std.stdio;
Appender!(const(char)[][]) app;
put(app, "aasdf");
put(app, 'b');
writeln(app.data);
This outputs: ["aasdf", "\0"].
Whether it is a common case or not, such code just shouldn't compile.
2019-02-06 07:26:28 +01:00
bf197a6554
Deprecate put() as an OutputRange primitive
2019-02-04 10:49:12 +01:00
7af5c30820
move(): Give compiler an opportunity to optimize
...
Fix #75 .
2019-02-01 06:33:41 +01:00
c1535e8752
typecons.Variant: Make public. Fix #73
2019-01-31 06:33:19 +01:00
5453f6417f
typecons.Option: Deprecate alias this
2019-01-30 06:58:02 +01:00
410b865df9
typecons.Option: Fix assigning nothing
2019-01-29 08:24:58 +01:00
4566cf7857
meta.metafunction: Add Enumerate and EnumerateFrom
2019-01-28 08:30:54 +01:00
0a2798cc96
Call postblit when emplacing a struct. Fix #81
2019-01-27 07:18:53 +01:00
a505a033ab
net.ip.Address: Address4/Address6 compatibility
2019-01-25 13:07:32 +01:00
1f02ba5042
net.ip: Add Address4 and Address6 wrapper
2019-01-24 07:14:15 +01:00
50aaa170fb
Merge remote-tracking branch 'n8sh/retro-slicing'
2019-01-09 18:17:41 +01:00
Nathan Sashihara
ff7d20f167
retro supports slicing if source range supports slicing
2019-01-08 20:19:53 -05:00
03e21d4368
Remove deprecated memory.op.cmp and Entropy class
2018-12-21 20:05:23 +01:00
c293c6c809
container.array: Fix assigning non-copyable values
...
Fix #59 .
2018-12-18 05:37:52 +01:00
e93898d837
Update dmd to 2.083.1
2018-12-17 18:04:36 +01:00
49d7452b33
Make containers work with non-copyable elements
...
It is the first step. The containers can be at least created with
non-copyable structs without compilation errors now.
Fix #69 .
2018-11-24 06:25:55 +01:00
884dc30953
Fix emplacing POD structs
2018-11-23 13:36:31 +01:00
e67a05138e
range.primitive: Support non copyable elements
...
... in all ranges.
2018-11-19 21:37:58 +01:00
7585bf59e7
Add test.stub. Fix #51
2018-11-18 06:32:10 +01:00
0a121d9d19
Disable length when taking from a lengthless range
...
Fix #79 .
2018-11-13 08:29:51 +01:00
9e6f5c3105
Add algorithm.mutation.rotate
2018-11-12 07:54:52 +01:00
3f66782368
Add support for DMD 2.083.0
2018-11-11 07:27:25 +01:00
3c8f6e3435
Merge remote-tracking branch 'n8sh/take-slice'
2018-11-07 07:08:52 +01:00
ee8b7ef719
Merge remote-tracking branch 'retro-retro'
2018-11-06 16:59:57 +01:00
Nathan Sashihara
6b22cd60df
take(take(range,...),n) is take(range, n) and use slicing in take
like in takeExactly
...
Also take!R is the same as takeExactly!R when isInfinite!R.
2018-11-05 22:49:10 -05:00
Nathan Sashihara
c290c85088
retro(retro(range)) is range
2018-11-05 18:43:58 -05:00
Nathan Sashihara
65e2e344df
Use inout in tanya.range.array functions
...
This is to reduce distinct generated functions in final executable.
Also add `scope` and `return` to function parameters.
2018-11-05 16:40:48 -05:00