Re: Cannot link with libphobos2.a with GCC 6.2 on Ubuntu 16.10
On Monday, 17 October 2016 at 11:55:03 UTC, Martin Nowak wrote: Please update the bug report. https://issues.dlang.org/show_bug.cgi?id=5278 Updated, but do I seriously have to do everything? I'm not even an Ubuntu user.
Re: Repeat and chunks
On Monday, 24 October 2016 at 16:17:03 UTC, ag0aep6g wrote: On 10/24/2016 05:59 PM, Meta wrote: repeat(8, 10).chunks(3).writeln(); This will throw an AssertError because 10 is not evenly divisible by 3. chunks doesn't require that the length of the range be evenly divisible by the chunk size. See https://dlang.org/phobos/std_range.html#.Chunks Huh, you're right. I must've misread. My mistake.
Statically linking libphobos
Hello, I am distributing a plugin written in D for another application. To make it easily distributable i would prefer to link libphobos statically. How would I do that and how would I do that with DUB? Thanks :)
Re: Repeat and chunks
On Monday, 24 October 2016 at 15:59:05 UTC, Meta wrote: On Monday, 24 October 2016 at 15:28:50 UTC, Saurabh Das wrote: [...] Yes, that's correct. This is the overload of `repeat` in question: https://dlang.org/phobos/std_range.html#.repeat.2 Take!(Repeat!T) repeat(T)(T value, size_t n); Repeats value exactly n times. Equivalent to take(repeat(value), n). Examples: import std.algorithm : equal; assert(equal(5.repeat(4), 5.repeat().take(4))); The variant of repeat that takes a second argument returns a range with a length; it is not an infinite range, unlike the first overload of repeat. So for the OP's code: repeat(8, 10).chunks(3).writeln(); This will throw an AssertError because 10 is not evenly divisible by 3. Sure, but: // This fails: repeat(8, 9).chunks(3).writeln(); // This works: repeat(8, 6).chunks(3).writeln(); Both are divisible by 3. Maybe it's a bug?
Re: Repeat and chunks
On 10/24/2016 05:59 PM, Meta wrote: repeat(8, 10).chunks(3).writeln(); This will throw an AssertError because 10 is not evenly divisible by 3. chunks doesn't require that the length of the range be evenly divisible by the chunk size. See https://dlang.org/phobos/std_range.html#.Chunks
Re: Repeat and chunks
On 10/24/2016 04:25 PM, Dorian Haglund wrote: The following code crashes with DMD64 D Compiler v2.071.2: import std.algorithm; import std.stdio; import std.range; int main() { repeat(8, 10).chunks(3).writeln(); return 0; } Looks like a bug. Doesn't happen with 2.072.0-b2, so it has apparently already been fixed.
Re: Repeat and chunks
On Monday, 24 October 2016 at 15:28:50 UTC, Saurabh Das wrote: The documentation of https://dlang.org/phobos/std_range.html#.chunks mentions something about evenly divisible by chunkSize – perhaps that is the cause of the assert fail. Not 100% sure why that's there though. Thanks, Saurabh Yes, that's correct. This is the overload of `repeat` in question: https://dlang.org/phobos/std_range.html#.repeat.2 Take!(Repeat!T) repeat(T)(T value, size_t n); Repeats value exactly n times. Equivalent to take(repeat(value), n). Examples: import std.algorithm : equal; assert(equal(5.repeat(4), 5.repeat().take(4))); The variant of repeat that takes a second argument returns a range with a length; it is not an infinite range, unlike the first overload of repeat. So for the OP's code: repeat(8, 10).chunks(3).writeln(); This will throw an AssertError because 10 is not evenly divisible by 3.
Re: Repeat and chunks
On Monday, 24 October 2016 at 15:28:50 UTC, Saurabh Das wrote: On Monday, 24 October 2016 at 14:25:46 UTC, Dorian Haglund wrote: Hey, The following code crashes with DMD64 D Compiler v2.071.2: import std.algorithm; import std.stdio; import std.range; int main() { repeat(8, 10).chunks(3).writeln(); return 0; } Error message: pure nothrow @nogc @safe std.range.Take!(std.range.Repeat!(int).Repeat).Take std.range.Repeat!(int).Repeat.opSlice(ulong, ulong) If I replace repeat with iota, or a literal range (like [1, 2 ,3, 4]), I don't get the crash. I don't see why I should not be able to use chunks with repeat. If some property of repeat's range is missing to use chunks, shouldn't I get an error message ? Am I missing something ? PS: the behavior has been reproduced on someone else computer. Cheers :) This works: repeat(8, 12).chunks(3).writeln; The documentation of https://dlang.org/phobos/std_range.html#.chunks mentions something about evenly divisible by chunkSize – perhaps that is the cause of the assert fail. Not 100% sure why that's there though. Thanks, Saurabh Some more cases, perhaps someone more knowledgeable can help: import std.algorithm; import std.stdio; import std.range; int main() { [8, 8, 8, 8, 8, 8].chunks(3).writeln; // prints [[8, 8, 8], [8, 8, 8]] repeat(8, 6).writeln; // prints [8, 8, 8, 8, 8, 8] repeat(8, 6).chunks(3).writeln; // prints [[8, 8, 8]]. Why? assert([8, 8, 8, 8, 8, 8] == repeat(8, 6).array); // Passes assert([8, 8, 8, 8, 8, 8].chunks(3).array == repeat(8, 6).array.chunks(3).array); // Passes assert([8, 8, 8, 8, 8, 8].chunks(3).array == repeat(8, 6).chunks(3).map!(a => a.array).array); // Fails return 0; }
Re: Repeat and chunks
On Monday, 24 October 2016 at 14:25:46 UTC, Dorian Haglund wrote: Hey, The following code crashes with DMD64 D Compiler v2.071.2: import std.algorithm; import std.stdio; import std.range; int main() { repeat(8, 10).chunks(3).writeln(); return 0; } Error message: pure nothrow @nogc @safe std.range.Take!(std.range.Repeat!(int).Repeat).Take std.range.Repeat!(int).Repeat.opSlice(ulong, ulong) If I replace repeat with iota, or a literal range (like [1, 2 ,3, 4]), I don't get the crash. I don't see why I should not be able to use chunks with repeat. If some property of repeat's range is missing to use chunks, shouldn't I get an error message ? Am I missing something ? PS: the behavior has been reproduced on someone else computer. Cheers :) This works: repeat(8, 12).chunks(3).writeln; The documentation of https://dlang.org/phobos/std_range.html#.chunks mentions something about evenly divisible by chunkSize – perhaps that is the cause of the assert fail. Not 100% sure why that's there though. Thanks, Saurabh
Repeat and chunks
Hey, The following code crashes with DMD64 D Compiler v2.071.2: import std.algorithm; import std.stdio; import std.range; int main() { repeat(8, 10).chunks(3).writeln(); return 0; } Error message: pure nothrow @nogc @safe std.range.Take!(std.range.Repeat!(int).Repeat).Take std.range.Repeat!(int).Repeat.opSlice(ulong, ulong) If I replace repeat with iota, or a literal range (like [1, 2 ,3, 4]), I don't get the crash. I don't see why I should not be able to use chunks with repeat. If some property of repeat's range is missing to use chunks, shouldn't I get an error message ? Am I missing something ? PS: the behavior has been reproduced on someone else computer. Cheers :)
Re: How to get sqlite3.lib x64?
On Monday, 24 October 2016 at 07:20:34 UTC, Vadim Lopatin wrote: In https://github.com/buggins/ddbc there are 32bit and 64bit windows libs and dlls for sqlite3: https://github.com/buggins/ddbc/tree/master/libs Thanks a lot John and Vadim. Kind regards André
Re: How to get sqlite3.lib x64?
On Monday, 24 October 2016 at 05:43:00 UTC, Andre Pany wrote: Hi, I try to get sqlite3.lib for 64 Bit windows os. I tried implib with the def file and the 64 Bit dll: implib sqlite3_implib.lib sqlite3.def /system -> App crash (Windows 10) With the dll file defined: implib sqlite3_implib.lib sqlite3.dll /system -> Error message: Error(10): Error: cannot read DLL input file I have the MS Build tools installed, but the example from the SQLite site only shows, how to build a X86 dll file from the C source code but not how to build the X86_64 lib file for windows: cl sqlite3.c -link -dll -out:sqlite3.dll I tried different combinations but without success. Could you give me some hints? Kind regards André In https://github.com/buggins/ddbc there are 32bit and 64bit windows libs and dlls for sqlite3: https://github.com/buggins/ddbc/tree/master/libs
Re: How to get sqlite3.lib x64?
On Monday, 24 October 2016 at 05:43:00 UTC, Andre Pany wrote: Hi, I try to get sqlite3.lib for 64 Bit windows os. I tried implib with the def file and the 64 Bit dll: implib sqlite3_implib.lib sqlite3.def /system -> App crash (Windows 10) With the dll file defined: implib sqlite3_implib.lib sqlite3.dll /system -> Error message: Error(10): Error: cannot read DLL input file I have the MS Build tools installed, but the example from the SQLite site only shows, how to build a X86 dll file from the C source code but not how to build the X86_64 lib file for windows: cl sqlite3.c -link -dll -out:sqlite3.dll I tried different combinations but without success. Could you give me some hints? Kind regards André Do you have the Windows 10.0.10586 SDK installed? It includes a .lib file to link against the 64-bit DLL. It's called winsqlite3.lib.