4
\$\begingroup\$

I noticed earlier today that the Befunge interpreter on TIO no longer functioned in quite the same way as the old version (I guess this was caused by the nexus update). As a result, one of my old answers that relied on undefined behaviour that was specific to the TIO implementation is now no longer valid. I was quite happy to just delete that answer, since it only had one upvote anyway, but I'd like to know what the recommended practice is for these situations in general.

I know my particular case is probably not that common, but I suspect a lot of the golfing languages used on this site are evolving in ways that might not always be backwards compatible and could occasionally invalidate old answers. If that happens, are people expected to update those answers to be compatible with the latest version of the interpreter? Do they just leave their answer broken? Or should they delete the answer if they can't or don't want to fix it?

\$\endgroup\$
  • \$\begingroup\$ Hm, I'm using Cat's Eye's Befunge-93 and Flaming Bovine Befunge Interpreter on both TIO v1 and TIO Nexus, and I didn't anticipate any differences. Which Befunge version is this and what answer worked before but doesn't now? \$\endgroup\$ – Dennis Dec 27 '16 at 3:08
  • \$\begingroup\$ @Dennis On TIO v1, the sequence &.@ in Befunge-93 used to output a random number when the input was empty. Assuming you were just using the default compiler options, my guess is that you're now using a different compiler, or at least a different version of the compiler when building the interpreter. \$\endgroup\$ – James Holderness Dec 27 '16 at 3:19
  • \$\begingroup\$ The compiler comes with a Makefile, but the compiler versions of gcc are indeed very different (4.8.4 vs 6.2.1). & uses an uninitialized variable that never gets written to when STDIN is empty, so I'm not surprised a different compiler would give different results. Just add a note that you answers works with this interpreter, compiled with a plain make and gcc 4.8.4. No need to delete it. \$\endgroup\$ – Dennis Dec 27 '16 at 3:44
  • \$\begingroup\$ @Dennis The answer already went into quite a bit of detail about how it worked and what kind of compiler options you might need to use to produce a compatible build. But without an easy way for people to confirm that it worked, I just didn't think that kind of answer was worth keeping. \$\endgroup\$ – James Holderness Dec 27 '16 at 4:13
  • \$\begingroup\$ One option would be to include this permalink in your answer. \$\endgroup\$ – Dennis Dec 28 '16 at 20:21
  • \$\begingroup\$ Thanks @Dennis - that's a useful trick to know. But I'm not particularly concerned about my specific answer. I just wanted to find out what the recommended policy was in general. And it seem the consensus is that it doesn't matter at all if old answers don't work. Which seems silly to me, but I don't imagine I'll be around long enough to care. \$\endgroup\$ – James Holderness Dec 28 '16 at 22:51
6
\$\begingroup\$

The old interpreter conceptually still exists, even if it's no longer accessible

We require that the interpreter predates the question. We don't require that the interpreter still be available at the time the question is asked (except for occasional questions where the ability of robbers to run the programs is important). Presumably in this case it'd be possible to track down the specific version of the interpreter that was used, and run it locally; TIO must have got it from somewhere.

Or to put it another way, languages are defined by their implementation on PPCG, so a new version of the implementation conceptually creates a new language, and doesn't cause the old language to cease to exist.

Thus, the answer doesn't become invalid simply because the interpreter has fallen off the Internet (and in this case, it probably hasn't!); it was there at one point.

\$\endgroup\$
  • 2
    \$\begingroup\$ If the interpreter is online-only, it's quite possible it doesn't exist anywhere anymore. In my particular case it wasn't so much the version of the interpreter that was being used, but the way in which it was built (I suspect I could make a reasonable guess at recreating the build parameters that the old TIO was using, but that is in no way guaranteed). \$\endgroup\$ – James Holderness Dec 27 '16 at 1:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .