June 30, 2018
I don't normally contribute a lot here but as I've been using a fair mix of C/C++, D and Rust lately for a variety of projects from game dev to web to services, I have a few thoughts.

Without exhaustively comparing the different pros/cons of the languages, the most important thing that makes me pick D for a project these days is actually vibe.d. It's the perfect balance between letting me expose my low level stuff as a network/web service easily while not trying to take over too much of my application or conversely get me to manually write async network state machines. I'd happily argue that its cooperative fiber model is actually superior to C#'s, and while it's not quite to the level of Go (mostly just because it's not as ubiquitously supported in the standard library), I'll still happily take the trade-off to use a language closer to C/C++.

Rust's web framework and cooperative fiber story is still just forming, and I have some concern they'll go down the C# route which while better than nothing, isn't quite as nice as vibe.d where any function can effectively be part of a cooperative fiber without the need for infectious markup everywhere. Rust's syntax is also a fair bit different than C/C++ which makes it harder to collaborate with people for the moment, while D's is close enough that anyone with a decent amount of C/C++ experience can jump in pretty quickly.

In terms of what makes me *not* want to use D, while GC is certainly a factor in some uses, in more cases it's actually that I want more language and compiler stability. While things have calmed down somewhat in the past year the number of times a D update has broken code (mine or code in a dependency) and left me trying to debug someone else's code deep in a library somewhere when I'm trying to just do a small update has been far too high. Rust's "stable" branch and their new epochs model (where the language can change every few years but critically dependencies using different epochs work together) is something I would love to be adopted in D.

In any case I just wanted to give the feedback that from my point of view the main thing that keeps me coming back to it for new projects is vibe.d. Thus I'm in favor of making vibe.d a big part of the selling point and design considerations for D going forward.
June 30, 2018
On Saturday, 30 June 2018 at 12:59:02 UTC, punkUser wrote:
> I don't normally contribute a lot here but as I've been using a fair mix of C/C++, D and Rust lately for a variety of projects from game dev to web to services, I have a few thoughts.
>
> Without exhaustively comparing the different pros/cons of the languages, the most important thing that makes me pick D for a project these days is actually vibe.d. It's the perfect balance between letting me expose my low level stuff as a network/web service easily while not trying to take over too much of my application or conversely get me to manually write async network state machines. I'd happily argue that its cooperative fiber model is actually superior to C#'s, and while it's not quite to the level of Go (mostly just because it's not as ubiquitously supported in the standard library), I'll still happily take the trade-off to use a language closer to C/C++.
>
> Rust's web framework and cooperative fiber story is still just forming, and I have some concern they'll go down the C# route which while better than nothing, isn't quite as nice as vibe.d where any function can effectively be part of a cooperative fiber without the need for infectious markup everywhere. Rust's syntax is also a fair bit different than C/C++ which makes it harder to collaborate with people for the moment, while D's is close enough that anyone with a decent amount of C/C++ experience can jump in pretty quickly.
>
> In terms of what makes me *not* want to use D, while GC is certainly a factor in some uses, in more cases it's actually that I want more language and compiler stability. While things have calmed down somewhat in the past year the number of times a D update has broken code (mine or code in a dependency) and left me trying to debug someone else's code deep in a library somewhere when I'm trying to just do a small update has been far too high. Rust's "stable" branch and their new epochs model (where the language can change every few years but critically dependencies using different epochs work together) is something I would love to be adopted in D.
>
> In any case I just wanted to give the feedback that from my point of view the main thing that keeps me coming back to it for new projects is vibe.d. Thus I'm in favor of making vibe.d a big part of the selling point and design considerations for D going forward.

Already tried. Good luck with that... ;)
July 01, 2018
On Saturday, 30 June 2018 at 07:11:18 UTC, Joakim wrote:
> I'd hope a manager would look at actually meaningful stats like downloads, rather than just fluffy stats such as "likes":
>
> http://www.somsubhra.com/github-release-stats/?username=crystal-lang&repository=crystal
> http://www.somsubhra.com/github-release-stats/?username=ldc-developers&repository=ldc
>
> I see around 9k total downloads of the various Crystal 0.24 and 0.25 versions over the last 8 months, compared to 14k downloads of the ldc 1.9 compiler alone from two months ago.

