Re: [Chicken-hackers] [MEGA-PATCH] Modularise the compiler!

2014-08-18 Thread Felix Winkelmann
From: Peter Bex peter@xs4all.nl
Subject: Re: [Chicken-hackers] [MEGA-PATCH] Modularise the compiler!
Date: Sun, 17 Aug 2014 23:28:49 +0200

 On Sun, Aug 17, 2014 at 11:25:00PM +0200, Felix Winkelmann wrote:
  If y'all prefer, I could push my branch to call-cc, if that makes it
  easier to work on this.  I realise that sending 19 patches back and
  forth over the mailing list will be very painful :)
 
 Oh, gosh... yes, please create a branch for this. 
 
 Done!  It's called compiler-modules.

Thanks, I'd like to study this a little before we take any moves, ok?


felix

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


Re: [Chicken-hackers] [MEGA-PATCH] Modularise the compiler!

2014-08-18 Thread Peter Bex
On Mon, Aug 18, 2014 at 02:30:09PM +0200, Felix Winkelmann wrote:
 From: Peter Bex peter@xs4all.nl
 Subject: Re: [Chicken-hackers] [MEGA-PATCH] Modularise the compiler!
 Date: Sun, 17 Aug 2014 23:28:49 +0200
 
  On Sun, Aug 17, 2014 at 11:25:00PM +0200, Felix Winkelmann wrote:
   If y'all prefer, I could push my branch to call-cc, if that makes it
   easier to work on this.  I realise that sending 19 patches back and
   forth over the mailing list will be very painful :)
  
  Oh, gosh... yes, please create a branch for this. 
  
  Done!  It's called compiler-modules.
 
 Thanks, I'd like to study this a little before we take any moves, ok?

Feel free to do so.  I'm not too happy about a few things (notably the
breakage of existing eggs), so I'm not eager to push this early.
I submitted it mostly for discussion.

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: remove queues, mmap, evict and binary search from core libraries

2014-08-18 Thread Felix Winkelmann
Hello!


CR #1142 has been accepted. 

A follow-up mail will propose the further steps to be taken.


felix

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


[Chicken-hackers] [PATCH] Fix rename-file behavior on Windows when destination exists

2014-08-18 Thread Michele La Monaca
Hi,

(rename-file x y)

fails on Windows if y already exists. I think it would be better to have the
same behavior as Unix (i.e. overwrite). The attached patch does that.

Regards,
Michele
From 57098c32ce1b02834b972924c85690653b2d4fb3 Mon Sep 17 00:00:00 2001
From: Michele La Monaca mikele.chic...@lamonaca.net
Date: Mon, 18 Aug 2014 16:19:44 +0200
Subject: [PATCH] Fix rename-file behavior on Windows when destination exists

---
 chicken.h | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/chicken.h b/chicken.h
index fc40303..0624e22 100644
--- a/chicken.h
+++ b/chicken.h
@@ -1309,7 +1309,12 @@ extern double trunc(double);
 #define C_string_compare(to, from, n)   C_fix(C_memcmp(C_c_string(to), C_c_string(from), C_unfix(n)))
 #define C_string_compare_case_insensitive(from, to, n) \
 C_fix(C_memcasecmp(C_c_string(from), C_c_string(to), C_unfix(n)))
-#define C_rename_file(old, new) C_fix(rename(C_c_string(old), C_c_string(new)))
+#if defined(_WIN32) || defined(_WIN64)
+# include windows.h
+# define C_rename_file(old, new)C_fix(0 == MoveFileEx(C_c_string(old), C_c_string(new), MOVEFILE_REPLACE_EXISTING) ? -1 : 0)
+#else
+# define C_rename_file(old, new)C_fix(rename(C_c_string(old), C_c_string(new)))
+#endif
 #define C_delete_file(fname)C_fix(remove(C_c_string(fname)))
 #define C_poke_double(b, i, n)  (((double *)C_data_pointer(b))[ C_unfix(i) ] = C_c_double(n), C_SCHEME_UNDEFINED)
 #define C_poke_c_string(b, i, from, s)  (C_strlcpy((char *)C_block_item(b, C_unfix(i)), C_data_pointer(from), s), C_SCHEME_UNDEFINED)
-- 
1.8.4.3

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


Re: [Chicken-hackers] [PATCH] Fix rename-file behavior on Windows when destination exists

2014-08-18 Thread John Cowan
Michele La Monaca scripsit:

 (rename-file x y)
 
 fails on Windows if y already exists. I think it would be better to have the
 same behavior as Unix (i.e. overwrite). The attached patch does that.

+1

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
The internet is a web of tiny tyrannies giving an illusion of anarchy.
--David Rush

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


[Chicken-hackers] CR #1142 and upcoming changes

2014-08-18 Thread Felix Winkelmann
Hello!


I'm not sure how to go on with the CR-related changes. 

All eggs that use queues, mmap, binary-search and eviction will break.
This is manageable, as salmonella will point them out to us, but I'd
also like to eggify srfi-18, srfi-69, srfi-1/13/14 and perhaps srfi-4
as well and all that (including the /really/ massive changes related
to core unit restructuring) will require us constantly running after
broken eggs. The compiler-patch by Peter will add some more breakage.

I wonder whether it isn't better to postpone releasing these changes,
by creating development branches and switch in one step to CHICKEN 5,
which would have a number of advantages over doing all that in a
piecewise fashion:

- There is no need to keep around deprecated APIs, confusing both
  users and tools (e.g. chicken-doc, which would have to list multiple
  variants of the same APIs, both in core (deprecated) and in eggs.

- Any one change will break stuff; starting from a clean slate
  (sort of) with a new major release of CHICKEN would allow users
  a choice of whether to make a transition or keep working with
  CHICKEN 4. Specifically, anybody having production code will
  not like being forced to upgrade perfectly running code.

It's clear that phasing out CHICKEN 4 does have it's disadvantages
(keeping up with security fixes and critical bugs and so on), but
since the changes planned are quite pervasive, backporting will be
painful in any case, regardless of how we go on.

So I would propose to do the following:

- Starting with Peter's compiler-modularization, use a new branch in
  the core-repository (chicken-5). Drop all core support for the
  eggs in CR #1142, without going through a deprecation phase.

- Branch off the egg-repo into a 5 branch. I know that this will not
  catch problems with eggs outside of the svn repository, but it's a
  start. Here we can add the eggs related to CR #1142, of course.

- Setup a salmonalla instance for these new branches. 

- I don't know how this is handled with henrietta - do we need a
  separate CGI script running for this? It seems so, so the
  core-branch will need to have different download URLs in
  setup.defaults.

All this is mainly to safe time - keeping up backward-compatibility
hacks (wrapper-eggs, hacks in setup.defaults, etc.) just needs more
work and time and we haven't much of that, considering that we are
just a handful of part-time maintainers.

Further steps will be creating a core unit for srfi-1/13/14 stuff
that's needed there, extracting srfi-18/69/(4), restructuring the core
units, and r7rs-compatibility work.

This is just a proposal. What do others think?


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-18 Thread Peter Bex
On Mon, Aug 18, 2014 at 04:53:22PM +0200, Felix Winkelmann wrote:
 - I don't know how this is handled with henrietta - do we need a
   separate CGI script running for this? It seems so, so the
   core-branch will need to have different download URLs in
   setup.defaults.

Perhaps, I'm not sure about that.  The release-info files don't have
a way to indicate CHICKEN version either.  This needs some extra
attention, so that repositories can support multiple CHICKEN versions.

 All this is mainly to safe time - keeping up backward-compatibility
 hacks (wrapper-eggs, hacks in setup.defaults, etc.) just needs more
 work and time and we haven't much of that, considering that we are
 just a handful of part-time maintainers.

Yeah, we're pretty thinly spread right now.

I think calling this CHICKEN 5 may be a good idea.  I don't know for
sure though: adding backwards compatibility may actually be easier
in this situation.  Ripping out the SRFIs from core should be pretty
simple, but it does require updating all the eggs.  And of course
there's shitloads of eggs that are unmaintained, which will break
and never get fixed.  So all in all, starting over might be easiest.

I'd love to hear from some of the people using CHICKEN in their business
or for other Serious Projects (Kristian? Ivan? Andy?) how painful this
would be for them.

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-18 Thread John Cowan
Peter Bex scripsit:

 I'd love to hear from some of the people using CHICKEN in their business
 or for other Serious Projects (Kristian? Ivan? Andy?) how painful this
 would be for them.

I would be pretty damned inconvenienced if the numbers egg were broken for
any substantial period of time, though I have the utmost confidence in the
mission otherwise.  Then again, I figure you'll continue to maintain it.

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
The exception proves the rule.  Dimbulbs think: Your counterexample proves
my theory.  Latin students think 'Probat' means 'tests': the exception puts
the rule to the proof.  But legal historians know it means Evidence for an
exception is evidence of the existence of a rule in cases not excepted from.

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


Re: [Chicken-hackers] [PATCH] Fix rename-file behavior on Windows when destination exists

2014-08-18 Thread John Cowan
Mario Domenech Goulart scripsit:

 Shouldn't we check !defined(__CYGWIN__) here?

It can't hurt, but since 2012 Cygwin no longer defines _WIN32.

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
The whole of Gaul is quartered into three halves.
--Julius Caesar

___
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-18 Thread Mario Domenech Goulart
Hi Felix and all,

On Mon, 18 Aug 2014 16:53:22 +0200 (CEST) Felix Winkelmann 
felix.winkelm...@bevuta.com wrote:

 I'm not sure how to go on with the CR-related changes. 

 All eggs that use queues, mmap, binary-search and eviction will break.
 This is manageable, as salmonella will point them out to us, but I'd
 also like to eggify srfi-18, srfi-69, srfi-1/13/14 and perhaps srfi-4
 as well and all that (including the /really/ massive changes related
 to core unit restructuring) will require us constantly running after
 broken eggs. The compiler-patch by Peter will add some more breakage.

 I wonder whether it isn't better to postpone releasing these changes,
 by creating development branches and switch in one step to CHICKEN 5,
 which would have a number of advantages over doing all that in a
 piecewise fashion:

 - There is no need to keep around deprecated APIs, confusing both
   users and tools (e.g. chicken-doc, which would have to list multiple
   variants of the same APIs, both in core (deprecated) and in eggs.

 - Any one change will break stuff; starting from a clean slate
   (sort of) with a new major release of CHICKEN would allow users
   a choice of whether to make a transition or keep working with
   CHICKEN 4. Specifically, anybody having production code will
   not like being forced to upgrade perfectly running code.

 It's clear that phasing out CHICKEN 4 does have it's disadvantages
 (keeping up with security fixes and critical bugs and so on), but
 since the changes planned are quite pervasive, backporting will be
 painful in any case, regardless of how we go on.

 So I would propose to do the following:

 - Starting with Peter's compiler-modularization, use a new branch in
   the core-repository (chicken-5). Drop all core support for the
   eggs in CR #1142, without going through a deprecation phase.

 - Branch off the egg-repo into a 5 branch. I know that this will not
   catch problems with eggs outside of the svn repository, but it's a
   start. Here we can add the eggs related to CR #1142, of course.

 - Setup a salmonalla instance for these new branches. 

 - I don't know how this is handled with henrietta - do we need a
   separate CGI script running for this? It seems so, so the
   core-branch will need to have different download URLs in
   setup.defaults.

 All this is mainly to safe time - keeping up backward-compatibility
 hacks (wrapper-eggs, hacks in setup.defaults, etc.) just needs more
 work and time and we haven't much of that, considering that we are
 just a handful of part-time maintainers.

 Further steps will be creating a core unit for srfi-1/13/14 stuff
 that's needed there, extracting srfi-18/69/(4), restructuring the core
 units, and r7rs-compatibility work.

 This is just a proposal. What do others think?

Thanks for your message.  This is all very exciting and I'm totally for
shrinking the core.

Not related with removing units from the core, but since we are talking
about CHICKEN 5, shouldn't we consider discussing some polemic topics
like the support for Unicode and bignums in core?  Those are limitations
that recently lead to some ugly hacks (some examples in [1]) and bugs
(e.g., [2]).

[1] http://lists.gnu.org/archive/html/chicken-users/2014-07/msg00017.html

[2] http://bugs.call-cc.org/ticket/1139

Best wishes.
Mario
-- 
http://parenteses.org/mario

___
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-18 Thread Peter Bex
On Mon, Aug 18, 2014 at 10:00:46AM -0601, Alan Post wrote:
 I used Chicken Scheme to bootstrap my company.

That's really cool!

 As of a few months ago, I am no longer running any scheme code, it
 has been ported to either C or Python.

What is/was the main reason you had to rewrite to Python?  C I can
understand, for performance reasons.

 I am still maintaining my eggs, and will be happy to do so through
 this transition--one problem I ran in to prototyping, which frankly
 surprised me--was hitting code-  infrastructure-related scalability
 limitations in Chicken.  I'm happy see the effort above as a result.

It would be nice if you could elaborate on the exact things you ran into,
so that we may try and fix them.

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-18 Thread Alan Post
On Mon, Aug 18, 2014 at 06:54:48PM +0200, Peter Bex wrote:
 On Mon, Aug 18, 2014 at 10:00:46AM -0601, Alan Post wrote:
  I used Chicken Scheme to bootstrap my company.
 
 That's really cool!
 

Thank you!  It's the most successful Scheme program I've ever
written by a large margin.  I was recently trying to find a
single routine that best expressed what a bootstrap in Chicken
does, exactly, and I settled on this as a good balance of
expressiveness without requiring too much context:

  (define (alist-argv l)
(define (fn k v)
  `(,(string-append -- (symbol-string k)) ,v))
(flatten1 (map-alist fn l)))

This routine was where I took any of a number of highly experimental
data structures and passed them to programs which had well-defined
interfaces, converting an experiment to infrastructure, if you will.
One end could change to whatever it needed to be, the other end was
where I could put solved problem, and this interface let me see how
far apart those two components had gotten.

I know that's not much too look at for this list--I wanted an
example I could give to people who are afraid of Scheme.

  As of a few months ago, I am no longer running any scheme code, it
  has been ported to either C or Python.
 
 What is/was the main reason you had to rewrite to Python?  C I can
 understand, for performance reasons.
 

When we started, it was not clear how much of the codebase would be
in C vs. Python.  I was using Chicken to as a high-level language
that I could compile to C (that was a hard requirement, we needed our
application to run as a shebang line).  As we developed the
application it became clear that nearly all of it could be written
in Python, and the pieces that could not were natural to express in
C, so the need for the abstraction provided by Chicken went away.

You may be happy (or disgusted!) to know that the engine I wrote in
Scheme had been implemented, quite naturally, as a series of
promises.  Depending on the user input, it calculated any needed
dependencies on the fly to produce a correctly ordered result.

In Python, to get the same result, this engine became a four-pass
compiler.  It's certainly easier to see the structure of the thing,
but I needed the flexibility provided by Scheme to see the solution,
and the feedback I got here on the user interface for genturfa'i (my
PEG compiler) was why the hell did you write a multi-pass compiler
in Scheme?!)

A side benefit I hope to captalize on later is that my logging
infrastructure is based on association lists.  I did that because I
wanted to future-proof my logs for the time when I need to go back
to them and profile the system, but it also provided an upgrade path
from the Scheme code to Python.

  I am still maintaining my eggs, and will be happy to do so through
  this transition--one problem I ran in to prototyping, which frankly
  surprised me--was hitting code-  infrastructure-related scalability
  limitations in Chicken.  I'm happy see the effort above as a result.
 
 It would be nice if you could elaborate on the exact things you ran into,
 so that we may try and fix them.
 

Hands down the largest difficulty I had with Scheme was debugging.
You gave me a hint some time ago that adding type declarations to my
code would have made my job easier.  I haven't had a chance to explore
that, I'm sorry to report.

But my specific pain: I got to the point where I needed to debug a
compiled application, that was my deployment model.  In that I could
not produce results when I ran the code interpreted.  I put together
what tools I could for capturing and managing exceptions, so I could
get traces and debug output, but I often found myself pouring over
a couple thousand lines of trace trying to find the relevant section
of code that crashed.  The tools I had to write to make this visible
in the first place were the first ~hundreds of lines, and if I had
an invocation to genturfa'i (le PEG parser), I had to look at that
enormous, entirely machine generated, trace.

Thematically, Chicken let abstract my problem away to an amazing
degree--I would write two pieces of code, realize they were similar,
and merge them together.  I had a lot of sweet spots like this where
I kept seeing a new pattern, parameterizing it, and finding novel
uses I hadn't anticipated.

Much as Chicken let me do this, my ability to debug problems became
substantially constrained.  I found that the further I got away
from core the harder it was to connect the location of a failure
to the part of the code that needed to change.  My lack of ability
to debug was the significant technical driver that limited what I
could do in Scheme.

By way of an unfair contrast, I'm able in Python to run a collection
of jobs, collect any failures, and jump around to each of the stack
traces and do a post-mortem debug.  I can safely attach information
as any exception heads up the stack but still debug at the original
failure point.

If I, personally, were going to work on one 

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

2014-08-18 Thread Alan Post
On Mon, Aug 18, 2014 at 04:41:54PM +, Mario domenech Goulart wrote:
 Hi Felix and all,
 
 On Mon, 18 Aug 2014 16:53:22 +0200 (CEST) Felix Winkelmann 
 felix.winkelm...@bevuta.com wrote:
 
  This is just a proposal. What do others think?
 
 Thanks for your message.  This is all very exciting and I'm totally for
 shrinking the core.
 
 Not related with removing units from the core, but since we are talking
 about CHICKEN 5, shouldn't we consider discussing some polemic topics
 like the support for Unicode and bignums in core?  Those are limitations
 that recently lead to some ugly hacks (some examples in [1]) and bugs
 (e.g., [2]).
 
 [1] http://lists.gnu.org/archive/html/chicken-users/2014-07/msg00017.html
 
 [2] http://bugs.call-cc.org/ticket/1139
 

Yes please.  The current way we're doing this is needlessly complex.
I don't think I'll ever have as much fun writing parsers as I did
when I could use ASCII character tables, but the one remaining use
case I have for solving problems in ASCII is preventing a terminal
snow crash when dumping core--the program is already on it's way out
and can solve encoding problems maƱana.

That use case hardly justifies the work it takes to get Chicken to
be a first class citizen.  I would generally vote we take the most
frequenly used eggs and integrate them in to core, but as I fully
appreciate the argument against doing so I sure would like to ask
instead for utf-8 and numbers.

Thank you,

-a
-- 
analytics in physical space: http://venueview.co/
my personal website: http://c0redump.org/

___
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-18 Thread Daniel Leslie
Sadly, it seems that the last attempt at connecting a decent debugger to
Chicken has long since been abandoned:
http://wiki.call-cc.org/eggref/3/mayo

I, too, regularly end up hitting a wall with any decent sized application
that also relies on native compilation and interfacing with external
components due to the lack of visual source-level debugging. At some point
it becomes incredibly cumbersome to wade through stacks of generated C
code; and it seems like it would be reasonable to expect to be able to
debug Chicken applications without becoming somewhat of an expert in how
chicken operates at a low-level. By way of example, there's more often than
not no need to understand how V8 works in order to have source-level
debugging of Javascript.

OTOH, the trace egg is oh-so-close; I've considered integrating support
with it into Emacs, so as to have visual source-level debugging.
http://wiki.call-cc.org/eggref/4/trace

-Dan


On Mon, Aug 18, 2014 at 11:13 AM, Alan Post alanp...@sunflowerriver.org
wrote:

 On Mon, Aug 18, 2014 at 06:54:48PM +0200, Peter Bex wrote:
  On Mon, Aug 18, 2014 at 10:00:46AM -0601, Alan Post wrote:
   I used Chicken Scheme to bootstrap my company.
 
  That's really cool!
 

 Thank you!  It's the most successful Scheme program I've ever
 written by a large margin.  I was recently trying to find a
 single routine that best expressed what a bootstrap in Chicken
 does, exactly, and I settled on this as a good balance of
 expressiveness without requiring too much context:

   (define (alist-argv l)
 (define (fn k v)
   `(,(string-append -- (symbol-string k)) ,v))
 (flatten1 (map-alist fn l)))

 This routine was where I took any of a number of highly experimental
 data structures and passed them to programs which had well-defined
 interfaces, converting an experiment to infrastructure, if you will.
 One end could change to whatever it needed to be, the other end was
 where I could put solved problem, and this interface let me see how
 far apart those two components had gotten.

 I know that's not much too look at for this list--I wanted an
 example I could give to people who are afraid of Scheme.

   As of a few months ago, I am no longer running any scheme code, it
   has been ported to either C or Python.
 
  What is/was the main reason you had to rewrite to Python?  C I can
  understand, for performance reasons.
 

 When we started, it was not clear how much of the codebase would be
 in C vs. Python.  I was using Chicken to as a high-level language
 that I could compile to C (that was a hard requirement, we needed our
 application to run as a shebang line).  As we developed the
 application it became clear that nearly all of it could be written
 in Python, and the pieces that could not were natural to express in
 C, so the need for the abstraction provided by Chicken went away.

 You may be happy (or disgusted!) to know that the engine I wrote in
 Scheme had been implemented, quite naturally, as a series of
 promises.  Depending on the user input, it calculated any needed
 dependencies on the fly to produce a correctly ordered result.

 In Python, to get the same result, this engine became a four-pass
 compiler.  It's certainly easier to see the structure of the thing,
 but I needed the flexibility provided by Scheme to see the solution,
 and the feedback I got here on the user interface for genturfa'i (my
 PEG compiler) was why the hell did you write a multi-pass compiler
 in Scheme?!)

 A side benefit I hope to captalize on later is that my logging
 infrastructure is based on association lists.  I did that because I
 wanted to future-proof my logs for the time when I need to go back
 to them and profile the system, but it also provided an upgrade path
 from the Scheme code to Python.

   I am still maintaining my eggs, and will be happy to do so through
   this transition--one problem I ran in to prototyping, which frankly
   surprised me--was hitting code-  infrastructure-related scalability
   limitations in Chicken.  I'm happy see the effort above as a result.
 
  It would be nice if you could elaborate on the exact things you ran into,
  so that we may try and fix them.
 

 Hands down the largest difficulty I had with Scheme was debugging.
 You gave me a hint some time ago that adding type declarations to my
 code would have made my job easier.  I haven't had a chance to explore
 that, I'm sorry to report.

 But my specific pain: I got to the point where I needed to debug a
 compiled application, that was my deployment model.  In that I could
 not produce results when I ran the code interpreted.  I put together
 what tools I could for capturing and managing exceptions, so I could
 get traces and debug output, but I often found myself pouring over
 a couple thousand lines of trace trying to find the relevant section
 of code that crashed.  The tools I had to write to make this visible
 in the first place were the first ~hundreds of lines, and if I had
 an invocation 

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

2014-08-18 Thread Oleg Kolosov
On 08/18/14 20:41, Mario Domenech Goulart wrote:
 Hi Felix and all,
 
 On Mon, 18 Aug 2014 16:53:22 +0200 (CEST) Felix Winkelmann 
 felix.winkelm...@bevuta.com wrote:
 
 I'm not sure how to go on with the CR-related changes. 

 I wonder whether it isn't better to postpone releasing these changes,
 by creating development branches and switch in one step to CHICKEN 5,
 which would have a number of advantages over doing all that in a
 piecewise fashion:

 
 Not related with removing units from the core, but since we are talking
 about CHICKEN 5, shouldn't we consider discussing some polemic topics
 like the support for Unicode and bignums in core?  Those are limitations
 that recently lead to some ugly hacks (some examples in [1]) and bugs
 (e.g., [2]).
 

Or we can declare that CHICKEN 5 != 5.0 and go on with the breakage. I'm
concerned that trying to fit everything into 5.0 will never finish -
there could be lengthy discussions about proposed features and no
action. Personally, I think that modularizing the core is of utmost
importance now, fixing eggs and adding features could be postponed to
some later point releases.

-- 
Regards, Oleg

___
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-18 Thread Felix Winkelmann
From: Oleg Kolosov bazur...@gmail.com
Subject: Re: [Chicken-hackers] CR #1142 and upcoming changes
Date: Mon, 18 Aug 2014 23:08:23 +0400

 On 08/18/14 20:41, Mario Domenech Goulart wrote:
 Hi Felix and all,
 
 On Mon, 18 Aug 2014 16:53:22 +0200 (CEST) Felix Winkelmann 
 felix.winkelm...@bevuta.com wrote:
 
 I'm not sure how to go on with the CR-related changes. 

 I wonder whether it isn't better to postpone releasing these changes,
 by creating development branches and switch in one step to CHICKEN 5,
 which would have a number of advantages over doing all that in a
 piecewise fashion:

 
 Not related with removing units from the core, but since we are talking
 about CHICKEN 5, shouldn't we consider discussing some polemic topics
 like the support for Unicode and bignums in core?  Those are limitations
 that recently lead to some ugly hacks (some examples in [1]) and bugs
 (e.g., [2]).
 
 
 Or we can declare that CHICKEN 5 != 5.0 and go on with the breakage. I'm
 concerned that trying to fit everything into 5.0 will never finish -
 there could be lengthy discussions about proposed features and no
 action. Personally, I think that modularizing the core is of utmost
 importance now, fixing eggs and adding features could be postponed to
 some later point releases.

