Change Log: 2.101.0 - D Programming Language

Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Calendar
  - Forums
  - IRC
  - Community Discord
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Security Team
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - run.dlang.io
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

# Change Log: 2.101.0

Download D 2.101.0 Beta
to be released Nov 14, 2022

2.101.0 comes with 38 major changes and 737 fixed Bugzilla issues. A huge thanks goes to the 299 contributors who made 2.101.0 possible.

#### Compiler changes

1. Add bit fields to D
2. Added __traits(classInstanceAlignment)
3. Relaxed pragma(crt_constructor) / pragma(crt_destructor) linkage check
4. Add predefined version D_Optimized when compiling with -O
5. Throwing from contracts of nothrow functions has been deprecated
6. Using integers for version or debug conditions has been deprecated
7. Print deprecations for scope pointer errors
8. Improvements for the C++ header generation
9. -preview=fixImmmutableConv has been added
10. Returning a discarded void value from a function is now deprecated
11. ImportC now recognizes the typeof(...) operator
12. Removed the -transition=markdown and -revert=markdown switches
13. new can now allocate an associative array
14. -preview=in can now be used with extern(C++), disabled for other non-D linkage
15. The shortened method syntax is now available by default.

#### Runtime changes

1. Added avx512f detection to core.cpuid
2. --DRT-oncycle=deprecate is removed
3. Posix (excl. Darwin): Switch default GC signals from SIGUSR1/2 to SIGRTMIN/SIGRTMIN+1

#### Library changes

1. Added SafeRefCounted, that can be used in @safe with -preview=dip1000.
2. Move logger out of experimental.
3. remove std.experimental.logger's capability to set the minimal LogLevel at compile time
4. Change std.experimental.logger.core.sharedLog to return shared(Logger)
5. std.experimental.typecons has been removed
6. std.digest.digest has been removed
7. std.xml has been removed
8. std.socket.Socket methods now accept only scope arrays.
9. Add custom fill value to std.outbuffer.OutBuffer class

#### Dub changes

1. Building the special test runner configuration
2. Output will now be colorized
3. dub will now warn on unrecognized settings or selections file
4. The two new build types cov-ctfe and unittest-cov-ctfe have been added.
5. DUB settings & packages directory placement overhauled
6. DUB command exit codes have been made more consistent
7. 'install' and 'uninstall' commands have been removed
8. When copyFiles is used to copy read-only files, it now makes the copy writable.
9. The override system is deprecated
10. The shortcut syntax for "dub run" is now also available for sub packages.
11. Upgrading all sub packages at once

List of all bug fixes and enhancements in D 2.101.0.

#### Compiler changes

1. Add bit fields to D

   They work just like the bit fields in ImportC do.

   https://github.com/dlang/dlang.org/pull/3190

       struct B
       {
           int x:3, y:2;
       }

       static assert(B.sizeof == 4);

       int vaporator(B b)
       {
           b.x = 4;
           b.y = 2;
           return b.x + b.y; // returns 6
       }

2. Added __traits(classInstanceAlignment)

   To complement __traits(classInstanceSize), providing the required alignment for manual buffers etc.:

       align(__traits(classInstanceAlignment, C))
       void[__traits(classInstanceSize, C)] buffer;

3. Relaxed pragma(crt_constructor) / pragma(crt_destructor) linkage check

   extern(C) isn't a requirement for CRT con/destructors anymore when using the default void () signature.

4. Add predefined version D_Optimized when compiling with -O

   It allows code to distinguish whether it's being compiled with optimizations enabled (the -O flag was provided). This is orthogonal to whether -release mode is active - for that see the predefined versions assert, D_NoBoundsChecks, D_Invariants, etc.

5. Throwing from contracts of nothrow functions has been deprecated

   Up until now, the compiler accepted in and out contracts of nothrow functions to throw exceptions and call throwing functions. As this breaks nothrow guarantees, a deprecation notice is now triggered.

       // deprecated:
       float sqrt(float n) nothrow
       in
       {
           if (n < 0)
               throw new Exception("n must be positive");
       }
       do
       {
           // ...
       }

       // fix: remove nothrow attribute or use assertions
       float sqrt(float n) nothrow
       in
       {
           assert(n >= 0);
       }
       do
       {
           // ...
       }

6. Using integers for version or debug conditions has been deprecated

   The problem is that it only provides a single number namespace without any meaning. It's better to use version identifiers describing the feature they enable. See also this thread on the forum.

       // now deprecated:
       version = 3;
       version (2) { }

       debug = 4;
       debug (5) { }

       // use identifiers instead:
       version = HasX;

       version (HasX)
           void x() { /* ... */ }
       else
           void x() {}

7. Print deprecations for scope pointer errors

   The scope attribute has existed for a long time, but the compiler would only verify its semantics when the -preview=dip1000 switch was passed, to avoid breaking code. Pointers or references stored in a scope variable are not allowed to escape the scope in which the variable is defined.

   Usually, it is not necessary to mark variables scope, since the Garbage Collector (GC) takes care of freeing memory. However, D allows creating pointers / slices that point to local variables, which use Stack-based memory allocation and are destructed at the end of their scope. It is important that in @safe code, creating such pointers is either disallowed, or has scope semantics enforced, but the compiler would formerly fail to do that:

       @safe:
       int[] getSlice()
       {
           int[4] stackBuffer;
           int[] slice = stackBuffer[]; // slice points to local variable allocated on stack
           return slice; // dangling pointer!
       }

       struct S
       {
           int x;

           int* get()
           {
               int* y = &this.x; // this struct instance could be a local variable
               return y; // dangerous!
           }
       }

   Starting with this release, scope semantics are enforced in @safe code on pointers to stack memory, but only as deprecation warnings. Eventually, they will be turned into errors. To turn them into errors immediately, use -preview=dip1000. To disable the deprecations, use -revert=dip1000.

   Note that the original DIP1000 text is outdated, so please refer to the specification pages for documentation:

   - Scope and Return Parameters
   - scope Attribute
   - Scope Parameters
   - Return Scope Parameters
   - Ref Return Scope Parameters
   - Inferred scope parameters in pure functions
8. Improvements for the C++ header generation

   The following features/bugfixes/improvements were implemented for the experimental C++ header generator:

   - Overriding virtual functions are now marked with the override keyword when generating C++11 compatible headers.
   - Final virtual functions are now marked with the final keyword when generating C++11 compatible headers.

   Note: The header generator is still considered experimental, so please submit any bugs encountered to the bug tracker.

9. -preview=fixImmmutableConv has been added

   The compiler allows implicitly converting a return value with indirections to immutable if it determines the result must be unique. Formerly, this check would inspect the types of the indirections, and forget to take into account conversions, such as int[] to void[]:

       int[] f(ref void[] m) pure
       {
           auto result = new int[5];
           m = result;
           return result;
       }

       void main()
       {
           void[] v;
           immutable x = f(v);
           // `v` is now a mutable alias to immutable variable `x`
       }

   This was filed as issue 15660, which has been fixed some time ago by making the check more strict: the called function must be strongly pure. However, to avoid breaking code, the fix was only active with the -preview=dip1000 switch. Since it is unrelated to dip1000 (which is about scope pointers), the fix has been moved to a new -preview=fixImmmutableConv switch.

10. Returning a discarded void value from a function is now deprecated

    An expression statement of type void that has no side effects should be discarded since it has no effect. The compiler, generally, does not allow such statements, however, in the case of return statements this error is circumvented. For example:

        struct StackBuffer
        {
            auto opIndex(size_t i)
            {
                return arr[i];
            }

        private:
            void[] arr;
        }

    Although this code compiles, any call to opIndex is going to result in an error because the return type must either be stored somewhere (and variables cannot be of type void) or the call will have no effect.

    Starting with this release, returning a discarded void value from a function is deprecated. Such code can be deleted as it most certainly is dead code.

11. ImportC now recognizes the typeof(...) operator

    ISO C does not specify a typeof operator, but it is a widely-implemented vendor extension. ImportC now implements this extension as well.

    Only the form typeof(...) is recognized, other compilers also support (or only support one of) __typeof__(...) and __typeof(...). Imported C using these forms will need to be normalized with #defines.

12. Removed the -transition=markdown and -revert=markdown switches

    This release removes the -transition=markdown, which prints markdown substitutions made when processing markdown in ddoc documentation blocks, and -revert=markdown switches which disables markdown substitutions in ddoc documentation blocks.

    Markdown substitutions have been the default for some time now, and as of this release is always performed.

13. new can now allocate an associative array

    This allows two associative array references to point to the same associative array instance before any keys have been inserted.

        int[string] a = new int[string];
        auto b = a;
        ...
        a["seven"] = 7;
        assert(b["seven"] == 7);

    Note: Calling new is not needed before inserting keys on a null associative array reference - the instance will be allocated if it doesn't exist.

14. -preview=in can now be used with extern(C++), disabled for other non-D linkage

    The intent of -preview=in is to make in the go-to storage class for input parameters in D. However, it is D centric, as it is an enhanced version of scope const ref. As non-extern(D) functions usually are expected to match a specific ABI, using in is hardly a good idea.

    As C++ also has a "go to" storage class for input parameters (const T&), in can also be applied on extern(C++) function in order to bind to const T& parameters. This also allows to expose a closer API for a function than via const ref, as in will allow to bind rvalues to const T&, as in C++.

15. The shortened method syntax is now available by default.

    DIP 1043---Shortened Method Syntax has been accepted, the flag -preview=shortenedMethods is no longer required to write shortened function bodies:

        int add(int x, int y) pure => x + y;

        // equivalent full function body:
        int add(int x, int y) pure
        {
            return x + y;
        }

    The preview flag will still work until it is deprecated in a future release.

#### Runtime changes

1. Added avx512f detection to core.cpuid

   The feature flag core.cpuid.avx512f has been added to allow detection at run-time CPUs with 512-bit vector support.

2. --DRT-oncycle=deprecate is removed

   The option was introduced in 2.072.2 to help transition code that relied on the old faulty cycle checker for module constructors. It now prints a warning and does the same as the default, --DRT-oncycle=abort. See also: Order of Static Construction in the specification.

3. Posix (excl. Darwin): Switch default GC signals from SIGUSR1/2 to SIGRTMIN/SIGRTMIN+1

   As the SIGUSR ones might be used by 'system' libraries (e.g., Android Dalvik VM or LLVM libFuzzer), while the SIGRT ones are reserved for user-defined purposes and less likely to collide.

   The used signals can still be customized with an early call to core.thread.osthread.thread_setGCSignals().

#### Library changes

