October 30, 2022

On Sunday, 30 October 2022 at 07:16:27 UTC, Walter Bright wrote:

>

On 10/29/2022 11:41 PM, Paulo Pinto wrote:

>

No one has bothered to endure the work and the voting process to make it part of ISO, including Microsoft that published it via ECMA.

As for why no other has adopted it, it really only makes sense for bytecode based stacks, and there is no competition to CLR for low-level languages.

Not a good sign for D needing to adopt managed pointers.

There is no demand for having a GC in c++ either. The GC support in std is being removed in C++23, and very few projects use the boehm collector (which is very close to the D one).

Cabon will also not have a GC (maybe ref count optimizations). Likewise Rust.

So there is no indication that there is a significant demand for GC among system level programmers/corporations that depend on system level code bases. Not even as an option.

And even the Microsoft example is basically about interop, not system level programming.

But you are right that it is attractive for anything that happens at compile time. However, if you want GC to be attractive at runtime then you need a new strategy at the language design level where threads dont have a negative impact on each other. Even then it will be an uphill battle as will need to create a demand for it (you would need to change existing practice).

(Swift and Go are usually not considered system level.)

October 30, 2022

On Sunday, 30 October 2022 at 07:52:09 UTC, Ola Fosheim Grøstad wrote:

>

On Sunday, 30 October 2022 at 07:16:27 UTC, Walter Bright wrote:

>

On 10/29/2022 11:41 PM, Paulo Pinto wrote:

>

No one has bothered to endure the work and the voting process to make it part of ISO, including Microsoft that published it via ECMA.

As for why no other has adopted it, it really only makes sense for bytecode based stacks, and there is no competition to CLR for low-level languages.

Not a good sign for D needing to adopt managed pointers.

There is no demand for having a GC in c++ either. The GC support in std is being removed in C++23, and very few projects use the boehm collector (which is very close to the D one).

If you bothered to read the rational, the main reason are the companies that care about GC in C++, like Epic and Microsoft, didn't adopt the C++11 API.

Every, single AAA game studio using Unreal has demand for having GC in C++, just like every Windows application written in WPF.

So it is a pity that it is gone, but if the companies that care about don't want it, better clean up the standard.

Yet another good example how stuff gets into the standard, by having enough votes, but not from the companies that actually care about the feature in production code.

>

Cabon will also not have a GC (maybe ref count optimizations).

It remains to be seen if Carbon will ever happen

>

Likewise Rust.

So there is no indication that there is a significant demand for GC among system level programmers/corporations that depend on system level code bases. Not even as an option.

And even the Microsoft example is basically about interop, not system level programming.

But you are right that it is attractive for anything that happens at compile time. However, if you want GC to be attractive at runtime then you need a new strategy at the language design level where threads dont have a negative impact on each other. Even then it will be an uphill battle as will need to create a demand for it (you would need to change existing practice).

Most of that demand comes from cargo cult against any kind of automatic memory management.

In some embedded circles, progress has stopped in C89, should we also measure computing world lack of progress by those folks?

>

(Swift and Go are usually not considered system level.)

Swift is definitly a system level, Apple is quite clear about it on documentation and WWDC keynotes, and on iOS 16 it already surpaced C++ usage.

It is one of the reasons why Apple has stop caring about C++ beyond C++17, and stepped away from clang contributions, focusing on LLVM infrastructure.

Also the main system programming language on Apple systems is Objective-C, with reference counting, and officially deprecated as of WWDC 2022 during the state of platforms keynote.

October 30, 2022
On Sunday, 30 October 2022 at 07:16:27 UTC, Walter Bright wrote:
> On 10/29/2022 11:41 PM, Paulo Pinto wrote:
>> No one has bothered to endure the work and the voting process to make it part of ISO, including Microsoft that published it via ECMA.
>> 
>> As for why no other has adopted it, it really only makes sense for bytecode based stacks, and there is no competition to CLR for low-level languages.
>
> Not a good sign for D needing to adopt managed pointers.

Yeah, but those managed pointers are taken advantage in commercial products like Meadow boards,

https://www.wildernesslabs.co/

Not in C++/CLI, but via C#, VB.NET and F#, as they are anyway CLR features.

Also the fact that Native AOT is now part of the picture, instead of the NGEN, .NET Native and Mono AOT special cases, makes it even better.

Unity is also taking avantage of those managed pointers while they migrate to .NET Core away from Mono, and in the process rewrite part of the C++ infrastructure into C#.

Many of the C# 7 and later improvements for low level coding, came from two main camps, former Midori developers and Unity folks.

Two domains that D with its pure approach to pointers has lost, embedded development and game engines scripting.

Swift and Objective-C, the system programing languages of Apple also have multiple pointer types.
October 30, 2022

On Sunday, 30 October 2022 at 08:17:56 UTC, Paulo Pinto wrote:

>

If you bothered to read the rational, the main reason are the companies that care about GC in C++, like Epic and Microsoft, didn't adopt the C++11 API.

That is not countering what I wrote: nobody uses it, there is no demand for a C++ GC.

>

Every, single AAA game studio using Unreal has demand for having GC in C++,

On the application level, not on the language level. This is no different from browsers providing a GC.

Most projects that can use a GC use a regular high level language with C interop.

