Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Felix Winkelmann
 In fact, as a user, I was just trying to bring some topics that are
 practical issues and that we could piggyback with the breaking changes
 to make a major release.
 
 I'm not sure reorganizing the core and making it smaller justifies a
 major release.  I understand some changes caused by the core
 reorganization may break code, but I'm looking at major releases from a
 user standpoint.  What immediate benefit do those changes bring for
 users?  Maybe R7RS support?  Are those changes worth the breakage?
 
 Please, note that I'm not against those changes.  Not at all,
 absolutely.  I'm totally for them.  I just wonder if they justify a
 major release and and all the burden to maintain another major version.
 
 I mentioned Unicode and bignums because, in my opinion, they are quite
 important for practical applications, and the support CHICKEN provides
 for them at the moment is not very appealing.  Since you mentioned a new
 major release, why not making them part of it?  Of course the obvious,
 realistic and straight-to-the-point answers are lack of manpower and
 lack of consensus on those topics, I know.

I understand your concerns, but doing all the planned changes piece by
piece will be a massive maintenance effort and the compatibility hacks
required to have something halfway working during the transition will
be even more. I also hate forcing users into upgrading - I always
detested this in other software and would like to spare those that
need a working system, for whatever reason.

I also don't see a reason _not_ to consider adding the features you
talk about, but it shouldn't be the main driving force. If we can
provide support for this, fine! But someone has to implement it (of
course)

So I think: let's just see how well we get along. We should definitely
look into what would be required for bignum/unicode support, if
someone is willing to evaluate this.


felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Peter Bex
On Tue, Aug 19, 2014 at 10:20:56AM +0200, Felix Winkelmann wrote:
 I understand your concerns, but doing all the planned changes piece by
 piece will be a massive maintenance effort and the compatibility hacks
 required to have something halfway working during the transition will
 be even more. I also hate forcing users into upgrading - I always
 detested this in other software and would like to spare those that
 need a working system, for whatever reason.

To avoid doing this again soon, I think the other change you suggested
should definitely be included: the reworking of internal libraries by
splitting them up.  Perhaps you already assumed this would be included,
I don't think I have seen this mentioned yet so I wanted to put it out
there.

 I also don't see a reason _not_ to consider adding the features you
 talk about, but it shouldn't be the main driving force. If we can
 provide support for this, fine! But someone has to implement it (of
 course)
 
 So I think: let's just see how well we get along. We should definitely
 look into what would be required for bignum/unicode support, if
 someone is willing to evaluate this.

No problem @ bignums.  I don't know much about unicode, so that should
probably be looked at by someone else.  A simple thing we could include
would be to reject all strings that have invalid UTF-8 encoding, like
Postgres does that.  I always really appreciated this feature of Postgres:
it ensures that you don't get invalid data in your system, and prevents
pollution and getting in character set hell, like happens all the time
in MySQL: 
https://www.bluebox.net/insight/blog-article/getting-out-of-mysql-character-set-hell

Adding rejection of non-UTF-8 strings would make the transition to a
full Unicode system less painful (and perhaps make it possible to do
it in a non-breaking way).  I'm not sure how difficult this would be,
though: all string mutation procedures should have a check that they
won't create invalid strings by setting characters (bytes).

Cheers,
Peter
-- 
http://www.more-magic.net

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Felix Winkelmann
  I would think that support for Chicken 2  3 should be dropped after a
 Chicken 5 branch is made.

Yes, that sounds reasonable.

 I had also implicitly assumed that the modularisation changes would help
 bring full R7RS support to core.

I think it is R7RS support will be in an egg for the time being. Once
we figure out the remaining issues, this should be usable in a rather
seamless way.

 Is this not the case? What are the goals for a Chicken 5 release?

Mostly cleaning up. Shrinking the core system will make maintenance
easier, and reduces the need to follow our usual patch-review process.
It also allows to use alternatives to cast-in-concrete APIs (like
srfi-18) in an easier way. A smaller core system makes it also easier
to use it on embedded systems, in particular on systems that don't
need loads of external libraries.

Restructuring the libraries is required to make things easier for
users, especially newcomers. The current library structure is mostly
arbitrary.  This is not a problem for long-time users, but where what
procedure can be found is currently very unintuitive - one just has to
know about it, or use tools like chicken-doc all the time. 

Finally, using more modules in core catches many errors related to
wrong naming, or unintended cross-references between library units.

Oh, and should we ever want to have a fully transparent import that
always does The Right Thing, then a cleaned up and more modularized
core will be essential to that.

We really need to address the cruft that has accumulated over more
than a decade...


felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Felix Winkelmann
 To avoid doing this again soon, I think the other change you suggested
 should definitely be included: the reworking of internal libraries by
 splitting them up.  Perhaps you already assumed this would be included,
 I don't think I have seen this mentioned yet so I wanted to put it out
 there.

