Re: Error: variable 'xyz' has scoped destruction, cannot build closure

2018-10-05 Thread Nicholas Wilson via Digitalmars-d-learn
On Friday, 5 October 2018 at 19:31:56 UTC, Jon Degenhardt wrote: On Friday, 5 October 2018 at 16:34:32 UTC, Paul Backus wrote: You can thread multiple arguments through to `each` using `std.range.zip`: tenRandomNumbers .zip(repeat(output)) .each!(unpack!((n, output) =>

Re: DMD release build being faster than debug!

2018-10-05 Thread Per Nordlöw via Digitalmars-d-learn
On Friday, 5 October 2018 at 16:57:03 UTC, Seb wrote: Yeah BUILD more or less only defines in which folder the binaries will be stored as the default BUILD was RELEASE historically and the real release build can take a while and shouldn't be used by default (bad newcomer experience). We tried

Re: Alligned gc allocation of struct

2018-10-05 Thread Sjoerd Nijboer via Digitalmars-d-learn
On Friday, 5 October 2018 at 14:55:04 UTC, Dennis wrote: On Friday, 5 October 2018 at 10:03:35 UTC, Kagamin wrote: GC allocations are 16 bytes aligned. Is that an implementation detail or well-defined behavior? The GC_Allocator doesn't support alignedAllocate from the IAllocate interface,

Re: Error: variable 'xyz' has scoped destruction, cannot build closure

2018-10-05 Thread Jon Degenhardt via Digitalmars-d-learn
On Friday, 5 October 2018 at 16:34:32 UTC, Paul Backus wrote: On Friday, 5 October 2018 at 06:56:49 UTC, Nicholas Wilson wrote: On Friday, 5 October 2018 at 06:44:08 UTC, Nicholas Wilson wrote: Alas is does not because each does not accept additional argument other than the range. Shouldn't be

Re: DMD release build being faster than debug!

2018-10-05 Thread Seb via Digitalmars-d-learn
On Friday, 5 October 2018 at 14:11:22 UTC, Per Nordlöw wrote: I just noticed that building DMD~master via make -f posix.mak BUILD=debug currently takes 3.2 secs while building it via make -f posix.mak BUILD=release takes only 3.0 secs on my Ubuntu 18.04 64-bit machine! Are there

Re: Error: variable 'xyz' has scoped destruction, cannot build closure

2018-10-05 Thread Paul Backus via Digitalmars-d-learn
On Friday, 5 October 2018 at 06:56:49 UTC, Nicholas Wilson wrote: On Friday, 5 October 2018 at 06:44:08 UTC, Nicholas Wilson wrote: Alas is does not because each does not accept additional argument other than the range. Shouldn't be hard to fix though.

Re: Alligned gc allocation of struct

2018-10-05 Thread Dennis via Digitalmars-d-learn
On Friday, 5 October 2018 at 10:03:35 UTC, Kagamin wrote: GC allocations are 16 bytes aligned. Is that an implementation detail or well-defined behavior?

Re: DMD release build being faster than debug!

2018-10-05 Thread Per Nordlöw via Digitalmars-d-learn
On Friday, 5 October 2018 at 14:11:22 UTC, Per Nordlöw wrote: Are there more DMD switches other than `BUILD=release` I need to activate to produce the fastest possible compiler binary? Apart for compiling it with LDC, that is. Ahh, that wasn't so hard to find once I looked inside the correct

DMD release build being faster than debug!

2018-10-05 Thread Per Nordlöw via Digitalmars-d-learn
I just noticed that building DMD~master via make -f posix.mak BUILD=debug currently takes 3.2 secs while building it via make -f posix.mak BUILD=release takes only 3.0 secs on my Ubuntu 18.04 64-bit machine! Are there more DMD switches other than `BUILD=release` I need to activate

Re: Template/mixin ideas?

2018-10-05 Thread Stanislav Blinov via Digitalmars-d-learn
On Thursday, 4 October 2018 at 01:12:04 UTC, Chris Katko wrote: What's the alternative to using strings... for strings? Since the purpose is terminal output, you could just make a custom formatter, something like this: https://run.dlang.io/is/F51UCZ

Re: Alligned gc allocation of struct

2018-10-05 Thread Sjoerd Nijboer via Digitalmars-d-learn
On Friday, 5 October 2018 at 10:03:35 UTC, Kagamin wrote: GC allocations are 16 bytes aligned. That's perfect. Thank you!

Re: Alligned gc allocation of struct

2018-10-05 Thread Kagamin via Digitalmars-d-learn
GC allocations are 16 bytes aligned.

Re: Template/mixin ideas?

2018-10-05 Thread Anonymouse via Digitalmars-d-learn
On Wednesday, 3 October 2018 at 11:01:53 UTC, Chris Katko wrote: I've got this simple task but I'm trying to perfect it as best I can to learn something in the process. I have Linux terminal ASCII codes for coloring terminal output. string red(string) { /* ... */ } "Hello world".red =>

Alligned gc allocation of struct

2018-10-05 Thread Sjoerd Nijboer via Digitalmars-d-learn
I've got a `struct Foo{ubyte16 field1, field2 fieldn;}` for which I would like a heap allocation `Foo* foo = new Foo();` But the fields itsself must be 16 bytes aligned for SIMD instructions. Is there a neat way to do this in D? As far as I can tell the GC_allocator doesn't do aligned

Re: Template/mixin ideas?

2018-10-05 Thread Sebastiaan Koppe via Digitalmars-d-learn
On Thursday, 4 October 2018 at 01:12:04 UTC, Chris Katko wrote: The mixin part wouldn't be slowed by strings, right? So the "slowness" is the invokation part which changes strings and forces GC allocations, I guess? Yep, that is right. What's the alternative to using strings... for strings?

Re: Error: variable 'xyz' has scoped destruction, cannot build closure

2018-10-05 Thread Nicholas Wilson via Digitalmars-d-learn
On Friday, 5 October 2018 at 06:44:08 UTC, Nicholas Wilson wrote: Alas is does not because each does not accept additional argument other than the range. Shouldn't be hard to fix though. https://issues.dlang.org/show_bug.cgi?id=19287

Re: Error: variable 'xyz' has scoped destruction, cannot build closure

2018-10-05 Thread Jon Degenhardt via Digitalmars-d-learn
On Friday, 5 October 2018 at 06:44:08 UTC, Nicholas Wilson wrote: On Friday, 5 October 2018 at 06:22:57 UTC, Nicholas Wilson wrote: tenRandomNumbers.each!((n,o) => o.appendln(n.to!string))(output); or tenRandomNumbers.each!((n, ref o) => o.appendln(n.to!string))(output); should hopefully

Re: Error: variable 'xyz' has scoped destruction, cannot build closure

2018-10-05 Thread Nicholas Wilson via Digitalmars-d-learn
On Friday, 5 October 2018 at 06:22:57 UTC, Nicholas Wilson wrote: tenRandomNumbers.each!((n,o) => o.appendln(n.to!string))(output); or tenRandomNumbers.each!((n, ref o) => o.appendln(n.to!string))(output); should hopefully do the trick (run.dlang.io seems to be down atm). Alas is does

Re: Error: variable 'xyz' has scoped destruction, cannot build closure

2018-10-05 Thread Nicholas Wilson via Digitalmars-d-learn
On Friday, 5 October 2018 at 03:27:17 UTC, Jon Degenhardt wrote: I got the compilation error in the subject line when trying to create a range via std.range.generate. Turns out this was caused by trying to create a closure for 'generate' where the closure was accessing a struct containing a