Very true - I fully agree with that. I think we have enough of core
support for R7RS right now and the general direction is to remove
stuff (i.e. move to eggs) instead of adding anything. We also should
postpone further clean ups to a later point. 

Adding bignums + utf8 will also be much easier with a smaller and
and restructured core system, of course.

(this all assumes we don't go mad while ripping everything apart...)


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-18 Thread John Cowan
Felix Winkelmann scripsit:

 All eggs that use queues, mmap, binary-search and eviction will break.
 This is manageable, as salmonella will point them out to us, but I'd
 also like to eggify srfi-18, srfi-69, srfi-1/13/14 and perhaps srfi-4
 as well and all that (including the /really/ massive changes related
 to core unit restructuring) will require us constantly running after
 broken eggs. 

A couple of simple things come to mind.

1) Deprecate all mechanisms for creating units.  Provide a compiler switch
used when building Chicken to shut off this warning.

2) Deprecate all mechanisms for loading units except `use` (and presumably
`require-extension`, which is equivalent to it).  `Use` is safe because
it will load either a unit or a module without problem.  (Which eggs,
if any, are not modules at this point?)

3) Set up the meta language so that if it attempts to require an egg that
is present as a unit, it just uses the unit.

 I wonder whether it isn't better to postpone releasing these changes,
 by creating development branches and switch in one step to CHICKEN 5,
 which would have a number of advantages over doing all that in a
 piecewise fashion:

