June 11, 2023

Glad to announce the second beta for LDC 1.33. Major changes since beta1:

  • New CLI option -femit-local-var-lifetime to enable stack memory reuse.
  • C files are now automatically preprocessed using the external C compiler.
  • Less pedantic checks for conflicting C(++) function declarations ('Error: Function type does not match previously declared function with the same mangled name').

Full release log and downloads: https://github.com/ldc-developers/ldc/releases/tag/v1.33.0-beta2

Please help test, and thanks to all contributors & sponsors!

July 11

On Sunday, 11 June 2023 at 02:06:31 UTC, kinke wrote:

>

Glad to announce the second beta for LDC 1.33. Major changes since beta1:

  • New CLI option -femit-local-var-lifetime to enable stack memory reuse.

For people testing this release, please enable this flag on your projects.

It is disabled by default because it enables aggressive optimizations which may uncover latent bugs in your code: use of variable after its scope has ended. An example:

void useAfterScope() {
  int* p;
  {
    int x = 0;
    p = &x;  // cannot statically disallow this because
    *p = 1;  // this is a valid use of things
  }
  *p = 5;  // but when you do this... stack use after scope bug!
}

Use of AddressSanitizer with -femit-local-var-lifetime would catch this bug.

cheers,
Johan