| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2019-03-01 | net.ip.Address6.toString() recommended notationv0.16.0 | Eugen Wissner | |
| Fix #65. | |||
| 2019-02-25 | algorithm.iteration: Add singleton() | Eugen Wissner | |
| ... iterating over a single value. | |||
| 2019-02-24 | range.adapter: new arrayInserter | Eugen Wissner | |
| 2019-02-19 | format.sformat: Support range-based toString() | Eugen Wissner | |
| 2019-02-16 | net.ip: Implement .toString() with output ranges | Eugen Wissner | |
| 2019-02-16 | range.adapter: Add container-range adapters. Fix #67 | Eugen Wissner | |
| 2019-02-12 | Use word-wise hash instead of FNV-1a for arrays of word-aligned scalars | Nathan 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-12 | Add sformat() writing to an output range | Eugen Wissner | |
| 2019-02-06 | Deprecate InputRange source for OutputRanges | Eugen 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-04 | Deprecate put() as an OutputRange primitive | Eugen Wissner | |
| 2019-02-01 | move(): Give compiler an opportunity to optimizev0.15.0 | Eugen Wissner | |
| Fix #75. | |||
| 2019-01-31 | typecons.Variant: Make public. Fix #73 | Eugen Wissner | |
| 2019-01-30 | typecons.Option: Deprecate alias this | Eugen Wissner | |
| 2019-01-29 | typecons.Option: Fix assigning nothing | Eugen Wissner | |
| 2019-01-28 | meta.metafunction: Add Enumerate and EnumerateFrom | Eugen Wissner | |
| 2019-01-27 | Call postblit when emplacing a struct. Fix #81 | Eugen Wissner | |
| 2019-01-25 | net.ip.Address: Address4/Address6 compatibility | Eugen Wissner | |
| 2019-01-24 | net.ip: Add Address4 and Address6 wrapper | Eugen Wissner | |
| 2019-01-08 | retro supports slicing if source range supports slicing | Nathan Sashihara | |
| 2018-12-21 | Remove deprecated memory.op.cmp and Entropy class | Eugen Wissner | |
| 2018-12-18 | container.array: Fix assigning non-copyable valuesv0.14.0 | Eugen Wissner | |
| Fix #59. | |||
| 2018-11-24 | Make containers work with non-copyable elements | Eugen 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-23 | Fix emplacing POD structs | Eugen Wissner | |
| 2018-11-19 | range.primitive: Support non copyable elements | Eugen Wissner | |
| ... in all ranges. | |||
| 2018-11-18 | Add test.stub. Fix #51 | Eugen Wissner | |
| 2018-11-13 | Disable length when taking from a lengthless range | Eugen Wissner | |
| Fix #79. | |||
| 2018-11-12 | Add algorithm.mutation.rotate | Eugen Wissner | |
| 2018-11-07 | Merge remote-tracking branch 'n8sh/take-slice' | Eugen Wissner | |
| 2018-11-06 | Merge remote-tracking branch 'retro-retro' | Eugen Wissner | |
| 2018-11-05 | take(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-05 | retro(retro(range)) is range | Nathan Sashihara | |
| 2018-11-05 | Use inout in tanya.range.array functions | Nathan Sashihara | |
| This is to reduce distinct generated functions in final executable. Also add `scope` and `return` to function parameters. | |||
| 2018-11-04 | Add range primitive sameHead | Eugen Wissner | |
| 2018-10-30 | memory.op.equal: Fix parameter documentation | Eugen Wissner | |
| 2018-10-29 | algorithm.mutation.destroyAll: Newv0.13.0 | Eugen Wissner | |
| Fix #71. | |||
| 2018-10-25 | Add FNV constants for size_t == ucent | Nathan Sashihara | |
| 2018-10-24 | Add algorithm.mutation.initializeAll | Eugen Wissner | |
| 2018-10-22 | Make hasLvalueElements work with non-copyable | Eugen Wissner | |
| 2018-10-21 | Use new __traits(isZeroInit) to check for a null initializer at compile time ↵ | Nathan Sashihara | |
| instead of runtime | |||
| 2018-10-20 | Add algorithm.mutation.uninitializedFill | Eugen Wissner | |
| 2018-10-14 | conv.emplace: Don't call a destructor | Eugen Wissner | |
| Don't call the destructor on uninitialized elements. | |||
| 2018-10-08 | conv.emplace: Fix emplacing structs w/o this() | Eugen Wissner | |
| 2018-10-06 | Add algorithm.mutation.fill() | Eugen Wissner | |
| 2018-10-05 | Deprecate Entropy (leaving platform sources alone) | Eugen Wissner | |
| Also introduces unavoidable breaking change in EntropySource interface: poll() returns Option!ubyte instead of Nullable. | |||
| 2018-10-03 | net.ip: Parse embedded Ipv4. Fix #64 | Eugen Wissner | |
| 2018-10-02 | Replace memory.op.cmp with optimized equal version | Eugen Wissner | |
| Deprecate cmp. Fix #68. | |||
| 2018-09-30 | Add algorithm.searching.count | Eugen Wissner | |
| 2018-09-29 | Remove code deprecated in 0.11.2 and earlier | Eugen 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-28 | Add algorithm.iterationv0.12.0 | Eugen Wissner | |
| 2018-09-24 | net.ip: Implement opCmp. Fix #63 | Eugen Wissner | |