I'm agnostic about this.  There will be a lot of eggs that will have
to be maintained in two versions, no matter what.  I think we should
continue to think about ways to ameliorate that.

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
In computer science, we stand on each other's feet.  --Brian K. Reid

___
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-18 Thread Ivan Raikov
I do think it is time for an overhaul, and creating a  new major version
branch is the right way to go about it.
Obviously it would take some time to port everything, but it seems that the
changes will be simpler than during the hygienic macros transition.

  Ivan
 On Aug 19, 2014 12:09 AM, Peter Bex peter@xs4all.nl wrote:

 On Mon, Aug 18, 2014 at 04:53:22PM +0200, Felix Winkelmann wrote:
  - I don't know how this is handled with henrietta - do we need a
separate CGI script running for this? It seems so, so the
core-branch will need to have different download URLs in
setup.defaults.

 Perhaps, I'm not sure about that.  The release-info files don't have
 a way to indicate CHICKEN version either.  This needs some extra
 attention, so that repositories can support multiple CHICKEN versions.

  All this is mainly to safe time - keeping up backward-compatibility
  hacks (wrapper-eggs, hacks in setup.defaults, etc.) just needs more
  work and time and we haven't much of that, considering that we are
  just a handful of part-time maintainers.

 Yeah, we're pretty thinly spread right now.

 I think calling this CHICKEN 5 may be a good idea.  I don't know for
 sure though: adding backwards compatibility may actually be easier
 in this situation.  Ripping out the SRFIs from core should be pretty
 simple, but it does require updating all the eggs.  And of course
 there's shitloads of eggs that are unmaintained, which will break
 and never get fixed.  So all in all, starting over might be easiest.

 I'd love to hear from some of the people using CHICKEN in their business
 or for other Serious Projects (Kristian? Ivan? Andy?) how painful this
 would be for them.

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

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

