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.098.1

previous version: 2.098.0 – next version: 2.099.0

Download D 2.098.1
released Dec 19, 2021

2.098.1 comes with 106 fixed Bugzilla issues. A huge thanks goes to the 18 contributors who made 2.098.1 possible.

List of all bug fixes and enhancements in D 2.098.1.

List of all bug fixes and enhancements in D 2.098.1:

DMD Compiler regression fixes

  1. Bugzilla 20133: [REG2.084.0] Bogus slice assignment in recursive CTFE call
  2. Bugzilla 20236: spurious deprecation warnings on function calls within with(X) blocks while X has a deprecated alias this target
  3. Bugzilla 20860: OpDispatch does not work for structs with constructor and destructor
  4. Bugzilla 20998: error in static struct initialization causes wrong position for subsequent members, producing extra errors
  5. Bugzilla 21039: alias this returns 'null' for ref types when put into array initializer
  6. Bugzilla 21073: Rebindable does not work when class has alias this to inout property
  7. Bugzilla 21380: A case of compiler crash when using auto ref
  8. Bugzilla 21414: Spurious "non-constant expression" error with immutable constructors
  9. Bugzilla 21438: Compiler segfault on static array in a struct at CTFE
  10. Bugzilla 22004: [REG2.097] Error: mismatched function return type inference of void and noreturn
  11. Bugzilla 22151: Compiler crash when attempting to assign to function
  12. Bugzilla 22300: [REG 2.098-rc.2] -checkaction=context of a shared type with an opCast fails to compile
  13. Bugzilla 22385: CTFE fails to iterate over associative array previously indexed with implicit conversion to enum base type
  14. Bugzilla 22410: [REG2.094] function with tuple parameter with default argument fails if there's a qualifier
  15. Bugzilla 22420: [REG2.098] Apparent CTFE regression wrt. alias this
  16. Bugzilla 22472: Invalid error message for void return from non-void functions
  17. Bugzilla 22512: importC: incomplete array type must have initializer
  18. Bugzilla 22514: Invalid duplicate case error when the switched value has errors
  19. Bugzilla 22516: Segfault for function literal in struct initializer with previous errors
  20. Bugzilla 22529: wrong deprecation about empty statement
  21. Bugzilla 22558: [REG 2.098] Error: function 'core.stdc.stdio.vfprintf' 'pragma(printf)' functions must be 'extern(C) int vfprintf([parameters...], const(char)*, va_list)'
  22. Bugzilla 22570: more arguments than fields allowed in struct constructor
  23. Bugzilla 22584: importC: Error: undefined reference to 'parameter' when no parameter names in forward declaration
  24. Bugzilla 22585: importC: Error: variable 'var' extern symbols cannot have initializers
  25. Bugzilla 22592: importC: Segmentation fault indexing global array at run-time
  26. Bugzilla 22593: ICE on overloaded constructors

DMD Compiler bug fixes

  1. Bugzilla 16579: ReturnStatement[CallExp(DotVarExp)]: Corrupted runtime on missed manifest constant propagation
  2. Bugzilla 18054: Wrong cast of float constant to bool
  3. Bugzilla 19660: 'export' keyword on OSX/Linux globals causing segfaults
  4. Bugzilla 21093: [ICE] AssertError@dmd/optimize.d(691): Assertion failure
  5. Bugzilla 21794: Internal compiler assertion
  6. Bugzilla 21930: ICE (illegal instruction) with bad code
  7. Bugzilla 21950: cod1: Assertion failure for noreturn parameter
  8. Bugzilla 21952: ice for global / tls variable of type noreturn
  9. Bugzilla 21957: ice when dmd computes the alignment of an union containing a noreturn
  10. Bugzilla 22104: importC: Parser accepts arrays with incomplete element types
  11. Bugzilla 22315: ImportC: #pragma pack is not implemented
  12. Bugzilla 22323: Link error for virtual destructor of C++ class in DLL
  13. Bugzilla 22362: ImportC: error parsing compound literal with more than one value at function scope.
  14. Bugzilla 22375: importC: Error: C non-array initializer not supported yet
  15. Bugzilla 22376: importC: Error: cannot use non-constant CTFE pointer in an initializer
  16. Bugzilla 22388: Wrong overload selected for @safe delegate
  17. Bugzilla 22389: noreturn functions are allowed to return normally
  18. Bugzilla 22398: importC: Error: unknown, when compiling source with non-constant initializer.
  19. Bugzilla 22399: importC: Error: static variable cannot be read at compile time
  20. Bugzilla 22400: importC: Error: unknown, when compiling source with typedef'd initializer
  21. Bugzilla 22402: importC: Error: can't subtract '__tag2[1]' from pointer
  22. Bugzilla 22403: importC: Error: cannot pass argument '0' of type 'int' to parameter 'const(char)*'
  23. Bugzilla 22405: importC: Error: cannot modify 'const' expression '(*s).field'
  24. Bugzilla 22406: importC: Error: 'switch' statement without a 'default'; use 'final switch' or add 'default: assert(0);' or add 'default: break;'
  25. Bugzilla 22407: importC: Error: cannot implicitly convert expression of type 'extern (C) int(int a)' to 'const(extern (C) int function(int))'
  26. Bugzilla 22409: importC: [ICE] Error: struct no size because of forward reference
  27. Bugzilla 22411: importC: Error: cannot implicitly convert expression of type 'const(char*)' to 'char*'
  28. Bugzilla 22413: importC: Error: array index 0 is out of bounds
  29. Bugzilla 22422: ImportC: parse gnu attributes after a function parameter
  30. Bugzilla 22428: importC: static variables/functions emit global symbols
  31. Bugzilla 22432: ImportC: casting result of postfix operator on a parenthesized expression to a typedef’d type is parsed incorrectly
  32. Bugzilla 22461: OpenBSD: Use fmodl
  33. Bugzilla 22462: OpenBSD: bash lives in /usr/local
  34. Bugzilla 22463: OpenBSD: Allow DMD to work on 32-bit OpenBSD
  35. Bugzilla 22500: ImportC: Lots of errors when compiling tomlc99
  36. Bugzilla 22513: ImportC: address of member of struct can’t be taken at compile time.
  37. Bugzilla 22517: [REG 2.093][ICE] Bus error at dmd/lexer.d:398
  38. Bugzilla 22530: Explicit cast between classes incorrectly goes through 'alias this' inside CTFE
  39. Bugzilla 22531: importC: D name mangling applied to forward declaration of function inside function
  40. Bugzilla 22534: ImportC: const pointer (not pointer to const) is treated as transitive const
  41. Bugzilla 22538: importC: function 'func' conflicts with function 'func' when using static in forward declaration
  42. Bugzilla 22549: importC: float literal should support leading zero
  43. Bugzilla 22560: ImportC: extra semicolon not allowed outside of functions
  44. Bugzilla 22573: DMD compiler errors on Illumos/Solaris
  45. Bugzilla 22576: ImportC: cannot implicitly convert expression S(0) of type S to int in an S array
  46. Bugzilla 22577: ImportC: decay of function to typedef'd const function pointer causes ICE.
  47. Bugzilla 22589: importC: Error: undefined reference to '__builtin_va_start' and '__builtin_va_end'
  48. Bugzilla 22591: importC: Debug information for C sources have DW_AT_language set to D.
  49. Bugzilla 22597: importC: Segmentation fault initializing va_list with __builtin_va_start
  50. Bugzilla 22602: importC: Error: cannot convert string literal to 'void*'

