Re: Adding Identities to Peval

2012-02-16 Thread David Kastrup
David Kastrup writes: > David Kastrup writes: > >> Noah Lavine writes: >> >>> Hello, >>> >>> I've been working on a patch to add a new sort of optimization to >>> peval, and I think it's almost ready. It's based on some of the ideas >>> in "Environment Analysis of Higher-Order Languages". >>> >

Re: Adding Identities to Peval

2012-02-16 Thread Andy Wingo
On Thu 16 Feb 2012 02:29, Noah Lavine writes: > (let* ((x (random)) >(y x)) > (eq? x y)) > > The patch attached to this message lets peval optimize that to > > (begin (random) #t) Neat :) Note, we don't need to add extra identities to operands: they already have their gensyms. So to

Re: Adding Identities to Peval

2012-02-16 Thread Noah Lavine
Hello, > Note, we don't need to add extra identities to operands: they already > have their gensyms.  So to get the effect of this patch, you could add a > clause to fold-constants: > >  ((primcall src 'eq? (lexical _ _ x) (lexical _ _ y)) >   (if (eq? x y) >       (make-const src #t) >       )) >

Re: Adding Identities to Peval

2012-02-16 Thread Andy Wingo
On Thu 16 Feb 2012 14:18, Noah Lavine writes: >>  (let ((x (random))) >>    (eq? x x)) > > (let* ((x (random)) >(y (list x)) >(z (car y)) > (eq? x z)) This one should reduce to the same thing, but currently doesn't because (list x) is not considered a "constant expression" beca

Re: Adding Identities to Peval

2012-02-16 Thread Andy Wingo
On Thu 16 Feb 2012 16:06, Andy Wingo writes: > (list x) is not considered a "constant expression" because `let' is a > "constructor" I meant, `list' is a "constructor". A -- http://wingolog.org/

Re: TODO list for Guile R7RS support

2012-02-16 Thread Ludovic Courtès
Hi, Alex Shinn skribis: > On Mon, Feb 13, 2012 at 8:50 PM, Ludovic Courtès wrote: [...] >> For GNU/Linux, one could imagine adding a ‘linux-gnu’ symbol, for >> instance.  Likewise for GNU/kFreeBSD. > > I'd like to hear feature recommendations, but you'd need specific > examples of where such

Re: Let's fix how warnings are specified

2012-02-16 Thread Ludovic Courtès
Hello! Mark H Weaver skribis: > l...@gnu.org (Ludovic Courtès) writes: > >> Mark H Weaver skribis: >> >>> Here's a preliminary proposal: >>> >>> * Add new pseudo-warning types 'all' and 'default'. >> >> Yes, but only at the UI level–i.e., in ‘guild compile’, along with >> ‘help’. > > The fundam

Re: allocation within critical sections

2012-02-16 Thread Ludovic Courtès
Hi, Andy Wingo skribis: > Andy, who got the following backtrace, with wip-threads-and-fork: > > #0 0x7f5daf443cec in __lll_lock_wait () from > /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x7f5daf43f339 in > _L_lock_926 () from /lib/x86_64-linux-gnu/libpthread.so.0 #2 > 0x7f5daf43f15b in

Re: Trouble using (current-filename)

2012-02-16 Thread Ludovic Courtès
Andy Wingo skribis: > (define-syntax current-filename > (lambda (x) > "A macro that expands to the current filename: the filename that > the (current-filename) form appears in. Expands to #f if this > information is unavailable." > (false-if-exception >(pk 'canonica

Re: [PATCH] Improve support for source properties

2012-02-16 Thread Ludovic Courtès
Hi, This reminds me of: http://thread.gmane.org/gmane.lisp.guile.devel/5254 :-) As Andy said, annotating objects returned by the reader with location info would seem wiser, but that’s not for 2.0. Thanks, Ludo’.

Re: Trouble using (current-filename)

2012-02-16 Thread Andy Wingo
On Thu 16 Feb 2012 22:34, l...@gnu.org (Ludovic Courtès) writes: > Andy Wingo skribis: > >> (define-syntax current-filename >> (lambda (x) >> "A macro that expands to the current filename: the filename that >> the (current-filename) form appears in. Expands to #f if this >> infor

Re: allocation within critical sections

2012-02-16 Thread Andy Wingo
On Thu 16 Feb 2012 22:30, l...@gnu.org (Ludovic Courtès) writes: > Can you explain what happens here? Is it a deadlock? What’s at > ports.c:575? It was a deadlock, but I fixed it. It was something that locked all weak sets, but while doing so allocated memory. Allocating memory ran finalizers

Re: Adding Identities to Peval

2012-02-16 Thread Noah Lavine
Hello, On Thu, Feb 16, 2012 at 10:06 AM, Andy Wingo wrote: > On Thu 16 Feb 2012 14:18, Noah Lavine writes: > >>>  (let ((x (random))) >>>    (eq? x x)) >> >> (let* ((x (random)) >>        (y (list x)) >>        (z (car y)) >>   (eq? x z)) > > This one should reduce to the same thing, but current

Re: allocation within critical sections

2012-02-16 Thread Mike Gran
> From: Andy Wingo >> Can you explain what happens here?  Is it a deadlock?  What’s at >> ports.c:575? > > It was a deadlock, but I fixed it.  It was something that locked all > weak sets, but while doing so allocated memory.  Allocating memory ran > finalizers which tried to manipulate the po