January 03

On Wednesday, 3 January 2024 at 09:28:15 UTC, Martyn wrote:

>

The only area I personally would disagree on is:-
Embracing the GC and improving upon it, disregarding betterC and nogc in the process

I think GC should be optional or, atleast, have some kind of Allocator feature so we can have control if needed.

D allows you to code whatever way you like, or a combination of them... why not provide this power when it comes to memory?

Or perhaps that power comes with maintenance cost. I don't have experience with language design, but I assume there are some features that are easier to implement or possible at all only if you assume a GC is present. But if you always have to assume GC may not be present, you are limiting the development of the language. Not saying whether GC is the right way or refcounting or anything else, but it's certainly easier if you only have one real memory management method to deal with.

January 03
On Wednesday, 3 January 2024 at 12:54:10 UTC, JN wrote:
> On Wednesday, 3 January 2024 at 09:28:15 UTC, Martyn wrote:
>> The only area I personally would disagree on is:-
>> `Embracing the GC and improving upon it, disregarding betterC and nogc in the process`
>>
>> I think GC should be optional or, atleast, have some kind of Allocator feature so we can have control if needed.
>>
>> D allows you to code whatever way you like, or a combination of them... why not provide this power when it comes to memory?
>>
>
> Or perhaps that power comes with maintenance cost. I don't have experience with language design, but I assume there are some features that are easier to implement or possible at all only if you assume a GC is present. But if you always have to assume GC may not be present, you are limiting the development of the language. Not saying whether GC is the right way or refcounting or anything else, but it's certainly easier if you only have one real memory management method to deal with.

What called my attention about D back in the day, was a Native/Compiled language like C/C++ but with GC built-in.

I think sometimes you need to have constrains and keep with it, there are a lot of languages out there, it will be very hard to do what everyone is doing (At least not in high level bases).

So I'd prefer a nice language with some constrains than a half-baked one.

This is a "new language" (Fork!) from another one, I think that if people don't want GC, they just keep with the current one or go with another alternative.

In my opinion I think the first 2 priorities: GC and Safe by default is a nice thing to start with, and maybe even String Interpolation should be added as it's already developed but in alpha/toy mode, so people could taste it more.

Matheus.
January 03

On Wednesday, 3 January 2024 at 12:54:10 UTC, JN wrote:

>

On Wednesday, 3 January 2024 at 09:28:15 UTC, Martyn wrote:

>

The only area I personally would disagree on is:-
Embracing the GC and improving upon it, disregarding betterC and nogc in the process

I think GC should be optional or, atleast, have some kind of Allocator feature so we can have control if needed.

D allows you to code whatever way you like, or a combination of them... why not provide this power when it comes to memory?

Or perhaps that power comes with maintenance cost. I don't have experience with language design, but I assume there are some features that are easier to implement or possible at all only if you assume a GC is present. But if you always have to assume GC may not be present, you are limiting the development of the language. Not saying whether GC is the right way or refcounting or anything else, but it's certainly easier if you only have one real memory management method to deal with.

Sure. Its down to those involved in the currently titled std.v2
A plan looks set with this fork and going full steam ahead!

If they are choosing to remove @nogc (going all in on GC) - they are free to do so.

One of the reasons why I was interested in D going back a few years now was because:-

  • The GC is optional.
  • Performance-wise, it is comparable to C\C++.
  • OOP is optional as well. I can code functional, procedural, etc.

I can write code to (really) be a better C or a better C++
I would even argue that D could also be a better C# !!!

Now -- a fork is happening. 2 things are going to happen.

  1. Dlang will eventually die if the fork is successful, or
  2. The fork fails

(Yes, I do think it will be one or the other - but we shall see within the next 18 months)

If the fork is really going ALL-IN on the GC, then it no longer serves my purpose.

Again - I might be the minority. I think there is atleast 1 or 2 other members who will share the same views as me as evident in previous threads. However, if the majority joining the fork want this... then more power to them.

I wish nothing but success to Dlang and the new fork. My point is if the new fork is successful and they all for GC, then it is time for me to move on (if dlang fades away further as a result of the fork)

January 03

On Wednesday, 3 January 2024 at 13:38:10 UTC, Martyn wrote:

>

If the fork is really going ALL-IN on the GC, then it no longer serves my purpose.

I think you need to first define what you mean with no GC. I would presume that a D fork would work like D right now that you have a choice not to use the GC and instead use library containers similar to C++ STL (which D has partially already).

What I would like is that we can remove GC requirement for druntime so that you can use basic system functions without turning GC on.

However, making Phobos non-GC is a huge undertaking and I really wonder if is possible or really worth it. The only way I can see that is realistic is that we introduce managed pointers so that the GC type can be changed to at least satisfy a little more people. This remains to be seen which direction the memory management will go. I personally believe in the short term, improvements will be made to the tracing GC.

January 03