DMD Compiler enhancements

  1. Bugzilla 22474: OpenBSD: Add support to test/runnable/dhry.d
  2. Bugzilla 22475: OpenBSD: Disable test/compilable/cdcmp.d on OpenBSD
  3. Bugzilla 22476: OpenBSD: Add OpenBSD to the fail_compilation/fail21227_win.d ignore list
  4. Bugzilla 22477: OpenBSD: Add to fail_compilation/fail3753.d ignore list
  5. Bugzilla 22478: OpenBSD: Add to fail_compilation/invalid_lib.d

Phobos regression fixes

  1. Bugzilla 16705: [REG2.069] TaskPool.reduce fails to compile "cannot get frame pointer to D main"

Phobos bug fixes

  1. Bugzilla 22458: OpenBSD: Add OpenBSD to std/system.d OS list
  2. Bugzilla 22487: Array! crashes

Phobos enhancements

  1. Bugzilla 22393: OpenBSD: Add polyImpl implementation for x86
  2. Bugzilla 22488: data should work with const/immutable Array's
  3. Bugzilla 22511: Nullable is not copyable when templated type has elaborate copy ctor
  4. Bugzilla 22557: std.traits.fqnType is missing support for typeof(null)

Druntime regression fixes

  1. Bugzilla 21656: [REG2.091] Wrong file read during exception stringification leads to SIGBUS
  2. Bugzilla 22210: std.meta.allSatisfy in mutual recursion classes cannot be compiled
  3. Bugzilla 22235: core.demangle does not support noreturn

Druntime bug fixes

  1. Bugzilla 21919: darwin: SEGV in core.thread tests on OSX 11
  2. Bugzilla 22416: Unify polyImpl implementations
  3. Bugzilla 22440: OpenBSD: Sync sysctl.d
  4. Bugzilla 22443: OpenBSD: Fix Fiber support by adding MAP_STACK
  5. Bugzilla 22453: OpenBSD: Add a dummy value for AI_V4MAPPED
  6. Bugzilla 22455: Remove useless conditional assignment of DISABLED_TESTS in posix.mak
  7. Bugzilla 22456: OpenBSD: timer_* functions don't exist on OpenBSD
  8. Bugzilla 22485: OpenBSD: Fix core.sys.openbsd.unistd imports

Druntime enhancements

  1. Bugzilla 22395: OpenBSD: Add more OpenBSD-specific function prototypes in string.d and unistd.d
  2. Bugzilla 22439: OpenBSD: Sync mman.d
  3. Bugzilla 22448: OpenBSD: Add OpenBSD-specific alloc and free function prototypes from stdlib.h
  4. Bugzilla 22454: OpenBSD: Add prototypes for pthread_np.h
  5. Bugzilla 22457: OpenBSD: enableDwarf in opApply in runtime.d
  6. Bugzilla 22542: Explicitly cast backtrace results to int
  7. Bugzilla 22545: OpenBSD: Always use system backtrace

Contributors to this release (18)

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

previous version: 2.098.0 – next version: 2.099.0