terralang / terra

Terra is a low-level system programming language that is embedded in and meta-programmed by the Lua programming language.
terralang.org
Other
2.72k stars 201 forks source link

RFC: Deprecate support for LLVM <= 3.7 #456

Closed elliottslaughter closed 3 years ago

elliottslaughter commented 4 years ago

I would like to propose deprecating LLVM versions <= 3.7.

This is a follow on to #353. Now that we've merged #454 I think our main reason for keeping LLVM 3.5 support is gone, and I don't think anyone seriously used 3.6 or 3.7 anyway. Version 3.5 is 6 years old, and 3.7 is 5 years old. With LLVM being such a fast-moving ecosystem, this would reduce our ongoing maintenance burden going forward. More specifically, I believe 3.5 is the last version that does not use MCJIT by default, so that's a code path we can delete after we're done with this.

I'm aware that there are Terra users currently on LLVM 3.8, so I'm not going to move the deprecation any further right now, but to any users who are reading this, please move to at least LLVM 6 because it would be nice to continue to trim our support burden over time. The next set of deprecations might be (say) a year out, LLVM <= 5.0. (But this is still tentative and not the subject of this proposal.)

What this means:

  1. [DONE] I will leave this issue open for about 3 months to collect comments. If anyone objects we can discuss their concerns here.
  2. [DONE] After that I will consider LLVM <= 3.7 to be formally deprecated. I will update the README and release notes (if we have any betas during this time frame) but will otherwise not make any code changes.
  3. About 6 months after that, I will remove ifdefs for LLVM <= 3.7 from the code base (and corresponding CI coverage). (Note to self: should probably do another beta immediately before this, so there is a canonical "last supported version" to point to.)
    • Note: I'm thinking about finally removing NMake at the same time. If anyone objects, let me know.

Please reply here if you have any comments or concerns.

elliottslaughter commented 4 years ago

Want to make sure this gets seen by anyone who might be relying on older LLVM versions. @jameshegarty @gilbo @Mx7f @ProfFan @aiverson @ErikMcClure @magnatelee @manopapad (and anyone else) please comment if you are actively using LLVM <= 3.7.

gilbo commented 4 years ago

Possibly for Gong. Will try to check later today. Please pester me at will.

On Aug 19, 2020, at 9:13 AM, Elliott Slaughter notifications@github.com wrote:

Want to make sure this gets seen by anyone who might be relying on older LLVM versions. @jameshegarty @gilbo @Mx7f @ProfFan @aiverson @ErikMcClure @magnatelee @manopapad (and anyone else) please comment if you are actively using LLVM <= 3.7.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

aiverson commented 4 years ago

I am not using LLVM < 6 for anything at the moment and would very much like to reduce the maintenance burden.

manopapad commented 4 years ago

I have removed any references to LLVM < 3.8 on Soleil.

Mx7f commented 4 years ago

All good on my end; anything that relies on old functionality is pegged to old releases anyways.

ErikMcClure commented 4 years ago

I use LLVM7.1 or higher.

gilbo commented 4 years ago

Don’t let me be an obstacle. Michael’s comment obviated any of my concerns.

On Oct 11, 2020, at 1:57 PM, Erik McClure notifications@github.com wrote:

I use LLVM7.1 or higher.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

elliottslaughter commented 3 years ago

I haven't heard any objections, so I'm moving this forward to phase 2. You can see the PR at https://github.com/terralang/terra/pull/470. For now this is just a formal deprecation, I anticipate to actually remove the code in about 6 months (maybe a little less, since I waited longer in the first phase of this issue).

elliottslaughter commented 3 years ago

The PR to finally remove this code is at #489. I should still do a release beforehand so that we have a definitive "last supported" point for this code before it's removed though.

elliottslaughter commented 3 years ago

489 has been merged and the code has (finally) been removed. The last supported release for these versions was 1.0.0-beta3.