Yes, that was implied.
 
 No problem @ bignums.  I don't know much about unicode, so that should
 probably be looked at by someone else.  A simple thing we could include
 would be to reject all strings that have invalid UTF-8 encoding, like
 Postgres does that.  I always really appreciated this feature of Postgres:
 it ensures that you don't get invalid data in your system, and prevents
 pollution and getting in character set hell, like happens all the time
 in MySQL: 
 https://www.bluebox.net/insight/blog-article/getting-out-of-mysql-character-set-hell
 
 Adding rejection of non-UTF-8 strings would make the transition to a
 full Unicode system less painful (and perhaps make it possible to do
 it in a non-breaking way).  I'm not sure how difficult this would be,
 though: all string mutation procedures should have a check that they
 won't create invalid strings by setting characters (bytes).

Sounds like a good first step, even though I personally would prefer
UCS-4 strings (constant lookup + modification and so on). But that
seems to be unpopular, AFAICT...


felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Peter Bex
On Tue, Aug 19, 2014 at 05:21:06PM +0200, Felix Winkelmann wrote:
   I would think that support for Chicken 2  3 should be dropped after a
  Chicken 5 branch is made.
 
 Yes, that sounds reasonable.

I didn't know we still supported CHICKEN 2 and 3.  In what way is that
done?  AFAIK the server-side component for chicken-setup is no longer
active.  Is it?

  I had also implicitly assumed that the modularisation changes would help
  bring full R7RS support to core.
 
 I think it is R7RS support will be in an egg for the time being. Once
 we figure out the remaining issues, this should be usable in a rather
 seamless way.

Works for me.  I do think, however, that we should take a good look
at the r7rs library names, and probably adopt them wholesale, for the
parts that we implement.  This would make CHICKEN easier to use for
people using multiple Schemes, and for newbies coming from other Schemes.
It would also ease our burden at figuring out good names: half of the
stuff will suddenly *have* a good name.

Note that this does _not_ imply we should implement things that we
don't already have, just move the things we do have under the names
defined by R7RS.  If we have something that's close to R7RS but not
identical, we may decide to tweak it to match R7RS.  Except for
R7RS-style parameters ;)

 Finally, using more modules in core catches many errors related to
 wrong naming, or unintended cross-references between library units.
 
 Oh, and should we ever want to have a fully transparent import that
 always does The Right Thing, then a cleaned up and more modularized
 core will be essential to that.
 
 We really need to address the cruft that has accumulated over more
 than a decade...

proper cleanups are very dangerous.  However, if done right, they can
make life better.

Cheers,
Peter
-- 
http://www.more-magic.net

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Peter Bex
On Tue, Aug 19, 2014 at 05:21:06PM +0200, Felix Winkelmann wrote:
 Mostly cleaning up. Shrinking the core system will make maintenance
 easier, and reduces the need to follow our usual patch-review process.

I fully agree that the patch review process would be untenable for
the kind of massive large-scale overhaul we're planning on, but I
also am a little afraid we'll lose the benefits it brings.

I liked the fact that we spread knowledge through the patch review
process: I really think we have started to make some progress towards
getting more people up to speed about various parts of core.  At least,
I know more about the GC and the expander, and Evan knows more about
the scrutinizer.

If we completely change everything without going through the list that
means we might get lots of new bugs (which we will anyway, I don't make
any illusions about that, but it will be less bad if we have someone review
the stuff), and nobody but the person who wrote the code will know how
it works.  Finally, by reviewing, we'll get useful feedback on alternative
approaches to a particular problem (and typical bikesheds, of course.
But in this process, we have the freedom to ignore anyone who doesn't
submit patches).

Cheers,
Peter
-- 
http://www.more-magic.net

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread John Cowan
Peter Bex scripsit:

 Note that this does _not_ imply we should implement things that we
 don't already have, just move the things we do have under the names
 defined by R7RS.  If we have something that's close to R7RS but not
 identical, we may decide to tweak it to match R7RS.  Except for
 R7RS-style parameters ;)

+1, but what's wrong with R7RS parameters?  They are entirely compatible
with Chicken parameters AFAICT; the ability to mutate a parameter isn't
present in R7RS, but R7RS documents that the effect of (p x) where
p is a parameter is implementation-defined.

The reason WG1 did that is so as not to have to worry about whether
mutation in a parent thread, either before or after a child thread is
created or started, affects the parameter value in the child, and per
contra whether mutation in the child affects the parent.  Different
Schemes behave differently in these respects, as SRFI 39 documents.
In Chicken, child threads capture the current value in the parent
when they are created, and after that the parameters in the threads
are independent.  Leaving mutation explicitly implementation-dependent
avoids having to resolve this issue in portable code.

 proper cleanups are very dangerous.  However, if done right, they can
 make life better.

