[racket-dev] planet2 and versions

From: Ryan Culpepper (ryan at cs.utah.edu)
Date: Wed Dec 12 14:29:32 EST 2012

I'm trying to understand how things are supposed to work in planet2 
without version information.

Let's say I release a package, "webapis". Time passes, and I notice that 
Racket gets some cool new features (eg, better SSL support) that the 
"webapis" package should use. I write the code, and ...

Do I release the new code under the same package name? If so, then the 
package breaks for older versions of Racket, because IIUC planet2 has 
nothing corresponding to planet1's 'required-core-version field. And 
there doesn't seem to be a way to tell Racket "no, sorry, go back to the 
older version of the package". (Rather, there's no way for a client to 
do so. The fix would be for the package maintainer to release an 
"upgrade" that reverts to the old code.) So it seems like it would be 
really bad for me to release the new code under the name "webapis".

In other words, if a package changes its dependencies, that's an 
incompatible change for the package, and it needs a new name. Right?

Suppose I release the new code as "webapis2". And suppose there's 
another package (let's call it "scriblogify") that depends on "webapis". 
If that code wants to use "webapis2", that's a dependency change, so it 
would have to be released as "scriblogify2". There's no way to express 
"link me with the most recent compatible version of webapis*", right?

Ryan

Posted on the dev mailing list.