Re: Guile release planning

2008-12-09 Thread Ludovic Courtès
Hi Neil!

"Neil Jerram" <[EMAIL PROTECTED]> writes:

> OK, it's clear the consensus on 1.8.x is against my suggestion, so
> I'll accept that.  And I can understand the reasons too.  I think
> perhaps it comes down to Ludovic's point about the version number
> being a hint - i.e. people already have expectations about what should
> be in the change from 1.8.x to 1.8.x+1, and mostly those expectations
> seem to be API and ABI compatibility, so it makes sense to comply with
> that.

Yep, it's just a matter of labeling, really.

> For 1.10.0, then, we just need to check that there isn't anything in
> master that isn't ready/working; if there is, it should be moved into
> a branch.

In a similar vein, some of the things developed in the 1.7 series, like
futures, were never stabilized and are simply commented out for now.
Thread support is also somewhat sloppy, as shown my recent reports
(e.g., parallel memoization).  We need to think about these as well.

> And from here on we should adopt the rule that new features
> are always developed on branches, and only merged into master when
> ready and working.  Then we should be able to release master as a new
> 1.y+2.0 whenever we see that enough new features have accumulated.
>
> How does that sound?

Sounds good to me!

Thanks,
Ludo'.





Re: Guile release planning

2008-12-08 Thread Neil Jerram
2008/11/18 Ludovic Courtès <[EMAIL PROTECTED]>:
> Hi,
>
> Andy Wingo <[EMAIL PROTECTED]> writes:
>
>> Beating a dead horse, 1.8.5 should be compatible with 1.8.3, via
>> whatever mechanism. (The actual problem in this case was elsewhere.)
>
> 1.8.5 *is* compatible with 1.8.x.
>
>> I am skeptical of pushing significant changes into stable branches. I
>> really don't want to be in the situation in which 1.8.4 works for
>> someone, but 1.8.7 does not. You might be right, Neil, about that path,
>> but it does not give me warm fuzzy feelings.
>
> Same for me, but we can surely find a reasonable trade-off.

Many thanks everyone for your replies to this thread, and sorry for my
delay in following up.

OK, it's clear the consensus on 1.8.x is against my suggestion, so
I'll accept that.  And I can understand the reasons too.  I think
perhaps it comes down to Ludovic's point about the version number
being a hint - i.e. people already have expectations about what should
be in the change from 1.8.x to 1.8.x+1, and mostly those expectations
seem to be API and ABI compatibility, so it makes sense to comply with
that.

One of my background concerns, when suggesting that we try to get more
into 1.8.x, was that if we have lots of release branches (e.g. 1.6.x,
1.8.x and 1.10.x) in use at the same time, we have to do more work to
apply fixes to all branches.  But in fact that is a lot easier now
that we use Git, so probably isn't a big worry.

For new features, then, the question becomes: what is our general
plan, from here on, for going from 1.y.x to 1.y+2.0 ?  As Greg has
said, we need to get new stuff out quicker than we have done in the
past.  Right now we have an growing pile of new stuff in Git, should
_all_ of that go into 1.10?

I guess the answer is that 1.10.0 - and more generally any new 1.y+2.0
- should include everything that we have which

- we believe is ready, i.e. in a sufficiently final form that its
API/ABI is unlikely to be broken in future

- is working.

For 1.10.0, then, we just need to check that there isn't anything in
master that isn't ready/working; if there is, it should be moved into
a branch.  And from here on we should adopt the rule that new features
are always developed on branches, and only merged into master when
ready and working.  Then we should be able to release master as a new
1.y+2.0 whenever we see that enough new features have accumulated.

How does that sound?

Neil




Re: Guile release planning

2008-11-18 Thread Ludovic Courtès
Hi,

Andy Wingo <[EMAIL PROTECTED]> writes:

> Beating a dead horse, 1.8.5 should be compatible with 1.8.3, via
> whatever mechanism. (The actual problem in this case was elsewhere.)

1.8.5 *is* compatible with 1.8.x.

> I am skeptical of pushing significant changes into stable branches. I
> really don't want to be in the situation in which 1.8.4 works for
> someone, but 1.8.7 does not. You might be right, Neil, about that path,
> but it does not give me warm fuzzy feelings.

