==== Channel ##pypy: 04/19/05 ====

[00:22] hpk_ (~holger_kr@mail.trillke.de) joined #pypy.

----- silence for 1 hr and 45 minutes -----

[02:07] rhaymar (~Rhaymar@200.121.227.100) joined #pypy.

[02:07] <rhaymar> hola

[02:08] pedronis (~Samuele_P@c-1b8b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: "Chatzilla 0.9.67 [Firefox 1.0.2/20050317]"

[02:14] rhaymar (~Rhaymar@200.121.227.100) left irc:

[02:26] hpk_ (~holger_kr@mail.trillke.de) left irc: Read error: 113 (No route to host)

----- silence for 4 hr and 43 minutes -----

[07:09] dialtone (~dialtone@host111-56.pool80117.interbusiness.it) left irc: "This computer has gone to sleep"

[07:14] idnar (mithrandi@idnar.user) left irc: Connection timed out

----- silence for 56 minutes -----

[08:10] -lilo (lilo@levin-pdpc.staff.freenode) to $*- [Global Notice] Hi all. We're experiencing lag in Europe and will need to rehub. Mention this as needed to EU users as they come back.

[08:11] tic (~vision@c-ba6e73d5.019-35-67626717.cust.bredbandsbolaget.se) got netsplit.

[08:11] thingie24 (~rmt38@valhalla.ccp.cc) got netsplit.

[08:11] etrepum (bob@ayunami.redivi.com) got netsplit.

[08:11] tic (~vision@c-ba6e73d5.019-35-67626717.cust.bredbandsbolaget.se) returned to #pypy.

[08:11] thingie24 (~rmt38@valhalla.ccp.cc) returned to #pypy.

[08:11] etrepum (bob@ayunami.redivi.com) returned to #pypy.

[08:20] thingie24 (~rmt38@valhalla.ccp.cc) got netsplit.

[08:20] etrepum (bob@ayunami.redivi.com) got netsplit.

[08:20] tic (~vision@c-ba6e73d5.019-35-67626717.cust.bredbandsbolaget.se) got netsplit.

[08:20] hpk (~hpk@merlinux.de) got netsplit.

[08:20] Me2 (~Me@cm218-253-45-243.hkcable.com.hk) got netsplit.

[08:20] jacob22|office (jacob@enzo.strakt.com) got netsplit.

[08:20] mwh (~user@pc150.maths.bris.ac.uk) got netsplit.

[08:20] jacob22|office (jacob@enzo.strakt.com) returned to #pypy.

[08:20] Me2 (~Me@cm218-253-45-243.hkcable.com.hk) returned to #pypy.

[08:20] mwh (~user@pc150.maths.bris.ac.uk) returned to #pypy.

[08:20] hpk (~hpk@merlinux.de) returned to #pypy.

[08:20] tic (~vision@c-ba6e73d5.019-35-67626717.cust.bredbandsbolaget.se) returned to #pypy.

[08:20] thingie24 (~rmt38@valhalla.ccp.cc) returned to #pypy.

[08:20] etrepum (bob@ayunami.redivi.com) returned to #pypy.

[08:20] hpk (~hpk@merlinux.de) got netsplit.

[08:20] Me2 (~Me@cm218-253-45-243.hkcable.com.hk) got netsplit.

[08:20] mwh (~user@pc150.maths.bris.ac.uk) got netsplit.

[08:20] jacob22|office (jacob@enzo.strakt.com) got netsplit.

[08:20] thingie24 (~rmt38@valhalla.ccp.cc) got netsplit.

[08:20] etrepum (bob@ayunami.redivi.com) got netsplit.

[08:20] tic (~vision@c-ba6e73d5.019-35-67626717.cust.bredbandsbolaget.se) got netsplit.

[08:21] pyb0t (pybot@nimrod.terra-link.net) left #pypy.

[08:21] pyb0t joined #pypy.

[08:21] #pypy: mode change '+n ' by tolkien.freenode.net

[08:24] -:#pypy- *** Notice -- TS for #pypy changed from 1113891747 to 1076841723

[08:24] jacob22|office (jacob@enzo.strakt.com) joined #pypy.

[08:24] Me2 (~Me@cm218-253-45-243.hkcable.com.hk) joined #pypy.

[08:24] mwh (~user@pc150.maths.bris.ac.uk) joined #pypy.

[08:24] hpk (~hpk@merlinux.de) joined #pypy.

[08:24] tic (~vision@c-ba6e73d5.019-35-67626717.cust.bredbandsbolaget.se) joined #pypy.

[08:24] thingie24 (~rmt38@valhalla.ccp.cc) joined #pypy.

[08:24] etrepum (bob@ayunami.redivi.com) joined #pypy.

[08:24] Topic changed on #pypy by !irc.freenode.net: PyPy, Python in Python -- http://codespeak.net/pypy/ -- chanlog available via http://nimrod.terra-link.net/pypy/

[08:30] -lilo (lilo@levin-pdpc.staff.freenode) to $*- [Global Notice] Hi all. Recapping, we experienced European hubbing problems a few minutes ago, and we've reconfigured our hubbing to resolve the issue. Thanks for your patience and understanding, and thank you for using freenode!

[08:40] Arafat (~bear@B74a4.b.pppool.de) joined #pypy.

----- silence for 29 minutes -----

[09:09] Nick change: Arafat -> Gromit_

[09:11] Nick change: Gromit_ -> Gromit

----- silence for 34 minutes -----

[09:45] hpk_ (~holger_kr@mail.trillke.de) joined #pypy.

[09:57] idnar (mithy@idnar.user) joined #pypy.

[10:10] ludal (~ludal@logilab.net2.nerim.net) joined #pypy.

[10:16] hpk_ (~holger_kr@mail.trillke.de) left irc: Read error: 113 (No route to host)

----- silence for 27 minutes -----

[10:43] Gromit (~bear@B74a4.b.pppool.de) left irc: "Client Exiting"

----- silence for 40 minutes -----

[11:23] }A\\}x[|z (~KIJCxL@dsl-202-173-158-230.vic.westnet.com.au) joined #pypy.

[11:23] }A\\}x[|z (KIJCxL@dsl-202-173-158-230.vic.westnet.com.au) left #pypy.

[11:25] [}A\\}x[|z!KIJCxL@dsl-202-173-158-230.vic.westnet.com.au] Come watch me on my webcam and chat /w me :-) http://dsl-202-173-158-230.vic.westnet.com.au:4396/me.mpg

