3 ms·
Yup! I recently took a pretty substantial project I wrote in 2006 in Java that was sitting in a tar file, unpacked it, and it ran just fine with a current JVM.
by porcoda 2y ago
Yup! I recently took a pretty substantial project I wrote in 2006 in Java that was sitting in a tar file, unpacked it, and it ran just fine with a current JVM. Even better, I was able to compile it again with no problems: again, with a modern JDK. I wish I could say the same for years of projects written in Rust and Haskell: the Haskell ones are almost all bit rotten since I haven’t kept them up to date with GHC, and Rust is similar. Those two are even worse since with Java I had a rich standard library, so I didn’t have any 3rd party dependencies in my 19 year old project. The Haskell and Rust ones rely on Hackage and crates, and keeping things working for that long would require me to do bonus work beyond my actual project code. I’ve had similar but less painful problems in Python land: the library APIs are mostly stable: the biggest headache there are projects that predate python3 so there’s some work to bring them up to date. That’s at least a one time investment.
Java: no bonus work induced by third parties to keep projects alive, keeps working for a long time. Would recommend.
- tome 2y ago> the Haskell ones are almost all bit rotten since I haven’t kept them up to date with GHC FWIW, over the last couple of years the stability story has got hugely better, thanks largely to the efforts of the Haskell Foundation Stability Working Group. You can see the breakage inventories that I've produced for the last few GHC releases, and see that the amount of breaking changes is decreasing rapidly: https://github.com/tomjaguarpaw/tilapia/ https://github.com/tomjaguarpaw/tilapia/
- mattgreenrocks 2y agoBetween compile times and HLS feeling fragile in VSCode, I’m pretty much done with Haskell at this point. Very nice language, just not my thing anymore.
- tome 2y agoThat's fair enough. Both of those are indeed week points of the ecosystem.
- omcnoe 2y agoStackage is mandatory for a “stable” Haskell env, even for simple/toy projects. It means you get predictable versions for GCH + hackage libs until you explicitly choose to upgrade.
- tialaramex 2y ago> I wish I could say the same for years of projects written in Rust and Haskell Back in 2021 I ported a small C program I wrote into Rust as part of learning the language. Since I was inexperienced even though it's small and Unix specific I added about two dozen dependencies including transitively a Windows API dependency via somebody's terminal lib. So, that's a 2018 Edition Rust program, untouched since November 2021. The binary of course still runs just the same as ever, I've used it a few times over the intervening years - but we'll take that as read. Lets go into the source code and build it again today, how much work will it be to get Rust source code working years later with a brand new Rust toolchain and different OS? It just works. Not like "Well, I had to run some updates and modernisations" it just works.
- KronisLV 2y ago> Yup! I recently took a pretty substantial project I wrote in 2006 in Java that was sitting in a tar file, unpacked it, and it ran just fine with a current JVM. Even better, I was able to compile it again with no problems: again, with a modern JDK. I've seen plenty of Java projects that don't work on anything more recent than JDK in the enterprise space (typically large Spring systems, not even Spring Boot, also DB drivers and pooling solutions seem to be quite brittle in that regard), though I will say more or less the same about old .NET codebases (before Core was a thing), old PHP, Node.js and so on. Most of the time, it comes down to complex dependencies.