Same for me, but we can surely find a reasonable trade-off.

Thanks,
Ludo'.





Re: Guile release planning

2008-11-18 Thread Andy Wingo
Hi,

On Mon 17 Nov 2008 00:33, [EMAIL PROTECTED] (Ludovic Courtès) writes:

>> And I assume the actually loaded libguile was version 1.8.5?  So there
>> should have been something in the library saying that it needed 1.8.3,
>> which would have caused the link to fail.  Does the libtool scheme
>> cover this; I'm afraid I just don't know.
>
> Yes it does (at the level of "supported interface numbers", not at the
> level of version numbers, though)

Beating a dead horse, 1.8.5 should be compatible with 1.8.3, via
whatever mechanism. (The actual problem in this case was elsewhere.)

I am skeptical of pushing significant changes into stable branches. I
really don't want to be in the situation in which 1.8.4 works for
someone, but 1.8.7 does not. You might be right, Neil, about that path,
but it does not give me warm fuzzy feelings.

Andy
-- 
http://wingolog.org/




Re: Guile release planning

2008-11-16 Thread Ludovic Courtès
Hello!

"Neil Jerram" <[EMAIL PROTECTED]> writes:

> But this isn't obvious to me.  _If_ the libtool versioning system
> works in practice, in the senses of
>
> - permitting linking when it ought to be permitted
>
> - failing linking when it ought to fail

It partly fails for the second point.  Examples: changing the
number/type of arguments of a function, changing the layout of a public
structure, changing the implementation of public macros, etc.  It really
requires special care to check whether a change is breaking ABI
compatibility.

> then it seems to me that a reasonable division of labour is for us
> (upstream) to take care of API compatibility, and ensuring that the
> libtool numbers are a correct description of ABI state, and for
> distributions/users to take care of any consequences of mismatched
> libtool numbers.

I consider ABI compatibility as important, too, because people don't
want to recompile everything every time a minor release is out.

Like Andy said, we should guarantee it within a given series, e.g.,
1.8.x.  After all, the version number is just a label giving users a
hint about the type of changes introduced in a version and level of
compatibility provided.  It's common for free software libraries to
remain ABI-compatible within a major series (first and second digits
unchanged), to change to the second digit when ABI breaks, and possibly
the first digit when API breaks *or* important changes are introduced.

>> This is very convenient for binary distributions like
>> Debian, and for users in general.
>
> Are you sure about that?

Yes.  Even for the few Guile C libraries I develop myself, it's boring
to recompile them when switching from 1.8 to 1.9 or one of the other
branches.  For a distribution, it means burning a lot of CPU power.

>> I think enhancements like the lazy symbol binding in modules
>> could have been in theory added in 1.8.x since it breaks neither the API
>> nor the ABI.
>
> Agreed; and I think they still can be added in 1.8.x.

Yes, but one con could be that it introduces changes that could be
visible to users that access Guile's undocumented module-fiddling API.

> Yes, but it's an addition.  As far as I understand, it's completely
> back-compatible, so I would be perfectly happy to feed this in to
> 1.8.x at some point.

>From a marketing viewpoint, the VM deserves a new version number.  :-)

In practice, it also requires users to adapt their build system to take
advantage of it.

> Of course, we should take care that we are 99% happy with the new APIs
> before releasing them, as it wouldn't be good to make lots of changes
> later.  But that's no different from the first public release of
> anything - in my view, it should work much better for us to come to
> this determination feature-by-feature, than to say arbitrarily at some
> point "everything in master" is now ready.

I agree that a feature-by-feature approach would be more reasonable.