___
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-18 Thread Mario Domenech Goulart
Hi Felix, Oleg and all,

On Mon, 18 Aug 2014 22:43:19 +0200 (CEST) Felix Winkelmann 
felix.winkelm...@bevuta.com wrote:

 From: Oleg Kolosov bazur...@gmail.com
 Subject: Re: [Chicken-hackers] CR #1142 and upcoming changes
 Date: Mon, 18 Aug 2014 23:08:23 +0400

 On 08/18/14 20:41, Mario Domenech Goulart wrote:
 
 On Mon, 18 Aug 2014 16:53:22 +0200 (CEST) Felix Winkelmann 
 felix.winkelm...@bevuta.com wrote:
 
 I'm not sure how to go on with the CR-related changes. 

 I wonder whether it isn't better to postpone releasing these changes,
 by creating development branches and switch in one step to CHICKEN 5,
 which would have a number of advantages over doing all that in a
 piecewise fashion:

 
 Not related with removing units from the core, but since we are talking
 about CHICKEN 5, shouldn't we consider discussing some polemic topics
 like the support for Unicode and bignums in core?  Those are limitations
 that recently lead to some ugly hacks (some examples in [1]) and bugs
 (e.g., [2]).
 
 
 Or we can declare that CHICKEN 5 != 5.0 and go on with the breakage. I'm
 concerned that trying to fit everything into 5.0 will never finish -
 there could be lengthy discussions about proposed features and no
 action. Personally, I think that modularizing the core is of utmost
 importance now, fixing eggs and adding features could be postponed to
 some later point releases.

 Very true - I fully agree with that. I think we have enough of core
 support for R7RS right now and the general direction is to remove
 stuff (i.e. move to eggs) instead of adding anything. We also should
 postpone further clean ups to a later point. 

 Adding bignums + utf8 will also be much easier with a smaller and
 and restructured core system, of course.

 (this all assumes we don't go mad while ripping everything apart...)

Sorry for the sudden jump to those topics. :-)

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.

