On Friday, 16 June 2017 at 17:10:41 UTC, Jacob Carlborg wrote:
On 2017-06-16 09:53, Mike B Johnson wrote:
DVM [1] is doing some of this.

Cool, does it keep things well organized

It depends on what you definition of organized. DVM is a tool that allows you to easily install D compilers. It also allows to easily switch between multiple versions of the compiler. That is, you can have one window (terminal) with one version and another window with another version.

On Posix it installs everything ~/.dvm. Each compiler is placed in its own directory, it's mostly the zip archives available on dlang.org unpacked. Here's an example of how the directory structure looks like on Posix:

$ tree -L 2 .dvm
.dvm
├── archives
│   ├── dmd.2.073.0.osx.zip
│   ├── dmd.2.074.0-b1.osx.zip
│   └── dmd.2.074.0.osx.zip
├── bin
│   ├── dmd-2.073.0
│   ├── dmd-2.074.0
│   ├── dmd-2.074.0-b1
│   ├── dvm
│   ├── dvm-current-dc
│   ├── dvm-default-dc
├── compilers
│   ├── dmd-2.073.0
│   ├── dmd-2.074.0
│   ├── dmd-2.074.0-b1
├── env
│   ├── default
│   ├── dmd-2.073.0
│   ├── dmd-2.074.0
│   ├── dmd-2.074.0-b1
└── scripts
    └── dvm

and deals with windows issues(link.exe., dlls, etc) or just uses the "D way" which is a hairball?

I'm not that familiar with Windows (the Windows support was contributed by another developer) so I'm not sure which issues you refer to.


Thanks. At least D has something going on correctly here.

My feeling is, unless DVM works well with windows, that it probably currently doesn't offer much help. If it does manage the versioning well and can deal with the environmental issues well then it is close to what I am asking. If that's the case, it should be polished off and used as the main front end and hosted by D.

You didn't state if it works congruently with all the major compilers.

The issues in windows are:

1. coff/omf. Requires use of windows and visual studio/C stuff who's locations and versions change over the years. This can be a major headache finding the right version. Mainly because the error messages, when using the wrong version, do not suggest that it is a versioning error.

dvm could have the option to search the entire system for the files it needs(e.g., link.exe, various dlls that are generally used, etc) and attempt get things to work.

2. Managing different compilers: Not too bad but if you end up with some problems here, then it gets multiplied by the factor of the number of issues with each compiler. if LDC has an issue with the x64 dlls and dmd with the x32 and they are always looking in the same place because the versions are different and wrong, then it becomes a issue with a "factor of 4" problem. This can become even worse when you try cross compiling and such.

3. Re-installation can be problematic. sci.ini is overwritten. If you hand coded the paths to get everything to work, guess what? Well, who cares? You have plenty of time to waste, right?

4. Reinstalling one thing can break something else. This depends on how fragile the setup was at the start.

5. People that don't have problems with their setup generally think everything "just works" and bitch at others for complaining. Ignorance is bliss, but it's still ignorance. Life is more complicated and everything just doesn't work for everyone because everyone system is different. I don't use standard paths to install things and when an installer hard codes paths that don't exist, it breaks on my system. That is not my fault. The installer shouldn't be so ignorant and do it's job properly. Usually it was written by someone who thinks that when other people have problems on their system, it is due to their ignorance rather than the ignorance of the installer writer(Because they think: Hey, it worked on my system and my system is the same as everyone elses). Same goes for utilities.

I have over 1 billion files on my system, I use it for around 20 different non-complementary subjects(graphics, music, programming, etc). When everything is "competing for space" and things are not set up to work together, one seemingly unrelated program and effect every other one. (e.g., simply by adding to the path variable and break things with error messages that are meaningless to the real problem)

Most ignorant people do not take those things in to account because they oversimplify... and that usually causes problems down the road for the rest of us.

As D becomes increasing popular, there are going to be more variation in the system and the flaws in it will become larger and larger. It's best to start working on fixing those flaws before they become too large to manage and weaken the whole structure. We all know this to be true on some level, but it is actually fact. It is the way of life, everything breaks down. The more flaws it has at the start, the faster it will break down... unless they are fixed at the start. Fixing them near the end just results in a huge waste of time and resources. e.g., same problem with a human being. If a kid doesn't take care of themselves, they will have many problems when they get old... then tons of money will be wasted on trying to "fix" them. If the kid took care of himself when he was young, those problems would be minimized. Same with a utility, app, or installer. But most humans treat their work like their life... they don't do the right thing until they are forced too, and by then it's too late. The point with all this is that D needs to start doing the right things that now rather than wait until it's too late. I'm not saying it is not doing anything right, but it is obvious by some of the comments that some people just don't get it and think it's everyone else's problem(and these people are generally the one that fucks it up for the rest of us, just look at the world today for the constant reminder). D and be the shining city on the hill or it can just be another New York or Dallas. Sure, they are big, but full of problems. Some people are happy and some are not. The goal is to make everyone happy. That starts by, first, by having a good foundation.








Reply via email to