Re: newCTFE Status July 2017

2017-07-23 Thread Stefan Koch via Digitalmars-d

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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread Alonso Cárdenas via Digitalmars-d-announce

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

2017-07-23 Thread Jean-Louis Leroy via Digitalmars-d

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

2017-07-23 Thread Seb via Digitalmars-d

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

2017-07-23 Thread Jean-Louis Leroy via Digitalmars-d

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?

2017-07-23 Thread Michael via Digitalmars-d

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

2017-07-23 Thread holo via Digitalmars-d-learn

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

2017-07-23 Thread Basile B. via Digitalmars-d-announce

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

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17676

greenify  changed:

   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

2017-07-23 Thread Seb via Digitalmars-d-learn

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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread holo via Digitalmars-d-learn

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

2017-07-23 Thread Mike Parker via Digitalmars-d-learn

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

2017-07-23 Thread holo via Digitalmars-d-learn

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?

2017-07-23 Thread Johan Engelen via Digitalmars-d-learn

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

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17517

Mihail Zenkov  changed:

   What|Removed |Added

 CC||mihail.zen...@gmail.com

--


[Issue 17666] std.c.linux.socket has no replacement

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17666

Sebastiaan Koppe  changed:

   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

2017-07-23 Thread Seb via Digitalmars-d-learn

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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread holo via Digitalmars-d-learn

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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17676

Ketmar Dark  changed:

   What|Removed |Added

 CC||ket...@ketmar.no-ip.org

--


[Issue 17676] [REG 2.075] bad inlining of functions with multiple return statements

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17676

Rainer Schuetze  changed:

   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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread Moritz Maxeiner via Digitalmars-d-announce
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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16758

greenify  changed:

   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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16758

Erdem  changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 CC||farukerdemon...@gmail.com
 Resolution|FIXED   |---

--


[Issue 16783] std.net.curl application throws an exception

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16783

Erdem  changed:

   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?

2017-07-23 Thread Temtaime via Digitalmars-d-learn

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

2017-07-23 Thread Guillaume Piolat via Digitalmars-d-learn

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)

2017-07-23 Thread Joakim via Digitalmars-d

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?

2017-07-23 Thread Moritz Maxeiner via Digitalmars-d

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?

2017-07-23 Thread Moritz Maxeiner via Digitalmars-d

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?

2017-07-23 Thread Temtaime via Digitalmars-d

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

2017-07-23 Thread Rainer Schuetze via Digitalmars-d-learn



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?

2017-07-23 Thread Guillaume Piolat via Digitalmars-d-learn

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?

2017-07-23 Thread Russel Winder via Digitalmars-d
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

2017-07-23 Thread via Digitalmars-d-bugs
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

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17666

Harry Vennik  changed:

   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

2017-07-23 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=10369

Ali Cehreli  changed:

   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?

2017-07-23 Thread porter via Digitalmars-d

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