Dub as tool chain installer

Bastiaan Veelo Bastiaan at Veelo.net
Fri Jun 18 22:42:27 UTC 2021


On Friday, 18 June 2021 at 06:14:03 UTC, Martin Nowak wrote:
> Maybe we could recruit someone to replace the dated NSIS 
> installer with a native msi installer.
> https://issues.dlang.org/show_bug.cgi?id=15375
> https://en.wikipedia.org/wiki/List_of_installation_software#Windows
>
> Don't have much of a clue about Windows nowadays, maybe there 
> are more suitable alternatives.

What would be the most suitable alternative in my eyes is for 
dub, based on [tool chain 
requirements](https://dub.pm/package-format-json.html#toolchain-requirements) specified in `dub.json`, to install and select compilers. Cross platform and cross vendor. I know there are compiler version managers, but I think since dub can check versions of packages and install packages, and can check compiler versions, it is only natural that it should also be able to install compilers.

Above all, it would be just so convenient. This way a compiler 
upgrade becomes part of your commit history. You can test (beta) 
compiler releases in a separate branch, resolve deprecations 
comfortably, have your CI run all tests, all without interfering 
with main development. You push the change and all team members 
upgrade their compilers automatically without even noticing it, 
and certainly without surprises. And any number of years in the 
future, when you pick up an old project that has been dormant, it 
still compiles flawlessly because dub downgrades the compiler 
automatically.

Come to think of it, maybe there should be an additional package 
category that provides build tools that can be run by dub without 
`dub run`, such as `dfmt`, `dpp`, `pegged`, and compilers and 
linters.

— Bastiaan.


More information about the Digitalmars-d-announce mailing list