1. Added SafeRefCounted, that can be used in @safe with -preview=dip1000.

   RefCounted is only available for @system code, because of the possibility of escaping a reference to its payload past the end of its lifetime. a modified copy of it, std.typecons.SafeRefCounted has been added. Also added is a borrow function, that lets one safely access and modify the payload. -preview=dip1000 prevents escaping a reference to it in @safe code.

       @safe pure nothrow void fun()
       {
           import std.typecons;

           auto rcInt = safeRefCounted(5);
           assert(rcInt.borrow!(theInt => theInt) == 5);
           auto sameInt = rcInt;
           assert(sameInt.borrow!"a" == 5);

           // using `ref` in the function
           auto arr = [0, 1, 2, 3, 4, 5, 6];
           sameInt.borrow!(ref (x) => arr[x]) = 10;
           assert(arr == [0, 1, 2, 3, 4, 10, 6]);

           // modifying the payload via an alias
           sameInt.borrow!"a*=2";
           assert(rcInt.borrow!"a" == 10);
       }

   Direct access to the payload unfortunately has to be @system, though. While -dip1000 could prevent escaping the reference, it is possible to destroy the last reference before the end of it's scope:

       int destroyFirstAndUseLater()
       {
           import std.typecons;

           auto rc = SafeRefCounted!int(123);
           int* ptr = &rc.refCountedPayload();
           destroy(rc);
           return *ptr; // Reads from freed memory. Don't do this.
       }

   As a side effect, this enabled us to make std.file.dirEntries @safe with -preview=dip1000.

   Some member functions of RefCounted that are @safe are not so in SafeRefCounted. The RefCounted type and refCounted function are still available for the old behaviour. However, their main purpose is backwards compatibility. They are not recommended for new code.

2. Move logger out of experimental.

   The std.experimental.logger package is now std.logger. The old package and modules are still available and publicly import the new ones. To avoid breakage in modules that compile with deprecations as errors, for now the old modules aren't deprecated, but they will be.

3. remove std.experimental.logger's capability to set the minimal LogLevel at compile time

   Before this change std.experimental.logger had the capability to disable logging at compile time. It was also possible to set the minimal LogLevel at compile time. The trade-off between gained capability, added complexity, and error-proneness was too heavily tilted towards the second two items. This change removes these compile time features.

4. Change std.experimental.logger.core.sharedLog to return shared(Logger)

   To make unsafe code more explicit std.experimental.logger.sharedLog now returns a shared(Logger) instead of a Logger.

5. std.experimental.typecons has been removed

   This was an attempt to update std.typecons.wrap with an implementation that could work with struct, but it did not go anywhere. See this post on the forum.

6. std.digest.digest has been removed

   This module was initially deprecated in 2.076.1, and has been empty since 2.092.0 when all deprecated symbols were removed in favour of importing std.digest or its submodules instead.

7. std.xml has been removed

   This module is considered out-dated and not up to Phobos' current standards. If you still need it, go to https://github.com/DigitalMars/undeaD

8. std.socket.Socket methods now accept only scope arrays.

   To comply with dip1000, std.socket.Socket methods now all have scope attributes applied to any slice parameters. This includes receive and send flavors, and also setOption. While not technically a breaking change for users of Socket, if you derive from it, you must apply those attributes to your derivatives or it will fail to compile. However, applying the attributes is backwards compatible with previous versions of Phobos, so there is no need for a migration path.

9. Add custom fill value to std.outbuffer.OutBuffer class

   Extend the fill, alignSize, align{2,4} methods of std.outbuffer.OutBuffer to specify value to write when filling (up to an alignment).

   For flash device images it is desirable to use 0xff as the fill value, because 0xff is the value of the unprogrammed flash memory cell. Padding with 0 requires to programm the flash cell from 0xff to 0x00, which increases wear and tear on the flash memory device. Usually there is some larger block at the end if the flash memory image, which must be padded up to the size of the flash device (usually a power of two). Instead of padding with 0x00 the PR allows to fill with 0xff instead.

   There might be also some other use-cases, where it might be reasonable to fill the alignment gaps with some other value than 0x00, e.g. when debugging and viewing output data in a hex editor. It is easier to spot gaps, when the padded spaces contain a custom value like 0x55 or 0xaa.

   A new fill method was added, which allows filling with a user-defined value instead of the 0 as in the previous implementation.

       OutBuffer buf = new OutBuffer();
       buff.fill( 1234, 42 ); // Fills 1234 bytes with 42 starting at buf.offset
       buff.fill( 10 );       // Same as fill0( 10 );

   The alignSize, align{2,4} methods were modified to use some user-defined value for padding to the requested alignment boundary.

       OutBuffer buf = new OutBuffer();
       buf.write(cast(ubyte) 1);
       buf.align2(0x55);
       assert(buf.toBytes() == "\x01\x55");
       buf.write(cast(ubyte) 2);
       buf.align4(0x55);
       assert(buf.toBytes() == "\x01\x55\x02\x55");
       buf.write(cast(ubyte) 3);
       buf.alignSize(8, 0x55);
       assert(buf.toBytes() == "\x01\x55\x02\x55\x03\x55\x55\x55");

#### Dub changes

1. Building the special test runner configuration

   dub build --config=unittest --build=unittest[-cov] can now be used to mimic building the test runner executable of dub test [--coverage]. Note that this doesn't require an existing unittest configuration.

   dub describe --config=unittest allows to derive the path to the executable.

2. Output will now be colorized

   Dub output has been improved to be more human readable, which means the most important informations in the output will now be colorized / bold.

   As is usual with CLI tools, this behavior is automatically turned on whether the output is a TTY. To force the old output in the presence of a TTY, use --color=off. To force colored output in the absence of a TTY, use --color=on.

   The --color flag, if set to on or off, is automatically forwarded to the compiler. This is especially useful for CI pipelines to ensure human-readable output.

3. dub will now warn on unrecognized settings or selections file

   Previously, dub was silently accepting anything it didn't recognize in [dub.]settings.json and dub.selections.json. While the original intent was to make forward-compatibility easy, it proved detrimental as typos would just mean the user setting was ignored.

   From this release, dub will now warn about any entry in its configuration files or in dub.selections.json. After 10 releases, those warnings will turn into errors.

4. The two new build types cov-ctfe and unittest-cov-ctfe have been added.

   These extend the existing build types cov and unittest-cov respectively by appending -cov=ctfe to the set of flags passed to the compiler.

5. DUB settings & packages directory placement overhauled

   You can now configure where DUB places its downloaded packages and where the user configuration is stored through environment variables or through the dub configuration. You need to use an environment variable or the system-wide dub configuration to specify where the user configuration is stored.

   By default DUB stores the packages on

   - Windows: %APPDATA%/dub/settings.json + %LOCALAPPDATA%/dub/packages/
   - Posix: $HOME/.dub/{packages/,settings.json}

   now if the DUB_HOME environment variable is set it instead stores the packages (and other config) in

   - $DUB_HOME/{packages/,settings.json}

   alternatively if DUB_HOME isn't set, but DPATH is set, the following path is used:

   - $DPATH/dub/{packages/,settings.json}

   The DPATH environment variable is intended to be used by all D tooling related things doing user-space installation of things. It can be used to avoid cluttering the home folder.

   Additionally to environment variables it is possible to configure the package placement path + settings.json path through DUB's settings.json file. To configure where the user-editable settings.json is placed you need to adjust the system-wide dub configuration.

   In the settings.json you can set the following fields:

       {
           "dubHome": "/path/to/dub", // sets both package store and config location
       }

   Additionally, these config paths will have environment variables using the $VARIABLE syntax resolved.

   The following list describes which path is going to be picked, from top to bottom, stopping whenever one is found:

   - $DUB_HOME environment variable
   - $DPATH environment variable
   - system-wide settings.json: "dubHome" property (only for userSettings)
   - most specific settings.json: "dubHome" property (only for localRepository)
6. DUB command exit codes have been made more consistent

   Some dub commands have been adjusted to return exit code 2 instead of exit code 1. Exit code 1 is now always used for usage errors, while exit code 2 is the more generic any error occurred or package failed to load.

   The following commands are affected:

   - dub clean
   - dub add
   - dub search
   - dub convert
7. 'install' and 'uninstall' commands have been removed

   Those commands were long-deprecated aliases to fetch and remove, respectively, and usage of them triggered a warning. They are no longer listed as command in help and dub will no longer recognize them.

8. When copyFiles is used to copy read-only files, it now makes the copy writable.

   Previously, if the target file would already exist due to a prior run of Dub, copyFiles would produce an access denied error because the read-only target could not be overwritten. Note that if you were affected by this behaviour, you will need to remove those files by hand once to eliminate these errors.

   It is common for version control systems to mark binary files read-only in the working copy, to prevent concurrent edits of files in unmergeable formats.

9. The override system is deprecated

   Dub had an "override" system, allowing a specific version or version range to be overriden by a specific package. This override system was developed with a purely version-based approach in mind, however since its inception, more ways to specify dependencies have been added, making the override approach redundant and less flexible than other approaches. From this release, dub will warn you if it finds an override file, or when using the dub add-override / dub remove-override commands.

10. The shortcut syntax for "dub run" is now also available for sub packages.

    Invoking dub as "dub :subpackage" is now equivalent to "dub run :subpackage", analogous to just "dub" being equivalent to "dub run".

11. Upgrading all sub packages at once

    A new "-s" switch allows to "dub upgrade" all sub packages together with the base package. This aims to provide a better workflow for fully reproducible builds and tests.

List of all bug fixes and enhancements in D 2.101.0:

#### DMD Compiler regression fixes

1. Bugzilla 4854: Regression(2.047, Mac 10.5 only) writefln Segmentation fault if no globals
2. Bugzilla 7375: Regression(2.057): Invalid downcast permitted with derived/aliased template classes
3. Bugzilla 7995: regression(2.059): D runtime initialization from C fails on OSX in 2.059, worked in 2.058
4. Bugzilla 9052: [2.061 alpha] AA.length in a const context tries to call opAssign + no error line number
5. Bugzilla 10106: [ICE] Ice in glue.c:1215 + 2 error messages without lines
6. Bugzilla 10440: shared library on osx: worked in 2.062, fails in 2.063 / 2.063.2
7. Bugzilla 11203: extern (C++) classes broken
8. Bugzilla 11344: [2.064 beta] Error: object.destroy called with argument types matches both
9. Bugzilla 12580: [REG2.066a] dup() won't accept void[]
10. Bugzilla 13025: Tools repository does not build on Ubuntu
11. Bugzilla 13034: [Reg] core.stdc.stdio - deprecation warning with dmd -inline
12. Bugzilla 14104: aa with pointer key type doesn't find existing value
13. Bugzilla 14573: [REG2.067] Extreme memory usage when synchronized( object ) is used
14. Bugzilla 14926: Programs compiled using dmd 2.068 are generating dummy profilegc.log files
15. Bugzilla 15430: [REG2.069] amdMmx hangs up
16. Bugzilla 15947: [REG 2.069.0?] simple multithreaded program + "-profile=gc" = crash
17. Bugzilla 17876: [REG 2.074] Internal error when comparing inout(Foo[][]) with Foo[][]
18. Bugzilla 18068: No file names and line numbers in stack trace
19. Bugzilla 20809: return statement might access memory from destructed temporary
20. Bugzilla 21197: Wrong lifetime inference with DIP1000 in dmd 2.093.0
21. Bugzilla 22300: [REG 2.098-rc.2] -checkaction=context of a shared type with an opCast fails to compile
22. Bugzilla 22844: [REG 2.089] SIGBUS, Bus error in _d_newitemU
23. Bugzilla 23019: Missing filename when -of points to an existing directory
24. Bugzilla 23046: [REG][CODEGEN] __simd(XMM.LODLPS) bad codegen
25. Bugzilla 23076: SIMD assert fail with -inline -O converting float to short
26. Bugzilla 23247: Deprecation: argument 0.0L for format specification "%La" must be double, not real
27. Bugzilla 23271: goto skips declaration of variable bugred.A.test.__appendtmp4
28. Bugzilla 23291: Members of arrays of shared classes cannot be compared
29. Bugzilla 23337: Wrongly elided postblit/copy ctor for array construction (_d_arrayctor lowering)
30. Bugzilla 23386: Segfault on enum member UDA inside template

