|
Parrot 0.8.1 "Tio Richie" Released! | www.parrot.org/ Set by moderator on 22 November 2008. |
|||
| jonathan | chromatic: Cache invalidation ci'd. | 00:02 | |
| all tests still passing here | |||
| dalek | r33122 | jonathan++ | mmdcache: | 00:03 | |
| : [rakudo] Cache invalidation when a Perl6MultiSub gets a new candidate. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33122 | |||
| chromatic | Running the tests now. | 00:04 | |
| So far so good. | 00:07 | ||
|
00:08
Theory joined
|
|||
| jonathan crosses his fingers...then uncrosses them again as it makes typing hard | 00:10 | ||
|
00:10
AndyA joined
|
|||
| chromatic | Looks good. I'll merge back unless you holler. | 00:12 | |
| jonathan hollers "merge" | 00:13 | ||
| chromatic | Working on that now. | 00:15 | |
|
00:22
nopaste joined,
japhb joined
|
|||
| dalek | r33123 | chromatic++ | trunk: | 00:33 | |
| : [mmdcache] Merged the mmdcache branch into trunk for r30003 to r33122. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33123 | |||
| r33124 | chromatic++ | mmdcache: | |||
| : Removed the mmdcache branch from the repository (merged in r33123). | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33124 | |||
| r33125 | chromatic++ | trunk: | 00:36 | ||
| : [docs] Fixed some typos and added some minor enhancements to the branching | |||
| : guide. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33125 | |||
| jonathan | chromatic++ | 00:40 | |
| chromatic: Had you got some other performance tweaks in there besides the MMD cache too? | |||
|
00:45
Limbic_Region joined
00:57
apeiron joined
01:01
kid51 joined
|
|||
| Infinoid | kid51++ # ticket mongering | 01:05 | |
| kid51 | What can I say? It goes well with a Sunday afternoon beer. | 01:06 | |
| Performed at www.drinkgoodstuff.com | 01:08 | ||
| jonathan | mmm | 01:10 | |
| jonathan has beer too | |||
| kid51 | Infinoid: And speaking of RTs .... rt.perl.org/rt3/Ticket/Display.html?id=51718 | 01:14 | |
| jonathan | Infinoid: I'm planning to dig into the bytecode stuff again soon. | ||
| chromatic | jonathan, just a couple. | 01:15 | |
|
01:16
sjn joined
|
|||
| jonathan | chromatic: Nice. :-) | 01:16 | |
| chromatic | Did you notice a difference? | ||
| jonathan | A little, but it's always a tad subjective... :-) | ||
| When you're hoping for one. | 01:17 | ||
| Feel free to enhance and tweak the caching code. I'm not at all attached to it, I just wanted something that was quick enough to do and would give some benefit. | |||
|
01:17
japhb joined
|
|||
| chromatic | It's not too bad now. | 01:17 | |
| jonathan | Now we're got an interface, should be easy to enhance it on the inside. | ||
| Sure, I think we can squeeze a little more out of it. | |||
| But maybe not so much. | 01:18 | ||
| I don't like that we allocate a STRING* per entry. | |||
| They are GC-able. | |||
| chromatic | I really do think moving the MMD vtable entries to PCC subs and getting them out of the vtable will help. | ||
| jonathan | You mean dispatching in the op right to the MMD rather than going through the VTABLE only to have it do the same? | 01:19 | |
| kid51 | cognominal ping | 01:21 | |
| chromatic | More than that, having the generated MMD code manage arguments PCC-style rather than C style. | ||
| Hmm, there's a memory leak if you run ./parrot on a non-existent file. | 01:22 | ||
| kid51 | Infinoid: here's another unresolved RT: rt.perl.org/rt3/Ticket/Display.html?id=50212 | 01:23 | |
| jonathan | chromatic: Ah, so we don't have to marshall back to C again? | ||
| chromatic | Exactly. | ||
| jonathan | That may be a win, yeah. | ||
| chromatic | I experimented yesterday with rewriting some of the vtable entries in primes.2 in PIR as :multi subs, and it's substantially faster. | 01:24 | |
| jonathan | Worth trying. | ||
| Wow! | |||
| I guess the C/PIR boundry is a tad costly... | |||
| chromatic | Hugely. | ||
| jonathan | In that case, certainly worth trying. | ||
| chromatic | Right now I need to pack up and leave though. 'night all. | 01:25 | |
| jonathan | night | ||
| chromatic | Oh, and good work closing tickets, kid51. Much appreciated. | ||
|
01:27
Andy joined
|
|||
| dalek | r33126 | jkeenan++ | trunk: | 01:43 | |
| : Specify correct number of tests in plan. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33126 | |||
|
01:44
jimmy joined
01:45
Hadi joined,
Hadi left
02:14
tetragon joined
02:31
tetragon joined
|
|||
| dalek | r33127 | jkeenan++ | trunk: | 03:03 | |
| : In configuration tests, substitute a simple 'use' for 'use_ok'. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33127 | |||
| GeJ | otitis(es?) suck! | 03:14 | |
| dalek | r33128 | allison++ | pdd22io_part2: | 03:39 | |
| : [pdd22io] Use one-call version of 'readall' instead of pre-opening the | |||
| : filehandle. Faster because we can stat the file size and read in the | |||
| : whole thing at once. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33128 | |||
|
03:49
apeiron joined
03:54
Theory joined
04:16
Andy joined
|
|||
| jimmy | coke? | 04:17 | |
| purl | i guess coke is mailto:will@coleda.com | ||
| jimmy | ok | ||
|
05:52
chromatic joined
|
|||
| dalek | r33129 | allison++ | trunk: | 05:52 | |
| : [cage] Add a deprecation notice for the 'open' opcode mode strings. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33129 | |||
| r33130 | allison++ | pdd22io_part2: | 05:55 | ||
| : [pdd22io] Add in old mode-string parsing for backward-compatibility (to be | |||
| : removed after deprecation cycle). | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33130 | |||
| chromatic | There are reasons why math usesā ā¬f(xā)⬠andā ā¬f(x,yā)⬠rather thanā ā¬x.fā()ā¬,ā ā¬x.f(yā)ā¬,ā ā¬andā ā¬(x*yā)ā¬.fā()⬠--ā ā¬the latter is an attempt to express the idea of aā "ā¬truly object-oriented methodā" ā¬of two arguments and to avoid the inherent asymmetry ofā ā¬x.f(yā)ā¬. | 05:59 | |
| (Bjarne Stroustrup | |||
| ) | 06:00 | ||
| dalek | r33131 | pmichaud++ | trunk: | 06:29 | |
| : [core]: Fix up context leaks introduced in r33010. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33131 | 06:30 | ||
| r33132 | allison++ | pdd22io_part2: | 06:36 | ||
| : [pdd22io] Add 'eof' method to FileHandle PMC. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33132 | |||
| r33133 | allison++ | pdd22io_part2: | 06:48 | ||
| : [pdd22io] The 'rw' filehandle mode is truncating rather than appending unless | |||
| : 'rwa' is specified. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33133 | |||
|
07:10
uniejo joined
07:34
Hadi joined
07:36
apeiron joined
07:48
elmex joined
07:52
ff-wonko joined
08:00
Hadi left
08:19
alvar joined
08:41
iblechbot joined
09:03
chromatic joined
09:25
bacek joined
09:59
tomyan joined,
tomyan1 joined
10:24
AndyA joined
10:26
kj joined
10:31
NotFound joined
10:34
contingencyplan joined
11:09
tomyan1 left
|
|||
| dalek | r33134 | fperrad++ | trunk: | 11:16 | |
| : [HQ9Plus] change PASM registers to PIR registers | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33134 | |||
|
11:18
gmansi joined
11:31
Lorn joined
11:47
gmansi joined
12:01
gaz joined
12:19
skv joined
12:20
Maddingue joined
|
|||
| dalek | r33135 | fperrad++ | trunk: | 12:45 | |
| : [bf] change PASM registers to PIR registers | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33135 | |||
|
12:48
pis joined
|
|||
| pis | hello | 12:48 | |
| purl | que tal, pis. | ||
| jonathan | purl claims another victim! | 12:51 | |
| purl | jonathan: what? | ||
| szbalint | botsnack | 12:52 | |
| purl | thanks szbalint :) | ||
| cotto | I didn't know that .jp was a Spanish-speaking tld. | 12:56 | |
| szbalint | hello | 12:57 | |
| jonathan | knowing purl, "que tal" will be swearing in Japanese, or something... | ||
| ;-) | 12:58 | ||
| szbalint | hello purl | ||
| hmz no trigger | |||
| sjn wonders what the {*} feature masak writes about is | 13:02 | ||
| can anyone help me with that? :) | 13:04 | ||
| pmichaud | haven't read masak's writing yet | ||
| but I suspect the {*} is the 'actions' trigger | |||
| when encountered in a regex it calls a method in another object | 13:05 | ||
| sjn suspects he is too much of a perl6 newbie to understand what that means | 13:08 | ||
| m/(mymethod)/{*}/; # runs mymethod() ? | |||
| pmichaud | regex foo { 'hello' {*} } | 13:09 | |
| the {*} will call a method named 'foo' after matching the word 'hello' | |||
| sjn | ooh | ||
| pmichaud | it make it easy to write "after matching this pattern, trigger this method" types of things | 13:10 | |
| sjn | a sneaky non-intuitive opaque way to do event parsers :) | ||
| pmichaud | well, a lot of times we want to do parsing without actions. {*} is a convenient way to do that. | 13:12 | |
| sjn | nifty feature, but definitely one of those "OMGWTF" things for everyone who isn't aware of this | ||
| pmichaud | one could embed the action directly in the rule, but then you're always bound to the action. | ||
| if no actions are supplied (or if a 'foo' method doesn't exist), then {*} is the same as { * } | |||
| which basically means "do nothing" (or "do whatever") | |||
| sjn | * is legal syntax? | 13:13 | |
| what's the difference between ... and * ? | |||
| (sorry about the naĩve questions :-( ) | 13:14 | ||
| pmichaud | "..." is yadda yadda yadda -- it means "I haven't defined this yet". It throws a warning if executed. | ||
| "*" is the "whatever term" -- it's used to mean "whatever" in various contexts. | 13:15 | ||
| e.g., 1..* | |||
| sjn | so what effect would a "sub foo { * };" make? | 13:16 | |
| would it return something useful? | |||
| pmichaud | probably not. :-) | ||
| sjn | would it make a warning like ... ? | ||
| pmichaud | probably not. | ||
| I suppose it could return a Whatever object, but I don't know if that would then work the same as in other contexts. Probably would (but I'm not awake enough to know for sure yet.) | 13:17 | ||
| afk for a bit (getting kids off to school) | |||
| sjn suspects using {*} in a regex defaulting to { * } is one of those "silent bug" situations, where knowing this one feature means a _lot_ when debugging | 13:19 | ||
| sjn wonders if returning a plain "whatever" from a block should trigger a warning of some sort | 13:21 | ||
|
13:26
tetragon joined
|
|||
| sjn | "Warning: whatever operator used in void context. Did you mean, like, whatever?" | 13:27 | |
| Coke | woof. recent changes in parrot have killed tcl spec tests. | 13:30 | |
| "2008-11-19 12:51",159,"v0.8.1",57,4001,2341,1059,601,12550 | |||
| +"2008-11-23 22:59",172,"r33128",46,1822,1158,476,188,11353 | |||
| (to be fair, I should run that tests again with the older version of tcl.) | |||
| 2341 - 1158 ? | 13:31 | ||
| 2341 - 1158 | |||
| purl | 1183 | ||
| jonathan | Coke: In terms of speed, or in terms of them now failing? | 13:32 | |
| Coke | failing. I was completing 57 files and passing 2341 tests; with recent changes, I am completing 46 files and passing only 1158 tests. | 13:36 | |
| jonathan | bisect, I guess | 13:37 | |
| Coke | running one of the individual tests now just to see what the failure mode is. | ||
| jonathan: que tal == idiomatic "what's up?" I don't -think- it's dirty. | 13:44 | ||
| jonathan: ayup: Parrot VM: PANIC: Out of mem! | |||
| C file src/gc/memory.c, line 137 | |||
| kj | Coke: you're using any PASM registers in partcl? | 13:45 | |
| jonathan | Coke: I know what it means in Spanish - I was saying that it may mean something offensive in Japanese. ;-) | ||
| Coke | OH! | ||
| my bad. =-) | |||
| jonathan lived in Spain for 6 months, he at least learned that | |||
| Coke | kj: I don't think so. But I wouldn't expect usage of them to manifest as a PANIC out of memory. | 13:46 | |
| jonathan | kj: Even if he is, that error message is a odd way to fail... | ||
| Coke | jonathan: crap. I can't use the old version of tcl with the current version of parrot. (deprecated things removed.) | 13:47 | |
| jonathan | Arses. | 13:48 | |
| Coke: A backtrace of where we crash like that would be good. | |||
| Coke | jonathan: I presume it's very similar to the backtrace I posted this weekend. | 13:49 | |
| (which was a panic in another test file.) | |||
| which looked very much like the infinite exception loops p6 was tripping over. | |||
| kj | Coke,jonathan: you're right. Just wanted to make sure :-) | ||
| jonathan | Ah, ouch. | 13:51 | |
| Coke | running latest tcl against v0.8.1 to see if it works or goes boom. Then I can try to bisect. | 13:56 | |
| did pmichaud's exception changes ever hit trunk? | 13:57 | ||
| pmichaud | ...exception changes? | ||
| Coke | where I might have to change PIR code in the handlers? | ||
| pmichaud | I think they all got changed already. | 13:58 | |
| Coke | post 0.8.1 ? | ||
| pmichaud | pre 0.8.1, actually. | ||
| Coke | I'm pretty sure you didn't change tcl, though. =-) | ||
| pmichaud | tcl wasn't in the repo. :-) | ||
| Coke | ok. if it was pre 0.8.1, then it's probably not that. | ||
| pmichaud | I fixed all of the push_eh/pop_eh pairs that I found, but afaik we haven't enabled the core change in parrot that necessitated the change in the others. | 13:59 | |
| Coke | yah. it's just insanely hard for me to catch all the ways in which I am borked unless I run a daily tcl spectest. (which takes > 3 hours) | ||
| (and since it takes > 3 hours, i can't expect someone doing core dev to do it.) | |||
|
14:01
grim_fandango joined
|
|||
| Coke | ah, 32824 works, 33128 runs OOM. | 14:03 | |
| (with partcl r172 in both cases.) | 14:04 | ||
| pmichaud | (r33128) I blame pmichaud. | 14:05 | |
| the changes I made in 33010 that caused some serious context leaks, fixed in 33131. | 14:06 | ||
| Coke | well, there's about 158 commits in there; we'll see. =-) | ||
| pmichaud | so if you got OOM, I'd suspect that. | ||
| Coke | ah. so i should svn up first. ok. moment. | ||
| everything rebuilt, testing at 33135... | 14:11 | ||
| pmichaud++ | 14:19 | ||
| thanks, that saved me several hours of bisecting. =-) | |||
| PerlJam | good morning #parrot | 14:22 | |
| Coke loves the smell of GC in the morning. | |||
|
14:23
PacoLinux joined
|
|||
| Coke | . o O (not really) | 14:23 | |
|
14:26
dalek joined
|
|||
| Coke | when GC runs, does it put as many PMCs as possible on the free list, or the minimum? | 14:30 | |
| (testing a previously failing memory hog to see if it's improved: currently up to a parrot with 1.6G) | |||
| wondering what is keeping hold of what PMCs here. | 14:31 | ||
| ooh, 2.11G | 14:35 | ||
| once a .Sub is put in a .namespace, is it ever freed? | 14:36 | ||
| pmichaud | it's like any other gc-able element, I would guess. It gets freed when there aren't any references to it any longer. | 14:37 | |
| Coke | (and, a related question, are anon Subs ever reclaimed? I would expect so, yes?) | ||
| also, is there any easy way to get the GC system to tell me what it's hanging on to? | |||
| pmichaud | most of the subs I deal with tend to be part of their surrounding Eval PMC. | ||
| including anonymous ones. So, the anonymous ones stick around as well. | 14:38 | ||
| (at least until the entire Eval PMC is dropped.) | |||
| seems like it ought to be possible to get the GC mark function to provide some information about what it's traversing. | 14:39 | ||
| Coke | there's no reason for partcl to be consuming this much memory. :| | ||
| I mean, I'm sure something is hanging on to a reference somewhere, but... ah, there. hit about 2.4G before exploding on my desktop. | 14:40 | ||
| Coke fires up valgrind. | 14:41 | ||
| valgrind? | |||
| purl | valgrind is not only astonishingly clever, but also has a beautifully written manual. or developer.kde.org/~sewardj/ or an open-source memory debugger or see also cachegrind or kcachegrind or No Silver Bullet or a time saver or mostly working on FreeBSD or not working on windows | ||
| Coke | valgrind parrot? | ||
| ah, wait, I already did a valgrind run and, as i recall, no one saw anything useful. | 14:42 | ||
| jonathan | That certainly sounds like something is leaking...or references are being kept. | 14:43 | |
| Coke | I wonder if a run against something that actually completed would be more useful. | ||
| Infinoid | purl, valgrind parrot is valgrind --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test | 14:44 | |
|
14:45
jimmy joined
|
|||
| Infinoid | purl is ignoring me. | 14:45 | |
| Coke | src/pmc.c:476: warning: no previous prototype for 'pmc_free' | 14:46 | |
| anyone with memory-fu; feather's /tmp/coke_leak has the results of a [puts hi] in tcl. | 14:55 | ||
| summary: | |||
| ==24939== definitely lost: 163,112 bytes in 2,364 blocks.^M | |||
| ==24939== indirectly lost: 125,331 bytes in 1,228 blocks.^M | |||
| ==24939== possibly lost: 104 bytes in 1 blocks.^M | |||
| ==24939== still reachable: 77,284 bytes in 7 blocks.^M | |||
| so that seems pretty lossy. | |||
|
15:01
PacoLinux joined,
masak joined
|
|||
| Coke | I'm seeing a ton of these: | 15:02 | |
| ==24939== Use of uninitialised value of size 4 | |||
| ==24939== at 0x4211702: Parrot_dod_trace_children (dod.c:436) | |||
|
15:02
Andy joined
|
|||
| Coke | looks like it's because PMC* next; is never initialized; init'ing to PMCNULL and running make test so see if anything breaks. | 15:06 | |
| Coke stresses that hINACP. =-) | |||
|
15:06
skv_ joined
|
|||
| masak | Coke: you just play one on TV? | 15:06 | |
|
15:07
skv__ joined
|
|||
| PerlJam | Coke: Isn't line 436 where it is initialized? | 15:07 | |
| Or does it only count when initialization happens at declaration? | 15:08 | ||
| (that would seem odd) | |||
| Coke | t/pmc/bigint.t is failing the new pasm register stricture. | 15:09 | |
| PerlJam: an excellent question. I have no idea why valgrind is complaining about that. | 15:10 | ||
| kj: ping | |||
| pmichaud | Coke: I know it takes forever to do, but I'd be curious if the memory leak also occurs in r33009 (i.e., before my 33010 patch) | ||
| kj | Coke: pong | 15:11 | |
| bigint.t failing eh? moritz reported success yesterday | |||
| PerlJam | If I were guessing, I'd say that some bit of current that PMC_next_for_GC() is using isn't initialized (also guessing that valgrind isn't smart enough to introspect #defines) | ||
| Coke | pmichaud: checking. | 15:16 | |
| PerlJam: am I wrong to expect macros to be all caps? | 15:17 | ||
| PerlJam | Coke: probably. PMC_next_for_GC is a #define in include/parrot/pobj.h | 15:18 | |
| Coke | ok. that expands to (pmc)->pmc_ext->_next_for_GC | ||
| PerlJam | ack++ :-) | 15:19 | |
| Infinoid | we have lots of mixed-case macros, e.g. PObj_is_PMC_TEST() | ||
| Andy | PerlJam: Great! Now help me get tarball searching on it! | ||
| Coke | PerlJam: ok. now that I know what that one macro expands to, I have... no idea how to fix it. =-) | 15:20 | |
| Coke is tempted to just add it to the bottom of the valgrind supressions with a note that anything after this point might be fixable. | 15:21 | ||
| PerlJam | Coke: me either. But I'd be looking for where ever the pmc_ext structure is created to make sure that _next_for_GC is initialized to NULL or something. | ||
| Coke supposes it would be easier to turn off that kind of valgrind warning for now. =-) | 15:22 | ||
| PerlJam | Andy: sure ... first you tell the person running ack to untar the file in /tmp and re-run ack on that. :> | ||
| Andy: But I suppose you want to use Archive::Tar or something | 15:23 | ||
| Andy | Yeah, see, that's sort of a suboptimal solution. | ||
| Coke | pmichaud: Revision: 33009 | 15:26 | |
| still has the memory explosion. | |||
| pmichaud | okay, that makes me feel better. | 15:27 | |
| thanks for checking it. | |||
| kj | Coke: you looking for me? | 15:28 | |
| dalek | r33136 | pmichaud++ | trunk: | 15:29 | |
| : [core]: Improve a context refcount diagnostic just a bit. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33136 | |||
| PerlJam | pm: how goes the lex stuff? | 15:30 | |
| dalek | r33137 | pmichaud++ | lex5: | ||
| : One last branch for final development/testing of lexicals support. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33137 | |||
| PerlJam | oh, heh. | ||
| If I'd've waited a few seconds ... | |||
| Coke | pmichaud: still some context-related leaks in trunk, it seems. | 15:31 | |
| nopaste | "coke" at 72.228.52.192 pasted "sample of context leaks?" (44 lines) at nopaste.snit.ch/14697 | 15:34 | |
| pmichaud | Coke: yes, there were context leaks even before r33009 though. | 15:36 | |
| r33009 wasn't intended to change the number of context leaks, just improve our ability to do something about them. | 15:37 | ||
| s/r33009/r33010/ | |||
| Coke | ok. they seem to be the largest single source of leaked memory in parrot right now. What can I do to help make them go away? | ||
| pmichaud | we need to figure out what isn't calling Parrot_free_context() at the right time. | ||
| namespace_54.pir exposes a leak, and is short. | 15:38 | ||
|
15:38
PacoLinux joined
|
|||
| Coke | if i have a trace from valgrind that shows information about the leak, is that helpful? | 15:39 | |
| nopaste | "pmichaud" at 72.181.176.220 pasted "leaks in namespace_54.pir (r33009)" (127 lines) at nopaste.snit.ch/14698 | ||
| Coke | (for example, the partial one postedin nopaste?) | ||
| pmichaud | valgrind's information tells us where the leaked memory was created | ||
| so whatever creates it ought to be cleaning it up at some point. | |||
| Coke | since contexts are using refcounting, shouldn't that really narrow down the search area? | 15:40 | |
|
15:40
jhorwitz joined
|
|||
| pmichaud | yes. | 15:40 | |
| although I suspect part of the problem is in pccinvoke | 15:41 | ||
| Coke | which test file is that from? | ||
| pmc/namespace.t? | |||
| pmichaud | prove t/pmc/namespace.t | ||
| then grab t/pmc/namespace_54.pir | |||
| ooops. | 15:42 | ||
| Looks like the context leak in namespace_54.pir was fixed sometime between r33009 and head. :-) | |||
| Coke | ? it's still leaking. | 15:43 | |
| r33135 | |||
| pmichaud | okay, let me check. | ||
| maybe fixed in r33136? | 15:44 | ||
| that really shouldn't have changed anything, though. | |||
| Coke | fixed between 33135 and 33137 | 15:45 | |
| ... and 37 was in a branch. | |||
| so yah. retesting tcl... | |||
| pmichaud | that's weird. | 15:46 | |
| oh, wait. | |||
| yes, r33135 would've had a leak, now fixed in r33136. | |||
| Coke | "puts hi" in tcl goes from: | 15:47 | |
| ==7590== definitely lost: 163,112 bytes in 2,364 blocks. | |||
| to: | 15:48 | ||
| ==11437== definitely lost: 19,656 bytes in 1,002 blocks. | |||
| pmichaud | ahhh, much better. | ||
| what leaks are left? | |||
| Coke | biggest leaks remaining are in dyops. | 15:49 | |
| "dynops" | |||
| pmichaud | if there are any Parrot_free_context alls in the dynops, the ",0)" probably needs to be changed to a ",1)" | ||
| nopaste | "coke" at 193.200.132.135 pasted "leaks in tcl's [puts hi]" (3618 lines) at nopaste.snit.ch/14699 | 15:50 | |
| Coke | I am also disconcerted that the test program -fails- when run via valgrind, but one thing at a time. =-) | 15:51 | |
| purl | okay, Coke. | ||
| Coke | ah, still some context failures in there. | ||
|
15:51
hercynium joined
|
|||
| Coke | OOOH. if you do a search in chrome, it highlights the match points in the scrollbar. | 15:52 | |
| chrome++ | |||
| Infinoid | stuff on the context-reuse list usually show up as leaks. it would be really nice if we could somehow tell valgrind that Parrot_free_context() is a form of free(). | 15:54 | |
| pmichaud | actually, it doesn't show up as leaks. | ||
| the context-reuse list will get freed if --leak-test is added to Parrot's command line. | |||
| Infinoid | oh, cool. | ||
| Coke | vgp? | 15:55 | |
| vgp is valgrind --suppressions=/home/coke/sandbox/parrot/tools/dev/parrot.supp --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test $@ | |||
| (from chromatic's valgrind test) | |||
| Infinoid | vgp? | 15:56 | |
| purl ignored me too... | |||
| purl | Infinoid: what? | ||
| Coke | vgp? | ||
| purl thinks that's a karma line. | |||
| purl | Coke: huh? | ||
| pmichaud | purl, vgp is valgrind --suppressions=tools/dev/parrot.supp --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test $@ | 15:57 | |
| purl-- | |||
| purl | pmichaud: i'm not following you... | ||
| Infinoid | karma valgrind | ||
| purl | valgrind has karma of 20 | ||
| Coke | vgp? | 15:58 | |
| purl | well, vgp is valgrind --suppressions=/home/coke/sandbox/parrot/tools/dev/parrot.supp --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test $@ | ||
| Coke | (you have to escape the -- as -\\-) | ||
| pmichaud | maybe change suppressions so that it doesn't have the /home/coke... in it ? | ||
| just tools/dev/parrot.supp ought to be sufficient. | |||
| Infinoid | Coke++ | 15:59 | |
| Coke | vgp? | ||
| purl | hmmm... vgp is valgrind --suppressions=tools/dev/parrot.supp --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test $@ | ||
| Coke | purl, scooby snack. | ||
| purl | Rank roo, Coke! | ||
| Coke | (I just added some local modifications to the .supp file to ignore the uninitialized warnings) | 16:02 | |
| should I open a ticket pointing to that nopaste for tcl's [puts hi] ? | 16:03 | ||
|
16:03
alvar joined
|
|||
| pmichaud | maybe for leaks in general. I suspect that context leaks will be resolves when we re-do contexts as PMCs anyway. | 16:05 | |
| although it may be worthwhile to keep searching them out a bit. | |||
|
16:06
Hadi joined,
Hadi left
|
|||
| Coke | Since partcl is definitely experience memory pressure, every bit helps, I suspect. | 16:08 | |
| (opening trac ticket.) | |||
| pmichaud | do we have trac-to-email yet? | ||
| Coke | iunno | 16:09 | |
| pmichaud | not a reason not to post the ticket -- was just curious. | ||
| Coke slowly waits for the attachment to be posted... | 16:13 | ||
|
16:14
skv__ joined
16:17
Theory joined
|
|||
| Coke gives up and just posts a link. | 16:19 | ||
|
16:20
sjansen joined
|
|||
| Coke sees if patrick's recent fixes to trunk allow him to reclaim any more tcl files. | 16:23 | ||
| s/files/spec tests/ | |||
| particle | pmichaud: trac updates forwarded to a mailing list? yes, parrot-tickets@lists.parrot.org | 16:29 | |
|
16:31
Hadi1 joined
16:37
tomyan1 joined
16:38
tomyan2 joined,
tomyan1 joined
16:39
rdice joined
|
|||
| Coke | pmichaud: I seem to be hemmorraging memory at a slightly less prodigious rate. | 16:39 | |
| dalek | r33138 | pmichaud++ | lex5: | 16:43 | |
| : Merge in latest versions of lexical code, for testing before trunk merge. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33138 | |||
| jonathan afk for a while | 16:44 | ||
| pmichaud | jonathan: subtypes is failing for me in the lex5 branch -- any ideas? | 16:46 | |
|
16:48
Hadi1 left
|
|||
| Andy | The Parrot 1.0 is getting much traffic on reddit. www.reddit.com/submit?url=http%3A%2...March+2009 | 16:51 | |
| and chromatic++ for some of the least frantic anti-FUD I've seen in a while. | |||
| particle | is there a way to view that without getting an account? | 16:52 | |
| jhorwitz | www.reddit.com/r/programming/commen...arch_2009/ | 16:55 | |
| pmichaud | does it require an account to read? | ||
| I remember reading it w/o logging in at one point. | |||
| particle | jhorwitz++ | ||
| pmichaud | yes, jhorwitz++ | ||
| jhorwitz | above link is for the comments -- the article is direct from perlbuzz | 16:56 | |
| Andy | that's one set of comments. | ||
| the other set is www.reddit.com/r/perl/comments/7ej5...arch_2009/ | |||
| jhorwitz | andy++ :) | 16:58 | |
| dalek | r33139 | tewk++ | trunk: | 17:00 | |
| : [SQLite3] remove dependency on C | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33139 | |||
| particle | tewk: does this mean we can use sqlite from rakudo now? | 17:05 | |
| tewk | I just patched up the incomplete implementation. We need to add more functions, but it works from PIR | 17:07 | |
| Basically I removed the need for c code. | |||
| particle | seems the makefile needs changing | ||
| tewk | Someone needs to add a bunch of functions, maybe I'll revive NCIGEN tonight and see if I can spit them all out. | 17:08 | |
| Coke | one of the top google hits for parrot 1.0 is a WOW site. | ||
| tewk | I know I can parse, sqlite3.h so it will be a good exercise to make sure the generated pir bindings are right. | ||
| lathos was working on it, I had some changes that were sitting in my wc, so I checked them in. | 17:09 | ||
| Coke | where is interp freed? | 17:13 | |
| got it. | 17:15 | ||
|
17:15
tomyan1 left
|
|||
| particle | is it in Parrot_really_destroy? | 17:15 | |
| Coke | ayup. | 17:17 | |
| but I soon realized my C is not up to this task atm. | |||
| particle | what task? | ||
| purl | task is a single atomic action for a client | ||
| Coke | trac.parrot.org/parrot/ticket/5 | 17:19 | |
| kj | Coke: you were looking for me? | ||
| Coke | kj: regarding the t/pmc/bigint.t failure. | ||
| pmichaud | manifest failing in trunk. | ||
| kj | is it failing for you? | ||
| Coke | it did earlier today. | 17:20 | |
| kj | (I don't have a bigint lib installed; can't check) | ||
| moritz reported success yesterday | |||
| Coke | do you have an account on feather/ | ||
| kj | i don't think so | ||
| pmichaud | r33139 breaks build. | ||
| Coke | why do we have "if 0 ... endif" code checked in? seems evil. | ||
| "src/interpreter.c" line # 1175 | 17:21 | ||
| pmichaud | Coke: there's quite a few of those. | ||
| Coke | should they all be ripped out? | ||
| pmichaud | they're quick ways to enable/disable various bits of debugging code. | ||
| at this point I would not expect to be ripping them out. Perhaps as we near 1.0. | 17:22 | ||
| particle | yes, that's a good cleanup item. we need a tracking ticket | ||
| kj | Coke: is bigint.t passing now? | 17:23 | |
| Coke | nop | ||
| Revision: 33137 | |||
| t/pmc/bigint (Wstat: 256 Tests: 44 Failed: 1) | 17:24 | ||
| particle | pmichaud: fixed trunk in r33140 | ||
| pmichaud | particle++ # thanks | ||
| kj | Coke: what's the error message? | ||
| purl | it has been said that the error message is in op.c | ||
| Coke | # error:imcc:'$N10' is not a valid register name in pasm mode | ||
| # in macro '.fp_eq' line 15 | |||
| kj | ah | ||
| i know | |||
| dalek | r33140 | particle++ | trunk: | ||
| : fix tewk--'s manifest-o | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33140 | |||
| particle | hrm... so you can't use pasm macros in pir anymore? | 17:25 | |
| kj | particle: basically... you can't use PASM registers anymore in macros if you expand them in PIR code | ||
| particle | seems that error is pir-macro-in-pasm, which should fail | ||
| kj | I added a fp_eq_pasm variant using PASM registers | 17:26 | |
| particle | is there a pir2pasm compiler that can be used instead of making copies? | ||
| Coke | since a macro isn't pasm or PIR but just a snippet of text, I think barfing at compile time (after macro expansion) is still the right thing to do. | 17:27 | |
| kj | well a solution would be to use .local nums | ||
| ehm | |||
| Coke | particle: (pir2pasm) that hasn't worked in aeons, has it? | ||
| particle | yes, .macro_local | ||
| pmichaud | src/pmc.c:477: warning: no previous prototype for āpmc_freeā | ||
| kj | no, that wouldn't work | ||
| pmichaud | seems like a fixable warning. | ||
| Coke | pmichaud: I tried pasting that in here earlier today and no one noticed. =-) | ||
| kj | particle: well, .macro_local is still mapped to a .local in the end | ||
| Coke | I'm guessing we need a ticket. =-) | ||
| kj | particle: it's a bit unfortunate yes... long term I would think I can fix it. Short term, it's the choice what's more important: allowing PASM macros in PIR, or allow PASM regs in PIR mode. | 17:30 | |
| dalek | r33141 | kjs++ | trunk: | 17:31 | |
| : [t] change expansion of .fp_eq into .fp_eq_pasm, as PASM registers in PIR mode are no longer allowed. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33141 | |||
| kj | Coke: r33141 should fix it for you (bigint.t) | ||
| Coke | kj++ | 17:32 | |
| kj | kj-- # for breaking so much :-( | ||
| particle | pmichaud: are tge failures expected in lex5 atm? | 17:33 | |
| Coke | kj: having just broken a ton of things before 0.8.2, i think you're fine. =-) | ||
| kj | I thought that macros were not part of PASM anyway... apparently they are. | 17:34 | |
| Coke will hold off reporting more leakages, he supposes, until the ones in trac 5 are fixed. | 17:35 | ||
| looks like quite a few leaks from imc_compile_unit | 17:37 | ||
| pmichaud | particle: no, they are not expected. | ||
| Coke | seen chromatic? | 17:38 | |
| purl | chromatic was last seen on #parrot 11 hours, 37 minutes and 44 seconds ago, saying: ) | ||
| nopaste | "particle" at 98.232.28.49 pasted "tge failures in lex5" (102 lines) at nopaste.snit.ch/14701 | ||
| dalek | r33142 | pmichaud++ | lex5: | 17:41 | |
| : Properly handle freeing of outer_ctx, and don't mark dead contexts. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33142 | |||
| pmichaud | particle: the failures are happening in an 'onload' sub? That's... odd. | 17:42 | |
| particle | unquestionably. | ||
| pmichaud | I wonder if it's the load_bytecode bug. | ||
| particle | what bug is that? i lost track of parrot before the weekend, so i'm way behind (judging by the amount of irc traffic) | 17:43 | |
| pmichaud | load_bytecode depends on using a freed context. | 17:44 | |
| I didn't port that fix from lex4 into lex5, but I can try that. | |||
| particle | c:\\Users\\particle\\dev\\parrot\\lex>parrot -t 1 t\\compilers\\tge\\basic_1.pir | ||
| 0 load_bytecode "TGE.pbc" | |||
| ayep. | |||
| pmichaud | okay, just a sec. | 17:45 | |
|
17:46
chromatic joined
|
|||
| particle | kj: do you know if the bytecode loader is sufficiently decoupled from imcc that we can build a parrot without imcc that can run bytecode? | 17:47 | |
| kj | I know that somewhere parrot calls into IMCC | ||
| particle wants a "parrot runtime environment" | |||
| kj | it has to , because load_bytecode "foo.pir" needs to use IMCC to compile | ||
| pmichaud | particle: is that useful yet for dynamic languages? | ||
| Coke | not for tcl. | 17:48 | |
| pmichaud | i mean, eval() goes out the window without imcc. | ||
| Coke | (I invoke imcc several thousand times.) | ||
| particle | right, no eval. | ||
| does rakudo use eval today? | |||
| kj | preferably it could be a function pointer, so that it's easy to switch to a different pir compiler | ||
| pmichaud | it uses "use" | ||
| kj | *...it could be /through/ a function pointer... | ||
| pmichaud | yes, the thing being used could be precompiled into bytecode also. | 17:49 | |
| particle | merge_pbc | ||
| chromatic | "(I invoke imcc several thousand times.)" | ||
| pmichaud | but you can see the diminished returns of a parrot w/o a pir compiler. | ||
| particle | yes, i understand that | 17:50 | |
|
17:50
alvar joined
|
|||
| particle | but if we're to run in embedded systems, we need tradeoffs | 17:50 | |
| pmichaud | it would be great if imcc could become a dynamic library. | ||
| (or more precisely, imcc's replacement) | |||
| particle | gimme a small parrot runtime, and a merged pbc file i can run on my treo/sony ereader/bug | ||
| pmichaud | I'd like to put "dynamic load" as a prereq for pirc, actually. | 17:51 | |
| dalek | r33143 | kjs++ | trunk: | 17:52 | |
| : [pirc] Allow PIRC to parse and expand macros in PASM mode. This is too easy... I need a challenge! Oh wait, I've got a few already. Nevermind. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33143 | |||
| pmichaud | particle: maybe r33144 fixes tge for you? | 17:56 | |
| kj | pmichaud: what's "dynamic load"? | ||
| pmichaud | kj: load imcc or pirc only when they're first needed or requested | 17:57 | |
| kj | ah ok | ||
| pmichaud | kj: as opposed to having them built-in as part of parrot. | ||
| kj | basically it's a dll then | ||
| pmichaud | yes. | ||
| dalek | r33144 | pmichaud++ | lex5: | ||
| : Clean up context handling around load_bytecode. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33144 | |||
| kj | that shouldn't be too hard I think. | ||
| pmichaud thinks of a cool optimizatio for PGE matching against utf-8 strings. | 18:02 | ||
| *optimization | |||
| Coke | pmichaud: only failures for me in lex5 is t/pmc/bigint.t (osx/86) | 18:03 | |
| Revision: 33142 | |||
| pmichaud | Coke: noted, thanks. | ||
| I'm a little surprised bigint.t fails there -- I wouldn't think that what I'm doing affects that in anyway. | 18:04 | ||
| *any way. | |||
| kj | isn't that fixed by 33144? | ||
| Coke | pmichaud: it's probably the holdover failure that was only recently fixed on trunk. | ||
| pmichaud | could be. | ||
| Coke | (yup) | ||
| chromatic: you're back! | |||
| I have some lovely memory leaks for you! | |||
|
18:06
Theory joined
|
|||
| Coke | chromatic: trac.parrot.org/parrot/ticket/5 | 18:07 | |
| chromatic | Hm, the dynop leak is big. I'll work on that one first. | 18:09 | |
| Coke | chromatic++ | 18:10 | |
| dalek | r33145 | kjs++ | trunk: | 18:12 | |
| : [pirc] allow .macro_const in PASM mode; some cleanups | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33145 | |||
| r33146 | julianalbo++ | trunk: | 18:20 | ||
| : make pmc_free static and update headerizing of pmc.c | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33146 | |||
| moritz | kj: there was some misunderstanding, I fear. I reported success with a fix that also broke other test files, which is why I didn't commit it | ||
| particle | 0.1124*2000 | 18:21 | |
| purl | 224.8 | ||
| kj | moritz: ooh. I see. | ||
| ehm, I updated bigint.t, to use fp_eq_pasm | |||
| instead of fp_eq | |||
| was that your fix as well? | |||
| NotFound | CTX_LEAK_DEBUG_FULL and CTX_DEBUG_LEAK_FULL are different or is a typo? | ||
| pmichaud | typo | 18:22 | |
| moritz | kj: I didn't get that far | ||
| pmichaud | CTX_LEAK_DEBUG_FULL is correct. | ||
| NotFound | Ok, fixing. | ||
| kj | moritz: ok, that's fine. I did that already (just wondering whether *that* caused other tests to fail) | ||
| moritz: thanks for letting me know | |||
| dalek | r33147 | julianalbo++ | trunk: | 18:24 | |
| : fix CTX_DEBUG_LEAK_FULL/CTX_LEAK_DEBUG_FULL typo | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33147 | |||
|
18:29
gaz joined
|
|||
| dalek | r33148 | kjs++ | trunk: | 18:33 | |
| : [pirc] give a better error message when using PASM registers in PIR code. I0 = 1, with I0 undeclared, will report a useful message. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33148 | |||
| particle | pmichaud: still get same failures with branch head. trying realclean now | 18:34 | |
|
18:35
skv__ joined
|
|||
| particle | kj: are pasm register names outlawed in pir for named vars? they should be. | 18:36 | |
| .local pmc I0 # eek! | |||
|
18:36
skv___ joined
|
|||
| kj | well, no, I didn't want to disallow them. Just implementing a warning if you're runnign with warnings on | 18:37 | |
| I mean, if we're allowing .local int int | |||
| then why should .local int I0 be disallowed? | |||
| particle | if if then then goto goto | 18:38 | |
| kj | yeah... I know :-) | 18:39 | |
| that's 1 if too much btw | |||
| NotFound | if if=then then goto goto | ||
| particle | oh, wait, i had a typo there?!?!! how was i supposed to know? :P | 18:40 | |
| kj | ha ha | ||
| NotFound | This way works on ZX-Spectrum Basic. | 18:41 | |
| kj | well, I think the decision was to have as few reserved words as possible | ||
| it took quite some effort to implement that! :-P | |||
|
18:48
purl joined
|
|||
| Coke | if I wish to 'smoke' perl 5.8.9RC1 - is there some way to report how 'make test' went? | 18:49 | |
| chromatic | I think there's a 'make ok' target. | 18:51 | |
| dalek | r33149 | pmichaud++ | lex5: | 18:52 | |
| : Only mark the current continuation as live once, not once per context. | |||
| : Try mark_context without following the outer_ctx chain. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33149 | |||
| Coke | amazing how much faster this runs on my osx/86 box than perl4 did on xenix. =-) | ||
| NotFound | Hasn't SCO claimed property of Perl? | 18:53 | |
|
18:54
skv___ joined
|
|||
| Coke | not sfaik. | 18:54 | |
| (my days of building perl on xenix are LONG ago) | |||
| jonathan returns | 18:57 | ||
| NotFound | Don't tell SCO you did, just in case ;) | ||
| pmichaud | jonathan: t/spec/S02-builtin_data_types/subtypes.t is failing for me in lex5... any clues? | 18:58 | |
| (I haven't looked that closely yet...just curious if you could think of anything offhand) | |||
| jonathan | It's only failing in lex5? | ||
| pmichaud | yes. | ||
| jonathan | And you just changed lexical and context related things? | ||
| pmichaud | it appears to be working in trunk. | ||
| afaik, that's all I changed. | |||
| jonathan | OK | ||
| pmichaud | I'll get a full spectest failure list here in a few minutes. | 18:59 | |
| jonathan | Nothing off hand, but if I see how it's failing I might think of something. | ||
| It's only an anonymous subclass, if those are br0ke I'd expect to see much failure elsewhere. | 19:00 | ||
| pmichaud | last time I checked I was getting some other class-related failures, too. | ||
| jonathan | Ah, OK | 19:01 | |
| The bunch are likely related. | |||
| pmichaud | t/spec/S12-class/open.t | ||
| t/spec/S12-enums/basic.t | |||
| dalek | r33150 | kjs++ | trunk: | 19:02 | |
| : [pirc] give a warning when using PASM regs as PIR identifiers. only when running with -W warnings on option. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33150 | |||
| jonathan | Hmm...harder to see a pattern in those two... | ||
| Checking out the branch now | |||
| tewk | jhorwitz: ping what mod_parrot signature would you most like to work without C stubs, the char** one, where is it in mod_parrot? | 19:04 | |
| purl | I can't find what in the DNS. | ||
| dalek | r33151 | julianalbo++ | trunk: | ||
| : fix several pitfalls that fooled heeaderizer and update headerizing | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33151 | |||
| jhorwitz | tewk: char ** is the only troublesome one. it's used as an out arg. | 19:05 | |
| tewk | OUT only right, not an IO/OUT | ||
| who free it? | 19:06 | ||
| jhorwitz | i'm not using it cuz it was broken | ||
| oh wait, you mean the actual apache function.... | |||
| tewk | so do you need to free it later? | 19:07 | |
| jhorwitz | i *think* it's managed by an APR pool in apache, so apache will deal with it. i create a parrot string from it. | ||
| yep -- apache allocates the memory from a pool for it | 19:08 | ||
| nopaste | "pmichaud" at 72.181.176.220 pasted "rakudo spectest failures in lex5 branch (r33149)" (12 lines) at nopaste.snit.ch/14702 | 19:09 | |
| jhorwitz | so we wouldn't need to free it | ||
| tewk | I think we could probably change src/pmc/pointer.pmc to return a string and just use pointer with the V signature. | ||
| nopaste | "pmichaud" at 72.181.176.220 pasted "rakudo spectest failures in lex5 branch (r33149) #2 -- annotated" (12 lines) at nopaste.snit.ch/14703 | ||
| jhorwitz | tewk: V is an OUT char **? | 19:10 | |
| tewk | jhorwitz: so you create a Pointer pmc, pass it in to the function with the "V" signature and then call S0 = P0. | ||
| jhorwitz | i see | ||
| tewk | V is a void ** but you have to pass in a Pointer PMC. if we change the get_string call on Pointer it should just work. | 19:11 | |
| jhorwitz | ah | ||
| makes sense | |||
| so in theory that should also work for P1=P0 where P1 is a Perl6Str? | |||
| tewk | Pointer is a PMC that kinda represents the & of operation in C calling semantics. | 19:12 | |
| jhorwitz | or maybe i need that S0=P0 in between.... | ||
| ok, in any case, sounds like that should do the trick | 19:13 | ||
| tewk | We use it for opaque pointer but it really should work for any OUT params. | ||
| s/pointer/pointers/ | |||
| I'll continue looking into it and probably patch it tonight. | |||
| NotFound | I think we need a sort of unmanaged pointer pmc with the ability to set a free function for his content. | 19:14 | |
| tewk | yep, I'll go look at all the uses of pointer and then either make unmanaged pointer or modify pointer itself. | 19:15 | |
| jhorwitz | when you're done it's trivial to try it out in mod_parrot | ||
| NotFound | Well, maybe "unmanaged" is not an adequete name in that case. | 19:16 | |
| tewk | see CPointer.pmc | 19:17 | |
| jonathan | pmichaud: That test dies...early. | ||
| pmichaud | which one? | ||
| tewk | CPointer isn't quite right either, but I'll write one that works | 19:18 | |
| jonathan | subtypes.t | ||
| looking at why now | |||
| It actually fails inside parrot;P6protoobject;ACCEPTS | 19:20 | ||
| pmichaud | ...maybe it's eval related? | ||
| most of these failures seem related to eval. | |||
| jonathan | pmichaud: Here's probably a good clue. | 19:21 | |
| > multi sub my_abs (Num where { $^n >= 0 } $n){ $n } | |||
| '' isn't the :outer of '_block47' | |||
| GeJ | Good morning everyone | ||
| jonathan | pmichaud: In fact, I can reduce it | 19:22 | |
| sub ($n where { 1 }) { 1 } | |||
| pmichaud: That isn't even using the new subtype stuff in fact...I didn't convert anonymous ones to do so yet, becuase there's a parameter refactoring due anyway. | |||
| pmichaud: So it just generates a block (Parrot .sub) for the { 1 } and then invokes it as part of the type check. | 19:23 | ||
| particle | kj: pasm is human-readable bytecode | ||
| pmichaud | jonathan: okay, I'll check there. | ||
| jonathan | pmichaud: Looks to be something to do with outers... | ||
| particle: bytecode is readable to with a hex editor ;-) | |||
| jonathan speaks from painful experience | |||
| particle | you signed up for that pain! :P | 19:24 | |
| jonathan | Masochism's a good thing, right? | ||
| particle | imcc shouldn't do register allocation for pasm, unless it also does it for bytecode | 19:25 | |
| yes, and i enjoy your masochistic tendencies | |||
| kj | particle: well, ISTR that if you do print P1 in imcc, it'll emit print P0 | ||
| dalek | r33152 | kjs++ | trunk: | ||
| : [pirc] now for all identifiers that resemble PASM names, give a message saying they're not allowed in PIR mode. This also resulted in a nice refactoring. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33152 | |||
| kj | but just want to get this clear now, so I can DTRT | 19:26 | |
| particle | kj: yes, understood | ||
| purl | Roger Roger. | ||
| NotFound | I have a suggestion: make --maintainer option always run codetest | ||
| pmichaud | jonathan: where does that block get attached...? | 19:28 | |
| kj | particle: but I was wrong. IMCC DTRT as well. | ||
| particle | i thought imcc did not do any register allocation. are you saying that is correct? | 19:29 | |
|
19:29
rob joined
|
|||
| jonathan | pmichaud: signature | 19:30 | |
| (as in the action method) | |||
| kj | I just assembled + disassemlbed 'print P10', and it stays P10, so no allocation in PASM mode. And that's right I think | ||
| jonathan | Oh, hmm | ||
| We generate the block once, but push it in two places (the same block), but we get two blocks generated from the one PAST node. | |||
| particle | pmichaud: realclean and maybe your patch fixed tge in lex5 for me | ||
| pmichaud | particle: excellent, thanks! | ||
| particle | now just failing eval.t | ||
| pmichaud | jonathan: pushing block in two places is a bad thing. | ||
| particle: eval.t in parrot 'make test', or ...? | 19:31 | ||
| jonathan | It appears that now it indeed is. | ||
| particle | likely due to temp files overwriting each other | ||
| t/pmc/eval.t 1 256 17 1 10 | |||
| kj | temp files: I think there was an email on that on the list recently | ||
| jonathan | pmichaud: Thus the plan was to stick it once in the signature object and pull it from there. | ||
| particle | it fails in trunk, too | ||
| chromatic | I fixed t/pmc/io.t, t/pmc/eval.t, and t/io/filehandle.t with regard to temp files. | 19:32 | |
| pmichaud | jonathan: well, the real question is... what's the scope of the where block? | ||
| particle | chromatic: i get a permission denied in test 10, checking source now... | ||
| jonathan | It can see things that were bound so far in the signature | ||
| pmichaud | so, it's gotta appear in the sub block itself. | ||
| jonathan | But if the where block has an outer of the signature generator sub, and that in turn has an outer that is the sub itself, it would all Just Work. | 19:33 | |
| chromatic | particle, Windows has a weird idea about not unlinking files you have open. | ||
| pmichaud | ....yes, but eventually I'm hoping that the signature generator sub becomes not a part of the inner scope. | ||
| jonathan | Of course, we can be much neater about this when .const 'Sub' $P0 = 'foo' works for subid | ||
| particle | yep, figured it was something like that, c | ||
| jonathan | Yes, we can do that. We'll make the where block then have an outer of the correct sub. | 19:34 | |
| And then look it up from its subid in the one generator sub. | |||
| pmichaud | okay, I get the picture now. | ||
| jonathan | But we can't have that yet. | ||
| pmichaud | what changed is that lex5 is stricter about making sure that we close from the outer block. | ||
| jonathan | Aha. | ||
| OK, so options are... | 19:35 | ||
| pmichaud | the mainline _claimed_ to be checking for such things, but the check was broken such that it allowed closing from, well, anywhere. | ||
|
19:35
Hadi joined,
Hadi left
|
|||
| pmichaud | I'm going to have capture_lex and newclosure silently fail if we attempt to close form the wrong place for now. | 19:35 | |
| since that's what trunk was doing. | |||
| jonathan | a) Refactor it now to let the signature only hold the block and pull it out of there, b) stop putting the block as a check inside the sub, or c) stop putting it in the signature | 19:36 | |
| b breaks single dispatch type checks, c breaks multi... | |||
| pmichaud | it'll then autoclose upon execution, which is what was happening before. | ||
| jonathan | Or that to work around it. | ||
| pmichaud | we can clean it all up when subid works. | ||
| jonathan | Sure. Probably worth holding off on the whole cleanup until we have that. | ||
| pmichaud | agreed. | ||
| let's see if this works. Thanks for finding that -- it would've taken me... well, forever. | 19:37 | ||
| jonathan | I've got some other stuff to clear up to make sure we don't run type checks twice in multis, but we'll tackle that i the refactor too. | ||
| Welcome. :-) | 19:38 | ||
| Thanks for fixing lexicals. :-) | |||
| particle wonders why nobody tried to fix the lexical handling before... | |||
| pmichaud | nobody wanted to deal with it, I think. | 19:39 | |
| particle | but you make it look so *easy* | ||
| :P | |||
| pmichaud | huh. After working on it basically non-stop for how many days now...? | ||
| particle | 14? | ||
| purl | hmmm... 14 is ALRM | ||
| particle | damned straight, purl | 19:40 | |
| purl | particle: huh? | ||
| jonathan | pmichaud: Yeah, I know the feeling...I tried to escape the bytecode PDD implementation too. ;-) | ||
| jonathan will make the branch for annotations stuff soon | |||
| pmichaud: Any preference on when I Rakudo day this week? | |||
| I'm going to be generally around anyway, doing multi dispatch stuff and starting on bytecode annotations stuff. | 19:41 | ||
| pmichaud | Thanksgiving is Thu+Fri of this week -- we'll have company here. I'll undoubtedly be hacking some those days, but with frequent distractions. | ||
| Thu is probably not good, actually. | |||
| so either Tue, Wed, or Fri. | |||
| I sincerely doubt we'll go out and do any shopping on Black Friday (which might not be so black this year :-) | 19:42 | ||
| chromatic | You all complain about having to escape things. Anyone want IMCC and GC? | ||
| jonathan | chromatic: Well, we all know you so love them... | 19:43 | |
| In a loving hate kinda way. ;-) | |||
| pmichaud: OK, Wednesday it is. | 19:44 | ||
| Black Friday? | |||
| purl | it has been said that Black Friday is acmoore's favorite, though. | ||
| jonathan looks it up and understands | 19:45 | ||
| It basically sounds like the worst day to shop in the year. | 19:46 | ||
| Coke | typically very deep discounts on some items. | ||
| pmichaud | now subtypes.t give me a segfua[A[B[B[A segfault. | ||
| trying something different | 19:47 | ||
| jonathan | Maybe your error check was correct. ;-) | ||
| pmichaud | I'll go ahead and let it capture the outer we call from, instead of the sub's immediate outer. | ||
| (which is what the previous version did) | |||
| jonathan | Seriously, break the single-dispatch if you want. | 19:48 | |
| I hope the refactor won't be so far away. | |||
| pmichaud | I'll try it this way for a bit -- sounds simpler. | ||
| jonathan | ok | ||
| pmichaud | we _will_ have the issue though that the closure that gets stored in the signature can't be determined at compile time. | 19:49 | |
| or that something will have to happen to get it to the right place. perhaps we need to mark it as an immediate block instead of a declaration. | |||
| actually, immediate block sounds more correct. | 19:50 | ||
| we have to do the capture_lex at the point when the sub is entered, and the signature has to use *that* version of the captured sub. We can't clone it beforehand (which is what newclosure does.) | 19:51 | ||
| because the clone that would be taken at startup time would capture the lexicals in place at compile time, as opposed to the ones from the sub invocation. | |||
| jonathan | Ah, yes. | ||
| Ouch indeed. | |||
| dalek | r33153 | kjs++ | trunk: | 19:52 | |
| : [pirc] Don't do any PASM allocation in PASM mode, but do allow optimization. If you ask for it, you can get it. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33153 | |||
| pmichaud | okay, neither of my two workarounds worked. | ||
| we have to fix it so that it doesn't appear twice in the tree. | 19:53 | ||
| jonathan | OK | 19:55 | |
| Comment out the one that doesn't put it in the signature object for now. It'll give some fail though. | |||
| But at least the one in the signature object is the one we want. | 19:56 | ||
| I'll do a partial refactor on Wed or maybe tomorrow to fix those up. | |||
| pmichaud | ...thinking. | ||
| I don't know where that is, exactly. | 19:57 | ||
| dalek | r33154 | kjs++ | trunk: | 19:59 | |
| : [NEWS] Add PIRC news. + add :lexid->:subid to deprecated section (just as PARROT_{API->EXPORT}). | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33154 | |||
| Coke offers chromatic a scooby snack. | 20:00 | ||
| chromatic | I'd rather have an assistant. | 20:01 | |
| jonathan | pmichaud: Line 1191 - if you comment that out it'll surpress it | ||
| (And all other parameter type checks on single dispatch...) | |||
| pmichaud | ...that will break a lot of tests. | 20:02 | |
| (the ones that do typechecking) | |||
| jonathan | Those that rely on type checks failing yes. | ||
| pmichaud | you're saying we should regress those for now? | ||
| jonathan | How soon do you expect to merge the branch? | ||
| pmichaud | I was hoping today. | ||
| this is the last blocker. | |||
| jonathan | Regress them today, I'll fix them in the next couple. | 20:03 | |
| OK, put antoher way | |||
| pmichaud | is there a way to just regress the where clauses but leave the type checks? | ||
| jonathan | *if* commenting out *just* that line fixes it | ||
| Trouble is, I did this whole re-use thing...fail! ;-) | |||
| Oh, maybe there's an easy way | 20:04 | ||
| jonathan looks again | |||
| pmichaud | maybe moving the block to an 'immediate' one will help -- I'll try that. | 20:05 | |
| jonathan | pmichaud: I can put some code in to avoid emitting them for now, but it's not just commenting out a line. | 20:06 | |
| pmichaud | I'll go with your best judgement on this one... whatever it is. | 20:07 | |
| dalek | r33155 | julianalbo++ | trunk: | ||
| : add prototype for imcc set_filename and fix coding standards | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33155 | |||
| jonathan | pmichaud: That code is up for a refactor anyway, and I had it on the list to review as part of the multi stuff because I need to not emit the checks when we have a multi. | 20:08 | |
| So I was going to be in there shortly to do that. | |||
| (Don't need the checks as the multi dispatcher has already done 'em) | |||
| pmichaud | so, you think just remove parameter type checks for now? | ||
| let's see if that does it. | |||
| jonathan | How much did commenting out that one line break? | ||
| pmichaud | didn't try that one yet.. just a sec | 20:09 | |
| jonathan | OK, I can try it here | ||
| Or do you have other local changes/ | |||
| pmichaud | no other local changes that should make a difference | ||
| (the only other local change I have is the capture_lex workaround, but this should work without it) | |||
| dalek | r33156 | kjs++ | trunk: | 20:10 | |
| : [pirc] add a comment to clarify PASM register allocation (or rather, non-allocation). | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33156 | |||
| pmichaud | ultimately this is going to be fairly interesting, because we can't invoke the where closures until *after* the sub has set up its lexical invocation environment. | ||
| i.e., we can't do the checks until we've invoked the sub. | 20:11 | ||
| jonathan | pmichaud: You know, you've just made me realize something horrible in the multi-dispathcer too. | 20:12 | |
| Yes. Shit. | |||
| jonathan ponders | |||
| pmichaud | either that, or we create a "fake sub" that simply does the checks for us. | ||
| jonathan | Or we just create a fake lex-env. ;-) | ||
| Ouch though. That's not nice at all. | |||
| I've got away with it so far since the conditions only referred to the things they were passed | 20:13 | ||
| And not things in an outer scope, which of course doesn't exist... | |||
| pmichaud | ...doesn't exist? | ||
| wouldn't the outer scope be the sub itself, as well as its outer scope? | |||
| jonathan | Because we're still in the scope of the caller, not the scope of a potential callee. | ||
| pmichaud | the parameters are definitely in the scope of the callee | 20:14 | |
| jonathan | Yes, I know | ||
| But in the multi-dispatcher we haven't invoked a callee yet. | |||
| pmichaud | ...maybe a wrapper? | ||
| jonathan | So we haven't bound the signature. | ||
| Maybe, but it'll be a different wrapper per sub. | |||
| Hmm. | 20:15 | ||
| pmichaud | right. | ||
| jonathan thinks I need to think a good bit on this one | |||
| pmichaud | and we only need the wrapper on subs that involve where closures. | ||
| jonathan | True. | ||
| pmichaud | actually | ||
| jonathan | I'm not sure I like it as a solution though. | ||
| pmichaud | we only need the wrapper on subs that involve where closures that use variables from an outer scope. | ||
| jonathan | Right. And statically in many cases we'll be able to prove that it ain't so. | 20:16 | |
| pmichaud | correct. | ||
| jonathan | Of course, as soon as it does an eval inside there we've no hope. | ||
| pmichaud | heh. | ||
| jonathan | But in cases where people are being sane, yes... | ||
| Ouch. Can't believe I didn't think of that. | 20:17 | ||
| Anyway, it's solvable in some way. | 20:18 | ||
| Wrapper sub or otherwise. | 20:19 | ||
| Hmmm. Commetning out that line makes no difference to the subtypes test. | 20:24 | ||
| pmichaud | no difference as in "still segfaults" or "still fails tests"? | 20:25 | |
| I would expect it to fail tests. | |||
| jonathan | Still fails that subtypes test the same way | 20:26 | |
|
20:27
PacoLinux joined
|
|||
| nopaste | "pmichaud" at 72.181.176.220 pasted "rakudo spectest failures in lex5 branch #3" (12 lines) at nopaste.snit.ch/14704 | 20:28 | |
| pmichaud | the enums test stopped failing | ||
| jonathan | Ouch. | 20:29 | |
| pmichaud | but yes, we still have some failures here. | ||
| jonathan | Commenting out that line shouldn't have made a difference to the enums tests - or was that another fix you did? | ||
| pmichaud | that may be my other fix causing that. | ||
| jonathan | I suspect so. | ||
| pmichaud | i.e., relaxing the restriction on outer. | ||
| jonathan | These test results were with the line I mentioned commented out or with it still in? | ||
| pmichaud | commented out. | 20:30 | |
|
20:30
ruoso joined
|
|||
| jonathan | OK | 20:30 | |
| Hmm | |||
| pmichaud | so I think there must be something else going on here also. | ||
| it must be an issue with eval. | 20:31 | ||
| no, perhaps not. | 20:32 | ||
| hmmm. | |||
| oh, it looks like whatever _follows_ an eval has trouble. | 20:34 | ||
| ...maybe | 20:35 | ||
|
20:35
masak joined
|
|||
| nopaste | "jonathan" at 85.216.157.73 pasted "MyFAIL - with the line commented out, without your other patch" (13 lines) at nopaste.snit.ch/14706 | 20:36 | |
|
20:36
davidfetter joined
|
|||
| pmichaud | looks to me like a context is being reclaimed too soon. | 20:39 | |
| nopaste | "pmichaud" at 72.181.176.220 pasted "eval causes segfault" (53 lines) at nopaste.snit.ch/14707 | 20:45 | |
| pmichaud | moving the block containing the eval causes the segfault to move. | ||
| so, perhaps it's a problem with the 'lexpad' introspection. | 20:47 | ||
| ...or the exception handler. | 20:50 | ||
| I bet the handler reclaims the context. | 20:51 | ||
|
20:59
Hadi joined
21:00
Hadi left
|
|||
| jonathan | pmichaud: It segv's here too. | 21:04 | |
| pmichaud | yes, I think we have an early context reclaim somewhere. | 21:05 | |
| I'm tracing it through gdb now. | |||
| jonathan | OK. Well, just to confirm it's not your locally applied patch. | ||
| pmichaud | I suspect something is a RetContinuation that needs to be a Continuation. | ||
| Coke | all of them! =-) | 21:11 | |
| pmichaud | hmmm, when running from pir it occurs much earlier. | 21:14 | |
| jonathan | Coke: The way to test that theory, is to delete all of the methods in the RetContinuation PMC ;-) | 21:15 | |
|
21:18
chromatic joined
|
|||
| dalek | r33157 | allison++ | pdd22io_part2: | 21:19 | |
| : [pdd22io] Add a 'puts' method to FileHandle for backward compatibility. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33157 | |||
|
21:20
gmansi joined
|
|||
| Coke wonders if he scared chromatic away! | 21:21 | ||
| pmichaud | yes, it's almost certainly that a context/lexpad is being reclaimed early. Running with -G causes it to work fine. | ||
| chromatic | No, my network is misbehaving. | 21:22 | |
|
21:24
cxreg joined
|
|||
| cxreg | hey, does S19 actually exist yet, and if so, where can I read it? | 21:24 | |
| pmichaud | it's being drafted (no, it doesn't exist in a file yet) | 21:25 | |
| cxreg | ok thanks | ||
| particle is coming by in an hour or so and I'd hoped to peruse his throughts | 21:26 | ||
| thoughts too | |||
| PerlJam | throughts sounds vagues vulgar | ||
| s/vagues/vaguely/ | |||
| particle | cxreg: it only exists on a private google doc atm | 21:28 | |
| *in a | |||
| PerlJam | What is S19 supposed to be? Is that the command line stuff? | ||
| cxreg | particle: ok thanks. wasn't sure if you were online now or not. josh was looking for it somewheres | 21:29 | |
| PerlJam: yep | |||
| Coke | S19? | 21:30 | |
| S19 is the command line stuff | |||
|
21:36
jsut|work joined
|
|||
| Coke | 588+41 | 21:37 | |
| purl | 629 | ||
| Coke | msg allison: do you have a meta ticket for IO stuff? (There's a bunch of old IO tickets.) | 21:46 | |
| purl | Message for allison stored. | ||
| allison | Coke, nope, no meta ticket atm | ||
| more of a meta wiki page | 21:47 | ||
| oh, but still in the old wiki | |||
| Coke | which old wiki? we have 3 altogether now, right? =-) | ||
| (trac, parrot.org, and perl.org) | |||
| allison | I'll migrate that over, then people can add the tickets to that | ||
| parrot.org | |||
| purl | i heard parrot.org was drupal? | ||
| allison | which is rapidly being removed | 21:48 | |
| or, the wiki part moved to trac | |||
| Coke | it is? ok. | ||
| Coke has trouble keeping up with such goings on. | |||
| allison | well, we have been moving quickly :) | 21:49 | |
| drupal just didn't work as a wiki | |||
| and, seems better to move off it quickly than to keep struggling with it | |||
| PerlJam | good deal (drupal sucks in a variety of ways) | ||
| allison | it's great for the website, though | ||
| the "wiki" section of drupal has now been renamed to "User Contributed docs" | 21:50 | ||
| PerlJam notices that no one has taken the baton for "marketing mojo" | |||
| allison | so, we still have a part of the website that's editable by anyone | ||
| PerlJam: that'll be me | |||
| it's not actually marketing, it's explaining the vision for 1.0 | 21:51 | ||
| chromatic | allison, don't dissuade volunteers with goatees! | ||
| allison | (well, that is marketing in a way) | ||
| Coke 's ears ring. | 21:53 | ||
| PerlJam | Answer the phone! ;) | ||
| allison | chromatic: all goateed volunteers gladly welcomed :) | ||
| Coke | pmichaud: as long as you're looking at contexts, can you peek at RT # 45695 ? | 21:55 | |
| allison; still a bunch of mmd tickets. | |||
| pmichaud | coke: reject it. from_ctx is needed. | 21:56 | |
| Coke | allison: when searching for io tickets, include 'parrotio'. | ||
| pmichaud | at present, it's the only way for a continuation to know its current context. | ||
| (i.e., the context in which it was made.) | 21:57 | ||
| allison | Coke: agreed with pmichaud, reject RT #45695 | ||
| pmichaud | it's also sometimes the only thing that keeps a context alive (e.g., as in a continuation). | 21:58 | |
| allison | Coke: the I/O tasklist wiki page is trac.parrot.org/parrot/wiki/IOTasklist, ticket links can be added there (maybe just a link for a search that catches all the I/O related tickets? | 21:59 | |
| Coke wonders why RT #45965 never got applied. | |||
| pmichaud | ...because there were questions about how contexts would be collected if it was applied. | ||
| and those questions were valid (and correct) | |||
| the original poster assumed that contexts were part of the normal mark-and-sweep GC, which they are not. | 22:00 | ||
| allison | pmichaud: different ticket (two digits reversed) | ||
| pmichaud | oh. | ||
| heh :-) | |||
| allison | Coke: I think it mostly has been applied at this point | ||
| Coke: if not, then it should be | |||
| Coke | it applied cleanly still, retesting. | 22:01 | |
| allison | Coke: I think it falls into the "somebody else's problem" category | ||
| Coke | will apply if so. | ||
| moritz | pmichaud: how's the lex branch coming along? | ||
| pmichaud | everything works except for a few minor issues in spectests. | 22:02 | |
| well, seemingly minor. But coke's pointing me to #45695 might explain the problems I'm seeing. | |||
| so, I'm trying a solution based on that. | |||
| Coke | be sure to give the guy credit if his patch inspired something. =-) | 22:04 | |
| pmichaud | ...doesn't seem to have helped in this case. | ||
| Coke | ah well | ||
| as part of the RT cleanup, I'm going to go through and close tickets reporting bugs on non-core platforms that are more than a big revision back. | 22:05 | ||
| pmichaud | +1 | 22:06 | |
| purl | 1 | ||
|
22:06
clunker3 joined
|
|||
| Coke | folks can re-open them on the new system. (We really need someone with access to help port.) | 22:06 | |
| allison | Coke: sensible | ||
| purl | i guess sensible is usually inappropriate, yes :) | ||
| Coke | (and when they re-open the ticket, we can grab them then. =-) | ||
| (i'm looking at you, jarrko!) | 22:07 | ||
| er, jarkko? | |||
| Coke wonders why "vtablecache" is a pmc. | |||
| jonathan never quite figured out what that PMC was | 22:08 | ||
| chromatic | Nothing uses it, as far as I know. | ||
| allison | delete it, delete it! | 22:09 | |
| allison has lately gotten into a mode of deleting unused code | 22:10 | ||
| pmichaud | I have a lot of deletions to make also :-) | ||
| Coke | if someone opens a ticket, I can rip it out. (otherwise I will forget) | ||
| dalek | r33158 | coke++ | trunk: | 22:11 | |
| : vtable slot names shouldn't have leading double underscore (RT #45965) | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33158 | |||
| Coke | 41+586 | ||
| purl | 627 | ||
| nopaste | "pmichaud" at 72.181.176.220 pasted "my list of tickets that are likely "ripe" for closing" (16 lines) at nopaste.snit.ch/14708 | ||
|
22:12
Whiteknight joined
|
|||
| allison | Coke: will open a trac ticket | 22:12 | |
| jonathan | [TODO] Produce Single PBC from Multiple PIR Files with -o | 22:14 | |
| You can nearly do that with pbc_merge ;-) | |||
| pmichaud | yes, I figure we should go ahead and reject that todo. | ||
| jonathan | Aye. | ||
| pmichaud | the other way to do it is with .include "file1.pbc", "file2.pbc", etc., as PGE and Rakudo frequently do. | 22:15 | |
| s/pbc/pir/g | |||
| jonathan | Yes. | ||
| chromatic | #39856? | ||
| Coke | pmichaud: which reminds me: | ||
| I think it was perl6 that didn't do .includes, but instead cut and pasted the contents of N files into a .PIR file, making it very difficult to find the original source. | |||
| pmichaud | Coke: yes. | 22:16 | |
| Coke | (I think that's been copied around a few languages/, actually.) | ||
| Any reason not to just have it be .include'd ? | |||
| pmichaud | the number of files is quite long. | ||
| and I didn't want to be generating perl6.pir itself. | |||
| Coke | <shrug> it's a generated file. | ||
| pmichaud | oh, you mean have the generated file be a list of includes? | ||
| Coke | yes. | ||
| pmichaud | sure, that would work. | ||
| didn't think of that. | |||
| Coke | then when you have a syntax error you can actually find the original source. =-) | 22:17 | |
| pmichaud | perfect. I'll make it so. | ||
| Coke | danke. | ||
| pmichaud | ...now I think I'm ending up with circular chains in the mark_context algorithm. :-( | ||
| Coke | -> | 22:20 | |
|
22:20
donaldh joined
|
|||
| jonathan | pmichaud: I managed to introduce such a thing once. :-( | 22:20 | |
| pmichaud | I think one of the paths might not be necessary, so trying that now. | 22:21 | |
| jonathan | pmichaud: IIRC, it was something to do with when the outer and caller were the same. | ||
|
22:21
tak joined
|
|||
| pmichaud | jonathan: I was explicitly testing for that case :-) | 22:21 | |
| jonathan | OK | ||
| pmichaud | but I think it's not necessary to follow the caller chain. | ||
| jonathan | I seem to remember having to explicityly check that one too. | ||
| pmichaud | because the continuations keep those alive. | ||
| jonathan | ah, yes | 22:22 | |
| pmichaud | (at least they should. Or if they don't, then they can be made to do so) | ||
| so far everything seems to work without marking caller. It also seems faster. | |||
| That actually makes sense to me -- because if we're marking caller_ctx, then mark becomes an O(n^2) operation. | |||
| PerlJam | faster++ | 22:23 | |
| pmichaud | (if a context marks all of its callers, and continations mark all of their contexts, then the contexts near the top get marked one for each (child) continuation) | ||
| (plus they in turn go back and mark all of their dependencies... etc. etc.) | 22:24 | ||
| jonathan | Ouch!! | ||
| pmichaud | all parrot tests succeed after turning off caller marking. | 22:25 | |
| ....AND subtypes.t passes! woo hoo! | |||
| jonathan | Oh, awesome! | ||
| pmichaud++ | |||
| pmichaud | working +1. faster +1. working + faster == ?? | 22:26 | |
| jonathan | pmichaud: With the thingy commented out or not? | ||
| pmichaud | not commented out. | ||
| jonathan | Rock on. | ||
| purl | The rock is now on. | ||
| jonathan moshes | |||
| pmichaud | I'm using the version of actions.pm that is in trunk (with one or two minor lexical-related changes) | ||
| doh! test failure in nqp, though. :-| | |||
| at least nqp is a lot easier to troubleshoot than perl6 :-) | 22:27 | ||
| jonathan | Rakudo passes and NQP fails? That's...impressively odd. | ||
| pmichaud | rakudo has a lot more :outer contexts that would tend to keep things alive. | ||
| NQP doesn't. | |||
| PerlJam | If it's part of nqp that rakudo doesn't use, then we don't need it ;) | ||
| pmichaud | t/02-if-else.t | ||
| I think we need it. | 22:28 | ||
| still, I'm comfortable I can get it from here. | |||
| NQP is very easy to troubleshoot -- it produces nice concise PIR. | |||
| tewk | tests++ | ||
| jonathan | I'm going to start doing some stuff on bytecode annotations, etc. | ||
| First step will be getting some stuff stuck into PDDs, like the PIR PDD. | 22:29 | ||
| Should I do that in a branch, so we merge the PDD updates with the code changes? | |||
| Or? | |||
| jonathan doesn't mind either way | |||
| pmichaud | docs can go in trunk, I think. | ||
| maybe stick something in draft/ | 22:30 | ||
| allison | jonathan: shouldn't bytecode annotations go in the bytecode PDD? | ||
| and, yes, doc changes are best in trunk | |||
| jonathan | allison: There is the .annotate syntax, which I think belongs in the PIR PDD. | ||
| pmichaud | I don't think doc updates need bran.... what allison said :-) | ||
| jonathan | pmichaud: Well, I'd have done code updates in the branch too. ;-) | ||
| pmichaud | branches are primarily for things that break tests and code. | ||
| jonathan | OK | ||
| allison | jonathan: ah, yes, the parts used from PIR should go in the PIR PDD | ||
| jonathan | allison: Aye. We should also decide on an interface for the Exception PMC so you can get a hash of the active annotations at the point the error occured too. | 22:31 | |
| pmichaud | arrrrrrrrrrgh | ||
| once again, -t1 hides the bug I'm trying to locate. | |||
| allison | jonathan: that's the 'payload', any additional data for the exception goes in there | 22:32 | |
| jonathan: and each exception type is free to use the 'payload' in it's own unique way | |||
| jonathan | allison: I think this kinda cross-cuts all exception types though. | ||
| pmichaud | I agree. | 22:33 | |
| jonathan | I don't see how the type of exception matters, in getting where it was thrown from. | ||
| pmichaud | we're basically looking for "where did the exception occur?" | ||
| jonathan votes for a method on the exception PMC | |||
| allison | are you talking about bytecode errors? no, I guess not | ||
| jonathan | Then we only lookup/get this data if it's needed. | ||
| allison: No, I'm talking about getting the current set of annotations, like HLL line number and file, at the point an exception occurs. | 22:34 | ||
| allison | are you thinking of annotations on the particular line of PIR where the exception was thrown? | ||
| (particular line of bytecode) | |||
| jonathan | The annotations that were in effect at the point where the exception was thrown. | ||
| The point in the bytecode, yes. | |||
| You'd get a Hash back of the annotations set at that point. | 22:35 | ||
| allison | ok, make it an "annotations" method | ||
| jonathan | OK, great. | 22:36 | |
| allison | it takes an optional string parameter to look up a specific annotation | ||
| (like, "hll_line", etc) | |||
| jonathan | Fajn. | ||
| This should be mentioned in the Exceptions PDD too, right? | |||
| allison | yes, add it to the interface description for the Exception PMC | 22:37 | |
| jonathan | OK. | ||
| jonathan updates stuff | |||
| pmichaud | only one rakudo spectest fails: t/spec/S04-statements/for_with_on 0 11 ?? ?? % ?? | ||
| jonathan | That looks like a segfaulty kinda fail. | ||
| pmichaud | yes. | ||
| all of the subset/subtypes tests passed this time. | 22:38 | ||
| jonathan | w00t | ||
| That means I don't have to go fix the sig stuff to quickly. | |||
| *so | |||
| pmichaud | and for_with_only_one_item passes when run from the command line. | ||
| so that looks like a harness error. | |||
| so I just need to figure out the nqp failure and I think we're good. | 22:39 | ||
| actually, I need to commit what I have so far. | |||
| jonathan | Heh. In the Exceptions PDD, the section under "=head2 Resuming after Exceptions" shows how to throw an exception - but not how to resume it! | 22:40 | |
| (In the code sample) | 22:41 | ||
| allison | jonathan: sounds like a good fix to make | ||
| dalek | r33159 | pmichaud++ | lex5: | ||
| : Report the subname of whatever we're referencing for easier tracing. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33159 | |||
|
22:42
Limbic_Region joined
|
|||
| jonathan | allison: I don't personally know what the fix is... | 22:43 | |
| pmichaud | jonathan: grab the 'resume' element out of the exception, invoke it. | 22:44 | |
| dalek | r33160 | pmichaud++ | lex5: | ||
| : (1) Don't carp about capture_lex from non-outer scope. | |||
| : (2) Don't mark caller - we'll let the continuations do that. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33160 | |||
| r33161 | pmichaud++ | lex5: | |||
| : Continuations now mark their from context. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33161 | |||
|
22:44
tak joined
|
|||
| Tene | I thought I fixed that one... | 22:46 | |
|
22:50
particle1 joined,
particle1 left
|
|||
| dalek | r33162 | jonathan++ | trunk: | 22:50 | |
| : [pdd] Add details of how to get bytecode annotations from Exception PMC. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33162 | |||
| Tene | jonathan: Ah, I must have reverted it when cleaning up after a mistake and not re-written it. | 22:51 | |
| dalek | r33163 | jonathan++ | trunk: | ||
| : [pdd] Correction to previous commit; name is just an optional parameter to annotations, for consistency with e.g. inspect method. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33163 | |||
| jonathan | Tene: Can I leave it with you to pop it back in? | 22:53 | |
| Tene | Doing tha tnow. | ||
| jonathan | Since you probably have better text than I'd write. | 22:54 | |
| Tene | Thanks. | ||
| In exception['resume'], what is that called? It's stored in the resume... attribute? element? what? | 22:56 | ||
| stored under the 'resume' key? | |||
| Infinoid | field? | ||
| purl | field is what the ivory tower is right in the middle of. | ||
| Tene | field is okay. | ||
| EH filters aren't discussed in the pdd either, are they? | 22:57 | ||
| Infinoid | especially when they have ivory towers. | ||
| Tene | Nope. That's a problem. | ||
| dalek | r33164 | tene++ | trunk: | 23:00 | |
| : Add missing documentation about resuming from exceptions. | |||
| : jonathan++ for reporting this. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33164 | |||
|
23:14
jan joined
|
|||
| allison | Tene: called the 'resume' attribute, the key access to attributes is just a convenience | 23:16 | |
| dalek | r33165 | tene++ | trunk: | 23:18 | |
| : Fix wording. allison++ | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33165 | |||
| pmichaud | ... I have a question. | 23:19 | |
| this looks bizarre to me. | |||
| (nopaste coming up) | 23:20 | ||
| nopaste | "pmichaud" at 72.181.176.220 pasted "...how does this work? (src/pmc/sub.pmc)" (14 lines) at nopaste.snit.ch/14709 | 23:21 | |
| pmichaud | oh, never mind, I see it. | ||
| the get_params opcode also handles tailcalls. | 23:22 | ||
| allison | pmichaud: yes. there should be a better interface for that, but it works for now | 23:23 | |
| pmichaud | indeed, it does. | ||
| dalek | r33166 | jonathan++ | trunk: | 23:24 | |
| : [pdd] Document .annotate and .file and update .line directives in the PIR PDD. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33166 | |||
|
23:25
gmansi joined
|
|||
| pmichaud | okay, with the current lex5 branch (r33166), all tests are passing in parrot, abc, punie, pheme, APL, pge, tge, and rakudo (including spectests) | 23:26 | |
| I have one failure in lolcode, which I can tell is due to a lolcode bug and not the lexicals changes. | 23:27 | ||
| jonathan | pmichaud++ | ||
| pmichaud | I have one failure in nqp, which runs fine when the -G flag is present. | ||
| two questions: | |||
| jonathan | pmichaud: Want a Win32 test? | ||
| pmichaud | (1) can others test on their systems? | ||
| jonathan | yes ;-) | ||
| pmichaud | (2) what else needs to be fixed before I can merge to trunk? | ||
| tewk | -G would tend to show GC errors not hide them. | 23:28 | |
| pmichaud | -G hides them. | ||
| -G turns off GC. | |||
| jonathan | Aye. | ||
| tewk | never mind I was thinging of the gc run core. | ||
| jonathan | :-) | ||
| pmichaud | oh, I could try gcdebug, yes. | ||
| jonathan | That may help work out why we're getting the error. | ||
| pmichaud | The problem in nqp is something to do with argument processing. | 23:29 | |
| tewk | yeah, run it with the gc run core | ||
| afk ~15min | |||
| pmichaud | (also, all of the lexicals-related tickets in rakudo's RT queue work properly.) | 23:30 | |
| I get a totally different error with --runcore=gcdebug than I do without. Weird. | 23:32 | ||
| nopaste | "Infinoid" at 96.238.213.50 pasted "pmichaud: fix a couple of warnings in src/gc/register.c" (22 lines) at nopaste.snit.ch/14710 | ||
| Infinoid | I also get some warnings from src/pmc.c:pmc_free(), due to the lack of a prototype in pmc.h. headerizer can't deal with it because that function has no POD | 23:33 | |
| but these are things that can be easily cleaned up post-merge, I think | 23:35 | ||
| pmichaud | that warning is in trunk, also. | 23:36 | |
| Infinoid | ooh, # error:imcc:'$N10' is not a valid register name in pasm mode. that's probably not lex5-specific | ||
| pmichaud | correct, it's not. | ||
| dalek | r33167 | pmichaud++ | lex5: | 23:37 | |
| : Some code cleanups from Infinoid++ . | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33167 | |||
| Infinoid | infinoid@chirp perl6 % ../../parrot perl6.pbc t/00-parrot/07-op-string.t | 23:39 | |
| zsh: segmentation fault ../../parrot perl6.pbc t/00-parrot/07-op-string.t | |||
| allison | pmichaud: excellent news on the lex branch! platform/language testing should be all that's needed before a merge | ||
| Infinoid | the rest of rakudo "make test" passed | ||
| jonathan | Infinoid: How does that one do under -G for you? | 23:40 | |
| pmichaud: make test for Parrot clean on Win32 | |||
| nopaste | "Infinoid" at 96.238.213.50 pasted "rakudo segfault backtrace (vtable = 0xdeadbeef)" (255 lines) at nopaste.snit.ch/14711 | 23:42 | |
| Infinoid | let me check, I'm pretty sure it'll look good | ||
| I'm guessing this pmc got GC'd out from under it. | |||
| passes fine with -G. | |||
| Infinoid tries spectest_regression | 23:43 | ||
| pmichaud | (backtrace) that's the same function that gives me the (same) error in nqp. | 23:44 | |
| nopaste | "pmichaud" at 72.181.176.220 pasted "backtrace from minimized nqp 02-if-else.t test" (96 lines) at nopaste.snit.ch/14712 | 23:46 | |
| Infinoid | p_arg->vtable == 0xdeadbeef makes it seem very likely to be a GC issue | 23:47 | |
| pmichaud | yes, I agree. | ||
| that's what I was noticing as well. | |||
| Infinoid | should I expect to see a bunch of "Use of uninitialized value" outputs during spectest_regression? | ||
| jonathan | Yes | ||
| Infinoid | great, no worries then. | ||
| that part's working :) | |||
| pmichaud | I think I'm going to turn those off for a while, or make them flag selectable. | 23:48 | |
| probably re-enable them after we have list assignment and basic slicing working. | |||
| Infinoid | lots of failures in lua which also exist in trunk | 23:49 | |
| pmichaud | lua is guaranteed to fail -- it relies on the Closure PMC (which is gone in the lex5 branch) | 23:50 | |
| I'm not sure I can fix that one. | |||
| jonathan was about to point out a fail, when he realized that he still had a line commented out in actions.pm... | |||
| allison | pmichaud: will lua work if we change it to subclass Sub instead? (since Subs now have all the behavior of Closures) | 23:52 | |
| chromatic | I would think so. | ||
| pmichaud | well, it's also overriding some behaviors, so we'd have to tease out what it's overriding from what it replaces. | ||
| I haven't looked closely at it. | 23:53 | ||
|
23:54
particle1 joined
|
|||
| allison | pmichaud: was the removal of Closure listed in the deprecations for the last release? If not, we can just keep it for now, and remove it after the next release | 23:54 | |
| nopaste | "Infinoid" at 96.238.213.50 pasted "a few spectest_regression failures on linux/x86-64" (28 lines) at nopaste.snit.ch/14713 | 23:55 | |
| pmichaud | it was listed in the deprecations, yes. | 23:56 | |
| I made sure to get it in there for precisely this reason. :-) | |||
| Infinoid: none of those spectest failures are expected, so we probably need to look at those. | 23:57 | ||
| I'm guessing a caller context is being lost somewhere in GC. | |||
| having to do with parameter passing to subs. | 23:58 | ||
| allison | pmichaud: alright, then that counts as fair warning | ||
| Infinoid | can I do PARROT_TEST_ARGS=-G or somesuch? | ||
| jonathan | pmichaud: I get a new fail in t\\spec\\S06-multi\\type-based.rakudo | ||
| chromatic | Infinoid, should work. | ||
| allison | chromatic: if you have a moment, it's worth looking into fixing Lua up quickly by changing it over to Sub | ||
| chromatic | I'll look into it, but it won't be for a few hours. | ||
| pmichaud | I may be able to take a look also a bit later. | 23:59 | |
| jonathan | pmichaud: Oh, but it runs fine from the command line. | ||
| pmichaud: So test harness issue. | |||
| pmichaud | jonathan: right. +1 there. | ||
| allison | chromatic:/pmichaud it's mainly just to minimize frustration for language developers, keep them moving smoothly | ||
| pmichaud | although I'd like to see Lua running in trunk before trying to get it to run in the branch. | ||