digitalmars.D - Plan for D
- dogman (17/17) May 13 2021 Question to the core team. Whats the plan and roadmap for D ?
- IGotD- (7/12) May 13 2021 No, because D has painted itself into a corner. Not only between
- Imperatorn (9/27) May 13 2021 How are we not?
- drug (26/48) May 14 2021 I guess that Walter is planning to keep D just as his hobby language (no...
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (8/18) May 14 2021 My impression last year was that the plan is to provide a
- IGotD- (6/7) May 14 2021 We have the D maintainers but they aren't really leaders when it
- drug (2/4) May 14 2021 This
- zjh (23/23) May 14 2021 D The biggest problem is that there is no direction.
- zjh (18/18) May 14 2021 Well, suppose I'm the leader of D
- zjh (5/5) May 17 2021 The real enemy of the D language is there is too many people
- dogman (13/18) May 17 2021 In a language group, there will be always two groups. No doubt
- zjh (2/2) May 17 2021 On Tuesday, 18 May 2021 at 00:54:04 UTC, dogman wrote:
- Ola Fosheim Grostad (4/8) May 17 2021 FWIW, I use Go for tiny web services.
- Imperatorn (2/7) May 18 2021 I've also thought about this
- bioinfornatics (16/34) May 14 2021 Do not plan to get an answer
- bioinfornatics (22/61) May 15 2021 Sorry I wrote from my phone and my spellchecker has done some
- Zubair Zash (8/8) May 14 2021 It seems like there is no plan nor roadmap. It's really hard to
- SealabJaster (5/6) May 14 2021 We used to have vision documents[1] but I believe they were
- Dennis (3/5) May 14 2021 The latest of the sort (Still pretty old):
- bachmeier (9/13) May 15 2021 The plan is for the D community to whine and moan as they wait
- Ola Fosheim Grostad (7/10) May 15 2021 That's not true. Those languages are very focused in their
- nkm1 (9/12) May 15 2021 This is not true, that is, its not the only difference. More
- Ola Fosheim Grostad (5/13) May 15 2021 Many people has put a significant effort into the D GC, but where
- Mike Parker (5/7) May 15 2021 Hardly. dmd doesn't release memory, either. Does that "speak
- Ola Fosheim Grostad (4/12) May 15 2021 A global bump allocator is just another word for a memory leak.
- Mike Parker (3/7) May 15 2021 In this case, it's not a leak. DMD does its business and exits.
- Ola Fosheim Grostad (15/24) May 15 2021 WTF? All programs exit. Most programs try to play nice so that
- Mike Parker (10/14) May 15 2021 Yeah, and...? dmd a very short-running program, and its allocated
- Ola Fosheim Grostad (15/19) May 15 2021 No, it isnt very short-running. And that is not a valid argument
- Paulo Pinto (19/39) May 16 2021 This is the big difference I see here, everyone keeps discussing
- Ola Fosheim Grostad (9/13) May 16 2021 Python is the only language not well suited for implementing a
- SealabJaster (56/59) May 16 2021 On the topic of a plan (just in general, not specifically about
- Ola Fosheim Grostad (7/18) May 16 2021 I dont know, but it is a historic fact that D's feature set is a
- Imperatorn (2/10) May 16 2021 +1
- Mike Parker (20/24) May 16 2021 This has nothing to do with D. The C version of the D compiler
- Ola Fosheim Grostad (7/11) May 16 2021 Thats not obvious at all. In batch a GC can perform better than
- Imperatorn (6/26) May 16 2021 C'mon dude... How can you say with a straight face that dmd isn't
- Ola Fosheim Grostad (6/10) May 16 2021 This is only acceptable in realtime applications or very specific
- IGotD- (10/17) May 16 2021 In practice that's the case, that you cannot avoid GC unless you
- Mike Parker (13/17) May 16 2021 By definition, avoiding the GC means avoiding features that use
- IGotD- (9/14) May 16 2021 Many like GC but it is the type of GC in D that disqualifies the
- Patrick Schluter (4/18) May 16 2021 Yes, POOP is what made C++ so unappealing (POOP permeates C++
- nkm1 (28/32) May 16 2021 But the trouble is that D's GC is just not a very good one! There
- Johan Engelen (19/28) May 16 2021 Hi Mike,
- Adam D. Ruppe (9/10) May 16 2021 Indeed. When this bad decision was made, the blame went to free.
- Bastiaan Veelo (27/45) May 16 2021 I have trouble following an argument between people that I feel
- Ola Fosheim Grostad (12/26) May 16 2021 So, you just confirmed that my statement was true.
- dogman (24/24) May 16 2021 Folks, I think the forum is discussing whether to do GC or not
- Imperatorn (3/4) May 16 2021 There are "GC off" switches.
- dogman (7/11) May 16 2021 But then we dont know if all standard library and other modules
- dogman (9/22) May 16 2021 Rust says "Rewrite", D will say "Extend" which means extend your
- Paulo Pinto (13/37) May 16 2021 Let me put it this way, a couple of years ago Facebook played
- dogman (22/24) May 16 2021 I disagree with this. Facebook chose it because they want to run
- dogman (9/36) May 16 2021 To the community, sorry am not trying to a$$hole. I just want
- Imperatorn (2/12) May 17 2021 Men too, I also want more D on embedded
- Paulo Pinto (19/46) May 16 2021 In what concerns Facebook, their GC cases are already covered by
- Imperatorn (2/15) May 16 2021 Yeah, I see what you mean
- sighoya (12/26) May 16 2021 Definitely + for this, providing a set of GCs for different
- Ola Fosheim Grostad (14/19) May 16 2021 It takes discipline to mix. Libraries would need to:
- SealabJaster (8/22) May 16 2021 This is what I was going on about in terms of "We want to be
- Ola Fosheim Grostad (8/18) May 16 2021 I think it is more a matter of "we know what we have, but not
- norm (14/39) May 16 2021 You do have power, but like anything that involves other people
- Ola Fosheim Grostad (6/8) May 17 2021 Only on the microscopic level. People who have veto power need to
- sighoya (4/4) May 17 2021 Just a question, is anything about the GC part of the language
- Ola Fosheim Grostad (2/6) May 17 2021 I think so. At least if we drop memory safety.
- Ola Fosheim Grostad (3/9) May 17 2021 Maybe not that even, but the meaning of shared is the issue, I
- rikki cattermole (6/9) May 17 2021 It has nothing to do with the compiler.
- Ola Fosheim Grostad (3/9) May 17 2021 The stack meta info, suspension points and some other details are
- Ola Fosheim Grostad (4/15) May 17 2021 That is, if one wants to avoid a clunky library version. Trying
- IGotD- (8/13) May 17 2021 There have been a few tracing GC algorithms but still D is forced
- Ola Fosheim Grostad (10/24) May 17 2021 Yes, the GC runtime interface is not good enough, task based
- IGotD- (10/13) May 17 2021 That's a possibility, however badging the code similar to
- Ola Fosheim Grostad (9/17) May 17 2021 Yes, fix type unification first, then do something like that...
- Dukc (12/16) May 18 2021 The spec assumes GC exists if you use some features - `new`,
- Dukc (10/16) May 18 2021 See? Walter picked the worse option on your scale. So he has
- Ola Fosheim Grostad (12/14) May 18 2021 Maybe so, but even then it does not change the fact that for
- zjh (1/1) May 18 2021 I totally agree with you.
- Dukc (13/20) May 18 2021 For the first point, no. Since you investigate the compiler of a
- Ola Fosheim Grostad (7/11) May 18 2021 Well, what I said is considered a norm in academic circles. So
- Dukc (4/10) May 18 2021 So, if I understood right you're criticizing DMD implementation,
- Ola Fosheim Grostad (6/17) May 18 2021 There should be other options, but if you have a solution for DMD
- Ola Fosheim Grostad (6/24) May 18 2021 And to avoid any misunderstanding I think that a GC ought to be
- russhy (49/49) May 18 2021 the people who claim D should double down on the GC NEVER USED
- russhy (5/5) May 18 2021 D could have been the promised alternative to the shitty C++
- russhy (1/1) May 18 2021 *go ate their dreams
- zjh (5/5) May 18 2021 you are right.
- 12345swordy (3/4) May 18 2021 No
- Zoadian (9/14) May 18 2021 you can do that already, mark you main function @nogc and don't
- zjh (1/1) May 18 2021 You're splitting D.
- zjh (18/18) May 18 2021 D has many shortcomings. D needs to be reborn.
- Zoadian (6/25) May 18 2021 if you want D to be reborn, again, what is stopping you?
- dogman (10/16) May 18 2021 Folks lets dont fight over GC vs no-GC. Its a futile fight. We
- Ola Fosheim Grostad (15/20) May 18 2021 With, obviously. Without, only if add RC, but RC without ARC is
- Zoadian (6/7) May 18 2021 no, no i'm not.
- nkm1 (5/6) May 18 2021 Actually, it seems like a great idea. I would like it if D was
- zjh (14/14) May 18 2021 I have come to the conclusion that the fighting power of language
- zjh (2/2) May 18 2021 not trust,but Rust.
- zjh (4/4) May 18 2021 At least you have to know D's road map, D's development
- zjh (6/6) May 18 2021 When everyone is pulling D towards`C++/Java/Python/go`, it's
- zjh (2/2) May 18 2021 towards `C#/Java/Python/go`
- zjh (17/17) May 19 2021 OK, back to the original question, what is `d`, What do you want
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (19/28) May 19 2021 Yes, this is what makes C++ the best language for low level
- norm (5/7) May 19 2021 On Wednesday, 19 May 2021 at 10:57:55 UTC, Ola Fosheim Grøstad
- josh (14/14) May 19 2021 I don't like GC either, but the real issue is the absence of any
- Ola Fosheim Grostad (8/10) May 20 2021 There is an ideology in @safe, but the problem is that pointer
- IGotD- (7/12) May 20 2021 Doesn't D already have that?
- Ola Fosheim Grostad (8/10) May 20 2021 I mean removing inc/dec by static analysis. Possibly also turning
- Ola Fosheim Grostad (4/10) May 20 2021 Well, actually, if you accept one indirection then they would
- sighoya (4/8) May 20 2021 Why not go further and turn GC pointer to RC if acyclicity is
- Ola Fosheim Grostad (2/10) May 20 2021 There is no GC pointer, only raw pointers?
- Paulo Pinto (11/21) May 20 2021 Contrary to popular belief ARC implementations are quite lousy.
- Ola Fosheim Grostad (8/10) May 20 2021 On Thursday, 20 May 2021 at 15:28:52 UTC, Paulo Pinto wrote:
- IGotD- (15/24) May 20 2021 Compared to what?
- Ola Fosheim Grostad (3/7) May 20 2021 How does Nim deal with references to array elements and struct
- IGotD- (19/21) May 20 2021 Yes, Nim has fat pointers denoted by the "ref" keyword which
- Paulo Pinto (14/44) May 20 2021 Looking forward to the Nim RC beating these benchmarks.
- Ola Fosheim Grostad (7/12) May 20 2021 @system code does not have to be @safe. Next step would be to add
- Ola Fosheim Grostad (5/17) May 20 2021 As you can see Obj-C had some extra challenges because of
- Paulo Pinto (7/28) May 21 2021 I guess everyone over here will keep talking in circles about
- Ola Fosheim Grostad (14/19) May 21 2021 What do you propose that D should do?
- Paulo Pinto (5/20) May 21 2021 Do like those projects, the powers at the steering wheel should
- Ola Fosheim Grostad (7/11) May 21 2021 There is no future for a glorified scripting language, there are
- Paulo Pinto (4/15) May 21 2021 Something like gVisor, runc, Android GPU Inspector or USB Armory
- IGotD- (12/16) May 21 2021 The reason we want to move away from tracing GC is because of
- Ola Fosheim Grostad (4/6) May 21 2021 Exactly, to do high level well you are also better off using a
- Ola Fosheim Grostad (4/10) May 21 2021 Let us also remind ourself that almost anything that can be done
- Paulo Pinto (13/31) May 21 2021 Why bother with D given the competition?
- Ola Fosheim Grostad (3/6) May 21 2021 D has never changed memory management, only the implementation.
- IGotD- (9/11) May 21 2021 The issue is that D doesn't offer a wide variety of memory
- Ola Fosheim Grostad (14/19) May 21 2021 Right, but the one size GC will not scale. It has been improved
- Tejas (8/13) May 21 2021 Have you heard of a language called pony? They seem to be going
- Ola Fosheim Grostad (8/15) May 21 2021 Yes, it is interesting, especially the type system, but it is a
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (14/19) May 22 2021 It turns out that Swift is going heavy in the direction of actors
- Tejas (16/38) May 22 2021 *sigh*
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (9/13) May 22 2021 C++ has had concurrency workgroups for a long time? And key Swift
- sighoya (10/15) May 22 2021 Can't speak for you, but this is a no-option for me. C++ has a
- Imperatorn (3/14) May 22 2021 +1
- Ola Fosheim Grostad (17/26) May 22 2021 I guess you are talking about libraries, sure most of the larger
- IGotD- (13/16) May 22 2021 This is point I have also thought about. If you only have one
- Ola Fosheim Grostad (6/8) May 22 2021 Ok, so mean smart pointers. Never had a single issue with this.
- sighoya (5/6) May 22 2021 It's not just that, every large framework tends to have their own
- Ola Fosheim Grostad (8/15) May 22 2021 Yes, and their own strings etc, but they are usually out if date
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (9/12) May 23 2021 I came over this endless document outlining future Swift C++
- Dukc (6/10) May 21 2021 I'm glad D did not follow that literally. Remember, templates are
- Araq (15/16) May 20 2021 Benchmarks can usually be tweaked to produce the outcome you're
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (3/7) May 20 2021 How much better do you feel Nim could get at getting rid of
- Araq (7/9) May 20 2021 Not much -- we implemented all worthwhile optimizations. And
- zjh (17/17) May 19 2021 Perhaps, we should also be considerate of author D. perhaps, what
- nkm1 (19/26) May 19 2021 It was already that! It changed horses in midstream, trying to
- zjh (3/3) May 19 2021 Well, I don't know what to do.
- Ola Fosheim Grostad (12/15) May 19 2021 If this was my process then I would have created an opn working
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (19/28) May 19 2021 Yes, that is also what I fear when I see new big features being
- zjh (4/4) May 19 2021 my c++ source file is also small.
- Ola Fosheim Grostad (8/11) May 19 2021 Yes, it is true that the C++ people have become effective at
- norm (17/23) May 19 2021 Why does D need a sense of urgency? D and its community need to
- IGotD- (9/12) May 19 2021 I kind of agree with that D chases what is fads in computer
- Imperatorn (6/20) May 19 2021 Hmm, do we really lack memory management techniques?
- Imperatorn (3/21) May 19 2021 https://forum.dlang.org/post/pagbapldtkrnlegpwybm@forum.dlang.org
- IGotD- (11/16) May 19 2021 Yes, that is what I meant. To quote the text in one of the links
- Adam D. Ruppe (2/3) May 18 2021 Good bye. Best of luck to you on your project.
- norm (17/31) May 18 2021 This thread is D and has been for the last 10+yrs.
- norm (8/42) May 18 2021 On Wednesday, 19 May 2021 at 03:11:15 UTC, norm wrote:
- Ola Fosheim Grostad (26/31) May 19 2021 No, it is important to build common ground and make people
- zjh (14/14) May 18 2021 What are the advantages of D
- Ola Fosheim Grostad (15/19) May 18 2021 I think C++20 surpasses D in terms of metaprogramming and
- zjh (5/5) May 18 2021 Yes, I'm also saying,
- Paulo Pinto (11/26) May 18 2021 Here, TinyGO for the Switch.
- Paulo Pinto (8/13) May 18 2021 What is killing D is lack of management.
- Ola Fosheim Grostad (7/11) May 18 2021 :-D You are funny, but It is really the only attractive option on
- Adam D. Ruppe (3/5) May 18 2021 speak for yourself buddy
- Berni44 (6/7) May 16 2021 That's the missing puzzle piece. Since about two months I wonder
- Max Haughton (7/15) May 16 2021 Oh yes. If you look at ASan's output (compile with ldc or gdc) on
- surlymoor (4/5) May 16 2021 Ah yes, another thread in which energy is expended on internet
- Atila Neves (9/21) May 17 2021 Now. This is the current priority.
- JN (63/67) May 17 2021 Selection bias is in play here too. Rust is getting more popular,
- Ola Fosheim Grostad (35/67) May 17 2021 And here is the real trouble, more and more viable hobby
- JN (6/13) May 17 2021 "replace features with metaprogramming" comes with a cost. When
- Ola Fosheim Grostad (11/18) May 17 2021 Error messages is a challenge, but then that would be sn area for
- aberba (19/37) May 18 2021 D is already pretty memory safe. Not sure how D lacks in that
- Guillaume Piolat (5/9) May 19 2021 D is already largely fit for industry. In my niche, there is only
- Max Haughton (7/16) May 19 2021 Hackernews is one of the only places you can actually find people
- Ola Fosheim Grostad (12/21) May 21 2021 I think JUCE is largely the reason for why almost everyone starts
- claptrap (4/18) May 21 2021 Commercial audio dev was almost 100% C++ before JUCE. The plugin
- Ola Fosheim Grostad (5/10) May 21 2021 But JUCE came before Rust... The point I tried to make was that
- Guillaume Piolat (12/17) May 21 2021 Ola is right in that choice of framework is the primary driver of
- sai (15/15) May 19 2021 I believe something like this will shut up most of the criticisms
- Greg Strong (3/12) May 19 2021 Thank you! This is exactly what I'm looking for (personally).
- Bienlein (4/4) May 20 2021 What are the alternatives? D remains a hobby language forever,
Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ? b. When are we planning to focus on memory safety and use that as our strength c. Will we ever make D as both a GC and non GC language. So that it can be used across control plane, data plane, kernel. I know betterC, but could we make it more easy and accessible common public to able to use phobos. I know people say 95% is done etc. d. Why there are no working groups for tooling, webframeworks, performance, compiler etc so that we can improve on each area. e. Why is weka not sponsoring ? why are we not advertising that the fastest filesystem is made in D ? f. D has all properties to make it a good language. But needs more work and marketing. Why cant we make D as a safe and fast extension to C++ & python
May 13 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:c. Will we ever make D as both a GC and non GC language. So that it can be used across control plane, data plane, kernel. I know betterC, but could we make it more easy and accessible common public to able to use phobos. I know people say 95% is done etc.No, because D has painted itself into a corner. Not only between GC and manual memory management but also that you cannot swap GC types (any type of GC, like Nim can) because D treats all pointers the same. That might have some advantages but I would say that the disadvantage is huge. Memory management wise, D is going nowhere as it seems.
May 13 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?D can already be used professionallyb. When are we planning to focus on memory safety and use that as our strengthHow are we not?c. Will we ever make D as both a GC and non GC language. So that it can be used across control plane, data plane, kernel. I know betterC, but could we make it more easy and accessible common public to able to use phobos. I know people say 95% is done etc.Is there any language more flexible than D in this regard? You already have *much* choice.d. Why there are no working groups for tooling, webframeworks, performance, compiler etc so that we can improve on each area.This is a valid point but the answer is how would that be done.e. Why is weka not sponsoring ? why are we not advertising that the fastest filesystem is made in D ?Can't answer this. It's a bit weird yes.f. D has all properties to make it a good language. But needs more work and marketing. Why cant we make D as a safe and fast extension to C++ & pythonYou are correct sir, we must market D more. Do your part and spread it ☀️
May 13 2021
13.05.2021 23:57, dogman пишет:Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?I guess that Walter is planning to keep D just as his hobby language (no offense). And definitely there is no any plan to get it adopted for industries. Even more I wouldn't be surprised if there is no any plan at all.b. When are we planning to focus on memory safety and use that as our strengthSee abovec. Will we ever make D as both a GC and non GC language. So that it can be used across control plane, data plane, kernel. I know betterC, but could we make it more easy and accessible common public to able to use phobos. I know people say 95% is done etc.d. Why there are no working groups for tooling, webframeworks, performance, compiler etc so that we can improve on each area.The problem is that D has been evolved by a bunch of talented people. They were and are really seasoned but communication between them is very poor. For example taggedalgebraic has been created by Shonke long before sumtype but taggedalgebraic was known to small subset of D developers only and now we have sumtype. It's good library and kudos to its author but that things create fragmentation in language ecosystem. We tried to make working group for gui related things but failed because everyone had its own opinion and we failed to find common ground. There are two ways to solve that - either increase comminity to rise probability for developers to find common ground or organize available developers to work in coordinated manner. Who is motivated so high to do that?e. Why is weka not sponsoring ? why are we not advertising that the fastest filesystem is made in D ?They sponsored D several times. But it looks like they shy its using. Sometimes I even suppose they could rewrite their code base in other language.f. D has all properties to make it a good language. But needs more work and marketing. Why cant we make D as a safe and fast extension to C++ & pythonTotally agree. D needs the leader(s). Once again, I'm very much appreciate those giant efforts that language authors and developers has taken. They are really tremendous people. I just want D takes its appropriate place in the world.
May 14 2021
On Friday, 14 May 2021 at 11:31:28 UTC, drug wrote:13.05.2021 23:57, dogman пишет:My impression last year was that the plan is to provide a competitive memory management strategy. Seems like it isn't moving because there is no willingness to accept hard changes and also not a willingness to make unpopular decisions, which are necessary. Right now, it looks like no significant changes are likely, or that an alternative language will emerge.Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?I guess that Walter is planning to keep D just as his hobby language (no offense). And definitely there is no any plan to get it adopted for industries. Even more I wouldn't be surprised if there is no any plan at all.
May 14 2021
On Friday, 14 May 2021 at 11:31:28 UTC, drug wrote:Totally agree. D needs the leader(s).We have the D maintainers but they aren't really leaders when it comes to organization or communication. When I think about leader(s) for the D project I think more about CEO material, not necessarily a computer language wiz but someone that move D forward and work in the interest of the project.
May 14 2021
14.05.2021 16:25, IGotD- пишет:not necessarily a computer language wiz but someone that move D forward and work in the interest of the projectThis
May 14 2021
D The biggest problem is that there is no direction. Moreover, D author never confronts users' questions directly. D needs to be organized and, at the same time, have a clear goal. Let users, beginners, know what you're going to do. However, the D authors and leading developers have never faced this problem. If the user doesn't know what you're trying to accomplish, no matter how good the language, The user had to leave. Because we don't know the solid point of your language. What are you going to do? Are you going to match the user's expectations? Can users see the improvement? Yes, small progress is everywhere. But what we expect is your clear goals and steps. C + + has 20, 23 and 26, Rust, many companies are using. Go, even if itaims at junk template. But what's D's goal? Do we have a schedule? Is it true that we are doing things at random, and whoever has good things ,and then we will copy it? Hope, D writers, wake up and make a schedule. Let users see hope.
May 14 2021
Well, suppose I'm the leader of D 0, do a vote, bull force people, important library author, vote for 10, ordinary users, vote for 1, first investigate, understand the different needs of various users 1. Focus on users' core requirements, such as' better c ', such as' memory security', such as' various bugs fix', such as' C 'compatibility, and' C + + 'compatibility. 2. Gather a group of enthusiasts and experts together to understand their respective areas of expertise, and assign corresponding tasks in their respective areas. At the same time, ask them to give a timetable for completion. Of course, there are rewards 3. Allocation of money: 1,50% for publicity. 2,50% for reward for accomplishing the above tasks. At present, there are too few publicity and too few reward, so efforts must be made in this regard. At the same time, money should be allocated according to the stage change 4. Action
May 14 2021
The real enemy of the D language is there is too many people misleading. I kept wondering if they were undercover agents from other languages. Deliberately, to lead D language astray.
May 17 2021
On Tuesday, 18 May 2021 at 00:09:19 UTC, zjh wrote:The real enemy of the D language is there is too many people misleading. I kept wondering if they were undercover agents from other languages. Deliberately, to lead D language astray.In a language group, there will be always two groups. No doubt about it. There is no long language which satisfies all. Question is why D was not considered why GO got successful, is it only the google backing with its money and power or something missing from the language or community. I might be wrong, for D to succeed it has to be an alternate to rust with safety, option of complete no GC(not by default), easily extensible with C/C++ and easy to read/write. Despite go's disadvantages, people follow hype and will still use it. D should have been where Go is now. I dont think this post will bring a big shift or change in strategy. Anyways good luck to all. Take care.
May 17 2021
On Tuesday, 18 May 2021 at 00:54:04 UTC, dogman wrote: +10086.
May 17 2021
On Tuesday, 18 May 2021 at 00:54:04 UTC, dogman wrote:and easy to read/write. Despite go's disadvantages, people follow hype and will still use it. D should have been where Go is now. I dont think this post will bring a big shift or change in strategy. Anyways good luck to all. Take care.FWIW, I use Go for tiny web services. Reasons: polished runtime, focused std lib, limited features, but somewhat consistent, cloud support.
May 17 2021
On Tuesday, 18 May 2021 at 00:09:19 UTC, zjh wrote:The real enemy of the D language is there is too many people misleading. I kept wondering if they were undercover agents from other languages. Deliberately, to lead D language astray.I've also thought about this
May 18 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ? b. When are we planning to focus on memory safety and use that as our strength c. Will we ever make D as both a GC and non GC language. So that it can be used across control plane, data plane, kernel. I know betterC, but could we make it more easy and accessible common public to able to use phobos. I know people say 95% is done etc. d. Why there are no working groups for tooling, webframeworks, performance, compiler etc so that we can improve on each area. e. Why is weka not sponsoring ? why are we not advertising that the fastest filesystem is made in D ? f. D has all properties to make it a good language. But needs more work and marketing. Why cant we make D as a safe and fast extension to C++ & pythonDo not plan to get an answer This kind of question is asked every years since at least 10 years ago. I am remind that at begining ov dlang v2 it was : it is not our faut the War tango vs photos as stdlib just broke our community. We need a killer application à la Ruby on rails. Now it is not 1 killer application but a set of software environnements on se, Big data, sécurité, gui, games... How they Can Do it? To remember D is bien in 2001 and Rust ... Instead to add New feature maybe waste dôme Time on one of previous topic des robes above in order to get a chance to be more heavily used... I remember a Time to where Facebook use D to replace c++ code but now ...
May 14 2021
On Friday, 14 May 2021 at 21:29:59 UTC, bioinfornatics wrote:On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Sorry I wrote from my phone and my spellchecker has done some weird job. So I rephrase: Do not plan to get an answer This kind of question is asked every years since at least 10 years ago. I am remind that at beginning of dlang v2 it was : «it is not our fault, the war tango vs photos as stdlib just broke our community. We need a killer application à la Ruby on rails.» Now it is not one killer application but a set of software environments on web, Big data, security, gui, games... How they Can Do it, in 10 years we didn't get a killer application so a set …? To remember D is born in 2001 and Rust ... Instead, to add new features … maybe would b a good idea to waste some time on one of previous topic describe above in order to get a chance to be more heavily used... I remember a time to where Facebook use D to replace c++ code but now ...Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ? b. When are we planning to focus on memory safety and use that as our strength c. Will we ever make D as both a GC and non GC language. So that it can be used across control plane, data plane, kernel. I know betterC, but could we make it more easy and accessible common public to able to use phobos. I know people say 95% is done etc. d. Why there are no working groups for tooling, webframeworks, performance, compiler etc so that we can improve on each area. e. Why is weka not sponsoring ? why are we not advertising that the fastest filesystem is made in D ? f. D has all properties to make it a good language. But needs more work and marketing. Why cant we make D as a safe and fast extension to C++ & pythonDo not plan to get an answer This kind of question is asked every years since at least 10 years ago. I am remind that at begining ov dlang v2 it was : it is not our faut the War tango vs photos as stdlib just broke our community. We need a killer application à la Ruby on rails. Now it is not 1 killer application but a set of software environnements on se, Big data, sécurité, gui, games... How they Can Do it? To remember D is bien in 2001 and Rust ... Instead to add New feature maybe waste dôme Time on one of previous topic des robes above in order to get a chance to be more heavily used... I remember a Time to where Facebook use D to replace c++ code but now ...
May 15 2021
It seems like there is no plan nor roadmap. It's really hard to invest your time into something, realizing there is no team that works on fixing issues and adding features. Right now it's easier to stuck with C++. Maybe it's not fun to use it, but at least it's thought out, stable, has a large code base, tooling, and the most important, it has a roadmap. D needs dictatorship until it gets rid of the most annoying issues. Somebody has to make unpopular decisions.
May 14 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:...We used to have vision documents[1] but I believe they were stopped since they never really led to anything. I miss them :( [1] https://wiki.dlang.org/Category:Vision_Statements
May 14 2021
On Friday, 14 May 2021 at 23:05:38 UTC, SealabJaster wrote:We used to have vision documents[1] but I believe they were stopped since they never really led to anything.The latest of the sort (Still pretty old): https://dlang.org/blog/2019/10/15/my-vision-of-ds-future/
May 14 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?The plan is for the D community to whine and moan as they wait for Walter to improve the VS Code extension or write web frameworks. The only important difference between D and languages like Rust, Go, and Python is that those languages developed communities of developers that got stuff done, whereas D didn't. Since D's community is so ineffective, it's unlikely we'll ever see widespread D adoption.
May 15 2021
On Saturday, 15 May 2021 at 15:05:44 UTC, bachmeier wrote:The only important difference between D and languages like Rust, Go, and Python is that those languages developed communities of developers that got stuff done, whereas D didn't.That's not true. Those languages are very focused in their feature set, and have polished their main feature so that that feature is objectively "best in class". D has over time had many sub communities that has created significant frameworks (in terms of scope and effort). Some went off to create their own language... That is just facts.
May 15 2021
On Saturday, 15 May 2021 at 15:05:44 UTC, bachmeier wrote:The only important difference between D and languages like Rust, Go, and Python is that those languages developed communities of developers that got stuff doneThis is not true, that is, its not the only difference. More important difference is that Python and Go never said "GC is too slow and inappropriate in some situations, we should offer complete support for some other way of managing memory", while Rust never said "Borrow checker is too annoying and GC is really convenient in some situations, lets implement memory barriers and stuff". They chose their way of dealing with it and just improved it over time without changing course.
May 15 2021
On Sunday, 16 May 2021 at 03:01:55 UTC, nkm1 wrote:This is not true, that is, its not the only difference. More important difference is that Python and Go never said "GC is too slow and inappropriate in some situations, we should offer complete support for some other way of managing memory", while Rust never said "Borrow checker is too annoying and GC is really convenient in some situations, lets implement memory barriers and stuff". They chose their way of dealing with it and just improved it over time without changing course.Many people has put a significant effort into the D GC, but where D differs is in being C-like (Go is not C-like although they may claim it is) which isn't GC friendly. The fact that dmd does not ship with GC enabled speaks volumes...
May 15 2021
On Sunday, 16 May 2021 at 03:46:50 UTC, Ola Fosheim Grostad wrote:The fact that dmd does not ship with GC enabled speaks volumes...Hardly. dmd doesn't release memory, either. Does that "speak volumes" about free? Neither is suitable for Walter's performance goals with dmd. That's precisely why D allows you to disable or avoid the GC when you need to.
May 15 2021
On Sunday, 16 May 2021 at 03:58:15 UTC, Mike Parker wrote:On Sunday, 16 May 2021 at 03:46:50 UTC, Ola Fosheim Grostad wrote:A global bump allocator is just another word for a memory leak. You dont need a comp sci degree to understand that this is not a good "feature".The fact that dmd does not ship with GC enabled speaks volumes...Hardly. dmd doesn't release memory, either. Does that "speak volumes" about free? Neither is suitable for Walter's performance goals with dmd.
May 15 2021
On Sunday, 16 May 2021 at 04:32:31 UTC, Ola Fosheim Grostad wrote:On Sunday, 16 May 2021 at 03:58:15 UTC, Mike Parker wrote:A global bump allocator is just another word for a memory leak. You dont need a comp sci degree to understand that this is not a good "feature".In this case, it's not a leak. DMD does its business and exits. I'm not sure what your point is.
May 15 2021
On Sunday, 16 May 2021 at 04:37:52 UTC, Mike Parker wrote:On Sunday, 16 May 2021 at 04:32:31 UTC, Ola Fosheim Grostad wrote:WTF? All programs exit. Most programs try to play nice so that the user can get the most out of his computer. The main purpose of implementing a language in itself is to force the language designers to eat their own pudding. Secondary goal is to show case language features. The proof of the pudding is in the eating. If you yourself refuse to eat it, that will be viewed as the pudding not being ready for consumption. The first thing a seasoned programmer will look at is how the compiler was implemented using the language features. Memory management in compilers isnt more complicated than for other system software and does only take a tiny fraction of compilation times. There are many good reasons to eat your own pudding. If you dont, people will assume itsnt edible.On Sunday, 16 May 2021 at 03:58:15 UTC, Mike Parker wrote:A global bump allocator is just another word for a memory leak. You dont need a comp sci degree to understand that this is not a good "feature".In this case, it's not a leak. DMD does its business and exits. I'm not sure what your point is.
May 15 2021
On Sunday, 16 May 2021 at 05:35:30 UTC, Ola Fosheim Grostad wrote:WTF? All programs exit. Most programs try to play nice so that the user can get the most out of his computer.Yeah, and...? dmd a very short-running program, and its allocated memory is released when it exits.There are many good reasons to eat your own pudding. If you dont, people will assume itsnt edible.You're acting as if D can only be used with the GC. dmd is *written* in D, so we are eating our own pudding. Walter is very focused on making compiles as fast as possible, and he determined that releasing memory and using the GC prevent him from meeting that goal. And he can still write his program in D. The GC is not a panacea. It's not suitable for every use case or performance goal. And that's perfectly fine.
May 15 2021
On Sunday, 16 May 2021 at 05:50:12 UTC, Mike Parker wrote:Yeah, and...? dmd a very short-running program, and its allocated memory is released when it exits.No, it isnt very short-running. And that is not a valid argument either, as the user may have other tasks that need the memory. To keep it short: Programs that acquire significantly more resources than needed are misbehaving. Never met anyone disagreeing with this view. Memory management is insignificant time wise if you have a solution suitable for systemsprogramming. If D does not have a memory management solution suitable for DMD, then D does not have a solution for systems level programming, yet... If this is difficult to accept, then there is no hope of improvements.The GC is not a panacea. It's not suitable for every use case or performance goal. And that's perfectly fine.If GC is suitable for anything system level, it would be a batch program like a compiler.
May 15 2021
On Sunday, 16 May 2021 at 06:44:09 UTC, Ola Fosheim Grostad wrote:On Sunday, 16 May 2021 at 05:50:12 UTC, Mike Parker wrote:This is the big difference I see here, everyone keeps discussing how much GC matters, while other language communities, regardless of what others think just keep doing their stuff. https://www.f-secure.com/en/consulting/foundry/usb-armory https://tinygo.org/ https://makecode.com/language https://www.microej.com/ https://www.wildernesslabs.co/ Now you can argue that Go, Python, JavaScript, Java, .NET aren't suitable for systems programming, that people are doing a big mistake adopting them, that they are just subsets of the actual languages, pick your argument against them. However at the end of the day hardware is being sold, and developers are making money with such products, regardless of their suitability for systems programming or whatever else. Meanwhile over here, yet another GC discussion round starts, or what features to implement that should be the next great thing, and then one wonders why adoption isn't working out.Yeah, and...? dmd a very short-running program, and its allocated memory is released when it exits.No, it isnt very short-running. And that is not a valid argument either, as the user may have other tasks that need the memory. To keep it short: Programs that acquire significantly more resources than needed are misbehaving. Never met anyone disagreeing with this view. Memory management is insignificant time wise if you have a solution suitable for systemsprogramming. If D does not have a memory management solution suitable for DMD, then D does not have a solution for systems level programming, yet... If this is difficult to accept, then there is no hope of improvements.The GC is not a panacea. It's not suitable for every use case or performance goal. And that's perfectly fine.If GC is suitable for anything system level, it would be a batch program like a compiler.
May 16 2021
On Sunday, 16 May 2021 at 07:18:54 UTC, Paulo Pinto wrote:Now you can argue that Go, Python, JavaScript, Java, .NET aren't suitable for systems programming, that people are doing a big mistake adopting them, that they are just subsets of the actual languages, pick your argument against themPython is the only language not well suited for implementing a compiler. And no, it is not systems level programming, but it is the level right before... This thread is about planning for competitive memory management in D, not in other languages. Is there a plan? No? Will there be a plan? Right now, it does not seem likely. People make suggestions all the time, but there is no signal of a likely path.
May 16 2021
On Sunday, 16 May 2021 at 09:22:00 UTC, Ola Fosheim Grostad wrote:Is there a plan? No? Will there be a plan? Right now, it does not seem likely. People make suggestions all the time, but there is no signal of a likely path.On the topic of a plan (just in general, not specifically about DMD's memory usage): 1. It begs the question of, how is it possible for anyone to even organise a cohesive plan coming forward, since it requires participation from both the leadership, core team, and also D's community (ideally). 2. Even if we can bring a plan forward, how can the people in charge ensure that it is executed, especially in a timely manner? 3. One problem I see all the time with discussions on D, we want to be everything yet end up as nothing; we want to please every single type of programmer, yet that leads to impossible situations, and compromise is for some reason always out of the question; we want everything to be perfect and work in every situation, but this often isn't achievable, and no compromise is made. So with massive hurdles at any part of even getting people together to make a plan, let alone *making the actual plan*, what could the future look like for D's progression and evolution? My best guess is: It'll be the same as always. DIPs that get rejected for not being completely perfect in every possible use-case (and god forbid it use the GC); features that appear out of nowhere; "glaring" or "fundamental" issues (for whomever is complaining that is) will be ignored and swept to the side with "fix it yourself/file an issue"; things just happen when they happen with no rhyme or method, and so on... Even worse is when exciting things like newCTFE are teased for years, only to be dropped :( Or things like DIP 1028(?) where mostly a single point of tension (all extern functions being safe by default) causes all that hard work to go to waste. Without a cohesive direction and a well-defined plan, I'd say it definitely increases the risk factor of someone/some entity adopting D for a project, due to the large uncertainty and confusion about what kind of language D is. e.g. I wonder what people who keep on eye on D, but only on a casual level, would think once they learn about ImportC. I wonder if the feeling would be of confusion or excitement (or both!). I wonder if they'll get a feeling of an identity crisis of sorts. e.g. We're a language with both a GC and nogc, yet we don't provide many tools out of the box for nogc code (containers?); we're becoming GC-phobic in regards to features and library changes; etc. Then there's all this hub-bub about a possible Phobos v2/v2021/*whatever*, and it's like: will this actually lead anywhere, is there any actual intention to go through with this, or is this just a theoretical talking point for the next part of a decade? idk, this was kind of just a ramble - I feel D's overall direction and management doesn't seem to be "keeping up with the times" so to speak. It's kind of like that "This is fine" meme in a way, I don't know how to describe it. Uncertainly. Lack of clarity. Lack of obvious public direction and vision. What could happen to try and tackle these things (if they're even problems at all and it's not just me having bad observations)?
May 16 2021
On Sunday, 16 May 2021 at 09:53:04 UTC, SealabJaster wrote:On Sunday, 16 May 2021 at 09:22:00 UTC, Ola Fosheim Grostad wrote:I dont know, but it is a historic fact that D's feature set is a result of evolutionary experimentation more than analytical rigour and careful planning. So, the best option if there is no plan is to make DMD more and more idiomatic and use idiomatic MM, then the weak spots will be exposed and hopefully fixed?Is there a plan? No? Will there be a plan? Right now, it does not seem likely. People make suggestions all the time, but there is no signal of a likely path.On the topic of a plan (just in general, not specifically about DMD's memory usage): 1. It begs the question of, how is it possible for anyone to even organise a cohesive plan coming forward, since it requires participation from both the leadership, core team, and also D's community (ideally).
May 16 2021
On Sunday, 16 May 2021 at 07:18:54 UTC, Paulo Pinto wrote:On Sunday, 16 May 2021 at 06:44:09 UTC, Ola Fosheim Grostad wrote:+1[...]This is the big difference I see here, everyone keeps discussing how much GC matters, while other language communities, regardless of what others think just keep doing their stuff. [...]
May 16 2021
On Sunday, 16 May 2021 at 06:44:09 UTC, Ola Fosheim Grostad wrote:If this is difficult to accept, then there is no hope of improvements.This has nothing to do with D. The C version of the D compiler also did not release memory. He has written in these forums about why he made that decision, and it has absolutely nothing to do with memory management options in any language. It was a conscious decision to pay for faster compile times with increased memory usage. If you think that's a bad decision, fine. But you're flat out wrong that it says anything about D.If GC is suitable for anything system level, it would be a batch program like a compiler.And no one says it isn't. That Walter chose not to use the GC says nothing at all about its suitability for compilers. Of course someone who decided the cost of free is too high would choose not to use the GC! Someone who is not Walter might choose to take the hit on compile times to pay for the benefits of the GC. Then, of course, they would write their code with that in mind and optimize it for GC usage. D gives them the choice to make the right decision for their specific use case to meet their specific goals. You're extrapolating a broad point from a single example based on a flawed interpretation.
May 16 2021
On Sunday, 16 May 2021 at 07:25:30 UTC, Mike Parker wrote:And no one says it isn't. That Walter chose not to use the GC says nothing at all about its suitability for compilers. Of course someone who decided the cost of free is too high would choose not to use the GC!Thats not obvious at all. In batch a GC can perform better than naive free if it is possible to give the compiler good information about where and when to scan. But if people who make language decisions dont struggle with memory management in their coding practice then there is less likely to be significant improvements in this feature set.
May 16 2021
On Sunday, 16 May 2021 at 06:44:09 UTC, Ola Fosheim Grostad wrote:On Sunday, 16 May 2021 at 05:50:12 UTC, Mike Parker wrote:C'mon dude... How can you say with a straight face that dmd isn't a short running process? It's even hard to imagine a better real world example of a case where it's ok to not free. Also, if you want to you can use the lowmem switch?Yeah, and...? dmd a very short-running program, and its allocated memory is released when it exits.No, it isnt very short-running. And that is not a valid argument either, as the user may have other tasks that need the memory. To keep it short: Programs that acquire significantly more resources than needed are misbehaving. Never met anyone disagreeing with this view. Memory management is insignificant time wise if you have a solution suitable for systemsprogramming. If D does not have a memory management solution suitable for DMD, then D does not have a solution for systems level programming, yet... If this is difficult to accept, then there is no hope of improvements.The GC is not a panacea. It's not suitable for every use case or performance goal. And that's perfectly fine.If GC is suitable for anything system level, it would be a batch program like a compiler.
May 16 2021
On Sunday, 16 May 2021 at 10:22:02 UTC, Imperatorn wrote:C'mon dude... How can you say with a straight face that dmd isn't a short running process? It's even hard to imagine a better real world example of a case where it's ok to not free.This is only acceptable in realtime applications or very specific FOREGROUND applications. Draining kernel and hardware resources is not something a BACKGROUND prosess should do. If D was popular it would be used in installers and the compiler would run for ages, kicking in and out.
May 16 2021
On Sunday, 16 May 2021 at 05:50:12 UTC, Mike Parker wrote:You're acting as if D can only be used with the GC. dmd is *written* in D, so we are eating our own pudding. Walter is very focused on making compiles as fast as possible, and he determined that releasing memory and using the GC prevent him from meeting that goal. And he can still write his program in D. The GC is not a panacea. It's not suitable for every use case or performance goal. And that's perfectly fine.In practice that's the case, that you cannot avoid GC unless you don't use anything from the standard library. As soon you use arrays, associative arrays and many other data structures GC will be used. There are two options as I see it. Either make the standard library not using any GC (likely manual memory management or some other method that is not tracing GC), or introduce fat pointers where GC objects are of a special type and the you can recompile the standard library to the GC type you want.
May 16 2021
On Sunday, 16 May 2021 at 09:48:58 UTC, IGotD- wrote:In practice that's the case, that you cannot avoid GC unless you don't use anything from the standard library. As soon you use arrays, associative arrays and many other data structures GC will be used.By definition, avoiding the GC means avoiding features that use the GC. And you don't lose everything in the standard library, either. A good chunk of it does not require the GC. Like anything else in programming, it's a tradeoff. Give up the GC and you lose the convenience it provides. The question is, do you *need* to give up the GC or not? And if so, do you need to give it up completely or only in the spots where you absolutely cannot trigger an allocation? I'm not saying there can't be more work done to alleviate any pain that arises from going without the GC. But I do believe some people reach for nogc when they don't need to, and I don't think that's a demographic we should be aiming for.
May 16 2021
On Sunday, 16 May 2021 at 10:15:00 UTC, Mike Parker wrote:Like anything else in programming, it's a tradeoff. Give up the GC and you lose the convenience it provides. The question is, do you *need* to give up the GC or not? And if so, do you need to give it up completely or only in the spots where you absolutely cannot trigger an allocation?Many like GC but it is the type of GC in D that disqualifies the language for certain applications, an area where often C++ dominates. The key is not giving up GC, but giving people a choice of which type of GC they want to use. D is a versatile language and giving people the versatility of pick and choose GC type is something that would suit an already versatile language. D already supports RC, but only by implicitly doing so in the code so next step would be transparent RC.
May 16 2021
On Sunday, 16 May 2021 at 10:15:00 UTC, Mike Parker wrote:On Sunday, 16 May 2021 at 09:48:58 UTC, IGotD- wrote:Yes, POOP is what made C++ so unappealing (POOP permeates C++ froma A to Z) and we should avoid to fall in that same trap in D. POOP = Premature Optimization Oriented Programming.[...]By definition, avoiding the GC means avoiding features that use the GC. And you don't lose everything in the standard library, either. A good chunk of it does not require the GC. Like anything else in programming, it's a tradeoff. Give up the GC and you lose the convenience it provides. The question is, do you *need* to give up the GC or not? And if so, do you need to give it up completely or only in the spots where you absolutely cannot trigger an allocation? I'm not saying there can't be more work done to alleviate any pain that arises from going without the GC. But I do believe some people reach for nogc when they don't need to, and I don't think that's a demographic we should be aiming for.
May 16 2021
On Sunday, 16 May 2021 at 10:15:00 UTC, Mike Parker wrote:I'm not saying there can't be more work done to alleviate any pain that arises from going without the GC. But I do believe some people reach for nogc when they don't need to, and I don't think that's a demographic we should be aiming for.But the trouble is that D's GC is just not a very good one! There are much better GCs out there. Why doesn't D have one of those better GCs? It's pretty obvious that the decision to offer full support for nogc is the source of real technical trouble with memory management in D. The language was designed to work with GC and relies on it. Thus, the path of least resistance (technical resistance, that is) would be to improve the GC - for example, by implementing memory barriers, perhaps restricting the language itself in some respects and doing other such things which should make it possible to use some better GC. People who cry about automated memory management too much could then be told to just go somewhere else and use C++ or Rust or whatever (which is what they do anyway). Instead what happened is stuff like dip1000... does that even work already? Juding by the thread "dip1000 + pure is a DEADLY COMBO", not really. There were also some ideas about refcounting - looks like that also went nowhere? Supporting both GC and nogc is just way too difficult, that's all there is to it. Other programming languages don't do it (e.g. its possible to bolt a GC onto C or C++, but they don't offer any special support for it). Instead, D is stuck with subpar GC, which seems no better than what's possible with C++, and also with dip1000, which doesn't seem all that great either. All other problems with D aren't a big deal, but the memory management thing is real trouble, and that's because the developers go against the original design of the language.
May 16 2021
On Sunday, 16 May 2021 at 03:58:15 UTC, Mike Parker wrote:On Sunday, 16 May 2021 at 03:46:50 UTC, Ola Fosheim Grostad wrote:Hi Mike, I have to agree with Ola on this point. I too find it jarring that for something as simple (really) as a compiler, that a very simple bump-the-pointer memory allocation strategy without any freeing of memory is considered superior to the language's GC. I do not buy the performance argument. The high memory consumption of the D compiler is a real issue, and it does hurt compilation performance. The amount of memory used frequently passes the available physical memory and paging isn't cheap. Or worse, the memory used exceeds the pagefile limit, and the compile just fails. Speeding up a build by parallel compilation is not possible with a compiler that has such high memory demands. Let's simply acknowledge the issue and move on. Ignoring it will just spawn more forum posts about it and drain our energy. cheers, JohanThe fact that dmd does not ship with GC enabled speaks volumes...Hardly. dmd doesn't release memory, either. Does that "speak volumes" about free? Neither is suitable for Walter's performance goals with dmd. That's precisely why D allows you to disable or avoid the GC when you need to.
May 16 2021
On Sunday, 16 May 2021 at 10:50:38 UTC, Johan Engelen wrote:I do not buy the performance argument.Indeed. When this bad decision was made, the blame went to free. Walter's decision was to never call free... but someone here just replaced the free call with the jemalloc library and saw the same performance improvement. Walter's decision was, even known at the time, the wrong one. order cuz at least in theory, you can buy more ram lol).
May 16 2021
On Sunday, 16 May 2021 at 10:50:38 UTC, Johan Engelen wrote:On Sunday, 16 May 2021 at 03:58:15 UTC, Mike Parker wrote:I have trouble following an argument between people that I feel should know better than me that the premise is false. Ola's statement thatOn Sunday, 16 May 2021 at 03:46:50 UTC, Ola Fosheim Grostad wrote:Hi Mike, I have to agree with Ola on this point.The fact that dmd does not ship with GC enabled speaks volumes...Hardly. dmd doesn't release memory, either. Does that "speak volumes" about free? Neither is suitable for Walter's performance goals with dmd. That's precisely why D allows you to disable or avoid the GC when you need to.dmd does not ship with GC enabledis false, given the [-lowmem](https://dlang.org/dmd-windows.html#switch-lowmem) compiler option:-lowmem Enable the garbage collector for the compiler, reducing the compiler memory requirements but increasing compile times.So dmd *as shipped* can be used with and without the GC, the default being fast. You've got to have a default. So before taking this further, I'd suggest arguing about the effectiveness of -lowmem, and whether the GC at all can be blamed. 1. Usually the prime argument against a GC is speed. So, if one wants to prove that the GC leads to unacceptable delays then demonstrate that compile times with -lowmem take considerably more time than compilers that use manual memory management. Try to come up with a comparable case, like C-like betterC and C. If the argument is that important, it shouldn't be hard to make an indisputable case. 2. A secondary argument is that the GC claims more memory than when memory is released by hand. We know that memory usage can be very high even with -lowmem, but that is much more likely to be due to template instantiations and ctfe than due to uncollected memory. Again, it shouldn't be hard to demonstrate whether the GC can be blamed substantially or not. Until i see this demonstrated, the argument goes on the GC-whiners pile for me... -- Bastiaan.
May 16 2021
On Sunday, 16 May 2021 at 12:42:44 UTC, Bastiaan Veelo wrote:On Sunday, 16 May 2021 at 10:50:38 UTC, Johan Engelen wrote:So, you just confirmed that my statement was true. My MAIN POINT was however that D does not have a system level management option if it does not have an option that deemed good enough for DMD. And that would be the default. Calling free manually isnt it, because that is manual management that nobody wants to do, and not calling free is even worse. Whatever the default is, it should be a memory management solution that can be recommended and pointed to as a feature, by being the default that solution would be given priority. Simple language development strategy to ensure improved quality over time.On Sunday, 16 May 2021 at 03:58:15 UTC, Mike Parker wrote:Ola's statement thatOn Sunday, 16 May 2021 at 03:46:50 UTC, Ola Fosheim Grostad wrote:dmd does not ship with GC enabledis false, given the [-lowmem](https://dlang.org/dmd-windows.html#switch-lowmem) compiler option:-lowmem Enable the garbage collector for the compiler, reducing the compiler memory requirements but increasing compile times.So dmd *as shipped* can be used with and without the GC, the default being fast. You've got to have a default.
May 16 2021
Folks, I think the forum is discussing whether to do GC or not which IMHO is a wrong thinking. We need both. I think GC is good enough for most of the use cases whether its web services, user tools, business logic etc. Do you really think Go/Rust without google/mozilla support and money and constant promotion could have reached this popularity. no way. My request to the community is let D be good at both. With a switch of GC=off, people should be able to use manual memory management and also able to use stdlib and lot of libraries. Not sure if its technically possible. Most people will use D with GC on. I know we can turn off GC and mix manual memory management. But not sure we are able to understand the developer community. So lets make it more clear with a black and white approach. Instead we gave them options with lot of ifs and buts. We should get their feedback(please initiate a survey). Lets create small groups to improve specific areas, lets do benchmarks, lets create a plan, improve our documentation. If you create a plan and divide into smaller milestones people can help their part. I think we have all the ammunition its just that we need to clean, improve and show case better. I guess industry wants a simple, secure language which can be easily interop with billions of existing C/C++ codebases. Instead of hundreds of features, lets focus on tooling, bootstrap, strengths etc. We need a reincarnation.
May 16 2021
On Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:[...]There are "GC off" switches. nogc, GC.disable and betterC
May 16 2021
On Sunday, 16 May 2021 at 19:46:06 UTC, Imperatorn wrote:On Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:But then we dont know if all standard library and other modules can be used. We dont even have associate arrays etc. What we want is a pluggable framework where people can use the default GC or their GC or manual memory management by registering malloc/free's(like zig). Code is same. I am not sure technically if its possible as I am not an expert in compiler.[...]There are "GC off" switches. nogc, GC.disable and betterC
May 16 2021
On Sunday, 16 May 2021 at 20:33:12 UTC, dogman wrote:On Sunday, 16 May 2021 at 19:46:06 UTC, Imperatorn wrote:Rust says "Rewrite", D will say "Extend" which means extend your code and rewrite slowly with a safe and simple language. Companies can start writing D and use their existing c/c++ code. I have been working in c/c++ for last 10-15 years still I couldnt follow rust easily. Went through the rust book 2 times. I do like some part of it but any big code base looks horribly complex. I doubted if its my problem or is language is complex and bad to read.On Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:But then we dont know if all standard library and other modules can be used. We dont even have associate arrays etc. What we want is a pluggable framework where people can use the default GC or their GC or manual memory management by registering malloc/free's(like zig). Code is same. I am not sure technically if its possible as I am not an expert in compiler.[...]There are "GC off" switches. nogc, GC.disable and betterC
May 16 2021
On Sunday, 16 May 2021 at 20:36:41 UTC, dogman wrote:On Sunday, 16 May 2021 at 20:33:12 UTC, dogman wrote:Let me put it this way, a couple of years ago Facebook played with D, now they have this to tell about Rust. https://engineering.fb.com/2021/04/29/developer-tools/rust/ is on https://developer.android.com/games/develop/build-in-unity https://dotnet.microsoft.com/learn/games https://stadia.dev/intl/fr_fr/blog/unity-support-for-stadia:heres-what-you-need-to-know/ https://developer.nintendo.com/tools https://unity.com/our-company/newsroom/sony-computer-entertainment-and-unity-technologies-form-strategic-partnership Why? Because they have had plan and stuck to it, regardless of what others keep saying about their suitability.On Sunday, 16 May 2021 at 19:46:06 UTC, Imperatorn wrote:Rust says "Rewrite", D will say "Extend" which means extend your code and rewrite slowly with a safe and simple language. Companies can start writing D and use their existing c/c++ code. I have been working in c/c++ for last 10-15 years still I couldnt follow rust easily. Went through the rust book 2 times. I do like some part of it but any big code base looks horribly complex. I doubted if its my problem or is language is complex and bad to read.On Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:But then we dont know if all standard library and other modules can be used. We dont even have associate arrays etc. What we want is a pluggable framework where people can use the default GC or their GC or manual memory management by registering malloc/free's(like zig). Code is same. I am not sure technically if its possible as I am not an expert in compiler.[...]There are "GC off" switches. nogc, GC.disable and betterC
May 16 2021
On Sunday, 16 May 2021 at 21:24:40 UTC, Paulo Pinto wrote:Let me put it this way, a couple of years ago Facebook played with D, now they have this to tell about Rust.I disagree with this. Facebook chose it because they want to run a safe stable language for their mercurial clone. There are lot of thoughts, support, ads by mozilla folks for this. Why didnt facebook chose Go for this ? For their case GC was no go. For Remedy did we analyse what went wrong ? Do we know why facebook didnt D after Andrei left ? Did we ask what programming community want. Definitely we cant satisfy everyone for all the feature but atleast we should play with some of our strengths. Why would someone use D for any with GC. Go - has GC, easy, good libraries, google backing Rust - safety, mozilla backing swift - apple backing, easy Lets not be in own echo chamber. I feel D can push itself as a simple way of doing memory safety and extension to C/C++/python instead of a rewrite. Let advertize as a language which can be simple like python and fast as C. C++ rust interop doesnt see easy. a. Safe language b. Good tooling c. Good interop with C/C++ d. Flexible to use GC/no GC.
May 16 2021
On Sunday, 16 May 2021 at 21:38:51 UTC, dogman wrote:On Sunday, 16 May 2021 at 21:24:40 UTC, Paulo Pinto wrote:To the community, sorry am not trying to a$$hole. I just want this language and community to grow and flourish. I wish Andrei, Walter come up with Q&A to do a postmortem of the issues they faced and what we can do for it. I wish to help on small tasks whatever I can. I used to do lot of c++ and python and thought of a language somewhat like D. Then I saw D and always wished, if I could write in D daily. D on android, D on linux kernel/EBPF, D with WASM.Let me put it this way, a couple of years ago Facebook played with D, now they have this to tell about Rust.I disagree with this. Facebook chose it because they want to run a safe stable language for their mercurial clone. There are lot of thoughts, support, ads by mozilla folks for this. Why didnt facebook chose Go for this ? For their case GC was no go. For Remedy did we analyse what went wrong ? Do we know why facebook didnt D after Andrei left ? Did we ask what programming community want. Definitely we cant satisfy everyone for all the feature but atleast we should play with some of our strengths. Why would someone use D for any with GC. Go - has GC, easy, good libraries, google backing Rust - safety, mozilla backing swift - apple backing, easy Lets not be in own echo chamber. I feel D can push itself as a simple way of doing memory safety and extension to C/C++/python instead of a rewrite. Let advertize as a language which can be simple like python and fast as C. C++ rust interop doesnt see easy. a. Safe language b. Good tooling c. Good interop with C/C++ d. Flexible to use GC/no GC.
May 16 2021
On Sunday, 16 May 2021 at 21:42:32 UTC, dogman wrote:On Sunday, 16 May 2021 at 21:38:51 UTC, dogman wrote:Men too, I also want more D on embedded[...]To the community, sorry am not trying to a$$hole. I just want this language and community to grow and flourish. I wish Andrei, Walter come up with Q&A to do a postmortem of the issues they faced and what we can do for it. I wish to help on small tasks whatever I can. I used to do lot of c++ and python and thought of a language somewhat like D. Then I saw D and always wished, if I could write in D daily. D on android, D on linux kernel/EBPF, D with WASM.
May 17 2021
On Sunday, 16 May 2021 at 21:38:51 UTC, dogman wrote:On Sunday, 16 May 2021 at 21:24:40 UTC, Paulo Pinto wrote:In what concerns Facebook, their GC cases are already covered by Haskell, OCaml and Java based languages, no need for the anemic Go. Python JITs are enjoying a revival most likely thanks to Julia, now at Pycon 2021 it became official why Guido left his early retirement and went to work for Microsoft. https://us.pycon.org/2021/schedule/presentation/52/ Instagram is also doing a JIT attempt based on their workloads, https://us.pycon.org/2021/schedule/presentation/76/ Then there is already Cython, good enough to write NES emulators in Pyhon, https://us.pycon.org/2021/schedule/presentation/66/ And the endless set of hardware being supported by CircuitPython as the modern BASIC, https://us.pycon.org/2021/schedule/presentation/69/ Being a glue language for Python isn't any killer application worth pursuing, by the time it finally reaches it, Python won't need it any longer.Let me put it this way, a couple of years ago Facebook played with D, now they have this to tell about Rust.I disagree with this. Facebook chose it because they want to run a safe stable language for their mercurial clone. There are lot of thoughts, support, ads by mozilla folks for this. Why didnt facebook chose Go for this ? For their case GC was no go. For Remedy did we analyse what went wrong ? Do we know why facebook didnt D after Andrei left ? Did we ask what programming community want. Definitely we cant satisfy everyone for all the feature but atleast we should play with some of our strengths. Why would someone use D for any with GC. Go - has GC, easy, good libraries, google backing Rust - safety, mozilla backing swift - apple backing, easy Lets not be in own echo chamber. I feel D can push itself as a simple way of doing memory safety and extension to C/C++/python instead of a rewrite. Let advertize as a language which can be simple like python and fast as C. C++ rust interop doesnt see easy. a. Safe language b. Good tooling c. Good interop with C/C++ d. Flexible to use GC/no GC.
May 16 2021
On Sunday, 16 May 2021 at 20:33:12 UTC, dogman wrote:On Sunday, 16 May 2021 at 19:46:06 UTC, Imperatorn wrote:Yeah, I see what you meanOn Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:But then we dont know if all standard library and other modules can be used. We dont even have associate arrays etc. What we want is a pluggable framework where people can use the default GC or their GC or manual memory management by registering malloc/free's(like zig). Code is same. I am not sure technically if its possible as I am not an expert in compiler.[...]There are "GC off" switches. nogc, GC.disable and betterC
May 16 2021
On Sunday, 16 May 2021 at 20:33:12 UTC, dogman wrote:On Sunday, 16 May 2021 at 19:46:06 UTC, Imperatorn wrote:Definitely + for this, providing a set of GCs for different situations is a good thing as severally proven in Java.On Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:But then we dont know if all standard library and other modules can be used. We dont even have associate arrays etc. What we want is a pluggable framework where people can use the default GC or their GC[...]There are "GC off" switches. nogc, GC.disable and betterCor manual memory management by registering malloc/free's(like zig). Code is same. I am not sure technically if its possible as I am not an expert in compiler.I think that's what russhy also wanted to propose. Providing support for other memory containers/allocators in stdlib. As much as I like it, I think "the same" code for all kinds of MM is just too beautiful to become true. Different memory containers will work better for different code or even require code to be rewritten which is often the case with the ownership system in Rust. Then we are left to overload over any MM container increasing the risk for a state space explosion.
May 16 2021
On Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:community is let D be good at both. With a switch of GC=off, people should be able to use manual memory management and also able to use stdlib and lot of libraries. Not sure if its technically possible. Most people will use D with GC on. I know we can turn off GC and mix manual memory management.It takes discipline to mix. Libraries would need to: 1. Be written for RC, transition to GC becomes free. 2. Written for finalizers, getting basic cleanup 3. Test for various mixes of RC/GC... How? But you also need a fully precise GC to get proper finalzation... Probably not worth it, easier to have GC only libs... I am arguing in favour of task bound GC, which can b extended to task-group GC. The latter should roughly cover existing code bases that dont do anything fancy... The key point however is that DMD ought to use the recommened sytem programming MM idiom (whatever it ends up being), then it is possible to argue pro et contra with some level of objectivity. With no common ground, nothing will move...
May 16 2021
On Sunday, 16 May 2021 at 22:02:29 UTC, Ola Fosheim Grostad wrote:On Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:This is what I was going on about in terms of "We want to be everything yet end up as nothing" and "We expect everything to be perfect in every possible use case, but ends up in impossible situations where nothing happens since no one will compromise". Ultimately the fate of this thread is that everything posted here will just turn to dust overtime, as no one with the power to move things forward will even take things into consideration.community is let D be good at both. With a switch of GC=off, people should be able to use manual memory management and also able to use stdlib and lot of libraries. Not sure if its technically possible. Most people will use D with GC on. I know we can turn off GC and mix manual memory management.It takes discipline to mix. Libraries would need to: 1. Be written for RC, transition to GC becomes free. 2. Written for finalizers, getting basic cleanup 3. Test for various mixes of RC/GC... How? But you also need a fully precise GC to get proper finalzation... ... With no common ground, nothing will move...
May 16 2021
On Sunday, 16 May 2021 at 22:11:23 UTC, SealabJaster wrote:On Sunday, 16 May 2021 at 22:02:29 UTC, Ola Fosheim Grostad wrote: This is what I was going on about in terms of "We want to be everything yet end up as nothing" and "We expect everything to be perfect in every possible use case, but ends up in impossible situations where nothing happens since no one will compromise".I think it is more a matter of "we know what we have, but not what we get", which tend to lead to stagnation or long tail decay.Ultimately the fate of this thread is that everything posted here will just turn to dust overtime, as no one with the power to move things forward will even take things into consideration.Most likely. It is a bit more dysfunctional than that as people are willing to put in effort to move things themselves if they knew that the time they put in is a move in a direction that wouldnt be rejected. The real blocker is that there is no format for creating a task force (working group).
May 16 2021
On Sunday, 16 May 2021 at 22:11:23 UTC, SealabJaster wrote:On Sunday, 16 May 2021 at 22:02:29 UTC, Ola Fosheim Grostad wrote:You do have power, but like anything that involves other people if you have a valid idea for where D should go you need to convince others first. But while trying to do that remember, those others will have to do the actual work to implement and maintain whatever it is you want. So bitching for your pet features is nothing without putting in the work to either a) convince others it is worth doing and where possible b) doing the work, either implementation, writing a DIP etc. So everyone here has power to do something, just most can't be bothered once the work kicks in. If you have written several books or a compiler or contributed PRs and proven your skills then your power will grow, i.e. you ability to influence the core D devs.On Sunday, 16 May 2021 at 18:24:11 UTC, dogman wrote:This is what I was going on about in terms of "We want to be everything yet end up as nothing" and "We expect everything to be perfect in every possible use case, but ends up in impossible situations where nothing happens since no one will compromise". Ultimately the fate of this thread is that everything posted here will just turn to dust overtime, as no one with the power to move things forward will even take things into consideration.community is let D be good at both. With a switch of GC=off, people should be able to use manual memory management and also able to use stdlib and lot of libraries. Not sure if its technically possible. Most people will use D with GC on. I know we can turn off GC and mix manual memory management.It takes discipline to mix. Libraries would need to: 1. Be written for RC, transition to GC becomes free. 2. Written for finalizers, getting basic cleanup 3. Test for various mixes of RC/GC... How? But you also need a fully precise GC to get proper finalzation... ... With no common ground, nothing will move...
May 16 2021
On Monday, 17 May 2021 at 01:55:14 UTC, norm wrote:So everyone here has power to do something, just most can't be bothered once the work kicks in.Only on the microscopic level. People who have veto power need to set up working groups, guide them and give them a mandate. Most cant be bothered to do work that is likely to be binned, because that is extremely wasteful (expensive) and people have a life to attend to.
May 17 2021
Just a question, is anything about the GC part of the language spec of D? Is it possible to introduce a task local GC to D in another compiler without to touch the D language?
May 17 2021
On Monday, 17 May 2021 at 08:32:16 UTC, sighoya wrote:Just a question, is anything about the GC part of the language spec of D? Is it possible to introduce a task local GC to D in another compiler without to touch the D language?I think so. At least if we drop memory safety.
May 17 2021
On Monday, 17 May 2021 at 09:02:52 UTC, Ola Fosheim Grostad wrote:On Monday, 17 May 2021 at 08:32:16 UTC, sighoya wrote:Maybe not that even, but the meaning of shared is the issue, I think. Shared ought to refer to between tasks and not threads....Just a question, is anything about the GC part of the language spec of D? Is it possible to introduce a task local GC to D in another compiler without to touch the D language?I think so. At least if we drop memory safety.
May 17 2021
On 17/05/2021 8:32 PM, sighoya wrote:Just a question, is anything about the GC part of the language spec of D? Is it possible to introduce a task local GC to D in another compiler without to touch the D language?It has nothing to do with the compiler. You can implement it fully in your own code base if you want and select it at runtime. https://github.com/dlang/druntime/blob/master/src/core/gc/registry.d https://github.com/dlang/druntime/blob/master/src/core/gc/config.d#L53
May 17 2021
On Monday, 17 May 2021 at 10:39:39 UTC, rikki cattermole wrote:On 17/05/2021 8:32 PM, sighoya wrote:The stack meta info, suspension points and some other details are compilerdependant.Just a question, is anything about the GC part of the language spec of D? Is it possible to introduce a task local GC to D in another compiler without to touch the D language?It has nothing to do with the compiler.
May 17 2021
On Monday, 17 May 2021 at 11:09:00 UTC, Ola Fosheim Grostad wrote:On Monday, 17 May 2021 at 10:39:39 UTC, rikki cattermole wrote:That is, if one wants to avoid a clunky library version. Trying to be generic underutilizes the features of the backend. The goal should be best if breed, whch makes it backend specific.On 17/05/2021 8:32 PM, sighoya wrote:The stack meta info, suspension points and some other details are compilerdependant.Just a question, is anything about the GC part of the language spec of D? Is it possible to introduce a task local GC to D in another compiler without to touch the D language?It has nothing to do with the compiler.
May 17 2021
On Monday, 17 May 2021 at 10:39:39 UTC, rikki cattermole wrote:It has nothing to do with the compiler. You can implement it fully in your own code base if you want and select it at runtime. https://github.com/dlang/druntime/blob/master/src/core/gc/registry.d https://github.com/dlang/druntime/blob/master/src/core/gc/config.d#L53There have been a few tracing GC algorithms but still D is forced to used traced GC. Unfortunately D ends up in the pit as usual, it is chess mate. Walter do not want to implement reference types/fat pointers types which makes RC impossible by standard. Moving druntime/phobos away from GC is also a too big of task which might also break something.
May 17 2021
On Monday, 17 May 2021 at 16:47:36 UTC, IGotD- wrote:On Monday, 17 May 2021 at 10:39:39 UTC, rikki cattermole wrote:Yes, the GC runtime interface is not good enough, task based should be stackless at suspension points, but use system stack for suspension-free functions. That way you can have a massive amount of suspended tasks. Another feature that is needed is merging GC heaps, so that you can join tasks that has been split to maximise parallelism. Etc.It has nothing to do with the compiler. You can implement it fully in your own code base if you want and select it at runtime. https://github.com/dlang/druntime/blob/master/src/core/gc/registry.d https://github.com/dlang/druntime/blob/master/src/core/gc/config.d#L53There have been a few tracing GC algorithms but still D is forced to used traced GC.Unfortunately D ends up in the pit as usual, it is chess mate. Walter do not want to implement reference types/fat pointers types which makes RC impossible by standard.Not impossible, you can do like C++, use smart pointers, but unlike C++ inject a new IR before LLVM IR that does ARC. Also, let the smart pointers use compiler intrinsics for ARC.
May 17 2021
On Monday, 17 May 2021 at 16:56:37 UTC, Ola Fosheim Grostad wrote:Not impossible, you can do like C++, use smart pointers, but unlike C++ inject a new IR before LLVM IR that does ARC. Also, let the smart pointers use compiler intrinsics for ARC.That's a possibility, however badging the code similar to unique_ptr and shared_ptr like in C++ is not something I want to do. What if I want to change the GC algorithm suddenly? One possibility is just to have a generic name for the GC type, like GcRef which is an alias for the actual GC type and then you can change it. Anyone can do this today but still there is the default GC in phobos/druntime. Then we have to go through the entire library and change to the versatile GC alias.
May 17 2021
On Monday, 17 May 2021 at 19:10:09 UTC, IGotD- wrote:That's a possibility, however badging the code similar to unique_ptr and shared_ptr like in C++ is not something I want to do. What if I want to change the GC algorithm suddenly? One possibility is just to have a generic name for the GC type, like GcRef which is an alias for the actual GC type and then you can change it.Yes, fix type unification first, then do something like that... But you need to deal with finalization issues too. Btw, another advantage with task bound GC is that it could call all missed finalizers at completion, so the impact of not having a fully precise GC would be less also in terms of finalization.Then we have to go through the entire library and change to the versatile GC alias.I guess Phobos alone is not a big issue, we could just fork it. The real issue is when you want to use third party libraries that assume Phobos...
May 17 2021
On Monday, 17 May 2021 at 08:32:16 UTC, sighoya wrote:Just a question, is anything about the GC part of the language spec of D? Is it possible to introduce a task local GC to D in another compiler without to touch the D language?The spec assumes GC exists if you use some features - `new`, `arr1 ~ arr2` or associative arrays. However, the GC is implemented in DRuntime. At least in theory, you could take another garbage collector and recompile DRuntime so it uses the foreign collector instead. However, if write barriers are needed, you probably need to use some sort of bytecode tool to insert them to an already compiled object file, and that means `malloc`ed memory access also gets write barriers. Regular D code considers manually allocated code, static buffers and gc-allocated memory to be all the same type, handled with the same functions.
May 18 2021
On Sunday, 16 May 2021 at 16:33:32 UTC, Ola Fosheim Grostad wrote:My MAIN POINT was however that D does not have a system level management option if it does not have an option that deemed good enough for DMD. And that would be the default. Calling free manually isnt it, because that is manual management that nobody wants to do, and not calling free is even worse.See? Walter picked the worse option on your scale. So he has different priorities for DMD than you think he should, perhaps rightfully so. You're asserting that if you gave Walter a good system level management option, he would use it in place of `malloc`/`exit`. How can you know he would do that, when he already makes the "wrong" choice `malloc`/`exit` versus `malloc`/`free`? In my opinion, DMD allocation strategy shows nothing about D, it shows something only about Walter's priorities.
May 18 2021
On Tuesday, 18 May 2021 at 08:37:57 UTC, Dukc wrote:In my opinion, DMD allocation strategy shows nothing about D, it shows something only about Walter's priorities.Maybe so, but even then it does not change the fact that for small languages seasoned programmers will look at how the language is used in the compiler. The assumption being, it is big enough to show if the language scales well and if the language designers cannot make good use of the language features then nobody can... It is an important showcase. I've done this several times. Second point is that language designers cannot make good language design decisions if they dont use the feature set on a larger project. Isn't this obvious!?
May 18 2021
On Tuesday, 18 May 2021 at 09:10:49 UTC, Ola Fosheim Grostad wrote:Maybe so, but even then it does not change the fact that for small languages seasoned programmers will look at how the language is used in the compiler. Second point is that language designers cannot make good language design decisions if they dont use the feature set on a larger project. Isn't this obvious!?For the first point, no. Since you investigate the compiler of a language you're learning, I presume you're not the only one and some indeed do that. It's not obvious for me that it's the majority of seasoned programmers, though. Compilers may be a bit too advanced for someone new to the language, one could also opt for investigating a simpler project instead, to have a quicker start. As for the second point, why do you suspect it isn't obvious? Phobos and DUB are much more iDiomatic than DMD, so the language designers are using the whole feature set of D regardless of DMD implementation.
May 18 2021
On Tuesday, 18 May 2021 at 09:43:08 UTC, Dukc wrote:As for the second point, why do you suspect it isn't obvious? Phobos and DUB are much more iDiomatic than DMD, so the language designers are using the whole feature set of D regardless of DMD implementation.Well, what I said is considered a norm in academic circles. So the belief that compilers is a show case is not uncommon. I would never judge a standard library as they tend to be affected by issues related to code gen and OS. The standard library is kinda part of the compiler backend and runtime. It is common for standard libs to be unidiomatic.
May 18 2021
On Tuesday, 18 May 2021 at 09:47:45 UTC, Ola Fosheim Grostad wrote:Well, what I said is considered a norm in academic circles. So the belief that compilers is a show case is not uncommon. I would never judge a standard library as they tend to be affected by issues related to code gen and OS. The standard library is kinda part of the compiler backend and runtime. It is common for standard libs to be unidiomatic.So, if I understood right you're criticizing DMD implementation, not D memory management options?
May 18 2021
On Tuesday, 18 May 2021 at 10:11:10 UTC, Dukc wrote:On Tuesday, 18 May 2021 at 09:47:45 UTC, Ola Fosheim Grostad wrote:There should be other options, but if you have a solution for DMD then it would be expexted to be enabled by default. If it isn't, how can you expect pergformance conscious system level programmers to think there is an good solution available? Show not tell...Well, what I said is considered a norm in academic circles. So the belief that compilers is a show case is not uncommon. I would never judge a standard library as they tend to be affected by issues related to code gen and OS. The standard library is kinda part of the compiler backend and runtime. It is common for standard libs to be unidiomatic.So, if I understood right you're criticizing DMD implementation, not D memory management options?
May 18 2021
On Tuesday, 18 May 2021 at 10:29:24 UTC, Ola Fosheim Grostad wrote:On Tuesday, 18 May 2021 at 10:11:10 UTC, Dukc wrote:And to avoid any misunderstanding I think that a GC ought to be good enough for a single threaded batch compiler, but you would need to measure using stress tests to find when performance deteriorates and by how much.On Tuesday, 18 May 2021 at 09:47:45 UTC, Ola Fosheim Grostad wrote:There should be other options, but if you have a solution for DMD then it would be expexted to be enabled by default. If it isn't, how can you expect pergformance conscious system level programmers to think there is an good solution available? Show not tell...Well, what I said is considered a norm in academic circles. So the belief that compilers is a show case is not uncommon. I would never judge a standard library as they tend to be affected by issues related to code gen and OS. The standard library is kinda part of the compiler backend and runtime. It is common for standard libs to be unidiomatic.So, if I understood right you're criticizing DMD implementation, not D memory management options?
May 18 2021
the people who claim D should double down on the GC NEVER USED THE D's GC FOR REAL WORLD SCENARIOS Even Ola Fosheim Grostad admits it, he uses GO... who got a point now? The problem of the GC is IT DOESN'T SCALE What in the world, LET'S ALL DOUBLE DOWN on a GC that DOESN'T scale And people wonder why no adoption, c'mon people, we can do better than cli-tools right? agents, they want D to turn into a shitty managed language that can't scale in the day and age of microservices and scalable web apps, THE IRONY is strong here No what can we do about it Ohh wait wait wait, what D is even all about? It saddens me that people WHO DON'T USE D FOR THEIR SERVERS, want to DOUBLE DOWN ON GC, they don't even use it, they opted for an alternative language Now please compare GO's GC with D's GC, and please do the same And also test it with Nim's Then, and only then you'll start to understand what i mean by the GC has no place in D This comunity is full of people who don't use D and want D to be a Java like language When D is best at playing with C/C++; they want it to play with Java instead, the IRONY Use your strength to make a great language WHY THE HELL GC when you want double down on C/C++ interop Fucking hell, no strategy since years ago This comunity's goal is to give room for a new language to emmerge and YET AGAIN EAT ALL OF OUR CAKE You can't even learn from the GO's success I'm telling you, the people who wants D to double down on GC are the ones responsible of its death I'll respect this GC lover comunity the day you'll come up with this https://malloc.se/blog/zgc-jdk16 Until then you better think twice what you want to achieve with D Your focus on web servers, D doesn't even have good libraries for that All the good ecosystem is around the system libraries, task based GC for that? sure, that is the priority /s ;) -- TLDR; is D a web server language? answser is no What are D's strengths? good at being a system language, FOCUS ON THAT instead of bloating the language and STD with more cancerous bloat driven APIs and memory management schemes Let allocators rot in std.experiments, that module? what a pity and laughable fate
May 18 2021
D could have been the promised alternative to the shitty C++ But no, the GC lovers killed that opportunity, they wanted to be instead Java killer, and go are their dreams, now nobody know anymore what the GC lovers want D to be? They can't even admit they were wrong, 0 balls
May 18 2021
you are right. d's right direction is to be a better C++. We must get gid of GC,and GC seris language's influence. Because only a real system level language can be truly competitive.
May 18 2021
On Tuesday, 18 May 2021 at 15:10:58 UTC, zjh wrote:We must get gid of GC,and GC seris language's influence.No -Alex
May 18 2021
On Tuesday, 18 May 2021 at 15:10:58 UTC, zjh wrote:you are right. d's right direction is to be a better C++. We must get gid of GC,and GC seris language's influence. Because only a real system level language can be truly competitive.you can do that already, mark you main function nogc and don't link the GC. you'll lose a few language features, but it's totally useable. A 'better' GC probably requires write barriers which cost performance, so D opts to not use them. And D's GC is perfectly fine for a lot of programs. Also the dmd compiler is boost licensed, so you could just fork it and create your own language with all the features you need.
May 18 2021
D has many shortcomings. D needs to be reborn. Need to big open and big close, need to reconstruct, need to BIG CHANGE. Don't be afraid. Our current D scale is too small, you can change it greatly. If you are afraid of change, you will lose. C++20 has been very powerful. D must be greatly changed. Don't believe those who advocate GC, they are the enemy of D. When I think about it, I can't imagine that compiling a D library will take up a whole memory,and crash. Only by doing the best can we be competitive. . Only by doing real system programming can there be a way out. A single spark can start a prairie fire. We can completely change it, just like PY3 and py2. . Don't be afraid. If you are afraid, you will lose.(repete 3 times) PY3, only 3 has a way out. Otherwise, python will die..
May 18 2021
On Tuesday, 18 May 2021 at 16:02:10 UTC, zjh wrote:D has many shortcomings. D needs to be reborn. Need to big open and big close, need to reconstruct, need to BIG CHANGE. Don't be afraid. Our current D scale is too small, you can change it greatly. If you are afraid of change, you will lose. C++20 has been very powerful. D must be greatly changed. Don't believe those who advocate GC, they are the enemy of D. When I think about it, I can't imagine that compiling a D library will take up a whole memory,and crash. Only by doing the best can we be competitive. . Only by doing real system programming can there be a way out. A single spark can start a prairie fire. We can completely change it, just like PY3 and py2. . Don't be afraid. If you are afraid, you will lose.(repete 3 times) PY3, only 3 has a way out. Otherwise, python will die..if you want D to be reborn, again, what is stopping you? dmd is boost licensed. go ahead. people who spend their free time developing D and are happy with a GC will probably not rip out the GC just because you don't like the GC.
May 18 2021
On Tuesday, 18 May 2021 at 16:20:53 UTC, Zoadian wrote:On Tuesday, 18 May 2021 at 16:02:10 UTC, zjh wrote:Folks lets dont fight over GC vs no-GC. Its a futile fight. We need both. Infact GC is the right approach for the majority of the cases IMHO. This post was mainly asking the core developers about the roadmap. a. can we make language more secure and memory safe(like rust) with and without GC. b. can D without GC use hashmaps, stdlib and other libraries. Libraries can be used with or without GC. Is it technically possible.D has many shortcomings. D needs to be reborn.people who spend their free time developing D and are happy with a GC will probably not rip out the GC just because you don't like the GC.
May 18 2021
On Tuesday, 18 May 2021 at 16:32:01 UTC, dogman wrote:a. can we make language more secure and memory safe(like rust) with and without GC.With, obviously. Without, only if add RC, but RC without ARC is not going to be popular. You cannot have safe borrowing like Rust without tedium. Anyway, the real problem is having to do RC eveywhere on the heap, because proving anything about pointers on the heap is a HARD problem. So unless you want everything to be an acyclic tree datastuctures, you will then be forced to use RC for backpointers, which is moronic! So, no, the theoretical knowledge is not where it has to be to write efficient safe code. It is not possible, in the general case, as of today.b. can D without GC use hashmaps, stdlib and other libraries. Libraries can be used with or without GC. Is it technically possible.The problem is, what about cleanup? D does not have fully precise collection. Destuctors on the GC heap cannot follow pointers to GC objects safely...
May 18 2021
On Tuesday, 18 May 2021 at 15:32:07 UTC, zjh wrote:You're splitting D.no, no i'm not. people who want to get rid of the GC are the ones who want to split the language (and i'm not against it, but don't force it on D). gc and nogc can happily coexist in the current D language.
May 18 2021
On Tuesday, 18 May 2021 at 15:32:07 UTC, zjh wrote:You're splitting D.Actually, it seems like a great idea. I would like it if D was split into D proper (with GC) and DasBetterC (with "return scope" or whatever it is). I mean split for real, more than currently is the case. Then just remove nogc from D.
May 18 2021
I have come to the conclusion that the fighting power of language is: adheres to `GC`, I will move `d` to the end and directly choose `C++` because`d` retains `disadvantages` and gives up `advantages`. Because there are many places where` memory is very important `. The less`memory` means the less `cost`. Only in this way,` industrial users` will choose you. At present, `c++`'s comprehensive strength is the strongest . If we make BIG changes, we can change it to better `c++`. since `d` has much fewer users, it can be either a `disadvantage or an advantage`. Because you can be confident and bold to make changes. When you have more users, you are really constrained. This is where `C++` can't beat `d`.
May 18 2021
At least you have to know D's road map, D's development expectation and D's self position, so that you can work accordingly. Otherwise, it will be a blind toss.
May 18 2021
When everyone is pulling D towards`C++/Java/Python/go`, it's useless if you want to pull `C++`. Can you wake them up without saying it aloud? D need `a sense of urgency`. Really, when `C++23` is comming, `reflection / network` is available. Even you are trying to use C++. where is `D's place`?
May 18 2021
OK, back to the original question, what is `d`, What do you want to be?What is `d'`s road map? How to `complete` it? Just like the slogan of `C++`:`extreme abstraction/never waste`. This is` C++`:`focus on performance, squeeze out performance`. If you can't win the first place, it's OK. I've always regarded `d` as the first class language. But`GC`will drag you back. If What I put forward is that `d` focuses on becoming a `better c++`. As long as` GC` is removed from the standard library, I think it is possible to achieve this goal. A better c++ `is the best language`. Let's make a list of all the important problems we are facing. Similar to dependency analysis, we should first solve the most fundamental problems and then solve them one by one. Our relationship with C++ is both `competition and cooperation`. `C++` has learned a lot from `py`, and it remains `C++`. `d` becoming a better `C++` still has its `style`.
May 19 2021
On Wednesday, 19 May 2021 at 09:09:10 UTC, zjh wrote:OK, back to the original question, what is `d`, What do you want to be?What is `d'`s road map? How to `complete` it? Just like the slogan of `C++`:`extreme abstraction/never waste`. This is` C++`:`focus on performance, squeeze out performance`.Yes, this is what makes C++ the best language for low level programming at the moment, but if one tries to do high level programming in C++ it tends to be verbose or too easy to make mistakes in comparison to other languages. But it is usually not too difficult to mix C++ with other languages.What I put forward is that `d` focuses on becoming a `better c++`. As long as` GC` is removed from the standard library, I think it is possible to achieve this goal. A better c++ `is the best language`.Yes, that was what D claimed to be around 2006? And that is why I picked it up, but the GC killed it for what I wanted to create (+ compiler bugs). And that was like... 15 years ago? Since then it has aggregated lots of features I don't really wanted, but the GC and compiler bugs issue is remaining. So I am very happy that memory management is on the plan, let's keep focus on that one until it is done. Then address the compiler bugs and D will finally get close to what it claimed to be like 15 years ago... But C++ was a different language back then. Trying to become what C++ is going to be in the future is too much. Way too much to achieve. Let's try to achieve the goals D had 15 years ago first... Then set new goals... :-D
May 19 2021
On Wednesday, 19 May 2021 at 10:57:55 UTC, Ola Fosheim Grøstad wrote: [snip]Let's try to achieve the goals D had 15 years ago first... Then set new goals... :-D+1 I think we're all arguing our agreement :)
May 19 2021
I don't like GC either, but the real issue is the absence of any ideology, target market, goals and plans. When you work on any project, you should have an idea what are you going to achieve. You should set your goals and try to make them come true. These are such elementary things that I'm genuinely surprised that the management does not understand it. The current situation with D looks pretty vague. No goals, no plans, no targeting. We're trying to please everyone and we get stuck because we don't like to compromise. Earlier, we had a motto "C++ done right" (or something like that). Right now we don't even have one. Somebody should define current goals and start making unpopular decisions or D will stay a broken bicycle forever. Is there any chance that D will get a list of goals and clear roadmap? Do the maintainers even care about it?
May 19 2021
On Wednesday, 19 May 2021 at 11:58:21 UTC, josh wrote:I don't like GC either, but the real issue is the absence of any ideology, target market, goals and plans.There is an ideology in safe, but the problem is that pointer analysis is a research topic, so pursuing it in nogc code is not realistic... Goals are set too high. Lower the goal to having a library RC pointer with ARC and suddenly you are in a better position than C++ for some use cases. By pursuing safe in non-gc code it will either take forever or you'll end up with something too annoying to use.
May 20 2021
On Thursday, 20 May 2021 at 08:31:47 UTC, Ola Fosheim Grostad wrote:Lower the goal to having a library RC pointer with ARC and suddenly you are in a better position than C++ for some use cases. By pursuing safe in non-gc code it will either take forever or you'll end up with something too annoying to use.Doesn't D already have that? https://dlang.org/library/std/typecons/ref_counted.html Also when you mention ARC, is that atomic reference counting or automatic reference counting? Yes, safe and non-gc/any-gc goals should be separated.
May 20 2021
On Thursday, 20 May 2021 at 11:10:25 UTC, IGotD- wrote:Also when you mention ARC, is that atomic reference counting or automatic reference counting?I mean removing inc/dec by static analysis. Possibly also turning shared_ptr into unique_ptr where possible, which is tricky because of sizeof. I guess I dont mean library RC, but something close to it. It could look like a template. Done in a way that could later be extended to the heap, so if you can prove that something is used as a stack, you can get rid of the refcount...
May 20 2021
On Thursday, 20 May 2021 at 12:59:48 UTC, Ola Fosheim Grostad wrote:On Thursday, 20 May 2021 at 11:10:25 UTC, IGotD- wrote:Well, actually, if you accept one indirection then they would have the same sizeof, but it would be slow.Also when you mention ARC, is that atomic reference counting or automatic reference counting?I mean removing inc/dec by static analysis. Possibly also turning shared_ptr into unique_ptr where possible, which is tricky because of sizeof. I guess I dont mean library RC, but
May 20 2021
On Thursday, 20 May 2021 at 12:59:48 UTC, Ola Fosheim Grostad wrote:I mean removing inc/dec by static analysis. Possibly also turning shared_ptr into unique_ptr where possible, which is tricky because of sizeof. I guess I dont mean library RC, but something close to it. It could look like a template.Why not go further and turn GC pointer to RC if acyclicity is given, and if possible turn it into an owned pointer?
May 20 2021
On Thursday, 20 May 2021 at 14:58:36 UTC, sighoya wrote:On Thursday, 20 May 2021 at 12:59:48 UTC, Ola Fosheim Grostad wrote:There is no GC pointer, only raw pointers?I mean removing inc/dec by static analysis. Possibly also turning shared_ptr into unique_ptr where possible, which is tricky because of sizeof. I guess I dont mean library RC, but something close to it. It could look like a template.Why not go further and turn GC pointer to RC if acyclicity is given, and if possible turn it into an owned pointer?
May 20 2021
On Thursday, 20 May 2021 at 12:59:48 UTC, Ola Fosheim Grostad wrote:On Thursday, 20 May 2021 at 11:10:25 UTC, IGotD- wrote:Contrary to popular belief ARC implementations are quite lousy. Good in theory, not so much when placed in benchmarks, but I guess Apple's marketing helps selling the pivot regarding Objective-C GC failure. https://github.com/ixy-languages/ixy-languages To the point that in all these years Microsoft never bothered to try that in any of their C++ COM/UWP aware implementations. Also there isn't a single C++ compiler that does such optimizations to their smart pointer classes.Also when you mention ARC, is that atomic reference counting or automatic reference counting?I mean removing inc/dec by static analysis. Possibly also turning shared_ptr into unique_ptr where possible, which is tricky because of sizeof. I guess I dont mean library RC, but something close to it. It could look like a template. Done in a way that could later be extended to the heap, so if you can prove that something is used as a stack, you can get rid of the refcount...
May 20 2021
On Thursday, 20 May 2021 at 15:28:52 UTC, Paulo Pinto wrote: > Contrary to popular belief ARC implementations are quite lousy. If we can get rid of 40% that is pretty good. It is for ownership only, in performance code, raw pointers everywhere else.Also there isn't a single C++ compiler that does such optimizations to their smart pointer classes.Their IRs are low level and cannot do ARC well, LLVM lost too much context. D can assume single threaded counters which makes a big difference.
May 20 2021
On Thursday, 20 May 2021 at 15:28:52 UTC, Paulo Pinto wrote:Contrary to popular belief ARC implementations are quite lousy. Good in theory, not so much when placed in benchmarks, but I guess Apple's marketing helps selling the pivot regarding Objective-C GC failure. https://github.com/ixy-languages/ixy-languages To the point that in all these years Microsoft never bothered to try that in any of their C++ COM/UWP aware implementations. Also there isn't a single C++ compiler that does such optimizations to their smart pointer classes.Compared to what? So a tracing GC is faster and as RAM increases what happens to the time spent scanning? Reference counting has a performance impact which is known. The reference counting in Nim has been a success a provided in general better performance than the tracing ones (something Nim can easily do as you can just swap them out). Because of the RC is now the default GC type in Nim. RC has also a known performance impact that is spread through out the execution. Loops can be optimized so that any inc/dec can be avoided. Rust has interesting take on RC as move is the default. There is no inc/dec on a move and neither when borrowing (you borrow the inner type). It's kind of a natural optimization because of this. Because of this I would rather see a move by default by type in D.
May 20 2021
On Thursday, 20 May 2021 at 16:33:09 UTC, IGotD- wrote:impact which is known. The reference counting in Nim has been a success a provided in general better performance than the tracing ones (something Nim can easily do as you can just swap them out). Because of the RC is now the default GC type in Nim.How does Nim deal with references to array elements and struct fields? Does it use fat pointers?
May 20 2021
On Thursday, 20 May 2021 at 17:52:11 UTC, Ola Fosheim Grostad wrote:How does Nim deal with references to array elements and struct fields? Does it use fat pointers?Yes, Nim has fat pointers denoted by the "ref" keyword which means that it is GC allocated. https://nim-lang.org/docs/manual.html *References (similar to pointers in other programming languages) are a way to introduce many-to-one relationships. This means different references can point to and modify the same location in memory (also called aliasing).* *Nim distinguishes between traced and untraced references. Untraced references are also called pointers. Traced references point to objects of a garbage-collected heap, untraced references point to manually allocated objects or objects somewhere else in memory. Thus untraced references are unsafe. However, for certain low-level operations (accessing the hardware) untraced references are unavoidable.* *Traced references are declared with the ref keyword, untraced references are declared with the ptr keyword. In general, a ptr T is implicitly convertible to the pointer type.*
May 20 2021
On Thursday, 20 May 2021 at 16:33:09 UTC, IGotD- wrote:On Thursday, 20 May 2021 at 15:28:52 UTC, Paulo Pinto wrote:Looking forward to the Nim RC beating these benchmarks. https://devblogs.microsoft.com/aspnet/grpc-performance-improvements-in-net-5/ https://www.techempower.com/benchmarks/ And it isn't as if Nim has a community that much greater than D currently has. Rust doesn't have RC, just library types, Arc/RC everywhere is just as slow as shared_ptr everywhere. In fact, the way that Apple got around improving ARC wasn't spending more development resources on their Objective-C/Swift compilers, rather develop a complete new CPU. Now iDevices have turned into Swift/Objective-C machines. https://blog.metaobject.com/2020/11/m1-memory-and-performance.htmlContrary to popular belief ARC implementations are quite lousy. Good in theory, not so much when placed in benchmarks, but I guess Apple's marketing helps selling the pivot regarding Objective-C GC failure. https://github.com/ixy-languages/ixy-languages To the point that in all these years Microsoft never bothered to try that in any of their C++ COM/UWP aware implementations. Also there isn't a single C++ compiler that does such optimizations to their smart pointer classes.Compared to what? So a tracing GC is faster and as RAM increases what happens to the time spent scanning? Reference counting has a performance impact which is known. The reference counting in Nim has been a success a provided in general better performance than the tracing ones (something Nim can easily do as you can just swap them out). Because of the RC is now the default GC type in Nim. RC has also a known performance impact that is spread through out the execution. Loops can be optimized so that any inc/dec can be avoided. Rust has interesting take on RC as move is the default. There is no inc/dec on a move and neither when borrowing (you borrow the inner type). It's kind of a natural optimization because of this. Because of this I would rather see a move by default by type in D.
May 20 2021
On Thursday, 20 May 2021 at 18:18:40 UTC, Paulo Pinto wrote:Rust doesn't have RC, just library types, Arc/RC everywhere is just as slow as shared_ptr everywhere.system code does not have to be safe. Next step would be to add borrowing selectively. You can also use borrowcounters during testing, no need to go for static borrowing, actually.In fact, the way that Apple got around improving ARC wasn't spending more development resources on their Objective-C/Swift compilers, rather develop a complete new CPU.D only needs atomics for shared, not comparable, as an Apple engineer kindly has pointed out in this forum some years ago. He did no discourage D from pursuing ARC, on the contrary.
May 20 2021
On Thursday, 20 May 2021 at 18:35:58 UTC, Ola Fosheim Grostad wrote:On Thursday, 20 May 2021 at 18:18:40 UTC, Paulo Pinto wrote:As you can see Obj-C had some extra challenges because of compatibility with manual RC: http://forum.dlang.org/post/hgmhgirfervrsvcghchw forum.dlang.orgRust doesn't have RC, just library types, Arc/RC everywhere is just as slow as shared_ptr everywhere.system code does not have to be safe. Next step would be to add borrowing selectively. You can also use borrowcounters during testing, no need to go for static borrowing, actually.In fact, the way that Apple got around improving ARC wasn't spending more development resources on their Objective-C/Swift compilers, rather develop a complete new CPU.D only needs atomics for shared, not comparable, as an Apple engineer kindly has pointed out in this forum some years ago. He did no discourage D from pursuing ARC, on the contrary.
May 20 2021
On Thursday, 20 May 2021 at 19:11:56 UTC, Ola Fosheim Grostad wrote:On Thursday, 20 May 2021 at 18:35:58 UTC, Ola Fosheim Grostad wrote:I guess everyone over here will keep talking in circles about memory management. Meanwhile TinyGo, CircuitPyhton, Meadow, Astrobe, MakeCode. microEJ just keep increasing their market share, while D keeps its soul search for the golden solution to replace GC.On Thursday, 20 May 2021 at 18:18:40 UTC, Paulo Pinto wrote:As you can see Obj-C had some extra challenges because of compatibility with manual RC: http://forum.dlang.org/post/hgmhgirfervrsvcghchw forum.dlang.orgRust doesn't have RC, just library types, Arc/RC everywhere is just as slow as shared_ptr everywhere.system code does not have to be safe. Next step would be to add borrowing selectively. You can also use borrowcounters during testing, no need to go for static borrowing, actually.In fact, the way that Apple got around improving ARC wasn't spending more development resources on their Objective-C/Swift compilers, rather develop a complete new CPU.D only needs atomics for shared, not comparable, as an Apple engineer kindly has pointed out in this forum some years ago. He did no discourage D from pursuing ARC, on the contrary.
May 21 2021
On Friday, 21 May 2021 at 07:07:19 UTC, Paulo Pinto wrote:I guess everyone over here will keep talking in circles about memory management. Meanwhile TinyGo, CircuitPyhton, Meadow, Astrobe, MakeCode. microEJ just keep increasing their market share, while D keeps its soul search for the golden solution to replace GC.What do you propose that D should do? I am not in a position to do anything more than propose ideas that can be developed into something that both satisfies the high level D programmers and the low level programmers and try to build some common ground. Building common ground takes time and repeated communication. You need to consider many proposals and evolve them to get to a good solution. Nim seems to have considered and tested several options before landing on ARC, that is the right approach. Don't settle for anything before you have explored the options. In my opinion a task based GC + shared RC should satisfy the needs of both groups and most single threaded code would not need many changes.
May 21 2021
On Friday, 21 May 2021 at 07:29:35 UTC, Ola Fosheim Grostad wrote:On Friday, 21 May 2021 at 07:07:19 UTC, Paulo Pinto wrote:Do like those projects, the powers at the steering wheel should stick with the original design and push it no matter what, instead of switching direction every couple of years and never finishing it.[...]What do you propose that D should do? I am not in a position to do anything more than propose ideas that can be developed into something that both satisfies the high level D programmers and the low level programmers and try to build some common ground. Building common ground takes time and repeated communication. You need to consider many proposals and evolve them to get to a good solution. Nim seems to have considered and tested several options before landing on ARC, that is the right approach. Don't settle for anything before you have explored the options. In my opinion a task based GC + shared RC should satisfy the needs of both groups and most single threaded code would not need many changes.
May 21 2021
On Friday, 21 May 2021 at 08:43:44 UTC, Paulo Pinto wrote:Do like those projects, the powers at the steering wheel should stick with the original design and push it no matter what, instead of switching direction every couple of years and never finishing it.There is no future for a glorified scripting language, there are too many powerful alternatives for scripting. That is effectively proposing long tail decay as a strategy. D has to support those that use D for scriptlike programming today, but there is no future in it, if that is all it aspires to do well.
May 21 2021
On Friday, 21 May 2021 at 08:51:08 UTC, Ola Fosheim Grostad wrote:On Friday, 21 May 2021 at 08:43:44 UTC, Paulo Pinto wrote:Something like gVisor, runc, Android GPU Inspector or USB Armory could have been made better in D, but I digress, apparently it is just glorified scripting.Do like those projects, the powers at the steering wheel should stick with the original design and push it no matter what, instead of switching direction every couple of years and never finishing it.There is no future for a glorified scripting language, there are too many powerful alternatives for scripting. That is effectively proposing long tail decay as a strategy. D has to support those that use D for scriptlike programming today, but there is no future in it, if that is all it aspires to do well.
May 21 2021
On Friday, 21 May 2021 at 08:43:44 UTC, Paulo Pinto wrote:Do like those projects, the powers at the steering wheel should stick with the original design and push it no matter what, instead of switching direction every couple of years and never finishing it.The reason we want to move away from tracing GC is because of this, to quote Araq in this thread. https://forum.dlang.org/post/fttikqwuygkdmpbfocdh forum.dlang.org *But Nim actually bets on RC because it's much more amenable to manual optimizations and because it works well with custom memory management, making it a good fit for "systems programming".* If D wants be a viable option in embedded and systems programming, it has to move away from the tracing GC it has today. This is one of the big reasons D doesn't gain popularity. For high level scripting languages, there are plenty of alternatives.
May 21 2021
On Friday, 21 May 2021 at 09:02:32 UTC, IGotD- wrote:popularity. For high level scripting languages, there are plenty of alternatives.Exactly, to do high level well you are also better off using a JIT as it opens for new and interesting language smantics (and performance).
May 21 2021
On Friday, 21 May 2021 at 09:25:06 UTC, Ola Fosheim Grostad wrote:On Friday, 21 May 2021 at 09:02:32 UTC, IGotD- wrote:Let us also remind ourself that almost anything that can be done in batch in parallell will run faster in the cloud on rented compute-nodes. That space is moving to fast for small players...popularity. For high level scripting languages, there are plenty of alternatives.Exactly, to do high level well you are also better off using a JIT as it opens for new and interesting language smantics (and performance).
May 21 2021
On Friday, 21 May 2021 at 09:02:32 UTC, IGotD- wrote:On Friday, 21 May 2021 at 08:43:44 UTC, Paulo Pinto wrote:Why bother with D given the competition? https://www.f-secure.com/en/consulting/foundry/usb-armory https://www.astrobe.com/ https://www.ptc.com/en/products/developer-tools/perc https://www.aicas.com/wp/products-services/jamaicavm/ https://tinygo.org/ http://www.ulisp.com/ https://makecode.microbit.org/ https://www.wildernesslabs.co/ Just reboot memory managment yet again, better make it sooner than Go gets its first generics release by the end of the year, though.Do like those projects, the powers at the steering wheel should stick with the original design and push it no matter what, instead of switching direction every couple of years and never finishing it.The reason we want to move away from tracing GC is because of this, to quote Araq in this thread. https://forum.dlang.org/post/fttikqwuygkdmpbfocdh forum.dlang.org *But Nim actually bets on RC because it's much more amenable to manual optimizations and because it works well with custom memory management, making it a good fit for "systems programming".* If D wants be a viable option in embedded and systems programming, it has to move away from the tracing GC it has today. This is one of the big reasons D doesn't gain popularity. For high level scripting languages, there are plenty of alternatives.
May 21 2021
On Friday, 21 May 2021 at 10:12:00 UTC, Paulo Pinto wrote:Just reboot memory managment yet again, better make it sooner than Go gets its first generics release by the end of the year, though.D has never changed memory management, only the implementation. That IS the issue...
May 21 2021
On Friday, 21 May 2021 at 13:00:54 UTC, Ola Fosheim Grostad wrote:D has never changed memory management, only the implementation. That IS the issue...The issue is that D doesn't offer a wide variety of memory management options. Right now we have discussion about which GC is the best and if the GC in D is enough. Basically GC X is better than Y, which this is not about. What this is about is that D should offer the programmers a choice, a memory management that suits them whatever that is. Right now the GC in D is one size should fit all, which it doesn't.
May 21 2021
On Friday, 21 May 2021 at 16:16:06 UTC, IGotD- wrote:Basically GC X is better than Y, which this is not about. What this is about is that D should offer the programmers a choice, a memory management that suits them whatever that is. Right now the GC in D is one size should fit all, which it doesn't.Right, but the one size GC will not scale. It has been improved over 10 years, but computers also have 8x cores and 64x memory. In another 10 years, the highend could have another 8x cores and another 64x memory. At some point we have like 64 cores and 1TB memory... At some point this type of GC will only work for small applications. But D also needs something that is coherent. Something that can migrate between threads (possibly between CPUs in the future). So regardless of how people feel, the concept of a task/actor is becoming more relevant. We see this on many scales, also in cloud solutions. Partioning computations and memory, making it less dependent on architecture, allows for scaling (and ultimately distributed computing).
May 21 2021
So regardless of how people feel, the concept of a task/actor is becoming more relevant. We see this on many scales, also in cloud solutions. Partioning computations and memory, making it less dependent on architecture, allows for scaling (and ultimately distributed computing).Have you heard of a language called pony? They seem to be going in that direction. ponylang.io/ The following is a video of a guy whose company made a nanosecond-level response time data stream processor with it. It has a task based GC, like you want.Don't know about metaprogramming though. https://youtu.be/GigBhej1gfI
May 21 2021
On Friday, 21 May 2021 at 17:44:51 UTC, Tejas wrote:Have you heard of a language called pony? They seem to be going in that direction. ponylang.io/ The following is a video of a guy whose company made a nanosecond-level response time data stream processor with it. It has a task based GC, like you want.Don't know about metaprogramming though.Yes, it is interesting, especially the type system, but it is a high level language, not a systems level language. I believe C++ is getting tasks, their coroutines are also (at least MS implementation) switchable in nanoseconds so that you can switch to another task/coroutine while waiting for memory to be transferred to the cache. At least that it was is being claimed.
May 21 2021
On Friday, 21 May 2021 at 17:58:59 UTC, Ola Fosheim Grostad wrote:I believe C++ is getting tasks, their coroutines are also (at least MS implementation) switchable in nanoseconds so that you can switch to another task/coroutine while waiting for memory to be transferred to the cache. At least that it was is being claimed.It turns out that Swift is going heavy in the direction of actors too. I read some of the future direction documenation for Swift and it was pointed out that copying values is what keeps the performance down, so they are working on that, but also on concurrency. They are switching from thread-local to task-local: https://github.com/apple/swift-evolution/blob/main/proposals/0311-task-locals.md Tasks and executors: https://github.com/apple/swift-evolution/blob/main/proposals/0304-structured-concurrency.md C++ also have things in the pipeline on concurrency/tasks/executors... Seems like Swift and C++ are heading in the same direction then. Maybe D's main competitor will be Swift, in addition to Nim et al.
May 22 2021
On Saturday, 22 May 2021 at 11:27:10 UTC, Ola Fosheim Grøstad wrote:On Friday, 21 May 2021 at 17:58:59 UTC, Ola Fosheim Grostad wrote:*sigh* How ironic that the larger organizations are more nimble about these things than we, a vastly smaller community, are(or maybe that's why?) I can't help but feel it might be best if I just left for C++20. Experimental stuff for C++23 is available anyways, can't be any worse than the bugs in the D compilers. If I want the flexibility of Python, I can learn how to embed `boost.python` properly. And (if) when D's ambitions of Dpp and ImportC materialize, I will just automatically generate headers/modules for D. That's the intention, right? ... I think I've lurked in too many negative posts about D. Might be good to stay away from the general posts for a while. See you guys next month or later.I believe C++ is getting tasks, their coroutines are also (at least MS implementation) switchable in nanoseconds so that you can switch to another task/coroutine while waiting for memory to be transferred to the cache. At least that it was is being claimed.It turns out that Swift is going heavy in the direction of actors too. I read some of the future direction documenation for Swift and it was pointed out that copying values is what keeps the performance down, so they are working on that, but also on concurrency. They are switching from thread-local to task-local: https://github.com/apple/swift-evolution/blob/main/proposals/0311-task-locals.md Tasks and executors: https://github.com/apple/swift-evolution/blob/main/proposals/0304-structured-concurrency.md C++ also have things in the pipeline on concurrency/tasks/executors... Seems like Swift and C++ are heading in the same direction then. Maybe D's main competitor will be Swift, in addition to Nim et al.
May 22 2021
On Saturday, 22 May 2021 at 12:47:17 UTC, Tejas wrote:How ironic that the larger organizations are more nimble about these things than we, a vastly smaller community, are(or maybe that's why?)C++ has had concurrency workgroups for a long time? And key Swift people have been involved with clang/LLVM? So it is not like this is happening fast, but they have prepared for it for a longer time perhaps?I can't help but feel it might be best if I just left for C++20.I think only MS has C++20 implemented, clang has bits and pieces of it. I guess it will take one year for clang to have the full C++20 production ready. But things are happening in the concurrency domain, for sure.
May 22 2021
On Saturday, 22 May 2021 at 12:47:17 UTC, Tejas wrote:I can't help but feel it might be best if I just left for C++20. Experimental stuff for C++23 is available anyways, can't be any worse than the bugs in the D compilers. If I want the flexibility of Python, I can learn how to embed `boost.python` properly.Can't speak for you, but this is a no-option for me. C++ has a massive complexity bolted on it, you have an abundance of ugly code which won't be upgraded and will even grow as of today. Still improved support for templates in C++ aren't enough to replace C macros, so you have to deal with them anyway. The syntax still feels hard to read these days, I don't know. And then developing without a GC and dealing with many memory containers which aren't that safely convertible to each other, no, thanks.
May 22 2021
On Saturday, 22 May 2021 at 13:36:11 UTC, sighoya wrote:On Saturday, 22 May 2021 at 12:47:17 UTC, Tejas wrote:+1 I think D will succeed if we just manage to focus[...]Can't speak for you, but this is a no-option for me. C++ has a massive complexity bolted on it, you have an abundance of ugly code which won't be upgraded and will even grow as of today. Still improved support for templates in C++ aren't enough to replace C macros, so you have to deal with them anyway. The syntax still feels hard to read these days, I don't know. And then developing without a GC and dealing with many memory containers which aren't that safely convertible to each other, no, thanks.
May 22 2021
On Saturday, 22 May 2021 at 13:36:11 UTC, sighoya wrote:Can't speak for you, but this is a no-option for me. C++ has a massive complexity bolted on it, you have an abundance of ugly code which won't be upgraded and will even grow as of today.I guess you are talking about libraries, sure most of the larger frameworks were designed many years ago and have outdated APIs. Also, many C++ programmers are set in their ways and continue to write code in their own set ways. More social than language... D is becoming quite complex too though, it could be made simpler. D allows more compact syntax, but not sure what the effect of that is when you get large code bases.Still improved support for templates in C++ aren't enough to replace C macros, so you have to deal with them anyway. The syntax still feels hard to read these days, I don't know.As was pointed out, STL can be verbose, but the last versions have improved on that by language and library changes, so I am starting to find it bearable. I don't use macros in C++... Not sure what you meant there?And then developing without a GC and dealing with many memory containers which aren't that safely convertible to each other, no, thanks.Not sure what you mean by memory containers? What makes C++ challenging is that libraries tend to focus on performance and detailed control, so that can often make them harder to set up and use than in other languages where speed is less in focus.
May 22 2021
On Saturday, 22 May 2021 at 13:36:11 UTC, sighoya wrote:And then developing without a GC and dealing with many memory containers which aren't that safely convertible to each other, no, thanks.This is point I have also thought about. If you only have one pointer type GC or not, then the algorithms of the data structures will work with any type of memory. Also there is no need for code duplication to work with different types of memory management containers. Is is enough not to justify fat pointers? I personally don't think so. The generic programming of D is so good that you can create algorithms that will work with any MM container that you throw at it (with code duplication of course). Not dealing with several MM containers like C++ (unique_ptr, shared_ptr, atomic_shared_ptr) and Rust is kinda nice, but only one like Nim with the "ref" keyword is acceptable I think.
May 22 2021
On Saturday, 22 May 2021 at 16:12:12 UTC, IGotD- wrote:Not dealing with several MM containers like C++ (unique_ptr, shared_ptr, atomic_shared_ptr)Ok, so mean smart pointers. Never had a single issue with this. They are owning pointers, usually encapsulated as private class members. You typically don't pass them around much, and they are usually unique_ptrs unless the design is a mess. What you pass around are mostly views or borrowed pointers?
May 22 2021
On Saturday, 22 May 2021 at 16:21:06 UTC, Ola Fosheim Grostad wrote:Ok, so mean smart pointers. Never had a single issue with this.It's not just that, every large framework tends to have their own pointers with their own memory reclaim rules, like QPointers in Qt, mixing them, and you slip into an unpredictable state.
May 22 2021
On Saturday, 22 May 2021 at 16:53:49 UTC, sighoya wrote:On Saturday, 22 May 2021 at 16:21:06 UTC, Ola Fosheim Grostad wrote:Yes, and their own strings etc, but they are usually out if date in their API design or just making up their own style... C++ is just not a good eco system for high level programming. For that purpose D with GC is obviously more accessible. C++ is good for low level programming, but one needs a well thought out model before coding. It is not a good language for prototyping and playing with ideas.Ok, so mean smart pointers. Never had a single issue with this.It's not just that, every large framework tends to have their own pointers with their own memory reclaim rules, like QPointers in Qt, mixing them, and you slip into an unpredictable state.
May 22 2021
On Saturday, 22 May 2021 at 11:27:10 UTC, Ola Fosheim Grøstad wrote:Seems like Swift and C++ are heading in the same direction then. Maybe D's main competitor will be Swift, in addition to Nim et al.I came over this endless document outlining future Swift C++ interop today: https://github.com/apple/swift/blob/main/docs/CppInteroperabilityManifesto.md They have some limited capabilities already (although Objective-C++ is probably still better). Seems like Apple are putting a massive effort into C++ interop for Swift now, didn't really expect that.
May 23 2021
On Friday, 21 May 2021 at 08:43:44 UTC, Paulo Pinto wrote:Do like those projects, the powers at the steering wheel should stick with the original design and push it no matter what, instead of switching direction every couple of years and never finishing it.I'm glad D did not follow that literally. Remember, templates are the result of breaking that rule and changing direction early in D history. But of course you're right that a prior direction should always have favour over new directions.
May 21 2021
On Friday, 21 May 2021 at 09:57:32 UTC, Dukc wrote:I'm glad D did not follow that literally. Remember, templates are the result of breaking that rule and changing direction early in D history.It's interesting to see how D would turn out without templates however. Template metaprogramming comes with a cost, such as forever dooming yourself to subpar IDE experience.
May 21 2021
On Friday, 21 May 2021 at 10:53:28 UTC, JN wrote:It's interesting to see how D would turn out without templates however. Template metaprogramming comes with a cost, such as forever dooming yourself to subpar IDE experience.I think templates aren't the problem, rather the corner cases introduced in their implementation, making it hard to implement correct reasoning in IDEs.
May 21 2021
On Thursday, 20 May 2021 at 18:18:40 UTC, Paulo Pinto wrote:Looking forward to the Nim RC beating these benchmarks.Benchmarks can usually be tweaked to produce the outcome you're after. I usually get better latency and memory consumption and worse throughput with "Nim RC". However, the Nim compiler itself is over 100K lines of code and 22% faster when compiled with "Nim RC", so in this case the throughput is better. That particular result might be machine specific though as I tested it on an M1 indeed. :-) The fact that the RC algorithm is oblivious to the involved heap sizes and to the amount of alive data makes it a nice default though -- works well when you use much memory or when you have little heap sizes. But Nim actually bets on RC because it's much more amenable to manual optimizations and because it works well with custom memory management, making it a good fit for "systems programming".
May 20 2021
On Thursday, 20 May 2021 at 21:09:22 UTC, Araq wrote:But Nim actually bets on RC because it's much more amenable to manual optimizations and because it works well with custom memory management, making it a good fit for "systems programming".How much better do you feel Nim could get at getting rid of inc/dec pairs compared to where you are now?
May 20 2021
On Thursday, 20 May 2021 at 22:52:35 UTC, Ola Fosheim Grøstad wrote:How much better do you feel Nim could get at getting rid of inc/dec pairs compared to where you are now?Not much -- we implemented all worthwhile optimizations. And given the right annotations (sink, lent, move) there are no superfluous inc/dec pairs left. We're at the point where tweaking the inliner further makes more sense then focussing on inc/dec pairs.
May 20 2021
Perhaps, we should also be considerate of author D. perhaps, what we discussed, `D author`, has been discussed for a long time. We can't check all quotations of `D author`. Maybe he just doesn't want to spend time explaining. I used to remember that `D author` told us just to do what we were interested in. Maybe,`let's just do it`. Those who tells us to do `DC++` alone just want us to leave. They just improve it on `d`. `D author` has been focusing on action rather than management. OK, let's do it ourselves. `We can start with the details of where we feel uncomfortable`. If we don't act, and wait for `d author` to lead us or give us directions. Maybe it will be `a long time`. However, we still need to use `d`. Let's start with `small details` one by one. Don't wait for them. Let's just do it ourselves.
May 19 2021
On Wednesday, 19 May 2021 at 12:30:18 UTC, zjh wrote:Those who tells us to do `DC++` alone just want us to leave.It was already that! It changed horses in midstream, trying to become DC++.`We can start with the details of where we feel uncomfortable`.There are various problems with DMD and other software, those are all solvable or tolerable. The big technical problem is that the D programming language tries to offer good support for different kinds of memory management. This is a hell of a task, especially in a situation of limited resourses (manpower etc). As far as I can tell, the plan (implicitly) is (was?) this: implement some kind of limited-borrow-checker-kind-of-thing (dip1000), implement refcounting of pointers and use dip1000 to optimize the refcounting. And then presumably abandon the GC. For now it doesn't seem to work, probably because it's very difficult to do all that. Meanwhile, GC does work, even though it's not a great one.If we don't act, and wait for `d author` to lead us or give us directions. Maybe it will be `a long time`. However, we still need to use `d`. Let's start with `small details` one by one.What's the point of talking about small details when there is an elephant in the room.
May 19 2021
Well, I don't know what to do. No small change, no big change. Let's stand still.
May 19 2021
On Wednesday, 19 May 2021 at 13:25:20 UTC, zjh wrote:Well, I don't know what to do. No small change, no big change. Let's stand still.If this was my process then I would have created an opn working group forum for memory management, defined what is off limits (core requirements) and let people discuss. They apparently are going for a closed group. The problem with this is that you can get en echo chamber where the wrong solution is picked... Meaning if you select people that already agree with you, you might end up with more of the wrong questions and then you also get the wrong answers... But, we'll see. I cannot tell you what to do, but I am starting to look at combining Swift and C++.
May 19 2021
On Wednesday, 19 May 2021 at 12:30:18 UTC, zjh wrote:We'll just improve it on `d`. `D author` has been focusing on action rather than management. OK, let's do it ourselves. `We can start with the details of where we feel uncomfortable`. If we don't act, and wait for `d author` to lead us or give us directions. Maybe it will be `a long time`.Yes, that is also what I fear when I see new big features being added.However, we still need to use `d`. Let's start with `small details` one by one. Don't wait for them. Let's just do it ourselves.I think I can fix most of the small details that bugs me the most, myself, but not the larger issues such as memory management. At some point it becomes easier to switch focus to something like Feeble's CX language or design your own from scratch. So, if CX is being developed into something interesting and D does not get proper memory management, that is a more likely option I think. Anyway, as I pointed out, forking DMD is not so difficult, but the main issue with it is that the DMD source code should be split into smaller files. Then one can "overwrite" files that has not changed when DMD is updated with new versions, and manually modify (or patch up) the DMD files that has changed. Maybe it is easy to do this with the large source files DMD has for someone that does this all the time, but I have no intent of being an expert on merging... (rebasing). So at it stands, DMD needs restructuring before I want to do big changes to it.
May 19 2021
my c++ source file is also small. I like small files too. indeed,I feel `D author` is using `d` like `C`,and not much like `C++'s` OOP.
May 19 2021
On Wednesday, 19 May 2021 at 03:36:10 UTC, zjh wrote:D need `a sense of urgency`. Really, when `C++23` is comming, `reflection / network` is available. Even you are trying to use C++. where is `D's place`?Yes, it is true that the C++ people have become effective at pushing ideas and turning them into designs. With Microsoft, Google and Apple behind them now they also have a variety if theoretical and technical expertise that others don't. So it is better for D to find its own identity, but it should follow a plan, absolutely. C++ is out if reach, let's move on?
May 19 2021
On Wednesday, 19 May 2021 at 03:36:10 UTC, zjh wrote:When everyone is pulling D towards`C++/Java/Python/go`, it's useless if you want to pull `C++`. Can you wake them up without saying it aloud? D need `a sense of urgency`. Really, when `C++23` is comming, `reflection / network` is available. Even you are trying to use C++. where is `D's place`?Why does D need a sense of urgency? D and its community need to learn how to be comfortable being D and not get distracted chasing perfection in an attempt to be the next Big Thing. I choose to use C++20 at the moment because it is fun again and I like where it is heading. At some point I may switch back to D but it depends on where D ends up. I'm not interested in another Rust or C++, they already exist but D once felt like it was a Python/C++ lovechild and that was an interesting and fun language to use for a while. Really low friction, simple to get into quick to code in and powerful features. But like I said it stalled in its development of new features in that direction chasing perfection. On a completely unrelated note I will say D newsgroups are an amazing resource. I have learned an enormous amount just lurking on discussions between the core devs and looking over their shoulders at the PRs which result from those discussions.
May 19 2021
On Wednesday, 19 May 2021 at 08:21:38 UTC, norm wrote:Why does D need a sense of urgency? D and its community need to learn how to be comfortable being D and not get distracted chasing perfection in an attempt to be the next Big Thing.I kind of agree with that D chases what is fads in computer languages too much. However, the issue with memory management is urgent and this is what blocks D for becoming popular where C++ dominates and that is performance applications. I blame the maintainers who are behaving like ostriches with the head in the sand. They don't even discuss the issue and if there is no official direction/plan, then the community will not do anything.
May 19 2021
On Wednesday, 19 May 2021 at 09:26:59 UTC, IGotD- wrote:On Wednesday, 19 May 2021 at 08:21:38 UTC, norm wrote:Hmm, do we really lack memory management techniques? I'm guessing you mean *in* the language? https://wiki.dlang.org/Memory_Management https://github.com/atilaneves/automem ...Why does D need a sense of urgency? D and its community need to learn how to be comfortable being D and not get distracted chasing perfection in an attempt to be the next Big Thing.I kind of agree with that D chases what is fads in computer languages too much. However, the issue with memory management is urgent and this is what blocks D for becoming popular where C++ dominates and that is performance applications. I blame the maintainers who are behaving like ostriches with the head in the sand. They don't even discuss the issue and if there is no official direction/plan, then the community will not do anything.
May 19 2021
On Wednesday, 19 May 2021 at 09:55:43 UTC, Imperatorn wrote:On Wednesday, 19 May 2021 at 09:26:59 UTC, IGotD- wrote:https://forum.dlang.org/post/pagbapldtkrnlegpwybm forum.dlang.org https://www.youtube.com/watch?v=_PB6Hdi4R7MOn Wednesday, 19 May 2021 at 08:21:38 UTC, norm wrote:Hmm, do we really lack memory management techniques? I'm guessing you mean *in* the language? https://wiki.dlang.org/Memory_Management https://github.com/atilaneves/automem ...[...]I kind of agree with that D chases what is fads in computer languages too much. However, the issue with memory management is urgent and this is what blocks D for becoming popular where C++ dominates and that is performance applications. I blame the maintainers who are behaving like ostriches with the head in the sand. They don't even discuss the issue and if there is no official direction/plan, then the community will not do anything.
May 19 2021
On Wednesday, 19 May 2021 at 09:55:43 UTC, Imperatorn wrote:Hmm, do we really lack memory management techniques? I'm guessing you mean *in* the language? https://wiki.dlang.org/Memory_Management https://github.com/atilaneves/automem ...Yes, that is what I meant. To quote the text in one of the links you provided. *D has built-in types that may be difficult to use without the GC: exceptions, strings, dynamic arrays, associative arrays, and delegate closures.* It's exactly these primitives that make D a nice language. They should be rewritten so that they don't rely on GC or can be retargetted to any GC. Also, that I want the GC type should be opaque like in Nim would be nice.
May 19 2021
On Wednesday, 19 May 2021 at 00:21:11 UTC, zjh wrote:I will move `d` to the end and directly choose `C++`Good bye. Best of luck to you on your project.
May 18 2021
On Wednesday, 19 May 2021 at 00:21:11 UTC, zjh wrote:I have come to the conclusion that the fighting power of language is: adheres to `GC`, I will move `d` to the end and directly choose `C++` because`d` retains `disadvantages` and gives up `advantages`. Because there are many places where` memory is very important `. The less`memory` means the less `cost`. Only in this way,` industrial users` will choose you. At present, `c++`'s comprehensive strength is the strongest . If we make BIG changes, we can change it to better `c++`. since `d` has much fewer users, it can be either a `disadvantage or an advantage`. Because you can be confident and bold to make changes. When you have more users, you are really constrained. This is where `C++` can't beat `d`.This thread is D and has been for the last 10+yrs. Changing requires effort but unfortunately the louder someone bitches and moans on the forum the less effort they seem to be willing to put in to fixing the issues they have. You can contribute your ideas with PRs and DIPs today, or you can fork the compiler and create PDAY, Perfect D According to You. But both require effort other than the hot air been blown all over the newsgroup. The other alternative is, as you say, go to C++. This is what I did a while back and now I use C++20 for most projects. For me personally D kinda stalled in terms of what I was looking for and started chasing the tail of Rust. So I may as well use C++20 and beyond, which has or will have most of the features that originally drew me to D. Go killer language. All that is just a distraction.
May 18 2021
On Wednesday, 19 May 2021 at 03:11:15 UTC, norm wrote:On Wednesday, 19 May 2021 at 00:21:11 UTC, zjh wrote:On Wednesday, 19 May 2021 at 03:11:15 UTC, norm wrote: But back to the OP, it would be interesting to see quarterly roadmaps published for D on the wiki. It doesn't matter if most items are dropped or never implemented, what it provides for the community is a snapshot of what the core team are working on and their near term plans at the time of writing. If it changes by next quarter, who cares it is still of interest.I have come to the conclusion that the fighting power of language is: adheres to `GC`, I will move `d` to the end and directly choose `C++` because`d` retains `disadvantages` and gives up `advantages`. Because there are many places where` memory is very important `. The less`memory` means the less `cost`. Only in this way,` industrial users` will choose you. At present, `c++`'s comprehensive strength is the strongest . If we make BIG changes, we can change it to better `c++`. since `d` has much fewer users, it can be either a `disadvantage or an advantage`. Because you can be confident and bold to make changes. When you have more users, you are really constrained. This is where `C++` can't beat `d`.This thread is D and has been for the last 10+yrs. Changing requires effort but unfortunately the louder someone bitches and moans on the forum the less effort they seem to be willing to put in to fixing the issues they have. You can contribute your ideas with PRs and DIPs today, or you can fork the compiler and create PDAY, Perfect D According to You. But both require effort other than the hot air been blown all over the newsgroup. The other alternative is, as you say, go to C++. This is what I did a while back and now I use C++20 for most projects. For me personally D kinda stalled in terms of what I was looking for and started chasing the tail of Rust. So I may as well use C++20 and beyond, which has or will have most of the features that originally drew me to D. Rust, Go killer language. All that is just a distraction.
May 18 2021
On Wednesday, 19 May 2021 at 03:11:15 UTC, norm wrote:Changing requires effort but unfortunately the louder someone bitches and moans on the forum the less effort they seem to be willing to put in to fixing the issues they have. You can contribute your ideas with PRs and DIPs today, or you can fork the compiler and create PDAY, Perfect D According to You.No, it is important to build common ground and make people understand key issues that the language has and make sure these ideas are understood and internalized. It is also important to get a wide variety of options on the table. D has been chasing the tail of other languages too much, it needs its own ideas. DIPs have limited value, because of veto power, you need preapproval + common ground. How do you make common ground without using the forums? You can use chat I guess, but that is very time consuming. I am happy to see that some of the key issues I have had with the language is on the table now. I will probably write a DIP about type unification if nobody else beats me to it, but it should wait till after the most important weakness, memory management, is dealt with. So that DIP can wait... No point in shifting focus now, as memory management is difficult to get right in a competetive manner. Atila confirming that MM is on the plan was good to hear. Yeah, I fork, but the compiler needs restructuring after 20 years, like most software. It is currently "resistant to change" . Changing is still possible, but how do I rebase? The current structure limits how much you ought to change, so I only change stable parts... So my fork is in limbo until I am bored enough to find rebasing entertaining, probably october... I mean I could restructure DMD myself, but how would I then get the DMD changes in?
May 19 2021
What are the advantages of D It's metaprogramming If we want to survive, we must compete with C++ and cooperate with C++. Our advantage is metaprogramming. Our disadvantage is GC. There are a lot of talents in C/C++,you don't want to attract them? you want to attract little white like python? NO!this is a DEAD way. With master, there is library. With library, there is ecology. With ecology, there is d's future.
May 18 2021
On Tuesday, 18 May 2021 at 15:26:08 UTC, zjh wrote:What are the advantages of D It's metaprogrammingI think C++20 surpasses D in terms of metaprogramming and modelling. Concepts and stackless coroutines does make a difference. But C++ takes years to master... So there is a high investment of time needed.Our disadvantage is GC.One disadvantage is that the D's GC design is a sledgehammer from a time when CPUs had 1 core and kilobytes of memory. The real disadvantage is that it is taking so much time to get an alternative memory managment strategy. That is primarily because too much effort is spent arguing about safe. It would have been better to just require safe to use GC and let nogc be system, because safe is clearly out of reach on a theoretical level if you don't want a tedious attribute infested coding experience... At least in this decade.
May 18 2021
Yes, I'm also saying, If you can insert memory management as a template parameter, that's good. Just like `C++`,`c++'s`later memory management improvements benefited from it.
May 18 2021
On Tuesday, 18 May 2021 at 15:26:08 UTC, zjh wrote:What are the advantages of D It's metaprogramming all. If we want to survive, we must compete with C++ and cooperate with C++. Our advantage is metaprogramming. Our disadvantage is GC. There are a lot of talents in C/C++,you don't want to attract them? you want to attract little white like python? NO!this is a DEAD way. With master, there is library. With library, there is ecology. With ecology, there is d's future.Here, TinyGO for the Switch. https://tinygo.org/docs/reference/microcontrollers/nintendoswitch/ Or statically compiled subsets from Typescript and Python for gaming handhelds. https://arcade.makecode.com/# Guess which language kids will prefer, regardless of your opinion on GC? Your special flavoured no GC D or one of those with GC and shinny hardware? Those kids are going to be the programmers from tomorrow.
May 18 2021
On Tuesday, 18 May 2021 at 14:47:16 UTC, russhy wrote:D could have been the promised alternative to the shitty C++ But no, the GC lovers killed that opportunity, they wanted to be instead Java killer, and go are their dreams, now nobody know anymore what the GC lovers want D to be? They can't even admit they were wrong, 0 ballsWhat is killing D is lack of management. workloads, including game engines, AR/VR, unikernels, hypervisors, GPGPU debuggers and embedded development. In case of a complaint regarding Swift, RC is GC as per CS definition. https://gchandbook.org/
May 18 2021
On Tuesday, 18 May 2021 at 14:41:55 UTC, russhy wrote:the people who claim D should double down on the GC NEVER USED THE D's GC FOR REAL WORLD SCENARIOS Even Ola Fosheim Grostad admits it, he uses GO... who got a point now?:-D You are funny, but It is really the only attractive option on Google App Engine when Python isn't appropriate. I am not likely to use Go for hobby-projects... It is not a fun language, but it gets the job done. D is however completely different from Go an Python... I think D should be compared to something like Swift + C++.
May 18 2021
On Tuesday, 18 May 2021 at 14:41:55 UTC, russhy wrote:the people who claim D should double down on the GC NEVER USED THE D's GC FOR REAL WORLD SCENARIOSspeak for yourself buddy service guarantees citizenship
May 18 2021
On Sunday, 16 May 2021 at 03:58:15 UTC, Mike Parker wrote:dmd doesn't release memory, either.That's the missing puzzle piece. Since about two months I wonder why running the unittests on phobos with 3 cores on my computer practically uses 4 cores. I meanwhile found out, that the 4th core is the swap demon and that it happens when the regex modules (containing a lot of memory consuming unittests) are compiled...
May 16 2021
On Sunday, 16 May 2021 at 13:01:58 UTC, Berni44 wrote:On Sunday, 16 May 2021 at 03:58:15 UTC, Mike Parker wrote:Oh yes. If you look at ASan's output (compile with ldc or gdc) on a typical dmd test suite run you're looking at hundreds of thousands of lines worth of memory leaks (some of this is from the GC, others not). This isn't a huge problem in the normal case however the memory allocation/access patterns are not pretty when the going gets tough.dmd doesn't release memory, either.That's the missing puzzle piece. Since about two months I wonder why running the unittests on phobos with 3 cores on my computer practically uses 4 cores. I meanwhile found out, that the 4th core is the swap demon and that it happens when the regex modules (containing a lot of memory consuming unittests) are compiled...
May 16 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:[...]Ah yes, another thread in which energy is expended on internet slap-fights that, in the end, precipitate in nothing but negative feelings.
May 16 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?It's already being used in industry. The plan is definitely that.b. When are we planning to focus on memory safety and use that as our strengthNow. This is the current priority.c. Will we ever make D as both a GC and non GC language.It already is. The goal is to make non-GC use easier/safer without sacrificing the existing language and the ease-of-use of the GC.d. Why there are no working groups for tooling, webframeworks, performance, compiler etc so that we can improve on each area.Because the foundation only has so much donation money.f. D has all properties to make it a good language. But needs more work and marketing. Why cant we make D as a safe and fast extension to C++ & pythonMy personal opinion is that it already is a safe and fast alternative to both those languages. What do you think is lacking?
May 17 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?Selection bias is in play here too. Rust is getting more popular, previously Go was starting to gain popularity also, but just as many languages succeed, many fail to reach the expectations. You have languages like Nim or Crystal, which have their own fanbases, but are relatively unknown in the general programming population (also, most programmers aren't really familiar with Rust/Go either). D is also in that category. You also have many languages that failed completely to gain attention and are dying away in programming language limbo. But you also have languages which should succeed by most metrics, and yet they don't. Look at Dart. It's a well designed language (it's one of my favorite languages), it has good IDE support, it has Google behind it, and yet it never reached wide adoption. Outside of Flutter, the usage of Dart is very limited, and TypeScript took most of those usecases instead. As for Rust, most people aren't flocking to Rust for memory safety or for GC-less memory management. Just like most people aren't flocking away from D because of GC (even if they claim it's because of GC). For many people, unless doing low level programming, memory management is more of an implementation detail. Borrow checker isn't attracting people to Rust. It's a bonus, catching more bugs during compile time, but it's not the main feature. The main features that attract people to Rust is the cohesive story, good vision and a good ecosystem of tooling, libraries and bindings. Just like people did webdev with Python not because Python is great for webdev, but because it's good enough and easy to get started. With lots of libraries available, you can pip download flask, pip download pandas and make some nice dashboards within hours. Rust is similar to that extent. There are many packages, and you can expect many libraries to be existing, or at least if not existing, then the bindings to C/C++ libraries are available to cover that gap. Both languages represent somewhat different mentality. Rust has a core team that is paid to work on Rust. These people can work on the design of the language and can force the decision whenever a problematic topic comes. D is mostly a volunteer project and doesn't have that luxury. Every problem that comes up needs a consensus to overcome. And in some cases the consensus is hard to get. It is a chicken and the egg problem. Because D isn't very popular, it doesn't have the same level of ecosystem, and because it doesn't have the same level of ecosystem, it doesn't get popular. On the other hand, not every language needs to hit it big. I am satisfied with the state of the D and I've seen great improvements over the years. Dub really improved the ergonomics of using D, things like Code-D work fairly well (and get better every year also). Sure, we can switch the language from garbage collection to manual memory management or reference counting. Will it change much? I doubt it, the people complaining about GC would just complain about RC. We would throw the existing ecosystem through the window, and there would be new bugs that come from the improvements. Personally, I think what should happen is narrowing the scope of the language. I actually wish D went with GC fully, without giving escape hatches in form of nogc. We shouldn't be chasing borrowing. Did that ever go anywhere? I don't even know if dip1000 works now, it's all hidden somewhere in spec documents. We don't have dozens of paid developers working on D full time. We have to manage with the resources we have, and spreading them thin over the language is not the optimal usage of such resources.
May 17 2021
On Monday, 17 May 2021 at 19:32:14 UTC, JN wrote:Selection bias is in play here too. Rust is getting more popular, previously Go was starting to gain popularity also,Go is far far far more used than Rust will ever be...but just as many languages succeed, many fail to reach the expectations. You have languages like Nim or Crystal, which have their own fanbases, but are relatively unknown in the general programming population (also, most programmers aren't really familiar with Rust/Go either). D is also in that category.And here is the real trouble, more and more viable hobby languages are emerging, so the hobbyists are split up and eco systems suffer, so language enthusiasts gravitate towards the bigger ones that have polished that one feature they are interested in.But you also have languages which should succeed by most metrics, and yet they don't. Look at Dart. It's a well designed language (it's one of my favorite languages), it has good IDE support, it has Google behind it, and yet it never reached wide adoption. Outside of Flutter, the usage of Dart is very limited, and TypeScript took most of those usecases instead.This is inaccurate, I was an early Dart adopter. To keep it short, Google has sabbotaged it on numerous occations. First by designing it as a deliberately bland dynamic language (later made more static), then by not supporting it in Chrome as promised, then by having poorer framework support for it than for other web languages, add to this that debugging dart code in browsers was worse tha TypeScript and you have the reason for why I will not use Dart in web apps in the near future. 100% selfinflicted wounds.As for Rust, most people aren't flocking to Rust for memory safety or for GC-less memory management.That is obviously wrong.Borrow checker isn't attracting people to Rust. It's a bonus, catching more bugs during compile time, but it's not the main feature. The main features that attract people to Rust is the cohesive story, good vision and a good ecosystem of tooling, libraries and bindingThe eco system was nonexisting when Rust gained momentum and attention. That attention was 100% driven by safe system programming. Btw, the same was true for Go initially, they later had to admit that they did not offer a proper solution for systems programming...Just like people did webdev with Python not because Python is great for webdev, but because it's good enough and easy to get started.Python is excellent for web dev. Never found anything that can touch it in that domain (assuming cloud).Sure, we can switch the language from garbage collection to manual memory management or reference counting. Will it change much? I doubt it, the people complaining about GC would just complain about RC.Without ARC, probably.We don't have dozens of paid developers working on D full time. We have to manage with the resources we have, and spreading them thin over the language is not the optimal usage of such resources.That's true, the best solution is to reduce the feature set and improve metaprogramming, but nobody wants to see features removed and new features are being cheered on, so D is and is likely to stay a growing language experiment, which is perfectly ok by me as a D hobbyist ... It is what the process is making it to be, which is more one of growth than metamorphosis. But lets not extrapolate too much from other languages, most of them follow a different process and are driven by other ideas and ideologies.
May 17 2021
On Monday, 17 May 2021 at 20:06:05 UTC, Ola Fosheim Grostad wrote:That's true, the best solution is to reduce the feature set and improve metaprogramming, but nobody wants to see features removed and new features are being cheered on, so D is and is likely to stay a growing language experiment, which is perfectly ok by me as a D hobbyist ... It is what the process is making it to be, which is more one of growth than metamorphosis."replace features with metaprogramming" comes with a cost. When templates break, the error messages are rough enough already. Also, compilation time will go up as the templates get expanded over and over. Also, high risk of "curse of Lisp" kicking in.
May 17 2021
On Monday, 17 May 2021 at 22:39:51 UTC, JN wrote:On Monday, 17 May 2021 at 20:06:05 UTC, Ola Fosheim Grostad wrote: "replace features with metaprogramming" comes with a cost. When templates break, the error messages are rough enough already. Also, compilation time will go up as the templates get expanded over and over.Error messages is a challenge, but then that would be sn area for impovement. Im sure intersting things could be done with pattern matching. Caching could fix compilation times.Also, high risk of "curse of Lisp" kicking in.I dont know, you might say that javascript suffers from it, but it looks like it thrives by it. When you get frameworks that curse becomes an assets. Ive never used Common LISP Music, but Ive heard composers create interesting things with it. When you can create DSLs, you open up new arenas. Kinda like D does for some in scientific computing.
May 17 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ? b. When are we planning to focus on memory safety and use that as our strengthD is already pretty memory safe. Not sure how D lacks in that department to the point that it's become a problem. Plus it's not like that the only thing worth looking at or priority No. 1 for that matter.c. Will we ever make D as both a GC and non GC language. So that it can be used across control plane, data plane, kernel. I know betterC, but could we make it more easy and accessible common public to able to use phobos. I know people say 95% is done etc.D can already be used just like any other language can. Anyone who can't use D for any of such use cases it problem the problem itself. Of course, all language require certain compromises to work in certain environment and D is not different.d. Why there are no working groups for tooling, web frameworks, performance, compiler etc so that we can improve on each area.The working group is for maintaining the language. Web framework etc. is not an issue or limitation of D. By the way, what king of web framework or web functionality cannot be done in current D? we got vibe.d, hunt, arsd CGI, etc.e. Why is weka not sponsoring ? why are we not advertising that the fastest filesystem is made in D ?They've done quite a bit of marketing in the past. By the way, many other companies are using D partially or exclusively (https://dlang.org/orgs-using-d.html). The fastest file system isn't written in PHP yet it's quite popular. Why is that so? Why do a lot of people use PHP that much?f. D has all properties to make it a good language. But needs more work and marketing. Why cant we make D as a safe and fast extension to C++ & pythonMoot.
May 18 2021
On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?D is already largely fit for industry. In my niche, there is only C++ competitors, and exactly zero Rust/Go/Zig competitors. D is a practical language, not the "earn the maximum of points of HN"-type language.
May 19 2021
On Wednesday, 19 May 2021 at 16:16:39 UTC, Guillaume Piolat wrote:On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:Hackernews is one of the only places you can actually find people who've even heard of D. D is already in a good state but there are still things that leave a lot to be desired, and people on hackernews may enjoy fashion but they usually aren't dumb so I wouldn't be too dismissive.Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?D is already largely fit for industry. In my niche, there is only C++ competitors, and exactly zero Rust/Go/Zig competitors. D is a practical language, not the "earn the maximum of points of HN"-type language.
May 19 2021
On Wednesday, 19 May 2021 at 16:16:39 UTC, Guillaume Piolat wrote:On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:I think JUCE is largely the reason for why almost everyone starts out with C++. Anyway, audio is an area where you have to write your own MM no matter which language, sabso it a bit atypical. If you create many similar products, then you can create you own framework with your own MM. Most dont, so then you need a solid MM for that application. I find that the easy option for GUI on mac now is SwiftUI, implies xcode, implies C++. If I planned to do many similar applications, then I might have considered something else...Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?D is already largely fit for industry. In my niche, there is only C++ competitors, and exactly zero Rust/Go/Zig competitors. D is a practical language, not the "earn the maximum of points of HN"-type language.
May 21 2021
On Friday, 21 May 2021 at 13:59:23 UTC, Ola Fosheim Grostad wrote:On Wednesday, 19 May 2021 at 16:16:39 UTC, Guillaume Piolat wrote:Commercial audio dev was almost 100% C++ before JUCE. The plugin APIs are all C/C++, most of the hosts were/are C++. Its really nothing to do with JUCE imo.On Thursday, 13 May 2021 at 20:57:13 UTC, dogman wrote:I think JUCE is largely the reason for why almost everyone starts out with C++.Question to the core team. Whats the plan and roadmap for D ? a. are we planning to keep D just as a hobby language or a real contender for industry use. Despite being complex, rust has started to get adopted in industries. Whats our plan ?D is already largely fit for industry. In my niche, there is only C++ competitors, and exactly zero Rust/Go/Zig competitors. D is a practical language, not the "earn the maximum of points of HN"-type language.
May 21 2021
On Friday, 21 May 2021 at 14:55:38 UTC, claptrap wrote:On Friday, 21 May 2021 at 13:59:23 UTC, Ola Fosheim Grostad wrote: Commercial audio dev was almost 100% C++ before JUCE. The plugin APIs are all C/C++, most of the hosts were/are C++. Its really nothing to do with JUCE imo.But JUCE came before Rust... The point I tried to make was that there is a threshold you have to cross to get developers over to your language. People look for the easiest/most used solution. (Many audio engines are C + DSL, but that wasn't my point)
May 21 2021
On Friday, 21 May 2021 at 15:15:37 UTC, Ola Fosheim Grostad wrote:But JUCE came before Rust... The point I tried to make was that there is a threshold you have to cross to get developers over to your language. People look for the easiest/most used solution. (Many audio engines are C + DSL, but that wasn't my point)Ola is right in that choice of framework is the primary driver of language selection. The handlful of people that chose Dplug didn't know D before. That's why I think (sorry for turning this into another "D needs X" argument) D needs a slightly better library ecosystem to have more users ("yes you can do that in 3 lines, here are the lines"), and documentation is one way to achieve it. JUCE has lasting power thanks to better documentation and identifiers. It's easy to overlook how much an easy API with good identifiers can lure people. I feel like this is a grave shortcoming of the Stepanov STL style.
May 21 2021
I believe something like this will shut up most of the criticisms on planning/roadmap etc: https://isocpp.org/files/img/wg21-timeline-2020-02.png It doesn't have to be very detailed, just one page summary very easy to digest. If dates are not known, just use "TBD". Most importantly, people wants to know what is happening and what will happen in future for D-language and who are the primary owners/leaders of that work at *birds eye view*. A simple table with key information may suffice. Most definitely I don't want to see buckets and buckets of of text like these: https://wiki.dlang.org/Vision_statements Core team and current leadership may know whats happening nowadays, but for external visitors, its never clear from the dlang website. my 2c.
May 19 2021
On Wednesday, 19 May 2021 at 17:09:25 UTC, sai wrote:I believe something like this will shut up most of the criticisms on planning/roadmap etc: https://isocpp.org/files/img/wg21-timeline-2020-02.png It doesn't have to be very detailed, just one page summary very easy to digest. If dates are not known, just use "TBD". Most importantly, people wants to know what is happening and what will happen in future for D-language and who are the primary owners/leaders of that work at *birds eye view*. A simple table with key information may suffice.Thank you! This is exactly what I'm looking for (personally). Well said.
May 19 2021
What are the alternatives? D remains a hobby language forever, because it does not exceed some critical usage level, or you make all the required breaking changes and make a new start. I would choose the latter one ;-).
May 20 2021