#### DMD Compiler bug fixes

1. Bugzilla 1: asm enter and leave bug
2. Bugzilla 2: Hook up new dmd command line arguments
3. Bugzilla 1761: TypeInfo.toString for function types always indicates no-parameter function
4. Bugzilla 2384: abi spec is unclear on parameter passing
5. Bugzilla 2396: -O causes very long execution time on foreach loop of large array of structs
6. Bugzilla 2834: Struct Destructors are not called by the GC, but called on explicit delete.
7. Bugzilla 2952: Segfault on exit when using array ops with arrays of doubles larger than 8 elements
8. Bugzilla 3831: writeln of a delegate typeid
9. Bugzilla 4583: PIC code not working: EBX register set incorrectly
10. Bugzilla 5689: [64-Bit] uniform() fails with -profile
11. Bugzilla 5835: TypeInfo_Array.getHash creates raw data hash instead using array element hash function
12. Bugzilla 5842: hash table corruption
13. Bugzilla 5995: string append negative integer causes segfault
14. Bugzilla 8366: Overriding const member function in conjunction with mutable overload causes a strange error
15. Bugzilla 8828: Long compilation time of a destroy() on a large fixed-sized matrix
16. Bugzilla 9092: GC.extend allocates less then it reports
17. Bugzilla 9161: Linker error on linux if struct has @disabled ~this();
18. Bugzilla 10277: Incorrect error file and line on redeclaration of TypeInfo
19. Bugzilla 10747: Win64: warning about non-existing vc100.pdb
20. Bugzilla 11653: No error when forgetting break with range cases.
21. Bugzilla 12962: osver.mak should use isainfo on Solaris to determine model
22. Bugzilla 13123: Disallow throwing contracts for nothrow functions
23. Bugzilla 13661: static array init does not call destructors
24. Bugzilla 13732: Regular templates can use "template this", and they allow any type to be passed
25. Bugzilla 14024: [CTFE] unstable postblit/destructor call order on static array assignment
26. Bugzilla 14617: PTHREAD_MUTEX_INITIALIZER does not work on OSX
27. Bugzilla 14694: Functions nested within functions need their body in the generated .di file
28. Bugzilla 14905: duplicate error message: 'Warning: statement is not reachable'
29. Bugzilla 15290: length of associative array literal with duplicate keys is wrong
30. Bugzilla 15353: std.experimental.allocator cannot free memory in its destructor if the GC is an ancestor
31. Bugzilla 15525: SEGV running semantic analysis on non-root decl that has errors.
32. Bugzilla 16575: [ICE] extern(C++) function with D specific types
33. Bugzilla 16743: Intrinsic recognition sometimes fails if a software implementation is available
34. Bugzilla 17764: [scope][DIP1000] Escape checker defeated by composition transformations
35. Bugzilla 18828: [-betterC] helpless error in object.d
36. Bugzilla 18973: @disable on const toHash causes unresolved symbol error
37. Bugzilla 19178: Static initialization of 2d static arrays in structs produces garbage or doesn't compile sometimes
38. Bugzilla 19285: false positive GC inferred
39. Bugzilla 19635: -checkaction=context not working with attributes
40. Bugzilla 19783: Fail to emplace struct with betterC
41. Bugzilla 19831: throw/catch in scope(exit) crashes with illegal instruction
42. Bugzilla 20019: Symbol not found: _dyld_enumerate_tlv_storage on macOS 10.15
43. Bugzilla 20048: [Windows] Program segfaults when running tests
44. Bugzilla 20365: Copy constructor not invoked on static arrays of structs but the postblit works
45. Bugzilla 20559: Reference type + alias this + AA + AA.clear causes SEGV
46. Bugzilla 20613: String switch in -betterC fails for 7+ labels
47. Bugzilla 20823: [DIP 1000] un-@safe code fails with dip1000
48. Bugzilla 21314: ICE on extern(c++) static class variables
49. Bugzilla 21416: betterC mode program with C++ interface fails to link
50. Bugzilla 21432: [CTFE] Cannot declare enum array in function scope
51. Bugzilla 21472: -checkaction=context doesn't work with tupleof
52. Bugzilla 21477: TypeInfo errors in betterC are cryptic
53. Bugzilla 21676: [ICE][SIMD] DMD crashing with SIMD + optimizations + inlining
54. Bugzilla 21956: ice on foreach over an AA of noreturn
55. Bugzilla 22108: DIP1000 parameter mistakenly interpreted as return scope instead of scope
56. Bugzilla 22124: Corrupted closure when compiling with -preview=dip1000
57. Bugzilla 22126: -checkaction=context should not print overlapped struct members
58. Bugzilla 22134: Deprecate returning a discarded void value from a function
59. Bugzilla 22179: core.stdcpp.utility is missing in dmd binary dist
60. Bugzilla 22283: -preview=in -inline leads to strange error inside object.d
61. Bugzilla 22351: extern(C++) function contravariant in D, but not C++
62. Bugzilla 22390: Compiler crash when iterating empty array of bottom types
63. Bugzilla 22429: importC: designator-list not supported yet
64. Bugzilla 22535: ImportC: gcc/clang math intrinsics are rejected.
65. Bugzilla 22553: ImportC: undefined identifier __uint128_t
66. Bugzilla 22598: importC: Add support for __extension__ keyword
67. Bugzilla 22610: ImportC: 3 extra initializer(s) for struct __tag21
68. Bugzilla 22626: Can't use synchronized member functions with -nosharedaccess
69. Bugzilla 22652: importC: Braceless initializer of nested struct is rejected.
70. Bugzilla 22664: Disassembler mistakes rdtscp for invlpg ECX
71. Bugzilla 22674: ImportC: compatible types declared in different translation units are not treated equivalent in D.
72. Bugzilla 22680: @safe hole with destructors
73. Bugzilla 22706: Bad error on explicit instantiation of function template with auto ref parameter
74. Bugzilla 22717: object.TypeInfo_Struct.equals swaps lhs and rhs parameters
75. Bugzilla 22724: ImportC: VC extension __pragma(pack) is not implemented
76. Bugzilla 22756: ImportC: no __builtin_offsetof
77. Bugzilla 22784: pragma(printf) applies to nested functions
78. Bugzilla 22830: Solaris: error: module 'core.stdc.math' import 'signbit' not found
79. Bugzilla 22846: [REG 2.066] SIGBUS, Bus error in _d_newarrayiT
80. Bugzilla 22865: __traits(compiles) affects inferrence of attributes
81. Bugzilla 22875: importC: cannot assign const typedef with pointers to non-const one
82. Bugzilla 22925: importC: multi-dimensional array is not a static and cannot have static initializer
83. Bugzilla 22952: Compiler fails to find package.d modules via -mv map
84. Bugzilla 22973: importC: sizeof with array and pointer access gives array type has incomplete element type
85. Bugzilla 23006: importC: dmd segfaults on static initializer for multi-dimensional array inside struct
86. Bugzilla 23007: importC: dmd segfaults for extra braces in array initializer
87. Bugzilla 23009: [CODEGEN][SIMD] SIMD + optimizations + inlining + double
88. Bugzilla 23010: mixed in aliaseqs used as type dont initualize
89. Bugzilla 23012: importC: asm label to set symbol name not applied from forward declaration
90. Bugzilla 23018: importC: syntax error for sizeof with postfix operator on parenthesized expression
91. Bugzilla 23022: [dip1000] typesafe variadic parameter should not infer return
92. Bugzilla 23027: ImportC: Array of struct is not a static and cannot have static initializer
93. Bugzilla 23030: importC: errors using typedef struct after first use as const
94. Bugzilla 23037: importC: type with only type-qualifier doesn't work
95. Bugzilla 23038: importC: sizeof inside struct has struct members in scope
96. Bugzilla 23039: importC: declaration with array length has itself in scope
97. Bugzilla 23042: -betterC still includes RTInfo
98. Bugzilla 23044: importC: comma expression with function call parsed as declaration
99. Bugzilla 23045: importC: casted function type is missing extern(C)
100. Bugzilla 23047: [ICE][SIMD] Do not SROA vector types
101. Bugzilla 23050: Incorrect disassembly of code with -vasm and 0xBE and 0xBF opcodes
102. Bugzilla 23054: importC: struct compound-literal assigned by pointer has wrong storage duration
103. Bugzilla 23056: importC: dmd asserts for missing return statement in CTFE function
104. Bugzilla 23057: importC: dmd segfault on invalid syntax
105. Bugzilla 23063: It is possible to return a noreturn value
106. Bugzilla 23068: [betterC] BetterC does not respect -checkaction=halt
107. Bugzilla 23073: [dip1000] scope inference from pure doesn't consider self-assignment
108. Bugzilla 23088: spurious case of "expression has no effect"
109. Bugzilla 23105: __trait(getMember) and mixin() of the same code as a string behave differently
110. Bugzilla 23112: code passes @nogc, allocates anyway
111. Bugzilla 23123: -vasm wrong result for cmpxchg16b
112. Bugzilla 23135: Covariance rules for C++ member functions mismatch D
113. Bugzilla 23138: Overrides of member functions of an inherited class ignores attribute "downcast"
114. Bugzilla 23159: [betterC] scope(failure) use in betterC gives confusing error
115. Bugzilla 23167: inaccurate diagnostic for internal tuple bound violation
116. Bugzilla 23168: [DIP1000] return scope wrongly rewritten for structs with no indirections
117. Bugzilla 23169: [DIP1000] Mangling does not distinguish return and return scope
118. Bugzilla 23173: "Error: signed integer overflow" for compiler generated string of long.min
119. Bugzilla 23174: Can't alias tuple when it's part of dot expression following a struct literal
120. Bugzilla 23176: -vasm misses immediates for some SSE2 instructions
121. Bugzilla 23178: Unknown error using alias to __traits evaluated as expression
122. Bugzilla 23192: Can't iterate aggregate fields with static foreach inside a member function
123. Bugzilla 23205: Can't declare mixin template inside a function
124. Bugzilla 23206: ImportC: __declspec(noreturn) does not compile
125. Bugzilla 23207: dmd hangs compiling druntime/src/core/stdc/errno.c
126. Bugzilla 23213: ImportC - variable length array does not compile
127. Bugzilla 23214: ImportC: typedef with unsigned types does not compile
128. Bugzilla 23217: ImportC: extra initializer(s) error for array of structs
129. Bugzilla 23222: vcg-ast segfaults on aliases to parent module
130. Bugzilla 23223: Aliases to modules print the modules contents into ast dump
131. Bugzilla 23224: ImportC: memory model switch is not passed to C preprocessor
132. Bugzilla 23225: OpenBSD: cpp invocation cannot find files
133. Bugzilla 23230: cannot implicitly convert expression define of type char[7] to char
134. Bugzilla 23235: [DIP1000] typesafe variadic parameters should automatically be scope
135. Bugzilla 23236: can't initialize a @mustuse member in constructor
136. Bugzilla 23241: __traits getMember breaks compilation when hit an alias
137. Bugzilla 23249: Deprecation: argument &p for format specification "%m" must be char*, not char**
138. Bugzilla 23251: Deprecation: format specifier "%[a-z]" is invalid
139. Bugzilla 23252: Deprecation: format specifier "%[]]" is invalid
140. Bugzilla 23254: Deprecation: format specifier "%S" and "%C" are invalid
141. Bugzilla 23256: must supply -mscrtlib manually when compiling for Windows
142. Bugzilla 23262: typesafe variadic function parameter cannot infer return
143. Bugzilla 23293: ImportC: _Bool bit fields layout does not match gcc
144. Bugzilla 23308: Can't resolve overload of varargs function if one parameter is the result of a ternary expression
145. Bugzilla 23327: [ICE] SEGV in AssocArray!(Identifier, Dsymbol).AssocArray.opIndex(const(Identifier)) at src/dmd/root/aav.d:313
146. Bugzilla 23331: implicit cast from noreturn crashes compiler in various ways
147. Bugzilla 23338: braceless subarray initalizers for struct fields fails
148. Bugzilla 23340: std.path: expandTilde erroneously raises onOutOfMemory on failed getpwam_r()
149. Bugzilla 23342: ImportC: Array compound literals use the GC
150. Bugzilla 23343: ImportC: functions declared with asm label to set symbol name gets extra underscore prepended
151. Bugzilla 23345: ImportC: out of order designated initializers initialize to wrong value
152. Bugzilla 23346: ImportC: pragma pack is not popped
153. Bugzilla 23347: ImportC: pragma pack causes asm label to set symbol name to be ignored
154. Bugzilla 23348: not handling braceless sub structs in initializers
155. Bugzilla 23351: A bunch of Mayonix's dmd-segfaulting programs
156. Bugzilla 23355: invalid template parameter loses error location in some cases
157. Bugzilla 23357: ImportC: compatible types with definitions leads to redeclaration error when used from D.
158. Bugzilla 23379: Cast of expressions with type noreturn result in ice
159. Bugzilla 23380: [dip1000] class parameter should not be treated as ref qua lifetime
160. Bugzilla 23406: [seg fault] enums can cause compile time seg faults with assignments using alias this