On Tuesday, 2 January 2024 at 17:55:56 UTC, GrimMaple wrote:

>

Hello everyone!

Growing greatly dissatisfied with how things are in the D Programming Language, we decided it is time to fork it.
We want to change the way decisions are made, giving both more freedom to change, and more speed to decision making. We want the process of contribution to be as open-ended as possible, and not having unnecessary blockage to contributions. We also want the language to allow for faster software development. The way this is going to be achieved is still not finalized, but that is the goal.
One of the ways to achive our goal is to have core focuses of the language. Such focuses are:

[...]

All the best on your efforts, other languages have filled for me the role I wished D for, at the time Andrei's book got published.

January 03

On Wednesday, 3 January 2024 at 09:28:15 UTC, Martyn wrote:

>

The only area I personally would disagree on is:-
Embracing the GC and improving upon it, disregarding betterC and nogc in the process

I think GC should be optional or, atleast, have some kind of Allocator feature so we can have control if needed.

D allows you to code whatever way you like, or a combination of them... why not provide this power when it comes to memory?
[...]

If this fork also maintains interop with C, then we can still have control via malloc() and free() from a C library.

January 03
On Wed, Jan 03, 2024 at 04:20:39PM +0000, Hors via Digitalmars-d wrote:
> On Wednesday, 3 January 2024 at 09:28:15 UTC, Martyn wrote:
> > The only area I personally would disagree on is:-
> > `Embracing the GC and improving upon it, disregarding betterC and
> > nogc in the process`
> > 
> > I think GC should be optional or, atleast, have some kind of Allocator feature so we can have control if needed.
> > 
> > D allows you to code whatever way you like, or a combination of them...  why not provide this power when it comes to memory? [...]
> 
> If this fork also maintains interop with C, then we can still have
> control via malloc() and free() from a C library.

D has always had interop with C on this level at least.  I don't see the fork moving away from this in the foreseeable future, as this is pretty deeply ingrained in the way codegen is done in D.


T

-- 
It's amazing how careful choice of punctuation can leave you hanging:
January 03

I am going to answer a few questions that are on everybody's mind.

On Wednesday, 3 January 2024 at 13:38:10 UTC, Martyn wrote:

>
  • The GC is optional.
  • Performance-wise, it is comparable to C\C++.
  • OOP is optional as well. I can code functional, procedural, etc.

This is still going to be the case. If you don't use GC, you don't use it, just the way it is now. If there are no allocations being made with the GC, then the GC isn't going to be ran. That being said, there is no real will to directly support GC-less code, so as I see it, you'd have to make your own nogc code if you want to.

On Wednesday, 3 January 2024 at 16:20:39 UTC, Hors wrote:

>

If this fork also maintains interop with C, then we can still have control via malloc() and free() from a C library.

Of course, the C interop is still gonna be in, it's not something we want to get rid of entirely. We just don't want to encourage using it. But if you want to - feel free to do so.

January 03
On Wed, Jan 03, 2024 at 01:38:10PM +0000, Martyn via Digitalmars-d wrote: [...]
> Now -- a fork is happening. 2 things are going to happen. 1) Dlang will eventually die if the fork is successful, or 2) The fork fails
[...]

Actually, it's more nuanced than that. One of 5 things could happen:[*]

1) Successful forking: the original D language and the fork both survive and thrive as distinct languages;

2) The fork merges back upstream at some point, e.g., if the current
dispute(s) is/are eventually resolved.

3) The fork fails: eventually the fork burns out and is effectively discontinued.

4) The fork takes over: the original D language stagnates and falls by the wayside, while the fork takes over and assumes primary development.

5) Both fails: the fork drains resources from the original project and fragments the community, and both eventually find themselves unsustainable.

[*] https://www.cs.cmu.edu/~ckaestne/pdf/icse20-forks.pdf


Which will be the actual outcome remains to be seen.


T

-- 
All problems are easy in retrospect.
January 04
I view this development positively. The constant strife I've observed as a latecomer to D, but as someone who has done and managed software development for a very long time, was clearly not healthy or accomplishing anything other than wasting peoples' energy, because it wasn't converging. This divorce will hopefully allow the disagreements to be resolved on technical merits.

Having said that, I want to express my great respect for what Walter and the others responsible for D have accomplished. Given its conservative objectives (as opposed to something like Haskell or even Rust -- "here's a new way to think about computer programming"), I think D is very, very good and as a long-time language enthusiast, I'm familiar with the competition, such as Nim and Zig (which isn't really competition because it is still far from releasable quality, both the software and documentation). I do admit to having had little experience with C++, just enough to share Linus Torvalds' opinion.

That D hasn't taken over the world is beside the point; good things aren't always popular, e.g., Scheme, and sometimes bad things are very popular, e.g., Windows, JavaScript, C/C++. What percentage of the world's music-loving population listens to the music of Bach or Mozart?

My opinions, of course.