My impression, gathered since the time when Kevin was still with us, was
that the goal was zero-breakage within a stable series, such that
1.8.x+1 would always be more portable and reliable that 1.8.x.  This
approach rules out things like the lazy duplicate symbol resolution, and
`libguile-i18n'.  Surely we could find an "in-between".

> Not necessarily, in my view.  We have an extensive test suite, and I
> think we can have some confidence in that.  After sufficient testing,
> I would see no problem with your proposed BDW-GC changes going into a
> 1.8.x release.

The BDW-GC change is ABI-incompatible, it introduces a new
dependency, augments the API and potentially introduces subtle changes
in behavior, so I would definitely change the version number for that.
Again, that version number is just a hint for users.

>> BTW, we need to consider releasing 1.8.6 one of these days!  ;-)
>
> Yes.  Do we have any particular more things to get into this?  (I
> don't think I have anything.)

I'm interested in the scm_c_read issue I raised on the list, and Linas
is interested in threading issues.  The former seems more important to
me (eh eh ;-)) because it introduces a regression.  Then, I don't think
we have to solve every single bug right now, it's already been too long
since 1.8.5.

Thanks,
Ludo'.





Re: Guile release planning

2008-11-16 Thread Ludovic Courtès
Hello,

"Neil Jerram" <[EMAIL PROTECTED]> writes:

> And I assume the actually loaded libguile was version 1.8.5?  So there
> should have been something in the library saying that it needed 1.8.3,
> which would have caused the link to fail.  Does the libtool scheme
> cover this; I'm afraid I just don't know.

Yes it does (at the level of "supported interface numbers", not at the
level of version numbers, though), provided the person who prepares the
release correctly updates the Libtool version info---which has always
been the case, of course.  :-)

Ludo'.





Re: Guile release planning

2008-11-16 Thread Greg Troxel

"Neil Jerram" <[EMAIL PROTECTED]> writes:

>> 2008/11/11 Ludovic Courtès <[EMAIL PROTECTED]>:
> But this isn't obvious to me.  _If_ the libtool versioning system
> works in practice, in the senses of
>
> - permitting linking when it ought to be permitted
>
> - failing linking when it ought to fail
>
> - providing a clear error message in the failure cases, so that the
> user knows what to do next

Except for 'clear error message', I think shared library linking (in ELF
at least) satisfies that.

> then it seems to me that a reasonable division of labour is for us
> (upstream) to take care of API compatibility, and ensuring that the
> libtool numbers are a correct description of ABI state, and for
> distributions/users to take care of any consequences of mismatched
> libtool numbers.

That is the standard model, and I think it's fine, modulo the frequency
of ABI breaks (and thus shlib major version increases).

ABI is not just shared library versions - it's all the scheme-level
interfaces that a guile-using program might call.

> I think the latter "consequences" are just having to recompile
> something against the new libguile version.  For a user who has
> already decided to use the source code version of an application, that
> should be trivial; for distributions, that's just what they do all the
> time, isn't it?

Yes, except that it's a pain if it happens often, and it more or less
constrains all the guile-using components in a system that aren't leaves
to use the same guile version.

> Are there other consequences that I'm missing?

Frequent API and ABI breaks are in my view a sign of an immature
development process, and a warning not to rely on something.  guile aims
to be a scripting language to be added to various programs, so we should
hav as a major goal being stable enough to be relied on.

> Sure, we could also take on ABI compatibility ourselves, but I think
> that overconstrains our development, and/or makes it harder.

I think that we should aim to have infrequent ABI breaks.  Every year or
so is probably ok.

>> I think enhancements like the lazy symbol binding in modules
>> could have been in theory added in 1.8.x since it breaks neither the API
>> nor the ABI.
>
> Agreed; and I think they still can be added in 1.8.x.

Sure - this is totally fine.  Programs that worked against 1.8.x, both
compile time and run time, will still work against 1.8.x+1.  But, the
reason we want to add to 1.8 is that 1.10 wasn't release 18 months ago,
about which I'll rant more later.

>> A GC change, or a rewrite of the string/char code with
>> Unicode support would be a big jump, too.  Such big jumps surely need a
>> new major release.
>
> Not necessarily, in my view.  We have an extensive test suite, and I
> think we can have some confidence in that.  After sufficient testing,
> I would see no problem with your proposed BDW-GC changes going into a
> 1.8.x release.
>
> Same for Unicode support - if the API stayed compatible.  If the API
> could not be compatible, then I would agree that we might need a new
> major release.

The biggest issue is API breaks without adequate warning.  To remove
something from the API, it should be marked deprecated in a stable
release, and then have probably 2 years pass during which all depending
programs to update and release.  The key is that one has to be able to
say in good conscience that those depending programs are lame or
unmaintained if they didn't update.

If API breaks other than via the above rules happen too often, then
guile really should support (natively) the installation of multiple
vesrions at once.  pkgsrc has "guile" which is 1.8.x and "guile16", and
guile16 installs to /usr/pkg/guile/1.6 as prefix instead of /usr/pkg.
guile simply doesn't have the mindshare to support this kind of
complexity.

An example of API problems is Linux itself.  I am working on a project
using the kernel and going from 2.6.20 to 2.6.24 is a huge change that
seems to have significant API breaks (for kernel modules).  If these
changes are as bad as they seem, this just isn't adult software
engineering and I would have to recommend against relying on such code.


I think guile's real problem has been that while people hack on head,
this hacking doesn't seem to have the clear goal of producing a stable
release.  Of course all the hard-core guile hackers run guile from
(choose-VCS-weekly :-), but programs that depend on guile should not --
they need to depend on versions which are packaged.  So my general rule
for software is that as soon as people say "you should run HEAD instead
of RELEASE, it's better", a release from head is overdue.

So I don't think there's anything wrong with the
hack-on-head-cut-stable-branches-periodically approach, except:

  1) try really hard to avoid API breaks, and take the ugliness of new
  function names with the new semantics/signatures as a lesser pain

  2) release a new stable version from head every year or so.

For 2, I suggest calling feature freez

Re: Guile release planning

2008-11-15 Thread Linas Vepstas
2008/11/15 Neil Jerram <[EMAIL PROTECTED]>:
> 2008/11/11 Ludovic Courtès <[EMAIL PROTECTED]>:

>> BTW, we need to consider releasing 1.8.6 one of these days!  ;-)
>
> Yes.  Do we have any particular more things to get into this?  (I
> don't think I have anything.)

I'm seeing frequent and wide-spread deadlocking in the
thread-enabled version of guile. I'm debugging this, but
do not yet have a patch.  I sure would like to see this
fixed in 1.8.6, and am laboring under the optimistic
assumption that I can find a patch in a few days, and
that there won't be yet another problem that shows up
after that.

--linas


Re: Guile release planning

2008-11-15 Thread Neil Jerram
2008/11/11 Ludovic Courtès <[EMAIL PROTECTED]>:
>
> Your note doesn't take binary compatibility into account, and I think
> it's an important thing, too.  I think the ideal is to maintain binary
> compatibility within a major series, as we've done (or tried to do) in
> the 1.8.x series.

(And Andy wrote "I think it needs to be guaranteed.")

But this isn't obvious to me.  _If_ the libtool versioning system
works in practice, in the senses of

- permitting linking when it ought to be permitted

- failing linking when it ought to fail

- providing a clear error message in the failure cases, so that the
user knows what to do next

then it seems to me that a reasonable division of labour is for us
(upstream) to take care of API compatibility, and ensuring that the
libtool numbers are a correct description of ABI state, and for
distributions/users to take care of any consequences of mismatched
libtool numbers.

I think the latter "consequences" are just having to recompile
something against the new libguile version.  For a user who has
already decided to use the source code version of an application, that
should be trivial; for distributions, that's just what they do all the
time, isn't it?

Are there other consequences that I'm missing?

Sure, we could also take on ABI compatibility ourselves, but I think
that overconstrains our development, and/or makes it harder.

> This is very convenient for binary distributions like
> Debian, and for users in general.

Are you sure about that?  I would expect Debian already to have
completely automatic ways of coping with this kind of thing (i.e.
libtool numbers changing).  And I've described what I think the impact
on users is above; seems quite small to me.

> I think enhancements like the lazy symbol binding in modules
> could have been in theory added in 1.8.x since it breaks neither the API
> nor the ABI.

Agreed; and I think they still can be added in 1.8.x.

> Things like `libguile-i18n' could have been added too, but
> the issue when adding C code is portability: it may be that this module
> would have caused build issues on some platforms.  Now, with more
> frequent releases, it would be reasonable to hope that such regressions
> would quickly be fixed.