btw, going all system level is generally too expensive unless your program is going to run on many machines. People make these calculations all the time. If you only run you application on one machine it is almost always cheaper to buy beefier hardware and write most of the code in a high level format. Even if that means Python + C module. That does not make Python system level.

>

Most of that demand comes from cargo cult against any kind of automatic memory management.

So the market is wrong? Or maybe they just do the most rational thing, use a high level language with C interop.

> >

(Swift and Go are usually not considered system level.)

Swift is definitly a system level, Apple is quite clear about it on documentation and WWDC keynotes, and on iOS 16 it already surpaced C++ usage.

It is one of the reasons why Apple has stop caring about C++ beyond C++17, and stepped away from clang contributions, focusing on LLVM infrastructure.

Also the main system programming language on Apple systems is Objective-C, with reference counting, and officially deprecated as of WWDC 2022 during the state of platforms keynote.

I dont really care what Apple says on their marketing events. I cannot use Swift to write a competitive runtime. It isnt system level at this point.

But yeah, iphone is taking the beefier hardware approach. The price tag on an entry level phone is insane. A very powerful display of marketing and the psychological aspect of markets.

October 30, 2022
On Sunday, 30 October 2022 at 07:45:55 UTC, Imperatorn wrote:
> ..
> ...
> Why does D need to be standardized? I mean, it would be great if it was, but why would it be a "non-starter" otherwise?

So my arguement was for making a D like implementation of 'C with modules', into an ISO standard (not making D into a ISO standard).

You ask why?

Because an international standard *ensures* that 'quiet changes' do NOT occur.

October 30, 2022
On Sunday, 30 October 2022 at 09:27:14 UTC, ISO C with Modules wrote:

> Because an international standard *ensures* that 'quiet changes' do NOT occur.

It also ensures that hardly any changes occur. I hoped C++ would be killed by the inefficiency of the standardization process, but the environment doesn't seem to be changing fast enough for that to happen.
October 30, 2022

On Sunday, 30 October 2022 at 07:52:09 UTC, Ola Fosheim Grøstad wrote:

>

(Swift and Go are usually not considered system level.)

Swift is an interesting example of a possible system level language, but you have to trip lightly in order not to get heap allocations under the hood. Structs (which are value types) can end up on the heap when you use protocols together with structs. If you start to copy these heap allocated structs, you will quickly start to do heap allocations under the hood.

This video gives a little explanation about.
https://developer.apple.com/videos/play/wwdc2016/416/

If pay attention you should be able to avoid these.

With multithreaded system services, Swift seems to be a very good alternative. Atomic reference counting is here very suitable. Also lately there have been a lot of work on the concurrent model for Swift and it supports async/await, concurrent actors.

For the most low level programming Swift isn't an alternative but for system services inside an existing OS there should Swift do fine. Also, Swift seems to be a good fit for game programming as well.

October 30, 2022

On Sunday, 30 October 2022 at 08:56:29 UTC, Ola Fosheim Grøstad wrote:

>

On Sunday, 30 October 2022 at 08:17:56 UTC, Paulo Pinto wrote:

>

If you bothered to read the rational, the main reason are the companies that care about GC in C++, like Epic and Microsoft, didn't adopt the C++11 API.

That is not countering what I wrote: nobody uses it, there is no demand for a C++ GC.
...

Yeah, Unreal C++, C++/CLI, C++/CX don't exist, ergo nobody uses a C++ GC.

October 30, 2022

On Sunday, 30 October 2022 at 11:04:42 UTC, IGotD- wrote:

>

With multithreaded system services, Swift seems to be a very good alternative. Atomic reference counting is here very suitable. Also lately there have been a lot of work on the concurrent model for Swift and it supports async/await, concurrent actors.

For the most low level programming Swift isn't an alternative but for system services inside an existing OS there should Swift do fine. Also, Swift seems to be a good fit for game programming as well.

Right, Apple is putting a lot of effort into creating an environment that makes it attractive to make iOS-only apps (or iOS-first-apps). Making more iOS/macOS software use only Swift is obviously something that fits their strategies and we can expect more of that. They also have an obvious long term interest in growing the pool of loyal Swift-only programmers. (Just like Microsoft has an interest in making sure that there is a large pool of C#-only programmers.)

There has been talks by the original author about making Swift a proper system level language (that could compete with C) some years ago, but not sure if that is still a goal. I don't expect it anytime soon, though.

October 30, 2022

On Sunday, 30 October 2022 at 12:04:38 UTC, Ola Fosheim Grøstad wrote:

>

On Sunday, 30 October 2022 at 11:04:42 UTC, IGotD- wrote:

>

[...]

Right, Apple is putting a lot of effort into creating an environment that makes it attractive to make iOS-only apps (or iOS-first-apps). Making more iOS/macOS software use only Swift is obviously something that fits their strategies and we can expect more of that. They also have an obvious long term interest in growing the pool of loyal Swift-only programmers. (Just like Microsoft has an interest in making sure that there is a large pool of C#-only programmers.)

There has been talks by the original author about making Swift a proper system level language (that could compete with C) some years ago, but not sure if that is still a goal. I don't expect it anytime soon, though.

I still think D as a language is superior. But a lot of the tooling around it needs some work.

But imo it's worth fixing that because D could soon be popular again.