D's tail

FeepingCreature feepingcreature at gmail.com
Wed Aug 11 13:43:31 UTC 2021


On Wednesday, 11 August 2021 at 11:33:42 UTC, Johan wrote:
> On Tuesday, 10 August 2021 at 00:53:29 UTC, Brian Tiffin wrote:
>>
>> So it's a question.  What is a reasonable life expectancy for 
>> the projects I start in D today?
>
> Very much depends on the type of project. How much do you 
> depend on new features (likely to change), how much do you 
> depend on library code, how much do you depend on ABI details, 
> how much are you working around current language/compiler 
> issues...?
>
> At Weka, thusfar any new compiler means compilation failures. 
> It is a demanding codebase.
> Some reasons for failures: workarounds for compiler bugs, ABI 
> dependencies, template attribute deduction deltas, dependence 
> on druntime internals, new compiler bugs, change of language 
> semantics (sometimes intended, but also often unintended), no 
> way to disable/enable specific warnings/deprecations, ...
> On top of that, performance may change too with compiler 
> version, so even if the build succeeds that does not mean the 
> program still functions within the required performance 
> constraints.
> Keeping the code compatible with multiple frontends is a large 
> burden, currently avoided by specifying the compiler version in 
> the codebase and using that exact compiler on build systems and 
> developer's machines (i.e. each dev will have multiple 
> compilers on his machine, automatically downloaded and used by 
> build system). Updating the compiler to a new version is a 
> lengthy process. Weka is currently at LDC 1.24 (with Weka 
> modifications).
>
> -Johan

Funkwerk: this is what we do as well. All tools involved in a 
build are pinned at a fixed version per repository. Anyone doing 
enterprise development in D should do this as a matter of course; 
without reproducible builds, how can you be sure you can react 
effectively when a deployed system breaks? You don't want to mess 
around with deprecations when a customer's system is down.

We generally update DMD about twice a year, in jumps of four 
minor versions, to reduce the cost of fixing compiler issues and 
deprecations across lots of projects.

Current DMD versions used in repos:

2.094 = 37
2.090 = 14
2.086 = 16
2.082 = 11
2.077 = 8

The older repos are generally not actively maintained though.


More information about the Digitalmars-d mailing list