Its hard to compare those figure because D and Crystal also use package installers on the respectable platforms. Going to the crystal download page makes that very clear. Making tracking downloads more harder.

D can reach more Git downloads thanks to Windows users that do not rely on Linux system packages.

D its buginess in between releases also does not help. I probably downloaded LDC and DMD in the last 9 months a dozen times, being forced to go back to older versions. Then trying the new versions, going back. Again and again on Windows.

Downloads do not mean a lot when you can not keep the people. I can swear that i alone am probably responsible for over 25+ downloads on Windows and dozens on Linux OS. And every time D loses me after running into issues.

Crystal its 0.24 release is still perfectly working here. I literally have downloaded 2 version in the last year. 0.23 and 0.24... That is it. No switching between version because of bugs or package issues or dependency issues. Kind of ironic but maybe because the http server and other packages are build in to the core, i have no need for external 3th party solutions like D's Vibe.d.

> Of course, all these stats can be gamed, but I think it'd be hard to argue Crystal is more popular.

code.d
Total 1336 packages found.

crystalshards.xyz
3359 total shards

Track both sites using archive.org and notice that Crystal is growing faster in regards to Shards then D its packages.

Duplicates D something like 6 postgresql driver packages. Crystal has 2 drivers. So D is actually fluffing its numbers with a lot of not maintained duplicates. Mysql ... Its not hard to tell that Crystal its Shards community is more active.

Crystal only recently got the funding to get a full time employees to work on the code base. So one can expect the development to increase from a mostly community driven platform. They out gross Nim by almost double on average ( salt.bountysource.com ) and that does not include the 2000$ / month that "84 codes" directly donates.

I do not know how much D takes in per month. This has always been a more obscure, as is who are the people that really are paid full time to work on D. Walter?

Crystal needs a lot of work but so does D. You expect D to have more its act together for a language this old. No default http server in this day and age is just really weak sauce. And Vibe.d breaks plenty of times in between its releases and DMD releases.

Both have issues but one is under development for 4 year and the other for 16 years. You expect D to simply outclass Crystal and other languages. Even Rust is out developing D in many areas, a lot thanks to a big community.
July 01, 2018
On Saturday, 30 June 2018 at 12:59:02 UTC, punkUser wrote:
> I don't normally contribute a lot here but as I've been using a fair mix of C/C++, D and Rust lately for a variety of projects from game dev to web to services, I have a few thoughts.
>
> Without exhaustively comparing the different pros/cons of the languages, the most important thing that makes me pick D for a project these days is actually vibe.d. It's the perfect balance between letting me expose my low level stuff as a network/web service easily while not trying to take over too much of my application or conversely get me to manually write async network state machines. I'd happily argue that its cooperative fiber model is actually superior to C#'s, and while it's not quite to the level of Go (mostly just because it's not as ubiquitously supported in the standard library), I'll still happily take the trade-off to use a language closer to C/C++.
>
> Rust's web framework and cooperative fiber story is still just forming, and I have some concern they'll go down the C# route which while better than nothing, isn't quite as nice as vibe.d where any function can effectively be part of a cooperative fiber without the need for infectious markup everywhere. Rust's syntax is also a fair bit different than C/C++ which makes it harder to collaborate with people for the moment, while D's is close enough that anyone with a decent amount of C/C++ experience can jump in pretty quickly.
>
> In terms of what makes me *not* want to use D, while GC is certainly a factor in some uses, in more cases it's actually that I want more language and compiler stability. While things have calmed down somewhat in the past year the number of times a D update has broken code (mine or code in a dependency) and left me trying to debug someone else's code deep in a library somewhere when I'm trying to just do a small update has been far too high. Rust's "stable" branch and their new epochs model (where the language can change every few years but critically dependencies using different epochs work together) is something I would love to be adopted in D.
>
> In any case I just wanted to give the feedback that from my point of view the main thing that keeps me coming back to it for new projects is vibe.d. Thus I'm in favor of making vibe.d a big part of the selling point and design considerations for D going forward.