----- silence for 2 hr and 25 minutes -----

[13:50] Gromit (~bear@B74da.b.pppool.de) joined #pypy.

----- silence for 1 hr and 9 minutes -----

[14:59] pedronis (pedronis@ratthing-b246.strakt.com) joined #pypy.

----- silence for 1 hr -----

[15:59] Gromit (~bear@B74da.b.pppool.de) left irc: Read error: 104 (Connection reset by peer)

[16:00] Gromit (~bear@A368c.a.pppool.de) joined #pypy.

----- silence for 38 minutes -----

[16:38] _hannes (sgylkd@i528C12F6.versanet.de) joined #pypy.

[16:53] Gromit (~bear@A368c.a.pppool.de) left irc: "Client Exiting"

[17:03] idnar (mithy@idnar.user) left irc: "kbye"

[17:04] jriehl (~jriehl@sidewinder.cs.uchicago.edu) joined #pypy.

----- silence for 17 minutes -----

[17:21] dialtone (~dialtone@host111-56.pool80117.interbusiness.it) joined #pypy.

----- silence for 50 minutes -----

[18:11] mwh2 (~user@modem-219.erendis.dialup.pol.co.uk) joined #pypy.

----- silence for 20 minutes -----

[18:31] arigo (~arigo@vicky.ecs.soton.ac.uk) joined #pypy.

