Skip to content

Commit b91f053

Browse files
committed
Merge remote-tracking branch 'upstream/master' into stable
2 parents b0150e9 + 406f4ec commit b91f053

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+5438
-3861
lines changed

.codecov.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Documentation: https://github.com/codecov/support/wiki/codecov.yml
22

33
codecov:
4+
ci:
5+
- "circleci.com"
6+
notify:
7+
after_n_builds: 1 # send notifications after the first upload
48
bot: dlang-bot
59

610
coverage:

.dscanner.ini

Lines changed: 108 additions & 23 deletions
Large diffs are not rendered by default.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
`Base64URLNoPadding` (URL-safe Base64 without padding) was added
2+
3+
$(REF Base64URLNoPadding, std, base64) allows encoding/decoding without padding:
4+
5+
---
6+
import std.base64 : Base64URLNoPadding;
7+
8+
ubyte[] data = [0x83, 0xd7, 0x30, 0x7b, 0xef];
9+
assert(Base64URLNoPadding.encode(data) == "g9cwe-8");
10+
assert(Base64URLNoPadding.decode("g9cwe-8") == data);
11+
---

changelog/std-digest-package.dd

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
`std.digest.digest` was renamed to `std.digest`.
2+
3+
$(B Motivation):
4+
5+
The fully qualified name of the digest function template was `std.digest.digest.digest`.
6+
This is because `std.digest` is a package, with a module named `digest` in it, and the function `digest` inside that.
7+
8+
$(MREF std, digest) contains the former `std.digest.digest` package.

changelog/std-meta-stride.dd

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
`std.meta.Stride` was added
2+
3+
$(REF Stride, std,meta) allows selecting a subset of template by a step size and offset:
4+
5+
---
6+
alias attribs = AliasSeq!(short, int, long, ushort, uint, ulong);
7+
static assert(is(Stride!(3, attribs) == AliasSeq!(short, ushort)));
8+
static assert(is(Stride!(3, attribs[1 .. $]) == AliasSeq!(int, uint)));
9+
---
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
`Config.detached` flag for `spawnProcess` has been added
2+
3+
`Config.detached` allows $(REF_ALTTEXT spawning processes, spawnProcess, std, process) which run independently from the current process. There is no need to wait on the processes created with this flag, and no $(HTTPS en.wikipedia.org/wiki/Zombie_process, zombie process) will be left after they exit.
4+
Attempts to call $(REF wait, std, process) or $(REF kill, std, process) on detached processes will throw.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
`std.range.chunks` was extended to support non-forward input ranges.
2+
3+
Now `std.range.chunks` can be used with input ranges that are not forward
4+
ranges, albeit with limited semantics as imposed by the underlying range.
5+
6+
---
7+
import std.algorithm.comparison : equal;
8+
9+
int i;
10+
11+
// The generator doesn't save state, so it cannot be a forward range.
12+
auto inputRange = generate!(() => ++i).take(10);
13+
14+
// We can still process it in chunks, but it will be single-pass only.
15+
auto chunked = inputRange.chunks(2);
16+
17+
assert(chunked.front.equal([1, 2]));
18+
assert(chunked.front.empty); // Iterating the chunk has consumed it
19+
chunked.popFront;
20+
assert(chunked.front.equal([3, 4]));
21+
---

changelog/std-socket-abstract.dd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
`std.socket.UnixAddress` now supports abstract addresses.
2+
3+
UNIX domain sockets are usually identified by pathnames. Linux offers a
4+
non-portable extension to this scheme, known as abstract socket addresses,
5+
which are independent of the filesystem. An abstract socket address starts with
6+
a null byte (`'\0'`), e.g.:
7+
8+
---
9+
auto addr = new UnixAddress("\0/tmp/dbus-OtHLWmCLPR");
10+
---
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Added possibility to use a baseclass when auto-implementing an interface
2+
3+
A second $(REF AutoImplement, std, typecons) template has been added, which
4+
differs from the existing one in accepting an extra type parameter. The extra
5+
parameter specifies a class to derive from while auto-implementing an interface.
6+
7+
The base class used may contain non-default constructors. Matching constructors
8+
will be created in the auto-implemented class and be implemented as just a call
9+
to super with all arguments.

circle.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ test:
88
override:
99
- ./circleci.sh setup-repos
1010
- ./circleci.sh style_lint
11-
- ./circleci.sh has_public_example
1211
- ./circleci.sh publictests
1312
- ./circleci.sh coverage:
1413
parallel: true

0 commit comments

Comments
 (0)