Agreed, I think we can handle this.

> Another thing is actual big jumps.  I think the addition of the VM is a
> big jump.

Yes, but it's an addition.  As far as I understand, it's completely
back-compatible, so I would be perfectly happy to feed this in to
1.8.x at some point.

Of course, we should take care that we are 99% happy with the new APIs
before releasing them, as it wouldn't be good to make lots of changes
later.  But that's no different from the first public release of
anything - in my view, it should work much better for us to come to
this determination feature-by-feature, than to say arbitrarily at some
point "everything in master" is now ready.

>  A GC change, or a rewrite of the string/char code with
> Unicode support would be a big jump, too.  Such big jumps surely need a
> new major release.

Not necessarily, in my view.  We have an extensive test suite, and I
think we can have some confidence in that.  After sufficient testing,
I would see no problem with your proposed BDW-GC changes going into a
1.8.x release.

Same for Unicode support - if the API stayed compatible.  If the API
could not be compatible, then I would agree that we might need a new
major release.

> BTW, we need to consider releasing 1.8.6 one of these days!  ;-)

Yes.  Do we have any particular more things to get into this?  (I
don't think I have anything.)

 Neil




Re: Guile release planning

2008-11-15 Thread Mike Gran




> From: Neil Jerram <[EMAIL PROTECTED]>
> Hi Mike, thanks for your response.
> 
> I would propose, then, that we clearly flag (on the mailing list) an
> API change at the time when the relevant commit is made to the
> repository, and make sure that some minimum period of time elapses
> before the subsequent release.  I would hope that you could then work
> on the basis of the commit, without needing a formal pre-release.
> (Any kind of release takes a bit of time, and pre-releases might
> confuse the overall release picture.)
> 
> Would that work?

Works for me. 




Re: Guile release planning

2008-11-15 Thread Neil Jerram
2008/11/11 Linas Vepstas <[EMAIL PROTECTED]>:
>
> Any ideas for binary compatibility for the "micro" revisions?

At our "upstream" level (i.e. not trying to solve all of the
distribution-level issues), I think the theory is that this is covered
by library interface numbering.  In other words, if a change in guile
causes the new libguile not to be compatible with the previous one,
libguile's revision number should be incremented.

> I recently discovered that a library compiled against 1.8.3
> would core dump when used with an application compiled
> against 1.8.5.

And I assume the actually loaded libguile was version 1.8.5?  So there
should have been something in the library saying that it needed 1.8.3,
which would have caused the link to fail.  Does the libtool scheme
cover this; I'm afraid I just don't know.

> The linux kernel got rid of the stable/unstable branch idea,
> and it's worked really really well. (the reasons why are
> widely documented) I'm for it.