Best wishes.
Mario
-- 
http://parenteses.org/mario

___
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-18 Thread John Cowan
Mario Domenech Goulart scripsit:

 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?

A new major release doesn't necessarily have to bring immediate benefit.
It's only now with Python 3.4 (arguably 3.3) that parity with Python
2.7 was achieved.  There is still no recommendation to convert working
2.7 applications (as opposed to libraries) and there may never be.

If breaking backward compatibility (the purpose of a major release)
provides a better platform for future innovation, that's enough
justification in general; whether that is true in this case, I don't know.

 R7RS support [...] Unicode and bignums 

Those are the obvious candidates for core extensions.

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
Here lies the Christian, judge, and poet Peter,
Who broke the laws of God and man and metre.

___
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-18 Thread John Cowan
John Cowan scripsit:

 It's only now with Python 3.4 (arguably 3.3) that parity with Python
 2.7 was achieved.  There is still no recommendation to convert working
 2.7 applications (as opposed to libraries) and there may never be.

Here's a FAQ about the Python 2 to Python 3 transition, one of the main
foci of which was cleaning up the string model.  I recommend the first
three sections, down to the What actually changed in the text model
heading.

http://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.html

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
Does anybody want any flotsam? / I've gotsam.
Does anybody want any jetsam? / I can getsam.
--Ogden Nash, No Doctors Today, Thank You

___
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-18 Thread Ivan Raikov
 I would think that support for Chicken 2  3 should be dropped after a
Chicken 5 branch is made.
If anyone desperately needs Chicken 3, would it not be better to migrate
the Chicken 3 stuff to another server?
I had also implicitly assumed that the modularisation changes would help
bring full R7RS support to core.
Is this not the case? What are the goals for a Chicken 5 release?

On Tue, Aug 19, 2014 at 9:03 AM, Mario Domenech Goulart 
mario.goul...@gmail.com wrote:

 Sorry for the sudden jump to those topics. :-)

 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.

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