#### DMD Compiler enhancements

1. Bugzilla 3952: pragma(msg,...) has bugs + alternative idea
2. Bugzilla 7243: Compiler should call separate function when allocating a struct on the heap
3. Bugzilla 7372: Error provides too little information to diagnose the problem (error: undefined identifier)
4. Bugzilla 9726: Add minimum % coverage required for -cov testing
5. Bugzilla 12330: array.reserve at compile time too
6. Bugzilla 13138: add peek/poke as compiler intrinsics
7. Bugzilla 14690: pragma(inline, true) functions must have their bodies emitted in the .di file
8. Bugzilla 14755: Could -profile=gc also give the number of allocations that led to X bytes being allocated?
9. Bugzilla 16394: TypeInfo.init() for static arrays returns single element instead of whole array
10. Bugzilla 16558: [Mir] Generic unaligned load/store like (like LDC loadUnaligned and storeUnaligned)
11. Bugzilla 16701: Remove Restriction of "package.d" Source File Module Forced to All Lowercase
12. Bugzilla 17575: named mixin template error message
13. Bugzilla 21243: Allow lambdas to return auto ref
14. Bugzilla 21673: [SIMD][Win64] Wrong codegen for _mm_move_ss
15. Bugzilla 22880: importC: support __restrict__ __signed__ __asm__
16. Bugzilla 22911: dtoh: make include directives sorted for generated headers
17. Bugzilla 23079: [dip1000] be more lenient when taking address of ref return
18. Bugzilla 23141: Improve -release switch description
19. Bugzilla 23142: Scope should not apply to unittests
20. Bugzilla 23143: ImportC: forward enum declarations need to be supported
21. Bugzilla 23165: lambda functions are not inlined
22. Bugzilla 23191: [dip1000] scope parameter can be returned in @system code
23. Bugzilla 23216: Better Error Message For foreach_reverse Without Bidirectional Range
24. Bugzilla 23284: Enhance floating point not representable error message
25. Bugzilla 23295: [dip1000] explain why scope inference failed
26. Bugzilla 23306: @disable new() ought not disable scope A = new A
27. Bugzilla 23369: Confusing error message for duplicate import
28. Bugzilla 23376: Allow multi-code-point HTML entities
29. Bugzilla 23384: Suggest calling matching base class method when hidden

#### Phobos regression fixes

1. Bugzilla 11309: std.concurrency: OwnerTerminated message doesn't work
2. Bugzilla 20354: interface is not supported by CanCAS in core.internal.atomic
3. Bugzilla 23245: [REG 2.099] std.format ignores non-const toString method of static array element
4. Bugzilla 23246: [REG 2.099] std.format ignores non-const toString method of associative array value
5. Bugzilla 23268: clamp no longer accepts shorts

#### Phobos bug fixes

1. Bugzilla 64: Unhandled errors should go to stderr
2. Bugzilla 3798: core.cpuid locks systems with Xeon E5530 CPU
3. Bugzilla 9025: core.thread.Fiber seems to crash on Win64
4. Bugzilla 10469: WinAPI declarations in std.process should be moved to core.sys.windows.windows
5. Bugzilla 11192: std.demangle doesn't demangle alias template arguments
6. Bugzilla 14543: std.algorithm.searching.until does not handle range sentinels nicely
7. Bugzilla 16034: map should be possible with a reference only
8. Bugzilla 16232: std.experimental.logger.core.sharedLog isn't thread-safe
9. Bugzilla 17966: chunkBy cannot accept an input range (from multiwayMerge)
10. Bugzilla 18631: std.random.choice does not work with const arrays
11. Bugzilla 22637: std.conv to!double and parse!double dont throw on under/overflow
12. Bugzilla 22683: core.math.rndtonl can't be linked
13. Bugzilla 23182: Can't assign struct with opAssign to SumType in CTFE
14. Bugzilla 23196: File constructor fails to preallocate oom error, uses exception instead
15. Bugzilla 23215: calling std.file.remove with null string segfaults in strlen
16. Bugzilla 23250: Unicode regional indicators are not paired correctly
17. Bugzilla 23270: std.random.dice is poorly documented
18. Bugzilla 23288: zlib: Fix potential buffer overflow
19. Bugzilla 23324: Incorrect source link in std.format docs
20. Bugzilla 23350: Nondeterministic test failure in std.concurrency
21. Bugzilla 23362: Permutations should be a forward range

#### Phobos enhancements

1. Bugzilla 13893: "rawRead must take a non-empty buffer"
2. Bugzilla 15128: "IP_ADD_MEMBERSHIP" error in winsock2.d
3. Bugzilla 18735: all versions of find and canfind should identify usage of predicate
4. Bugzilla 20869: std.algorithm.mutation : move is overly trusting of opPostMove
5. Bugzilla 21000: -preview=nosharedaccess precludes use of stdin,stdout,stderr
6. Bugzilla 23101: [std.sumtype] canMatch does not account ref
7. Bugzilla 23298: std.string wrap wraps early
8. Bugzilla 23333: DList range can be @nogc
9. Bugzilla 23370: std.base64 can have more @nogc functions

#### Druntime regression fixes

1. Bugzilla 1180: the GC failes to handle large allocation requests propperly
2. Bugzilla 7365: [Regression after 2.057] AAs broken for Object keys and values with opEquals
3. Bugzilla 8477: [2.060 beta] Strange error calling member func from overridden Exception::toString()
4. Bugzilla 8633: core.atomic not documented
5. Bugzilla 9099: core.atomic.atomicLoad() cannot handle non-POD structs
6. Bugzilla 10976: thread_joinAll after main exit performed too late
7. Bugzilla 11149: Runtime.args no longer available in static constructors.
8. Bugzilla 11301: [2.064 beta] core.sys.linux.sys.mman triggers enum resolution error
9. Bugzilla 11378: implicit runtime initialization/finalization is broken
10. Bugzilla 11478: shared library on osx: worked in 2.062, fails in 2.063.2, still fails in 2.064
11. Bugzilla 12136: [AA] Associative array keys and values become non-properties.
12. Bugzilla 12220: [REG2.066a] hash.get() does not accept proper parameters
13. Bugzilla 12427: Regression (2.066 git-head): Building druntime fails with -debug=PRINTF
14. Bugzilla 12710: Bad @nogc requirement for Windows callbacks
15. Bugzilla 12738: core.sys.posix.signal sigaction_t handler type mismatch
16. Bugzilla 12848: [REG2.061] crash in _d_run_main() on some unicode command line argument (Win32)
17. Bugzilla 13078: [dmd 2.066-b2] AA rehash failed with shared
18. Bugzilla 13084: ModuleInfo.opApply delegate expects immutable parameter
19. Bugzilla 13111: GC.realloc returns invalid memory for large reallocation
20. Bugzilla 13148: ModuleInfo fields are unnecessary changed to const
21. Bugzilla 13399: va_arg is nothrow yet may throw
22. Bugzilla 13748: benchmark druntime/benchmark/aabench/string.d fails
23. Bugzilla 13809: dup no longer works with types with postblit and destructors
24. Bugzilla 14467: arr.capacity sometimes erroneously returns 0
25. Bugzilla 14626: [REG2.066] byValue doesn't work with inout AA
26. Bugzilla 14746: [REG2.068a] Behavior change with struct destructor and alias this
27. Bugzilla 14750: druntime/test/coverage was added to druntime, but not to the MANIFEST - zip file broken again
28. Bugzilla 14863: CLOCK_BOOTTIME should be optional to support <2.6.39 kernels
29. Bugzilla 14882: [REG] MANIFEST is missing test/common.mak
30. Bugzilla 14990: No rule to make target `src/core/sys/windows/stdio_msvc12.d', needed by 'druntime.zip'.
31. Bugzilla 14993: Allocating in a destructor segfaults instead of throwing InvalidMemoryOperationError
32. Bugzilla 15224: making 'clean' results in garbage commands
33. Bugzilla 15334: [REG 2.069] OS X core.time ticksPerSecond calculation is incorrect
34. Bugzilla 15434: [REG2.068] object.d imports from rt (breaking inline builds)
35. Bugzilla 15482: new uuid.d forbids to link statically with other libraries
36. Bugzilla 15822: InvalidMemoryOperationError when calling GC.removeRange/Root from a finalizer
37. Bugzilla 15911: undefined __Unwind_GetIPInfo for x86_64
38. Bugzilla 16211: [REG 2.058] Cyclic dependencies broken again
39. Bugzilla 16974: [REG2.068] Equal associative arrays with associative array keys are considered unequal
40. Bugzilla 17188: stdc qsort predicate requires scope parameters
41. Bugzilla 17914: [Reg 2.075] Fibers guard page uses a lot more memory mappings
42. Bugzilla 18071: [REG2.078] byKey, byValue and byKeyValue are now a hole for unsafe code
43. Bugzilla 18193: module config is in file 'rt/config.d' which cannot be read
44. Bugzilla 18252: [Reg 2.078] comparison of arrays of associative arrays no longer compiles
45. Bugzilla 18652: hashOf example doesn't compile
46. Bugzilla 18996: Inserting a type containing indirections into an std.container Array causes SIGILL(4). Illegal Instruction.
47. Bugzilla 19005: [REG2.081-b1] object.hashOf no longer works for std.datetime.date.Date
48. Bugzilla 19322: A lot of memory is consumed and not freed to the system when Exception is formatted with stacktrace in debug
49. Bugzilla 19498: undefined identifier rt_loadLibraryW
50. Bugzilla 19701: undefined reference to `_D6object__T6hashOf
51. Bugzilla 19796: druntime PR#1982 broke array ops on double[] due to wrong assumption of integral element type
52. Bugzilla 19902: hasElaborateCopyConstructor doesn't know about copy constructors
53. Bugzilla 20219: Idle D programs keep consuming CPU in Gcx.scanBackground
54. Bugzilla 20227: "Aborting from src/core/sync/event.d(141) Error: pthread_mutex_destroy failed." after fork()
55. Bugzilla 20256: problem with signal handling and parallel GC on linux
56. Bugzilla 20270: [REG2.087] Deadlock in garbage collection when running processes in parallel
57. Bugzilla 20438: [Reg 2.086] GC: memory not reusable when calling GC.collect after GC.free
58. Bugzilla 20447: [REG 2.089] importing core.thread exposes unistd, hiding object.dup
59. Bugzilla 20748: Deprecation for assert using shared type and checkaction=context
60. Bugzilla 20778: exception messages with nulls within are treated inconsistently
61. Bugzilla 21097: [REG2.083] Stack exhaustion upon large struct .destroy
62. Bugzilla 21110: OOB memory access, safety violation
63. Bugzilla 21309: Missing core.thread.threadbase documentation
64. Bugzilla 21363: [REG2.094] Implementation of core.bitop.ror(x,0) is using UB
65. Bugzilla 21642: [REG 2.084] hashOf will fail to compile for some structs/unions that recursively contain shared enums
66. Bugzilla 21656: [REG2.091] Wrong file read during exception stringification leads to SIGBUS
67. Bugzilla 21712: [REG 2.096.0] sometimes coverage *.lst files are corrupted
68. Bugzilla 22178: [REG 2.097] Compilers do not compile on Musl Libc
69. Bugzilla 22210: std.meta.allSatisfy in mutual recursion classes cannot be compiled
70. Bugzilla 22235: core.demangle does not support noreturn
71. Bugzilla 22829: [REG master] Undefined symbol stderr first referenced in file test19933.o
72. Bugzilla 22834: runnable_cxx/stdint.d: Undefined reference to _Z15testCppI8Mangleahahah