Not to brag and what not, but if you're going straight for web and not anything else then use Diamond, because it gives you so much more than vibe.d alone does, but at the same time allows you to utilize vibe.d to its full extend.
July 01, 2018
On Sunday, 1 July 2018 at 02:57:26 UTC, RhyS wrote:
>
> D its buginess in between releases also does not help. I probably downloaded LDC and DMD in the last 9 months a dozen times, being forced to go back to older versions. Then trying the new versions, going back. Again and again on Windows.
>
> Downloads do not mean a lot when you can not keep the people. I can swear that i alone am probably responsible for over 25+ downloads on Windows and dozens on Linux OS. And every time D loses me after running into issues.

Been there. Just recently found out about DVM (https://github.com/jacob-carlborg/dvm). Not sure how well it works for Windows.
July 01, 2018
On Saturday, 30 June 2018 at 21:15:09 UTC, Ecstatic Coder wrote:
> Already tried. Good luck with that... ;)

Well to be clear I'm more providing the feedback out courtesy and thanks for the work people have done on D and vibe.d in particular. While I'd love to see D succeed in the long run, we're blessed with enough options these days that it's not a huge deal to me either way.

Thanks for the link to Diamond, I'll check it out. That said, the majority of my use cases are exposing lower level D code as network accessible services and occasionally implementing custom network protocols rather than writing full client web apps in D, but always good to keep various options in mind.
July 01, 2018
On Sunday, 1 July 2018 at 02:57:26 UTC, RhyS wrote:
> On Saturday, 30 June 2018 at 07:11:18 UTC, Joakim wrote:
>> I'd hope a manager would look at actually meaningful stats like downloads, rather than just fluffy stats such as "likes":
>>
>> http://www.somsubhra.com/github-release-stats/?username=crystal-lang&repository=crystal
>> http://www.somsubhra.com/github-release-stats/?username=ldc-developers&repository=ldc
>>
>> I see around 9k total downloads of the various Crystal 0.24 and 0.25 versions over the last 8 months, compared to 14k downloads of the ldc 1.9 compiler alone from two months ago.
>
> Its hard to compare those figure because D and Crystal also use package installers on the respectable platforms. Going to the crystal download page makes that very clear. Making tracking downloads more harder.
>
> D can reach more Git downloads thanks to Windows users that do not rely on Linux system packages.
>
> D its buginess in between releases also does not help. I probably downloaded LDC and DMD in the last 9 months a dozen times, being forced to go back to older versions. Then trying the new versions, going back. Again and again on Windows.
>
> Downloads do not mean a lot when you can not keep the people. I can swear that i alone am probably responsible for over 25+ downloads on Windows and dozens on Linux OS. And every time D loses me after running into issues.
>
> Crystal its 0.24 release is still perfectly working here. I literally have downloaded 2 version in the last year. 0.23 and 0.24... That is it. No switching between version because of bugs or package issues or dependency issues. Kind of ironic but maybe because the http server and other packages are build in to the core, i have no need for external 3th party solutions like D's Vibe.d.
>
>> Of course, all these stats can be gamed, but I think it'd be hard to argue Crystal is more popular.
>
> code.d
> Total 1336 packages found.
>
> crystalshards.xyz
> 3359 total shards
>
> Track both sites using archive.org and notice that Crystal is growing faster in regards to Shards then D its packages.
>
> Duplicates D something like 6 postgresql driver packages. Crystal has 2 drivers. So D is actually fluffing its numbers with a lot of not maintained duplicates. Mysql ... Its not hard to tell that Crystal its Shards community is more active.
>
> Crystal only recently got the funding to get a full time employees to work on the code base. So one can expect the development to increase from a mostly community driven platform. They out gross Nim by almost double on average ( salt.bountysource.com ) and that does not include the 2000$ / month that "84 codes" directly donates.
>
> I do not know how much D takes in per month. This has always been a more obscure, as is who are the people that really are paid full time to work on D. Walter?
>
> Crystal needs a lot of work but so does D. You expect D to have more its act together for a language this old. No default http server in this day and age is just really weak sauce. And Vibe.d breaks plenty of times in between its releases and DMD releases.
>
> Both have issues but one is under development for 4 year and the other for 16 years. You expect D to simply outclass Crystal and other languages. Even Rust is out developing D in many areas, a lot thanks to a big community.

+1

At the moement, D's default standard library obviously requires a garbage collector, and this won't change for a while.

