[Issue 15056] [REG2.068.1] Unstored RAII struct return yields bogus error: "cannot mix core.std.stdlib.alloca() and exception handling"
https://issues.dlang.org/show_bug.cgi?id=15056 --- Comment #9 from github-bugzi...@puremagic.com --- Commits pushed to stable at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/6c7069c06b8a5b3f003955ce2d908b6c928823a2 add test for Issue 15056 - Unstored RAII struct return yields bogus error https://github.com/D-Programming-Language/dmd/commit/ef854c328bf8798f3154dc923d1b7115acd97c70 Merge pull request #5110 from MartinNowak/workaround15056 add test for Issue 15056 - Unstored RAII struct return yields bogus error --
[Issue 14708] destructor for temporary not called during stack unwinding
https://issues.dlang.org/show_bug.cgi?id=14708 --- Comment #5 from github-bugzi...@puremagic.com --- Commit pushed to stable at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/1a807d16b5d8ba87dbfd4344942a6708ef516896 Revert "fix Issue 14708 - destructor for temporary not called during stack unwinding" This reverts commit e20c63cb28decb66c792b1dfc10d79aa0aebd7cf. # Conflicts: #test/runnable/sdtor.d --
[Issue 15100] @nogc should ignore allocations on assertion fail
https://issues.dlang.org/show_bug.cgi?id=15100 --- Comment #3 from Steven Schveighoffer--- Jonathan, I think you misunderstand. This compiles today, and uses the gc (using a user-supplied variable to prevent folding into assert(0)): void main(string[] args) @nogc { assert(args.length > 100, "hi"); } But this doesn't: assert(args.length > 100, "hi".idup); Note that the exception isn't constructed (or allocated), and the "hi".idup isn't run unless something fails. This code is truly @nogc unless something goes horribly wrong, in which case the program will exit anyway, who cares if the gc is used? Note, I'm not advocating that the expression 'new Error("msg")' be considered @nogc. My point in saying that is this is effectively what an assert does, and it's considered @nogc. All I'm saying is that asserts should be treated fully as @nogc, not just the error construction part. --
[Issue 14708] destructor for temporary not called during stack unwinding
https://issues.dlang.org/show_bug.cgi?id=14708 Kenji Harachanged: What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED |--- --- Comment #6 from Kenji Hara --- It was once fixed in 2.068.0, but the compiler change was reverted because of issue 15056. Therefore, the issue will be reopened since 2.068.2. --
[Issue 15102] New: Unified function to remove files/directories
https://issues.dlang.org/show_bug.cgi?id=15102 Issue ID: 15102 Summary: Unified function to remove files/directories Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: phobos Assignee: nob...@puremagic.com Reporter: d...@me.com Currently there are at least three different function to remove files and directories in Phobos. It would be nice to have a single one that handles all cases. For when one just want to remove something, regardless if it's a file or a directory and if it's empty or not. --
[Issue 15103] New: Improve declaration / initialization syntax error message
https://issues.dlang.org/show_bug.cgi?id=15103 Issue ID: 15103 Summary: Improve declaration / initialization syntax error message Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: l...@luismarques.eu -- struct Foo { this(int x) {} } void main() { Foo foo(42); } (8): Error: found 'foo' when expecting ';' following statement -- The problem is not that 'foo' was found, since `Foo foo` is fine, as is `Foo foo = Foo(42)`. --
[Issue 15103] Improve declaration / initialization syntax error message
https://issues.dlang.org/show_bug.cgi?id=15103 Steven Schveighofferchanged: What|Removed |Added Keywords||diagnostic Severity|enhancement |minor --
[Issue 6400] opDispatch with WithStatement
https://issues.dlang.org/show_bug.cgi?id=6400 Luís Marqueschanged: What|Removed |Added CC||l...@luismarques.eu --- Comment #4 from Luís Marques --- I've also ran into this issue... --
[Issue 15003] assumeSorted Allocates GC Memory in Debug Mode
https://issues.dlang.org/show_bug.cgi?id=15003 github-bugzi...@puremagic.com changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --
[Issue 15003] assumeSorted Allocates GC Memory in Debug Mode
https://issues.dlang.org/show_bug.cgi?id=15003 --- Comment #2 from github-bugzi...@puremagic.com --- Commit pushed to master at https://github.com/D-Programming-Language/phobos https://github.com/D-Programming-Language/phobos/commit/3fb4a9eaeaa68126341bf82082926ee4e96c1871 fix issue 15003 --
[Issue 10932] Useless temporaries and other absurd in inlined code
https://issues.dlang.org/show_bug.cgi?id=10932 Walter Brightchanged: What|Removed |Added CC||bugzi...@digitalmars.com --- Comment #2 from Walter Bright --- The PUSH EAX is there to align the stack to 16 bytes. --
[Issue 15100] @nogc should ignore allocations on assertion fail
https://issues.dlang.org/show_bug.cgi?id=15100 Jonathan M Davischanged: What|Removed |Added CC||issues.dl...@jmdavisprog.co ||m --- Comment #2 from Jonathan M Davis --- Whether it even makes sense for new Error to be @nogc depends on whether the GC is available or not. If it is, then the Error will presumably kill the program, so the allocation isn't a problem. However, if the GC isn't available, and the programmer is relying on @nogc to guarantee that the GC isn't actually used, then there's definitely a problem. But maybe that can all be cleaned up with the reference counted Object hierarchy that's been talked about previously, since Exceptions and Errors would presumably be part of that - though unless they're malloced, they'd still be using the GC, and presumably, using new wouldn't use malloc, so if we wanted a ref-counted Throwable to be on the malloced heap, something other than new would have to be used. idup will always use the GC regardless though. I don't see how it could be otherwise. So, even if it were fixed so that Error was ref-counted and malloced, idup still wouldn't work without the GC. We really need some other way to handle the strings for the exception messages if we want to avoid the GC. This whole situation is a bit sticky though, because we're basically trying to ban the GC in @nogc code while still using for stuff related to exceptions, and that's obviously problematic. Maybe if allocating for an assertion fails, it should result in a message being printed (if possible) and then a HLT instruction? Even if Errors in general have a problem, stuff like assertions are controlled by druntime where we can have some control over what's going on without requiring a full-blown solution for dealing with the @nogc problem with exceptions. If we absolutely had to, we could use a function pointer to a @nogc function and using casting to make it point to one that isn't actually @nogc, though I really think that we should find a more principled solution to this that doesn't require lying about being @nogc. Regardless of the exact solution here, I suspect that if we want to fully sort out the various issues with @nogc and exceptions (be they Errors or Exceptions), we need to sort out the ref-counting Object hierarchy stuff and whatever that's supposed to do and look like. --
[Issue 14840] [2.068.0-b2] failure to inline functions with loops
https://issues.dlang.org/show_bug.cgi?id=14840 Walter Brightchanged: What|Removed |Added Hardware|x86_64 |All Summary|[2.068.0-b2] failure to |[2.068.0-b2] failure to |inline _trivial_ function |inline functions with loops OS|Windows |All --
[Issue 14708] destructor for temporary not called during stack unwinding
https://issues.dlang.org/show_bug.cgi?id=14708 Martin Nowakchanged: What|Removed |Added CC||c...@dawg.eu --- Comment #4 from Martin Nowak --- FWIW dmd currently emits SEH wrappers around any temporary destruction. Weird that nobody yet noticed that. Doesn't this severely impact performance on Win32? --
[Issue 15101] New: [Home]
https://issues.dlang.org/show_bug.cgi?id=15101 Issue ID: 15101 Summary: [Home] Product: D Version: D2 Hardware: All URL: http://dlang.org/ OS: All Status: NEW Severity: enhancement Priority: P3 Component: dlang.org Assignee: nob...@puremagic.com Reporter: br...@infinityplusb.com Created attachment 1551 --> https://issues.dlang.org/attachment.cgi?id=1551=edit Screenshot of error occurring The code example on the home page produces an error when run. I have attached a screenshot of the output. It was the code example regarding curl and some weather output. :) The Browser I have used is Firefox 40.0.3 I'm running Ubuntu 15.04 kernel 4.2.0-040200-generic Not sure what else you need, let me know and happy to test. --
[Issue 14981] Missing nothrow attribute in dbgVerifySorted()
https://issues.dlang.org/show_bug.cgi?id=14981 j...@red.email.ne.jp changed: What|Removed |Added CC||nicolas.jincher...@gmail.co ||m --- Comment #1 from j...@red.email.ne.jp --- *** Issue 15091 has been marked as a duplicate of this issue. *** --
[Issue 15091] Error passing lambda to std.algorithm.sorting.sort
https://issues.dlang.org/show_bug.cgi?id=15091 j...@red.email.ne.jp changed: What|Removed |Added Status|NEW |RESOLVED CC||j...@red.email.ne.jp Resolution|--- |DUPLICATE OS|Mac OS X|All --- Comment #1 from j...@red.email.ne.jp --- *** This issue has been marked as a duplicate of issue 14981 *** --
[Issue 15104] Switching fibers in finally blocks breaks EH
https://issues.dlang.org/show_bug.cgi?id=15104 David Nadlingerchanged: What|Removed |Added Severity|enhancement |major --
[Issue 15104] New: Switching fibers in finally blocks breaks EH
https://issues.dlang.org/show_bug.cgi?id=15104 Issue ID: 15104 Summary: Switching fibers in finally blocks breaks EH Product: D Version: D2 Hardware: x86 OS: All Status: NEW Severity: enhancement Priority: P1 Component: druntime Assignee: nob...@puremagic.com Reporter: c...@klickverbot.at Consider the following test case: --- import core.thread : Fiber; void throwAndYield(string msg) { try { throw new Exception(msg); } finally { Fiber.yield(); } } void fiber(string name) { try { try { throwAndYield(name ~ ".1"); } finally { throwAndYield(name ~ ".2"); } } catch (Exception e) { assert(e.msg == name ~ ".1"); assert(e.next); assert(e.next.msg == name ~ ".2"); assert(!e.next.next); } } void main() { auto first = new Fiber(() => fiber("first")); auto second = new Fiber(() => fiber("second")); first.call(); second.call(); first.call(); second.call(); first.call(); second.call(); } --- Because the current implementation keeps information about the inflight exceptions in a TLS variable, switching contexts while an exception is in flight (i.e., from a finally block or dtor) completely breaks EH. More specifically, exceptions might disappear from one thread and might be appended to the exception chain of another thread. The solution is to save/restore the per-stack EH metadata on fiber context switches. I am not going to fix this for DMD's druntime, but will link the LDC patch for reference here once it's done. --