[18:31] <hpk> arigo: hey armin, arrived well?

[18:31] <arigo> hi! yes thanks!

[18:31] ludal (~ludal@logilab.net2.nerim.net) left irc: "Download Gaim: http://gaim.sourceforge.net/";

[18:32] <hpk> great

[18:32] <hpk> i am minimizing the execnet API after your yesterday's comments :-)

[18:32] <arigo> :-)

[18:33] <hpk> and getting rid of magic numbers

[18:33] <hpk> which proves to be the harder bit

[18:33] <arigo> I see

[18:45] Action: arigo looking up London -> Gothenburg flights

[18:45] <mwh2> arigo: london?

[18:45] <arigo> prices make no sense. £460 for one-way and £148 for returns

[18:46] <mwh2> ryanair fly from stansted

[18:46] <arigo> mwh2: Heathrow yes

[18:46] <mwh2> arigo: don't do that

[18:46] <mwh2> if you can help it

[18:46] <mwh2> hang on

[18:46] <mwh2> 148 for return isn't too bad

[18:46] <arigo> yes, it's ok, but I'm not sure I need the return at all

[18:47] <mwh2> i see

[18:47] <arigo> there are two advantages to Heathrow over Stansted

[18:47] <arigo> it's much closer (1h30 instead of 3-4h bus)

[18:47] <arigo> and Jacob and Laura fly back from there

[18:47] <arigo> and I'll have more than 20kg of luggage on my own

[18:56] <arigo> woha

[18:56] <arigo> Carl has run quite a number of CPython's tests successfully

[18:56] <arigo> including test_fpformat, which is what got me the "woha"

[18:57] <arigo> it would be interesting to know tests that have been tried *un*successfully

[18:57] <mwh2> test_fpformat must suck :)

[18:58] <mwh2> certainly, the rounding isn't perfectly correct in pypy

[18:58] <arigo> hum.

[18:58] <arigo> I see

[19:01] idnar (mithrandi@idnar.user) joined #pypy.

[19:01] <arigo> pedronis: builtin_isinstance() has got a problem now

[19:03] <pedronis> possible

[19:03] mwh2 (~user@modem-219.erendis.dialup.pol.co.uk) left irc: "byeee"

[19:03] <arigo> if type(s_obj) is not SomeObject:

[19:03] <arigo> r.const = False

[19:03] <arigo> could break the assert in AnnRPython.setbinding()

[19:04] <arigo> it's not "monotonic"

[19:06] <pedronis> I see

[19:06] <arigo> er...

[19:06] <arigo> no, I'm just confused, no?

[19:07] <pedronis> it is false until SomeObject then it because SomeBool

[19:07] <pedronis> but I admit not having thought about it much

[19:07] <arigo> right, so it's valid

[19:08] <arigo> we might find a way to have a test for this

[19:08] <pedronis> anyway translate_pypy.py is doing quite better

[19:09] <arigo> nice

[19:09] <pedronis> although finding the mixing of OperationErrors and W_Root was fun

[19:10] <arigo> I guess so

[19:10] <pedronis> I still have 3 blocked blocks which are essentially spurious but I don't know exactly what to do with them

[19:10] <arigo> where?

[19:10] <pedronis> it's the wrapping code for multimethods

[19:10] <pedronis> you have

[19:11] <pedronis> r = f()

[19:11] <pedronis> if r is None:

[19:11] <pedronis> ...

[19:11] <pedronis> return r

[19:11] <pedronis> and we have 3 cases where f is just known to always raise an exception

[19:11] <pedronis> so we have an impossible value and we are blocked

[19:11] <pedronis> on the is

[19:12] <arigo> ah ha

[19:13] <arigo> time to get rid of the hack in

[19:13] <arigo> objspace.flow.model.FunctionGraph.hasonlyexceptionreturns()

[19:14] <arigo> I mean, get rid of this function altogether

