Re: newCTFE Status July 2017
On Thursday, 13 July 2017 at 12:45:19 UTC, Stefan Koch wrote: [ ... ] Hi Guys I am currently fixing multi-dimensional arrays as outer parameters. So the following does not work. uint sumXd(uint[2][2]) { ... bla bla ... } pragma(msg, sumXd([[2,4],[4,7]])); This pretty tricky since we have the constraint of reprenting slices and arrays with the same ABI. So far I have worked 15 hours on this issue and it looks like it's going to be alot more :(
[Issue 17677] New: [Reg 2.073] ICE when adding ulong to cfloat
https://issues.dlang.org/show_bug.cgi?id=17677 Issue ID: 17677 Summary: [Reg 2.073] ICE when adding ulong to cfloat Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: regression Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: r.sagita...@gmx.de This took a couple of hours to dustmite & manually reduce from the vdparser-benchmark in druntime: void foo() { cfloat v2; ulong v1; auto z = v2 + v1; } compile with dmd 2.075 with "-m64" yields: Internal error: ddmd\backend\cg87.c 3680 The same happens with substraction, but not with multiplication. This compiles with dmd 2.072 or with -m32. --
Re: D IDE Coedit - version 3, update 3 released
On Sunday, 23 July 2017 at 18:10:25 UTC, Basile B. wrote: Configuration Options ===> The following configuration options are available for coedit-3.u.3_1: > Options available for the single LCL: you have to select exactly one of them GTK2=on: Use gtk20 interface QT4=off: Use qt4 interface ===> Use 'make config' to modify these settings What does that mean exactly ? Do you propose to the user to build Coedit themselves with optionally the QT interface ? Yes, I do. Coedit can be compiled with gtk2 or qt4 interface from FreeBSD ports. For the while just one of them can be selected. I'm thinking split lazarus based ports to app-gtk2 and app-qt4 respectively (It will generate binary packages too on FreeBSD package servers). Maybe after of lazarus 1.8 release. Look Coedit(gtk2/qt4)screenshots running on FreeBSD at https://people.freebsd.org/~acm/ports/coedit/ Greetings
Re: Per compiler badges on travis-ci
On Sunday, 23 July 2017 at 18:34:10 UTC, Jean-Louis Leroy wrote: Hi, Not sure what the perfect place to ask is, anyway... Is there a way in travis-ci (which I see many of us use) to have one passing/failing badge per compiler? My openmethods package need at least the 2.073 front end, which gdc doesn't have yet (it seems; I never succeeded in running gdc on any of my computers). Si I'd like a pass badge for dmd and ldc2 and a fail for gdc. Possible? Go ask elsewhere? That's what I've done (#1), and added a comment after the badge explaining that. However, I would really like to have per-compiler badges because 1/ my stuff needs recent compilers, and they don't all advance at the same time and 2/ as long as I cannot convince gdc to play ball with the other two, I would like to use travis-ci as a way of keeping an eye on it, in the hope it starts passing too.
Re: Per compiler badges on travis-ci
On Sunday, 23 July 2017 at 18:34:10 UTC, Jean-Louis Leroy wrote: Hi, Not sure what the perfect place to ask is, anyway... Is there a way in travis-ci (which I see many of us use) to have one passing/failing badge per compiler? My openmethods package need at least the 2.073 front end, which gdc doesn't have yet (it seems; I never succeeded in running gdc on any of my computers). Si I'd like a pass badge for dmd and ldc2 and a fail for gdc. Possible? Go ask elsewhere? Why don't you simply remove gdc from your Travis list or add it to `allow_failures` matrix?
Per compiler badges on travis-ci
Hi, Not sure what the perfect place to ask is, anyway... Is there a way in travis-ci (which I see many of us use) to have one passing/failing badge per compiler? My openmethods package need at least the 2.073 front end, which gdc doesn't have yet (it seems; I never succeeded in running gdc on any of my computers). Si I'd like a pass badge for dmd and ldc2 and a fail for gdc. Possible? Go ask elsewhere?
Re: is the ubuntu sourceforge repository safe?
On Saturday, 22 July 2017 at 00:21:45 UTC, Ali wrote: I know that sourceforge doesnt have the best security track record Is it safe thought to use the dmd ubuntu repository hosted there [code] sudo wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list wget -qO - https://dlang.org/d-keyring.gpg | sudo apt-key add - sudo apt-get update && sudo apt-get install dmd-bin [/code] I stopped using it. It kept causing error messages in my package manager and I couldn't update it properly so I've just stuck to downloading the updates on release.
Re: VibeD - undefinded identifier
On Sunday, 23 July 2017 at 17:16:44 UTC, Seb wrote: On Sunday, 23 July 2017 at 16:37:19 UTC, holo wrote: On Sunday, 23 July 2017 at 16:27:40 UTC, Mike Parker wrote: On Sunday, 23 July 2017 at 15:23:25 UTC, holo wrote: this(auto tmp) You need to specify a type here instead of using auto. Thanks for reply i fix it. But right now im getting: ../../.dub/packages/vibe-d-0.7.31/vibe-d/source/vibe/http/server.d(286,33): Deprecation: alias diet.traits.FilterCallback is deprecated - Use SafeFilterCallback instead. source/service/frontpage.d(28,30): Error: template std.array.byPair cannot deduce function from argument types !()(MongoCursor!(Bson, Bson, typeof(null))), candidates are: /usr/include/dlang/dmd/std/array.d(419,6): std.array.byPair(Key, Value)(Value[Key] aa) What are you trying to do with byPair? It's only defined for the MongoCursor: http://vibed.org/api/vibe.db.mongo.cursor/MongoCursor.byPair That std.array.byPair shows up means that you are using it for something else? source/service/frontpage.d(21,10): Error: function frontpage.FrontPageAPI.getHome no return exp; or assert(0); at end of function I guess you forgot a return here? Maybe it's easier to post your code again? I took this code from example: https://github.com/rejectedsoftware/vibe.d/blob/master/examples/mongodb/source/app.d And it is looking right now like below: import vibe.d; import std.algorithm, std.array; @path("/api") interface IFrontPageAPI { Json getHome(); } class FrontPageAPI : IFrontPageAPI { this(MongoCollection tmp) { collect = tmp; } private: MongoCollection collect; public: Json getHome() { logInfo("Getting HomePage from DB"); Bson query = Bson(["_id" : Bson("homepage")]); auto result = collect.find(query); logInfo("Iterating results..."); foreach (i, doc; result.byPair) logInfo("Item %d: %s", i, doc.toJson().toString()); logInfo("Sending Json"); return Json(result.map!(a => a.toJson).array); } } When i remove this piece of code: logInfo("Iterating results..."); foreach (i, doc; result.byPair) logInfo("Item %d: %s", i, doc.toJson().toString()); everything is working as expecting. One more question, what it does mean: return Json(result.map!(a => a.toJson).array); Why we cant just use something like result.toJson? When i
Re: D IDE Coedit - version 3, update 3 released
On Sunday, 23 July 2017 at 06:01:23 UTC, Alonso Cárdenas wrote: On Friday, 14 July 2017 at 06:10:08 UTC, Basile B. wrote: Better integration of D-Scanner. D-Scanner binary is itself included from now, in addition to DCD. See https://github.com/BBasile/Coedit/releases/tag/3_update_3 for the download links and a complete changelog. Hi Basile I have added Coedit to FreeBSD ports tree. Look it at http://www.freshports.org/editors/coedit/. Maybe you could add some entry about that on Coedit webpage Greetings Thanks. I'll maybe add a paragraph for the 3rd part packages. There's another one (for ArchLinux). I can read Configuration Options ===> The following configuration options are available for coedit-3.u.3_1: > Options available for the single LCL: you have to select exactly one of them GTK2=on: Use gtk20 interface QT4=off: Use qt4 interface ===> Use 'make config' to modify these settings What does that mean exactly ? Do you propose to the user to build Coedit themselves with optionally the QT interface ?
[Issue 17676] [REG 2.075] bad inlining of functions with multiple return statements
https://issues.dlang.org/show_bug.cgi?id=17676 greenifychanged: What|Removed |Added CC||greeen...@gmail.com --- Comment #5 from greenify --- > Let's please not clutter Bugzilla with junk. FWIW the flag is _not_ still not documented ;-) --
Re: VibeD - undefinded identifier
On Sunday, 23 July 2017 at 16:37:19 UTC, holo wrote: On Sunday, 23 July 2017 at 16:27:40 UTC, Mike Parker wrote: On Sunday, 23 July 2017 at 15:23:25 UTC, holo wrote: this(auto tmp) You need to specify a type here instead of using auto. Thanks for reply i fix it. But right now im getting: ../../.dub/packages/vibe-d-0.7.31/vibe-d/source/vibe/http/server.d(286,33): Deprecation: alias diet.traits.FilterCallback is deprecated - Use SafeFilterCallback instead. source/service/frontpage.d(28,30): Error: template std.array.byPair cannot deduce function from argument types !()(MongoCursor!(Bson, Bson, typeof(null))), candidates are: /usr/include/dlang/dmd/std/array.d(419,6): std.array.byPair(Key, Value)(Value[Key] aa) What are you trying to do with byPair? It's only defined for the MongoCursor: http://vibed.org/api/vibe.db.mongo.cursor/MongoCursor.byPair That std.array.byPair shows up means that you are using it for something else? source/service/frontpage.d(21,10): Error: function frontpage.FrontPageAPI.getHome no return exp; or assert(0); at end of function I guess you forgot a return here? Maybe it's easier to post your code again?
[Issue 17676] [REG 2.075] bad inlining of functions with multiple return statements
https://issues.dlang.org/show_bug.cgi?id=17676 --- Comment #4 from Vladimir Panteleev--- If the source code is provided then you can just get any intermediary or debug outputs yourself. Let's please not clutter Bugzilla with junk. --
Re: VibeD - undefinded identifier
On Sunday, 23 July 2017 at 16:27:40 UTC, Mike Parker wrote: On Sunday, 23 July 2017 at 15:23:25 UTC, holo wrote: this(auto tmp) You need to specify a type here instead of using auto. Thanks for reply i fix it. But right now im getting: ../../.dub/packages/vibe-d-0.7.31/vibe-d/source/vibe/http/server.d(286,33): Deprecation: alias diet.traits.FilterCallback is deprecated - Use SafeFilterCallback instead. source/service/frontpage.d(28,30): Error: template std.array.byPair cannot deduce function from argument types !()(MongoCursor!(Bson, Bson, typeof(null))), candidates are: /usr/include/dlang/dmd/std/array.d(419,6): std.array.byPair(Key, Value)(Value[Key] aa) source/service/frontpage.d(21,10): Error: function frontpage.FrontPageAPI.getHome no return exp; or assert(0); at end of function
Re: VibeD - undefinded identifier
On Sunday, 23 July 2017 at 15:23:25 UTC, holo wrote: this(auto tmp) You need to specify a type here instead of using auto.
Re: VibeD - undefinded identifier
On Sunday, 23 July 2017 at 15:43:31 UTC, Seb wrote: On Sunday, 23 July 2017 at 15:23:25 UTC, holo wrote: Hello Im trying to create REST api for my simple web page. My code is looking like below: module service.frontpage; import vibe.d; @path("/api") interface IFrontPageAPI { Json getHome(); } class FrontPageAPI : IFrontPageAPI { this(auto tmp) { auto collect = tmp; } Json getHome() { logInfo("Getting HomePage from DB"); Bson query = Bson(["_id" : Bson("homepage")]); auto result = collect.find(query); logInfo("Iterating results..."); foreach (i, doc; result.byPair) logInfo("Item %d: %s", i, doc.toJson().toString()); return result.toJson(); } } But when i try to compile it im getting: source/service/frontpage.d(15,3): Error: undefined identifier 'tmp', did you mean alias 'cmp'? Did i miss something? You need to - use Class variables - use types instead auto (here Mongo collection) - return a proper Json Have a look at: https://is.gd/7AMsKs And play with it - no output means no complication error. Thank you it solves my problem, but now i'm getting: source/service/frontpage.d(28,30): Error: template std.array.byPair cannot deduce function from argument types !()(MongoCursor!(Bson, Bson, typeof(null))), candidates are: /usr/include/dlang/dmd/std/array.d(419,6): std.array.byPair(Key, Value)(Value[Key] aa) source/service/frontpage.d(21,10): Error: function frontpage.FrontPageAPI.getHome no return exp; or assert(0); at end of function What is strange it is just copy/paste from example: https://github.com/rejectedsoftware/vibe.d/blob/master/examples/mongodb/source/app.d
Re: Is align(16) respected for globals?
On Sunday, 23 July 2017 at 08:43:33 UTC, Guillaume Piolat wrote: I rely a lot on such constants for SSE: align(16) static immutable short[8] A = [ 1, 1, 1, 1, 3, 3, 3, 3 ]; Does such alignment actually work on all OS, at all times? Word on the street says align() doesn't work with globals. Should work with LDC (part of our testsuite).
[Issue 17517] DMD fails to build on amd64 debian jessie
https://issues.dlang.org/show_bug.cgi?id=17517 Mihail Zenkovchanged: What|Removed |Added CC||mihail.zen...@gmail.com --
[Issue 17666] std.c.linux.socket has no replacement
https://issues.dlang.org/show_bug.cgi?id=17666 Sebastiaan Koppechanged: What|Removed |Added Status|NEW |ASSIGNED CC||m...@skoppe.eu --- Comment #2 from Sebastiaan Koppe --- Just so that you know, I am working on a PR to add them to druntime. --
Re: VibeD - undefinded identifier
On Sunday, 23 July 2017 at 15:23:25 UTC, holo wrote: Hello Im trying to create REST api for my simple web page. My code is looking like below: module service.frontpage; import vibe.d; @path("/api") interface IFrontPageAPI { Json getHome(); } class FrontPageAPI : IFrontPageAPI { this(auto tmp) { auto collect = tmp; } Json getHome() { logInfo("Getting HomePage from DB"); Bson query = Bson(["_id" : Bson("homepage")]); auto result = collect.find(query); logInfo("Iterating results..."); foreach (i, doc; result.byPair) logInfo("Item %d: %s", i, doc.toJson().toString()); return result.toJson(); } } But when i try to compile it im getting: source/service/frontpage.d(15,3): Error: undefined identifier 'tmp', did you mean alias 'cmp'? Did i miss something? You need to - use Class variables - use types instead auto (here Mongo collection) - return a proper Json Have a look at: https://is.gd/7AMsKs And play with it - no output means no complication error.
[Issue 17676] [REG 2.075] bad inlining of functions with multiple return statements
https://issues.dlang.org/show_bug.cgi?id=17676 --- Comment #3 from uplink.co...@googlemail.com --- It helps me to spot where the stuff is going wrong. If it's the codegen messing up or wether the inliner is indeed at fault. it's more readable then the asm. --
VibeD - undefinded identifier
Hello Im trying to create REST api for my simple web page. My code is looking like below: module service.frontpage; import vibe.d; @path("/api") interface IFrontPageAPI { Json getHome(); } class FrontPageAPI : IFrontPageAPI { this(auto tmp) { auto collect = tmp; } Json getHome() { logInfo("Getting HomePage from DB"); Bson query = Bson(["_id" : Bson("homepage")]); auto result = collect.find(query); logInfo("Iterating results..."); foreach (i, doc; result.byPair) logInfo("Item %d: %s", i, doc.toJson().toString()); return result.toJson(); } } But when i try to compile it im getting: source/service/frontpage.d(15,3): Error: undefined identifier 'tmp', did you mean alias 'cmp'? Did i miss something?
[Issue 17676] [REG 2.075] bad inlining of functions with multiple return statements
https://issues.dlang.org/show_bug.cgi?id=17676 --- Comment #2 from Vladimir Panteleev--- (In reply to uplink.coder from comment #1) > please consider adding the -vcg-ast output for such issues in the future. Why? If it can be trivially obtained by anyone, and unless it's part of the description of the bug, it's just junk. Makes as much sense as including compiled object files or executables. --
[Issue 17676] [REG 2.075] bad inlining of functions with multiple return statements
https://issues.dlang.org/show_bug.cgi?id=17676 uplink.co...@googlemail.com changed: What|Removed |Added CC||uplink.co...@googlemail.com --- Comment #1 from uplink.co...@googlemail.com --- please consider adding the -vcg-ast output for such issues in the future. It is there to help debugging inliner issues amongst other things :) The -vcg-ast output shows that the return is indeed removed: import object; import core.stdc.stdio; __gshared bool bgEnable = true; nothrow void smallAlloc() { { if (bgEnable) fullcollectTrigger(); fullcollectNow(); } } nothrow ulong fullcollect() { if (bgEnable) return fullcollectTrigger(); return fullcollectNow(); } nothrow ulong fullcollectNow() { printf("fullcollectNow\x0a"); return 1LU; } nothrow ulong fullcollectTrigger() { printf("fullcollectTrigger\x0a"); return 0LU; } void main() { { { if (bgEnable) fullcollectTrigger(); fullcollectNow(); } } return 0; } --
[Issue 17676] [REG 2.075] bad inlining of functions with multiple return statements
https://issues.dlang.org/show_bug.cgi?id=17676 Ketmar Darkchanged: What|Removed |Added CC||ket...@ketmar.no-ip.org --
[Issue 17676] [REG 2.075] bad inlining of functions with multiple return statements
https://issues.dlang.org/show_bug.cgi?id=17676 Rainer Schuetzechanged: What|Removed |Added Summary|[REG 2.075] bad inlining of |[REG 2.075] bad inlining of |functions with multiple |functions with multiple |return values |return statements --
[Issue 17676] New: [REG 2.075] bad inlining of functions with multiple return values
https://issues.dlang.org/show_bug.cgi?id=17676 Issue ID: 17676 Summary: [REG 2.075] bad inlining of functions with multiple return values Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: regression Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: r.sagita...@gmx.de import core.stdc.stdio; __gshared bool bgEnable = 1; void smallAlloc() nothrow { fullcollect(); } size_t fullcollect() nothrow { if(bgEnable) return fullcollectTrigger(); return fullcollectNow(); } size_t fullcollectNow() nothrow { pragma(inline, false); printf("fullcollectNow\n"); return 1; } size_t fullcollectTrigger() nothrow { pragma(inline, false); printf("fullcollectTrigger\n"); return 0; } void main() { smallAlloc(); } Without inlining, this just prints "fullcollectTrigger", while compiling with -inline causes both messages to be printed. The assembly of smallAlloc looks like this (dmd -O -inline -release): _D7reg681510smallAllocFNbZv: : 55 pushrbp 0001: 48 8B EC mov rbp,rsp 0004: 48 83 EC 20sub rsp,20h 0008: 40 80 3D 00 00 00 cmp byte ptr [_D7reg68158bgEnableb],0 00 00 0010: 74 05 je 0017 0012: E8 00 00 00 00 call _D7reg681518fullcollectTriggerFNbZm 0017: E8 00 00 00 00 call _D7reg681514fullcollectNowFNbZm 001C: 48 8B E5 mov rsp,rbp 001F: 5D pop rbp 0020: C3 ret Note the missing jump between the two calls. If an "else" is inserted between the two return statements in fullCollect(), it works correctly. This doesn't happen with dmd 2.074. Introduced by https://github.com/dlang/dmd/pull/6815 --
Re: Boston D Meetup: Strawman Structs
On Sunday, 23 July 2017 at 02:15:18 UTC, Steven Schveighoffer wrote: struct StrawmanRange(T) { ... void popFront() {} } How do you deal with ranges where `.popFront` returns the old front element (`.front` requires copying the front element if the caller wants to store it, `.popFront` can move it)?
[Issue 16758] Variant.opIndex result not modified after opAssign
https://issues.dlang.org/show_bug.cgi?id=16758 --- Comment #6 from Erdem--- @greenify: Sorry this was a mistake. I accidentally reopened this. --
[Issue 16758] Variant.opIndex result not modified after opAssign
https://issues.dlang.org/show_bug.cgi?id=16758 greenifychanged: What|Removed |Added Status|REOPENED|RESOLVED CC||greeen...@gmail.com Resolution|--- |FIXED --- Comment #5 from greenify --- @Erdem: Why did you reopen this? It works fine for me. See for yourself: https://is.gd/ZwMquz If you have run into a similar issue, please open a new issue. Thanks! --
[Issue 16783] std.net.curl application throws an exception
https://issues.dlang.org/show_bug.cgi?id=16783 --- Comment #5 from Erdem--- $ dmd -v DMD64 D Compiler v2.074.1 --
[Issue 16758] Variant.opIndex result not modified after opAssign
https://issues.dlang.org/show_bug.cgi?id=16758 Erdemchanged: What|Removed |Added Status|RESOLVED|REOPENED CC||farukerdemon...@gmail.com Resolution|FIXED |--- --
[Issue 16783] std.net.curl application throws an exception
https://issues.dlang.org/show_bug.cgi?id=16783 Erdemchanged: What|Removed |Added Status|RESOLVED|REOPENED Resolution|WORKSFORME |--- --- Comment #4 from Erdem --- I may reproduce this bug on Ubuntu 16.04.2 LTS 64 bit. I compile the program like this. $ dmd internet.d -ofinternet Output : $ ./internet std.concurrency.PriorityMessageException@std/concurrency.d(269): Priority message ??:? _D3std11concurrency10MessageBox160__T3getTDFS3std11concurrency3TidS3std3net4curl21__T11CurlMessageTAyaZ11CurlMessageZbTDFS3std11concurrency3TidS3std3net4curl19__T11CurlMessageTbZ11CurlMessageZbZ3getMFMDFS3std11concurrency3TidS3std3net4curl21__T11CurlMessageTAyaZ11CurlMessageZbMDFS3std11concurrency3TidS3std3net4curl19__T11CurlMessageTbZ11CurlMessageZbZ3ptyMFKS3std11concurrency36__T4ListTS3std11concurrency7MessageZ4ListZb [0x59f9ca] ??:? bool std.concurrency.MessageBox.get!(bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(immutable(char)[]).CurlMessage), bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(bool).CurlMessage)).get(scope bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(immutable(char)[]).CurlMessage), scope bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(bool).CurlMessage)) [0x59f406] ??:? void std.concurrency.receive!(bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(immutable(char)[]).CurlMessage), bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(bool).CurlMessage)).receive(bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(immutable(char)[]).CurlMessage), bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(bool).CurlMessage)) [0x59f1cd] ??:? void std.net.curl.AsyncLineInputRange!(char).AsyncLineInputRange.__mixin5.tryEnsureUnits() [0x59b5a0] ??:? @property bool std.net.curl.AsyncLineInputRange!(char).AsyncLineInputRange.__mixin5.empty() [0x59b148] ??:? _Dmain [0x57fc6b] ??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFNlZv [0x5aa353] ??:? scope void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x5aa283] ??:? scope void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [0x5aa2fc] ??:? scope void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x5aa283] ??:? _d_run_main [0x5aa1f3] ??:? main [0x5a4407] ??:? __libc_start_main [0xd7fb382f] erdem@erdem:~/Masaüstü$ ./internet std.concurrency.PriorityMessageException@std/concurrency.d(269): Priority message ??:? _D3std11concurrency10MessageBox160__T3getTDFS3std11concurrency3TidS3std3net4curl21__T11CurlMessageTAyaZ11CurlMessageZbTDFS3std11concurrency3TidS3std3net4curl19__T11CurlMessageTbZ11CurlMessageZbZ3getMFMDFS3std11concurrency3TidS3std3net4curl21__T11CurlMessageTAyaZ11CurlMessageZbMDFS3std11concurrency3TidS3std3net4curl19__T11CurlMessageTbZ11CurlMessageZbZ3ptyMFKS3std11concurrency36__T4ListTS3std11concurrency7MessageZ4ListZb [0x59f9ca] ??:? bool std.concurrency.MessageBox.get!(bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(immutable(char)[]).CurlMessage), bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(bool).CurlMessage)).get(scope bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(immutable(char)[]).CurlMessage), scope bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(bool).CurlMessage)) [0x59f406] ??:? void std.concurrency.receive!(bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(immutable(char)[]).CurlMessage), bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(bool).CurlMessage)).receive(bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(immutable(char)[]).CurlMessage), bool delegate(std.concurrency.Tid, std.net.curl.CurlMessage!(bool).CurlMessage)) [0x59f1cd] ??:? void std.net.curl.AsyncLineInputRange!(char).AsyncLineInputRange.__mixin5.tryEnsureUnits() [0x59b5a0] ??:? @property bool std.net.curl.AsyncLineInputRange!(char).AsyncLineInputRange.__mixin5.empty() [0x59b148] ??:? _Dmain [0x57fc6b] ??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFNlZv [0x5aa353] ??:? scope void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x5aa283] ??:? scope void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [0x5aa2fc] ??:? scope void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x5aa283] ??:? _d_run_main [0x5aa1f3] ??:? main [0x5a4407] ??:? __libc_start_main [0x2b9a982f] --
Re: How can I serialize a struct into a file in the style of C?
Hi ! I have a dub package that doing this. https://github.com/Temtaime/tt-utils/blob/master/source/tt/binary/tests.d Have a look at the tests. Currently it has no documentation, but feel free to ask questions
Re: Profiling Windows App and DLL
On Monday, 17 July 2017 at 20:36:58 UTC, Igor wrote: I also tried "Very Sleepy" profiler but it only shows symbols for main application and not for the DLL that it loads which is also built with debug info. Something that works very well is CPU profiling with CodeXL. It used to be an underwhelming sampling profiler, until a few years ago.
Re: Some GC and emulated TLS questions (GDC related)
On Sunday, 16 July 2017 at 12:37:26 UTC, Johannes Pfau wrote: Yes, probably the best solution for now is to reimplement GCC style emutls with shared library support in druntime for all compilers and forget about C/C++ TLS compatibility. Even if we could get patches into libgcc it'd take years till all relevant systems have been updated to new libgcc versions. It might be worth doing anyway, considering the rise of GC languages like D and Go. There is also this llvm implementation, available under permissive licenses and actually documented somewhat: https://github.com/llvm-mirror/compiler-rt/blob/master/lib/builtins/emutls.c Unfortunately also not boost compatible, so we can't simply port that code either, as far as I can see? Yes, it can't simply be relicensed as Boost, even though the UIUC/MIT dual license it's under is very permissive, but each license has advertising and license text inclusion clauses that are not compatible with the Boost license. On Sunday, 16 July 2017 at 14:10:45 UTC, Johannes Pfau wrote: Am Sun, 16 Jul 2017 14:48:04 +0200 schrieb Iain Buclaw via Digitalmars-d: I sense a revert coming on... https://github.com/D-Programming-GDC/GDC/commit/cf5e9e323b26d21a652bc2933dd886faba90281c Iain. Correct, though more in a metaphorical sense ;-) Ideally, I'd want a boost licensed, high level D implementation in core.thread. Instead of using __gthread get/setspecific, we simply add a GC managed (i.e. plain stupid) void[][] _tlsVars array to core.thread.Thread, use core.sync for locking and core.atomic to manage array indices. With all the high-level stuff we can reuse from druntime (resizing/reserving arrays) such an implementation is probably < 100 LOC. Most importantly, as we can't overwrite the functions in libgcc we'd also use custom function names (__d_emutls_get_address). The one thing stopping me though is that I don't think I can implement this and boost-license it now that I almost know the libgcc implementation by heart... Sounds like a worthwhile effort. If it requires someone who's never looked at the libgcc implementation, you could try asking in the LDC forum or someone who's contributed to the GC. Maybe Dmitry could whip this up for us?
Re: New Garbage Collector?
On Sunday, 23 July 2017 at 09:54:36 UTC, Moritz Maxeiner wrote: Have you read the excellent blog posts about to use the GC in D by Micheal Parker [2][3]? * Have you read the excellent blog posts about how to use the GC in D by Michael Parker [2][3]? Sorry about that. [2] http://dlang.org/blog/2017/03/20/dont-fear-the-reaper/ [3] https://dlang.org/blog/2017/06/16/life-in-the-fast-lane/
Re: New Garbage Collector?
On Sunday, 23 July 2017 at 09:34:09 UTC, Temtaime wrote: On Saturday, 22 July 2017 at 16:35:03 UTC, Igor Shirkalin wrote: On Saturday, 22 July 2017 at 10:17:49 UTC, Temtaime wrote: On Saturday, 22 July 2017 at 04:53:17 UTC, aedt wrote: In the forum, I saw a thread about someone working on a new GC. Just wanted to know if there's any updates on that. And what issues is it going to fix.. Personally, I would be greatly delighted if it acknowledges the Stop-The-World problem[1]. Going around it is shown not to be impossible[2]. I do understand it's not trivial task but how is the community/core devs supporting this? [1] https://dlang.org/spec/garbage.html [2] https://hub.docker.com/r/nimlang/nim/ The new precise GC will be never added to druntime. It is dead, man. Are you real developer of new GC? I am that who sees _no progress_ for many years. Slow progress != no progess [1] Current implementation does memory leaks Which bug reports are you referring to specifically? works slow It's not the best a non-generational stop-the-world mark-and-sweep GC can be, but in my experience it's good enough for non-realtime applications as long as you don't use it for huge memory chunks (i.e. stick to objects without large arrays). and has some other disadvantages. Which are you referring to? And we will suffer from this many years. Have you read the excellent blog posts about to use the GC in D by Micheal Parker [2][3]? [1] https://github.com/dlang/druntime/commits/master/src/gc [2] http://dlang.org/blog/2017/03/20/dont-fear-the-reaper/ [3] https://dlang.org/blog/2017/06/16/life-in-the-fast-lane/
Re: New Garbage Collector?
On Saturday, 22 July 2017 at 16:35:03 UTC, Igor Shirkalin wrote: On Saturday, 22 July 2017 at 10:17:49 UTC, Temtaime wrote: On Saturday, 22 July 2017 at 04:53:17 UTC, aedt wrote: In the forum, I saw a thread about someone working on a new GC. Just wanted to know if there's any updates on that. And what issues is it going to fix.. Personally, I would be greatly delighted if it acknowledges the Stop-The-World problem[1]. Going around it is shown not to be impossible[2]. I do understand it's not trivial task but how is the community/core devs supporting this? [1] https://dlang.org/spec/garbage.html [2] https://hub.docker.com/r/nimlang/nim/ The new precise GC will be never added to druntime. It is dead, man. Are you real developer of new GC? I am that who sees _no progress_ for many years. Current implementation does memory leaks, works slow and has some other disadvantages. But no one of the « real » developers sees reason to rewrite the gc, because they want to play with theirs toys bringing new not so essential stuff to the d. And we will suffer from this many years.
Re: Profiling Windows App and DLL
On 17.07.2017 22:36, Igor wrote: Is there a known limitation in profiling these or am I doing something wrong? When I try to run my application from VisualD (x64 build) with -profile switch I just get Access Violation reported on WinMain function (actual declaration, it doesn't enter its body). If I build it with dub build --build=profile and then try to run it nothing happens, like it doesn't run at all. If I only add -profile switch on DLL part of the application I get the same Access Violation on DllMain. The problem seems to be that the compiler only excludes C main from being instrumented for profiling. This causes WinMain/DllMain to also call the tracing functions before the runtime had a chance to be initialized by Runtime.initialize(). A workaround could be to compile the respective module without -profile, and then link it as an object file to the rest of the code. I also tried "Very Sleepy" profiler but it only shows symbols for main application and not for the DLL that it loads which is also built with debug info. You can also use the "Performance profiler" from within Visual Studio.
Is align(16) respected for globals?
I rely a lot on such constants for SSE: align(16) static immutable short[8] A = [ 1, 1, 1, 1, 3, 3, 3, 3 ]; Does such alignment actually work on all OS, at all times? Word on the street says align() doesn't work with globals.
Re: D easily overlooked?
On Sat, 2017-07-22 at 17:06 +, aedt via Digitalmars-d wrote: > On Saturday, 22 July 2017 at 14:20:24 UTC, Russel Winder wrote: > > On Sat, 2017-07-22 at 13:27 +, aedt via Digitalmars-d wrote: > > > > > > > […] > > D without the GC isn't at all interesting, might as well use Go > > in that case. So D only gets traction if it keeps a GC. > > Go people are also trying to make their GC pretty fast afaik > https://news.ycombinator.com/item?id=12821586 I believe they are their third or fourth already. Java and Go development teams put a significant amount of effort into GC. -- Russel. = Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.win...@ekiga.net 41 Buckmaster Roadm: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder signature.asc Description: This is a digitally signed message part
[Issue 17675] New: add symbol lookup information in debug info
https://issues.dlang.org/show_bug.cgi?id=17675 Issue ID: 17675 Summary: add symbol lookup information in debug info Product: D Version: D2 Hardware: All OS: All Status: NEW Keywords: symdeb Severity: enhancement Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: r.sagita...@gmx.de It's currently impossible for a debugger to make sense of globals (especially if imported from other modules): module a; import b; void main() { glob = 3; } /// module b; int glob; /// module c; int glob; There is no information available to unambiguously show "glob" while stepping through main. It would be nice if the compiler would emit symbol lookup information for the import. IIRC GDC already does this. --
[Issue 17666] std.c.linux.socket has no replacement
https://issues.dlang.org/show_bug.cgi?id=17666 Harry Vennikchanged: What|Removed |Added CC||htven...@gmail.com --- Comment #1 from Harry Vennik --- TCP_* constants are defined in core.sys.linux.sys.netinet.tcp, and TCP_NODELAY also in core.sys.posix.netinet.tcp (uh, should that be in two places?). The other stuff is indeed nowhere to be found in druntime (except SD_* and IP_* in core.sys.windows.winsock2, which isn't relevant for Posix systems). --
[Issue 10369] Deprecate unordered floating point comparisons (!<>=, etc) and later remove them
https://issues.dlang.org/show_bug.cgi?id=10369 Ali Cehrelichanged: What|Removed |Added CC||acehr...@yahoo.com --- Comment #12 from Ali Cehreli --- To add to bearophile's last comment, they appear on this page as well: https://wiki.dlang.org/Operator_precedence Ali --
Re: D easily overlooked?
On Thursday, 20 July 2017 at 16:15:43 UTC, porter wrote: On Thursday, 20 July 2017 at 15:40:04 UTC, Wulfklaue wrote: the problems are greater than thought http://forum.dlang.org/thread/bqlfknpsdetzoxuxr...@forum.dlang.org