On Fri, Jun 04, 2004 at 01:33:56PM -0700, Stas Bekman wrote:

> >>Should it be s/APR_/APR_FILETYPE_/ and s/APR_/APR_FINFO_/ or something else?
> >>Like so?

> >Do that on a clean checkout, compile, and check the diff for sanity.  I don't
> >think there's much else to it.

> Thanks Noah, but this is exactly why I didn't do that and asked here first. 
> It's not about just changing the API, since you will break any application 
> that relies on that. You must provide backwards compatibility which should 
> be deprecated and will be cut off at 1.0 release. That's the part I'm not 
> sure about.

You can add/remove anything in a major release, and I think it's reasonable to
treat CVS HEAD as "what could suddenly become 1.0".  Projects seeking backward
compatibility should be using the latest 0.9.X branch.  That's my understanding
of the policy, anyway.

That said, it's not particularly harmful for existing projects to keep using
this old API, so maintaining it in parallel for convenience through 2.0 might be
worthy.  Perhaps something like the following for each removed symbol?

static const apr_filetype_e APR_REG __attribute__((deprecated)) = 
APR_FILETYPE_REG;

Then add some configuration / #define stuff to only set the attribute for
compatible compilers.

If you also hope to do this to 0.9.X, then you could do something like the above
to comply with the versioning rules.

Reply via email to