12 ms·
> There is a strong aversion to breaking working code Am I the only person who doesn't view this as a good thing? If you want to compile code your wrote 20 yea
by CodeSgt 4y ago
> There is a strong aversion to breaking working code
Am I the only person who doesn't view this as a good thing? If you want to compile code your wrote 20 years ago, use a compiler version from 20 years ago. Forcing backwards compatability hinders a languages growth and forces it to stick by decisions that, in hindsight, may not have been the best.
- samatman 4y agoReconstructing an obsolete toolchain is a nightmare. I think it's great that there are languages like FreePascal, C, and Common Lisp, which make an effort to think in terms of decades. The existence of these languages frees everyone else up to break compatibility when they want to, because projects which need strong stability guarantees can chose these languages for that project.
- badsectoracula 4y ago> If you want to compile code your wrote 20 years ago, use a compiler version from 20 years ago. I want to compile code i wrote 20 years ago alongside code i wrote 10 years ago and yesterday, not just compile some old project. Though even compiling some old project should be as friction free as possible too. The point is that once i write some code that i know works, it should keep working in future versions so i wont have to worry about updates (which is now the case with both Free Pascal and Lazarus/LCL - i even use the development versions directly from the repository). > Forcing backwards compatability hinders a languages growth and forces it to stick by decisions that, in hindsight, may not have been the best. And ignoring backwards compatibility forces all users of the language (which unless it is a toy project, are way more numerous than the developers of the language) to waste time keeping their projects up to date instead of working on new features and/or bugfixes for their projects. Also Free Pascal does have a way to avoid this (to some extent) using modes and modeswitches - the former affect the Pascal dialect being used for a file (which can be mixed with other files with other modes) and the latter enable/alter syntactical features that would otherwise break existing code, thus allowing it to be improved piecemeal without breaking anything else. AFAIK similar features exist for some other languages (i remember reading that Rust's epochs are meant to do something like that though i don't know if files from multiple epochs can be mixed).
- steveklabnik 4y ago(Rust’s epochs we’re renamed “editions” before release. They’re per package, not per file. Projects can use packages from any edition, but all files in a given package have the same edition. This is at least partially because “file” is not really a coherent boundary in Rust.)