Parrot 1.9.0 "Blue-fronted Amazon" released! | parrot.org | Roadmap: icanhaz.com/parrotroadmap | Latest modified TT's: icanhaz.com/parrotbugs
Set by moderator on 16 December 2009.
00:02 kid51 joined 00:06 tetragon joined
nopaste "kid51" at 70.85.31.226 pasted "context_unify3 branch: Linux/i386: make corevm && make coretest: fewer test failures than Sunday" (109 lines) at nopaste.snit.ch/19116 00:13
"kid51" at 70.85.31.226 pasted "(better) context_unify3 branch: Linux/i386: make corevm && make coretest: fewer test failures than Sunday" (198 lines) at nopaste.snit.ch/19117 00:15
00:23 Whiteknight joined
Whiteknight context_unify3 builds? 00:25
chromatic Two of those failing test files have the same source. 00:26
s/source/cause/
Whiteknight which ones, the backtrace ones?
00:26 nopaste joined
chromatic yes 00:27
That may fix the lexical test too, but I'm not completely certain. 00:29
Whiteknight these dynpmc tests are new failures 00:31
chromatic touch src/dynpmc/*.pmc 00:33
cotto_work The makefile is not very smart about dynpmc dependencies. 00:37
chromatic s/not very smart/often bafflingly wrong/
00:38 abqar joined
cotto_work yeah, that too 00:38
00:41 nopaste joined 00:42 davidfetter joined
Whiteknight okay, dynpmc tests are cool again 00:50
dalek nxed: r272 | julian.notfound++ | trunk/winxedst1.winxed:
improve and simplify error checking in stage 1
00:51
nopaste "kid51" at 71.255.57.92 pasted "t/tools/pgegrep.t: Failure at r43115 (Darwin/PPC)" (93 lines) at nopaste.snit.ch/19118
Whiteknight so where does context->current_sub get set, and why is it Null in these tests?
kid51 That paste is from trunk, so it's a very new failure, probably within last 24 hours. 00:53
NotFound Looks like someone 'fixed' Getopt usage. 00:55
chromatic Whiteknight, should be in Sub.invoke and Coroutine.invoke. 00:56
00:57 plobsing_ joined
bacek_at_work Whiteknight, it was cleared in init_context, ivoked from pcc_prepare_call. I did add hackish check to avoid unnecessary clearing 01:18
01:32 xenoterracide joined 01:36 nopaste joined 01:53 lucian joined 01:56 nopaste joined 02:01 TonyC joined 02:05 JimmyZ joined 02:18 TonyC joined
plobsing_ why do GET_ATTR_* and SET_ATTR_* get compiled away by pmc2c? 02:21
chromatic Syntactic sugar, I suppose. 02:23
plobsing_ but they can't be used from macros. Do they need to be compiled away? 02:24
chromatic They only work within the body of the PMC.
plobsing_ which is where I want to use the macro I am writing 02:25
purl Writing is easy; all you do is sit staring at a blank sheet of paper until the drops of blood form on your forehead. -- Gene Fowler.
02:25 TonyC joined 02:26 nopaste joined
Coke seen pmichaud ? 02:26
purl pmichaud was last seen on #parrot 6 hours, 18 minutes and 34 seconds ago, saying: phone
chromatic You need the expanded form then.
plobsing_ I want to write a VISIT_PMC_ATTR macro to abstract away the common case of visiting a PMC element from the visit vtable of a containing PMC. 02:27
is there a good way to do that?
chromatic Not really, no. 02:28
plobsing_ should there be? is this something I should be wanting to do?
02:29 patspam joined
chromatic Write it the naive way, and we'll see if we can make it easier. 02:30
02:30 bacek joined
nopaste "coke" at 72.228.52.192 pasted "NQP question" (16 lines) at nopaste.snit.ch/19119 02:31
pmichaud pong 02:33
where's the index rule? 02:34
in the grammar?
pmichaud checks
Coke: I can't find an 'index' rule 02:36
Coke moment.
nopaste "coke" at 193.200.132.135 pasted "full diff in progress" (134 lines) at nopaste.snit.ch/19120
pmichaud anyway, the 'MATCH' not found isn't due to whatever you're passing in, it's due to whatever the <index> rule is returning. 02:37
Coke ah. index occasionally is returning an int.
(occasionally? always, I think)
pmichaud no, the <index> subrule, not the action method
and not the .ast
Coke ah.
pmichaud looking.
aside: +token index:sym<m+n> { $<a>=<integer> '+' $<b>=<integer> } 02:38
would be more canonical as
token index:sym<m+n> { <m=integer> '+' <n=integer>
}
oh
even better (and perhaps part oft he issue)
token index:sym<m+n> { <m=.integer> '+' <n=.integer> }
to avoid the separate capture into $<integer> 02:39
any idea what input is causing it to fail with the error? 02:40
02:41 Maddingu1 joined
Coke joe 02:42
02:42 davidfetter joined, preflex joined
pmichaud oh, the case where the rule doesn't match? that's possible. 02:43
(and a bug if so)
Coke yah. if the index is "joe", then invoking the parse line there fails. 02:44
doesn't even get to the ?$parse check.
pmichaud right
Coke I'll commit what I have.
pmichaud I think the problem is that the match result ends up being an integer
Coke (it's still an improvement.)
pmichaud oh, I know what it is.... 02:45
very sneaky
you're calling directly into a protoregex. I didn't handle that case properly.
now to decide what "properly" should be in this case. 02:46
pmichaud thinks...
okay, I know what the fix should be 02:48
Coke pushed.
pmichaud need to fix nqp, then bring that into parrot
also need to switch keyboards.. bbiab
Coke you can duplicate it with ... puts [string first a abcd joe] 02:49
dukeleto looks like pgegrep is broken
Coke someone tried to fix it for getopt, IIRC.
needs to be unfixed. 02:50
probably can just rever the last commit that hit it.
02:51 davidfetter joined
dukeleto Coke: ok 02:51
02:52 JimmyZ_ joined
dalek rtcl-nqp: 08ad627 | coke++ | (5 files):
Add string indexing rules/actions/method, invoke from [string first]
02:53
nopaste "pmichaud" at 66.25.4.52 pasted "reproducing the nqp bug found by Coke++" (9 lines) at nopaste.snit.ch/19121 03:02
Coke whee. 03:15
pmichaud about to push fix.
pushed (into parrot trunk) 03:23
it should work now... at least avoid the error you were seeing. 03:24
dalek p-rx: c9be3ee | pmichaud++ | (4 files):
Update bootstrap files, PARROT_REVISION.
03:26
p-rx: 503f76f | pmichaud++ | src/NQP/Grammar.pm:
Merge branch 'master' of git@github.com:perl6/nqp-rx
p-rx: 88757e9 | pmichaud++ | (2 files):
Fix bug when protoregex is called directly from Grammar.parse (Coke++)
p-rx: ac7c519 | pmichaud++ | src/stage0/ (4 files):
Update bootstrap with protoregex fail fix.
03:30 KatrinaTheLamia joined
dalek kudo/master: d2dc84c | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to latest release.
03:31
kudo/master: 5cccc22 | pmichaud++ | (3 files):
Merge branch 'master' of git@github.com:rakudo/rakudo
kudo/master: 2198ecc | pmichaud++ | docs/announce/2009-12:
Some more announcement updates.
Coke pmichaud++ # those tests now pass. 03:34
03:34 darbelo joined
dalek rrot: r43116 | pmichaud++ | failed to fetch changeset:
[nqp]: Fix for direct calls to failing protoregexes (reported by Coke++).
03:34
03:35 Hunger joined
darbelo nopaste? 03:35
purl rumour has it nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or trac.parrot.org/parrot/browser/tru...nopaste.pl
dalek rtcl-nqp: 543280f | coke++ | (2 files):
Bump parrot revision to get fix which resolves outstanding index issue.
03:39
nopaste "darbelo" at 190.3.154.176 pasted "[pmc_freeze_cleanup] Segfault when freezing large ResizablePMCArray" (24 lines) at nopaste.snit.ch/19123 03:43
03:46 davidfetter joined
dukeleto msg fperrad do you know what is up with this? does it work for you? gist.github.com/258482 03:57
purl Message for fperrad stored.
04:03 davidfetter joined 04:04 davidfetter joined
dalek rrot: r43117 | darbelo++ | branches/pmc_freeze_cleanup/src/pmc_freeze.c:
Adding _NULLOK() to STRING parameters was unnecesary, we have STRINGNULL now.
04:07
04:12 davidfetter joined
dalek TT #1373 created by jkeenan++: ./t/tools/pgegrep.t: New failures 04:12
Coke msg kid51 : tt #1373 is probably fixable by just reverting the last commit against pgegrep.t 04:15
purl Message for kid51 stored.
Coke msg kid51: er, against pgegrep itself.
purl Message for kid51 stored.
Coke msg pmichaud 04:16
purl Message for pmichaud stored.
Coke er, pmichaud?
pmichaud pong
Coke bah! I pre-emptively ping you suspecting latency, and you're here! 04:17
=-)
trying to track down an ast issue, might have it... 04:18
nope. getting rotating failures: 04:20
pushing...
purl Shoving...
Coke touch src/Partcl/Actions.pm && make && ./partcl t/cmd_string.t 2>&1 | more 04:21
if I do this, I occasionally get this failure:
pmichaud hums "take this bot and shove it..."
Coke Method 'ast' not found for invocant of class 'Undef'
current instr.: 'tcl;Partcl;Actions;index:sym<m-n>' pc 31117 (src/Partcl/Actions
.pir:1843)
... but occasionally this one:
bad index "1+1": must be integer?[+-]integer? or end?[+-]integer?
current instr.: '_block1007' pc 31916 (src/Partcl/Actions.pir:2154)
pmichaud pulling 04:22
token index:sym<m+n> { $<a=.integer> '+' $<b=.integer> }
Coke (each fails a different test in t/cmd_string.t) I am assuming a LTM issue plus hash randomization.
pmichaud no $'s
it's just <a=.integer> and <b=.integer>
Coke ok, trying that...
still getting the 1+1 failure, but now alternating with: 04:23
running the test to completion.l 04:24
dalek rtcl-nqp: e2a0b30 | coke++ | src/TclString.pm:
negative result from the Action means "length from end".
rtcl-nqp: d0afb4b | coke++ | src/Partcl/commands/string.pm:
fix [string last], pass all tests.
rtcl-nqp: 4e5d192 | coke++ | src/ (3 files):
first pass at [string index] - change action logic for index.

to beginning or end. (Allows for over/under on index spec.)
pmichaud what happens if passed an index that doesn't match any of the protoregex patterns? 04:28
e.g., as in the 'joe' case?
Coke those tests seem to be working.
(they throw the appropriate error)
pmichaud oh, yes, it's likely to be a ltm issue here
Coke any way I can force the issue? 04:29
pmichaud yes
Coke aside from ditching the proto and hand_ordering?
pmichaud change index:sym<int> to index:sym<integer>
purl pmichaud: that doesn't look right
pmichaud the longer name will cause it to be attempted last
or, combine the three integer cases into a single one 04:30
dalek rtcl-nqp: c60d4cf | coke++ | src/Partcl/Grammar.pm:
don't need the $'s.
rtcl-nqp: 598e336 | coke++ | src/Partcl/commands/string.pm:
First pass at [string length]
pmichaud e.g.: index:sym<int> { <a=.integer> [ <[+\\-]> <b=.integer> ]? }
Coke I'll do the combination. 04:31
the first suggestion didn't seem to have an effect.
pmichaud (you might have needed to update actions to be index:sym<integer> also?)
Coke did that.
pmichaud okay, I don't know then 04:32
combining them will definitely work, though, and be more efficient anyway
oh, you'll need to capture the sign
so
e.g.: index:sym<int> { <a=.integer> [ $<op>=[<[+\\-]>[ <b=.integer> ]? }
er
e.g.: index:sym<int> { <a=.integer> [ $<op>=[<[+\\-]>] <b=.integer> ]? }
or 04:33
e.g.: index:sym<int> { <a=.integer> [ $<op>=['+' | '-'] <b=.integer> ]? }
Coke is there a defined op in NQP ?
pmichaud currently it's just pir::defined
Coke k
pmichaud pir::defined($val)
eventually it'll be defined $val
but in this case note that $<op> and $<b> will end up being arrays 04:34
(because of the ? quantifier)
so you can just do if $<op> { ... }
and ~$<op>[0] will have the operator, and $<b>[0].ast will have the second integer 04:35
Coke yup, that seems to avoid the random failure mode. 04:41
... at this point, seems prudent to just remove the proto. =-) 04:46
pmichaud well, the proto will definitely help in the 'end' cases
04:47 lucian joined
dalek rtcl-nqp: 89eca8a | coke++ | src/Partcl/ (2 files):
avoid LTM issue with the index proto; simplify end rules slightly.
04:52
darbelo pokes dalek. 04:53
cotto pokes darbelo for no apparent reason 04:55
dalek rrot: r43118 | darbelo++ | branches/pmc_freeze_cleanup/src/pmc_freeze.c:
Fix the segfault in examples/benchmarks/freeze.pasm by ensuring that aggregates with no elements still get some space allocated at buffer creation.
darbelo cotto: Did I fail to report something? 04:56
;)
Coke if $<op> { } doesn't seem to be triggering., 04:57
pmichaud could try +$<op> > 0 (but that really shouldn't be needed) 04:58
Coke ah, I spelled it differnetly than you suggested in teh grammar. fixing... 04:59
(I had done <op=>, incorrectly aping the <a=.integer> 05:00
dukeleto just fought a git beast and won
darbelo git beast?
pmichaud seems like <op=> ought to produce a compile time error
I need to fix that.
05:01 bacek joined
dukeleto bacek: o hai 05:01
pmichaud hmmm... my subs with :immediate flags don't seem to be converting into the thing they return
Coke you need .const for that magic to work, I think. 05:02
pmichaud I am using .const
let's see if I can make a small test case
Coke hurm. I am currently using that in partcl; e.g. runtime/builtins/string.pir 05:03
(if you want to see a working example)
pmichaud I'm trying out chromatic's constant exception handlers
dalek rtcl-nqp: 25dd2f4 | coke++ | src/Partcl/Grammar.pm:
Fix index rules with integer +/- : was using incorrect syntax to capture $<op>
05:04
cotto darbelo and/or plobsing_, how big are the freeze/thaw changes you both are working on? 05:08
Will the branch instantly make freeze/thaw sane or is it step 1 of 30?
darbelo The branch will make freeze/thaw as sane as we can make it without breaking the deprecation policy. 05:09
cotto I imagine you'll have a nice long list of changes to make as soon as 2.0 is cut. 05:10
darbelo svn rm the file.
plobsing_ +1
purl 1
darbelo After that, we can start a new, sane file. 05:11
cotto Don't forget to add a deprecation notice.
dalek rrot: r43119 | plobsing++ | branches/pmc_freeze_cleanup (4 files):
remove unused visit actions VISIT_FREEZE_SIZE, VISIT_CLONE, VISIT_DESTRUCTION_ORDER
05:12
rrot: r43120 | dukeleto++ | trunk/tools/util/pgegrep:
[cage] Fix pgegrep, which was merely an innocent bystander in the Great Namespace Wars
darbelo It's already there. I think I added it two releases ago or thereabouts.
plobsing_ trunk or branch?
cotto Add another. It can't hurt. ;) 05:14
darbelo plobsing_: I made it in trunk some time back, but mentioned the wrong struct. I fixed that, again in trunk, some days back.
plobsing_: unless you weren't asking about the deprecation notice... 05:16
plobsing_ darbelo: just read it. looks good. 05:18
about having to change PMCs after the change, with any luck we can have a new API in place parallel the old busted one 05:19
cotto That'd be ideal. 05:20
plobsing_ trying to find wording that makes the change sound a bit less abrupt
cotto As much as we love old 'n' busted, it's currently functional.
darbelo plobsing_: Yeah, but the VTABLE_freeze() signature will have to change. There's no way around that. 05:21
I agree that 2.0 should ship with as much of the new interface in place as we can manage, but there *will* be incompatibilities. 05:22
plobsing_ oh? #define visit_info PMC
doesn't that do it?
darbelo That won't work for people that were accsesing the actual image inside visit_info with '->' 05:23
plobsing_ I'm trying to eliminate places where that happens 05:24
providing alternatives
Coke pmichaud: every several dozen 'make test' runs, I get something like: 05:26
# got : 'STRING: 12799 microseconds per iteration' 05:27
darbelo Sure, but we can't fix code we don't have access to. The deprecation policy is there to protect the darkpan.
Coke # expected : 'REGEXP: [0-9]+ microseconds per iteration'
dalek rtcl-nqp: d0309c8 | coke++ | build/PARROT_REVISION:
fix typo in parrot revision
rtcl-nqp: 41d0c32 | coke++ | (3 files):
Add stub [interp]
rtcl-nqp: b337c16 | coke++ | src/Partcl/commands/info.pm:
improve stub for [info exists]
rtcl-nqp: c6f74ae | coke++ | src/init.pm:
Pull in parrot's config hash, we'll need it to setup more globals...
pmichaud Coke: odd. I wonder if it's a -G bug.
darbelo plobsing_: Look at the Getopt::Obj mess, it's a trivial change, but we can't make it if it breaks other people's code. 05:28
That's also the reason behind line 72 in include/parrot/pmc_freeze.h 05:29
Coke this break error is weird. something is eating my break exception. 05:33
when Partcl.Compiler.compile() creates an invokable object, does it eat CONTROL exceptions? 05:34
pmichaud it might 05:37
can't say for sure... exception handling is really weird overall
msg chromatic your comments and/or analysis on TT #1374 would be helpful 05:38
purl Message for chromatic stored.
Coke ok. that isa HLL::Compiler isa PCT::HLLCompiler... 05:39
pmichaud compilers/pct/src/PCT/HLLCompiler.pir
(in parrot repo)
Coke yah. so, 'compile' there, which then dispatches... 05:40
dukeleto the namespace wars broke Tapir as well. so many bloody bodies 05:41
pmichaud I can't see anywhere that HLL::Compiler or PCT::HLLCompiler would be catching exceptions
(they do catch some exceptions on transcoding operations, but those handlers are removed before doing the actual parsing step) 05:42
Coke pmichaud: k. it was the most obvious place I could posit where those break exceptions were vanishing. 05:43
(first test in t/cmd_break.t is failing because the exception is eaten inside the for{} body.
(so the loop runs to the end.)
05:44 urigard joined
Coke I'm exhausted, though. and will call the index updates a major victory. Thanks for your help/patches. 05:44
pmichaud my pleasure
excellent work
dalek rrot: r43121 | plobsing++ | trunk/DEPRECATED.pod:
change wording on freeze/thaw deprecation to highlight interim API
purl dalek: that doesn't look right
rrot: r43122 | plobsing++ | branches/pmc_freeze_cleanup (2 files):
add VISIT_PMC_ATTR macro to visit an attribute easily
pmichaud I was working on being able to have constant return exception handler pmcs, but that didn't work out. :immediate subs seem not to be so immediate in NQP for some reason. 05:45
i.e., they aren't being converted to constants in the .pbc -- they're remaining as Sub PMC objects.
Coke hurm. I'd have to look at the generated pir.
(I would try wrapping it in an INIT block)
ugh. zzzzzzzzzzzzzzzzzzzzz 05:46
pmichaud ...INIT block?
INIT blocks translate to :load :init, not :immediate
Coke Was trying to think of a way to get it to dump to PIR sooner. also, zzz. 05:47
pmichaud ah
anyway, zzz here also
dalek TT #1374 created by pmichaud++: :immediate semantics have changed 05:50
cotto Is there any likelihood that we'll care about dynamically registering new kinds of PackFile segments? There's an old TODO by leo to that effect in src/packfile.c. 06:04
06:05 abqar joined
cotto trac.parrot.org/parrot/browser/trun...2917#L1441 06:05
darbelo I sincerely doubt it. Not enough people undarstand that code enough to care about improving it. 06:06
cotto So far it doesn't look that bad.
I'll clobber it. A random TODO won't have any effect and if we need it we can implement it. 06:07
plobsing_ thats not about segments I don't hink 06:08
s/hink/think/
darbelo cotto: He's not bad, just misunderstood ;)
plobsing_ nm 06:09
darbelo The only one I've seen make changes to that code is bacek, and he's a magical coding robot.
cotto and I can clean up a header while I'm in there 06:14
darbelo Hm, looks like the segfault wasn't gone. Just hidden. 06:15
But I have to sleep now. 06:16
cotto night
darbelo collapses
dalek rrot: r43123 | plobsing++ | branches/pmc_freeze_cleanup/src/pmc_freeze.c:
eliminate logical || with non-zero constant warning
06:17
dukeleto the differrences between :load, :init and :immediate seem to have scary black magic when stored in PBC's 06:19
dalek pir: bb85fd7 | dukeleto++ | (2 files):
Update TODO and .gitignore
pir: 81de7fc | dukeleto++ | t/harness.pir:
Fix our use of Getopt::Obj, which changed in the Great Namespace War
Tene dukeleto: it got put back to how it was before.
oh, you're going back. 06:21
It'll go back again, um, someday, I guess.
dukeleto Tene: it is nice to have a passing test suite 06:22
dalek TT #1373 closed by dukeleto++: ./t/tools/pgegrep.t: New failures 06:23
dukeleto pmichaud: we should really have some tests for that :immediate business. that is kind of scary.
06:29 bacek joined
chromatic I made all of the :immediate tests we have in the repo work. 06:32
It's a giant jungle of mess though: not just the code, but also the semantics.
dalek rrot: r43124 | cotto++ | trunk (2 files):
[packfile] some header cleanup and removal of a decrepit and unlikely TODO
06:33
cotto We don't have opcodes that can take a variable number of arguments, do we? From what I can tell, a given opcode number takes a known constant number of arguments.
chromatic Right. 06:34
cotto OK. The pdd needs fixing then.
0x1d1 + 1 06:35
1+1
purl 2
cotto 1+0x1
1+0h1 06:36
1+purlisstupid
chromatic Once upon a time there were variadic opcodes I think, but I think they went away after the big MMD change. 06:39
cotto It's good to know that the docs are simply out-of-date instead of purposefully deceptive. 06:40
chromatic There's very little intentional malice in our docs. 06:41
cotto "There are hardly any mines in our back yard." 06:42
Tene Okay, I have a patch for Getopt::Obj that doesn't break existing uses.
dalek TT #1375 created by jimmy++: [patch]changed class.pmc to use GET_ATTR syntax 06:55
dukeleto Tene: where? 06:56
nopaste "tene" at 24.10.252.130 pasted "Here, dukeleto" (321 lines) at nopaste.snit.ch/19124 06:57
Tene dukeleto: It doesn't seem to actually be usable from HLLs, though, so I'm trying to track that down first. 06:58
Dunno if it's a failure in rakudo or in parrot or in G::O or whatever
dukeleto Tene: um, that undoes my most recent patch 06:59
Tene: have you run the test suite on that patch?
Tene dukeleto: I ran t/library/getopt_obj.t, which passed.
Both before and after the patch.
I'm running 'make test' now anyway. 07:00
dukeleto Tene: um, you should run "make test" but prove -v t/tools/pgegrep.t will fail on your patch
Tene dukeleto: I get "all tests successful"
dukeleto Tene: something is up 07:02
nopaste "tene" at 24.10.252.130 pasted "prove -v t/tools/pgegrep.t" (19 lines) at nopaste.snit.ch/19125 07:04
cotto chuckles at old docs that mention "v-table methods". 07:05
Tene Oh, things are failing because nqp-rx's HLL::Compiler registers itself as the 'parrot' compiler, so existing HLLs don't load languages/parrot/parrot.pbc, and they also haven't been migrated over to using HLL::Compiler's new interface. 07:07
Tene re-starts 'make test' 07:08
dukeleto Tene: i am running your patch on my machine now 07:09
Tene dukeleto: can you explain why you expected pgegrep.t to fail? does it fail for you with that patch?
dukeleto Tene: pgegrep was failing in trunk 07:10
Tene: are we in the same universe?
Tene dukeleto: that patch leave Getopts::Obj in its old namespace, but *also* installs the classes in the appropriate namespaces. 07:11
cotto pdd 13 has some dust on it, but it's not too bad. 07:12
dukeleto Tene: yes, your most recent patch passes on my machine. go for it 07:13
Tene: i didn't realize you put them in both
Tene dukeleto: I've suddenly been kicked offline. My cable modem refuses to give out an address. So, maybe I can commit tomorrow. 07:20
cotto nqp-rx.pbc makes pbc_dump act oddly. 07:22
stupid need for sleep 07:24
dukeleto Tene: you want me to commit? 07:27
Tene it's not like it's an urgent patch. If you want it in, go ahead. 07:31
07:31 nopaste joined 07:34 he joined, szg joined 07:36 szg joined
dukeleto Tene: it is all yours :) 07:37
cotto Goodie. PBC is documented in pdd13 and in docs/parrotbyte.pod 07:41
This is more than would be wise to attempt in a night. It's sleeping time.
moritz good night cotto 07:42
cotto chromatic, is there any reason we need both docs/parrotbyte and pdd13? I'm thinking that it'd be a good idea to merge whatever's unique into the pdd and nuke parrotbyte.pod. 07:43
(I'm going to bed, but I'll check the backscroll.)
chromatic Merge away.
07:44 szabgabx joined 07:46 nopaste joined
dalek rrot: r43125 | cotto++ | trunk/docs/pdds/pdd13_bytecode.pod:
[pdd] update pdd13, mostly deleting obsolete information and improving formatting and clarity
07:54
07:56 iblechbot joined 08:03 bacek joined
dalek tracwiki: v10 | cotto++ | CottoTasklist 08:06
tracwiki: trac.parrot.org/parrot/wiki/CottoTa...ction=diff
chromatic aha 08:20
JimmyZ what? 08:25
chromatic I fixed t/op/debuginfo.t on the context_unify3 branch. 08:26
JimmyZ chromatic++ 08:29
chromatic Two more test files have failures. 08:30
Three failing tests.
08:33 TonyC joined
JimmyZ X-D 08:34
0042 test 08:35
1 test
13 test
08:42 fperrad joined
dalek rrot: r43126 | chromatic++ | branches/context_unify3/src/call/args.c:
[PCC] Ensured that the current context of a tailcall has a CallContext PMC;
08:42
rrot: r43127 | chromatic++ | branches/context_unify3/src/pmc/null.pmc:
[PMC] Added a specific invoke() VTABLE entry for Null PMC to pop the context

number for the backtrace caused by the exception thrown from invoking a Null PMC.
rrot: r43128 | chromatic++ | branches/context_unify3/src/debug.c:
[PDB] Tidied code in PDB_backtrace(); no functional changes.
08:43 fperrad_ joined
dalek pir: 38d7b56 | dukeleto++ | t/harness.pir:
Add a --help command line argument and print it out when given no arguments as well
08:48
chromatic ... and there's a fix. 09:04
Unfortunately, it causes one test failure.
JimmyZ chromatic: I had uploaded class.pmc patch, a big patch. 09:05
09:09 payload joined
chromatic KABOOM! 09:14
dalek pir: 02fdb6c | dukeleto++ | metadata/tapir.json:
Add a Plumage metadata file for Tapir, generated with 'parrot setup.pir plumage'
09:16
chromatic You're all going to like this one. 09:17
JimmyZ oh, esoteric codes appears in another place again. 09:19
chromatic It was already esoteric. 09:20
From the figurative mountains of madness.
My first attempt to fix that problem led me to IMCC's PBC generating code, and I had a moment where I had to think "If I do this *that* way, how will it interact with the GC?" 09:21
dalek rrot-plumage: 24d8c96 | leto++ | metadata/tapir.json:
[METADATA] Add metadata for Tapir
chromatic It's like a triple-double in basketball.
You get to mess with calling conventions, IMCC, PBC storage, lexicals, NCI, the IMCC->PIR->IMCC boundary, and the garbage collector all at once. 09:22
moritz "patch of everything" 09:23
JimmyZ o_O
where does 09:26
where is CONST_STRING defined?
chromatic tools/build/c2str.pl 09:27
09:28 UltraDM joined
dalek rrot: r43129 | chromatic++ | branches/context_unify3 (4 files):
[PMC] Set the current sub of NCI calls to the parent sub, so that calls into

set_outer() method to ignore the NCI calling context when attaching the correct context to another Sub PMC. If that sounds esoteric, be glad that bacek and I know what it means, and that we have a test which catches it.
  (Roll on Lorito to make this all go away.)
09:31
chromatic msg bacek context_unify3 passes all of its tests. 09:32
purl Message for bacek stored.
chromatic msg whiteknight context_unify3 passes all of its tests.
purl Message for whiteknight stored.
chromatic Hm, and that's the fastest I've ever seen coretest run. 09:33
Oops, no... t/library/streams.t has one. 09:34
JimmyZ seems that the second args in CONST_STRING is not used
Do I understand correctly? 09:35
chromatic There are only two arguments.
JimmyZ the second args in CONST_STRING is not used?
chromatic tools/build/c2str.pl processes files with CONST_STRING and writes filename.str, which defines the CONST_STRING macro. 09:36
JimmyZ I see it's #define CONST_STRING(i, s) _CONST_STRING(i, __LINE__)
09:37 mj41 joined
chromatic Yes. 09:38
JimmyZ I don't know where s arg is used?
chromatic Later in the .str file. 09:39
Hm, the context_unify3 branch creates twice as many RetContinuations as trunk.
JimmyZ chromatic: I couldn't find. 09:41
chromatic #define _CONST_STRING_14128 737
This means that the CONST_STRING on line 14128 is the constant string #737 in all_cstring.str. 09:42
c2str.pl also writes all of the s from CONST_STRING(i, s) into a single file which becomes an array in the interpreter.
JimmyZ them I think #define CONST_STRING(i) _CONST_STRING(i, __LINE__) is right too.
chromatic ... except that the preprocessor, c2str.pl, won't write anything to all_cstring.str 09:43
msg bacek Do we need to create a RetCont in the callmethodcc op? That's wiping out any performance gains. 09:44
purl Message for bacek stored.
JimmyZ I see many places use like CONST_STRING(interp, "ExceptionHandler"); what does 'ExceptionHandler' translate to? 09:46
chromatic see all_cstring.str
JimmyZ oh, it's there. 09:47
09:47 rhr joined
chromatic msg bacek Wait, I could be reading that wrong.... 09:50
purl Message for bacek stored.
10:02 fperrad joined
JimmyZ Does parrot need to change Context/CallContext to subclassable? 10:09
chromatic I don't know. 10:10
msg bacek Found the reason and pushed it in r43130; it's a bit of a hack we need to address in a better way. 10:20
purl Message for bacek stored.
dalek rrot: r43130 | chromatic++ | branches/context_unify3/src/ops/object.ops:
[ops] Made callmethodcc op skip creating a RetContinuation when invoking an NCI

the invokee's responsibility to create the RetCont. This improves branch performance by 2.499% on fib4.pir.
chromatic sleeps 10:21
JimmyZ good night 10:23
dalek rrot: r43131 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] when parrot-tapir is available, use it instead of prove
10:37
10:41 bacek joined 11:21 estrabd joined
dalek rrot: r43132 | mikehh++ | trunk/docs/pdds/pdd13_bytecode.pod:
fix codetest failure - docs/pdds/pdd13_bytecode.pod - max pod linelength is 78 (plus some trailing spaces)
11:25
mikehh my editor (kate) is set to remove trailing spaces and did so in the above commit - the file was not tested for trailing spaces 11:28
the test t/codingstd/trailing_space.t misses a lot of files that it should test 11:30
Infinoid I've heard that mentioned at least once before. Patches are still welcome :) 11:38
mikehh looking into it :-}
12:31 lucian joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31006), fulltest) at r43132 - Ubuntu 9.10 i386 (gcc) 12:33
All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31011), fulltest) at r43132 - Ubuntu 9.10 i386 (g++) 12:41
12:42 lucian joined 12:49 lucian joined 12:54 patspam joined
Coke AIGH 12:57
mikehh that sounds ominous 12:59
Coke tene, pmichaud ; my break issues are likely because "our sub if()" is implemented with an NQP while loop. 13:00
Coke tries to figure out how to say please don't bother catching that, but let it go.
moritz context_unify3 make test just fails one test 13:01
t/library/streams.t test 12 13:02
13:02 JimmyZ joined 13:04 Patterner joined
moritz /pmc/object-meths.t test 15 in 'make testg' 13:05
13:10 whiteknight joined
whiteknight good morning, #parrot 13:10
JimmyZ good moring, whiteknight 13:11
whiteknight chromatic++, bacek++ 13:12
(context_unify3 passing tests)
JimmyZ whiteknight: ?
whiteknight JimmyZ: Did you get a commit bit yet?
JimmyZ whiteknight?
purl hmmm... whiteknight is mailto:wknight8111@gmail.com or the grand master funk or wknight8111.blogspot.com/
JimmyZ whiteknight: hadn't, I couldn't find a scanner here.
whiteknight ah, okay. I had that problem too 13:13
I ended up mailing a hard copy
JimmyZ whiteknight: It's really hard to visit your blog. I couldn't get a proxy. 13:14
:)
whiteknight ah right, you had mentioned that before
so what can I do to help?
Coke JimmyZ: he's aggregated on planet.parrotcode.org, if that helps. 13:15
13:15 payload joined
whiteknight Coke: not everything gets aggregated there, only the stuff labled with "parrot" is 13:15
of course, the rest of it isn't so interesting :)
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31012), fulltest) at r43132 - Ubuntu 9.10 i386 (g++ with --optimize)
JimmyZ Coke: good 13:17
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31013), fulltest) at r43132 - Ubuntu 9.10 i386 (gcc with --optimize)
13:20 patspam joined
mikehh context_unify3 branch - same result as moritz++ above 13:31
context_unify3 branch - make test fails 1 test - t/library/streams.t - Failed test: 12 - Ubuntu 9.10 i386 (gcc with --optimize) 13:32
whiteknight mikehh: I resolved that test failure last night by doing touch src/dynpmc/*, make clean, make 13:33
it might be a makefile dependency issue, if I'm correct
pmichaud good morning, #parrot 13:36
whiteknight good morning, pmichaud
pmichaud 13:00 <Coke> tene, pmichaud ; my break issues are likely because "our sub if()" is implemented with an NQP while loop.
interesting.
Coke pmichaud: sent you an email with more details. 13:39
pmichaud Coke: yes, got it.
Coke ETOOMUCHDOGFOOD 13:40
pmichaud you've undoubtedly found the problem. I'm not quite sure how to resolve it at the moment.
might just do the loop in PIR 13:41
I think I'll try that. 13:43
Coke if I had goto and labels, I could handroll it and still be nqp. =-)
but yah, pir is probably the simplist out.
pmichaud yeah.... but goto itself requires control exceptions
(not *this* control exception, but it does require some) 13:44
Coke switch will require similar treatment.
dalek TT #1376 created by fperrad++: [NQP-rx] cannot support an empty string as token
TT #1098 closed by fperrad++: [CAGE] rename parrot_nqp to parrot-nqp
TT #853 closed by fperrad++: Can't load OpenGL
Coke (and possibly time) 13:45
pmichaud yes, time needs it also
hrm.
13:46 Patterner joined
pmichaud looks like 'switch' forces a 'last' after an eval anyway, though? 13:46
nopaste "mikehh" at 81.149.189.7 pasted "context_unify3 branch - fulltest failures" (64 lines) at nopaste.snit.ch/19126 13:49
pmichaud has a patch for if() 13:55
testing now
13:56 jan joined
whiteknight mikehh: you're right. t/library/streams.t does fail 14:04
dalek kudo/master: b01665b | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 449 files, 32192 (86.1% of 37376) pass

primarily represent changes to the spectest suite as opposed to regressions.
14:07
purl regressions are always confusing...
kudo/master: 39685ac | pmichaud++ | docs/announce/2009-12:
More documentation updates.
Coke pmichaud: that last is just meant to be internal to that while loop, and isn't part of the control flow of the app. 14:13
pmichaud ah, good point. 14:20
Coke pmichaud: ok. I have something that passes a few tests in t/cmd_break.t now. 14:27
nopaste "coke" at 193.200.132.135 pasted "avoid while in if()" (47 lines) at nopaste.snit.ch/19127 14:28
pmichaud I just pushed my patch for if()
Coke excellent, will revet.
I like yours better anyway. 14:29
dalek rtcl-nqp: 5617db1 | pmichaud++ | src/Partcl/commands/main.pm:
Refactor if() so that it doesn't use nqp's while statement,

to catch.
Coke the remaining failures in t/cmd_break.t are fixable by causing the subs generated by proc to catch continue and break and complain about it. 14:32
:q 14:33
ww
14:33 bluescreen joined
Coke looks like [continue] is really generating a REDO. 14:35
(or it's being interpreted as a redo)
14:35 mariano__ joined
Coke yah. looks like a bug in nqp - I'm generating a 65, but the loop is just repeating over and over at that point. 14:36
... damnit. cannot reproduce. 14:42
dalek rrot: r43133 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] some refactor
14:44
Coke aha. there we go. 14:48
nopaste "coke" at 193.200.132.135 pasted "shows the continue bug in NQP" (12 lines) at nopaste.snit.ch/19128
Coke pmichaud: that should print out a few dozen lines and quit, but goes into an infinite loop. 14:49
(repeating with FOO: 6\\nCONT)
pmichaud it's being caught by the while 14:50
Coke Yes, but wrongly.
pmichaud well, I'm not sure that's a bug in nqp, though.
Coke that is, it's an excpetion that should be caught and dealt with.
but CONTINUE doesn't mean REDO
pmichaud it's not redo
Coke it is redoing, though.
pmichaud we never get to the $a++
Coke AH.
ok. so there's a bug in our implementation of for. I can fix that. 14:51
pmichaud++
(have to put in a CONTROL override to handle "next" so our "incr" logic is run. 14:54
14:57 davidfetter joined 15:01 whiteknight_ joined 15:02 lucian joined
Coke pmichaud: fixed. thanks for the diagnosis. 15:08
I would have stared at that for another hour. =-)
for loops now work with break -and- continue.
dalek rtcl-nqp: 887571a | coke++ | src/Partcl/commands/main.pm:
Fix usage args for [break]
15:11
rtcl-nqp: 4c9273d | coke++ | src/Partcl/commands/string.pm:
implement [string repeat]
rtcl-nqp: 033f0ff | pmichaud++ | src/Partcl/commands/main.pm:
Refactor if() so that it doesn't use nqp's while statement,

to catch.
rtcl-nqp: 9fcf4a5 | coke++ | src/Partcl/commands/main.pm:
when [for] loop gets a [continue], we still must process our 'next' arg.
rtcl-nqp: de0ecae | coke++ | src/Partcl/commands/main.pm:
Merge branch 'master' of github.com:partcl/partcl-nqp
15:32 davidfetter joined 15:36 Psyche^ joined
dalek nxed: r273 | julian.notfound++ | trunk/winxedst1.winxed:
operator || in stage 1
15:42
15:51 patspam joined 16:02 theory joined
cotto_work good mooring 16:03
dalek p-rx: 9652695 | pmichaud++ | (3 files):
Fix empty string in regexes (TT #1376, fperrad++).
16:12
p-rx: 17492b7 | pmichaud++ | src/stage0/ (4 files):
Update bootstrap.
rrot: r43134 | pmichaud++ | trunk/ext/nqp-rx/src/stage0 (4 files):
[nqp]: Update nqp with fix for TT #1376 (fperrad++)
16:23
TT #1376 closed by pmichaud++: [NQP-rx] cannot support an empty string as token 16:33
Coke pmichaud: so if I wanted to make a glob compiler for partcl, I'd probably start by copying ARE and then gutting it. 16:42
but looking at it, I see nibbler & termish... I'm not sure what those are for or if I'd need them for globbing. can you enlighten me? 16:44
(atom and quantifier make sense to me.) 16:45
16:47 brianwisti joined 16:58 whiteknight joined 17:16 darbelo joined, iblechbot joined 17:39 mikehh joined 17:41 chromatic joined
pmichaud Coke: nibbler and termish have their roots in the regex parser for the p6 grammar. I suspect that a glob compiler wouldn't need to copy that part so directly 18:01
(p6's regex parsing overlays onto the operator precedence parser... I'm hoping to come up with a slightly saner way to achieve the same thing)
TimToady p6's regex parsing has to stay as extensible as the rest of the language, hence the insanity 18:03
pmichaud sure, but I'm thinking a slightly different approach besides termish/nibbler :-)
anyway, you can veto whatever I come up with :)
Coke ok. so, given that, I think I can come up with something globby. 18:04
pmichaud the biggest thing to remember is that in globs, the * and ? aren't quantifiers, they're metachars 18:05
Coke yup 18:06
I was more concerned about the whole 'implementing in nqp" bit. =-)
pmichaud ah
Tene the * and ? issue is a common struggle for students when i teach regular expressions. 18:08
Coke pmichaud: can I also avoid buildsub? 18:09
pmichaud I think you'll still need buildsub
Coke ok.
pmichaud looking.
oh, maybe not 18:10
you need something that does the equivalent of buildsub
I've been thinking it should be provided by HLL::Actions, though -- haven't gotten that far yet.
I forget why I re-listed it in ARE
dalek rrot: r43135 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] first attempt of spec rpm
18:18
rrot: r43136 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] stores plumage description in a file
18:26 theory joined 18:28 etworks joined
etworks quick question: would Parrot be a good platform for implementing an array-oriented language (like APL, J, K/Q, Nial, IDL, etc)? 18:28
would it be easy to implement "array comprehensions", e.g. 9 9 9 = 1 2 3 + 8 7 6 18:29
darbelo There was an "APL on parrot" some time back. 18:30
paraplegic?
or something like that...
cotto_work sounds right 18:31
etworks was there?
interesting, let me ask google
(and I thought I was so orriginal)
darbelo code.google.com/p/paraplegic/
cotto_work code.google.com/p/paraplegic/
darbelo second result for "paraplegic parrot" ;)
cotto_work I went to trac.parrot.org/parrot/wiki/Languages 18:32
etworks well, that answers my question. thanks guys. I'll see if I can write a J interpreter on Parrot.
cotto_work etworks, there's a new tool in active development called nqp-rx that will be the recommended way to develop a Parrot-hosted language. Take a look at github.com/partcl/partcl-nqp for a language that the author of nqp-rx (pmichaud) is helping to develop. 18:34
etworks ew, Tcl 18:35
cotto_work there's also the ng branch of rakudo, but it's not finished yet (though it's passing a large chunk of the Perl 6 test suite). 18:36
etworks but I guess I should use best practices....
darbelo paraplegic is, amusingly, being not-developed by the same two people ;)
cotto_work etworks, feel free to hang out here and take copious notes about what needs to be documented about nqp-rx.
etworks well spun sir, well spun. 18:37
hmm, maybe Rakudo is a good way for me to learn Perl6 and Parrot simultaneously.... I've been itching for P6 for a few years 18:38
cotto_work There's also winxed, which is C++ code that generates PIR independently of any Parrot tools.
Coke I'd offer you a commit bit on partcl-nqp if you weren't such a hater. =-) 18:39
cotto_work Perl 6 is pretty sweet. I'd recommend the advent calendar if you want to get started.
etworks what's the advent calendar?
purl hmmm... the advent calendar is dev.catalyst.perl.org/wiki/adventca...ararticles
cotto_work perl6advent.wordpress.com/
perl 6 advent calendar is perl6advent.wordpress.com/ 18:40
etworks Coke: I'm not a hater, per se. I've just been ruined by languages that let me be lazy (e.g. Perl)
oh, that's neat. 18:41
are the Perl6 grammar things pretty much code-complete? I coudl get my feet wet by just writing the J grammar .... or wait, does it have to be context-free? 18:44
Tene There's also github.com/tene/steme/ my scheme compiler written using nqp-rx 18:45
etworks I really don't know Tcl well, so I would have a long road to lear nqp-rx 18:48
dukeleto brianwisti: welcome to our corner of the interwebs!
etworks: what do you mean "code-complete" ? 18:49
etworks dependable, unlikely to change their syntax, more or less robust
dukeleto etworks: Perl 6 grammars are implemented and function quite well, if that is what you mean
cotto_work etworks, nqp (and nqp-rx) is based on Perl 6 so there'll be some overlap. Looking at nqp-rx's tests will also help you get a feel for the language.
etworks that's exactly what I mean
dukeleto etworks: you want to learn about nqp-rx, then
etworks: it gets installed as parrot-nqp with parrot
brianwisti dukeleto: thanks, great to lurk here.
dukeleto brianwisti: you will find the people here pleasant and helpful, except purl 18:50
purl, die in a fire
purl HALP
etworks maybe I'm confused ... what is nqp's purpose?
dukeleto etworks: it is an easy to parse subset of Perl 6 that Parrot and Rakudo use to get shit done
dalek rrot: r43137 | mikehh++ | trunk/runtime/parrot/library/distutils.pir:
fix codetest failure - pod syntax in runtime/parrot/library/distutils.pir
brianwisti etworks: Dunno about purpose as such, but I'm using it to 1) define grammars; and 2) script simple tasks. 18:51
Coke why nqp is use.perl.org/~pmichaud/journal/34974
etworks oh, ok
Coke (that refers to the old version of nqp but is still valid) 18:52
etworks I was just confused -- this does look useful for my needs
cotto_work www.searchviews.com/wp-content/them...rests1.jpg
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31025), fulltest) at r43137 - Ubuntu 9.10 amd64 (g++ with --optimize) 19:01
etworks should I have any particular expectations about array-processing performance in parrot? I know P6 plans some hyperoperators that are very close to some APL/J concepts, so maybe array processing has been given some attention/tuning? 19:06
chromatic Not a lot. 19:07
purl Not a lot. are you still in hong kong?
dukeleto etworks: we have benchmark scripts for array processing. what exactly are you interested in knowing about? 19:14
etworks whether I can/should expect an (almost exclusively) array-oriented language to perform well when hosted by parrot 19:16
or whether parrot is targetted towards more "standard", scalar-oriented (i.e. von Neumann type) languages 19:17
dukeleto etworks: parrot aims to support all dynamic languages 19:18
etworks: if you find something you need, tell us
etworks I undetstand, but usually "maintain generality" means "lower performance for niche markets", and array-orientation is niche....
dukeleto etworks: do you know about our language skeleton creation script? 19:19
etworks nope, I know ~0 about Parrot
particle etworks: the abstract data type in parrot is called a PMC. the pmc defines a data storage mechanism and api.
dukeleto etworks: tools/dev/mk_language_shell.pl will make a lang skeleton for you, using nqp-rx 19:20
particle the internals of the pmc are opaque
dukeleto etworks: PMC = PolyMorphic Class or Parrot Magic Cookie
particle so, there are some PMCs, like 'Integer', that only deal with integers
and ResizablePMCArray, which is an array type that stores other PMCs 19:21
dukeleto etworks: you probably want to know about FixedPMCArray and ResizablePMCArray
etworks yep, that's the kind of thing I'm looking for
I guess, where do I get started?
dukeleto etworks: FPA's are much faster than RPA's, since the length is fixed and fewer shenanigans can happen 19:22
etworks with the advent calendar?
particle as it stands now, none of the array-type PMCs deal with sparse arrays, or have many optimizations.
dukeleto etworks: perl tools/dev/mk_language_shell.pl mylangname
etworks yeah, but I definitely need RPAs
I don't need sparse arrays to begin ... we haven't even got that right in J yet
dukeleto particle: parrot-linear-algebra may have some kind of sparse array type, or it will soon
particle right, that's the other thing... if our core PMCs don't turn you on, write your own 19:23
etworks for now this is a proof of concept
I was just trying to set my expectations, not making any requests
particle aye.
i'm trying to help set your expectations.
by the way, nqp allows you to write top-down, shift-reduce, and custom parsers, and they can all call each other 19:25
i don't foresee any problems in writing the J grammar with nqp
etworks FYI, the J grammar is not context-free 19:27
but I can live with a starter kit that is 19:28
Tene non-context-free is not a problem at all. 19:31
etworks good news!
what version of Perl should I use to run Parrot?
and I'm on Windows/Cygwin if that matters
Tene Parrot doesn't run on Perl.
oh, do you mean the Configure script? 19:32
etworks e PMCs don't turn you on, write your own
dukeleto etworks: perl 5
etworks perl tools/dev/mk_language_shell.pl mylangname
Tene Yes, that's Perl 5.
etworks any perl 5? not like 5.10 or whatever?
dukeleto etworks: any version of perl 5 from this century should work
chromatic You need at least 5.8.6 or better.
etworks there we go.
that I can do.
oh `make', how I hate you 19:38
ok, I'm getting Unrecognized line: 'inline op end(), which according to the IRC logs means I have the wrong line endings 19:41
I just downloaded a fresh stable Parrot, unzipped, opened a cygwin shell, Configure.pl'd, and make'd. 19:42
Coke how did you download? 19:43
etworks FTP
Coke I would do the unzip inside the cygwin shell, to help avoid line ending evil. 19:44
etworks i should check whether I'm configuring with the same version of Perl that's making
I'm pretty sure I only have the cygwin perl installed, but I know at some ponit I had activestate
Coke further steps use the perl you config'd with.
etworks yep, and they're all the cygwin version 19:45
ok, let me unzip using cygwin ... hold please
PerlJam Isn't there a cygwin package for parrot that someone put together? 19:46
(perhaps not the latest release yet)
Coke Honestly, on windows, I'd just use strawberry perl, skipping activestate and cygwin both.
(give that a shot unless cygwin is a must have for y ou.)
etworks I've never heard of strawberry perl 19:47
Coke EGADS!
strawberry perl?
etworks (and I use cygwin for the shell, mostly)
purl strawberry perl is found at strawberryperl.com/
PerlJam etworks: strawberry perl is the one to use on windows.
Coke strawberry comes with a compiler baked in.
etworks I am intrigued.
PerlJam etworks: it comes with Padre which is a GUI editor for Perl written in Perl.
etworks I haven't perled in a while.... last few years I've been nearly exclusively J
19:48 kjeldahl joined
etworks yep, tar xvf instead of winzip solved the problem 19:52
thanks @Coke
19:58 theory joined
Coke etworks: np 19:59
cotto_work are our docs licensed under the same terms as the code? 20:19
20:20 joeri joined
etworks man, this is a comprehensive test suite 20:25
darbelo etworks: actually, if you check the irclog you'll see a fair amount of bitching about the places where it isn't ;) 20:26
But, yeah. There's a lot of testing done.
cotto_work coverage? 20:30
purl somebody said coverage was cv.perl6.cz
Coke cotto_work: yes. 20:32
anything in the repo unless otherwise noted.
cotto_work I was just pointing that out to etworks 20:35
Coke (license) 20:36
cotto_work oh. Thanks.
dalek TT #1377 created by baest++: Build fails on OSX in continuation.c 20:39
cotto_work baest, is that from a clean checkout or tarball? 20:49
Coke oh, didn't realize he was here. 20:50
also, what what version of OSX?
Coke remembers to try context_unify3 against a HLL 20:51
chromatic Only a couple of tests fail there, Coke.
Util baest: TT #1377 - With a fresh checkout of the same rev on OS X 10.5, I get a successful build. 20:54
Coke chromatic: partcl dies horribly during build.
src/ops/tcl.ops: In function 'Parrot_tcl_return_p':
src/ops/tcl.ops:170: error: dereferencing pointer to incomplete type
partcl-nqp also dies, probably due to a lack of recent merge from trunk to that brench. 20:56
Util baest: also, our generated continuation.c files are identical (except for the directory names embedded in #line statements) 21:00
chromatic Sounds like a missing header.
21:01 jsut_ joined
dalek TT #1377 closed by coke++: Build fails on OSX in continuation.c 21:12
cotto_work ... and thus baest learned the importance of working from a clean checkout. 21:15
dukeleto cotto_work: lulz 21:17
cotto_work: everyone has to learn that sometime
When in doubt, "make realclean"
cotto_work yup. I don't mind, especially since the release isn't actually b0rked. 21:18
baest yeah, sorry guys 21:20
japhb pmichaud or Tene, ping
dalek kudo/master: 55a5c07 | moritz++ | build/Makefile.in:
[build] use the same spectest revision for the release as everything else uses
baest I made a real clean and thought that was enough, but when it failed I should have made a clean checkout before making a ticket
Tene japhb: Hi! 21:21
japhb Tene, Hi there!
Would you mind adding bit shift ops to NQP-rx? (That's assuming they are still << and >>, which is what I tried and didn't work.) 21:22
Or is it +>> and +<< now?
Coke japhb: why do you need those?
japhb Coke, converting some PIR to NQP
Coke ah. I've just been using pir::dumb_opcode__xxx for that. 21:23
japhb Coke, yeah, me too. But it seemed like this should be easy for someone who is in the parser often enough.
And they are, after all, standard arithmetic ops in most computer languages, so seemed reasonable from that angle too. 21:24
21:27 bacek joined
Tene japhb: I'm just diving back in at work, but I'll look at that in a bit. It would help if you could work out if it's supposed to be << or +<< or ≪ or whatever 21:29
japhb Tene, thanks. I'll take a look.
Tene: +< and +>, see perlcabal.org/syn/S03.html#Multipli...precedence 21:33
Tene and what are the PIR ops for that?
japhb shl and shr
21:35 xenoterracide joined
whiteknight how is context_unify3 doing now? 21:53
wasn't really looking at it today
chromatic whiteknight, a couple of fulltest test failures. 21:54
whiteknight okay 21:55
Coke ls 22:02
ww
22:07 bacek joined
bacek chromatic, ping 22:11
chromatic pong, bacek 22:12
bacek chromatic, we can resurrect usage of NEED_RET_CONTINUATION 22:13
22:13 xenoterracide joined
bacek we just have to update "new_ret_continuation" to use caller_ctx, not CURRENT_CONTEXT 22:13
chromatic My approach wasn't very clean at all. I wonder if making the invokee create the retcont is better. 22:14
bacek this approach used in trunk
pmichaud 19:20 <dukeleto> etworks: tools/dev/mk_language_shell.pl will make a lang skeleton for you, using nqp-rx
I don't recommend mk_language_shell.pl, fwiw. 22:15
use tools/dev/create_language.pl instead -- it's more up-to-date
moritz why do we keep the outdated script then? 22:16
Tene can we get mk_language_shell.pl to warn and prompt without violating deprecation policy?
moritz: deprecation policy, of course!
pmichaud moritz: deprecation policy
purl deprecation policy is a major pain in the kiester.
bacek chromatic, t/library/streams.t (Wstat: 256 Tests: 20 Failed: 1)
Failed test: 12
japhb pmichaud, question:
pmichaud a lot of people made changes to mk_language_shell.pl that I disagreed with, so I created a new one earlier this year.
chromatic Right.
pmichaud I've been keeping that one up to date.
I don't see any issue with having mk_language_shell.pl warn 22:17
japhb How do I set caller's $! from within an NQP library routine?
pmichaud japhb: have to do it from PIR
chromatic A warning is different from changed behavior.
pmichaud japhb: and the caller has to declare a $!
japhb pmichaud, I'm converting (working) Glue.pir code to NQP. Problem is, 22:18
pmichaud (i.e., a called routine can't suddenly give the caller a $!)
japhb as soon as I turn the top-level function into NQP from PIR, it has its own $!.
pmichaud ?
I don't quite understand that part.
afaik, NQP never creates its own contextuals; you have to do it explicitly
japhb Well, maybe I did it by accident somehow, but my PIR code contains anon blocks that set up $_ and $! 22:19
er
the PIR generated from the NQP
by parrot-nqp --target=pir
pmichaud the only place that NQP is supposed to create a $_ is on blocks that need it as a parameter 22:20
ooooops
I'm guessing that Tene++ added $! as automatic lexicals
urgh.
Tene If I did, they shouldn't be on everything, only on things that use exceptions. 22:21
japhb ... and there would be my problem
DAMMIT
pmichaud code looks like it adds them to every block that doesn't have explicit params
japhb I was trying to use exceptions in my library code ... that also wants to set callers $!
pmichaud oh, wait
never mind
I see
Tene++ is correct
japhb blarg
hmm 22:22
pmichaud I'm not sure that's the behavior I ultimately want
japhb: anyway, what do you want your routine to do if a caller doesn't have a $! ?
japhb how am I going to catch an exception thrown by a PIR op without setting $!?
Tene I do remember being uncertain if tha was the right way to handle it.
Coke (warn) can we deprecate the old one so we can rip it out after 2.0?
japhb pmichaud, I have this code:
my $bang := pir::find_dynamic_lex('$!');
pir::store_dynamic_lex__vsP('$!', $pipe.exit_status)
if pir::defined($bang);
Tene japhb: Doesn't the NQP try{} set $! for you? 22:23
22:23 theory joined
japhb Tene, I have to set caller's $! 22:23
pmichaud Coke: I'm fine with that. Once mk_language_shell had been patched beyond what I felt was salvageable I simply abandoned it (including abandoning any decisions about its future support)
japhb Definition of qx()
22:23 cotto_work joined
pmichaud japhb: but what if the caller doesn't have a $! ? 22:23
japhb ... which I was implementing
pmichaud, see magic code above
pmichaud that doesn't tell me anything
find_dynamic_lex will throw an exception if none of the callers have a $! 22:24
japhb If caller doesn't have $!, $bang is not defined, so the store doesn't happen.
pmichaud hmmmm
okay, that's right
Coke ... but you call the store before you check for defined?
pmichaud Coke: it's a statement modifier
japhb It's the only way I found to "fill in" contextuals from a library when you don't know if the caller declared them or not.
Coke oh.
japhb Like $*EXECUTABLE_NAME and such
Coke i didn't realize nqp did that yet. =-)
pmichaud japhb: is this occuring from inside a nested block ? 22:25
because find_dynamic_lex never finds a $! in the current sub
japhb hmmm
pmichaud (in the current Parrot sub, that is)
japhb pmichaud, nod 22:26
It looks to be nested inside some humongous sub that just does a pile of capture_lex ops on all of the subs in my library 22:27
(The qx() sub is nested inside ...) 22:28
WTH is this thing? 22:29
Implements the file scope?
pmichaud well, sure, since any subroutines there are nested in file scope. 22:31
darbelo people talking about removin mk_language_shell.pl: The script seems to have changed somewhat from what you want to remove.
pmichaud darbelo: I don't follow what you mean. (I don't *need* to follow it, but I don't follow it :-) 22:33
japhb pmichaud, sorry, came across wrong, I just trying to understand the generate code, and thinking out loud.
er generated
pmichaud japhb: sure, no problem.
japhb: I agree that the lexical generation stuff tends to be ugly at times.
darbelo pmichaud: I'm looking at the file and it's been substatialy updated. It now generates a setup.pir driven build. 22:34
pmichaud darbelo: ...and I have no desire to deal with that. 22:35
thus, create_language.pl :-)
japhb Oooh, I think I partially misdiagnosed, due to a bug in parrot Test::More. Checking to be sure ...
darbelo pmichaud: create_language.pl predates the change I'm mentioning. There's little reason to dis-recomend mk_language_shell.pl nowadays. 22:36
pmichaud darbelo: (looking at code) fair enough. But all of the tutorials I intend to write are going to be makefile based. 22:41
darbelo pmichaud: I'm not trying to change your mind at all. Diversity is good. I'm just pointing out it's been revamped and it's much better than it was before. 22:43
pmichaud I agree, it's been updated and is much better than before.
it seems to assume that languages will always be built from an already-installed parrot, instead of the approach of getting a language tarball which then downloads the appropriate parrot 22:44
japhb pmichaud, why teach people makefile methods? setup.pir is the way most of the modules in Parrot world are going 22:45
pmichaud japhb: says who?
purl well, says is not reliable, in that errors are reported but no automatic retry.
japhb pmichaud, you seem to be holding on to this idea of the HLL being the center of the world, it is no more the center of the world than Parrot is. The user's *app* is what is important, the order that stuff needs to be installed before that doesn't matter.
pmichaud, I'm judging by the metadata I've seen. 22:46
And the vast number of setup.pir conversions that have happened.
pmichaud I'm not holding onto the idea of the HLL being the center of the world.
I'm simply saying I'm not sure that Parrot is.
japhb Sure, but if neither the HLL nor Parrot is, then it doesn't matter which order they are installed in. And we've got a working system for Parrot first, and a kinda broken way of doing anything else first. 22:47
pmichaud I think the parrot-first way is "broken". It certainly doesn't meet the expectations of my users.
japhb (BTW, sorry if I was a little abrasive just now, just had issues with a person local to here, so was a little tense) 22:48
pmichaud so, describe for me how someone wanting to download and use language Xyz from an Xyz tarball would do that.
(via setup.pir) 22:49
darbelo tar xzf Xyz.tgz; cd Xyz; parrot setup.pir install 22:50
pmichaud I don't have parrot installed yet
japhb I'm saying they should not start with an XYZ tarball. They should start from a README that says "Download Parrot, configure and make install, then say "plumage install Xyz"". The idea that the first operation is to download a tarball is a side effect of history, not the way things really happen. The user reads a how-to on a blog or web site somewhere, and it starts off by telling them to download a tarball of Xyz. There's no reason it
can't tell them to do something else.
pmichaud japhb: "Download Parrot" --- which version? 22:51
darbelo pmichaud: You should, nobody tries to run a python app without installing python beforehand.
dalek kudo/master: 7f1c3fe | chromatic++ | docs/release_guide.pod:
[docs] Updated release guide.
pmichaud darbelo: python is a lot more mature than parrot
pmichaud darbelo: I can be reasonably certain that whatever version of python is on my machine will run my python app. That's absolutely *not* the case for our hlls at this time. 22:52
japhb pmichaud, is the issue that you want to have people riding rakudo HEAD? Because for any released rakudo, there is a matching parrot. Plumage simply inverts that relationship, and downloads the best Rakudo it can given the parrot ...
pmichaud japhb: even if I download a release rakudo
*released
...then what?
japhb pmichaud, That's not the case for Python either. On Debian, there's often several Pythons installed at once.
pmichaud japhb: let's suppose I downloaded the 2009-11 release of Rakudo. 22:53
so, I unpack the tarball.
I can't run setup.pir -- I don't have a Parrot yet.
I can't run plumage -- I don't have a parrot yet.
japhb pmichaud, you don't start with downloading Rakudo. You start by reading instructions that say "Want Rakudo? Install Parrot, then tell Parrot to install Rakudo"
pmichaud japhb: and which version of Parrot should someone install? 22:54
japhb They only know how to find a Rakudo tarball now because you point them to it with some instructions somewhere. So give them different instructions.
pmichaud, if they want the most recent release of Rakudo, it would be the most recent release of Parrot
pmichaud not true
what if the most recent release of Parrot doesn't *have* a most recent release of Rakudo? 22:55
As is the case yesterday and today, for example.
japhb Hold on, @family
darbelo pmichaud: To me, you are suggesting that the way to install apache is via a mod_whatever tarball.
pmichaud darbelo: To me, you're saying that I have to redo my HLL makefiles to instead use setup.pir
and if setup.pir doesn't do some operation that I need in order to build the application, I'm hosed. 22:56
22:56 ingy joined
darbelo pmichaud: I'm not saying 'do it now', but if you can add it to the makefile you canadd it to your setup.pir they are seriously extensible and a lot more portable than makefiles. 22:57
pmichaud assuming I know PIr. 22:58
PIR
does setup.pir support parallel make/build?
darbelo You can do a setup.nqp too.
I know japhb means to use that for plumage. 22:59
Hmm. Haven't checked parallel building. 23:00
japhb As a matter of fact, switching Plumage to 'setup.nqp' was waiting on Tene++ to do =>, which he did a couple days ago. 23:01
pmichaud anyway, the setup.pir approach seems to assume that HLLs and their libraries are integrated into a general form of "Parrot module archive network", where Parrot is the foundation for everything that happens. That's a valid view, but I'm not sure that HLLs in general are going to adopt it.
japhb Anyway, pmichaud, I was going to say about today and yesterday, the problem is that I was trying to respond quickly rather than pedantically.
When I say, "for the newest Rakudo, start with the newest parrot release", I should have said: 23:02
"On the page where you tell people how to get Rakudo, you should always point people to *the most recent Parrot that supports the most recent released Rakudo*" 23:03
So, for yesterday, you would have pointed them to Parrot 1.8, even though 1.9 was latest.
pmichaud ...and most people would say "oh, 1.9 is out, I think I'll grab that one instead"
japhb Because 1.8 was the latest Parrot release that supported the most recent Rakudo release.
So you put a line on there that says "We'll support 1.9 tomorrow" 23:04
Or "We'll support 1.9 on Dec 17"
pmichaud japhb: why are you putting so much work on HLL devs?
every time Parrot makes a release, I have to update my site to say when I'll support it?
PerlJam japhb: Is parrot installable via plumage?
Tene Are there any comparable situations with other pieces of software?
japhb pmichaud, that's the thing, it's LESS work for HLL devs. Remember how long it took to get everything working to build a local Parrot install? New HLL creators shouldn't have to do that.
PerlJam, chicken and egg. 23:05
If Parrot could create a REAL executable, it would be,.
chromatic Don't forget that this solution only has to work for a year or so.
pmichaud japhb: "how long it took" was because parrot installs were broken, not because of setup/config utilities
PerlJam japhb: If parrot is installable via plumage, then you always start with the latest parrot and use it to install rakudo and that parrot it depends upon.
japhb The other thing is that having every HLL build a private parrot kills HLL interop, which is the whole magic of Parrot
pmichaud japhb: By no means do I advocate building a private parrot in every instance 23:06
that's why the default Configure.pl always finds whatever parrot is already installed
we only advocate --gen-parrot now because Parrot is not sufficiently stable to be able to say "install Parrot, build Rakudo"
japhb pmichaud, that just runs over the very same version compatibility issue you're calling Plumage on.
Ah!
pmichaud if I thought that downloading a separate copy of Parrot for every HLL was the answer, then --gen-parrot would be the default. 23:07
japhb OK, so when Parrot stabilizes, you will be telling people to get Parrot first then?
(honest question)
pmichaud yes, when I think that rakudo development has stabilized to the point that I recommend "latest release" instead of "latest HEAD", then the default instructions will change 23:08
Tene japhb: will plumage work with the --gen-parrot version of Parrot?
I'd imagine not, at least until we get the build dir looking like the install dir, yes?
pmichaud Tene: even the --gen-parrot version does an install 23:09
Tene pmichaud: Oh, okay. I didn't know that.
pmichaud Tene: --gen-parrot no longer uses the build tree
japhb Tene: pmichaud is correct
(of course)
Parrot Test::More bug: 23:11
$ parrot-nqp -e 'pir::load_language("parrot"); pir::compreg__PS("parrot").import("Test::More"); my $undef; is($undef, 0)'
ok 1
pmichaud japhb: what answer are you expecting? 23:12
japhb pmichaud, you get 'ok 1' if you change is() to isnt(). The latter is correct, according to the usual semantics of undefined values. 23:13
'you also get'
pmichaud japhb: I'm not sure that's a Test::More bug 23:14
I suspect it's an Undef bug
just a sec
japhb Fair enough.
pmichaud (building a nopaste)
nopaste "pmichaud" at 66.25.4.52 pasted "parrot comparisons don't always do what you expect" (20 lines) at nopaste.snit.ch/19131 23:16
japhb While you're working on that ... I guess my frustration is (at least I gather) that Parrot and Rakudo will not be at the stability level you're looking for for some time. In the meant time, if we teach everyone how to set things up in a way we know we will change, we've just mistrained a bunch of people, and increased the momentum on an already known-LTA technique. 23:17
23:17 TiMBuS joined
japhb Yep, that nopaste is buggy all right. 23:18
Oh dear.
pmichaud japhb: let's try an analogy 23:21
japhb And as for the "lots of work for HLL guys to update the instructions", it could be part of the release announcements, which you do already. No extra work.
pmichaud japhb: ... except you said I have to do it at the point of a parrot release
23:04 <japhb> So you put a line on there that says "We'll support 1.9 tomorrow"
"We'll support 1.9 tomorrow" isn't a release announcement
japhb I realized my mistake, and corrected myself. Sorry I did not make it clear. :-) 23:22
pmichaud I didn't see the correction.
japhb fair enough. 23:23
pmichaud (I still don't see the correction.)
...what was the correction? 23:24
23:04 <japhb> Or "We'll support 1.9 on Dec 17"
...that?
japhb Yes, that was part of the correct. It was unclear, because I had meant that you could write that *on the day you support 1.8*. Then I mentioned above about writing the correct instructions in your release announcements. 23:25
pmichaud I'm sorry, but I would be very uncomfortable making any sort of prediction about 1.9
japhb I can understand that. 23:26
pmichaud when 1.8 comes out, I can't guarantee that we'll even be able to support 1.9
for that matter, we almost got burned when 1.4 came out.... and 1.4 was supposed to be a "supported release"
japhb You could also say "This release supports exactly Parrot 1.8, not any newer release. Please wait for our next release before upgrading Parrot."
darbelo "We support this. Try later version at your own peril" is a stardard disclaimer in opoensource software.
japhb What darbelo said
pmichaud anyway, in the long run I suspect that "mistrained a bunch of people" won't apply anyway, because what I'll really be saying is "install this .rpm or .deb package" 23:28
japhb Right, and setup.* is already (as of today) beginning to support generating said RPMs and DEBs. 23:29
pmichaud I also cannot see wanting to take something declarative like a Makefile and converting it to something procedural like a script. 23:30
japhb Plumage fully supports Makefiles, and always will ... I just don't think we should teach people that's the right way, any more than we teach new Perl 5 people to use MakeMaker.
setup.* is essentially declarative
pmichaud not if I have to write my own custom components for it 23:31
japhb The script just builds the data structure.
pmichaud, right, but those are exactly the places you write your own makefile rules.
pmichaud 22:57 <darbelo> pmichaud: I'm not saying 'do it now', but if you can add it to the makefile you canadd it to your setup.pir they are seriously extensible and a lot more
japhb The basic stuff is declarative in both setup and a Makefile. And the unusual stuff is a script in both cases. 23:32
What is the difference?
purl the difference is not enough to make the US the only super power.
pmichaud anyway, this is eating up more of my time than I care to use right now (more) 23:33
I agree with darbelo, there's not (any longer) a reason to recommend create_language.pl over mk_language_shell.pl . You all have done a good job of updating it.
Personally, I'll spend my tuits keeping creating_language.pl up to date and using it, because the audience I want to reach likely already understands makefiles and they have enough new stuff coming at them anyway (more) 23:34
I would also be very interested in seeing someone create a setup.pir for nqp-rx and/or rakudo.
I can't say that I'll adopt it, but if I could see it working for one or both of those I might be less adverse to it.
japhb msg fperrad Please see irclog.perlgeek.de/parrot/2009-12-17#i_1850132 23:35
purl Message for fperrad stored.
dukeleto pmichaud: fperrad will probably take you up on that offer 23:41
23:41 NotJack joined
pmichaud excellent 23:42
I look forward to it.
(seriously)
dukeleto pmichaud: fperrad has been writing everyone's setup.pir for them, if you just ask. he wrote one for Tapir :) 23:44
pmichaud: i even got him to add a pbc_merge stage
cotto_work I don't like that bus number.
pmichaud japhb: tene's => patch only works if the lhs is a bareword identifier... is that going to be sufficient for your needs? 23:45
japhb pmichaud, I think so. I'll raise a flag if not
pmichaud okay
NotJack Configure.pl suggests I make, then make test, but not make install 23:47
japhb cotto_work, I've looked through the underlying code. It's not complex, there's just a lot of it. I think right now it's just a matter of using people's time effectively. I don't see a big bus number problem (a minor one, maybe).
NotJack is that for a reason?
cotto_work japhb, ok. He's certainly the most qualified to write the code. 23:48
pmichaud I'm curious to see if setup.pir can easily handle a complex makefile like nqp-rx or rakudo
cotto_work Wow. 4400+ lines of pir is a lot. 23:57