The standard library of the D programming language
Find a file
Inkrementator b48a877814
Fix chain potentially mutating a stale object (#10643)
The constructor of the result of std.range.chain copies it's input tuple
and then has to check which of the input-ranges in the first non-empty
one. The member function empty is not guaranteed to be const, filter is
probably the most prominent function that has to be "primed". On the
first call to empty(), filter will try to advance all it's input ranges
to the first element that matches the predicate.
For ranges with full value semantics, using the old input object instead
of the new internal buffer means that the work of priming is done twice.
If any ranges have reference semantics, the references gets advances,
but the value-semantic parts of the range-composition gets reset.

This fixes #10561 and #9877
2025-02-20 06:23:34 +08:00
.circleci Merge Makefiles 2023-12-16 22:22:20 +01:00
.github/workflows GHA main: Add Alpine Linux job, to CI-test musl libc (#10632) 2025-01-28 03:00:59 +01:00
changelog Add SharedAllocatorList (#10594) 2024-12-27 11:40:08 +08:00
etc/c Remove unused import (#10571) 2024-12-06 17:27:44 -08:00
phobos Add phobos.sys.traits.hasIndirections. (#10634) 2025-02-07 08:20:22 -08:00
std Fix chain potentially mutating a stale object (#10643) 2025-02-20 06:23:34 +08:00
test Add sumtype to Phobos (#7702) 2021-03-05 12:41:34 +01:00
tools Update to unicode 16.0.0 (#9058) 2024-10-16 06:24:56 +08:00
.codecov.yml yaml: make files comply with YAML specification 2021-08-30 14:54:57 +00:00
.dscanner.ini Silence buildkite style failure on std.range 2024-07-31 15:25:37 +02:00
.editorconfig
.gitignore Remove Phobos 3 dub.sdl and replace it with the build_v3.d build script. (#9069) 2024-10-25 17:49:41 -07:00
build_v3.d Remove Phobos 3 dub.sdl and replace it with the build_v3.d build script. (#9069) 2024-10-25 17:49:41 -07:00
CODEOWNERS Update CODEOWNERS to reflect that logger has been moved out of std.experimental (#10608) 2025-01-02 10:11:36 +08:00
CONTRIBUTING.md Remove bugzilla references 2024-12-01 23:23:23 +01:00
index.dd Remove deprecated std.xml module 2022-08-28 11:30:15 +02:00
LICENSE_1_0.txt
Makefile Remove -de switch from Phobos builds to allow deprecations. 2024-09-20 15:06:49 +02:00
posix.mak Restore posix.mak, forwarding to generic Makefile 2023-12-16 22:22:20 +01:00
project.ddoc
README.md Remove bugzilla references 2024-12-01 23:23:23 +01:00
unittest.d Remove deprecated symbols from std.digest.digest 2020-04-09 11:35:23 +02:00

D Logo Phobos Standard Library

GitHub tag CircleCi Buildkite Code coverage license

Phobos is the standard library that comes with the D Programming Language Compiler.

Download

Phobos is packaged together with the compiler. You should download the whole precompiled package.

To build everything yourself, there is a description in the wiki.

Phobos is distributed under Boost Software Licence. See the licence file.

I Want to Contribute

Great! See the CONTRIBUTING.md file.