Ever noticed that when you load an old cart, sometimes it won't load because of API changes? You can see this for yourself if you try loading the popular cart "rougeris". After rougeris's release, 'do' was changed to not work with 'if' and vice versa. On desktop, fixing this is as easy as replacing 'do' with 'then', but on mobile or bbs, not as easy.
Now for the meat of this argument:
Why not make it so that old carts use an older version if pico-8? This doesn't need to be updated for every old cart, but maybe, when you submit a bbs cart from when/if this is changed to an API freeze, the bbs logs what version your cart uses, and when loaded, grabs a specific version of p8, loads it, then runs the cart in it, that would eliminate the possibility of future obsolete carts!
There's really no excuse not to do it, or not to even consider it. Every version of p8 (minus the mysterious "rc") is available to p8 owners on the download page under older versions.
> There's really no excuse not to do it
While I agree this would be nice, there are indeed reasons/excuses.
I'm pretty sure zep has a day job. He also has a family. PICO-8 is a free-time thing. His time is at a premium and it's already split between PICO-8 and Picotron (and sometimes Voxatron).
Also, it's always been made clear that PICO-8 is not a final product. I'm pretty sure zep intends for it to finally be a final product some time this year or next, but functionality has shifted over time and he's really done his best to keep most stuff backwards-compatible without painting himself into a bad corner in the future. It's only on very rare occasions that the latter requires a breaking change. He does test old carts against new releases, which he can do thanks to the BBS cart ecosystem, and quite often the author will be notified and the cart will be fixed. If not, other community member(s) can post fixes themselves, since all carts are open-source.
That being said, this is a feature the final, full release will need going forward. Once released, it will need to be able to play old carts, either by remaining backwards-compatible or by running with some shimming to behave the way the cart's version expects. It's not a terrible time to start trying to implement the system, since we're supposedly drawing closer to release.
TL;DR: Big ask, might not get done, but it probably does need to be done eventually.
@Felice fair points. I'm not saying it's has to be done now, I understand that zep is a busy guy. I'm just putting it out there as a consideration moving forward.
Right now, the only real apparent compatibility issue with old carts is the removal of if/do loops (was replaced with if/then).
[Please log in to post a comment]