[00:06] hpk (~hpk@merlinux.de) joined #pypy.
[00:07] <hpk> evening
----- silence for 16 minutes ----- [00:23] <arigo> evening
[00:24] <hpk> can we come up with worthwhile translation tests to run repeatedly?
[00:24] <hpk> i mean from the goal directly?
[00:24] <hpk> directory even
----- silence for 21 minutes ----- [00:45] lac (~lac@lac.silver.supporter.pdpc) left irc: "using sirc version 2.211+KSIRC/1.3.11"
[00:51] <arigo> hpk: not right now
[00:52] <arigo> small changes tend to break everything there
[00:52] <hpk> yes, as is currently the case
[00:52] <arigo> and I'm not helping with changing small and essential dark corners
[00:52] <hpk> but then it would be interesting to track down exactly which checkin broke things
[00:52] <arigo> lots of them did recently :-)
[00:53] <arigo> Samuele and me are trying to get things back to shape
[00:53] <arigo> in addition, just looking at the output is not useful to understand anything
[00:54] <arigo> you really need to walk around in the graph and/or inspect in the debugger
[00:55] <arigo> well maybe we can run the goals daily and record the results, but only some things are easily tracked through revisions that way
[01:03] Action: hpk is a bit scared of the apparent translation fragility
[01:04] <hpk> i mean it's even more fragile than the ancient py lib import hacks :-)
[01:07] <hpk> or do you think that the fragility will become less by time?
[01:07] <arigo> no, it's the RPython definition, sometimes it's hard to realize that the code we write is not RPython for some reason
[01:08] <hpk> and is it feasible to try harder to bail out with somewhat clear error message as early as possible?
[01:08] <arigo> or just forget it when we write "temporary" hack
[01:08] <arigo> like your warnings
[01:08] <arigo> :-)
[01:09] <hpk> i actually marked that as NOT_RPYTHON IIRC
[01:09] <hpk> :-)
[01:09] <arigo> clearer error messages are definitely needed
[01:10] <arigo> it's not enough to mark something as NOT_RPYTHON if it's still called at run-time...
[01:10] <hpk> but this is detected, no?
[01:11] <arigo> well, it crashes, if I'm not mistaken
[01:11] <arigo> so yes, it's detected, in a sense
[01:12] <arigo> at the moment the "correct" solution involves strange stuff
[01:12] <arigo> e.g. writing an entry in ann_override.py
[01:13] <arigo> all this is obscure and tends to change, it's not clear how stable the current way of doing things is
[01:13] <arigo> and giving reasonable error messages is definitely needed, but again at the moment it's not entierely clear what is stable and what is not
[01:14] <hpk> i understood that much :-)
[01:14] <hpk> considering that you have a pretty good capability of dealing with dynamisms, you saying this, well, umm, says something :-)
[01:16] <arigo> anyway all this mess comes from the fact we're trying to do *static* annotation :-)
[01:17] <arigo> I'm not saying dynamic annotation is necessarily easier, but it's messy in different ways
[01:19] <hpk> define dynamic annotation
[01:20] <arigo> Psyco :-)
[01:21] <hpk> i am not letting you out that easily :-)
[01:23] <hpk> aren't you maybe saying that we are not (dynamically?) specializing?
[01:23] <arigo> PyPy's annotator is completely static at the moment
[01:24] <hpk> in the sense that is has no help from runtime
[01:24] <arigo> yes, and even more, it takes an input program in-memory and does its magic, until it's complete
[01:24] <arigo> so it's not even a just-in-time annotator, it's really like running gcc
[01:25] <arigo> the purpose is to evolve it into something working on dynamic data, but it's not at all what it's now
[01:26] <arigo> e.g. right now we're working on a problem with the annotator calling W_TypeObject._freeze_(), which adds new methods to classes, which breaks the promize that classes are immutable
[01:26] <arigo> the annotator cannot call _freeze_() before it sees the particular W_TypeObject instance, but cannot see the instance before it sees the involves classes
[01:27] <pedronis> hpk: we could have written a dynamic compiler in Python for Python and run it on itself and frozen the resulting state from memory to disk
[01:27] <pedronis> it has different trade-offs
[01:27] <pedronis> for example it makes less sense for some possible target platforms
[01:30] <hpk> (side note: i think we may want to reach out to GCC and LLVV communities for the kind of expertise we look for)
[01:31] <hpk> a question:
[01:32] Action: hpk thinks some more
[01:36] <hpk> wouldn't it make sense to go for resolving the ever-persisting caching issues in a more systematical manner?
[01:37] <arigo> yes, that's precisely what I tried today
[01:37] <hpk> for example, some kind of global mechanism where each cache has to register with a "this is how to fill it" function?
[01:37] <arigo> it's introducing more problems, like the one I described above
[01:37] <arigo> hpk: that's exactly what I did indeed :-)
[01:38] <arigo> hpk: ah, almost
[01:38] <hpk> no, i mean freezing before you start to annotate
[01:38] <hpk> um, even before you generate the first flowgraph
[01:38] <arigo> there is no sane way to (1) find all cache instances (2) know all possible keys
[01:38] <arigo> or maybe there is, but it's less elegant :-)
[01:38] <hpk> i know
[01:38] <hpk> but it's a very clear and stable solution
[01:38] <arigo> no, I fear it would be extremely messy all around
[01:39] <arigo> e.g. how do you find all keys to AppLevelInterpClass's cache
[01:40] <arigo> for space.app_exec it is downright impossible
[01:40] <hpk> ok, next try: could we restart completely from the beginning after freezing caches while we go?
[01:40] <arigo> so we'd have to remove it
[01:41] <arigo> yes, but there are lots of caches :-) that would take ages, restarting whenever any one is updated
[01:41] <hpk> appexec() was not meant for runtime, i though
[01:41] <arigo> no, it's fine to use it at run-time
[01:41] <arigo> if it wasn't meant for run-time it wouldn't need to use Caches at all
[01:42] <hpk> well, at least when we came up with the appexec() idea it wasn't meant this way, but nevermind
[01:42] <hpk> i was hoping that restarting the process is not that bad if it happens very early
[01:43] <arigo> it doesn't
[01:43] <arigo> well, also note that annotation is basically in good shape, it's just a change that broke things
[01:52] <hpk> so how you are you trying to fix the W_TypeObject._freeze_ issue?
[01:54] <hpk> do you e.g. try to talk back to the annotator about e.g. which classes got changed?
[02:04] <arigo> no, we just teached the annotator when it's suspicious that a method is seen missing
[02:04] <arigo> and look again in this case
[02:05] <arigo> it's a bit strange, but seems to do the trick at the moment
[02:07] <hpk> doesn't that rely too much on the assumption that it is only the lookup of a method that could be affected by _freeze_() execution?
[02:07] <arigo> we thought about some way to talk back, or just raising "ThingsChangedRestartEverything"...
[02:08] <arigo> yes, it's very much special case...
[02:09] <hpk> obviously, ThingsChangedRestartEverything is a brutal but also pretty robust approach ...
[02:09] <hpk> ... and we would naturally try to make them happen as early as possible
[02:10] fredrik (fredrik@c83-248-135-181.bredband.comhem.se) left irc: "http://fredrikj.net"
[02:15] <arigo> possibly... for the moment the problem appears to be solved, and the problem of RestartEverything is that if each W_TypeObject raises one when it's first seen annotation will restart a lot of times
[02:28] <arigo> hpk: well, you're right, I tried to see when _freeze_s are called
[02:28] <arigo> they tend to be called near the beginning
[02:28] <arigo> it might have made sense to do try a scheme like, not throwing RestartEverything, but starting a 15-seconds alarm and restarting only after that....
[02:29] <hpk> set the just_try_to_restart_everything_next_time_when_you_get_into_trouble_flag
[02:30] <arigo> :-)
[02:30] <arigo> the real problem here was to *detect* when we get into trouble, precisely
[02:31] <arigo> i.e. detect when we're using an attribute when more about it might have shown up
[02:31] <hpk> you are in undetectable trouble if you can't determine if you are in trouble, i guess
[02:32] <hpk> i am not sure you need to detect trouble at this fine grained level
[02:33] <hpk> can't we use the fragility to assume it will just break cleanly e.g. after we did _freeze_s?
[02:35] <arigo> no, that's always the problem with the annotator
[02:35] <arigo> fragile means that it will crash in strange way
[02:35] <arigo> in this case, we found the problem because it gave more warnings than usual
[02:36] <arigo> but warnings of a kind that are not all errors, just really gcc-like warnings
[02:36] <arigo> and there are cases where the problem woulnd't even show up as this warning
[02:36] <arigo> i.e. it's fragile in the worst sense of getting wrong or unexpected results
----- silence for 21 minutes ----- [02:57] arigo (~arigo@c-3a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: "good night"
[02:57] <pedronis> night
[02:58] pedronis (~Samuele_P@c-3a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: "Chatzilla 0.9.68a [Firefox 1.0.2/20050317]"
[03:10] yuuh (oqeesx@82.140.29.187) left irc: "utz utz utz"
----- silence for 1 hr and 32 minutes ----- [04:42] sanxiyn (tinuviel@222.233.187.66) joined #pypy.
----- silence for 23 minutes ----- [05:05] <sanxiyn> Hello
[05:05] <sanxiyn> How do I run tests under lib-python? I checked out testresult directory, and now lost. :(
----- silence for 1 hr and 28 minutes ----- [06:33] sanxiyn (tinuviel@222.233.187.66) left irc: "Bye"
----- silence for 56 minutes ----- [07:29] sanxiyn (tinuviel@222.233.187.66) joined #pypy.
----- silence for 29 minutes ----- [07:58] idnar (mithrandi@idnar.user) left irc: Nick collision from services.
[07:58] idnar_ (mithrandi@idnar.user) joined #pypy.
----- silence for 55 minutes ----- [08:53] idnar_ (mithrandi@idnar.user) left irc: Client Quit
[08:54] idnar (mithy@idnar.user) joined #pypy.
----- silence for 21 minutes ----- [09:15] Nick change: idnar -> idnar_
----- silence for 1 hr and 43 minutes ----- [10:58] sanxiyn (tinuviel@222.233.187.66) left irc: "Bye"
----- silence for 55 minutes ----- [11:53] arigo (~arigo@c-3a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) joined #pypy.
----- silence for 53 minutes ----- [12:46] <hpk> hello
[12:47] <arigo> morning
[12:56] yuuh (nnetjcjg@82.140.29.187) joined #pypy.
[12:56] <arigo> I'm trying to create a Compiler abstraction
[12:57] <arigo> (this started as an attempt to fix setup_warning for the annotator)
[12:57] Action: hpk sidenotes that he liked the discussion style yesterday night, as it wasn't so chatty but more thoughful
[12:58] <arigo> yes
[12:59] <arigo> interactive.py and in particular the stdlib codeop.py is quite messy
[12:59] sanxiyn (tinuviel@222.233.187.66) joined #pypy.
[12:59] <arigo> it's messy to know when an interactively typed code snippet is complete
[12:59] <arigo> hi seo!
[12:59] <hpk> sanxiyn: hi seo!
[13:00] <sanxiyn> hi
[13:00] <hpk> sanxiyn: you run tests under lib-python by starting 'py.test' or ../pypy/test_all.py in lib-python (or for best results directly in lib-python/2.3.4/test/)
[13:00] <hpk> it doesn't work at all on windows though
[13:01] <sanxiyn> I'm on Linux now.
[13:02] <sanxiyn> Eh, how long does it take? :-)
[13:02] <hpk> you will then create files under pypy-dist/testresult/youruser@yourhost and you need to 'svn add' your specific directory
[13:03] <hpk> you have options: run e.g. with 'py.test -k core' to run all core tests or 'py.test -k "core err"' to run all core tests that currently give errors
[13:04] <sanxiyn> Okay.
[13:04] <hpk> sorry, that needs to be 'py.test -k "core error"'
[13:05] <hpk> you can look at http://codespeak.net/~hpk/pypy-testresult/ to see how long tests run
[13:06] <hpk> the keyword selection actually looks at your 'testresult' directory contents so it makes sense to 'svn up' it regularly
[13:07] <arigo> hpk: do you mind if I forward my mails to arigo@codespeak.net and store them there?
[13:07] <hpk> arigo: no
[13:08] <sanxiyn> hpk: How do I run a single test?
[13:08] <sanxiyn> Eh, must be py.test <file>. Stupid me.
[13:09] <hpk> yes, it's a bit (too?) clever, though, because even if you 'py.test 2.3.4/test/test_class.py' it will actually use 'modified-2.3.4/test/test_class.py' but you see that easily on the output that ensues
[13:11] <hpk> arigo: do you need procmail?
[13:11] <sanxiyn> Eh.
[13:11] <arigo> hpk: I guess so
[13:11] <sanxiyn> pypy-dist/lib-python$ py.test 2.3.4/test/test_xmlrpc.py
[13:11] <sanxiyn> E assert resultdir.check(dir=1)
[13:11] <sanxiyn> > assert local('/home/tinuviel/src/pypy/dist/testresult/tinuviel@debian').check(dir=1)
[13:12] <sanxiyn> Should I create a directory?
[13:12] <hpk> no, usually not, it should create it for you
[13:12] <hpk> which function?
[13:12] <sanxiyn> It didn't.
[13:12] <hpk> arigo: done, let me know if you are missing anything
[13:13] <arigo> thanks
[13:13] <arigo> I'm confused, where do the mails arrive?
[13:13] <hpk> IIRC .maildir/
[13:13] <hpk> it's maildir format, obviously
[13:13] <hpk> you can use procmail to put it into a mailbox if you prefer that
[13:13] <arigo> ah
[13:13] <arigo> ok thanks
[13:15] <arigo> I don't see any test mail arriving, though
[13:15] <hpk> sanxiyn: can you 'svn up' and retry? i think i fixed it
[13:17] <hpk> arigo: it's forwarded somehow to arigo@tunes.org, let me check
[13:17] <arigo> the test mails don't show up on arigo@tunes.org either, hence my confusion
[13:18] <sanxiyn> hpk: Yes, your fix helped.
[13:18] <sanxiyn> Thanks.
[13:18] <hpk> they were delivered to arigo@tunes.org though, maybe landed in some strange folder?
[13:18] <arigo> no, I'm checking the global backup copy folder on the tunes.org machine directly
[13:18] <hpk> arigo: try again
[13:19] <arigo> ah
[13:19] <arigo> ok
[13:19] <arigo> thanks
[13:21] <hpk> arigo: can you make a .forward entry with '\arigo'?
[13:22] <arigo> ? ok
[13:22] <hpk> i am probably going to setup .forward's for everyone we know mail addresses of so that mail to user@codespeak.net arrives
[13:22] <hpk> this is nice because people may respond to commit mailing lists
[13:23] <hpk> and not all of them have a Reply-To set
[13:23] <hpk> and i don't want mail to pile up in user's directories when they never read it
[13:23] <arigo> where is the .forward file documented?
[13:24] <hpk> "man local" on codespeak, it's a postfix feature (or sendmail for that matter) IIRC
[13:25] <sanxiyn> Yes, it is an MTA feature.
[13:26] <arigo> I'm veery confused, the previous mails arrived to tunes.org but the mails there weren't copied to the backup folder for the last 6 days any more
[13:27] <arigo> this backup folder is very close to 50MB, I wonder if there is some stupid limit
[13:27] <sanxiyn> Running test_xmlrpc with --oldstyle results in failures in different places, and increasing elapsed time from 30s to 300s...
[13:27] <arigo> if so I've probably lost my e-mails between yesterday evening and now
[13:27] <sanxiyn> (btw, it should be run with --oldstyle, because it dispatches on types.InstanceType.)
[13:29] <hpk> arigo: :-(
[13:29] <hpk> sanxiyn: mark it as oldstyle then in conftest.py
[13:29] yuuh (nnetjcjg@82.140.29.187) left irc: Read error: 110 (Connection timed out)
[13:29] <sanxiyn> hpk: Yup.
[13:30] <sanxiyn> hpk: By the way, now I can see test_xmlrpc.txt in my testresult directory, but it says "options: []" even if it was produced with --oldstyle. Is this normal?
[13:31] <hpk> it's slightly inconsistent, unfortuantely, but it actually run with oldstyle ... wait a moment
[13:33] <arigo> hpk: what does the \arigo mean in .forward?
[13:33] <hpk> arigo: i think it means 'deliver locally, don't go through more alias resolving'
[13:34] <arigo> ah
[13:34] <hpk> i have used it for years, "man local()" you can just leave it empty, but i am not sure that is true for sendmail as well
[13:47] <hpk> sanxiyn: 'svn up', it should be fixed now
[13:47] <hpk> thanks for pointing the problem out
[13:52] <arigo> hpk: confused again
[13:52] <arigo> the .forward seems to be partly ignored
[13:53] <hpk> arigo: let's go to #arigo
[13:56] <sanxiyn> hpk: Your fix seems to work. Thanks!
----- silence for 4 hr and 26 minutes ----- [18:22] idnar_ (mithy@idnar.user) left irc: "kbye"
----- silence for 45 minutes ----- [19:07] aleale (~root@cpe.atm0-0-0-129140.0x3ef2fa3a.bynxx3.customer.tele.dk) joined #pypy.
----- silence for 23 minutes ----- [19:30] idnar (mithrandi@idnar.user) joined #pypy.
----- silence for 1 hr and 17 minutes ----- [20:47] tewk (tewk@192.41.88.101) left #pypy.
----- silence for 1 hr and 14 minutes ----- [22:01] yuuh (hrpmgbf@i528C1E27.versanet.de) joined #pypy.
----- silence for 33 minutes ----- [22:34] aleale (~root@cpe.atm0-0-0-129140.0x3ef2fa3a.bynxx3.customer.tele.dk) left irc: "*monkey grin*"
[22:38] dialtone (~dialtone@host111-56.pool80117.interbusiness.it) left irc: "Leaving"
[22:39] dialtone (~dialtone@host111-56.pool80117.interbusiness.it) joined #pypy.
----- silence for 1 hr and 16 minutes ----- [23:55] sanxiyn (tinuviel@222.233.187.66) left irc: "Bye"
[00:00] --- Fri May 6 2005