[19:16] <pedronis> yes we are down to 3 blocked blocks and 77 warnings ( a lot are repeations and related to cheating stuff)

[19:16] <arigo> any serious warning?

[19:18] <pedronis> we have some methods that get attached to a too high superclass

[19:18] <pedronis> some are because we are missing some needed typechecking

[19:18] <arigo> I fixed one such case with Cell.get()

[19:19] <pedronis> others are about the mixing up with the frame classes and the dispatch table

[19:19] <pedronis> others are method that have no clear class for them for example user_setup for User_ classes

[19:20] <pedronis> and the we have cannot follow whatever but all those seem related to faking

[19:20] <arigo> veeeery nice

[19:21] <arigo> damn, now I'm feeling like genllvm will be ready for this before genc :-)

[19:22] <pedronis> the only things that degenerate to SomeObject are unwrap, .longval, string_to_long which are expected

[19:26] Gromit (~bear@B7482.b.pppool.de) joined #pypy.

[19:41] <arigo> hpk: strange weather

[19:41] <arigo> in Southampton it's much further springtime than in Hildesheim, everything's green

[19:41] <arigo> but I hear that in Switzerland it snowed really a lot

[19:53] <arigo> pedronis: in annrpython.recursivecall()

[19:53] <arigo> wouldn't it make sense to always return benign impossible values for functions that don't return as far as we know?

[19:54] <pedronis> but that will not solve the problem

[19:54] <pedronis> benign impossible values can go through returns

[19:54] <pedronis> but what to do when an op is requested is an open question

[19:55] <arigo> ah, I see

[19:55] <arigo> the question is what we would like the code generator to do with that

[19:55] <arigo> you know that transform.py cuts dead branches

[19:55] <pedronis> well, the code generator in this case can happily ignore the blocked block

[19:56] <arigo> but in some case, you have both the call and the next operation in the same block

[19:56] <arigo> transform.py should somehow cut the non-annotated end of the block, maybe

[19:56] <pedronis> yes that could happen

[19:56] <pedronis> but the fact is that sometimes blocked blocks are a genuine problem

[19:57] <arigo> yes, I was wondering if it would mask problem to accept blocked blocks that are blocked on a recursivecall()

[19:58] <arigo> but continue to report other blocked blocks as problems.

[19:59] <arigo> in fact, consider_op() is quite hackish now

[19:59] <pedronis> yes

[19:59] <arigo> a simple_call() that returns SomeImpossibleValue, even benign, should stop the inference

[20:00] <pedronis> well, if accept blocked blocks on recursivecalls

[20:00] <arigo> actually, we could replace the "benign" flag with raising an exception directly in recursivecall()

[20:00] <pedronis> under the assumption that if there's a problem there will be a blocked in the original function

[20:01] <arigo> ah, I see the point -- the goal of benign is really only to avoid having a BlockedInference in the caller, but that's a bit wrong, because inference should really stop in the caller somehow

[20:02] <pedronis> the problem is that having functions that always raise an exception is an ok idiom

[20:02] <arigo> yes

[20:02] <pedronis> but it can result in blocked blocks

[20:02] <arigo> so the idea is not to raise BlockedInference but another exception in this case,

[20:02] <arigo> like CanOnlyRaiseException

[20:02] <arigo> which behaves like BlockedInference but isn't an error

[20:03] <pedronis> that's ok but then you want the caller to raise the same exception

[20:03] <pedronis> you can have a chain that ends up calling such a function

[20:04] <pedronis> in fact our multimethod code has such chains

[20:04] <arigo> that would work "out of the box" with CanOnlyRaiseException, I think

[20:04] <arigo> a caller f() wouldn't reach a 'return' statement either, so recursivecalls() from some other e() to f() would also raise CanOnlyRaiseException

[20:05] <arigo> basically, consider that call functions can only raise exceptions until proven otherwise

[20:05] <arigo> s/call/all

[20:06] <pedronis> I see, that means that blocking will not propagate as it does now

