Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 17:55:18 UTC, Steven Schveighoffer wrote: I have to say as someone who uses mostly non-windows systems, these problems only seem to crop up for Windows developers. I don't know if it's a different expectation or a different mindset or something else. -Steve I don't think this is true at all. I recall people getting frustrated and blaming it one Linux support being second class to windows. Mind you, I used both and was totally confused because windows had so many qwerks. This was before win64 support.
Re: My first experience as a D Newbie
On Thursday, 12 October 2017 at 03:50:31 UTC, Dennis Cote wrote: This time it runs but displays a window full of micro sized text and icons. It is barely readable. I figured out dlangide assumes a DPI setting of 96 which creates the tiny text and icons on my Retina display. Under preferences it shows the DPI as "Use Screen DPI (192)" but it actually uses that value only after I click the Apply button. Then the text and icons are displayed correctly. Looks like a small bug in dlangide initialization. I also noticed the check boxes in the preference dialog seem to display at 96 DPI (and are therefore very small) even after the display resolution is changed. Dennis Cote
Re: My first experience as a D Newbie
On Thursday, 12 October 2017 at 01:26:33 UTC, jmh530 wrote: You have to fetch it first if you don't already have it: dub fetch dlangide dub run dlangide Of course, you might still have an issue... I still have an issue on macOS using latest Homebrew version of dmd and dub. It seems like it builds with one deprecation warning, but fails to run. I fetched into an empty directory then run. All build and error message are in the link below: https://pastebin.com/FLQHwGXf It looks like SLD2 is missing, so I installed it via Homebrew and tried again. This time it runs but displays a window full of micro sized text and icons. It is barely readable. The link below leads to a screenshot showing the dlangide window and Dlang.org open in Safari for comparison. http://tinypic.com/r/20jiico/9 Not trying to slam dlangide (in fact it looks promising), but these kind of issues, when following the instructions given, show how incomplete or untested instructions can lead new users to have a frustrating first experience with D. Dennis Cote
Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 22:23:12 UTC, Rion wrote: On Wednesday, 11 October 2017 at 18:29:38 UTC, qznc wrote: At least on Ubuntu, this gives me an IDE: dub run dlangide I have not used it much and I don't know if it works on Windows, but it might be the easiest way once you installed dmd and dub. Windows 10: dub run dlangide Failed to find a package named 'dlangide'. You have to fetch it first if you don't already have it: dub fetch dlangide dub run dlangide Of course, you might still have an issue...
Re: DIP 1009 Status ?
On Thursday, 12 October 2017 at 00:38:37 UTC, Moritz Maxeiner wrote: As it has been a while since I've seen an update on DIP 1009 I'd like to ask what the current status of it is: Has it been closed for feedback and the second stage (submission to language authors) been initiated (as [1] requires)? [1] https://github.com/dlang/DIPs Waiting on a decision from Walter & Andrei.
DIP 1009 Status ?
As it has been a while since I've seen an update on DIP 1009 I'd like to ask what the current status of it is: Has it been closed for feedback and the second stage (submission to language authors) been initiated (as [1] requires)? [1] https://github.com/dlang/DIPs
Re: Result of CTFE should be implicitly castable to immutable
On Wednesday, 11 October 2017 at 14:30:54 UTC, Dmitry Olshansky wrote: My motivation is, of course, std.regex. static immutable r = regex("abc"); This is perfectly fine but because in general there is some amount of impurtiy in regex and it won't work. Yet regex is called at CTFE so there is no way it can escape mutable pointer to its result. Thoughts? For whatever it's worth, I also agree. Mike
Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 18:29:38 UTC, qznc wrote: At least on Ubuntu, this gives me an IDE: dub run dlangide I have not used it much and I don't know if it works on Windows, but it might be the easiest way once you installed dmd and dub. Windows 10: dub run dlangide Failed to find a package named 'dlangide'.
Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 17:55:18 UTC, Steven Schveighoffer wrote: I have to say as someone who uses mostly non-windows systems, these problems only seem to crop up for Windows developers. I don't know if it's a different expectation or a different mindset or something else. Its probably more the fact that most of the developers use Unix based system for development, be it OSx or Linux. As a result Windows is the overlooked system what results in a lack of testing. You really do not want to know the amount of times issues showed up because editor plugins crashes or did not work on windows properly. Very frustrating when its your first experience with a language. It also helps that for instance has a more unified package manager so for people it can simply be apt-get install a few packages and that is it. The patting and other issues are most of the time properly resolved. And it does not help when most plugins are developed by one developer, that is on the above mentioned Unix based systems.
Phobos' Windows Makefile
Hello, I've hit the following problem on this PR [0]: The Windows 32bit build fails with the error: "more than 32767 symbols in object file" [1]. After taking a look in `win32.mak`, I've seen that we are bundling multiple source files into a single object (which is the issue here), instead of compiling each source file into it's corresponding object and then linking the objects together. Is there a reason behind doing so, or should we rewrite the Windows makefiles? Looking forward to your answers! :) Cheers, Eduard [0] - https://github.com/dlang/phobos/pull/5331 [1] - https://auto-tester.puremagic.com/show-run.ghtml?projectid=1&runid=2826646&isPull=true
Re: D on quora ...
On Wednesday, 11 October 2017 at 07:33:26 UTC, Laeeth Isharc wrote: You know it's not that hard to be the change you wish to see in the world. That's really the whole point of open source, or at least of at least reasonably or more free software - you're not at the mercy of a paid vendor to whom you pay a fortune for the favour of them closing or otherwise creatively ignoring your tickets. You can pretty easily fix many problems and irritations yourself, and if you're too busy then one can pay someone to do it, and if one is busy and has no money to spend right now one can try to persuade someone to work on it. But if one just grumbles, probably the result will be just what anyone would expect. You still are at the mercy of the people maintaining the project. Which is kind of no different than being at the mercy of a big company from my experience. Some people listen, but a lot of the time they don't if something contradicts their views (having to do anything regarding Windows in this case). I could fork it and then maintain things myself, but that means fixing any pull requests or changes in the future yourself. Which now becomes a full time job, where as using the project to begin with was the point of reducing the workload, not increasing it. 64 bit command line build didn't seem to work for a while. That's been fixed recently, as I recall. One can't really compare Linux and Windows 32 and 64 bit. Those worlds work very differently. Windows is as it is because they are fanatical about maintaining backwards compatibility. So unless you run out of memory then 32 bit compiler isn't much of a restriction. And if you are doing so much ctfe that you run out of memory, chances are you can figure out how to build the 64 bit compiler on Windows! You can easily run out of memory, DMD is a memory hog. Yes that's exactly the problem I run into all the time. It's not even the amount of CTFE you are doing, you can run out of memory by doing something really simple. DMD is just horribly optimized in terms of memory. Yes more work for me when it's something that should be done as part of the build process. Try using digger - might work now that the 64 bit command line build works again. And failing that maybe file a request on bugzilla. For what... ? And I don't know but I guess if you contribute something to the D Foundation, probably - because it's still quite new - it will be easier to get people to listen to a gentle request to have a downloadable 64 bit compiler. These things do cost money, and right now I think somebody is paying for that out of the goodness of their heart... Everything costs money. That's how the world works. If you mean hosting the source code. Well Github hosts the source for open source projects for free. If you mean distributing binaries, well Github allows you to upload binary files for people to download for free as well. If you mean testing, well there are a lot of alternatives that provide free testing for open source projects (like appveyor which isn't currently being used). If you mean this forum board? Well there are a lot of places you have a board for free. There's some 100+ pull requests in DMD alone, just trying to contribute something is a chore in itself. Making a contribution isn't really worth much.
Re: My first experience as a D Newbie
At least on Ubuntu, this gives me an IDE: dub run dlangide I have not used it much and I don't know if it works on Windows, but it might be the easiest way once you installed dmd and dub.
Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 17:55:18 UTC, Steven Schveighoffer wrote: I have to say as someone who uses mostly non-windows systems, these problems only seem to crop up for Windows developers. I don't know if it's a different expectation or a different mindset or something else. -Steve I don't know if it's that everything seems to be more difficult on Windows or that the average user of Linux is more knowledgeable than the average Windows user, or both. Regardless, if you want to reach more Windows users, spelling things out clearly is helpful.
Re: My first experience as a D Newbie
On 10/11/17 1:42 PM, WhatMeWorry wrote: On Wednesday, 11 October 2017 at 07:23:02 UTC, Peter R wrote: [...] +10 We need a walkthru of how to set up everything. It's like a new cook being give all the ingredients but no recipe instructions. I have to say as someone who uses mostly non-windows systems, these problems only seem to crop up for Windows developers. I don't know if it's a different expectation or a different mindset or something else. -Steve
Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 07:23:02 UTC, Peter R wrote: [...] +10 We need a walkthru of how to set up everything. It's like a new cook being give all the ingredients but no recipe instructions.
Re: Enum AA with classes not allowed anymore?
On Wednesday, October 11, 2017 17:05:19 Daniel Kozak via Digitalmars-d wrote: > so you can try to use static immutable insted of enum Yeah. Similarly, you could just have a regular function that you call at compile time that returns what you want (assuming that it's not being assigned to an enum) - then if it's just being used to generate something that you actually want to keep around after compiling, you're not stuck with the AA continuing to exist past compile time. I don't know that it will ever happen, but there has been talk of disallowing enums of anything that will allocate, because you pretty much never want that (since it will allocate every time it's used), and it's easy to do accidentally. - Jonathan M Davis
Re: Result of CTFE should be implicitly castable to immutable
On 10/11/17 10:30 AM, Dmitry Olshansky wrote: My motivation is, of course, std.regex. static immutable r = regex("abc"); This is perfectly fine but because in general there is some amount of impurtiy in regex and it won't work. Yet regex is called at CTFE so there is no way it can escape mutable pointer to its result. Thoughts? 100% agree. Any CTFE'd result is implicitly unique. In fact CTFE annoyingly makes everything unique, even where it doesn't have to! Please file enhancement request if not already. -Steve
Re: Enum AA with classes not allowed anymore?
so you can try to use static immutable insted of enum On Wed, Oct 11, 2017 at 5:04 PM, Daniel Kozak wrote: > Not sure, but I belive this could be one of reasons: > https://issues.dlang.org/show_bug.cgi?id=15989 > > On Wed, Oct 11, 2017 at 4:54 PM, bauss via Digitalmars-d < > digitalmars-d@puremagic.com> wrote: > >> On Sunday, 8 October 2017 at 04:40:59 UTC, Daniel Kozak wrote: >> >>> Up to 2.062 : Failure with output: >>> - >>> onlineapp.d(10): Error: cannot evaluate new Foo("0") at compile time >>> onlineapp.d(10): Error: cannot evaluate new Foo("1") at compile time >>> - >>> >>> 2.063 to 2.072.2: Success with output: Hello D >>> Since 2.073.2: Failure with output: onlineapp.d(10): Error: variable >>> onlineapp.aa : Unable to initialize enum with class or pointer to struct. >>> Use static const variable instead. >>> >>> https://run.dlang.io/is/mJqayC >>> >>> On Sun, Oct 8, 2017 at 4:29 AM, bauss via Digitalmars-d < >>> digitalmars-d@puremagic.com> wrote: >>> >>> [...] >>> >> Do you know what the reason for the change is and are there any >> workarounds to actually declare AA's with classes that can be used at >> compile-time then? >> > >
Re: Enum AA with classes not allowed anymore?
Not sure, but I belive this could be one of reasons: https://issues.dlang.org/show_bug.cgi?id=15989 On Wed, Oct 11, 2017 at 4:54 PM, bauss via Digitalmars-d < digitalmars-d@puremagic.com> wrote: > On Sunday, 8 October 2017 at 04:40:59 UTC, Daniel Kozak wrote: > >> Up to 2.062 : Failure with output: >> - >> onlineapp.d(10): Error: cannot evaluate new Foo("0") at compile time >> onlineapp.d(10): Error: cannot evaluate new Foo("1") at compile time >> - >> >> 2.063 to 2.072.2: Success with output: Hello D >> Since 2.073.2: Failure with output: onlineapp.d(10): Error: variable >> onlineapp.aa : Unable to initialize enum with class or pointer to struct. >> Use static const variable instead. >> >> https://run.dlang.io/is/mJqayC >> >> On Sun, Oct 8, 2017 at 4:29 AM, bauss via Digitalmars-d < >> digitalmars-d@puremagic.com> wrote: >> >> [...] >>> >> > Do you know what the reason for the change is and are there any > workarounds to actually declare AA's with classes that can be used at > compile-time then? >
Re: Enum AA with classes not allowed anymore?
On Sunday, 8 October 2017 at 04:40:59 UTC, Daniel Kozak wrote: Up to 2.062 : Failure with output: - onlineapp.d(10): Error: cannot evaluate new Foo("0") at compile time onlineapp.d(10): Error: cannot evaluate new Foo("1") at compile time - 2.063 to 2.072.2: Success with output: Hello D Since 2.073.2: Failure with output: onlineapp.d(10): Error: variable onlineapp.aa : Unable to initialize enum with class or pointer to struct. Use static const variable instead. https://run.dlang.io/is/mJqayC On Sun, Oct 8, 2017 at 4:29 AM, bauss via Digitalmars-d < digitalmars-d@puremagic.com> wrote: [...] Do you know what the reason for the change is and are there any workarounds to actually declare AA's with classes that can be used at compile-time then?
Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 14:25:34 UTC, Dmitry wrote: It depends on what programs you are doing. There are a huge number of cases when this way takes lot more time/efforts than using debugger. Haha, yeah I know...
Result of CTFE should be implicitly castable to immutable
My motivation is, of course, std.regex. static immutable r = regex("abc"); This is perfectly fine but because in general there is some amount of impurtiy in regex and it won't work. Yet regex is called at CTFE so there is no way it can escape mutable pointer to its result. Thoughts?
Re: Multiline string literal improvements
On Wednesday, 11 October 2017 at 09:56:52 UTC, Igor wrote: On Wednesday, 11 October 2017 at 08:35:51 UTC, Walter Bright wrote: On 10/10/2017 3:16 PM, sarn wrote: Works even better in D because it can run at compile time. Yes, I see no need for a language feature what can be easily and far more flexibly done with a regular function - especially since what |q{ and -q{ do gives no clue from the syntax. You are right. My mind is just still not used to the power of D templates so I didn't think of this. On the other hand that is why D is still making me say "WOW!" on a regular basis :). Just to confirm I understand, for example the following would give me compile time stripping of white space: template stripws(string l) { enum stripws = l.replaceAll(regex("\s+", "g"), " "); } string variable = stripws(q{ whatever andever; }); And I would get variable to be equal to " whatever and ever; ". Right? Even better, you could write the same code that you would for doing this at runtime and it'll Just Work: string variable = q{ whatever and ever; }.replaceAll(regex(`\s+`, "g"), " ");
Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 11:57:18 UTC, jmh530 wrote: I just put in writeln statements to try and figure out what's going on. It depends on what programs you are doing. There are a huge number of cases when this way takes lot more time/efforts than using debugger.
Re: My first experience as a D Newbie
On Wednesday, 11 October 2017 at 07:23:02 UTC, Peter R wrote: [snip] I've spent weeks trying to get VS Code configured, and still haven't gotten debugging to work. An idiot-proof step by step guide would be nice, maybe like this "step 1 install VS Code from this link, DMD from this link, Dub from this link, step 2 install these 5 extensions in VS Code, step 3 make these manual changes to the configuration, step 4 download this sample project and open it, step 5 here are the 5 important commands you need to build and run". If there was a 15-minute guide, it would be much easier to get to the parts that matter. I don't use VS Code, but this is probably worth doing. I don't think I've ever set up debugging on Windows for D. I just put in writeln statements to try and figure out what's going on.
Re: newCTFE Status August 2017
On Wednesday, 11 October 2017 at 07:39:47 UTC, Tourist wrote: On Tuesday, 1 August 2017 at 21:27:32 UTC, Stefan Koch wrote: Hi Guys, At the end of July newCTFE became capable of executing the bf-ctfe[1] code and pass the tests. At 5 times the speed. While using 40% the memory. (It should be noted that the code generated by bf-ctfe is optimized to put as little pressure on ctfe as possible and tries to avoid the pathological paths which is why the speed improvement is not as high as some other code I showed before) [...] What about October 2017? I miss your frequent updates on newCTFE. Sorry about that, I am quite with my job at sociomantic. As soon as I find time I'll post a detailed report about my latest work and the directions I am planning to explore next.
Re: newCTFE Status August 2017
On Wednesday, 11 October 2017 at 10:45:32 UTC, Stefan Koch wrote: On Wednesday, 11 October 2017 at 07:39:47 UTC, Tourist wrote: On Tuesday, 1 August 2017 at 21:27:32 UTC, Stefan Koch wrote: [...] What about October 2017? I miss your frequent updates on newCTFE. Sorry about that, I am quite with my job at sociomantic. As soon as I find time I'll post a detailed report about my latest work and the directions I am planning to explore next. + busy (insert where appropriate)
Re: Multiline string literal improvements
On Wednesday, 11 October 2017 at 08:35:51 UTC, Walter Bright wrote: On 10/10/2017 3:16 PM, sarn wrote: Works even better in D because it can run at compile time. Yes, I see no need for a language feature what can be easily and far more flexibly done with a regular function - especially since what |q{ and -q{ do gives no clue from the syntax. You are right. My mind is just still not used to the power of D templates so I didn't think of this. On the other hand that is why D is still making me say "WOW!" on a regular basis :). Just to confirm I understand, for example the following would give me compile time stripping of white space: template stripws(string l) { enum stripws = l.replaceAll(regex("\s+", "g"), " "); } string variable = stripws(q{ whatever andever; }); And I would get variable to be equal to " whatever and ever; ". Right?
Re: Multiline string literal improvements
On 10/10/2017 3:16 PM, sarn wrote: Works even better in D because it can run at compile time. Yes, I see no need for a language feature what can be easily and far more flexibly done with a regular function - especially since what |q{ and -q{ do gives no clue from the syntax.
Re: D on quora ...
On Saturday, 7 October 2017 at 15:12:08 UTC, Random D user wrote: Actually, Manual Memory Management is slow and D's GC is slower. Well, no, deterministic memory management isn't slow. One specific implementation with a high level of naiveté might be slow. C is not a very clever language, it was designed to be minimal and with minimal compiler requirements and with most features pushed onto libraries, including memory management. C++ is just meta-level dressing over C… Because, if malloc/free is slow (free is often slower), you want to avoid them as much as possible. A naive generic library implementation that is used randomly will not be fast, but a more dedicated implementation for the program at hand could be very performant. You do this by reusing your memory/buffers. Yes, in C/C++ you either have to resort to creating your own allocator in your program or you could used dedicated allocators. Or you just make them static global. Anyway, D doesn't improve on C/C++ when it comes to allocators. And it's garbage collector is pretty much stuck in the standard GC implementation from 1960s/1970s in terms of performance and features. Just because C/C++ is primitive doesn't mean that D is doing well, but at this point there is not much hope of D becoming a significant improvement on C++… So maybe it is better for D to stay where it is as there is basically very little support among the designers from improving the language semantics. In the C++ environment there is at least some movement, so maybe it will become a decent language in 2050, although they are stuck with the primitive C-foundation…
Re: [OT] vim tip with column limits
On Wednesday, October 11, 2017 07:59:51 Eduard Staniloiu via Digitalmars-d wrote: > On Monday, 9 October 2017 at 13:38:18 UTC, lithium iodate wrote: > > On Monday, 9 October 2017 at 00:24:02 UTC, Jonathan M Davis > > > > wrote: > >>[…] > >> > > Thanks for the tip! > > You might also want to use automatic word wrapping [0] for 120 > chars. > > Cheers, > Eduard > > [0] - http://vim.wikia.com/wiki/Automatic_word_wrapping That's also potentially a viable solution, but personally, I've never particularly liked how vim's word wrapping behaves, and I've generally avoided it. Simply knowing where the line limits are so that I know when I've gone too far works well for me. Other really useful stuff along those lines has been highlighting tabs and any trailing whitespace in red. So, I always know that it's there and needs to be removed (though that meant that I had to adjust my .vimrc when I was unlucky enough to have to use tabs where I was working). I don't generally have vim do much for me automatically (cindent is about the only automatic behavior that I have on that I can think of). Rather, I know what commands I need to do what I want or add commands that do it if that helps my productivity, and then I use the commands when I need them. - Jonathan M Davis
Re: Current limitations of -dip1000
On Wednesday, 11 October 2017 at 03:32:41 UTC, Walter Bright wrote: Thank you! You're very welcome!
Re: [OT] vim tip with column limits
On Monday, 9 October 2017 at 13:38:18 UTC, lithium iodate wrote: On Monday, 9 October 2017 at 00:24:02 UTC, Jonathan M Davis wrote: […] Thanks for the tip! You might also want to use automatic word wrapping [0] for 120 chars. Cheers, Eduard [0] - http://vim.wikia.com/wiki/Automatic_word_wrapping
Re: newCTFE Status August 2017
On Wednesday, 11 October 2017 at 07:39:47 UTC, Tourist wrote: What about October 2017? I miss your frequent updates on newCTFE. Me too.
Re: newCTFE Status August 2017
On Tuesday, 1 August 2017 at 21:27:32 UTC, Stefan Koch wrote: Hi Guys, At the end of July newCTFE became capable of executing the bf-ctfe[1] code and pass the tests. At 5 times the speed. While using 40% the memory. (It should be noted that the code generated by bf-ctfe is optimized to put as little pressure on ctfe as possible and tries to avoid the pathological paths which is why the speed improvement is not as high as some other code I showed before) [...] What about October 2017? I miss your frequent updates on newCTFE.
Re: D on quora ...
On Sunday, 8 October 2017 at 04:23:50 UTC, Jerry wrote: On Saturday, 7 October 2017 at 06:19:01 UTC, Brad Roberts wrote: As always, focusing on the users of the language tends to pay a lot more dividends than focusing on nay sayers. Luckily, that's how things tend to proceed here, so yay for that. Doesn't feel like that when the views of the people in charge don't align with what people are saying. I can understand people's dissatisfaction with Windows, but some people take it too far. The compiler for Windows is built using 32-bit, not only is the 64-bit version not built it's not even supported or tested. I think someone made a post a little while ago about LDC that 95% or more of downloads for their compiler were for the 64-bit version. If only one version is to be supported then it should be the 64-bit version. I can't even imagine the outrage there would be if 64-bit wasn't supported on Linux. Hell, they haven't even bothered setting up AppVeyor for dmd, free testing on Windows. Niche within a niche, can't expect much I guess. You know it's not that hard to be the change you wish to see in the world. That's really the whole point of open source, or at least of at least reasonably or more free software - you're not at the mercy of a paid vendor to whom you pay a fortune for the favour of them closing or otherwise creatively ignoring your tickets. You can pretty easily fix many problems and irritations yourself, and if you're too busy then one can pay someone to do it, and if one is busy and has no money to spend right now one can try to persuade someone to work on it. But if one just grumbles, probably the result will be just what anyone would expect. 64 bit command line build didn't seem to work for a while. That's been fixed recently, as I recall. One can't really compare Linux and Windows 32 and 64 bit. Those worlds work very differently. Windows is as it is because they are fanatical about maintaining backwards compatibility. So unless you run out of memory then 32 bit compiler isn't much of a restriction. And if you are doing so much ctfe that you run out of memory, chances are you can figure out how to build the 64 bit compiler on Windows! Try using digger - might work now that the 64 bit command line build works again. And failing that maybe file a request on bugzilla. And I don't know but I guess if you contribute something to the D Foundation, probably - because it's still quite new - it will be easier to get people to listen to a gentle request to have a downloadable 64 bit compiler. These things do cost money, and right now I think somebody is paying for that out of the goodness of their heart...
Re: My first experience as a D Newbie
On 11/10/2017 8:23 AM, Peter R wrote: snip 4. it took a while to see that the DMD builds come with x86 windows libraries, but no x64 windows libraries. That seems strange in this day and age We should document this on the download page making it obvious why you also need VS.
My first experience as a D Newbie
I've recently started evaluating D, and I thought as a D newbie (but 20 year game dev veteran) I should share the things I felt were missing or unclear, so you can decide if you want to do something to cater new users. So my first notes are 1. Reading about D online: There is a decent amount of information seems old, and it's hard to tell for newbies that D1 and D2 are different. Andrei's book seems like it is still the best reference for the actual language, but since it is 7 years old, as a newbie I expected it to be out of date. Maybe a 2nd edition? 2. Set up the dev environment: While the language is solid, and the base DMD install and "hello world" are easy to get going, getting a full IDE configured is a lot more work. I would really like a comprehensive guide to go from there to having a full environment set up in for example VS Code. I've spent weeks trying to get VS Code configured, and still haven't gotten debugging to work. An idiot-proof step by step guide would be nice, maybe like this "step 1 install VS Code from this link, DMD from this link, Dub from this link, step 2 install these 5 extensions in VS Code, step 3 make these manual changes to the configuration, step 4 download this sample project and open it, step 5 here are the 5 important commands you need to build and run". If there was a 15-minute guide, it would be much easier to get to the parts that matter. 3. Setting up the dev env,take 2: Visual-D seems a lot easier to configure, and it had functional samples. However, it was strange that it doesn't use dub files directly and instead needs them converted to visual studio build projects. I would prefer if it the msbuild projects would just directly call Dub, as Dub seems like the gold standard. My first attempt at generating a solution from a dub project failed, so it feels maybe a bit unfinished. It would also be great if Visual-D had a few more detailed templates built in, maybe a Derelict SDL window, for example. 4. it took a while to see that the DMD builds come with x86 windows libraries, but no x64 windows libraries. That seems strange in this day and age I'm still very new on the actual language, but thought it better that I share this while it is still fresh.