Yes, I guess my suggestion is quite similar to what the kernel did.

Thanks,
   Neil




Re: Guile release planning

2008-11-15 Thread Neil Jerram
Hi Mike, thanks for your response.

2008/11/11 Mike Gran <[EMAIL PROTECTED]>:
> If the base Guile C API remains stable, it doesn't matter to me how the 
> releases occur, because they won't break my libraries or projects.

OK.

> If the Guile C API needs to change, some sort of notification and beta 
> pre-release would be preferred, so that I can test my projects before the new 
> Guile gets yum'ed out to my group.

How exactly would a "beta pre-release" help?  It seems you have in
mind people who are building your project from source, using a
distro-updated libguile.  Even with notification/pre-release, and with
you having updated your code accordingly, one of your users might not
have downloaded your updated code.

I guess I can see, though, that it's nice if you have a bit of notice,
and hence time to prepare an update.  And then I can also see that to
do that you will want real code to work with, not just an English
description of the API change.

I would propose, then, that we clearly flag (on the mailing list) an
API change at the time when the relevant commit is made to the
repository, and make sure that some minimum period of time elapses
before the subsequent release.  I would hope that you could then work
on the basis of the commit, without needing a formal pre-release.
(Any kind of release takes a bit of time, and pre-releases might
confuse the overall release picture.)

Would that work?

 Neil




Re: Guile release planning

2008-11-12 Thread Andy Wingo
Hi Han-Wen,

On Wed 12 Nov 2008 05:41, Han-Wen Nienhuys <[EMAIL PROTECTED]> writes:

> One angle that we could take is time based release planning, like GNOME and 
> Fedora do: plan to do one or two releases per year on a rigid
> schedule.

With GNOME there is also a difference, as you know: they do not add API
in micro series, only in minor series, and never change the API or ABI
in incompatible ways. While that should be our intent, it's quite a
burden for a language implementation that exposes as much of its guts as
Guile does.

I think we should preserve Guile's ability to change API or ABI
incompatibly (while providing shims: next mail).