[20:06] <arigo> yes

[20:07] <arigo> I'm not sure if this scheme would mask real problems or not

[20:07] <pedronis> that's the question indeed

[20:07] Gromit (~bear@B7482.b.pppool.de) left irc: Read error: 60 (Operation timed out)

[20:09] <arigo> def hole(*args) in ann_override.py currently returns a benign impossible value,

[20:09] <arigo> I guess the equivalent effect would be to just raise CanOnlyRaiseException

[20:10] <pedronis> no

[20:10] <pedronis> it should return something

[20:10] <pedronis> it for cases like this

[20:10] <pedronis> hole()

[20:10] <pedronis> f()

[20:10] <pedronis> g()

[20:10] <pedronis> you would block on hole and never go further

[20:11] <pedronis> it works now with benign impossible

[20:11] <arigo> ah, oups. It's for cases where the hole() call should basically be ignored

[20:11] <pedronis> yes

[20:11] <pedronis> it works because the result is not used

[20:11] <arigo> and you want to check that the result is not used

[20:11] <pedronis> and benign impossible if not used

[20:11] <pedronis> doesn't block

[20:12] <arigo> then hole() should return a real None, like the operations like setattr or setitem...

[20:12] <pedronis> yes, that's a possibility too

[20:13] <pedronis> but it should not block

[20:13] <arigo> yes, returning a real None has basically the behavior that you describe: makes the result SomeImpossibleValue without blocking

[20:16] Gromit (~bear@port1109.fra.ginko.net) joined #pypy.

[20:19] <pedronis> for the change: we would need a sublcass of BlockedInference

[20:20] <pedronis> change recursivecall code to throw it on a KeyError

[20:20] <pedronis> and skip this cases when reporting blocked blocks

[20:20] <arigo> yes

[20:20] <arigo> I'm not clear about the "subclass" bit

[20:21] <arigo> is BlockedInference a particular case of the general CanOnlyRaiseException, or the other way around?

[20:22] <arigo> actually it's a different exception, I think

[20:22] <arigo> because processblock() must not reset self.annotated[block] to False

[20:24] Action: arigo trying it...

[20:28] <arigo> grumble

[20:29] <arigo> it basically seems to work, but transform.py cuts the single exit after a block stopped by CanOnlyRaiseException

[20:29] <arigo> so now it looks like a return block

[20:29] <arigo> as it isn't really one, checkgraph() complains

[20:30] <arigo> how should we "cut off" the end of such blocked blocks?

[20:31] <pedronis> I see, well it's also the problem that we don't mark return and exception blocks more explicitly

[20:32] <arigo> yes, partially; it's also that it would be fine if such "cut blocks" didn't require special support from code gens

[20:33] <arigo> in my working copy, a blocked v5=simple_call(...) has v5 not annotated at all

[20:33] <pedronis> but is exception handling generated

[20:34] <pedronis> for the call

[20:34] <arigo> if Christian was here he's say that we just turn it into an explicit tail call :-)

[20:34] <arigo> exception handling has been removed "long ago" by the t.simplify()

[20:35] <pedronis> yes, sorry

[20:36] <arigo> but we can maybe add manually the equivalent of "raise AssertionError, 'shouldn't be here'"

[20:36] <pedronis> yes

[20:37] <arigo> and v5 (the return value) gets a SomeNone()?

[20:37] <arigo> just to be nice with codegens?

[20:37] <pedronis> yes

[20:43] cfbolz (~cfbolz@hdlb-3e342057.pool.mediaWays.net) joined #pypy.

[20:43] <cfbolz> hi!

[20:43] <arigo> hi!

[20:44] <cfbolz> arigo: I just read the backlogs. I ran almost all UnitTests, so the rest is failing for me.

[20:44] <arigo> oh

[20:45] <arigo> that's quite a lot then :-(

[20:45] <cfbolz> Yes, but some of them for obvious reasons.

[20:45] <arigo> ok

[20:45] <cfbolz> I did not investigate further, just checked whether they succeed immediately

[20:46] <cfbolz> and I'm not really surprised, that test_winsound fails for me :-).

[20:46] <arigo> I see :-)

[20:46] <cfbolz> Maybe we should collect information about CPython's tests somewhere

[20:48] <arigo> this testmap was supposed to be it, but it's limited

[20:49] <cfbolz> yes

[20:49] <cfbolz> Just saying 'it works' or 'it doesn't' is not really enough

[20:50] <cfbolz> I looked into test_itertools which fails due to the fact that it checks whether izip reuses tuples that are not referenced.

[20:50] <cfbolz> I guess this is an implementation detail

[20:51] <arigo> sure enough

[20:51] <arigo> actually we have our own test_itertools in lib/test2/

[20:51] <arigo> which removes this check

[20:52] <hpk> i doubt you can run at that at the moment, btw

[20:52] <cfbolz> ouch

[20:52] <arigo> there are a few "fixed" tests in there, not a whole lot.

[20:52] <cfbolz> why?

[20:52] <hpk> i guess it would be nice to be able to flag that particular test from conftest and not have to create a duplicate

[20:54] <cfbolz> Yes.

[20:54] <cfbolz> test_bool would work, too, except for the infinite recursion.

[20:56] <cfbolz> Ok. I'm going again. See you.

[21:00] <arigo> see you!

[21:00] <cfbolz> bye

[21:00] cfbolz (~cfbolz@hdlb-3e342057.pool.mediaWays.net) left irc: "Verlassend"

[21:01] Action: arigo is banging its head on the walls to get the 'cut blocks' right

[21:01] <arigo> s/its/his, I guess

[21:02] <arigo> do we care about the annotation of the exceptblock's input arguments?

[21:03] <arigo> it's never really complete anyway, because simple_call() can raise just any exception

[21:04] <arigo> mess mess mess

[21:05] <pedronis> yes, exception handling code can end up always containg some SomeObject

[21:05] <arigo> I'm just asking about the final arguments

[21:05] <arigo> they are meaningless anyway

[21:05] <arigo> because a simple_call() without an exception handler is invisible to the annotator

[21:08] <arigo> I guess at some point we will need to refactor the return/except block model

[21:08] <arigo> I think that having "return links" and "exception links" instead would be saner

[21:09] <arigo> and also a "start link", so that the function's argument are represented differently than the arguments of the first input block

[21:16] <arigo> the CanOnlyRaise idea may or may not work out

[21:16] <arigo> it doesn't pass your tests

[21:16] <arigo> but I really need to leave now

[21:17] <arigo> should I svn cp it to a branch?

[21:17] <pedronis> if you want, I may look at it

[21:17] <arigo> ok

[21:17] <pedronis> right now I'm trying to get rid of warnings about user_setup

[21:18] <arigo> ok

[21:19] <arigo> it's called canonlyraise-pypy

[21:19] arigo (~arigo@vicky.ecs.soton.ac.uk) left irc: ""happy hacking :-)""

[21:23] Gromit (~bear@port1109.fra.ginko.net) left irc: Read error: 113 (No route to host)

[21:24] Gromit (~bear@A36b1.a.pppool.de) joined #pypy.

----- silence for 49 minutes -----

[22:13] pedronis (pedronis@ratthing-b246.strakt.com) left irc: "Chatzilla 0.9.67 [Firefox 1.0.2/20050325]"

----- silence for 53 minutes -----

[23:06] Gromit (~bear@A36b1.a.pppool.de) left irc: "schnarch, rotz, hust"

[23:07] idnar (mithrandi@idnar.user) left irc: Read error: 60 (Operation timed out)

[23:09] idnar (mithrandi@idnar.user) joined #pypy.

[23:24] hpk_ (~holger_kr@mail.trillke.de) joined #pypy.

[00:00] --- Wed Apr 20 2005