summaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2019-03-01net.ip.Address6.toString() recommended notationv0.16.0Eugen Wissner
Fix #65.
2019-02-25algorithm.iteration: Add singleton()Eugen Wissner
... iterating over a single value.
2019-02-24range.adapter: new arrayInserterEugen Wissner
2019-02-19format.sformat: Support range-based toString()Eugen Wissner
2019-02-16net.ip: Implement .toString() with output rangesEugen Wissner
2019-02-16range.adapter: Add container-range adapters. Fix #67Eugen Wissner
2019-02-12Use word-wise hash instead of FNV-1a for arrays of word-aligned scalarsNathan Sashihara
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-12Add sformat() writing to an output rangeEugen Wissner
2019-02-06Deprecate InputRange source for OutputRangesEugen Wissner
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-04Deprecate put() as an OutputRange primitiveEugen Wissner
2019-02-01move(): Give compiler an opportunity to optimizev0.15.0Eugen Wissner
Fix #75.
2019-01-31typecons.Variant: Make public. Fix #73Eugen Wissner
2019-01-30typecons.Option: Deprecate alias thisEugen Wissner
2019-01-29typecons.Option: Fix assigning nothingEugen Wissner
2019-01-28meta.metafunction: Add Enumerate and EnumerateFromEugen Wissner
2019-01-27Call postblit when emplacing a struct. Fix #81Eugen Wissner
2019-01-25net.ip.Address: Address4/Address6 compatibilityEugen Wissner
2019-01-24net.ip: Add Address4 and Address6 wrapperEugen Wissner
2019-01-08retro supports slicing if source range supports slicingNathan Sashihara
2018-12-21Remove deprecated memory.op.cmp and Entropy classEugen Wissner
2018-12-18container.array: Fix assigning non-copyable valuesv0.14.0Eugen Wissner
Fix #59.
2018-11-24Make containers work with non-copyable elementsEugen Wissner
It is the first step. The containers can be at least created with non-copyable structs without compilation errors now. Fix #69.
2018-11-23Fix emplacing POD structsEugen Wissner
2018-11-19range.primitive: Support non copyable elementsEugen Wissner
... in all ranges.
2018-11-18Add test.stub. Fix #51Eugen Wissner
2018-11-13Disable length when taking from a lengthless rangeEugen Wissner
Fix #79.
2018-11-12Add algorithm.mutation.rotateEugen Wissner
2018-11-07Merge remote-tracking branch 'n8sh/take-slice'Eugen Wissner
2018-11-06Merge remote-tracking branch 'retro-retro'Eugen Wissner
2018-11-05take(take(range,...),n) is take(range, n) and use slicing in `take` like in ↵Nathan Sashihara
`takeExactly` Also take!R is the same as takeExactly!R when isInfinite!R.
2018-11-05retro(retro(range)) is rangeNathan Sashihara
2018-11-05Use inout in tanya.range.array functionsNathan Sashihara
This is to reduce distinct generated functions in final executable. Also add `scope` and `return` to function parameters.
2018-11-04Add range primitive sameHeadEugen Wissner
2018-10-30memory.op.equal: Fix parameter documentationEugen Wissner
2018-10-29algorithm.mutation.destroyAll: Newv0.13.0Eugen Wissner
Fix #71.
2018-10-25Add FNV constants for size_t == ucentNathan Sashihara
2018-10-24Add algorithm.mutation.initializeAllEugen Wissner
2018-10-22Make hasLvalueElements work with non-copyableEugen Wissner
2018-10-21Use new __traits(isZeroInit) to check for a null initializer at compile time ↵Nathan Sashihara
instead of runtime
2018-10-20Add algorithm.mutation.uninitializedFillEugen Wissner
2018-10-14conv.emplace: Don't call a destructorEugen Wissner
Don't call the destructor on uninitialized elements.
2018-10-08conv.emplace: Fix emplacing structs w/o this()Eugen Wissner
2018-10-06Add algorithm.mutation.fill()Eugen Wissner
2018-10-05Deprecate Entropy (leaving platform sources alone)Eugen Wissner
Also introduces unavoidable breaking change in EntropySource interface: poll() returns Option!ubyte instead of Nullable.
2018-10-03net.ip: Parse embedded Ipv4. Fix #64Eugen Wissner
2018-10-02Replace memory.op.cmp with optimized equal versionEugen Wissner
Deprecate cmp. Fix #68.
2018-09-30Add algorithm.searching.countEugen Wissner
2018-09-29Remove code deprecated in 0.11.2 and earlierEugen Wissner
- conv.to!String - meta.metafunction.Tuple - range.adapter.take - range.adapter.takeExactly - range.primitive: put()-ting input range into an output one
2018-09-28Add algorithm.iterationv0.12.0Eugen Wissner
2018-09-24net.ip: Implement opCmp. Fix #63Eugen Wissner