Releasing more often would be great, though.

Andy
-- 
http://wingolog.org/




Re: Guile release planning

2008-11-11 Thread Han-Wen Nienhuys
Neil Jerram escreveu:
> So, what do you think?  There have been discussions of release
> strategy in the past, which I've seen as 50/50 between the split
> stable and development model (which we have now) and the steady new
> feature model (described above), but I don't recall them considering
> the overall community focus angle before.  In my view, when we add in
> that angle, the steady new feature model is better.

One angle that we could take is time based release planning, like GNOME and 
Fedora do: plan to do one or two releases per year on a rigid schedule.  The 
LilyPond 2.11 vs. 2.12 jump has been delaying for too long, but I generally do 
a biweekly release, which is stable enough to reasonably be called 'stable', and
it has worked very well so far.

The precondition for this is that there is a good test-suite so we can be
sure that a release that passes the tests is good.


-- 
 Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen




Re: Guile release planning

2008-11-11 Thread Andy Wingo
Hi,

On Tue 11 Nov 2008 22:05, "Linas Vepstas" <[EMAIL PROTECTED]> writes:

> 2008/11/11 Andy Wingo <[EMAIL PROTECTED]>:
>> --enable-threads, or vice versa. Probably what happened to you?
>
> Don't think so. The 1.8.3 was from Ubuntu Hardy. I assume
> it had threads turned on

Nope, Debian builds --without-threads.

> The 1.8.5 was self-built. I did not specify --enable-threads, this
> seemed to be on automatically.

Voilà.

Andy
-- 
http://wingolog.org/




Re: Guile release planning

2008-11-11 Thread Sebastian Tennant
Quoth "Neil Jerram" <[EMAIL PROTECTED]>:
> In my view, when we add in [the community focus] angle, the steady new
> feature model is better.

As a non-developer, but committed user, I couldn't agree more.

Sebastian





Re: Guile release planning

2008-11-11 Thread Linas Vepstas
2008/11/11 Andy Wingo <[EMAIL PROTECTED]>:

>> Any ideas for binary compatibility for the "micro" revisions?
>
> I think it needs to be guaranteed.
>
>> I recently discovered that a library compiled against 1.8.3
>> would core dump when used with an application compiled
>> against 1.8.5.

Ludovic asked:
> Do you remember what caused it?

I didn't bother to investigate; I recomipled and the
problem went away.

> --enable-threads, or vice versa. Probably what happened to you?

Don't think so. The 1.8.3 was from Ubuntu Hardy. I assume
it had threads turned on; but I wasn't yet using threads at that
time, so I don't know. The 1.8.5 was self-built. I did not
specify --enable-threads, this seemed to be on automatically.

--linas




Re: Guile release planning

2008-11-11 Thread Ludovic Courtès
Hello!

"Neil Jerram" <[EMAIL PROTECTED]> writes:

> In my view, the most important thing for Guile's near-to-medium-term
> future is focus.  By that I mean having developers working on, and
> users using, as far as possible, a similar level of code.  In the
> past, we did big jumps - from 1.4.x to 1.6.x, and from 1.6.x to 1.8.x
> - which I think left users unable easily to upgrade, or perhaps just
> unsure of whether to upgrade.  From the developer point of view, they
> increased the support burden (because of some users staying with the
> old series).  Also the big jump model can be frustrating for
> developers, because it tends to mean that there is a long time between
> when a shiny new feature is ready, and when it gets released and so
> into the hands of most users.

I fully agree with this, but...

Your note doesn't take binary compatibility into account, and I think
it's an important thing, too.  I think the ideal is to maintain binary
compatibility within a major series, as we've done (or tried to do) in
the 1.8.x series.  This is very convenient for binary distributions like
Debian, and for users in general.  Thus, introducing ABI
incompatibilities should imply increasing the first or second digit of
the version number, IMO.