#### Druntime bug fixes

1. Bugzilla 391: .sort and .reverse break utf8 encoding
2. Bugzilla 3454: Inconsistent flag setting in GC.realloc()
3. Bugzilla 4809: Stack trace when throwing exception misses location of the throw statement
4. Bugzilla 5272: Postblit not called on copying due to array append
5. Bugzilla 5375: Detection of cyclic module imports provides error findings on console, instead of exception msg
6. Bugzilla 5407: X86_64: Segfault on AA Foreach
7. Bugzilla 5593: Add dladdr to druntime for linux/FreeBSD
8. Bugzilla 5930: cas doesn't work when used in code compiled with -D
9. Bugzilla 5999: Runtime treats floating NaNs to be equal
10. Bugzilla 6045: Unable to demangle symbols
11. Bugzilla 6333: The 'capacity' function is not pure/nothrow/@safe.
12. Bugzilla 6376: core.thread.thread_scanAll doesn't scan the stack due to ASLR on Mac OS X 10.7
13. Bugzilla 6646: [SafeD] array.reserve is not @safe/trusted
14. Bugzilla 7112: Add function in core.sys.posix.signal
15. Bugzilla 7606: core.time.TickDuration opCmp accepts only lvalues
16. Bugzilla 7954: x86_64 Windows fibers do not save nonvolatile XMM registers
17. Bugzilla 7971: Cannot compile druntime with -debug=PRINTF
18. Bugzilla 8046: simd.d needs some documentation
19. Bugzilla 8132: LPTSTR always aliases to LPSTR
20. Bugzilla 8274: thread_attachThis only works for main thread
21. Bugzilla 8301: Access violation when a big array is allocated
22. Bugzilla 8527: object.destroy doesn't destroy interfaces
23. Bugzilla 8650: SLice opOpAssign SLice with overlap does not throw
24. Bugzilla 8872: Missing extended window styles (WS_EX_... enumeration) in windows header
25. Bugzilla 8960: DMD tester: Unable to set thread priority
26. Bugzilla 9030: immutable _d_args can be written to with main(char[][])
27. Bugzilla 9275: [GC] removeRoot hits assert(0) instead of being a no-op (as documented)
28. Bugzilla 9373: Add deprecation message to all empty deprecation statements
29. Bugzilla 9783: profiling recursive function calls yields bad tree timing
30. Bugzilla 9799: Missing aliases and enums in druntime imports
31. Bugzilla 9852: Empty associative array crashes program
32. Bugzilla 10057: [2.063 beta] Module info overwritten in shared phobos.
33. Bugzilla 10420: Incorrect function attributes in core.exception
34. Bugzilla 10436: The runtime should print stack traces to stderr (like on *nix), not stdout
35. Bugzilla 10457: _d_toObject might fail with shared libraries
36. Bugzilla 10593: array's reserve/capacity go haywire if length has been changed prior
37. Bugzilla 10701: [GC] segfault in GC
38. Bugzilla 10711: shared phobos library should not depend on _Dmain
39. Bugzilla 10720: ICE with is(aaOfNonCopyableStruct.nonExistingField)
40. Bugzilla 10838: Null pointer dereference in gc.gcx.Gcx.isMarked
41. Bugzilla 10894: Numerous DDoc parameter warnings in druntime (as found by 10236)
42. Bugzilla 10897: btc, btr and bts shouldn't be safe
43. Bugzilla 11011: core.time.Duration has example code which cannot compile
44. Bugzilla 11168: core.stdc.time.asctime() is incorrectly marked as @trusted
45. Bugzilla 11174: Both AF_PACKET and SO_BINDTODEVICE undefined
46. Bugzilla 11293: wrong locale enumerate value
47. Bugzilla 11294: Object destruction with alias this
48. Bugzilla 11393: [GC] GC realloc and free don't ignore interior pointers
49. Bugzilla 11414: druntime should run debug unittest
50. Bugzilla 11446: [GC] GC realloc doesn't ignore non-GC owned pointers
51. Bugzilla 11519: fix timing issue in core.thread unittest
52. Bugzilla 11594: synchronized causing segfault instead of Error.
53. Bugzilla 11674: core.stdc.fenv.fenv_t declaration not architecture aware
54. Bugzilla 11761: aa.byKey and aa.byValue are not forward ranges
55. Bugzilla 12121: atomicLoad!(MemoryOrder.acq) should not emit additional code on X86
56. Bugzilla 12233: Attempting to use TypeInfo.init results in a compiler error due to lack of 'this'.
57. Bugzilla 12289: incorrect core.stdc.stdio.fpos_t alias
58. Bugzilla 12755: thread.di is outdated
59. Bugzilla 12800: Fibers are broken on Win64
60. Bugzilla 12843: Unit tests fail when GC is compiled with SENTINEL
61. Bugzilla 12958: core.checkedint.mulu is broken
62. Bugzilla 12975: posix.mak should use isainfo on Solaris systems to determine model
63. Bugzilla 13052: TypeInfo.getHash should return same hash for different floating point zeros.
64. Bugzilla 13057: posix getopt variables in core/sys/posix/unistd.d should be marked __gshared
65. Bugzilla 13058: Thread priority handling doesn't work in Solaris
66. Bugzilla 13186: core/sys/posix/sys/uio.d is not linked into the standard lib
67. Bugzilla 13821: fiber + exception + win server 2012 failures
68. Bugzilla 13854: Appending to an interior slice of a large array results in unnecessary 16-byte offset
69. Bugzilla 13878: Appending to an array block with modified flags loses flag info
70. Bugzilla 14036: Do not throw FinalizeError on OutOfMemoryError or InvalidMemoryOperationError
71. Bugzilla 14157: fabsf fabsl for CRuntime_Microsoft
72. Bugzilla 14215: invalid import in core.sys.linux.stdio
73. Bugzilla 14226: invalid Runtime.traceHandler setup
74. Bugzilla 14247: string within demangled symbol name should be made escape
75. Bugzilla 14303: rt.util.container.array.Array unittest contains invalid code
76. Bugzilla 14319: core.demangle does not support member function attributes
77. Bugzilla 14350: Unit test failures are not displayed in Windows GUI programs
78. Bugzilla 14401: typeid(shared X).init is empty for class types
79. Bugzilla 14423: struct destructors not finalized for AA values
80. Bugzilla 14439: aa's keys, values not usable in @safe context
81. Bugzilla 14464: coverage merge doesn't work
82. Bugzilla 14476: core.thread unit tests failing on FreeBSD 9+
83. Bugzilla 14536: Calling destroy() on a on an extern(C++) class causes a segfault
84. Bugzilla 14563: core.demangle: Does not demangle type modifers
85. Bugzilla 14565: dmd -profile produces garbled output for long-running CPU-intensive processes
86. Bugzilla 14576: [ddemangle] core.demangle unable to handle ambiguity in symbols
87. Bugzilla 14601: pthread functions aren't marked @nogc
88. Bugzilla 14785: Some corner cases are not handled properly by core.checkedint.
89. Bugzilla 14870: incorrect use of assert to detect environmental errors in core.time
90. Bugzilla 15009: Object.destroy calls unnecessary postblits for destruction of static arrays object
91. Bugzilla 15036: SimpleDllMain assumes various symbols are available unqualified
92. Bugzilla 15104: Switching fibers in finally blocks breaks EH
93. Bugzilla 15111: hashOf fails for structs that have an alias this to a dynamic array
94. Bugzilla 15270: use TLS to store Thread.getThis (pthread_getspecific causes heavy lock contention)
95. Bugzilla 15322: version(Unicode) should affect only default aliases
96. Bugzilla 15367: array of delegates comparison fails
97. Bugzilla 15393: Debug versions in GC code doesn't compile.
98. Bugzilla 15838: Many Win32 API callback functions miss extern(Windows)
99. Bugzilla 15939: GC.collect causes deadlock in multi-threaded environment
100. Bugzilla 15958: Missing extern(Windows) of core.sys.windows functions
101. Bugzilla 15959: core.sys.windows modules should be modified for x64
102. Bugzilla 15976: explicite TLS initializes badly in DLLs if other threads exist
103. Bugzilla 15987: core.sys.windows.msacm remains pseudo definitions
104. Bugzilla 15997: Wrong constant value for ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED in winhttp
105. Bugzilla 16007: Some Win32 API structs has wrong definitions
106. Bugzilla 16049: core.sys.windows structs have wrong sizes and aligns
107. Bugzilla 16230: core.atomic.atomicLoad removes shared from aggregate types too eagerly
108. Bugzilla 16380: no bindings for err.h
109. Bugzilla 16470: Segfault with negative array length
110. Bugzilla 16594: module destructors called again if an exception got thrown earlier
111. Bugzilla 16651: atomicOp!"-="(ulong, uint) = wrong result/codegen
112. Bugzilla 16654: hashOf returns different hashes for the same string value
113. Bugzilla 16658: Win32API: default IE ver. set to 4.0 is too old
114. Bugzilla 16764: hashOf is misleading, error-prone, and useless
115. Bugzilla 16856: D does not work on FreeBSD current (what will eventually be 12) due to libunwind
116. Bugzilla 17108: Associative array byKeyValue is unsafe
117. Bugzilla 17375: colliding modules detected with binutils 2.28 linker and shared libraries
118. Bugzilla 17431: GCBits should be @nogc to prevent deadlocks
119. Bugzilla 17609: core.demangle demangles delegate variables as functions
120. Bugzilla 17610: core.demangle shows return type of template alias parameter
121. Bugzilla 17611: core.demangle cannot demangle delegates with function attributes
122. Bugzilla 17624: typo in Fields documentation section of https://dlang.org/library/object/exception.html
123. Bugzilla 17665: Win64 atomicLoad for T[] cannot be cast from size_t[2]
124. Bugzilla 17788: MSCOFF: TLS broken when linking with linker from VS2017 15.3.1
125. Bugzilla 17829: core.stdc.errno does not work with -betterC
126. Bugzilla 17851: htonl already defined in phobos64.lib
127. Bugzilla 17956: core.memory unittest failure (possibly glibc 2.26 specific)
128. Bugzilla 18011: core.sys.condition cannot be used as shared
129. Bugzilla 18117: ldiv_t struct in core.stdc.stdlib -- int vs c_long expectations
130. Bugzilla 18240: core.stdc.wchar_ wmemset, etc. should be pure
131. Bugzilla 18247: core.stdc.math functions that never set errno should be pure
132. Bugzilla 18279: rt.util.utf does not properly reserve buffer in toUTF16/toUTF16z
133. Bugzilla 18300: core.demangle demangling of really long symbol fails
134. Bugzilla 18482: wincrypt functions should be @nogc nothrow
135. Bugzilla 18531: core.exception.RangeError@src/core/demangle.d(216): Range violation
136. Bugzilla 18536: Bad stack traces when building with -m32mscoff
137. Bugzilla 18537: Cannot pass absolute path to coverage options
138. Bugzilla 18547: Win32: throwing exception in fiber crashes application
139. Bugzilla 18643: Compiling error when combining CAS and numeric literal.
140. Bugzilla 18904: core.internal.string has issues with radix
141. Bugzilla 18932: core.internal.hash.hashOf(val, seed) ignores seed when val is a raw pointer
142. Bugzilla 18989: On OSX32, core.stdc.time.clock() should resolve to clock$UNIX2003()
143. Bugzilla 19008: core.internal.convert.toUbyte doesn't work on enums
144. Bugzilla 19046: OSX: bad value for core.stdc.time.CLOCKS_PER_SEC
145. Bugzilla 19073: core.internal.hash should not bitwise hash representations of floating point numbers
146. Bugzilla 19087: final switch cannot be used in -betterC
147. Bugzilla 19090: core.internal.hash.bytesHash unit test uses incorrect test vector on BigEndian machines
148. Bugzilla 19092: __delete doesn't work with immutable
149. Bugzilla 19177: No version (Solaris) in druntime/src/core/stdc/time.d
150. Bugzilla 19204: hashOf doesn't accept SIMD vectors
151. Bugzilla 19250: DWARF Backtraces with very long symbol names read out of bounds when printing
152. Bugzilla 19262: hashOf associative array should infer nothrow
153. Bugzilla 19281: GC mishandles allocations >= 4GB
154. Bugzilla 19282: hashOf segfaults for non-null C++ objects
155. Bugzilla 19314: Thread object destruction may result in UB
156. Bugzilla 19332: hashOf fails to compile for const struct that has non-const toHash & has all fields bitwise-hashable
157. Bugzilla 19401: Fix bug in core.internal.traits.hasElaborateDestructor & hasElaborateCopyConstructor for struct with static array alias & for nested structs/unions
158. Bugzilla 19433: Don't consume --DRT-* options if rt_cmdline_enabled is false
159. Bugzilla 19481: Aborting from local/libphobos/libdruntime/core/sync/mutex.d(95) Error: pthread_mutex_init failed.
160. Bugzilla 19489: Null function call results in no stack trace
161. Bugzilla 19522: [GC] GC.query/addrOf/sizeOf fail for freed memory
162. Bugzilla 19554: [2.084.0] Confusing message - Warning: struct Foo has method toHash
163. Bugzilla 19562: core.internal.hash.hashOf array of pointers or delegates should be @safe
164. Bugzilla 19568: hashOf should not unnecessarily call a struct's fields' postblits & dtors in CTFE
165. Bugzilla 19571: Incorrect definition of DTM_FIRST in core.sys.windows.commctrl
166. Bugzilla 19582: Make core.internal.convert.toUbyte in CTFE for arrays work with reference type elements and not call postblits/dtors
167. Bugzilla 19593: dstrcmp with -profile causes stack overflow
168. Bugzilla 19723: wrong time values in GC.profileStats
169. Bugzilla 19810: destroy does not work for C++ classes without destructor
170. Bugzilla 19830: core.memory.__delete destructs arrays of structs in the wrong order
171. Bugzilla 19847: no GC memory above 4GB reported with --DRT-gcopt=profile:1
172. Bugzilla 19861: core.cpuid reports the wrong number of threads
173. Bugzilla 19909: core.stdc.errno missing POSIX error code on Windows
174. Bugzilla 20026: retrying while pthread_cond_signal/pthread_cond_broadcast return EAGAIN
175. Bugzilla 20049: object.destroy doesn't propagate attributes
176. Bugzilla 20066: Assertion on void[] does not compile with -checkaction=context
177. Bugzilla 20088: void[] cast unusable in betterC due to new __ArrayCast template
178. Bugzilla 20155: Allocating a struct with dtor on the GC heap can produce false pointers
179. Bugzilla 20214: GC: realloc can result in false pointers if address doesn't change
180. Bugzilla 20271: Handle forking in the GC
181. Bugzilla 20299: checkaction=context not working with temporary destructors
182. Bugzilla 20303: Memory leak in core.thread
183. Bugzilla 20315: checkaction=context fails for const(void[]) argument
184. Bugzilla 20322: checkaction=context fails for wstring/dstring arguments
185. Bugzilla 20323: checkaction=context fails for non-copyable arguments
186. Bugzilla 20346: std.uuid does not compile with checkaction=context
187. Bugzilla 20355: undefined identifier U in core.atomic
188. Bugzilla 20364: [REG2.069] changing length for typeof(null)[] array seg faults in _d_arraysetlengthiT()
189. Bugzilla 20440: Associative arrays with values whose opAssign doesn't return a ref don't support require function
190. Bugzilla 20459: Runtime arg parsing should stop at '--'
191. Bugzilla 20468: emplace doesn't forward constructor arguments' (l/r)valueness
192. Bugzilla 20476: chainTogether leaks exception with -dip1008
193. Bugzilla 20497: thread with limited stackspace crashes depending on size of TLS
194. Bugzilla 20512: Return type of memchr should be inout(void)* rather than void*
195. Bugzilla 20513: Return type of wmemchr should be inout(wchar_t)* rather than wchar_t*
196. Bugzilla 20591: ldc doesn't print files' directories when printing stack trace
197. Bugzilla 20629: atomicStore does not compile for struct using -m64
198. Bugzilla 20731: checkaction=context fails for structs with 'alias this'
199. Bugzilla 20750: checkaction=context segfaults for null references
200. Bugzilla 20757: checkaction=context prints characters as integers
201. Bugzilla 20760: checkaction=context doesnt print floating point numbers correctly
202. Bugzilla 20763: checkaction=context does not format pointers
203. Bugzilla 20767: [DIP1014] __move_post_blt must only recursively call itself on a struct's fields not all members
204. Bugzilla 20768: [DIP1014] __move_post_blt must recursively call itself on static arrays whose elements are structs or static arrays that recursively contain structs
205. Bugzilla 20832: Fix ioctl request for TCSETS2
206. Bugzilla 20852: core.sys.posix.sys.wait missing definitions on FreeBSD
207. Bugzilla 20910: Default unittest runner reports wrong unittest count
208. Bugzilla 21029: Remove __ArrayEq which the compiler no longer uses as of DMD PR #11212
209. Bugzilla 21055: core.stdc.stdarg is not @nogc
210. Bugzilla 21116: onArrayCastError is horribly unsafe
211. Bugzilla 21315: TypeInfo_StaticArray.swap is broken
212. Bugzilla 21323: (64-bit Windows only) core.stdcpp.vector could not have core.stdcpp.vector as element
213. Bugzilla 21344: core.stdcpp.string.basic_string does not implement opEquals
214. Bugzilla 21346: core.stdcpp.vector.vector does not implement opEquals
215. Bugzilla 21365: TypeInfo.swap must not allow reachable memory to be freed if interrupted by a garbage collection pass
216. Bugzilla 21371: core.stdcpp.allocator: _Adjust_manually_vector_aligned checks for sentinel unconditionally (Windows only)
217. Bugzilla 21421: core.stdcpp.new_.cpp_delete does not work with classes
218. Bugzilla 21441: TypeInfo_Enum.destroy and TypeInfo_Enum.postblit not calling destroy and postblit of base type
219. Bugzilla 21442: Calling AA.remove from a destructor might lead to InvalidMemoryOperationError
220. Bugzilla 21468: Inscrutable template error when core.stdcpp.vector of a struct with a core.stdcpp.vector field is referenced before the struct's definition
221. Bugzilla 21484: Infinite recursion in core.memory : GC.{get,set,clr}Attr(const scope void*...)
222. Bugzilla 21544: -checkaction=context formats enum members as their base type
223. Bugzilla 21550: core.memory.__delete does not actually work
224. Bugzilla 21578: core.atomic.atomicFetchSub for pointers incorrectly calls wrong function from core.internal.atomic
225. Bugzilla 21631: core.atomic.cas fails to compile with const ifThis (if target is a pointer)
226. Bugzilla 21666: wrong printf format specifier for real with -checkaction=context on Win64
227. Bugzilla 21701: casWeak is not implemented
228. Bugzilla 21764: checkaction=context doesn't work for empty tuples
229. Bugzilla 21857: TypeInfo_Array.compare can give wrong result when either array exceeds 2GB
230. Bugzilla 21919: darwin: SEGV in core.thread tests on OSX 11
231. Bugzilla 21983: dup leaves a partially constructed array if postblit/copy ctor throws
232. Bugzilla 21996: -checkaction=context triggers InvalidMemoryOperationError in finalizer
233. Bugzilla 22024: hashOf does not work on enum types whose base type is a SIMD vector
234. Bugzilla 22026: checkaction=context: Exception thrown by toString hides assertion failures
235. Bugzilla 22076: hashOf(S) can segfault if S.toHash is forwarded via 'alias this' to a receiver which may be null
236. Bugzilla 22081: DWARF v5 support is utterly broken - 'illegal instruction' when throwing exceptions
237. Bugzilla 22085: checkaction=context doesn't support extern(C++) classes
238. Bugzilla 22107: [scope][dip1000] Can't .dup an array of structs with impure copy constructor
239. Bugzilla 22143: Throwable ctor doesn't increment chained exception's ref count
240. Bugzilla 22166: On OpenBSD and Android make core.sys.posix.arpa.inet: htonl, htons, ntohl, & ntohs work correctly on big endian architectures
241. Bugzilla 22167: OpenBSD core.sys.posix.semaphore: sem_t should be a pointer to an opaque struct
242. Bugzilla 22168: Fix non-compiling ELF32_M_INFO & ELF64_M_INFO in core.sys..sys.elf32 & core.sys..sys.elf64 for DragonFlyBSD, FreeBSD, NetBSD, & OpenBSD
243. Bugzilla 22218: Dynamic casts across binary boundaries can easily fail
244. Bugzilla 22328: Specific D types are used instead of Windows type aliases
245. Bugzilla 22336: core.lifetime.move doesn't work with betterC on elaborate non zero structs
246. Bugzilla 22440: OpenBSD: Sync sysctl.d
247. Bugzilla 22443: OpenBSD: Fix Fiber support by adding MAP_STACK
248. Bugzilla 22453: OpenBSD: Add a dummy value for AI_V4MAPPED
249. Bugzilla 22455: Remove useless conditional assignment of DISABLED_TESTS in posix.mak
250. Bugzilla 22456: OpenBSD: timer_* functions don't exist on OpenBSD
251. Bugzilla 22485: OpenBSD: Fix core.sys.openbsd.unistd imports
252. Bugzilla 22523: DRuntime options passed after -- affect current process
253. Bugzilla 22552: moveEmplace wipes context pointer of nested struct contained in non-nested struct
254. Bugzilla 22702: druntime not compliant with D spec re getLinkage
255. Bugzilla 22721: importC: some gnu builtins are rejected
256. Bugzilla 22735: __builtins.di does not implement __builtin_bswap64 correctly
257. Bugzilla 22741: importC: Error: bswap isn’t a template
258. Bugzilla 22744: ImportC: builtins defined in __builtins.di cause undefined symbol linker errors.
259. Bugzilla 22763: importing std.utf fails in BetterC
260. Bugzilla 22777: stat struct in core.sys.windows.stat assumes CRuntime_DigitalMars
261. Bugzilla 22779: druntime: Calling __delete with null pointer-to-struct segfaults
262. Bugzilla 22822: core.sys.posix.sys.stat: PPC stat_t bindings corrupt
263. Bugzilla 22832: Can't destroy class with overloaded opCast
264. Bugzilla 22843: Program hangs on full gc collect with --DRT-gcopt=fork:1 if run under valgrind/callgrind
265. Bugzilla 23051: OpenBSD: Build broken on 2.100.0-beta.1 due to the inout attribute no longer implying the return attribute
266. Bugzilla 23060: MacOS: core.sys.posix.sys.socket missing some definitions
267. Bugzilla 23065: importC: __builtin_expect should use c_long
268. Bugzilla 23067: importC: offsetof macro assumes size_t is defined
269. Bugzilla 23129: object.destroy doesn't consider initialize=false on D classes
270. Bugzilla 23228: OpenBSD: No SIGRTMIN or SIGRTMAX
271. Bugzilla 23302: std.algorithm.comparison.predSwitch producing SwitchError with error message as the filename