Emphatic +1.

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
And they pack their lyrics till they're so damn dense
You could put 'em in your yard and you could use 'em for a fence.
  --Alan Chapman, Everybody Wants to Be Sondheim

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Peter Bex
On Tue, Aug 19, 2014 at 01:19:35PM -0400, John Cowan wrote:
 Peter Bex scripsit:
 
  Note that this does _not_ imply we should implement things that we
  don't already have, just move the things we do have under the names
  defined by R7RS.  If we have something that's close to R7RS but not
  identical, we may decide to tweak it to match R7RS.  Except for
  R7RS-style parameters ;)
 
 +1, but what's wrong with R7RS parameters?  They are entirely compatible
 with Chicken parameters AFAICT; the ability to mutate a parameter isn't
 present in R7RS, but R7RS documents that the effect of (p x) where
 p is a parameter is implementation-defined.

As I understood Felix's comments at the time, R7RS parameterize behaves
differently with threads.  However, after re-reading the relevant section
it appears that CHICKEN's parameterize is indeed perfectly compatible
with R7RS.  Maybe Felix can explain the nuances I missed again.

It's unfortunate that R7RS mentioned threads here at all: it doesn't say
anything about threads *anywhere* else, in the whole document.  It
should've left this undefined: threads are out of scope for the document.

 In Chicken, child threads capture the current value in the parent
 when they are created, and after that the parameters in the threads
 are independent.  Leaving mutation explicitly implementation-dependent
 avoids having to resolve this issue in portable code.

The way parameters and threads work right now is perfect for CHICKEN,
and there are various libraries that make use of this (most notably
Spiffy, which relies on it heavily).

Cheers,
Peter
-- 
http://www.more-magic.net

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Felix Winkelmann
 I didn't know we still supported CHICKEN 2 and 3.  In what way is that
 done?  AFAIK the server-side component for chicken-setup is no longer
 active.  Is it?

I wouldn't know myself, to be honest.


felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Felix Winkelmann
From: Peter Bex peter@xs4all.nl
Subject: Re: [Chicken-hackers] CR #1142 and upcoming changes
Date: Tue, 19 Aug 2014 18:23:22 +0200

 On Tue, Aug 19, 2014 at 05:21:06PM +0200, Felix Winkelmann wrote:
 Mostly cleaning up. Shrinking the core system will make maintenance
 easier, and reduces the need to follow our usual patch-review process.
 
 I fully agree that the patch review process would be untenable for
 the kind of massive large-scale overhaul we're planning on, but I
 also am a little afraid we'll lose the benefits it brings.

I'm not saying the changes for CHICKEN-5 should not be reviewed - I
was talking about stuff that will be removed from the code (the/some
srfi units, for example). Everything happening to the core system
still needs the review process.


felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Felix Winkelmann
 The way parameters and threads work right now is perfect for CHICKEN,
 and there are various libraries that make use of this (most notably
 Spiffy, which relies on it heavily).

It's also the only behaviour that makes sense, IMHO.


felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread John Cowan
Felix Winkelmann scripsit:

 It is written:

I'm glad to see you are treating R7RS-small as scripture!

 If an implementation supports multiple threads, then parameterize
 must not change the associated values of any parameters in any thread
 other than the current thread and threads created inside body.
 
 It's the last part that I got wrong: I incorrectly assumed it may
 _not_ influence the values in threads created inside body.

That assumption was incorrect, yes.  `Parameterize` obviously affects
parameter values in the current thread (or it would be useless), and may
affect values in child threads created within the body.  We don't spell
out that it must not do so after the thread is created: exceptions are
hard enough without exceptions to exceptions.

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
But the next day there came no dawn, and the Grey Company passed on
into the darkness of the Storm of Mordor and were lost to mortal sight;
but the Dead followed them.  --The Passing of the Grey Company

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread John Cowan
Felix Winkelmann scripsit:

 It's also the only behaviour that makes sense, IMHO.

Well, I think doing parameters in Chicken style but with only immutable
parameters is also a reasonable choice.  Currently, no Scheme I know of
makes that choice.  You can always portably emulate multiple parameters
by parameterizing a mutable box, if you don't care about threads.

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
If I have seen farther than others, it is because I was standing on
the shoulders of giants.  --Isaac Newton

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] CR #1142 and upcoming changes

2014-08-19 Thread Ivan Raikov
The Chicken wiki still has an index of Chicken 3 eggs, although I do think
chicken-setup is no longer operational.
Perhaps now would be a good time to clean the wiki of vestigial references
to 2  3.
I also like the idea of adopting the r7rs library names.

   -Ivan


On Wed, Aug 20, 2014 at 1:13 AM, Peter Bex peter@xs4all.nl wrote:


 I didn't know we still supported CHICKEN 2 and 3.  In what way is that
 done?  AFAIK the server-side component for chicken-setup is no longer
 active.  Is it?


 Works for me.  I do think, however, that we should take a good look
 at the r7rs library names, and probably adopt them wholesale, for the
 parts that we implement.  This would make CHICKEN easier to use for
 people using multiple Schemes, and for newbies coming from other Schemes.
 It would also ease our burden at figuring out good names: half of the
 stuff will suddenly *have* a good name.


___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers