Commit Graph

642 Commits

Author SHA1 Message Date
Eugen Wissner 3ce5e8153c Update copyrights 2020-05-05 07:46:10 +02:00
Eugen Wissner c68b8d1bdd Update compiler, remove deprecated modules 2020-05-04 06:03:45 +02:00
Eugen Wissner 048939410c Deprecate Integer and isPseudoprime() 2019-09-03 09:13:29 +02:00
Eugen Wissner c69282a8df Work around 2.086 bugs 2019-08-28 20:50:15 +02:00
Eugen Wissner 0a973b46ba Add algorithm.iteration.foldr 2019-04-24 06:53:08 +02:00
Eugen Wissner 73535568b7
Merge pull request #87 from n8sh/getAndPopFrontSafety
Ensure getAndPopFront/getAndPopBack don't promote `system` to `safe`
2019-04-22 10:50:58 +02:00
Nathan Sashihara b2a1a849f8 Ensure getAndPopFront/getAndPopBack don't promote `system` to `safe` 2019-04-19 09:34:30 -04:00
Eugen Wissner 76bda0ac8d Add getAndPopFront()/getAndPopBack() 2019-04-17 06:27:18 +02:00
Eugen Wissner f214f3baa2 Add algorithm.iteration.foldl 2019-04-16 07:20:52 +02:00
Eugen Wissner f66935f40d Build with -dip1000. Fix #85 2019-04-15 07:05:56 +02:00
Eugen Wissner 9814e5ad8e Pass allocator in all HashTable/Set constructors 2019-04-14 09:07:22 +02:00
Eugen Wissner e6c6a2d21a Make Array.get system function
.get() returns a memory block that can be changed if the original array
is manipulated after getting the slice. So the slice returned by .get()
may allow access to invalid memory.
2019-04-05 08:58:22 +02:00
Eugen Wissner d55eac3bac Refactor allSatisfy, anySatisfy, staticIndexOf 2019-04-03 18:34:39 +02:00
Eugen Wissner 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
Eugen Wissner 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
Eugen Wissner 76f2cd7080 Add DIP25 compatibility. Fix #83 2019-03-23 06:42:50 +01:00
Eugen Wissner ad46afb10b Move memory/package.d into memory.allocator 2019-03-22 08:18:01 +01:00
Eugen Wissner a36b51f0c3 Fix MmapPool private tests; move remaining tests 2019-03-21 14:54:16 +01:00
Eugen Wissner 0fe7308a22 algorithm: import searching publically 2019-03-20 07:30:47 +01:00
Eugen Wissner 20c7e47ff7 net: Add missing public imports, move tests 2019-03-19 08:47:39 +01:00
Eugen Wissner 484cb13317 Separate non-documentation tests from the code 2019-03-19 07:45:52 +01:00
Eugen Wissner 5ab99cf887 Move memory functions into memory.lifecycle
- move
- moveEmplace
- forward
- emplace
- swap
2019-03-17 10:56:44 +01:00
Eugen Wissner 85d7a2b9ca Move memory exception into memory.lifecycle 2019-03-16 10:35:28 +01:00
Eugen Wissner b458c6a380 Make subpackages of os, sys and encoding 2019-03-05 20:47:02 +01:00
Eugen Wissner 5b850d532e Move meta into a separate subpackage 2019-03-02 08:08:10 +01:00
Eugen Wissner d7dfa3f6f1 net.ip.Address6.toString() recommended notation
Fix #65.
2019-03-01 08:28:36 +01:00
Eugen Wissner 8fd0452cd0 algorithm.iteration: Add singleton()
... iterating over a single value.
2019-02-25 09:27:03 +01:00
Eugen Wissner df99ea45f2 range.adapter: new arrayInserter 2019-02-24 13:14:30 +01:00
Eugen Wissner 87ba58098e format.sformat: Support range-based toString() 2019-02-19 06:39:39 +01:00
Eugen Wissner 5a134ce768 net.ip: Implement .toString() with output ranges 2019-02-16 08:37:45 +01:00
Eugen Wissner 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
Eugen Wissner 0bef2ef76d Add sformat() writing to an output range 2019-02-12 07:37:24 +01:00
Eugen Wissner 1d3d750adb Update dmd to 2.084.1 2019-02-11 22:14:59 +01:00
Eugen Wissner 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
Eugen Wissner bf197a6554 Deprecate put() as an OutputRange primitive 2019-02-04 10:49:12 +01:00
Eugen Wissner 7af5c30820 move(): Give compiler an opportunity to optimize
Fix #75.
2019-02-01 06:33:41 +01:00
Eugen Wissner c1535e8752 typecons.Variant: Make public. Fix #73 2019-01-31 06:33:19 +01:00
Eugen Wissner 5453f6417f typecons.Option: Deprecate alias this 2019-01-30 06:58:02 +01:00
Eugen Wissner 410b865df9 typecons.Option: Fix assigning nothing 2019-01-29 08:24:58 +01:00
Eugen Wissner 4566cf7857 meta.metafunction: Add Enumerate and EnumerateFrom 2019-01-28 08:30:54 +01:00
Eugen Wissner 0a2798cc96 Call postblit when emplacing a struct. Fix #81 2019-01-27 07:18:53 +01:00
Eugen Wissner a505a033ab net.ip.Address: Address4/Address6 compatibility 2019-01-25 13:07:32 +01:00
Eugen Wissner 1f02ba5042 net.ip: Add Address4 and Address6 wrapper 2019-01-24 07:14:15 +01:00
Eugen Wissner 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
Eugen Wissner 03e21d4368 Remove deprecated memory.op.cmp and Entropy class 2018-12-21 20:05:23 +01:00
Eugen Wissner c293c6c809 container.array: Fix assigning non-copyable values
Fix #59.
2018-12-18 05:37:52 +01:00
Eugen Wissner e93898d837 Update dmd to 2.083.1 2018-12-17 18:04:36 +01:00