Evolving the D Language

Hipreme msnmancini at hotmail.com
Fri Jul 7 12:34:50 UTC 2023


On Friday, 7 July 2023 at 03:14:38 UTC, Richard (Rikki) Andrew 
Cattermole wrote:
> I suspect that we kinda have it a little backwards.
>
> Keep it strict by default, but allow more code to pass if 
> desired.
>
> This is how a build manager like dub should operate.
>
> Part of the goal here is to make sure people don't go round 
> using undesirable features by accident.
>
> Also we should probably have the ability to turn on only a 
> subset of the features based upon version. That way you can 
> only accidentally add behavior that you already know about and 
> not have infinite possibilities going forward.
>
>
>
> And for the record I still want hex strings to come back. They 
> were incredibly useful with no good alternatives when we talk 
> about large tables of data being described.

There is 2 views to that side:

1: People doing their project and maintaining only their project.
2: People doing their project that has dub dependencies.


The problem right now, from my POV, is that people such as Grim 
is using dub dependencies. What that generates is that by the 
default functionality being showing the deprecation messages is 
that we need to modify unmaintained 3rd party code. How we use 
3rd party code right now? DUB. The problem is that dub doesn't 
have a flag for keeping 3rd party code shut. So, in MY VIEW, dub 
should be the one to address that problem, not the D compiler 
itself.

One can see here that mostly people that disagreed with Walter's 
proposal is people which maintain all their own code. But that is 
obvious, since we're actively maintaining all of our dependencies 
basically. But thinking on a new user, what happens when they 
don't want to deal with 3rd party code or things feel like just 
out of control? It is not everyone that wants to fork something 
and use the forked version and start maintaining it.


On the `alias this` functionality, I think Walter is correct into 
saying that "we were wrong into deprecate this functionality 
without giving something to replace". `Alias this` is not 
incredible, but we have no reason to simply remove from the 
language without any kind of replacement.


But this is a long standing problem with dub that should be 
fixed: How global flags will behave or even having them: 
modifying `DFLAGS` environment variable is a hassle since it 
involves one command more, and most of the time it is not easily 
portable. Hipreme Engine has solved that problem by having 
something that runs before everything (and controls) , but dub 
itself hasn't solved. A good example of flags is the 
link-defaultlib-shared, -boundscheck and other things that 
changes how the language works somehow.

Warnings and deprecations aren't that different, so, I think dub 
should have a better way to manage 3rd party code. Also, seeing a 
lot of deprecation warnings as default for beginners is quite bad 
since they will be more discouraged to use its library and then 
someone will reinvent the wheel not because they're willing to do 
it for study, but because they will feel that it's NECESSARY.



More information about the Digitalmars-d-announce mailing list