Camelia, the Perl 6 bug

IRC log for #parrot, 2009-12-17

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 kid51 joined #parrot
00:06 tetragon joined #parrot
00:13 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 http://nopaste.snit.ch/19116
00:15 nopaste "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 http://nopaste.snit.ch/19117
00:23 Whiteknight joined #parrot
00:25 Whiteknight context_unify3 builds?
00:26 chromatic Two of those failing test files have the same source.
00:26 chromatic s/source/cause/
00:26 Whiteknight which ones, the backtrace ones?
00:26 nopaste joined #parrot
00:27 chromatic yes
00:29 chromatic That may fix the lexical test too, but I'm not completely certain.
00:31 Whiteknight these dynpmc tests are new failures
00:33 chromatic touch src/dynpmc/*.pmc
00:37 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 #parrot
00:38 cotto_work yeah, that too
00:41 nopaste joined #parrot
00:42 davidfetter joined #parrot
00:50 Whiteknight okay, dynpmc tests are cool again
00:51 dalek winxed: r272 | julian.notfound++ | trunk/winxedst1.winxed:
00:51 dalek winxed: improve and simplify error checking in stage 1
00:51 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=272
00:51 nopaste "kid51" at 71.255.57.92 pasted "t/tools/pgegrep.t: Failure at r43115 (Darwin/PPC)" (93 lines) at http://nopaste.snit.ch/19118
00:51 Whiteknight so where does context->current_sub get set, and why is it Null in these tests?
00:53 kid51 That paste is from trunk, so it's a very new failure, probably within last 24 hours.
00:55 NotFound Looks like someone 'fixed' Getopt usage.
00:56 chromatic Whiteknight, should be in Sub.invoke and Coroutine.invoke.
00:57 plobsing_ joined #parrot
01:18 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:32 xenoterracide joined #parrot
01:36 nopaste joined #parrot
01:53 lucian joined #parrot
01:56 nopaste joined #parrot
02:01 TonyC joined #parrot
02:05 JimmyZ joined #parrot
02:18 TonyC joined #parrot
02:21 plobsing_ why do GET_ATTR_* and SET_ATTR_* get compiled away by pmc2c?
02:23 chromatic Syntactic sugar, I suppose.
02:24 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.
02:25 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 #parrot
02:26 nopaste joined #parrot
02:26 Coke seen pmichaud ?
02:26 purl pmichaud was last seen on #parrot 6 hours, 18 minutes and 34 seconds ago, saying: phone
02:26 chromatic You need the expanded form then.
02:27 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 plobsing_ is there a good way to do that?
02:28 chromatic Not really, no.
02:28 plobsing_ should there be? is this something I should be wanting to do?
02:29 patspam joined #parrot
02:30 chromatic Write it the naive way, and we'll see if we can make it easier.
02:30 bacek joined #parrot
02:31 nopaste "coke" at 72.228.52.192 pasted "NQP question" (16 lines) at http://nopaste.snit.ch/19119
02:33 pmichaud pong
02:34 pmichaud where's the index rule?
02:34 pmichaud in the grammar?
02:34 * pmichaud checks
02:36 pmichaud Coke: I can't find an 'index' rule
02:36 Coke moment.
02:36 nopaste "coke" at 193.200.132.135 pasted "full diff in progress" (134 lines) at http://nopaste.snit.ch/19120
02:37 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.
02:37 Coke (occasionally? always, I think)
02:37 pmichaud no, the <index> subrule, not the action method
02:37 pmichaud and not the .ast
02:37 Coke ah.
02:37 pmichaud looking.
02:38 pmichaud aside:  +token index:sym<m+n>  { $<a>=<integer> '+' $<b>=<integer> }
02:38 pmichaud would be more canonical as
02:38 pmichaud token index:sym<m+n> { <m=integer> '+' <n=integer>
02:38 pmichaud }
02:38 pmichaud oh
02:38 pmichaud even better (and perhaps part oft he issue)
02:38 pmichaud token index:sym<m+n> { <m=.integer> '+' <n=.integer> }
02:39 pmichaud to avoid the separate capture into $<integer>
02:40 pmichaud any idea what input is causing it to fail with the error?
02:41 Maddingu1 joined #parrot
02:42 Coke joe
02:42 davidfetter joined #parrot
02:42 preflex joined #parrot
02:43 pmichaud oh, the case where the rule doesn't match?  that's possible.
02:43 pmichaud (and a bug if so)
02:44 Coke yah. if the index is "joe", then invoking the parse line there fails.
02:44 Coke doesn't even get to the ?$parse check.
02:44 pmichaud right
02:44 Coke I'll commit what I have.
02:44 pmichaud I think the problem is that the match result ends up being an integer
02:44 Coke (it's still an improvement.)
02:45 pmichaud oh, I know what it is....
02:45 pmichaud very sneaky
02:45 pmichaud you're calling directly into a protoregex.  I didn't handle that case properly.
02:46 pmichaud now to decide what "properly" should be in this case.
02:46 * pmichaud thinks...
02:48 pmichaud okay, I know what the fix should be
02:48 Coke pushed.
02:48 pmichaud need to fix nqp, then bring that into parrot
02:48 pmichaud also need to switch keyboards.. bbiab
02:49 Coke you can duplicate it with  ... puts [string first a abcd joe]
02:49 dukeleto looks like pgegrep is broken
02:49 Coke someone tried to fix it for getopt, IIRC.
02:50 Coke needs to be unfixed.
02:50 Coke probably can just rever the last commit that hit it.
02:51 davidfetter joined #parrot
02:51 dukeleto Coke: ok
02:52 JimmyZ_ joined #parrot
02:53 dalek partcl-nqp: 08ad627 | coke++ |  (5 files):
02:53 dalek partcl-nqp: Add string indexing rules/actions/method, invoke from [string first]
02:53 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/08ad627de93c060fa1954d0028423543821d19b9
03:02 nopaste "pmichaud" at 66.25.4.52 pasted "reproducing the nqp bug found by Coke++" (9 lines) at http://nopaste.snit.ch/19121
03:15 Coke whee.
03:15 pmichaud about to push fix.
03:23 pmichaud pushed (into parrot trunk)
03:24 pmichaud it should work now... at least avoid the error you were seeing.
03:26 dalek nqp-rx: c9be3ee | pmichaud++ |  (4 files):
03:26 dalek nqp-rx: Update bootstrap files, PARROT_REVISION.
03:26 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/c​9be3ee3f043ac3c0023249582ed3d3581a189d3
03:26 dalek nqp-rx: 503f76f | pmichaud++ | src/NQP/Grammar.pm:
03:26 dalek nqp-rx: Merge branch 'master' of git@github.com:perl6/nqp-rx
03:26 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/5​03f76faa54f40aadfd5bc1f2aba7efd24def681
03:26 dalek nqp-rx: 88757e9 | pmichaud++ |  (2 files):
03:26 dalek nqp-rx: Fix bug when protoregex is called directly from Grammar.parse (Coke++)
03:26 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/8​8757e974e6f5e9aeb2aa1f2a27927c535760eb6
03:26 dalek nqp-rx: ac7c519 | pmichaud++ | src/stage0/ (4 files):
03:26 dalek nqp-rx: Update bootstrap with protoregex fail fix.
03:26 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/a​c7c519f92fb1f54d9d3eed41d52e61a50b318f1
03:30 KatrinaTheLamia joined #parrot
03:31 dalek rakudo/master: d2dc84c | pmichaud++ | build/PARROT_REVISION:
03:31 dalek rakudo/master: Bump PARROT_REVISION to latest release.
03:31 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/d​2dc84ce6da46c0bf5ec133d1153d1434b4c6852
03:31 dalek rakudo/master: 5cccc22 | pmichaud++ |  (3 files):
03:31 dalek rakudo/master: Merge branch 'master' of git@github.com:rakudo/rakudo
03:31 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/5​cccc224af3f8d4e133ec5d47274409086710bb8
03:31 dalek rakudo/master: 2198ecc | pmichaud++ | docs/announce/2009-12:
03:31 dalek rakudo/master: Some more announcement updates.
03:31 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/2​198ecc7648d12fc8f0f6bbc3ea909266d734fa9
03:34 Coke pmichaud++ # those tests now pass.
03:34 darbelo joined #parrot
03:34 dalek parrot: r43116 | pmichaud++ | failed to fetch changeset:
03:34 dalek parrot: [nqp]:  Fix for direct calls to failing protoregexes (reported by Coke++).
03:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43116/
03:35 Hunger joined #parrot
03:35 darbelo nopaste?
03:35 purl rumour has it nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels)  or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others) or http://gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or https://trac.parrot.org/parrot/br​owser/trunk/tools/dev/nopaste.pl
03:39 dalek partcl-nqp: 543280f | coke++ |  (2 files):
03:39 dalek partcl-nqp: Bump parrot revision to get fix which resolves outstanding index issue.
03:39 dalek partcl-nqp: pmichaud++
03:39 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/543280f32411af852394d96e1a137ac6fb4fa62f
03:43 nopaste "darbelo" at 190.3.154.176 pasted "[pmc_freeze_cleanup] Segfault when freezing large ResizablePMCArray" (24 lines) at http://nopaste.snit.ch/19123
03:46 davidfetter joined #parrot
03:57 dukeleto msg fperrad do you know what is up with this? does it work for you? http://gist.github.com/258482
03:57 purl Message for fperrad stored.
04:03 davidfetter joined #parrot
04:04 davidfetter joined #parrot
04:07 dalek parrot: r43117 | darbelo++ | branches/pmc_freeze_cleanup/src/pmc_freeze.c:
04:07 dalek parrot: Adding _NULLOK() to STRING parameters was unnecesary, we have STRINGNULL now.
04:07 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43117/
04:12 davidfetter joined #parrot
04:12 dalek TT #1373 created by jkeenan++: ./t/tools/pgegrep.t: New failures
04:15 Coke msg kid51 : tt #1373 is probably fixable by just reverting the last commit against pgegrep.t
04:15 purl Message for kid51 stored.
04:15 Coke msg kid51: er, against pgegrep itself.
04:15 purl Message for kid51 stored.
04:16 Coke msg pmichaud
04:16 purl Message for pmichaud stored.
04:16 Coke er, pmichaud?
04:16 pmichaud pong
04:17 Coke bah! I pre-emptively ping you suspecting latency, and you're here!
04:17 Coke =-)
04:18 Coke trying to track down an ast issue, might have it...
04:20 Coke nope. getting rotating failures:
04:20 Coke pushing...
04:20 purl Shoving...
04:21 Coke touch src/Partcl/Actions.pm && make && ./partcl  t/cmd_string.t 2>&1 | more
04:21 Coke if I do this, I occasionally get this failure:
04:21 * pmichaud hums  "take this bot and shove it..."
04:21 Coke Method 'ast' not found for invocant of class 'Undef'
04:21 Coke current instr.: 'tcl;Partcl;Actions;index:sym<m-n>' pc 31117 (src/Partcl/Actions
04:21 Coke .pir:1843)
04:21 Coke ... but occasionally this one:
04:21 Coke bad index "1+1": must be integer?[+-]integer? or end?[+-]integer?
04:21 Coke current instr.: '_block1007' pc 31916 (src/Partcl/Actions.pir:2154)
04:22 pmichaud pulling
04:22 pmichaud token index:sym<m+n>  { $<a=.integer> '+' $<b=.integer> }
04:22 Coke (each fails a different test in t/cmd_string.t) I am assuming a LTM issue plus hash randomization.
04:22 pmichaud no $'s
04:22 pmichaud it's just   <a=.integer>  and  <b=.integer>
04:22 Coke ok, trying that...
04:23 Coke still getting the 1+1 failure, but now alternating with:
04:24 Coke running the test to completion.l
04:24 dalek partcl-nqp: e2a0b30 | coke++ | src/TclString.pm:
04:24 dalek partcl-nqp: negative result from the Action means "length from end".
04:24 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/e2a0b3074406a98047302903de818c553887adc3
04:24 dalek partcl-nqp: d0afb4b | coke++ | src/Partcl/commands/string.pm:
04:24 dalek partcl-nqp: fix [string last], pass all tests.
04:24 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/d0afb4b344a9b9696f7ccf21b932582556cd72e2
04:24 dalek partcl-nqp: 4e5d192 | coke++ | src/ (3 files):
04:24 dalek partcl-nqp: first pass at [string index] - change action logic for index.
04:24 dalek partcl-nqp: A single int isn't enough; indicate on return value whether index was rel
04:24 dalek partcl-nqp: to beginning or end. (Allows for over/under on index spec.)
04:24 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/4e5d1924b71aef14843c9e29046eff44746828cb
04:28 pmichaud what happens if passed an index that doesn't match any of the protoregex patterns?
04:28 pmichaud e.g., as in the 'joe' case?
04:28 Coke those tests seem to be working.
04:28 Coke (they throw the appropriate error)
04:28 pmichaud oh, yes, it's likely to be a ltm issue here
04:29 Coke any way I can force the issue?
04:29 pmichaud yes
04:29 Coke aside from ditching the proto and hand_ordering?
04:29 pmichaud change index:sym<int> to  index:sym<integer>
04:29 purl pmichaud: that doesn't look right
04:29 pmichaud the longer name will cause it to be attempted last
04:30 pmichaud or, combine the three integer cases into a single one
04:30 dalek partcl-nqp: c60d4cf | coke++ | src/Partcl/Grammar.pm:
04:30 dalek partcl-nqp: don't need the $'s.
04:30 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/c60d4cf4e7be0fdf961707e2ddbe5d700fdc6314
04:30 dalek partcl-nqp: 598e336 | coke++ | src/Partcl/commands/string.pm:
04:30 dalek partcl-nqp: First pass at [string length]
04:30 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/598e336026024676f6d5b0a0f51ce02b3e230329
04:30 pmichaud e.g.:  index:sym<int> { <a=.integer> [ <[+\-]> <b=.integer> ]? }
04:31 Coke I'll do the combination.
04:31 Coke the first suggestion didn't seem to have an effect.
04:31 pmichaud (you might have needed to update actions to be index:sym<integer>  also?)
04:31 Coke did that.
04:32 pmichaud okay, I don't know then
04:32 pmichaud combining them will definitely work, though, and be more efficient anyway
04:32 pmichaud oh, you'll need to capture the sign
04:32 pmichaud so
04:32 pmichaud e.g.:  index:sym<int> { <a=.integer> [ $<op>=[<[+\-]>[ <b=.integer> ]? }
04:32 pmichaud er
04:32 pmichaud e.g.:  index:sym<int> { <a=.integer> [ $<op>=[<[+\-]>] <b=.integer> ]? }
04:33 pmichaud or
04:33 pmichaud e.g.:  index:sym<int> { <a=.integer> [ $<op>=['+' | '-'] <b=.integer> ]? }
04:33 Coke is there a defined op in NQP ?
04:33 pmichaud currently it's just   pir::defined
04:33 Coke k
04:33 pmichaud pir::defined($val)
04:33 pmichaud eventually it'll be     defined $val
04:34 pmichaud but in this case note that $<op> and $<b> will end up being arrays
04:34 pmichaud (because of the ? quantifier)
04:34 pmichaud so you can just do     if $<op> { ... }
04:35 pmichaud and ~$<op>[0]  will have the operator, and $<b>[0].ast will have the second integer
04:41 Coke yup, that seems to avoid the random failure mode.
04:46 Coke ... 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 #parrot
04:52 dalek partcl-nqp: 89eca8a | coke++ | src/Partcl/ (2 files):
04:52 dalek partcl-nqp: avoid LTM issue with the index proto; simplify end rules slightly.
04:52 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/89eca8a3a904895caf81c15775418ee851834b49
04:53 * darbelo pokes dalek.
04:55 * cotto pokes darbelo for no apparent reason
04:55 dalek parrot: r43118 | darbelo++ | branches/pmc_freeze_cleanup/src/pmc_freeze.c:
04:55 dalek parrot: Fix the segfault in examples/benchmarks/freeze.pasm by ensuring that aggregates with no elements still get some space allocated at buffer creation.
04:55 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43118/
04:56 darbelo cotto: Did I fail to report something?
04:56 darbelo ;)
04:57 Coke if $<op> { } doesn't seem to be triggering.,
04:58 pmichaud could try   +$<op> > 0    (but that really shouldn't be needed)
04:59 Coke ah, I spelled it differnetly than you suggested in teh grammar. fixing...
05:00 Coke (I had done <op=>, incorrectly aping the <a=.integer>
05:00 * dukeleto just fought a git beast and won
05:00 darbelo git beast?
05:00 pmichaud seems like <op=> ought to produce a compile time error
05:00 pmichaud I need to fix that.
05:01 bacek joined #parrot
05:01 dukeleto bacek: o hai
05:01 pmichaud hmmm... my subs with :immediate flags don't seem to be converting into the thing they return
05:02 Coke you need .const for that magic to work, I think.
05:02 pmichaud I am using .const
05:02 pmichaud let's see if I can make a small test case
05:03 Coke hurm. I am currently using that in partcl; e.g. runtime/builtins/string.pir
05:03 Coke (if you want to see a working example)
05:03 pmichaud I'm trying out chromatic's constant exception handlers
05:04 dalek partcl-nqp: 25dd2f4 | coke++ | src/Partcl/Grammar.pm:
05:04 dalek partcl-nqp: Fix index rules with integer +/- : was using incorrect syntax to capture $<op>
05:04 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/25dd2f47b49799c9864b909d43789b1ef97eaece
05:08 cotto darbelo and/or plobsing_, how big are the freeze/thaw changes you both are working on?
05:08 cotto Will the branch instantly make freeze/thaw sane or is it step 1 of 30?
05:09 darbelo The branch will make freeze/thaw as sane as we can make it without breaking the deprecation policy.
05:10 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.
05:10 plobsing_ +1
05:10 purl 1
05:11 darbelo After that, we can start a new, sane file.
05:11 cotto Don't forget to add a deprecation notice.
05:12 dalek parrot: r43119 | plobsing++ | branches/pmc_freeze_cleanup (4 files):
05:12 dalek parrot: remove unused visit actions VISIT_FREEZE_SIZE, VISIT_CLONE, VISIT_DESTRUCTION_ORDER
05:12 dalek parrot: also remove VISIT_FREEZE_AT_DESTRUCT which was identical to VISIT_FREEZE_NORMAL
05:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43119/
05:12 dalek parrot: r43120 | dukeleto++ | trunk/tools/util/pgegrep:
05:12 dalek parrot: [cage] Fix pgegrep, which was merely an innocent bystander in the Great Namespace Wars
05:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43120/
05:12 darbelo It's already there. I think I added it two releases ago or thereabouts.
05:12 plobsing_ trunk or branch?
05:14 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.
05:16 darbelo plobsing_: unless you weren't asking about the deprecation notice...
05:18 plobsing_ darbelo: just read it. looks good.
05:19 plobsing_ 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:20 cotto That'd be ideal.
05:20 plobsing_ trying to find wording that makes the change sound a bit less abrupt
05:20 cotto As much as we love old 'n' busted, it's currently functional.
05:21 darbelo plobsing_: Yeah, but the VTABLE_freeze() signature will have to change. There's no way around that.
05:22 darbelo 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
05:22 plobsing_ doesn't that do it?
05:23 darbelo That won't work for people that were accsesing the actual image inside visit_info with '->'
05:24 plobsing_ I'm trying to eliminate places where that happens
05:24 plobsing_ providing alternatives
05:26 Coke pmichaud: every several dozen 'make test' runs, I get something like:
05:27 Coke #      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.
05:27 Coke # expected : 'REGEXP: [0-9]+ microseconds per iteration'
05:27 dalek partcl-nqp: d0309c8 | coke++ | build/PARROT_REVISION:
05:27 dalek partcl-nqp: fix typo in parrot revision
05:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/d0309c87956a2f7a1b214a0dc10e998e84f7cc3d
05:27 dalek partcl-nqp: 41d0c32 | coke++ |  (3 files):
05:27 dalek partcl-nqp: Add stub [interp]
05:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/41d0c32247d7e5c58baa2da543597b1ff9cfb49b
05:27 dalek partcl-nqp: b337c16 | coke++ | src/Partcl/commands/info.pm:
05:27 dalek partcl-nqp: improve stub for [info exists]
05:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/b337c165ce564f013aa2583c0c396b9a1de3df9d
05:27 dalek partcl-nqp: c6f74ae | coke++ | src/init.pm:
05:27 dalek partcl-nqp: Pull in parrot's config hash, we'll need it to setup more globals...
05:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/c6f74ae437f9f3052c290149038a8fe33e46fb5e
05:27 pmichaud Coke: odd.  I wonder if it's a -G bug.
05:28 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:29 darbelo That's also the reason behind line 72 in include/parrot/pmc_freeze.h
05:33 Coke this break error is weird. something is eating my break exception.
05:34 Coke when Partcl.Compiler.compile() creates an invokable object, does it eat CONTROL exceptions?
05:37 pmichaud it might
05:37 pmichaud can't say for sure... exception handling is really weird overall
05:38 pmichaud msg chromatic your comments and/or analysis on TT #1374 would be helpful
05:38 purl Message for chromatic stored.
05:39 Coke ok. that isa HLL::Compiler isa PCT::HLLCompiler...
05:39 pmichaud compilers/pct/src/PCT/HLLCompiler.pir
05:39 pmichaud (in parrot repo)
05:40 Coke yah. so, 'compile' there, which then dispatches...
05:41 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
05:42 pmichaud (they do catch some exceptions on transcoding operations, but those handlers are removed before doing the actual parsing step)
05:43 Coke pmichaud: k. it was the most obvious place I could posit where those break exceptions were vanishing.
05:43 Coke (first test in t/cmd_break.t is failing because the exception is eaten inside the for{} body.
05:43 Coke (so the loop runs to the end.)
05:44 urigard joined #parrot
05:44 Coke I'm exhausted, though. and will call the index updates a major victory. Thanks for your help/patches.
05:44 pmichaud my pleasure
05:44 pmichaud excellent work
05:44 dalek parrot: r43121 | plobsing++ | trunk/DEPRECATED.pod:
05:44 dalek parrot: change wording on freeze/thaw deprecation to highlight interim API
05:44 purl dalek: that doesn't look right
05:44 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43121/
05:44 dalek parrot: r43122 | plobsing++ | branches/pmc_freeze_cleanup (2 files):
05:44 dalek parrot: add VISIT_PMC_ATTR macro to visit an attribute easily
05:44 dalek parrot: need to pass in the class because of pmc2c--
05:44 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43122/
05:45 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 pmichaud i.e., they aren't being converted to constants in the .pbc -- they're remaining as Sub PMC objects.
05:45 Coke hurm. I'd have to look at the generated pir.
05:45 Coke (I would try wrapping it in an INIT block)
05:46 Coke ugh. zzzzzzzzzzzzzzzzzzzzz
05:46 pmichaud ...INIT block?
05:46 pmichaud INIT blocks translate to :load :init, not :immediate
05:47 Coke Was trying to think of a way to get it to dump to PIR sooner. also, zzz.
05:47 pmichaud ah
05:47 pmichaud anyway, zzz here also
05:50 dalek TT #1374 created by pmichaud++: :immediate semantics have changed
06:04 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:05 abqar joined #parrot
06:05 cotto http://trac.parrot.org/parrot/browser/trunk/src​/packfile.c?annotate=blame&amp;rev=42917#L1441
06:06 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.
06:07 cotto I'll clobber it.  A random TODO won't have any effect and if we need it we can implement it.
06:08 plobsing_ thats not about segments I don't hink
06:08 plobsing_ s/hink/think/
06:08 darbelo cotto: He's not bad, just misunderstood ;)
06:09 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.
06:14 cotto and I can clean up a header while I'm in there
06:15 darbelo Hm, looks like the segfault wasn't gone. Just hidden.
06:16 darbelo But I have to sleep now.
06:16 cotto night
06:16 * darbelo collapses
06:17 dalek parrot: r43123 | plobsing++ | branches/pmc_freeze_cleanup/src/pmc_freeze.c:
06:17 dalek parrot: eliminate logical || with non-zero constant warning
06:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43123/
06:19 dukeleto the differrences between :load, :init and :immediate seem to have scary black magic when stored in PBC's
06:19 dalek tapir: bb85fd7 | dukeleto++ |  (2 files):
06:19 dalek tapir: Update TODO and .gitignore
06:19 dalek tapir: review: http://github.com/leto/tapir/commit/bb​85fd769325da2b4701a2114a02c882387791bd
06:19 dalek tapir: 81de7fc | dukeleto++ | t/harness.pir:
06:20 dalek tapir: Fix our use of Getopt::Obj, which changed in the Great Namespace War
06:20 dalek tapir: review: http://github.com/leto/tapir/commit/81​de7fce7b8f0e1175913e0ecb018b6c52390dd4
06:20 Tene dukeleto: it got put back to how it was before.
06:21 Tene oh, you're going back.
06:21 Tene It'll go back again, um, someday, I guess.
06:22 dukeleto Tene: it is nice to have a passing test suite
06:23 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 #parrot
06:32 chromatic I made all of the :immediate tests we have in the repo work.
06:32 chromatic It's a giant jungle of mess though: not just the code, but also the semantics.
06:33 dalek parrot: r43124 | cotto++ | trunk (2 files):
06:33 dalek parrot: [packfile] some header cleanup and removal of a decrepit and unlikely TODO
06:33 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43124/
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.
06:34 chromatic Right.
06:34 cotto OK.  The pdd needs fixing then.
06:35 cotto 0x1d1 + 1
06:35 cotto 1+1
06:35 purl 2
06:35 cotto 1+0x1
06:36 cotto 1+0h1
06:36 cotto 1+purlisstupid
06:39 chromatic Once upon a time there were variadic opcodes I think, but I think they went away after the big MMD change.
06:40 cotto It's good to know that the docs are simply out-of-date instead of purposefully deceptive.
06:41 chromatic There's very little intentional malice in our docs.
06:42 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.
06:55 dalek TT #1375 created by jimmy++: [patch]changed class.pmc to use GET_ATTR syntax
06:56 dukeleto Tene: where?
06:57 nopaste "tene" at 24.10.252.130 pasted "Here, dukeleto" (321 lines) at http://nopaste.snit.ch/19124
06:58 Tene dukeleto: It doesn't seem to actually be usable from HLLs, though, so I'm trying to track that down first.
06:58 Tene Dunno if it's a failure in rakudo or in parrot or in G::O or whatever
06:59 dukeleto Tene: um, that undoes my most recent patch
06:59 dukeleto Tene: have you run the test suite on that patch?
06:59 Tene dukeleto: I ran t/library/getopt_obj.t, which passed.
06:59 Tene Both before and after the patch.
07:00 Tene 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
07:00 Tene dukeleto: I get "all tests successful"
07:02 dukeleto Tene: something is up
07:04 nopaste "tene" at 24.10.252.130 pasted "prove -v t/tools/pgegrep.t" (19 lines) at http://nopaste.snit.ch/19125
07:05 * cotto chuckles at old docs that mention "v-table methods".
07:07 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:08 * Tene re-starts 'make test'
07:09 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?
07:10 dukeleto Tene: pgegrep was failing in trunk
07:10 dukeleto Tene: are we in the same universe?
07:11 Tene dukeleto: that patch leave Getopts::Obj in its old namespace, but *also* installs the classes in the appropriate namespaces.
07:12 cotto pdd 13 has some dust on it, but it's not too bad.
07:13 dukeleto Tene: yes, your most recent patch passes on my machine. go for it
07:13 dukeleto Tene: i didn't realize you put them in both
07:20 Tene dukeleto: I've suddenly been kicked offline. My cable modem refuses to give out an address. So, maybe I can commit tomorrow.
07:22 cotto nqp-rx.pbc makes pbc_dump act oddly.
07:24 cotto stupid need for sleep
07:27 dukeleto Tene: you want me to commit?
07:31 Tene it's not like it's an urgent patch. If you want it in, go ahead.
07:31 nopaste joined #parrot
07:34 he joined #parrot
07:34 szg joined #parrot
07:36 szg joined #parrot
07:37 dukeleto Tene: it is all yours :)
07:41 cotto Goodie.  PBC is documented in pdd13 and in docs/parrotbyte.pod
07:41 cotto This is more than would be wise to attempt in a night.  It's sleeping time.
07:42 moritz good night cotto
07:43 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 cotto (I'm going to bed, but I'll check the backscroll.)
07:43 chromatic Merge away.
07:44 szabgabx joined #parrot
07:46 nopaste joined #parrot
07:54 dalek parrot: r43125 | cotto++ | trunk/docs/pdds/pdd13_bytecode.pod:
07:54 dalek parrot: [pdd] update pdd13, mostly deleting obsolete information and improving formatting and clarity
07:54 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43125/
07:56 iblechbot joined #parrot
08:03 bacek joined #parrot
08:06 dalek tracwiki: v10 | cotto++ | CottoTasklist
08:06 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Cot​toTasklist?version=10&amp;action=diff
08:20 chromatic aha
08:25 JimmyZ what?
08:26 chromatic I fixed t/op/debuginfo.t on the context_unify3 branch.
08:29 JimmyZ chromatic++
08:30 chromatic Two more test files have failures.
08:30 chromatic Three failing tests.
08:33 TonyC joined #parrot
08:34 JimmyZ X-D
08:35 JimmyZ 42 test
08:35 JimmyZ 1 test
08:35 JimmyZ test
08:42 fperrad joined #parrot
08:42 dalek parrot: r43126 | chromatic++ | branches/context_unify3/src/call/args.c:
08:42 dalek parrot: [PCC] Ensured that the current context of a tailcall has a CallContext PMC;
08:42 dalek parrot: makes t/op/calling.t #23 pass.
08:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43126/
08:42 dalek parrot: r43127 | chromatic++ | branches/context_unify3/src/pmc/null.pmc:
08:42 dalek parrot: [PMC] Added a specific invoke() VTABLE entry for Null PMC to pop the context
08:42 dalek parrot: created to call it; this makes t/op/debuginfo.t pass and reports the right line
08:42 dalek parrot: number for the backtrace caused by the exception thrown from invoking a Null
08:42 dalek parrot: PMC.
08:43 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43127/
08:43 dalek parrot: r43128 | chromatic++ | branches/context_unify3/src/debug.c:
08:43 dalek parrot: [PDB] Tidied code in PDB_backtrace(); no functional changes.
08:43 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43128/
08:43 fperrad_ joined #parrot
08:48 dalek tapir: 38d7b56 | dukeleto++ | t/harness.pir:
08:48 dalek tapir: Add a --help command line argument and print it out when given no arguments as well
08:48 dalek tapir: review: http://github.com/leto/tapir/commit/38​d7b56630cd396d4107d6cd8242f94799c4ce58
09:04 chromatic ... and there's a fix.
09:04 chromatic Unfortunately, it causes one test failure.
09:05 JimmyZ chromatic: I had uploaded class.pmc patch, a big patch.
09:09 payload joined #parrot
09:14 chromatic KABOOM!
09:16 dalek tapir: 02fdb6c | dukeleto++ | metadata/tapir.json:
09:16 dalek tapir: Add a Plumage metadata file for Tapir, generated with 'parrot setup.pir plumage'
09:16 dalek tapir: review: http://github.com/leto/tapir/commit/02​fdb6c5a11a91ad2183563eb15bb2527009ba8a
09:17 chromatic You're all going to like this one.
09:19 JimmyZ oh, esoteric codes appears in another place again.
09:20 chromatic It was already esoteric.
09:20 chromatic From the figurative mountains of madness.
09:21 chromatic 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 parrot-plumage: 24d8c96 | leto++ | metadata/tapir.json:
09:21 dalek parrot-plumage: [METADATA] Add metadata for Tapir
09:21 dalek parrot-plumage: review: http://gitorious.org/parrot-plumage/parrot-plumag​e/commit/24d8c9694e0028650acbc66f1ac719e0e7068215
09:21 chromatic It's like a triple-double in basketball.
09:22 chromatic 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:23 moritz "patch of everything"
09:23 JimmyZ o_O
09:26 JimmyZ where does
09:26 JimmyZ where is CONST_STRING defined?
09:27 chromatic tools/build/c2str.pl
09:28 UltraDM joined #parrot
09:31 dalek parrot: r43129 | chromatic++ | branches/context_unify3 (4 files):
09:31 dalek parrot: [PMC] Set the current sub of NCI calls to the parent sub, so that calls into
09:31 dalek parrot: Parrot through NCI know their calling PIR subs.  Also changed the Sub PMC's
09:31 dalek parrot: set_outer() method to ignore the NCI calling context when attaching the correct
09:31 dalek parrot: context to another Sub PMC.  If that sounds esoteric, be glad that bacek and I
09:31 dalek parrot: know what it means, and that we have a test which catches it.
09:31 dalek parrot: (Roll on Lorito to make this all go away.)
09:31 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43129/
09:32 chromatic msg bacek context_unify3 passes all of its tests.
09:32 purl Message for bacek stored.
09:32 chromatic msg whiteknight context_unify3 passes all of its tests.
09:32 purl Message for whiteknight stored.
09:33 chromatic Hm, and that's the fastest I've ever seen coretest run.
09:34 chromatic Oops, no... t/library/streams.t has one.
09:34 JimmyZ seems that the second args in CONST_STRING is not used
09:35 JimmyZ Do I understand correctly?
09:35 chromatic There are only two arguments.
09:35 JimmyZ the second args in CONST_STRING is not used?
09:36 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 #parrot
09:38 chromatic Yes.
09:38 JimmyZ I don't know where s arg is used?
09:39 chromatic Later in the .str file.
09:39 chromatic Hm, the context_unify3 branch creates twice as many RetContinuations as trunk.
09:41 JimmyZ chromatic: I couldn't find.
09:41 chromatic #define _CONST_STRING_14128 737
09:42 chromatic This means that the CONST_STRING on line 14128 is the constant string #737 in all_cstring.str.
09:42 chromatic c2str.pl also writes all of the s from CONST_STRING(i, s) into a single file which becomes an array in the interpreter.
09:42 JimmyZ them I think #define CONST_STRING(i) _CONST_STRING(i, __LINE__) is right too.
09:43 chromatic ... except that the preprocessor, c2str.pl, won't write anything to all_cstring.str
09:44 chromatic 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.
09:46 JimmyZ I see many places use like CONST_STRING(interp, "ExceptionHandler"); what does 'ExceptionHandler' translate to?
09:46 chromatic see all_cstring.str
09:47 JimmyZ oh, it's there.
09:47 rhr joined #parrot
09:50 chromatic msg bacek Wait, I could be reading that wrong....
09:50 purl Message for bacek stored.
10:02 fperrad joined #parrot
10:09 JimmyZ Does parrot need to change Context/CallContext to subclassable?
10:10 chromatic I don't know.
10:20 chromatic 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.
10:20 dalek parrot: r43130 | chromatic++ | branches/context_unify3/src/ops/object.ops:
10:20 dalek parrot: [ops] Made callmethodcc op skip creating a RetContinuation when invoking an NCI
10:20 dalek parrot: method, as it's unnecessary and expensive and trunk doesn't do it, because it's
10:20 dalek parrot: the invokee's responsibility to create the RetCont.  This improves branch
10:20 dalek parrot: performance by 2.499% on fib4.pir.
10:20 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43130/
10:21 * chromatic sleeps
10:23 JimmyZ good night
10:37 dalek parrot: r43131 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
10:37 dalek parrot: [distutils] when parrot-tapir is available, use it instead of prove
10:37 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43131/
10:41 bacek joined #parrot
11:21 estrabd joined #parrot
11:25 dalek parrot: r43132 | mikehh++ | trunk/docs/pdds/pdd13_bytecode.pod:
11:25 dalek parrot: fix codetest failure - docs/pdds/pdd13_bytecode.pod - max pod linelength is 78 (plus some trailing spaces)
11:25 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43132/
11:28 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:30 mikehh the test t/codingstd/trailing_space.t misses a lot of files that it should test
11:38 Infinoid I've heard that mentioned at least once before.  Patches are still welcome :)
11:38 mikehh looking into it :-}
12:31 lucian joined #parrot
12:33 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31006), fulltest) at r43132 - Ubuntu 9.10 i386 (gcc)
12:41 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31011), fulltest) at r43132 - Ubuntu 9.10 i386 (g++)
12:42 lucian joined #parrot
12:49 lucian joined #parrot
12:54 patspam joined #parrot
12:57 Coke AIGH
12:59 mikehh that sounds ominous
13:00 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.
13:01 moritz context_unify3 make test just fails one test
13:02 moritz t/library/streams.t test 12
13:02 JimmyZ joined #parrot
13:04 Patterner joined #parrot
13:05 moritz /pmc/object-meths.t test 15 in 'make testg'
13:10 whiteknight joined #parrot
13:10 whiteknight good morning, #parrot
13:11 JimmyZ good moring, whiteknight
13:12 whiteknight chromatic++, bacek++
13:12 whiteknight (context_unify3 passing tests)
13:12 JimmyZ whiteknight: ?
13:12 whiteknight JimmyZ: Did you get a commit bit yet?
13:12 JimmyZ whiteknight?
13:12 purl hmmm... whiteknight is mailto:wknight8111@gmail.com or the grand master funk or http://wknight8111.blogspot.com/
13:12 JimmyZ whiteknight: hadn't, I couldn't find a scanner here.
13:13 whiteknight ah, okay. I had that problem too
13:13 whiteknight I ended up mailing a hard copy
13:14 JimmyZ whiteknight: It's really hard to visit your blog. I couldn't get a proxy.
13:14 JimmyZ :)
13:14 whiteknight ah right, you had mentioned that before
13:14 whiteknight so what can I do to help?
13:15 Coke JimmyZ: he's aggregated on planet.parrotcode.org, if that helps.
13:15 payload joined #parrot
13:15 whiteknight Coke: not everything gets aggregated there, only the stuff labled with "parrot" is
13:15 whiteknight of course, the rest of it isn't so interesting :)
13:15 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31012), fulltest) at r43132 - Ubuntu 9.10 i386 (g++ with --optimize)
13:17 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 #parrot
13:31 mikehh context_unify3 branch - same result as moritz++ above
13:32 mikehh context_unify3 branch - make test fails 1 test - t/library/streams.t - Failed test:  12 - Ubuntu 9.10 i386 (gcc with --optimize)
13:33 whiteknight mikehh: I resolved that test failure last night by doing touch src/dynpmc/*, make clean, make
13:33 whiteknight it might be a makefile dependency issue, if I'm correct
13:36 pmichaud good morning, #parrot
13:36 whiteknight good morning, pmichaud
13:36 pmichaud 13:00 <Coke> tene, pmichaud ; my break issues are likely because "our sub if()" is implemented with an NQP while loop.
13:36 pmichaud interesting.
13:39 Coke pmichaud: sent you an email with more details.
13:39 pmichaud Coke: yes, got it.
13:40 Coke ETOOMUCHDOGFOOD
13:40 pmichaud you've undoubtedly found the problem.  I'm not quite sure how to resolve it at the moment.
13:41 pmichaud might just do the loop in PIR
13:43 pmichaud I think I'll try that.
13:43 Coke if I had goto and labels, I could handroll it and still be nqp. =-)
13:43 Coke but yah, pir is probably the simplist out.
13:43 pmichaud yeah.... but goto itself requires control exceptions
13:44 pmichaud (not *this* control exception, but it does require some)
13:44 Coke switch will require similar treatment.
13:44 dalek TT #1376 created by fperrad++: [NQP-rx] cannot support an empty string as token
13:44 dalek TT #1098 closed by fperrad++: [CAGE]  rename parrot_nqp to parrot-nqp
13:44 dalek TT #853 closed by fperrad++: Can't load OpenGL
13:45 Coke (and possibly time)
13:45 pmichaud yes, time needs it also
13:45 pmichaud hrm.
13:46 Patterner joined #parrot
13:46 pmichaud looks like 'switch' forces a 'last' after an eval anyway, though?
13:49 nopaste "mikehh" at 81.149.189.7 pasted "context_unify3 branch - fulltest failures" (64 lines) at http://nopaste.snit.ch/19126
13:55 * pmichaud has a patch for if()
13:55 pmichaud testing now
13:56 jan joined #parrot
14:04 whiteknight mikehh: you're right. t/library/streams.t does fail
14:07 dalek rakudo/master: b01665b | pmichaud++ | docs/spectest-progress.csv:
14:07 dalek rakudo/master: spectest-progress.csv update: 449 files, 32192 (86.1% of 37376) pass
14:07 dalek rakudo/master: Also reset the failure counts since Nov 28 to zero, since they
14:07 dalek rakudo/master: primarily represent changes to the spectest suite as opposed to
14:07 dalek rakudo/master: regressions.
14:07 purl regressions are always confusing...
14:07 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/b​01665bcfd1c2de5cf9536a589ca7d36e97f5e8b
14:07 dalek rakudo/master: 39685ac | pmichaud++ | docs/announce/2009-12:
14:07 dalek rakudo/master: More documentation updates.
14:07 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/3​9685ac393413d84c403a6df68d96fbfae97d6e5
14:13 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:20 pmichaud ah, good point.
14:27 Coke pmichaud: ok. I have something that passes a few tests in t/cmd_break.t now.
14:28 nopaste "coke" at 193.200.132.135 pasted "avoid while in if()" (47 lines) at http://nopaste.snit.ch/19127
14:28 pmichaud I just pushed my patch for if()
14:28 Coke excellent, will revet.
14:29 Coke I like yours better anyway.
14:29 dalek partcl-nqp: 5617db1 | pmichaud++ | src/Partcl/commands/main.pm:
14:29 dalek partcl-nqp: Refactor if() so that it doesn't use nqp's while statement,
14:29 dalek partcl-nqp: which ends up catching control exceptions that we don't want
14:29 dalek partcl-nqp: to catch.
14:29 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/5617db1cf0c629264fb6e99a6b1c9420fabab6b4
14:32 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:33 Coke :q
14:33 Coke ww
14:33 bluescreen joined #parrot
14:35 Coke looks like [continue] is really generating a REDO.
14:35 Coke (or it's being interpreted as a redo)
14:35 mariano__ joined #parrot
14:36 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:42 Coke ... damnit. cannot reproduce.
14:44 dalek parrot: r43133 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
14:44 dalek parrot: [distutils] some refactor
14:44 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43133/
14:48 Coke aha. there we go.
14:48 nopaste "coke" at 193.200.132.135 pasted "shows the continue bug in NQP" (12 lines) at http://nopaste.snit.ch/19128
14:49 Coke pmichaud: that should print out a few dozen lines and quit, but goes into an infinite loop.
14:49 Coke (repeating with FOO: 6\nCONT)
14:50 pmichaud it's being caught by the while
14:50 Coke Yes, but wrongly.
14:50 pmichaud well, I'm not sure that's a bug in nqp, though.
14:50 Coke that is, it's an excpetion that should be caught and dealt with.
14:50 Coke but CONTINUE doesn't mean REDO
14:50 pmichaud it's not redo
14:50 Coke it is redoing, though.
14:50 pmichaud we never get to the $a++
14:50 Coke AH.
14:51 Coke ok. so there's a bug in our implementation of for. I can fix that.
14:51 Coke pmichaud++
14:54 Coke (have to put in a CONTROL override to handle "next" so our "incr" logic is run.
14:57 davidfetter joined #parrot
15:01 whiteknight_ joined #parrot
15:02 lucian joined #parrot
15:08 Coke pmichaud: fixed. thanks for the diagnosis.
15:08 Coke I would have stared at that for another hour. =-)
15:08 Coke for loops now work with break -and- continue.
15:11 dalek partcl-nqp: 887571a | coke++ | src/Partcl/commands/main.pm:
15:11 dalek partcl-nqp: Fix usage args for [break]
15:11 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/887571a761645674e019a8ef9c97af84454e4dab
15:11 dalek partcl-nqp: 4c9273d | coke++ | src/Partcl/commands/string.pm:
15:11 dalek partcl-nqp: implement [string repeat]
15:11 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/4c9273d66fa51f75a2a8ea5c1c0e5911e8769120
15:11 dalek partcl-nqp: 033f0ff | pmichaud++ | src/Partcl/commands/main.pm:
15:11 dalek partcl-nqp: Refactor if() so that it doesn't use nqp's while statement,
15:11 dalek partcl-nqp: which ends up catching control exceptions that we don't want
15:11 dalek partcl-nqp: to catch.
15:11 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/033f0ff32583740cfcf64355898a4369cf7c45c3
15:11 dalek partcl-nqp: 9fcf4a5 | coke++ | src/Partcl/commands/main.pm:
15:11 dalek partcl-nqp: when [for] loop gets a [continue], we still must process our 'next' arg.
15:11 dalek partcl-nqp: ... and when enabling this, make sure [break] still breaks.
15:11 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/9fcf4a5bef4ede02328f81c46c2f49c257ff8d99
15:11 dalek partcl-nqp: de0ecae | coke++ | src/Partcl/commands/main.pm:
15:11 dalek partcl-nqp: Merge branch 'master' of github.com:partcl/partcl-nqp
15:11 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/de0ecae6fa7e8130b582016ff90a4f0ff4fcf03c
15:32 davidfetter joined #parrot
15:36 Psyche^ joined #parrot
15:42 dalek winxed: r273 | julian.notfound++ | trunk/winxedst1.winxed:
15:42 dalek winxed: operator || in stage 1
15:42 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=273
15:51 patspam joined #parrot
16:02 theory joined #parrot
16:03 cotto_work good mooring
16:12 dalek nqp-rx: 9652695 | pmichaud++ |  (3 files):
16:12 dalek nqp-rx: Fix empty string in regexes (TT #1376, fperrad++).
16:12 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/9​652695b1eddc1138bcd0270f11386a0172be3f2
16:12 dalek nqp-rx: 17492b7 | pmichaud++ | src/stage0/ (4 files):
16:12 dalek nqp-rx: Update bootstrap.
16:12 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/1​7492b75774e4b5e4147611aecb0b4665413c4d5
16:23 dalek parrot: r43134 | pmichaud++ | trunk/ext/nqp-rx/src/stage0 (4 files):
16:23 dalek parrot: [nqp]:  Update nqp with fix for TT #1376 (fperrad++)
16:23 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43134/
16:33 dalek TT #1376 closed by pmichaud++: [NQP-rx] cannot support an empty string as token
16:42 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:44 Coke 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:45 Coke (atom and quantifier make sense to me.)
16:47 brianwisti joined #parrot
16:58 whiteknight joined #parrot
17:16 darbelo joined #parrot
17:16 iblechbot joined #parrot
17:39 mikehh joined #parrot
17:41 chromatic joined #parrot
18:01 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 pmichaud (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)
18:03 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 :-)
18:03 pmichaud anyway, you can veto whatever I come up with :)
18:04 Coke ok. so, given that, I think I can come up with something globby.
18:05 pmichaud the biggest thing to remember is that in globs, the * and ? aren't quantifiers, they're metachars
18:06 Coke yup
18:06 Coke I was more concerned about the whole 'implementing in nqp" bit. =-)
18:06 pmichaud ah
18:08 Tene the * and ? issue is a common struggle for students when i teach regular expressions.
18:09 Coke pmichaud: can I also avoid buildsub?
18:09 pmichaud I think you'll still need buildsub
18:09 Coke ok.
18:09 pmichaud looking.
18:10 pmichaud oh, maybe not
18:10 pmichaud you need something that does the equivalent of buildsub
18:10 pmichaud I've been thinking it should be provided by HLL::Actions, though -- haven't gotten that far yet.
18:10 pmichaud I forget why I re-listed it in ARE
18:18 dalek parrot: r43135 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
18:18 dalek parrot: [distutils] first attempt of spec rpm
18:18 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43135/
18:18 dalek parrot: r43136 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
18:18 dalek parrot: [distutils] stores plumage description in a file
18:18 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43136/
18:26 theory joined #parrot
18:28 etworks joined #parrot
18:28 etworks quick question:  would Parrot be a good platform for implementing an array-oriented language (like APL, J, K/Q, Nial, IDL, etc)?
18:29 etworks would it be easy to implement "array comprehensions", e.g.  9 9 9 = 1 2 3 + 8 7 6
18:30 darbelo There was an "APL on parrot" some time back.
18:30 darbelo paraplegic?
18:30 darbelo or something like that...
18:31 cotto_work sounds right
18:31 etworks was there?
18:31 etworks interesting, let me ask google
18:31 etworks (and I thought I was so orriginal)
18:31 darbelo http://code.google.com/p/paraplegic/
18:31 cotto_work http://code.google.com/p/paraplegic/
18:31 darbelo second result for "paraplegic parrot" ;)
18:32 cotto_work I went to http://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.
18:34 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 http://github.com/partcl/partcl-nqp for a language that the author of nqp-rx (pmichaud) is helping to develop.
18:35 etworks ew, Tcl
18:36 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....
18:36 darbelo paraplegic is, amusingly, being not-developed by the same two people ;)
18:36 cotto_work etworks, feel free to hang out here and take copious notes about what needs to be documented about nqp-rx.
18:37 etworks well spun sir, well spun.
18:38 etworks 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.
18:39 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.
18:39 etworks what's the advent calendar?
18:39 purl hmmm... the advent calendar is http://dev.catalyst.perl.org​/wiki/adventcalendararticles
18:39 cotto_work http://perl6advent.wordpress.com/
18:40 cotto_work perl 6 advent calendar is http://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)
18:41 etworks oh, that's neat.
18:44 etworks 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:45 Tene There's also http://github.com/tene/steme/ my scheme compiler written using nqp-rx
18:48 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!
18:49 dukeleto etworks: what do you mean "code-complete" ?
18:49 etworks dependable, unlikely to change their syntax, more or less robust
18:49 dukeleto etworks: Perl 6 grammars are implemented and function quite well, if that is what you mean
18:49 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.
18:49 etworks that's exactly what I mean
18:49 dukeleto etworks: you want to learn about nqp-rx, then
18:49 dukeleto etworks: it gets installed as parrot-nqp with parrot
18:49 brianwisti dukeleto: thanks, great to lurk here.
18:50 dukeleto brianwisti: you will find the people here pleasant and helpful, except purl
18:50 dukeleto purl, die in a fire
18:50 purl HALP
18:50 etworks maybe I'm confused ... what is nqp's purpose?
18:50 dukeleto etworks: it is an easy to parse subset of Perl 6 that Parrot and Rakudo use to get shit done
18:50 dalek parrot: r43137 | mikehh++ | trunk/runtime/parrot/library/distutils.pir:
18:50 dalek parrot: fix codetest failure - pod syntax in runtime/parrot/library/distutils.pir
18:50 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43137/
18:51 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 http://use.perl.org/~pmichaud/journal/34974
18:51 etworks oh, ok
18:52 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
18:52 cotto_work http://www.searchviews.com/wp-conten​t/themes/clean-copy-full-3-column-1/​images/relevant_to_my_interests1.jpg
19:01 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#31025), fulltest) at r43137 - Ubuntu 9.10 amd64 (g++ with --optimize)
19:06 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:07 chromatic Not a lot.
19:07 purl Not a lot. are you still in hong kong?
19:14 dukeleto etworks: we have benchmark scripts for array processing. what exactly are you interested in knowing about?
19:16 etworks whether I can/should expect an (almost exclusively) array-oriented language to perform well when hosted by parrot
19:17 etworks or whether parrot is targetted towards more "standard", scalar-oriented (i.e. von Neumann type) languages
19:18 dukeleto etworks: parrot aims to support all dynamic languages
19:18 dukeleto etworks: if you find something you need, tell us
19:18 etworks I undetstand, but usually "maintain generality" means "lower performance for niche markets", and array-orientation is niche....
19:19 dukeleto etworks: do you know about our language skeleton creation script?
19:19 etworks nope, I know ~0 about Parrot
19:19 particle etworks: the abstract data type in parrot is called a PMC.  the pmc defines a data storage mechanism and api.
19:20 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
19:20 dukeleto etworks: PMC = PolyMorphic Class or Parrot Magic Cookie
19:20 particle so, there are some PMCs, like 'Integer', that only deal with integers
19:21 particle and ResizablePMCArray, which is an array type that stores other PMCs
19:21 dukeleto etworks: you probably want to know about FixedPMCArray and ResizablePMCArray
19:21 etworks yep, that's the kind of thing I'm looking for
19:21 etworks I guess, where do I get started?
19:22 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?
19:22 particle as it stands now, none of the array-type PMCs deal with sparse arrays, or have many optimizations.
19:22 dukeleto etworks: perl tools/dev/mk_language_shell.pl mylangname
19:22 etworks yeah, but I definitely need RPAs
19:22 etworks I don't need sparse arrays to begin ... we haven't even got that right in J yet
19:22 dukeleto particle: parrot-linear-algebra may have some kind of sparse array type, or it will soon
19:23 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
19:23 etworks I was just trying to set my expectations, not making any requests
19:23 particle aye.
19:23 particle i'm trying to help set your expectations.
19:25 particle by the way, nqp allows you to write top-down, shift-reduce, and custom parsers, and they can all call each other
19:25 particle i don't foresee any problems in writing the J grammar with nqp
19:27 etworks FYI, the J grammar is not context-free
19:28 etworks but I can live with a starter kit that is
19:31 Tene non-context-free is not a problem at all.
19:31 etworks good news!
19:31 etworks what version of Perl should I use to run Parrot?
19:31 etworks and I'm on Windows/Cygwin if that matters
19:31 Tene Parrot doesn't run on Perl.
19:32 Tene oh, do you mean the Configure script?
19:32 etworks e PMCs don't turn you on, write your own
19:32 dukeleto etworks: perl 5
19:32 etworks perl tools/dev/mk_language_shell.pl mylangname
19:32 Tene Yes, that's Perl 5.
19:32 etworks any perl 5?  not like 5.10 or whatever?
19:32 dukeleto etworks: any version of perl 5 from this century should work
19:32 chromatic You need at least 5.8.6 or better.
19:32 etworks there we go.
19:32 etworks that I can do.
19:38 etworks oh `make', how I hate you
19:41 etworks ok, I'm getting Unrecognized line: 'inline op end(), which according to the IRC logs means I have the wrong line endings
19:42 etworks I just downloaded a fresh stable Parrot, unzipped, opened a cygwin shell, Configure.pl'd, and make'd.
19:43 Coke how did you download?
19:43 etworks FTP
19:44 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
19:44 etworks I'm pretty sure I only have the cygwin perl installed, but I know at some ponit I had activestate
19:44 Coke further steps use the perl you config'd with.
19:45 etworks yep, and they're all the cygwin version
19:45 etworks ok, let me unzip using cygwin ... hold please
19:46 PerlJam Isn't there a cygwin package for parrot that someone put together?
19:46 PerlJam (perhaps not the latest release yet)
19:46 Coke Honestly, on windows, I'd just use strawberry perl, skipping activestate and cygwin both.
19:46 Coke (give that a shot unless cygwin is a must have for y ou.)
19:47 etworks I've never heard of strawberry perl
19:47 Coke EGADS!
19:47 Coke strawberry perl?
19:47 etworks (and I use cygwin for the shell, mostly)
19:47 purl strawberry perl is found at http://strawberryperl.com/
19:47 PerlJam etworks: strawberry perl is the one to use on windows.
19:47 Coke strawberry comes with a compiler baked in.
19:47 etworks I am intrigued.
19:47 PerlJam etworks: it comes with Padre which is a GUI editor for Perl written in Perl.
19:47 etworks I haven't perled in a while.... last few years I've been nearly exclusively J
19:48 kjeldahl joined #parrot
19:52 etworks yep, tar xvf instead of winzip solved the problem
19:52 etworks thanks @Coke
19:58 theory joined #parrot
19:59 Coke etworks: np
20:19 cotto_work are our docs licensed under the same terms as the code?
20:20 joeri joined #parrot
20:25 etworks man, this is a comprehensive test suite
20:26 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 darbelo But, yeah. There's a lot of testing done.
20:30 cotto_work coverage?
20:30 purl somebody said coverage was http://cv.perl6.cz
20:32 Coke cotto_work: yes.
20:32 Coke anything in the repo unless otherwise noted.
20:35 cotto_work I was just pointing that out to etworks
20:36 Coke (license)
20:36 cotto_work oh.  Thanks.
20:39 dalek TT #1377 created by baest++: Build fails on OSX in continuation.c
20:49 cotto_work baest, is that from a clean checkout or tarball?
20:50 Coke oh, didn't realize he was here.
20:50 Coke also, what what version of OSX?
20:51 * Coke remembers to try context_unify3 against a HLL
20:51 chromatic Only a couple of tests fail there, Coke.
20:54 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.
20:54 Coke src/ops/tcl.ops: In function 'Parrot_tcl_return_p':
20:54 Coke src/ops/tcl.ops:170: error: dereferencing pointer to incomplete type
20:56 Coke partcl-nqp also dies, probably due to a lack of recent merge from trunk to that brench.
21:00 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 #parrot
21:12 dalek TT #1377 closed by coke++: Build fails on OSX in continuation.c
21:15 cotto_work ... and thus baest learned the importance of working from a clean checkout.
21:17 dukeleto cotto_work: lulz
21:17 dukeleto cotto_work: everyone has to learn that sometime
21:17 dukeleto When in doubt, "make realclean"
21:18 cotto_work yup.  I don't mind, especially since the release isn't actually b0rked.
21:20 baest yeah, sorry guys
21:20 japhb pmichaud or Tene, ping
21:20 dalek rakudo/master: 55a5c07 | moritz++ | build/Makefile.in:
21:20 dalek rakudo/master: [build] use the same spectest revision for the release as everything else uses
21:20 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/5​5a5c079e69335bf95cfa70870647b42724a7d7b
21:20 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
21:21 Tene japhb: Hi!
21:21 japhb Tene, Hi there!
21:22 japhb 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 japhb Or is it +>> and +<< now?
21:22 Coke japhb: why do you need those?
21:22 japhb Coke, converting some PIR to NQP
21:23 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.
21:24 japhb And they are, after all, standard arithmetic ops in most computer languages, so seemed reasonable from that angle too.
21:27 bacek joined #parrot
21:29 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.
21:33 japhb Tene: +< and +>, see http://perlcabal.org/syn/S03.h​tml#Multiplicative_precedence
21:33 Tene and what are the PIR ops for that?
21:33 japhb shl and shr
21:35 xenoterracide joined #parrot
21:53 whiteknight how is context_unify3 doing now?
21:53 whiteknight wasn't really looking at it today
21:54 chromatic whiteknight, a couple of fulltest test failures.
21:55 whiteknight okay
22:02 Coke ls
22:02 Coke ww
22:07 bacek joined #parrot
22:11 bacek chromatic, ping
22:12 chromatic pong, bacek
22:13 bacek chromatic, we can resurrect usage of NEED_RET_CONTINUATION
22:13 xenoterracide joined #parrot
22:13 bacek we just have to update "new_ret_continuation" to use caller_ctx, not CURRENT_CONTEXT
22:14 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
22:14 pmichaud 19:20 <dukeleto> etworks: tools/dev/mk_language_shell.pl will make a lang skeleton for you, using nqp-rx
22:15 pmichaud I don't recommend mk_language_shell.pl, fwiw.
22:15 pmichaud use tools/dev/create_language.pl instead -- it's more up-to-date
22:16 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?
22:16 Tene moritz: deprecation policy, of course!
22:16 pmichaud moritz: deprecation policy
22:16 purl deprecation policy is a major pain in the kiester.
22:16 bacek chromatic, t/library/streams.t                       (Wstat: 256 Tests: 20 Failed: 1)
22:16 bacek Failed test:  12
22:16 japhb pmichaud, question:
22:16 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.
22:16 chromatic Right.
22:16 pmichaud I've been keeping that one up to date.
22:17 pmichaud 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?
22:17 pmichaud japhb: have to do it from PIR
22:17 chromatic A warning is different from changed behavior.
22:17 pmichaud japhb: and the caller has to declare a $!
22:18 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 $!)
22:18 japhb as soon as I turn the top-level function into NQP from PIR, it has its own $!.
22:18 pmichaud ?
22:18 pmichaud I don't quite understand that part.
22:18 pmichaud afaik, NQP never creates its own contextuals; you have to do it explicitly
22:19 japhb Well, maybe I did it by accident somehow, but my PIR code contains anon blocks that set up $_ and $!
22:19 japhb er
22:19 japhb the PIR generated from the NQP
22:19 japhb by parrot-nqp --target=pir
22:20 pmichaud the only place that NQP is supposed to create a $_ is on blocks that need it as a parameter
22:20 pmichaud ooooops
22:20 pmichaud I'm guessing that Tene++ added $! as automatic lexicals
22:20 pmichaud urgh.
22:21 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
22:21 japhb DAMMIT
22:21 pmichaud code looks like it adds them to every block that doesn't have explicit params
22:21 japhb I was trying to use exceptions in my library code ... that also wants to set callers $!
22:21 pmichaud oh, wait
22:21 pmichaud never mind
22:21 pmichaud I see
22:21 pmichaud Tene++ is correct
22:21 japhb blarg
22:22 japhb hmm
22:22 pmichaud I'm not sure that's the behavior I ultimately want
22:22 pmichaud japhb: anyway, what do you want your routine to do if a caller doesn't have a $! ?
22:22 japhb how am I going to catch an exception thrown by a PIR op without setting $!?
22:22 Tene I do remember being uncertain if tha was the right way to handle it.
22:22 Coke (warn) can we deprecate the old one so we can rip it out after 2.0?
22:22 japhb pmichaud, I have this code:
22:22 japhb my $bang := pir::find_dynamic_lex('$!');
22:22 japhb pir::store_dynamic_lex__vsP('$!', $pipe.exit_status)
22:22 japhb if pir::defined($bang);
22:23 Tene japhb: Doesn't the NQP try{} set $! for you?
22:23 theory joined #parrot
22:23 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)
22:23 japhb Definition of qx()
22:23 cotto_work joined #parrot
22:23 pmichaud japhb: but what if the caller doesn't have a $! ?
22:23 japhb ... which I was implementing
22:23 japhb pmichaud, see magic code above
22:23 pmichaud that doesn't tell me anything
22:24 pmichaud 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.
22:24 pmichaud hmmmm
22:24 pmichaud okay, that's right
22:24 Coke ... but you call the store before you check for defined?
22:24 pmichaud Coke: it's a statement modifier
22:24 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.
22:24 Coke oh.
22:24 japhb Like $*EXECUTABLE_NAME and such
22:24 Coke i didn't realize nqp did that yet. =-)
22:25 pmichaud japhb: is this occuring from inside a nested block ?
22:25 pmichaud because find_dynamic_lex never finds a $! in the current sub
22:25 japhb hmmm
22:25 pmichaud (in the current Parrot sub, that is)
22:26 japhb pmichaud, nod
22:27 japhb 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:28 japhb (The qx() sub is nested inside ...)
22:29 japhb WTH is this thing?
22:29 japhb Implements the file scope?
22:31 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.
22:33 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.
22:33 japhb er generated
22:33 pmichaud japhb: sure, no problem.
22:33 pmichaud japhb: I agree that the lexical generation stuff tends to be ugly at times.
22:34 darbelo pmichaud: I'm looking at the file and it's been substatialy updated. It now generates a setup.pir driven build.
22:35 pmichaud darbelo: ...and I have no desire to deal with that.
22:35 pmichaud thus, create_language.pl :-)
22:35 japhb Oooh, I think I partially misdiagnosed, due to a bug in parrot Test::More.  Checking to be sure ...
22:36 darbelo pmichaud: create_language.pl predates the change I'm mentioning. There's little reason to dis-recomend mk_language_shell.pl nowadays.
22:41 pmichaud darbelo: (looking at code)   fair enough.  But all of the tutorials I intend to write are going to be makefile based.
22:43 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.
22:44 pmichaud 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:45 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?
22:45 purl well, says is not reliable, in that errors are reported but no automatic retry.
22:45 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.
22:46 japhb pmichaud, I'm judging by the metadata I've seen.
22:46 japhb And the vast number of setup.pir conversions that have happened.
22:46 pmichaud I'm not holding onto the idea of the HLL being the center of the world.
22:46 pmichaud I'm simply saying I'm not sure that Parrot is.
22:47 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.
22:48 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.
22:49 pmichaud (via setup.pir)
22:50 darbelo tar xzf Xyz.tgz; cd Xyz; parrot setup.pir install
22:50 pmichaud I don't have parrot installed yet
22:50 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
22:50 japhb can't tell them to do something else.
22:51 pmichaud japhb: "Download Parrot"  --- which version?
22:51 darbelo pmichaud: You should, nobody tries to run a python app without installing python beforehand.
22:51 dalek rakudo/master: 7f1c3fe | chromatic++ | docs/release_guide.pod:
22:51 dalek rakudo/master: [docs] Updated release guide.
22:51 pmichaud darbelo: python is a lot more mature than parrot
22:51 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/7​f1c3fe831e9f96d98c55ac6cec1f3ccf29ca3d7
22:52 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 ...
22:52 pmichaud japhb: even if I download a release rakudo
22:52 pmichaud *released
22:52 pmichaud ...then what?
22:52 japhb pmichaud, That's not the case for Python either.  On Debian, there's often several Pythons installed at once.
22:53 pmichaud japhb: let's suppose I downloaded the 2009-11 release of Rakudo.
22:53 pmichaud so, I unpack the tarball.
22:53 pmichaud I can't run setup.pir -- I don't have a Parrot yet.
22:53 pmichaud I can't run plumage -- I don't have a parrot yet.
22:53 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"
22:54 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.
22:54 japhb pmichaud, if they want the most recent release of Rakudo, it would be the most recent release of Parrot
22:54 pmichaud not true
22:55 pmichaud what if the most recent release of Parrot doesn't *have* a most recent release of Rakudo?
22:55 pmichaud As is the case yesterday and today, for example.
22:55 japhb Hold on, @family
22:55 darbelo pmichaud: To me, you are suggesting that the way to install apache is via a mod_whatever tarball.
22:55 pmichaud darbelo: To me, you're saying that I have to redo my HLL makefiles to instead use setup.pir
22:56 pmichaud and if setup.pir doesn't do some operation that I need in order to build the application, I'm hosed.
22:56 ingy joined #parrot
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 portable than makefiles.
22:58 pmichaud assuming I know PIr.
22:58 pmichaud PIR
22:58 pmichaud does setup.pir support parallel make/build?
22:58 darbelo You can do a setup.nqp too.
22:59 darbelo I know japhb means to use that for plumage.
23:00 darbelo Hmm. Haven't checked parallel building.
23:01 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.
23:01 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.
23:02 japhb When I say, "for the newest Rakudo, start with the newest parrot release", I should have said:
23:03 japhb "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 japhb So, for yesterday, you would have pointed them to Parrot 1.8, even though 1.9 was latest.
23:03 pmichaud ...and most people would say "oh, 1.9 is out, I think I'll grab that one instead"
23:03 japhb Because 1.8 was the latest Parrot release that supported the most recent Rakudo release.
23:04 japhb So you put a line on there that says "We'll support 1.9 tomorrow"
23:04 japhb Or "We'll support 1.9 on Dec 17"
23:04 pmichaud japhb: why are you putting so much work on HLL devs?
23:04 pmichaud every time Parrot makes a release, I have to update my site to say when I'll support it?
23:04 PerlJam japhb: Is parrot installable via plumage?
23:04 Tene Are there any comparable situations with other pieces of software?
23:04 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.
23:05 japhb PerlJam, chicken and egg.
23:05 japhb If Parrot could create a REAL executable, it would be,.
23:05 chromatic Don't forget that this solution only has to work for a year or so.
23:05 pmichaud japhb: "how long it took" was because parrot installs were broken, not because of setup/config utilities
23:05 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.
23:05 japhb The other thing is that having every HLL build a private parrot kills HLL interop, which is the whole magic of Parrot
23:06 pmichaud japhb: By no means do I advocate building a private parrot in every instance
23:06 pmichaud that's why the default Configure.pl always finds whatever parrot is already installed
23:06 pmichaud we only advocate --gen-parrot now because Parrot is not sufficiently stable to be able to say "install Parrot, build Rakudo"
23:06 japhb pmichaud, that just runs over the very same version compatibility issue you're calling Plumage on.
23:06 japhb Ah!
23:07 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?
23:07 japhb (honest question)
23:08 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?
23:08 Tene I'd imagine not, at least until we get the build dir looking like the install dir, yes?
23:09 pmichaud Tene: even the --gen-parrot version does an install
23:09 Tene pmichaud: Oh, okay.  I didn't know that.
23:09 pmichaud Tene: --gen-parrot no longer uses the build tree
23:09 japhb Tene: pmichaud is correct
23:09 japhb (of course)
23:11 japhb Parrot Test::More bug:
23:11 japhb $ parrot-nqp -e 'pir::load_language("parrot"); pir::compreg__PS("parrot").import("Test::More"); my $undef; is($undef, 0)'
23:11 japhb ok 1
23:12 pmichaud japhb: what answer are you expecting?
23:13 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 japhb 'you also get'
23:14 pmichaud japhb: I'm not sure that's a Test::More bug
23:14 pmichaud I suspect it's an Undef bug
23:14 pmichaud just a sec
23:14 japhb Fair enough.
23:14 pmichaud (building a nopaste)
23:16 nopaste "pmichaud" at 66.25.4.52 pasted "parrot comparisons don't always do what you expect" (20 lines) at http://nopaste.snit.ch/19131
23:17 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 TiMBuS joined #parrot
23:18 japhb Yep, that nopaste is buggy all right.
23:18 japhb Oh dear.
23:21 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.
23:21 pmichaud japhb: ... except you said I have to do it at the point of a parrot release
23:21 pmichaud 23:04 <japhb> So you put a line on there that says "We'll support 1.9 tomorrow"
23:21 pmichaud "We'll support 1.9 tomorrow"  isn't a release announcement
23:22 japhb I realized my mistake, and corrected myself.  Sorry I did not make it clear.  :-)
23:22 pmichaud I didn't see the correction.
23:23 japhb fair enough.
23:23 pmichaud (I still don't see the correction.)
23:24 pmichaud ...what was the correction?
23:24 pmichaud 23:04 <japhb> Or "We'll support 1.9 on Dec 17"
23:24 pmichaud ...that?
23:25 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
23:26 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
23:26 pmichaud for that matter, we almost got burned when 1.4 came out.... and 1.4 was supposed to be a "supported release"
23:26 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."
23:26 darbelo "We support this. Try later version at your own peril" is a stardard disclaimer in opoensource software.
23:26 japhb What darbelo said
23:28 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:29 japhb Right, and setup.* is already (as of today) beginning to support generating said RPMs and DEBs.
23:30 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.
23:30 japhb setup.* is essentially declarative
23:31 pmichaud not if I have to write my own custom components for it
23:31 japhb The script just builds the data structure.
23:31 japhb pmichaud, right, but those are exactly the places you write your own makefile rules.
23:31 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
23:32 japhb The basic stuff is declarative in both setup and a Makefile.  And the unusual stuff is a script in both cases.
23:32 japhb What is the difference?
23:32 purl the difference is not enough to make the US the only super power.
23:33 pmichaud anyway, this is eating up more of my time than I care to use right now (more)
23:33 pmichaud 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.
23:34 pmichaud 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 pmichaud I would also be very interested in seeing someone create a setup.pir for nqp-rx and/or rakudo.
23:34 pmichaud 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.
23:35 japhb msg fperrad Please see http://irclog.perlgeek.de/p​arrot/2009-12-17#i_1850132
23:35 purl Message for fperrad stored.
23:41 dukeleto pmichaud: fperrad will probably take you up on that offer
23:41 NotJack joined #parrot
23:42 pmichaud excellent
23:42 pmichaud I look forward to it.
23:42 pmichaud (seriously)
23:44 dukeleto pmichaud: fperrad has been writing everyone's setup.pir for them, if you just ask. he wrote one for Tapir :)
23:44 dukeleto pmichaud: i even got him to add a pbc_merge stage
23:44 cotto_work I don't like that bus number.
23:45 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
23:45 pmichaud okay
23:47 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).
23:47 NotJack is that for a reason?
23:48 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
23:57 cotto_work Wow.  4400+ lines of pir is a lot.

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced