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.

  • Evolving the ... Walter Bright via Digitalmars-d-announce
    • Re: Evol... Richard (Rikki) Andrew Cattermole via Digitalmars-d-announce
      • Re: ... Hipreme via Digitalmars-d-announce
        • ... Richard (Rikki) Andrew Cattermole via Digitalmars-d-announce
        • ... harakim via Digitalmars-d-announce
      • Re: ... Walter Bright via Digitalmars-d-announce
    • Re: Evol... zjh via Digitalmars-d-announce
      • Re: ... zjh via Digitalmars-d-announce
        • ... zjh via Digitalmars-d-announce
          • ... zjh via Digitalmars-d-announce
    • Re: Evol... Paolo Invernizzi via Digitalmars-d-announce
      • Re: ... Guillaume Piolat via Digitalmars-d-announce
        • ... Nick Treleaven via Digitalmars-d-announce

Reply via email to