On Sunday, 4 November 2018 at 15:40:03 UTC, Neia Neutuladh wrote:

There are many potential features that wouldn't cause problems in isolation. Should we add all of them? Obviously not; the result would be a horribly complex language that takes too much time to learn and is impossible to maintain.

So instead, we need to aggressively filter out potential added features to ensure that what they add is sufficiently important to justify later maintenance costs and the effort of learning things.

The justification for this feature rests on real-world examples of bugs that have been caused by its lack.

You keep turning this argument around, as though it is a request to change D.

We should be able to have a discussion, about ways to further improve type safety inside a module, without being constantly taunted by your hyperbole.

The discussion might even lead to ways to help programmers address the issues being raised, that don't require a change to D (and I don't mean 'just put your class/struct in it's own module').

Now, the fact is, that the D module is a conglomeration of different types.

None of the types declared within a module has any independence from any other type, within the module. Fact.

Some clearly think this is a good thing. Fine, you have it that way already. That will never change.

But some think this requires an undue burden on the part of the programmer to be extra vigiliant around how they compose their types. Sure a few lines in module, you can easily do that. But as the number of line increase, so would the chances of you doing something you never intended to do. There is no way the programmer to provide a guarantee around the use of a type, from other code in the module, since the data and methods in any type are mutable from outside that type.

Some think this shared mutability between types within a module, can lead to bugs and unsafe behaviour.

Some think it might be nice, if the programmer had a means to provide better guarantees for the their declared types.

Type safety is an important and critical component in software architecture.

It's not something you should 'agressively filter out' from discussion.

Whether the language could handle a change to address this, would be a further stage of the discussion. From what I hear, it may not be able to handle such a change, and the D module is doomed to be what it is, and programmers will bear the responsibilty for type safety within a module.

Reply via email to