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