Trying to convince developers to use D instead of C++ is often pointless, because most of the time, if you develop something in C++ instead of Java/C#/Go/etc, there is a reason for that.

And that reason why they don't use those nice garbage collected languages is generally the same reason why they won't use D either.

But those who currently use those same garbage collected languages (Go/Java/C#/etc) can be convinced to switch to D, because D's garbage collector won't be probably a problem for them either, as they are already using one in production.

So what remains a mystery for me is that the D leadership OBVIOUSLY CAN'T BE CONVINCED that marketing D as a Go/Java/C# alternative could be much more efficient than marketing D as a C/C++ alternative.

Why are they trying to sell D on its weakness, instead of selling it on its strength.

The only thing that D needs to compete on the same ground as Go and Crystal is to have similar default HTTP-related libraries, which don't rely on thirdparty libraries for the reasons you just explained...

Add a 10-liner "Hello World" web server example on the main page and that's it.

And if they REALLY want to ALSO compete with C++, then I strongly suggest to add weak and strong references to the syntax (for instance T& and T@), and provide an alternative standard library which doesn't require garbage collection at all, like those of C++ and Rust.

But I think it's quite obvious that the first option (Go-like) clearly requires less time and efforts than the second (C++-like).


July 01, 2018
Am 01.07.2018 um 14:12 schrieb Ecstatic Coder:
> 
> Add a 10-liner "Hello World" web server example on the main page and that's it.

There already is one in the examples:

#!/usr/bin/env dub
/+ dub.sdl:
name "hello_vibed"
dependency "vibe-d" version="~>0.8.0"
+/
void main()
{
    import vibe.d;
    listenHTTP(":8080", (req, res) {
        res.writeBody("Hello, World: " ~ req.path);
    });
    runApplication();
}

July 01, 2018
On Sunday, 1 July 2018 at 12:43:53 UTC, Johannes Loher wrote:
> Am 01.07.2018 um 14:12 schrieb Ecstatic Coder:
>> 
>> Add a 10-liner "Hello World" web server example on the main page and that's it.
>
> There already is one in the examples:
>
> #!/usr/bin/env dub
> /+ dub.sdl:
> name "hello_vibed"
> dependency "vibe-d" version="~>0.8.0"
> +/
> void main()
> {
>     import vibe.d;
>     listenHTTP(":8080", (req, res) {
>         res.writeBody("Hello, World: " ~ req.path);
>     });
>     runApplication();
> }

Yeah I know, guess who asked for it...

But the last step, which is including such functionality into the standard library , will never happen, because nobody here seems to see the point of doing this.

I guess those who made that for Go and Crystal probably did it wrong.

What a mistake they did, and they don't even know they make a mistake, silly them... ;)


July 01, 2018
On Sunday, July 01, 2018 13:37:32 Ecstatic Coder via Digitalmars-d-announce wrote:
> On Sunday, 1 July 2018 at 12:43:53 UTC, Johannes Loher wrote:
> > Am 01.07.2018 um 14:12 schrieb Ecstatic Coder:
> >> Add a 10-liner "Hello World" web server example on the main page and that's it.
> >
> > There already is one in the examples:
> >
> > #!/usr/bin/env dub
> > /+ dub.sdl:
> > name "hello_vibed"
> > dependency "vibe-d" version="~>0.8.0"
> > +/
> > void main()
> > {
> >
> >     import vibe.d;
> >     listenHTTP(":8080", (req, res) {
> >
> >         res.writeBody("Hello, World: " ~ req.path);
> >
> >     });
> >     runApplication();
> >
> > }
>
> Yeah I know, guess who asked for it...
>
> But the last step, which is including such functionality into the standard library , will never happen, because nobody here seems to see the point of doing this.
>
> I guess those who made that for Go and Crystal probably did it wrong.
>
> What a mistake they did, and they don't even know they make a mistake, silly them... ;)

What should and shouldn't go in the standard library for a language is something that's up for a lot of debate and is likely to often be a point of contention. There is no clear right or wrong here. Languages that have had very sparse standard libraries have done quite well, and languages that have had kitchen sink libraries have done quite well. There are pros and cons to both approaches.

- Jonathan M Davis