Maintaining ABI compatibility doesn't mean we can't add new features,
though.  In the course of the 1.8.x series, several Scheme modules were
added.  I think enhancements like the lazy symbol binding in modules
could have been in theory added in 1.8.x since it breaks neither the API
nor the ABI.  Things like `libguile-i18n' could have been added too, but
the issue when adding C code is portability: it may be that this module
would have caused build issues on some platforms.  Now, with more
frequent releases, it would be reasonable to hope that such regressions
would quickly be fixed.

Another thing is actual big jumps.  I think the addition of the VM is a
big jump.  A GC change, or a rewrite of the string/char code with
Unicode support would be a big jump, too.  Such big jumps surely need a
new major release.

BTW, we need to consider releasing 1.8.6 one of these days!  ;-)

Thanks!

Ludo'.





Re: Guile release planning

2008-11-11 Thread Andy Wingo
Hi Linas,

On Tue 11 Nov 2008 04:44, "Linas Vepstas" <[EMAIL PROTECTED]> writes:

> 2008/11/10 Neil Jerram <[EMAIL PROTECTED]>:
>>
>> I also think it will help us manage API incompatibilities better.  I
>> think our default position from now on should be to maintain
>> source-level (API) compatibility, but it is inevitable that there will
>> be exceptions to this.
>
> Any ideas for binary compatibility for the "micro" revisions?

I think it needs to be guaranteed.

> I recently discovered that a library compiled against 1.8.3
> would core dump when used with an application compiled
> against 1.8.5.

Ooh, bummer. The 1.8 series is binary-compatible (i.e. 1.8.x is
compatible with 1.8.y if x >= y), *but* only if compiled in the same
way.

An example of compiling in different ways is if you build against a
guile with --disable-threads, but then rebuild guile with
--enable-threads, or vice versa. Probably what happened to you?

> The linux kernel got rid of the stable/unstable branch idea,
> and it's worked really really well. (the reasons why are
> widely documented) I'm for it.

The linux kernel doesn't guarantee ABI /or/ API stability -- it's a
different kettle of fish.

Cheers,

Andy
-- 
http://wingolog.org/




Re: Guile release planning

2008-11-11 Thread Ludovic Courtès
Hi Linas,

"Linas Vepstas" <[EMAIL PROTECTED]> writes:

> Any ideas for binary compatibility for the "micro" revisions?
> I recently discovered that a library compiled against 1.8.3
> would core dump when used with an application compiled
> against 1.8.5.

Do you remember what caused it?

I don't remember of any ABI change in the 1.8.x series (apart from
function additions).  The with-threads and without-threads Guiles are
not ABI-compatible, though.

Thanks,
Ludo'.





Re: Guile release planning

2008-11-11 Thread Greg Troxel

  Any ideas for binary compatibility for the "micro" revisions?
  I recently discovered that a library compiled against 1.8.3
  would core dump when used with an application compiled
  against 1.8.5.  Operationally, not a big deal, really; I just
  recompiled the lib, but emotionally, it did give me that
  sinking feeling for a while, of maybe having  yet another
  hard-to-find bug, or a  system I cannot fully trust. :-(

The first question is if there was a shlib minor version bump.  But, if
it were the other way around it would be bad.  It is not expected in
general that you can use older libraries than what you built against.
But, building against 1.8.3 and then updating to 1.8.5 should be ok.


pgpZks8eh1jNE.pgp
Description: PGP signature


Re: Guile release planning

2008-11-10 Thread Linas Vepstas
2008/11/10 Neil Jerram <[EMAIL PROTECTED]>:
>
> I also think it will help us manage API incompatibilities better.  I
> think our default position from now on should be to maintain
> source-level (API) compatibility, but it is inevitable that there will
> be exceptions to this.

Any ideas for binary compatibility for the "micro" revisions?
I recently discovered that a library compiled against 1.8.3
would core dump when used with an application compiled
against 1.8.5.  Operationally, not a big deal, really; I just
recompiled the lib, but emotionally, it did give me that
sinking feeling for a while, of maybe having  yet another
hard-to-find bug, or a  system I cannot fully trust. :-(

>  the steady new feature model is better.

The linux kernel got rid of the stable/unstable branch idea,
and it's worked really really well. (the reasons why are
widely documented) I'm for it.

--linas




Re: Guile release planning

2008-11-10 Thread Mike Gran
If the base Guile C API remains stable, it doesn't matter to me how the 
releases occur, because they won't break my libraries or projects. 

If the Guile C API needs to change, some sort of notification and beta 
pre-release would be preferred, so that I can test my projects before the new 
Guile gets yum'ed out to my group.

-Mike Gran