#### Druntime enhancements

1. Bugzilla 3851: Array copy error message with no line number
2. Bugzilla 6649: core.sys.posix.sys.ioctl
3. Bugzilla 8411: core.time: No easy way to check if Duration is empty
4. Bugzilla 8544: Expose "cArgs" in druntime
5. Bugzilla 8831: core.atomic: add compare-and-swap function with other result type
6. Bugzilla 12891: add atomicFetchAdd and atomicFetchSub to core.atomic
7. Bugzilla 12964: dev_t is incorrectly defined in runtime for Solaris systems
8. Bugzilla 12976: ModuleInfo should be immutable on Solaris
9. Bugzilla 12977: lf64 definitions aren't correct on Solaris
10. Bugzilla 12978: struct sigaction is too small on 32-bit solaris
11. Bugzilla 13037: SIGRTMIN and SIGRTMAX aren't correctly defined on Solaris
12. Bugzilla 13143: Need backtrace support on Solaris
13. Bugzilla 13144: Add fenv support for Solaris
14. Bugzilla 13145: Need LC_ locale values for Solaris
15. Bugzilla 13146: Add missing function definitions from stdlib.h on Solaris
16. Bugzilla 13559: missing 64-bit version of array short operations
17. Bugzilla 13725: onInvalidMemoryOperationError et al should not be inlined
18. Bugzilla 13826: Move volatileLoad/Store to core.volatile when the volatile keyword is removed
19. Bugzilla 14007: shmctl with IPC_STAT returns wrong number of attachments. shmid_ds is defined wrong.
20. Bugzilla 14117: core.atomic should be @safe
21. Bugzilla 14385: AA should use open addressing hash
22. Bugzilla 14790: coverage merge should detect changed source code
23. Bugzilla 14892: -profile=gc doesn't account for GC API allocations
24. Bugzilla 15007: core.atomic match C++11
25. Bugzilla 15053: Runtime.cArgs not @nogc
26. Bugzilla 15137: core.time: Support Duration/Duration and Duration%Duration
27. Bugzilla 15268: possible deadlock for Thread.getAll/Thread.opApply w/ GC.collect
28. Bugzilla 15628: Exceptions in fibers never caught with /SAFESEH
29. Bugzilla 16377: Make --DRT GC profile information available outside of GC destruction
30. Bugzilla 16664: core.demangle functions are not callable from @safe or pure code
31. Bugzilla 16797: Zero clock resolution lead to division by zero
32. Bugzilla 17300: Enable setting code coverage options on the command line
33. Bugzilla 17563: gc_inFinalizer should be public
34. Bugzilla 18220: Allow rt_trapexceptions to be set from the CLI
35. Bugzilla 18768: object.getArrayHash with custom toHash shouldn't just sum hashes of array elements
36. Bugzilla 18816: [betterC] Standard Streams Unlinkable
37. Bugzilla 18918: core.internal.hash should perform memberwise hashing of structs with references
38. Bugzilla 18920: core.internal.hash of array of scalars should be @safe
39. Bugzilla 18921: make core.internal.hash cater to memberwise hash chaining
40. Bugzilla 18923: Semaphore internal handle should be protected instead of private
41. Bugzilla 18924: Use addition rather than XOR for order-independent hash combination
42. Bugzilla 18925: core.internal.hash auto-hash for structs of scalar fields should be @safe
43. Bugzilla 18942: core.internal.hash can take advantage of alignment info on non-x86
44. Bugzilla 18943: core.internal.hash remove outdated special case for DMD unaligned reads
45. Bugzilla 18981: SIGSEGV during backtrace when debug info is compressed
46. Bugzilla 19009: core.internal.hash.hashOf default hash (absent toHash) should be @nogc
47. Bugzilla 19048: In core.internal.hash.hashOf reduce template bloat: remove auto ref where unneeded and add const where possible
48. Bugzilla 19049: object.hashOf - don't wrap a public function with an identical public function
49. Bugzilla 19071: core.internal.hash should have non-chained toHash overloads
50. Bugzilla 19072: Object.toHash and typeid(void*).getHash(&ptr) should be more varied in their low bits
51. Bugzilla 19075: rt.util.random.Rand48.defaultSeed should prefer RDTSC or mach_absolute_time or QueryPerformanceCounter to ctime.time
52. Bugzilla 19128: argument to alloca may be too large
53. Bugzilla 19214: Support object.destruct() for efficient (and correct!) destruction
54. Bugzilla 19218: object.destroy should check for classes for static arrays
55. Bugzilla 19280: Remove unnecessary error checks in core.time.currSystemTick and currTime
56. Bugzilla 19398: Document meaning of core.atomic.MemoryOrder
57. Bugzilla 19414: object.__cmp(T[]) on big-endian architectures can use memcmp for unsigned integers of any size
58. Bugzilla 19416: Make core.exception.onOutOfMemoryError work in betterC
59. Bugzilla 19421: Make pureMalloc, etc. usable in BetterC
60. Bugzilla 19423: In core.stdc.errno directly link __errno on OpenBSD & NetBSD
61. Bugzilla 19424: Add Haiku support to core.stdc.errno
62. Bugzilla 19455: GC wastes too much memory
63. Bugzilla 19468: Improve cyclic dependency error message
64. Bugzilla 19524: Make core.checkedint work in betterC
65. Bugzilla 19924: Make core.bitop.bswap(ulong) work in betterC
66. Bugzilla 19933: MSVC: Undefined std{in,out,err} with -betterC
67. Bugzilla 19976: Simplify std.internal.convert.toUbyte CTFE path for float and double
68. Bugzilla 20104: core.atomic has no exchange function
69. Bugzilla 20105: core.atomic 'cas' function is incomplete
70. Bugzilla 20106: core.atomic : atomicFence doesn't accept MemoryOrder
71. Bugzilla 20107: core.atomic : Memory order is missing keys
72. Bugzilla 20122: core.atomic.cas discards result on failure
73. Bugzilla 20178: Add TypeInfo_Class/TypeInfo_Interface.isBaseOf (equivalent to C#/Java isAssignableFrom)
74. Bugzilla 20550: Use fixed seeds for treaps in GC
75. Bugzilla 20567: GC should not start threads for parallel marking in simple programs
76. Bugzilla 20577: Add missing symbols related to Windows UAC
77. Bugzilla 20711: object.update requires the "update" callback to wastefully return a copy of the updated value
78. Bugzilla 20741: dup, idup for arrays plus keys, values for built-in associative arrays: if a type is known to have a postblit do not emit code for the non-postblit path and vice versa
79. Bugzilla 20746: Change LCG in garbage collector treap to use full 64 bits of state instead of 48
80. Bugzilla 20787: Add module core.sys.darwin.sys.attr with getattrlist, setattrlist, searchfs, and related definitions
81. Bugzilla 20844: DMD compiler should take care of data alignment, after seeing the 'cas' call
82. Bugzilla 20859: Add overloads of core.sync.rwmutex.ReadWriteMutex.Reader/Writer.tryLock that take a timeout duration
83. Bugzilla 20936: core.sync.rwmutex should have shared overloads (and make it usable in @safe code)
84. Bugzilla 21005: Speed up hashOf for associative arrays
85. Bugzilla 21014: aa.byKeyValue, byKey, byValue very under-documented
86. Bugzilla 21026: add core.bitop.byteswap(ushort)
87. Bugzilla 21030: Reduce template function instantiations related to array equality
88. Bugzilla 21070: -profile=gc makes the program much slower
89. Bugzilla 21417: core.stdcpp.new_.cpp_delete unnecessarily requires destruction to be @nogc
90. Bugzilla 21426: dup, idup for arrays plus keys, values for associative arrays: call postblits directly instead of via TypeInfo function pointer
91. Bugzilla 21784: joining a detached thread results in segfault.
92. Bugzilla 21789: Codecov should use default umask for file permissions
93. Bugzilla 22169: Mark as pure core.sys.posix.string: memccpy, stpcpy, stpncpy, strnlen
94. Bugzilla 22378: OpenBSD: execinfo.d and unistd.d aren't being installed
95. Bugzilla 22395: OpenBSD: Add more OpenBSD-specific function prototypes in string.d and unistd.d
96. Bugzilla 22439: OpenBSD: Sync mman.d
97. Bugzilla 22448: OpenBSD: Add OpenBSD-specific alloc and free function prototypes from stdlib.h
98. Bugzilla 22454: OpenBSD: Add prototypes for pthread_np.h
99. Bugzilla 22457: OpenBSD: enableDwarf in opApply in runtime.d
100. Bugzilla 22542: Explicitly cast backtrace results to int
101. Bugzilla 22545: OpenBSD: Always use system backtrace
102. Bugzilla 22669: OpenBSD: Sync socket.d
103. Bugzilla 22670: Support *BSD kqueue-backed API-compatible inotify shim library
104. Bugzilla 22766: copyEmplace does not work with copy constructor and @disable this()
105. Bugzilla 22908: OpenBSD: Add getpwnam_shadow and getpwuid_shadow function prototypes
106. Bugzilla 22964: array cast message is awkwardly worded

#### dlang.org bug fixes

1. Bugzilla 3093: Object.factory has incomplete documentation
2. Bugzilla 13844: core.stdc.config isn't listed in the docs
3. Bugzilla 14542: Table of contents in specification PDF is broken
4. Bugzilla 15379: "final" attribute on function parameter
5. Bugzilla 15476: DDOC_UNDEFINED_MACRO is undocumented
6. Bugzilla 17324: Floating point 1/(1/x) > 0 if x > 0 not generally true
7. Bugzilla 17514: "positive" -> "nonnegative"
8. Bugzilla 17623: Unexpected failure of an assertion on empty strings
9. Bugzilla 18496: Complement expressions now actually int promote
10. Bugzilla 18855: Behavior of Anonymous Union is Undocumented
11. Bugzilla 18887: inout badly described
12. Bugzilla 19869: FunctionLiteral allows incorrect forms
13. Bugzilla 21086: Wrong source link for core.thread.context
14. Bugzilla 21188: Anonymous structs - not described
15. Bugzilla 21279: cast expression between integer types is not defined
16. Bugzilla 21717: [Oh No! Page Not Found]
17. Bugzilla 21781: [Oh No! Page Not Found] Links to core libs from Better C
18. Bugzilla 22064: Missing documentation page for phobos core.builtins
19. Bugzilla 22237: AA.update is underspecified
20. Bugzilla 22835: Undocumented type specializations of is-expression
21. Bugzilla 23062: Function/delegate inference example does not compile
22. Bugzilla 23194: Add our company to the list of D firms
23. Bugzilla 23237: dmd 2.100.1 download link error.
24. Bugzilla 23276: DOC: ">" instead of ">" in dmd-windows.html
25. Bugzilla 23296: Value Range Propagation not documented
26. Bugzilla 23314: Language spec falsely states that struct field invariants are checked
27. Bugzilla 23325: Assigning dynamic array to static array not documented
28. Bugzilla 23358: Link unusable due to space insertion

#### dlang.org enhancements

1. Bugzilla 15286: is(typeof(symbol))
2. Bugzilla 19036: .tupleof order guarantee
3. Bugzilla 22141: Property .capacity is not listed in the array properties section
4. Bugzilla 23186: wchar/dchar do not have their endianess defined
5. Bugzilla 23359: Rename InOut to ParameterStorageClass

#### Tools bug fixes

1. Bugzilla 18208: demangle RangeError@src/core/demangle.d(230)

### Contributors to this release (299)

A huge thanks goes to all the awesome people who made this release possible.

- 0l-l0
- 12345swordy
- Adam D. Ruppe
- Adam Saka
- Adam Wilson
- Adela Vais
- adil
- adilbaig
- aG0aep6G
- Ahmet Sait
- Alex Rønne Petersen
- Alexandru Caciulescu
- Alexandru Jercaianu
- Alexandru Militaru
- Alexandru Razvan Caciulescu
- Ali Akhtarzada
- Amaury
- Andrea Fontana
- Andreas Hollandt
- Andrei Alexandrescu
- Andrej Mitrovic
- Andrej Petrović
- Andrew Edwards
- Andrew Gough
- Andy Smith
- Anton Dutov
- Arun Chandrasekaran
- Asakusa Yakumo
- Ast-x64
- Ate Eskola
- Atila Neves
- BarrOff
- Basile Burg
- Bastiaan Veelo
- BBasile
- Ben Boeckel
- Ben Jones
- Benjamin Thaut
- bistcuite
- Boris Carvajal
- Brad Anderson
- Brad Roberts
- Brian Callahan
- Brian Schott
- Carlos Une
- Carsten Schlote
- Cauterite
- Chigusa0w0
- chloekek
- Chloé
- Christian Koestlin
- Clement Courbet
- Cristi Cobzarenco
- damianday
- Dan Olson
- Dan Printzell
- Daniel Graczer
- Daniel Green
- Daniel Murphy
- Danny Milosavljevic
- David Dorfman
- David Held
- David Herberth
- David Nadlinger
- David Simcha
- David Soria Parra
- Denis Feklushkin
- Denis Shelomovskij
- Dennis
- Dennis Korpel
- deviator
- Diederik de Groot
- dkorpel
- Dmitry Olshansky
- DoctorNoobingstoneIPresume
- Don Clugston
- Don.Clugston
- drpriver
- Dylan Knutson
- Dzugaru
- e-y-e
- Eduard Staniloiu
- Elias Batek
- Ellery Newcomer
- Emanuele Torre
- Ernesto Castellotti
- Etienne Brateau
- Etienne Cimon
- etienne02
- Eugen Wissner
- Florian
- Florian Brandt
- Flying-Toast
- Gary Willoughby
- GeneralGDA
- George Sapkin
- Giles Bathgate
- GoaLitiuM
- godmyoh
- Greg V
- Grim Maple
- Guillaume Chatelet
- Guillaume Piolat
- H. S. Teoh
- Hara Kenji
- Harry T. Vennik
- hatf0
- Hiroki Noda
- Hiroo Ono
- human
- hygonsoc
- Iain Buclaw
- ichordev
- Igor Khasilev
- Igor Stepanov
- Ilya Yaroshenko
- Imperatorn
- Ingrater
- Iulia Dumitru
- ivan.roubicek
- Jack Stouffer
- Jacob Carlborg
- Jakob Bornecrantz
- Jakob Øvrum
- james
- Jan Jurzitza
- Jasmine Hegman
- Jason Evans
- Jason King
- jdunlap
- Jeremy DeHaan
- Jiyuan Zhang
- jmdavis
- Joakim Brannstrom
- Joakim Noah
- Joan Piles
- Joe
- Johan Engelen
- Johannes Bblume
- Johannes Pfau
- John Colvin
- john-sevsk
- johnch
- Jonas Drewsen
- Jonathan Crapuchettes
- Jonathan M Davis
- Jonathan Marler
- Jose Armando Garcia Sancio
- Joseph Rushton Wakeling
- João Lourenço
- jpiles
- jsatellite
- Kai Nacke
- karita
- KennyTM~
- Kevin Lamonte
- Laeeth Isharc
- Lars T. Kyllingstad
- Leandro Lucarella
- LemonBoy
- lempiji
- lenoil98
- Les De Ridder
- Lionello Lunesu
- Logan Capaldo
- look-at-me
- Lorenzo Gabriele
- Lucia Mcojocaru
- Lucian Danescu
- lucica28
- Luhrel
- Luís Ferreira
- Luís Marques
- Manu Evans
- Marco Leise
- Martin Kinkelin
- Martin Krejcirik
- Martin Nowak
- Mathias Lang
- Mathis Beer
- Matt Kline
- Max Haughton
- Max Samukha
- Maxim Fomin
- Maya Rashish
- MetaLang
- mhh
- Michel Fortin
- Mihails Strasuns
- Mike Franklin
- Mike Parker
- MoGu
- monarchdodra
- MoonlightSentinel
- Moritz Maxeiner
- Márcio Martins
- Nathan Sashihara
- Nemanja Boric
- Nicholas Wilson
- Nick Sabalausky
- Nick Treleaven
- Nicolas F
- Nikolay Tolstokulakov
- Nils Boßung
- Nils Lankila
- nmiculinic
- nordlow
- o3o
- Oleg Nykytenko
- onyx
- Orvid King
- Paul Backus
- Paul O'Neil
- Per Nordlöw
- Petar Kirov
- Peter Alexander
- Philpax
- Puneet Goel
- qchikara
- Quirin F. Schroll
- Radu Racariu
- Rainer Schuetze
- Rasmus Thomsen
- Razvan Nitu
- Richard Andrew Cattermole
- Richard Manthorpe
- Richard Webb
- Robert Blake Anderton
- Robert burner Schadek
- Robert Jacques
- Robert Klotzner
- Robert Schadek
- Roman Chistokhodov
- Roy Margalit
- rracariu
- rsw0x
- Ryan Boggs
- ryuukk
- Safety0ff
- Sanjay S
- scott
- Sean Kelly
- Sebastiaan Koppe
- Sebastian Wilzbach
- Sergei Akhmatdinov
- Shigeki Karita
- shoo
- Simen Kjærås
- Simon Harris
- sinkuu
- skl131313
- Sophie Kirschner
- sprinkle131313
- Stanislav Blinov
- Stefan Koch
- Stefan Rohe
- Stefanos Baziotis
- stefanos-baziotis
- Steven Dwy
- Steven Schveighoffer
- Su
- sumitraja
- Sönke Ludwig
- tcak
- Temtaime
- teo
- Teodor Dutu
- Tero Hänninen
- thaven
- Thayne McCombs
- the-horo
- TheGag96
- Thomas Mader
- Tim Schendekehl
- Timothee Cour
- Tolstokulakov Nikolay
- Tomer Filiba
- Tomoya Tanjo
- Tomáš Chaloupka
- Tony Tung
- tsbockman
- tynuk
- unknown
- vali0901
- Vladimir Panteleev
- w0rp
- Walter Bright
- Walter Waldron
- wazar
- wolframw
- Yao Gómez
- Yazan Dabain
- yglukhov
- yori
- Yuxuan Shui
- Ömer Faruk Irmak
- Ömer Faruk IRMAK
- Михаил Страшун
- سليمان السهمي (Suleyman Sahmi)

Copyright © 1999-2022 by the D Language Foundation | Page generated by Ddoc on Wed Oct 12 18:38:45 2022