Parrot 1.3.0 "Andean Swift" released | parrot.org
Set by moderator on 23 June 2009.
particle that's the most general solution, i think. allow the user to set precisely how each exception will be handled 00:00
.'set_errors_as_exception'( $I1, $P2 ) # set these error types to exceptions, handled by this pmc 00:01
perhaps, if no pmc is passed, the default is to leave them unhandled, making them fatal unless otherwise handled 00:02
darbelo Wait, the user is passing me the exception to throw or the handler that will catch it? 00:03
particle the exception type, and optionally the handler 00:04
...or exception types
s1n Whiteknight: i need to speak with you later, but i have to leave now, i'll be back in about 2 hours
darbelo Oh, I think I get it now. I'll go read the docs. 00:06
Whiteknight s1n: okay, awesome 00:07
Infinoid chromatic: Use helgrind much? 00:10
chromatic Only once, and never figured out what it was telling me. 00:14
particle cycling & 00:17
cotto bacek, ping 01:10
01:11 Zak joined
dalek tracwiki: v5 | Austin_Hastings++ | PGEBestPractices 01:13
tracwiki: Added some more tid-bits
tracwiki: trac.parrot.org/parrot/wiki/PGEBes...ction=diff
tracwiki: v25 | cotto++ | ParrotQuotes 01:16
tracwiki: Whiteknight++ does things wrong, also fix formatting to indicate an afk quote
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
Whiteknight ?
cotto ! 01:18
davidfetter Ā” 01:19
Infinoid Āæ 01:20
01:28 japhb joined
Whiteknight yay! 01:28
cotto ?
dalek tracwiki: v6 | Austin_Hastings++ | PGEBestPractices 01:29
tracwiki: Fixed typos, added leader.
tracwiki: trac.parrot.org/parrot/wiki/PGEBes...ction=diff 01:30
cotto Austin_Hastings++ #inadvertent pun
or advertent 01:31
bacek cotto: pong 01:35
cotto bacek, According to your proposal, we'll be implementing core PMCs in nqp or PIR.
Have you identified any barriers that could keep us from doing this or have you tried to implement something important (say Integer or RPA) in PIR?
bacek cotto: (NQP or PIR) it doesn't matter. My proposal to drop step with generating C from "new language for PMC" 01:36
however we'll probably have to generate C for "ops" 01:37
(Not necessary of cause) 01:38
If we'll split "ops" into "ops" and "l1ops" where "ops" are in pseudo-C and "l1ops" in "L1" 01:39
cotto So you're saying PMCs will go PIR/nqp/HLL -> PIR -> L1/C, but ops will need to be C until we get L1 working?
bacek cotto: something like this.
purl something like this is tempting: www.zones.com/cgi-bin/zones/site/pr...p;zone=zbs
cotto or rather, once we get ops working in L1, we'll have all the tools to write PMCs in nqp/pir and won't need to bother with a separate pmc compiler 01:40
forget something like this
purl cotto: I forgot something like this
bacek I didn't quite understand difference between those two approaches. 01:41
cotto just restating
bacek Ah. Than yes :)
cotto I still think we'll need to do some more work to be able to make PMCs work from L1, but I think your approach makes sense. 01:42
I don't want to clobber the pmc_pct branch, but it looks like it's worthwhile to start working on ops instead. 01:43
bacek yes, we'll need more work for implementing some L1 ops before we can rewrite PMC into NQP/PIR.
at least for raw memory access.
cotto Plus, if we define PMCs at runtime it'll make life easier for HLLs that want to have their own PMCs. 01:44
chromatic There's no reason to clobber that branch.
We should do it to get rid of the Perl 5 parser anyway.
cotto I wonder if there'd be any problems using the GC for all memory allocated from L1. 01:45
bacek We can put it "on hold"
chromatic I wouldn't think so.
Why not bring it to feature parity with pmc2c?
bacek imaging shiny world with all memory allocated from GC
cotto bacek, including memory used by the gc? ;) 01:46
chromatic I built a bootstrapping GC once.
Not as hard as you think.
bacek chromatic: too much effort...
cotto: of cause!
cotto bacek, I think the expression you're looking for is "of course"
bacek reading ParrotQuote about 4th language :) 01:47
chromatic: "too much effort" was about pmcc/pmc2c parity. 01:48
chromatic I don't see why, but I haven't been working on it.
cotto I agree with that. pmc2c isn't great, but it's not so bad that making pmcc work until we can do PMCs in L1 is worthwhile. 01:49
bacek chromatic: there is too many corner cases in pmc2c...
chromatic That's why it'd be nice to fix them.
cotto at which point any specific PMC compiler would be obsolete
chromatic Remember though that pmc2c means that anyone who wants to build dynpmcs needs Perl 5 and all of those libraries installed too. 01:51
cotto only until L1 PMCs work 01:52
chromatic That'll be a while.
cotto yes, but that's the current state anyway 01:53
chromatic How far is pmc_pct from doing the right thing?
With some tweaks to existing PMC syntax anyhow?
cotto I'd conservatively estimate that it's half way there. 01:54
More than half the coding's been done, but debugging's always tricky.
chromatic Would another two weeks get it close to merging?
cotto whose two weeks? 01:55
also, how close?
chromatic Stable enough to merge, without using it by default.
cotto hmmm. 01:56
it's not out of the realm of probability 01:57
I'm just not seeing the benefit of putting further effort into it. What are your thoughts? 01:58
chromatic It's not too far from landing, per a decent estimate.
It's a migration path away from pmc2c even in the short term.
It's modifiable to do what we need to do for L1 PMCs in the future. 01:59
I don't see much risk in continuing to work on it.
cotto My impression was that in the future the pir compiler would be sufficient for building PMCs, obsoleting both pmc2c and pmcc. 02:00
and that since they'll both eventually be obsolete, we might as well just use what we have now 02:01
chromatic I don't assume the PIR compiler will get that sufficient without some work which includes this.
cotto You may be right, however an updated ops compiler will definitely be needed, whereas pmcc may be needed. 02:03
chromatic We *can* write PMCs in straight PIR, but I'm not sure that's the *best* way to write them. 02:04
cotto When I say "PIR", I mean anything that gets compiled to PIR. 02:05
chromatic Fair enough.
02:06 amuck_ joined
cotto btw, with all this talk about making PMCs more dynamic, how feasible do you think it'd be to avoid doing PMC initialization (as in class_init) until the first time pmc_new gets called? 02:08
for a specific PMC type
chromatic I've thought about that. You have to init its parents too, but it's not infeasable. 02:09
That might speed up startup quite a bit.
cotto just what I was thinking
chromatic Especially delaying initialization of PMCs with lots of multis.
cotto one problem is code that depends on enum_class_Foo
chromatic We probably have to define those constants and do some init anyway, but not the full init. 02:10
cotto I guess there's not a very efficient way to do that without the constants 02:11
chromatic Probably not. 02:12
cotto I wonder how that'd fit in with L1 PMCs. 02:15
02:16 snarkyboojum joined
chromatic That's an open question. 02:16
Hopefully we can rearrange our initialization at that point. 02:17
cotto It might be orthogonal. Either way, it'd help.
chromatic Our highest priority right now is installation, and then probably the profiler. 02:18
cotto I can buy that. There's a ton of stuff that could use work, but we do have priorities. 02:19
Starting on an ops compiler would help me learn ops for profiler work. Maybe that'd be a good thing to start on. 02:23
chromatic Seems reasonable. I can work on the interface for pluggable runcores.
cotto sounds like enough of a plan 02:24
s1n i'm getting warnings about trap, is it intended to be experimental and thus not in ops.num? 02:27
dalek rrot: r39831 | petdance++ | trunk/compilers/imcc/pbc.c:
Rewrote IMCC_int_from_reg to not be all cut & paste
02:30
02:32 Andy joined 02:42 janus joined
dalek rrot: r39832 | petdance++ | trunk/compilers/imcc/cfg.c:
use NULL for pointers, not 0
02:43
rrot: r39833 | petdance++ | trunk/include/parrot/compiler.h:
annotations on the differences between pure and const functions
02:59
03:04 magnachef joined
whoppix purl, tell Whiteknight about btw, my offer to make flowcharts and illustrations for the docs is still standing, if someone finds some time to throw a list of things that need illustration the most. 03:06
purl OK, whoppix.
03:09 amuck joined
nopaste "tene" at 24.10.252.130 pasted "broken implementation of 'is cached' for pmichaud++ or jnthn++" (52 lines) at nopaste.snit.ch/17060 03:13
03:21 skids joined
s1n is the codetest target for testing coding standards (only)? 03:24
cotto that's codingstd_test 03:28
I think codetest is a little more inclusive
03:34 tetragon joined
s1n cotto: i'm looking for cage cleaning things, is codetest the right place? 03:36
Andy or running splint! 03:37
cotto s1n, what Andy said. We'll occasionally get codingstd failures, but I think you'll have a lot more to do if you play with splint.
s/get/introduce/ 03:38
Andy the bummer is that splint has SO MANY WARNINGS
and I'm trying to figure out what's what.
s1n i didn't think splint was maintained anymore 03:39
does it work? 03:40
purl i think does it work is it used? =-)
Andy yes 03:42
"Maintained" is relative
build it from source.
dalek rrot: r39834 | petdance++ | trunk/compilers/imcc/parser_util.c:
Splint annotations on string literals
rrot: r39835 | petdance++ | trunk (9 files):
no longer tries to headerize on imcc.y directly. Add lots of splint macros to imcc.y
ttbot petdance: Parrot trunk/ r39835 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/43484.txt 03:44
Andy huh
cotto ttbot++ 03:45
s1n Andy: do you have docs on how to use splint against parrot to do some cage cleaning?
Andy no
jdv79 cotto: get anywhere with your l1 experiments? 03:46
s1n Andy: so where would i start, what would i need to do?
cotto not terribly far, and I think I've been taking the wrong approach.
jdv79 the one you outlined in the wiki? 03:47
cotto I think I should be trying as much as possible to use existing nqp syntax to implement PMCs rather than looking for an extension every time there's something tricky.
yes
wait, you mean L1Recap?
Andy I wish I knew the diff between ttbot and me 03:48
jdv79 RewritingPMCsInNQP
cotto ok. That's what I was thinking of. 03:49
jdv79 i think i get the general idea. its the "how do we get there from here" that i guess everyone is wondering about. 03:50
cotto yes, at the nqp level
jdv79 is there something wrong with doing it with PIR? 03:51
cotto no, it's just that nqp is higher-level and easier to work with
and can be compiled directly to PIR with existing tools 03:52
jdv79 nqp is tied to p6 though and pir isnt... 03:53
cotto explain "tied"
it's based on perl6, but it doesn't need Rakudo or anything
Once "Close" arrives (if it hasn't already), we could just as easily use it. 03:54
but that might be confusing because it looks like C but is very different under the hood. 03:55
jdv79 sounds like PIR is a good fit to me. basicaly just get rid of the C code.
cotto Straight PIR makes more sense for ops than for PMCs since the ops will generally be smaller and more self-contained. 03:56
Andy AHA 03:57
For some reason, Makefile can't find my yacc
jdv79 ok. 03:58
cotto time for some shaving 03:59
Andy well, good, I've goofed up the build. 04:00
are we using actual yacc, or bison? 04:01
04:04 snarkyboojum joined
chromatic Bison. 04:05
jdv79 asswipe 04:10
wrong window - sorry 04:11
Andy chromatic: I was fooled into thinking that I was actually rebuilding files. 04:12
chromatic But you should see the other guy! 04:13
04:13 particle1 joined
Andy hey, chromatic, I gotta say, thumbs up on the regular posting to the modern perl blog 04:13
dalek rrot: r39836 | petdance++ | trunk (9 files):
reverting -r39835
cotto laziness? 04:14
purl i heard laziness was a virtue, after all :)
cotto laziness is also bill.wards.net/blosxom/humor/story/feynman.html
purl okay, cotto.
chromatic Thanks, Andy. 04:16
Andy Time & repetition.
chromatic Fire and motion.
Andy what's that 04:20
purl somebody said that was about the level that you were asking for
04:20 tetragon joined
chromatic That's how you take control of a battlefield. 04:21
Pin down your opponent and don't get pinned down. 04:22
"Entropy". That's my answer to your next question. 04:23
Andy Time & repetition is how habits and/or evolution and/or public perception happens. 04:24
04:26 eternaleye joined
dalek rrot: r39837 | petdance++ | trunk/compilers/imcc (8 files):
adding more splint notations, this time with bison properly running
04:30
04:35 snarkyboojum joined
dalek rrot: r39838 | petdance++ | trunk/compilers/imcc (2 files):
consting. Removed unused interp from add_pcc_named_return()
04:43
ose: r22 | austin_h...@yahoo.com++ | trunk/ (7 files):
Improved self, builtins, got more of Node.c= working
04:54
05:00 amuck joined 05:03 amuck_ joined
dalek rrot: r39839 | cotto++ | branches/pmc_pct/compilers/pmcc/src (3 files):
[pmcc] Simplify function body parsing to slurp everything into a PAST::Block.

NOTE: This may be the last commit to this branch, as a separate pmc compiler may not be necessary. See irclog.perlgeek.de/parrot/2009-06-30#i_1275754
05:14
cotto can someone think of a name for the new ops compiler that looks less like "oops" than "opsc"?
chromatic lops? 05:15
cotto scalpel - useful for operations 05:20
05:22 iblechbot joined 05:36 leto_ joined
bacek cotto: clops 05:38
cotto compiler for L1 ops?
not bad 05:39
bacek Level One Language
Ops Mega G... 05:40
Ops Meta G...
I can't find proper word for G... :-/ 05:41
cotto the thesaurus is your friend
cotto puts off naming the thing and digs into ops2c 05:42
05:45 tetragon joined
cotto I was hoping this would be easier than it looks like it's going to be. 05:46
bacek What doesn't kill you... 05:47
cotto leaves me badly injured and possibly scarred for life? 05:48
bacek and without hope to bright shiny future. 05:49
05:58 uniejo joined
cotto I've had lots of paper cuts that didn't kill me, but I don't feel any stronger. 06:08
06:13 jdv79 joined 06:16 tetragon joined
cotto The callgrind spec is hard to read too. I'm getting the sinking feeling that I might have to do some actual work. 06:31
06:31 brbrooks joined 06:39 tetragon joined 06:52 leto_ joined
cotto chromatic, ping 06:56
chromatic pong 06:58
07:11 Zak joined
dalek tracwiki: v2 | cotto++ | ProposedParrotsketchProtocol 07:22
tracwiki: Revert preposting recommendation to the original 30m. We can change it later if needed.
tracwiki: trac.parrot.org/parrot/wiki/Propos...ction=diff
08:00 burmas joined 08:03 tetragon joined 08:10 jdv79 joined 08:34 snarkyboojum joined 08:37 viklund joined 08:49 cognominal joined
nopaste "mikehh" at 217.42.128.29 pasted "codetest failures from make fulltest at r39839" (45 lines) at nopaste.snit.ch/17063 09:26
mikehh i got a patch - testing now
nopaste "mikehh" at 217.42.128.29 pasted "PATCH for codetest failures at r38939" (22 lines) at nopaste.snit.ch/17064 09:35
mikehh this Patch PASSes make test codetest and fulltest
got to go - bbl 09:36
09:44 bacek_ joined 10:31 kid51 joined 10:34 burmas joined 10:35 cognominal joined
dalek rrot: r39840 | bacek++ | branches/tt761_keys_revamp/src/dynpmc/rational.pmc:
[pmc] Fix handling of C<dest> in Rational dynpmc to be in-line with all
10:58
rrot: r39841 | jkeenan++ | trunk/compilers/imcc/pbc.c:
Applying patch submitted by mikehh to remedy two coding standards failures.
11:02
kudo: 78b5ac5 | jnthn++ | (2 files):
Implement [X] for RT#67064.
11:11
kudo: 997a1bd | jnthn++ | src/parser/ (2 files):
Get our parsing of type declarators a little more in line with STD.pm and hanlde the case where there is no C<where> clause. Resolves RT#66854.
11:24 masak joined
bacek_ bah... 12:06
msg Whiteknight Does GC check CPU registers? 12:07
purl Message for whiteknight stored.
12:08 skids joined 12:09 snarkyboojum joined
bacek_ kid51: (TT#798) it's libsdl-dev or libsdl1.2-dev 12:17
12:18 JC1 joined 12:21 rhr joined
dalek kudo: fa963c8 | jnthn++ | src/parser/ (2 files):
Support writing of literals inside a signature.
12:22
kudo: 72ececf | jnthn++ | t/spectest.data:
Add S06-multi/value-based.t to spectest.data.
kudo: 1317e53 | jnthn++ | src/parser/actions.pm:
If BUILD is declared as a method rather than a submethod, emit a warning. Should handle RT#66120.
12:27
12:51 ruoso joined 13:01 Whiteknight joined
dalek TT #800 created by pmichaud++: Parrot assumes command line arguments are ASCII 13:36
kudo: f484da5 | jnthn++ | src/builtins/globals.pir:
Implement first cut of $*CWD. Patch courtesy of Lyle <webmaster@cosmicperl.com> along with a tweak from me.
13:40
kudo: 7773f90 | jnthn++ | src/builtins/io.pir:
Implement chdir. Roughly based off a patch from Lyle++ <webmaster@cosmicperl.com>, but with corrections to error handling and the way me update $*CWD to work with relative directory changes.
kudo: 466baf6 | jnthn++ | t/spectest.data:
Run chdir and $*CWD spectests.
13:40 MoC joined
pmichaud missing a pop_eh in there. 13:44
Also, I would've somewhat expected chdir() in setting instead of PIR
jonathan eh - we tailcall straight away afterwards, but yeah 13:45
Yeah, could do it that way too...though we need to instantiate the OS PMC. 13:46
pmichaud I don't mind inline PIR in that case.
jonathan And it's not a whole load of coe.
But mostly, the patch I started in was in PIR.
13:50 maettu joined 14:05 Andy joined
jonathan Man is the Parrot GC heisenbug a pain... 14:12
moritz Whiteknight++ # wknight8111.blogspot.com/2009/06/l1...w-faq.html 14:14
Whiteknight GC heisenbug?
moritz there's just one minor point: the usage of "algorithmic complexity" is highly misleading in that context
it usually means the O(n^2) thing
jonathan Whiteknight: Aye, there's some GC bug in Parrot that is randomly tripping up Rakudo.
Whiteknight bacek: ping
moritz but it just buys us constant factors, although we hope they'll be large
jonathan (Randomly as in, it sometimes causes segfaults, and sometimes wrong answers, and when there's a small change the fail moves.) 14:15
14:16 Hunger joined
pmichaud Whiteknight: the gc bug started showing up again after the memory leak fixes 14:18
which means that somewhere a "leak" was "fixed" that shouldn't have been.
Whiteknight urg. and I assume from the name "heisenbug" that there's no way to reliably reproduce it? 14:19
szbalint there is, you just have to run parrot long enough =) 14:20
jonathan Whiteknight: There may be a way, but no known way of yet.
Whiteknight Is there a ticket open for this? 14:24
Whiteknight wants to get up to speed on the details without having to ask a million stupid questions 14:25
pmichaud there's not a ticket, because it's not reliably reproducible. 14:28
as in, it only exists for certain source code programs and certain revisions of rakudo/parrot
Whiteknight ok 14:29
do we know then that it's even GC-related? most of the fixed memory leaks in recent days haven't involved the GC at all 14:30
moritz all non-determinism is attributed to the GC, by defintion :-) 14:31
pmichaud Whiteknight: sometimes "GC" gets used generically for "problem disappears when parrot's -G flag is used"
and it's not "recent days" -- it's more like "within the past six weeks"
14:33 maettu left
dalek kudo: 2827e45 | jnthn++ | src/pmc/perl6multisub.pmc:
Get Perl6MultiSub to stringify sensibly.
14:34
kudo: 1e742a7 | jnthn++ | src/builtins/io.pir:
Missing pop_eh spotted by pmichaud++.
kudo: 91bb463 | jnthn++ | src/classes/Multi.pir:
Implement prefix:<~> for MultiSub. This makes sure we stringify Parrot multisubs correctly (it may well we that we can drop this patch if Parrot changes how they stringify).
kudo: 2ae07bd | jnthn++ | src/setting/IO.pm:
Before handling stuff off to Parrot IO, we should use prefix:~ to stringify it. Causes no spectest issues.
Whiteknight okay, awesome 14:37
14:38 davidfetter joined
dalek rrot: r39842 | petdance++ | trunk/compilers/imcc/main.c:
use NULL when you mean NULL
14:45
rrot: r39843 | petdance++ | trunk/compilers/imcc/symreg.c:
refactored int_overflows
14:49 Theory joined 14:59 bacek_ joined 15:03 mikehh joined
Whiteknight purl msg bacek yes, the GC does check the CPU registers. Check the file src/gc/system.c. It's messy and not well documented, but this is where the magic happens. Let me know if you have any questions about it. 15:04
purl Message for bacek stored.
15:12 kgilmer left
Coke catches up. 15:26
15:30 clinton joined 15:40 chromatic joined
Coke chromatic: hey, big guy. 15:40
purl big guy is alot easier to upend on skates
15:41 rdice joined
chromatic What's up? 15:41
purl Your face, chromatic. That's what.
chromatic Also my hair, purl.
purl chromatic: excuse me?
dalek kudo: bcdaaff | pmichaud++ | docs/release_guide.pod:
Update release_guide.pod with more names.
15:44 Theory joined
dalek kudo: 7032827 | pmichaud++ | docs/release_guide.pod:
Release #18 is no longer "planned" -- it "happened". masak++
15:47
szbalint haha 15:48
Tene ... looks like cloneflags.pasm isn't getting installed. 15:56
Is this right?
16:04 darbelo joined
dalek kudo: a4978b9 | pmichaud++ | src/ (2 files):
Add infix:<minmax> operator -- resolves RT #66640.
16:06
kudo: c4e546e | jnthn++ | src/parser/ (2 files):
Change the way we detect state variable initialization to be more general. Resolves both RT#67040 and RT#67058.
purl dalek: that doesn't look right
kudo: 95a2c4f | pmichaud++ | src/builtins/any-str.pir:
Improve error message for "substring not found" (RT #66624).
kudo: 86271a6 | jnthn++ | :
Merge branch 'master' of git@github.com:rakudo/rakudo
cotto Heh. I just realized that the 2+ hour YAPC Parrot BOF meeting was described as "short". 16:07
chromatic It was long for a retrospective, but we'd never done a retrospective before (and we don't do them regularly), so it was about as long as I expected.
Coke I misread that as 24 hour. 16:08
16:09 flh joined
moritz I've never seen a really short BOF :-) 16:09
cotto I'm not complaining at all. It was a productive meeting, just not short. 16:18
dalek tracwiki: v26 | coke++ | ParrotQuotes 16:21
tracwiki: I find that dozens work best in the moment.
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
16:31 smash joined
smash hello everyone 16:31
everone hello smash
cotto hi smash 16:36
16:40 Psyche^ joined
dalek rrot: r39844 | pmichaud++ | trunk/src/string/charset/unicode.c:
[strings]: Fix bug in upcase handling on unicode strings.
16:45
jonathan pre-pastes his report. 16:50
parrotsketch? 16:53
purl i think parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
jonathan clock?
purl jonathan: LAX: Tue 9:53am PDT / CHI: Tue 11:53am CDT / NYC: Tue 12:53pm EDT / LON: Tue 5:53pm BST / BER: Tue 6:53pm CEST / IND: Tue 10:23pm IST / TOK: Wed 1:53am JST / SYD: Wed 2:53am EST /
jonathan Wait, none of them is UTC!
davidfetter LON is BST, which is usually pretty close to UTC ;)
jonathan UTC doesn't do daylight savings, though? 16:54
cotto time?
purl i guess time is 16:49:35 2009 and (did you mean "clock"?) or flowing like a river or the fire in which we burn
jonathan OK, so is #ps in 35 minutes of 95 minutes?
That is, do I eat now or later? ;-)
cotto 95
jonathan Food now! :-D
cotto nom 16:55
davidfetter SELECT now() AT TIME ZONE 'UTC';
timezone
purl timezone is, like, at www.timeanddate.com/worldclock/
davidfetter ----------------------------
2009-06-30 16:56:11.301204
antiphase Has no-one heard of NTP? 16:56
cotto or date -utc
s/-/--/
moritz antiphase: even if you have, it might be unwise to mix your database's time with your system time ;-) 16:57
17:09 abesapien joined
whoppix evening #parrot. 17:11
moritz hei whoppix 17:12
whoppix moritz :) hows rakudo coming along? 17:13
Whiteknight evening whoppix
moritz whoppix: nicely
whoppix Whiteknight, hey. You got my message?
moritz, cool
17:23 allison joined
Whiteknight whoppix: no, no messages 17:24
Coke: I've made a lot of progress on that context_pmc branch, but I still only give it about a 50% chance of success as is 17:25
we may need to go back in as a second step and clean things up first
whoppix Whiteknight, oh. Well, I was just saying, that my offer to illustrate the docs still stand, if someone finds some time to lump together a list of topics that need illustrating the most.
Whiteknight, then I'll read up on the topics myself and make illustrations, which someone more familliar with parrot can proof-read. 17:26
Whiteknight whoppix: oh excellent! I'll make sure we get a list to you!
whoppix Whiteknight, ok, cool.
Coke Whiteknight: yes, well, I was hoping we'd clean it up first. =-) 17:27
Whiteknight damn the torpedos, full speed ahead! 17:28
Coke If you want to restart the branch, that's fine.
Whiteknight plus, I'm getting a much better understanding of where all Contexts are used
Coke hokay.
might be good if you slapped a page together with what you think is coming up next. 17:29
smash Coke: sorry, did i miss a relaease ? i have fallen off the face of the earth a couple of times this year
Coke smash: you mean a release you were scheduled to do? I think so, but we had it covered. 17:32
for penance, you can close a few tickets. =-)
smash Coke: i'm terrible sorry about that..
fair enough, gimme some links :-P
Whiteknight moritz: you got clang+llvm to build Parrot? Do tell! Could you write up a recipe on the wiki? 17:34
moritz Whiteknight: there was no black magic involved, and I wrote about it on the list ;-) 17:36
Whiteknight: but if you suggest a nice title I can certainly add a few lines
Coke smash: my preference is anything on this report marked tcl: 17:37
trac.parrot.org/parrot/report/16 17:38
dalek cnum-dynpmcs: r94 | darbelo++ | trunk/src/pmc/decnumcontext.pmc:
Changed all of DecNumContext's numeric getters/setters to return/accpet INTVAL
17:39
NotFound "reports by 1800 UTC": "by" means before of after?
moritz before
NotFound Ok
Whiteknight moritz: BuildWithClang seems like a good title 17:41
or BuildWithClangAndLLVM
17:44 brbrooks joined
cotto Clang implies LLVM 17:46
moritz aye 17:48
cotto Whiteknight, if all PMC-related memory allocations went through the GC, what other changes would we need to make? 17:52
Whiteknight cotto: what do you mean?
chromatic malloc/free use GC pools.
We could use sized pools (more overhead in managing them, possibly less fragmentation) or just extend the heap and deal with any fragmentation later. 17:53
17:55 jhorwitz joined
Whiteknight chromatic: we do have sized pools now that are miserably underutilized 17:55
moritz Util: if you need some help on your PPI-based 5->6 translator, feel free to ping me 17:57
(but not this week, I fear)
Util moritz: thanks!
cotto ppi? 17:58
purl i think ppi is a perl syntax parser that is good enough to actually use, and is quite capable of handling most non-DamianWare :) or useful for automating perl golfing. or at www.perl.com/pub/a/2005/06/09/ppi.html or "100 percent round-trip safe, and it's been stress tested against the 38,000 (non-Acme) modules in CPAN, handling all but 28 of the most broken and bizarre" or impossible or Penis Pushes Inside
dalek tracwiki: v1 | moritz++ | BuildingWithClang
tracwiki: trac.parrot.org/parrot/wiki/Buildi...ction=diff
moritz ok, I've added that wiki page. Should I link to it somewhere? 18:00
18:01 cogno joined
dalek tracwiki: v3 | Util++ | ProposedParrotsketchProtocol 18:04
tracwiki: trac.parrot.org/parrot/wiki/Propos...ction=diff
18:04 amuck_ joined
Util purl, PPI is also search.cpan.org/dist/PPI/ 18:05
purl that is too long, Util
pmichaud Whiteknight: rather than wait for #ps, I'll ask my current question here: Why was TT #389 assigned to me? 18:08
Coke ppi? 18:09
purl well, ppi is a perl syntax parser or www.perl.com/pub/a/2005/06/09/ppi.html or search.cpan.org/dist/PPI/
Util Coke: much better! 18:10
Whiteknight pmichaud: I dont remember, let me look it up
you know what? I have no idea. It might have been a goof 18:11
allison: when does the book show up on amazon? :) 18:15
pmichaud #ps in 15
Whiteknight or, for that matter, when does it appear someplace that I can buy a copy?
allison Whiteknight: the printers have to finish processing it
18:16 burmas joined
Whiteknight okay, and how long does that take? My last experience with a publisher was a print-on-demand thing and I had a book in my hands in 4 days 18:16
darbelo++ 18:18
Coke allison: someone should ping monty python and ask for an endorsement. =-)
allison Whiteknight: that was my experience last time I submitted a print-on-demand title too
Coke: lovely idea :)
Whiteknight "Wait a minute, this isn't funny at all!" - Monty Python 18:19
moritz darbelo++ # using adverbs in his #ps report ;-)
dalek: a short line on how much you are on schedule would be nice
erm, meant darbelo
Coke allison: which book: draft/ or pir/ ? 18:20
18:21 Whiteknight joined
allison Coke: pir/ 18:21
Coke allison: ""The C<die> opcode throws a 18:22
fatal (that is, uncatchable) exception""
ORLY?
purl YA RLY.
Coke what's the difference between draft/ and pir/ ? is pir just a finalized version? 18:23
18:24 amuck_ joined, cogno joined
allison Coke: draft/ is all the chapters of the original book, pir/ is just the PIR chapter from the original book, broken out into separate chapters 18:24
Coke: I'm thinking the next book should be a cleaned up version of the Squaak tutorial 18:25
Coke ok. is that original chapter deleted from draft/ ?
cotto #ps in 5
dalek kudo: aa1a18d | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 409 files, 11510 passing, 85 failing

   S02-builtin_data_types/hash_ref.rakudo 23,24,25,26,28,29,30 - The object is-a 'Hasi'
   S02-builtin_data_types/num.rakudo 32,34,36,38 - The object is-a 'Nun'
   S02-builtin_data_types/range.rakudo 11,15 - got the right array
   S02-literals/quoting-unicode.t 68,69,70 - q-style string with ...
   S02-names_and_variables/fmt.rakudo 5 - fmt() works with @ array
   S02-whitespace_and_comments/comments.rakudo 7,8,9 - embedded comment ...
   S03-operators/cross-metaop.rakudo 4 - smooth cross operator works
   S03-operators/increment.rakudo 3 - magical ++ should not be numified
   S03-operators/increment.rakudo 4 - it isa Str
   S03-operators/range.rakudo 5,6,8,10,12,29,33,48
   S04-statement-modifiers/until.rakudo 4 - post until
   S04-statement-modifiers/while.rakudo 4,5 - post while
   S04-statements/do.rakudo 7,8 - prefixing 'if' statement with 'do' ...
   S05-match/capturing-contexts.rakudo 1,2 - Match object ...
   S05-substitution/match.t aborted 5 test(s)
   S05-transliteration/trans.rakudo 8,9,10,14 -
   S12-attributes/recursive.rakudo 2 - Sanity check, $a is of type A
   S12-class/basic.rakudo 5 - .isa("Foo")
   S12-enums/basic.rakudo 27 - short name of the enum without parenthesis is an enum
   S32-container/zip.rakudo 11,12 - can mix arrays and ranges for infix:<Z>
   S32-io/IO-Socket-INET.t 2 - echo server and client
   S32-num/int.rakudo 40,42,44,46,48,50,52,54,56,58,60,62 - The object is-a 'Inu'
   S32-num/rand.rakudo aborted 5 test(s)
   S32-scalar/undef.rakudo 37 - The object is-a 'Hasi'
   S32-str/lc.rakudo 8 - lowercasing char-range
   S32-str/words.rakudo aborted 8 test(s)
   integration/99problems-21-to-30.rakudo aborted 5 test(s)
Coke AIGH.
cotto epic commit message
nopaste "pmichaud" at 72.181.176.220 pasted "rakudo daily test failures, 2009-06-30" (68 lines) at nopaste.snit.ch/17066 18:27
moritz notice "The object is-a 'Inu'" and "The object is-a 'Hasi'"
pmichaud moritz: yes, that's the "strange calls to .succ" that I mentioned.
'Inu' = 'Int'++
dalek rrot: r39845 | allison++ | trunk/docs/book/pir (9 files):
[book] Final cross-reference and page-break fixes.
pmichaud 'Hasi' = 'Hash'++
etc.
rrot: r39846 | coke++ | trunk/docs/book/pir/ch09_exceptions.pod:
fix typo
allison Coke: not sure, checking... 18:28
pmichaud #ps in 0 18:30
18:31 cogno joined 18:33 jan joined
jonathan Hasigotagcbug? 18:36
chromatic Hope not.
jonathan Unfortunatley, Parrot has. 18:37
:-(
pmichaud the errors in the nopaste seem to occur primarily with the fakecutable. Running with perl6.pbc doesn't produce the same errors (still checking this)
moritz pmichaud: which parrot version did you use? with the 1.3.0 release it looks much cleaner here 18:38
NotFound Can someone delete RT #67078? 18:39
cotto NotFound, will do
pmichaud moritz: the 1.3.0 release.
18:50 athomason joined 18:53 einstein joined, amuck_ joined
Coke at $DAYJOB 18:57
dalek ose: r23 | austin_h...@yahoo.com++ | wiki/WishList.wiki:
Created wiki page through web user interface.
19:00
ose: r24 | austin_h...@yahoo.com++ | wiki/WishList.wiki:
Edited wiki page through web user interface.
ose: r25 | austin_h...@yahoo.com++ | wiki/WishList.wiki:
Deleting wiki page WishList.
19:04 jevin joined
Util pmichaud: I would be very interested in a repeatable test case that fail with fakecutable but succeeds with perl6.pbc. 19:05
chromatic The only real difference between the two is that the fakecutable always enables the --leak-check flag.
Coke pmichaud++ 19:06
Util chromatic: that *should* be the only difference; if another diff is lurking, I will hunt it.
cotto pmichaue?
Coke 1072 / 60 19:09
purl 17.8666666666667
pmichaud util: Let me see if I can get the instructions together for a repeatable perl6 failure. 19:11
jonathan chromatic: I've seen bugs appear and disappear with very small, unrelated changes. I think just a slightly different memory allocation profile - which the fakeexecutable is *occasionally* enough to give - can do it. 19:13
chromatic: The *vast* majority perform exactly the same under the fakeexecutable and without it though and it's -G that hides the problem. 19:14
chromatic True, the memory layout will be slightly different.
jonathan So I'm about certain it's not the fakeexecutable that holds the problem. It just sometimes might make enough of a different in memory layout to make the bug trigger differently. 19:15
*difference
19:17 Tene joined 19:18 jdv79 joined, Theory joined
dalek tracwiki: v76 | whiteknight++ | WikiStart 19:21
tracwiki: creating a section here on the main page to list our current development priorities
tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff
tracwiki: v77 | whiteknight++ | WikiStart
tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff
tracwiki: v78 | whiteknight++ | WikiStart
tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff
flh How would someone describe what the Capture PMC is? Is it just a clever combination of a list and a hash? Why is it called "Capture"? 19:23
pmichaud jonathan: the nopaste I just gave actually demonstrates differences between 'perl6' fakecutable and running the .pbc
Whiteknight flh: that's actually a very good question. I have no idea what that PMC is for
flh: I don't think it gets used much, at least not any more 19:24
pmichaud Capture is the base class for all of PGE and PCT.
so I think it gets used a lot. :-)
Whiteknight will just shut up now
allison pmichaud: Are you using the C Capture now?
pmichaud flh: Capture is basically a list and a hash, yes. It represents things that can have both positional and named values.
moritz flh: it's called "Capture" in Perl 6 because it captures the contents of an argument list 19:25
allison pmichaud: didn't you used to use a PIR Capture Class?
pmichaud allison: yes, but switched to the Capture PMC once it was available and reliable.
(because the Capture PMC is substantially faster)
Coke rant: now when a language is marked cross-HLL we'll have no idea WHICH languages it's HLL for. =-)
meaning we'll have to put it elsewhere. which means we'll have two places to check. 19:26
pmichaud Coke: I think the purpose of "cross-HLL" is to denote issues specifically affecting language interoperability
Coke: it's not intended to simply say "this issue affects multiple languages"
Coke in which case, that's a component, not a language.
pmichaud component++ 19:27
allison yes, I'm adding the component "hll-interop"
(did someone suggest it as a language?)
Coke I thought so, based on #ps. could have read it wrong. 19:28
it's still an issue that we can't say that some bug affects both tcl and rakudo.
easiest way around that is to fix all those bugs. =-)
Whiteknight: a surprising number of those 300 tickets are still open. 19:29
(for good reason)
allison Coke: hmm... we could probably create a custom select type
Whiteknight I think #ps today was very nice and very productive
maybe needs some practice, but good overall 19:30
pmichaud Coke: I suspect that TT #760 is no longer a blocker for Tcl. It's been marked as "rejected", at any rate.
(TT #760 is still appearing in the /16 report)
NotFound TT #661: there is still something on int blocking perl6, or any other?
Coke pmichaud: if the ticket is rejected, it shouldn't even be on that report.
pmichaud NotFound: I was just looking at that. I think #661 can be marked as resolved, at least from rakudo's perspective. 19:31
Coke: Agreed -- so perhaps the report needs fixing.
Coke will do.
allison pmichaud: you have a few minutes to talk about install questions?
NotFound pmichaud: I think you or some other rakudo guy said it was no tested yet on windows, maybe 2 weeks ago. Is this solved? 19:32
19:32 iblechbot joined
pmichaud NotFound: I think it is solved. But if it isn't, then we can wait until someone speaks up about it again. 19:32
(and they can file a new ticket if that's the case) 19:33
Coke pmichaud: fixed; added status column in report, skipping records == rejected.
NotFound I'll add a comment on the ticket saying it will be closed in a few days if no one objects, then.
pmichaud NotFound: +1
purl 1
pmichaud (though I'd be okay with closing it now.) 19:34
Coke NotFound: that is such a common action, i wonder if we should add a status called "closing".
chromatic Or "closed"?
Coke (anything in a closing state that's more than N days old is fair game to close.)
chromatic: but it's not closed.
nopaste "pmichaud" at 72.181.176.220 pasted "rakudo head running on Parrot trunk, spectest results" (31 lines) at nopaste.snit.ch/17068
Coke I suppose we could just say "closing ticket. Reopen if necessary" 19:35
chromatic Yep. Reopening is cheap.
NotFound Coke: I'd like that, if the close will be automated.
Coke and then leave off the last sentence to be succint.
er, terse. =-)
allison Coke: that has the advantage of requiring less work in the default case
chromatic It's like writing a technical book where each paragraph ends with a sentence telling you what the next paragraph will be about when you get around to reading it, which you'd already be doing if not for the presence of the sentence telling you what you will be reading in a moment.
Slightly different from the Star Trek V problem. 19:36
Sorry, Star Trek: Generations.
NotFound The I'll close it, following our guru's words about laziness.
dalek TT #661 closed by NotFound++: [TODO] Capture output of subprocesses 19:41
Coke wonders if he'll have to post that message with slight updates in another six months. 19:44
japhb Tene: re: the two "General Issues" at the top of trac.parrot.org/parrot/wiki/HllInteroperability ... Are they 1) already ticketed but you don't know the TT#s, or 2) definitely not ticketed, or 3) may or may not be ticketed?
pmichaud japhb: The second general issue is probably TT #150 19:45
japhb pmichaud: thanks, looking 19:46
Appears trac is quite slow right now ...
dalek rrot: r39847 | allison++ | trunk (2 files):
[book] Deleting draft chapter now split into a full PIR book.
19:47
19:49 MoC joined, Sark joined
Tene japhb: I have no idea 19:49
japhb: I have a lot of trouble trying to remember to deal with tickets properly. 19:50
japhb Reading your TT #150, as suggested by pmichaud, I think he's right, that's a match for issue #2
japhb goes to edit wiki page
Crap, have to learn yet another markup language
nopaste "pmichaud" at 72.181.176.220 pasted "difference between perl6 fakecutable and perl6.pbc (for Util)" (20 lines) at nopaste.snit.ch/17070 19:51
pmichaud Util: See nopaste #17070 (above)
Tene japhb: Yes, tt150 is right
19:51 abesapien joined
smash any wiki page with the install issues mentioned earlier ? 19:51
japhb How do I mark up a TT# on the wiki so that it will be linked? Just do it like any other HREF? Or does it recognize special syntax?
Tene japhb: the other is 777
19:52 PacoLinux joined
japhb Tene: thanks 19:52
dalek TT #801 created by flh++: Rewrite capture.t in PIR
Util pmichaud: thanks; will investigate today.
Tene japhb: I'll try to work on enumerating and ticketing everything else I can think of tonight.
pmichaud japhb: I think just "#150" is sufficient to generate a link to a ticket.
japhb Tene: did you create one for the "can't instantiate classes other than the one named in the use statement" problem? ('use OpenGL::Math:from<parrot>;' doesn't allow 'new OpenGL::Math::Vec4') 19:53
Tene: thanks
Tene japhb: Your description there isn't exactly right...
but I have a few clues
japhb Tene: fair enough
allison pmichaud: one general philosophical question about install tools 19:54
Tene I'm checking to confirm that #744 hasn't been fixed yet...
allison right now, our biggest problem is trying to make install tools that ship with parrot and work when they live the build directory and also the install directories
smash wavez. 19:55
Tene hi smash
pmichaud allison: (short-circuiting where I think you're leading) I think we should no longer have a notion of "run from the build directory", except to the extent that we create something that looks like an install in the build directory
but I'm guessing you're actually about to ask something else :-) 19:56
allison pmichaud: this is much simpler if language building tools aren't installed with parrot at all, they're just given as "examples" and each language keeps their own customized versions
dalek tracwiki: v8 | japhb++ | HllInteroperability
tracwiki: Add Trac Ticket numbers for two existing General Issues
tracwiki: trac.parrot.org/parrot/wiki/HllInt...ction=diff
pmichaud allison: Philosophically I completely agree with that, but there are a few additions 19:57
allison pmichaud: aye, that's also true, to the extent that we can get a build directory to mimic an install
pmichaud In particular, Parrot should provide tools for compiling dynpmcs and dynops. We shouldn't expect languages to maintain separate copies of those.
chromatic I'd like to keep the ability to run HLL code from a Parrot I haven't installed with 'make install' or 'make install-dev', but I don't care if it gets rearranged by 'make' in the Parrot build directory.
Coke (make hll languages write their own tools); I have concerns with that.
pmichaud in fact, the tools for compiling dynpmcs and dynops need to follow the deprecation cycle -- they're in effect part of the Parrot API 19:58
allison pmichaud: that is, installing should be no more than copying from one directory to another
Coke: aye, the problem is when you have to fix a bug in the "example" that was the starting point for all the languages
pmichaud I completely agree that "make install" ought to act more like a copy. Currently it does a re-build, which means that what we tested with "make test" isn't at all what gets installed.
allison Coke: it doesn't automatically spread out to all the languages
chromatic: yes, being able to run in the build directory somehow is required for testing 19:59
pmichaud I think we all agree that Parrot's "make" should create something that looks like an uninstalled install 20:00
Coke pmichaud: given that we're linking against two different configs, I'm not sure you can avoid that.
allison pmichaud: but at the same time, you don't want Parrot to do the processing on your makefiles?
Coke it already doesn't rebuild individual c files, anyway.
pmichaud Coke: I'm saying there should be only one real "config"
Coke pmichaud: ... how?
allison pmichaud: (that is, I was thinking you were in favor of decoupling the languages from the Parrot scripts)
pmichaud Coke: but if there can't be only one real config, we should at least make the two configs look as similar as possible 20:01
Coke pmichaud: that's another issue for which there is already a ticket.
Whiteknight I added a priorities section to the main page of the wiki
we can list important priorities there
Coke (see doughera's thoughts on that process)
pmichaud Coke: i.e., paths to libraries and precompiled things should be the same (modulo the root of the directory)
allison pmichaud: "make install" shouldn't be building anything. If it is, it's a dependency bug in our makefile 20:02
dalek kudo: c51b9aa | jnthn++ | src/builtins/guts.pir:
Fix inheritance from Object - it no longer tries to also add Any as a parent also (which explodes when building the C3).
pmichaud Coke: I'm not at all claiming that what I'm suggesting is different from adougherty's stuff. :-) Everything I've seen adougherty write I agree with.
allison: iiuc, "make install" recompiles the parrot binary 20:03
I could be wrong -- haven't checked recently.
allison it didn't 4 months ago when I worked on the install process, but could have been introduced since then
Coke pmichaud: there is a ./parrot and a ./parrot_install, or something to that effect.
pmichaud Coke: yes, that's that I remember.
We test "./parrot", but then installed "./parrot_install" 20:04
Coke right.
pmichaud s/installed/install/
allison mmm... yes, that is true, and should change
Tene japhb: are we just listing all HLL-related tickets on the HLLinteroperability page?
Coke the only (theoretical) change is the config.
pmichaud no, other things change as well.
Coke Tene: better to just link to the report.
pmichaud In particular, the paths where the libraries get found.
Tene Coke: which report?
purl somebody said which report was the hopkins report? I'm losing track of which is which.
Coke those paths are in the config.
Tene: #16
pmichaud some of them are compiled into the binaries.
Coke as part of the config, yes? 20:05
japhb Tene: I was thinking "any tickets directly affecting HLL interop that don't affect single-HLL (or pure PIR) code"
allison pmichaud: yes, but it's the same ones between the two
pmichaud as hard-coded paths.
allison pmichaud: that is, Parrot has a set of search paths that include both install and build directories
Coke japhb, tene: in that case, you can just have a report that returns things assigned to that component.
allison and both ./parrot and ./parrot_install get the same search paths
pmichaud allison: that matches what I've seen, yes. But we should get rid of the "build directory" paths from parrot altogether.
Coke OBTW: 'make test' failing on feather because, I think, of the pre-installed 1.2.0 parrot. 20:06
japhb Coke: until a few minutes ago, we didn't have that component. We're still looking for the tickets. :-)
allison (there was a change proposed to have different search paths for the two, but it was rejected)
pmichaud i.e, we just include the install versions of the paths.
Coke I'm just saying, don't link to them, just tag 'em.
japhb Coke: can a report be embedded into a wiki page?
Coke japhb: embed? no clue. link to? sure.
going to yapc::eu?
purl it has been said that going to yapc::eu is (: going to YAPC::EU 2009)
Coke going to yapc::eu 2009?
purl going to yapc::eu 2009 is ash or BinGOs
Coke going to yapc::eu 2009 is also maybe coke
purl okay, Coke.
allison pmichaud: yes, that's perfectly possible, since the search paths respect the 'prefix' config option
jonathan going to yapc::eu 2009 is also jnthn
purl okay, jonathan.
Coke I just found out I'll be in the UK the week before. 20:07
japhb Coke: I'd prefer if they weren't a link apart. I'll see what embedding is available.
pmichaud at any rate, from a hll implementors perspective, it would be far simpler if the relative paths for components (e.g., nqp and perl6grammar) were identical for built and installed versions of Parrot.
japhb Coke, Tene: In the mean time, I'll change the Component for the tickets we know about.
Tene: What were your findings on #744?
Tene japhb: still segfaults
purl No whammies!
allison pmichaud: so, all that's actually stored is 'library/' or 'dynext/', and the 'prefix' provides the rest of the path
Coke pmichaud: that's solved by making the build look like the install.
pmichaud Coke: that's what I'm advocating, yes. 20:08
Coke so let's make that the priority.
Tene allison: could parrot_config locate the prefix it's currently running from at runtime?
Coke then maybe the config stuff will fall out of that.
pmichaud (afaik, I haven't been advocating anything else.)
Coke pmichaud: probably not. =-)
Whiteknight is heading home
Coke Whiteknight: no!
you stay right there.
Whiteknight !!!
Coke JK.
allison there's a tricky bit to making the build look like the install, though, and that is the clash between the parrot runtime directories and the C directories (we have two 'include' directories) 20:09
Whiteknight haha, later
pmichaud allison: (decoupling) Some things like makefile generation should be decoupled from parrot -- i.e., I expect languages to create their own tools for that (from examples that Parrot provides)
Coke allison: just have our "local install" go into blib
20:09 MoC joined
pmichaud that's because hlls and other users may have some heavy customization they need to do with makefiles 20:09
allison pmichaud: but dynpmcs and dynops are makefiles
Tene I discovered today that cloneflags.pasm isn't installed. Is this an issue? 20:10
pmichaud I think that dynpmc and dynop generation ought to be tools that Parrot provides
and *not* be pure makefiles
because the generation of dynops and dynpmcs is heavily dependent on configuration information that's not easily managed in makefiles
jonathan That's what the (now deprecated) tool for them did, IIUC?
allison pmichaud: they're just a series of generated and compiled files, with dependencies on what should be built first 20:11
20:11 brbrooks joined
jonathan (e.g. the one that Rakudo still uses...unless that's changed...) 20:11
pmichaud allison: what generates the files?
allison pmichaud: it seems a bit silly to reinvent makefiles
pmichaud we don't really need to reinvent makefiles here, though. 20:12
allison pmichaud: it's pretty much exactly like PGE
pmichaud I don't understand "exactly like PGE"
allison pmichaud: you call a script to process some syntax
pmichaud: it generates a more general form, which is then compiled
pmichaud I'm saying that script ought to be one level higher than it is now
allison the script should generated the C code and compile it? 20:13
s/d//
pmichaud yes. or the script should generate the makefile
but having the hll implementor manually maintain the makefile is asking for lots of difficulties
allison I'm in favor of generating the makefiles, perfectly possible
but, then we have some makefiles generated by Parrot and some not
pmichaud well, that's why I think the tool should just do the compilation oughtright. 20:14
*outright
it's not too much of a stretch to think of pmc2c as becoming pmc2lib
or something that directly compiles *.pmc files into the library form.
allison that is what the old tools did, but they kept getting the dependencies wrong, because they were a perl script trying to act as a Makefile
pmichaud I'd say to fix the old tools then (more) 20:15
in particular, I don't see an advantage to breaking up the .c .o .lib dependencies
allison that's the way makefiles work
pmichaud but they don't have to
(more)
allison each file generated is a target, so it can check if it's changed
pmichaud it's perfectly possible to write a target that goes completely from .pmc to .o 20:16
without having to write the intermediate target for .c
allison yes, but that's a bad makefile, it has to recompile from source every time
pmichaud isn't that the case anyway?
allison if the .o file hasn't changed since the last compilation, it doesn't have to recompile it to build the .lib 20:17
pmichaud right, but the dependency for the .o can be the .pmc file, not the .c
20:17 Zak joined
allison sure, it can 20:18
pmichaud speaking from an hll perspective at the moment, though, I think I'd rather have a change to a .pmc cause recompilation of all files than to have to worry about managing many individual dependencies myself
especially if/when I have .pmc files that depend on other PMCs, and those have to be linked properly.
allison so, you'd write your makefiles that way
pmichaud the issue is that writing those makefiles is very prone to error at the moment. 20:19
allison that's the advantage of leaving languages free to write their own
it's a choice between freedom and the ease of a blackbox 20:20
pmichaud right now compiling ".pmc" files feels like it ought to be a blackbox
I don't see where making it non-blackbox provides any real advantages to hll implementors.
allison I suspect we'll never write tools that satisfy every language implementor, but I still think it's worth providing tools to make it easy 20:21
pmichaud right.
allison easy for the default case
japhb allison: Does it need to be a choice that Parrot makes? If Parrot provides the blackbox tool, then the HLL can use it ... or not, if they want to Makefile-to-the-metal
pmichaud so I'd like a tool that makes pmc and ops generation simple
japhb nod
allison then I'd go for a makefile generator tool
pmichaud much like what we have now in the build tree that Rakudo is using
allison you never have to look at the makefile if you don't want to, it'll just be generated for you 20:22
pmichaud in current Rakudo trunk, it's nice because we just list the *.pmc files in our Makefile and the libraries get compiled automatically
allison but, it's there if you want to modify it
pmichaud we don't have to deal with any separate makefiles at all
allison pmichaud: aye, that's the old tools, but they will never work from an installed parrot
pmichaud i.e., Parrot (build) provides tools to go directly from .pmc to *.so 20:23
can we make tools that would work from an installed parrot?
allison now
no
pmichaud why no?
allison they're a perl script that's template generated using hard-coded build paths
okay, there's one way you could save it
pmichaud can we make a perl script that doesn't have hard-coded build paths?
allison do the template generation of the perl script in Rakudo, instead of in Parrot 20:24
pmichaud: not in Parrot, no
pmichaud allison: why not?
allison clarify: someone could write a script like that, yes, but they wouldn't be using any of the existing code 20:25
pmichaud presumably they would re-use pmc2c.pl and ops2c.pl (the libraries), though, yes?
allison and, adding more magical, blackbox, unmaintainable perl scripts is really undesirable at this point 20:26
pmichaud let me try this approach
(writing nopaste)
allison pmichaud: well, no, I mean the original was just calling those scripts 20:27
pmichaud: see tools/build/dynpmc.pl
pmichaud: it really was literally a Makefile written in Perl
pmichaud: entirely unnecessary, and buggy as heck
nopaste "pmichaud" at 72.181.176.220 pasted "ideal makefile entries for dynops and dynpmcs" (5 lines) at nopaste.snit.ch/17071 20:28
pmichaud ideally that's what I think what a hll implementer should use to compile dynops and dynpmcs 20:29
allison how is pmc2lib supposed to figure out what the individual pmcs are? 20:30
pmichaud so that if I have a new .pmc file, I just update PMC_SOURCES and then "make"
because the individual pmcs would be given by PMC_SOURCES
nopaste "NotFound" at 213.96.228.50 pasted "Patch for TT #794: fix and test" (68 lines) at nopaste.snit.ch/17072 20:31
NotFound Is that tne intention of the ticket?
chromatic Looks right to me, NotFound.
allison pmichaud: what about additional C dependencies? 20:32
pmichaud allison: I haven't run across those yet (more)
I admit that they may occur. But thus far in Rakudo we haven't run across them nor do we expect to anytime soon.
jonathan allison: buggy as heck? It's been building Rakudo's dynpmcs for months...
allison pmichaud: I'm trying to be convinced, I just can't see that pouring the effort into writing pmc2lib is worth it to avoid a simple makefile
pmichaud allison: I'd agree if the makefile were simple. 20:33
The makefile is not simple.
The makefile is quite complex.
allison jonathan: look back over tickets that tried to change it in any way, it's ossified
pmichaud: aye, but the makefile is also formulaic, it can be generated 20:34
Tene pmichaud: can you show what the makefile needs to look like without pmc2lib?
pmichaud Tene: code.google.com/p/partcl/source/bro...les/pmc.in 20:35
Tene Coke++
chromatic That could be simpler with rules for .pmc .c and .dump files... except that the rules for .c files there might conflict with the rules for .c files elsewhere. 20:36
allison pmichaud: that is, I could give you a similar script to call in the config file "$tools_dir/pmc_makefile" passing it the same list of *.pmc files and the desired directory name
NotFound Can I commit that right now, or it risk to break something in some HLL?
pmichaud there's also the issue that some .pmc files depend on others 20:37
which the makefile for tcl doesn't seem to illustrate
allison though, what do we do when some languages are using the Perl .pmc generator while others are using the PCT-based one?
if it's all central, it's harder to make the migration optional 20:38
(or gradual)
pmichaud Rakudo's ins branch attempts to simplify what tcl did a bit: github.com/rakudo/rakudo/blob/ins/b...akefile.in 20:39
(line 365)
(actually, lines 365-372)
allison pmichaud: that looks good 20:42
pmichaud except I don't like the *.c (might not be portable)
and it fails on certain platforms, as described by adougherty++
because the LD_OUT macro doesn't expand properly on certain systems 20:43
and LIBPARROT doesn't properly handle the #IF(parrot_is_shared) option that tcl is using.
allison on LD_OUT: aye, that's usually why we end up using the simplest possible Makefile syntax 20:44
pmichaud I'd prefer to be able to create Makefiles that didn't require the special #IF(...) preprocessing. 20:45
allison conditionals are useful in makefiles 20:46
and, it doesn't really provide good syntax for them internally
pmichaud right; the code that Parrot's makefile generator uses for handling conditionals feels bletcherous to me, though. 20:47
Tene *obviously* we need a Parrot-hosted 'make' replacement.
japhb Tene, Coke: How does this look? trac.parrot.org/parrot/wiki/HllInteroperability
pmichaud Tene: I disagree with that.
Tene pmichaud: Yes, so do I. I was trolling. :)
japhb The "General Issues" is an inline query, and the "Known Workarounds" is hand-edited
allison pmichaud: no arguments here, but does that mean we throw it out or fix it? 20:48
Tene japhb: nice. :)
chromatic You don't think this whole system is bletcherous? (more)
allison pmichaud: another rhetorical question
pmichaud: we need conditional makefiles for Parrot, and they aren't going away
chromatic We use a Perl 5 system to write and run C code to probe system capabilities, then write a Makefile which calls Perl 5 code to run a C compiler and linker to build Parrot and Parrot extensions.
pmichaud allison: yes, but you're also saying that every hll needs conditional makefiles. 20:49
dalek tracwiki: v9 | japhb++ | HllInteroperability
tracwiki: trac.parrot.org/parrot/wiki/HllInt...ction=diff
allison pmichaud: so, we will have to fix the processing. That doesn't mean every hll has to use it.
pmichaud hll's have to do something to be able to handle those conditions, though, yes?
i.e., they might not use conditional make files, but they have to implement their own equivalent mechanism for handling it?
allison hmmm... well, I'll go so far as saying building C code using Parrot will always require knowing whether parrot is shared or static, yes 20:50
pmichaud it's more than that -- the ops generation requires knowledge of all of the available runcores 20:51
allison that too
pmichaud which means that when Parrot gets a new runcore, I have to update my Makefile
allison or, rerun the script that generated the makefile
which should probably be run as part of Configure.pl 20:52
pmichaud and then re-apply any local patches I had made
Tene allison: pynie isn't even using a makefile... would pynie just have to reimplement everything?
allison Tene: yup, pynie uses python build infrastructure
20:52 Theory joined
Tene So Parrot just wouldn't offer anything here to pynie, with your scheme? 20:52
allison Tene: it'll likely eventually use autoconf
pmichaud I'll be curious to see pynie make use of dynpmcs and/or dynops :-) 20:53
allison Tene: aye, so you can see why I'm less inclined to favor the "centralized language build infrastructure"
pmichaud: it's just a simple series of calls to scripts and c compilers 20:54
Tene Hmm, okay.
allison any build system can do it
pmichaud I'm not at all claiming that parrot should centralize the entire build. I'm simply saying we should give a slightly higher level of abstraction for dynpmcs and dynops
allison it just strikes me as a difficult solution to a simple problem 20:55
dalek kudo: fbc5428 | jnthn++ | src/ (6 files):
Factor out type check error generation to one place and use it consistently. There are improvements we need to do to the reporting, but at least now we need to fix it in one place and the errors will now all consistently contain the type we got and the type we expected.
pmichaud allison: fair enough (more)
allison I wouldn't object if someone wants to write it, but there are other places I'd rather see the effort go
pmichaud I think we're in agreement there (more)
it sounds like you're not unalterably opposed to it, but you're not wanting to dedicate resources to it when there are other priorities
I can't disagree with that 20:57
I don't disagree with that
mikehh allison: make html - Failed to process docs/book/draft/ch03_pir.pod.
chromatic The sooner we can stop writing ops and PMCs in C, the sooner this problem goes away.
allison mikehh: thanks, will fix
pmichaud so while I'd like to see something cleaner, I'm not personally wanting to dedicate a lot of time to it either, which means we should leave things as they are now (even if somewhat more painful for makefile management in hlls) and focus on other priorities. 20:58
allison pmichaud: I guess at this point what I'd say is to think about modularity as you switch Rakudo off the old tools
pmichaud: whatever you develop may get "cannonized"
er, canonized :)
pmichaud allison: that's exactly how I was thinking.
which is why I didn't like the possibility of canonizing the ugly makefiles.
I also didn't want to complicate the gen_makefile.pl script that Rakudo uses with conditional handling, but it looks as though I will have to do that. 20:59
either that or we get Rakudo to use Parrot's gen_makefile.pl script.... but that's just putting a different parrot dependency in place. 21:00
(i.e., building Rakudo would still depend on a parrot tool)
allison yeah, it's a tossup there
pmichaud so I think the answer to your earlier question is that we have to "fix conditional handling of makefiles" 21:01
allison it's a pretty light tool, but it does use some Perl libraries from Parrot's build system
pmichaud I was hoping to avoid that, but the only other option is to make it possible to create dynops and dynpmcs w/o conditionals (which doesn't seem likely at this point) 21:02
allison is that something we could get a volunteer working on? or do you have a pretty clear idea how to fix that chunk of code?
pmichaud ideally I'd want a gen_makefile.pl to not have any dependencies on the Perl libraries in Parrot's build system 21:03
or, if we expect hll implementors to be using Parrot's copy of gen_makefile.pl, then we should put it on a deprecation cycle and document its API
we also need to document and explain the pmc2c and ops2c scripts. 21:04
(and they need to be on the deprecation cycle as well)
allison mmm... in that case, I'd just update your gen_makefile.pl
and we can review it as a candidate replacement for the existing gen_makefile.pl 21:05
though, the existing one is just a few lines long
pmichaud okay, so planning (more) 21:06
allison and has the advantage of not duplicating code (even if the code it's not duplicating is kind of ugly, at least it's ugly once instead of ugly twice)
pmichaud I'm probably not going to want to switch rakudo to using Parrot's gen_makefile.pl, for the modularity issue you mentioned above (and other reasons)
so, I'll look into updating Rakudo's makefile generation (and its tool)
but I'd really like to see that Parrot's build/install layout get cleaned up first 21:07
so that we're not having to do a bunch of conditionals along the lines of "if this is an install, do XYZ, otherwise do ABC"
allison I don't have a list of where all those differences are 21:08
but could probably find them pretty quickly trying to build Rakudo off an installed Parrot 21:09
pmichaud I think if we just take the approach of having Parrot's "make" put everything into an install-template
then we'll remove the differences in the first place
at least, we'll remove the bulk of them.
currently the "ins" branch in Rakudo is able to build Rakudo from an installed parrot, but the fakecutable still depends on the build tree being present 21:10
21:10 amuck_ joined
pmichaud (like Tcl, though, the "ins" branch can only build from an installed parrot -- it's not possible to build Rakudo from a build-copy of parrot) 21:10
21:11 Whiteknight joined
allison yes, the fakecutables still don't work without the build directory 21:12
pmichaud: we're basically looking at something like the DESTDIR option being turned on all the time 21:13
21:13 zak_ joined
allison or, 'make disttest' 21:14
spinclad 'make build; make DESTDIR=<build> test' v. 'make build; make install; make DESTDIR=<install> test' 21:17
and at some stage one can check, with strace or such, that all component accesses look to the right DESTDIR. 21:19
21:19 abesapien joined
pmichaud anyway, as a general item I should probably note that my tuits for parrot core development are likely to be somewhat limited for the next few months. My Hague grant has been starved for resources while I've been dealing with install/build/packaging/other issues in Rakudo, and I need to get moving on the Hague grant (because without it I have no income at the moment). 21:20
Util pmichaud: [nopaste 17070] Besides changing `git@` to `git://` in the `git clone`, I followed your instructions exactly, on both Darwin and Linux. 21:21
All three tests report `ok` in `./perl6` and `parrot/parrot perl6.pbc` runs of t/01-sanity/07-isa.t, on both systems.
Further info: on Darwin, `make spectest` only fails t/spec/S12-enums/basic (Failed test: 27) and t/spec/S32-num/rand (Parse errors: Bad plan. You planned 110 tests but ran 106.)
Linux `make spectest` has not completed.
Cannot proceed with investigation :(
pmichaud Util: what Linux? 21:22
purl Linux is linux is linux by another name. or 80% of the world's top 500 super computers right now and the number one embedded system broadcast.oreilly.com/2008/10/how-l...evice.html
pmichaud (tuits) I do still expect to be able to complete the hll-interop items, as they directly affect Rakudo, but troubleshooting install/core issues may be more difficult for me to come by. 21:23
Util pmichaud: Mandrakelinux release 10.1 (Community) for i586
Linux version 2.6.8.1-10mdksecure (nplanel@n3.mandrakesoft.com) (gcc version 3.4.1 (Mandrakelinux (Alpha 3.4.1-3mdk)) #1 SMP Wed Sep 8 16:46:40 CEST 2004
pmichaud util: okay, I'm on kubuntu 9.04 (i386) 21:24
I'll try on 64-bit just to see if I get anything different.
I'm not sure what masak++ is running, but he noticed similar errors today.
jonathan allison: Are you currently expecting to have some Parrot-y meetup in the day or two after YAPC::EU? 21:25
allison: Basically it's easy for me to be there on the Thursday, and a little less convenient but possible for me to be there on the Friday.
But I need to find/book a flight, so would be good to have an idea. 21:26
pmichaud Util: can you verify the revision of Parrot that you got? parrot/parrot_config revision 21:28
Util pmichaud: 39846 on both Darwin and Linux 21:29
pmichaud okay.
I'm stumped, then.
let me see if I can duplicate on another platform somewhere.
Util: on my 64-bit box (using the git://... address) it compiles and runs fine. Let me try again on my 32-bit box. 21:33
nopaste "mikehh" at 86.150.205.31 pasted "codetest failure from make fulltest at r39847" (29 lines) at nopaste.snit.ch/17073 21:34
"mikehh" at 86.150.205.31 pasted "PATCH for codetest failure at r38947" (17 lines) at nopaste.snit.ch/17074 21:35
mikehh codetest passes with the patch
chromatic +1 on the patch 21:36
Infinoid mikehh: Thanks, applied as r39849 21:38
dalek rrot: r39848 | Infinoid++ | trunk/t/op/integer.t:
Apply integer.t_to_pir.patch from flh++ in TT #796.
rrot: r39849 | Infinoid++ | trunk/docs/book/pir/ch06_subroutines.pod:
Apply patch from mikehh++:
allison jonathan: yes, thursday sounds good 21:39
21:39 amuck__ joined
allison jonathan: my schedule is pretty flexible, but it's likely that I'll want to get on the road Friday too 21:40
dalek TT #796 closed by Infinoid++: Rewrite globals.t and integer.t in PIR
jonathan allison: OK, that's helpful to know. 21:41
Whiteknight Infinoid: what do we need to do to get io_cleanups knocked out? I feel like you have a better idea about what needs to be done then I do
jonathan allison: I'll be around all conference too; I'm sure there'll be some degree of hallway track. :-)
I'll probably arrange to head off on Friday too.
allison pmichaud: yes, that's reasonable. Fortunately I'll have a pile more time for Parrot core starting in late July
jonathan: I may be doing all hallway track at YAPC::EU 21:42
jonathan allison: Sure. I'll probably just take things as they come...
allison jonathan: hmmm... are they doing hacking rooms again this year? that was very useful
Whiteknight (more time for Parrot core)++
Infinoid Whiteknight: Lemme swap that back into my poor little brain
jonathan allison: They may be, but I dodn't remember reading anything of that. 21:43
Infinoid Whiteknight: (I know the feeling, I haven't found any chunks of time for parrot greater than 5 minutes for the last week or more
Whiteknight: )
allison jonathan: I guess it entirely depends on the space. Braga had great space for sitting out and hacking, Vienna less so, Copenhagen very little. It's an adventure. :) 21:44
jonathan :-)
jonathan is looking forward to it. 21:45
pmichaud Util: now I find I'm unable to duplicate the error I was getting earlier. I have no clue why. Earlier I started from a completely fresh checkout as well. 21:49
Whiteknight would love to make it to YAPC::EU sometime 21:50
pmichaud oh, wait, I might've tested the wrong one. 21:54
Infinoid Whiteknight: Ok. To get this working, Pipe needs an additional ATTR to store a child process pid. This should be initialized to -1 or some arbitrarily chosen win32-friendly value. If the destroy() method detects a sane pid, it should call an OS-specific child process cleanup function 21:55
dalek tracwiki: v79 | whiteknight++ | WikiStart
tracwiki: Add a link here to a page about installation. This may be the wrong page, somebody please correct me if so
tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff
Infinoid We don't have a Parrot_waitfor() but we might consider adding one for this
rather, PipeHandle needs these things, not Pipe 21:56
Whiteknight okay, that all sounds reasonable
I wouldn't know how to write Parrot_waitfor(), would you know how to do that?
Infinoid yeah. The relevant code is already there in src/io/unix.c and src/io/win32.c 21:57
Whiteknight oh, okay
Infinoid It's just terribly FileHandle-specific at the moment
Whiteknight what about other systems then, is there an equivalent for portable.c?
Infinoid I don't know. I think fork() and pipe() are also missing in that case 21:58
Whiteknight ok
21:58 bacek_ joined
Infinoid oops. s/waitfor/waitpid/ 21:59
Whiteknight Infinoid: what should the type of this new ATTR be, PIOHANDLE?
because Win32 doesn't really have much notion of pids
Infinoid Sure it does, you can see them in the Task Manager if you enable that column
Judging from Parrot_io_close_win32(), it looks like a HANDLE, so if that's what PIOHANDLE wraps, it should work fine 22:00
INTVAL procid = VTABLE_get_integer_keyed_int(interp, filehandle, 0);
HANDLE process = (HANDLE) procid; 22:01
WaitForSingleObject(process, INFINITE);
that's beautiful. HANDLE is a pointer, isn't it?
CloseHandle(process);
Whiteknight well, let me rephrase that. Win32 has pids, but uses HANDLE to keep track of child processes 22:02
pmichaud Util: Just confirming that I'm unable to duplicate the errors I saw before. I'll keep an eye out for the problem and let you know if they arise again.
mikehh smolder don't seem to be talking to me again
sorry it just responded 22:03
Infinoid Whiteknight: thanks, win32 confuses me :)
NotFound CreateProcess returns a handle for the process and other for his main thread. The thread handle is closed during open, for simplicity.
mikehh pre/post config, smolder, fulltest All PASS at r39849 - Ubuntu 9.04 amd64 22:16
Whiteknight Infinoid: how do we wait in Unix?
what's the equivalent to WaitForSingleObject?
Infinoid waitpid()
purl waitpid() is probably the way to go if you need to just hang around waiting.
Infinoid Parrot_io_close_unix() has the equivalent to the above code 22:17
Whiteknight do we have any test systems where the portable.c stuff is actually used?
Infinoid I don't know of any. I've been wondering that for a while now 22:18
If I understand correctly, portable.c is just stdio, but unfortunately, stdio is limited to simple file access, and doesn't try to handle child processes or sockets or pipes or threads, so we still need something OS-specific to handle those things 22:20
NotFound There is the popen call, but if a system has it probably also has fork and pipe.
Whiteknight okay, I have a commit coming through now that adds a child PIOHANDLE to PipeHandle 22:21
now we just need to find places to set this value (Parrot_io_open?)
Infinoid hmm, interesting. the popen() manpage claims to be POSIXful
PipeHandle.new() and overridden by Parrot_io_open_pipe_* I guess 22:22
dalek rrot: r39850 | whiteknight++ | branches/io_cleanups/src (2 files):
[io_cleanups] add a child PIOHANDLE to PipeHandle PMC, to keep track of a child process that is attached to the pipe.
22:23
Whiteknight you want to prototype something for it, or are you going to leave me to fumble around in the dark with it? :) 22:24
Infinoid heh, I've still got the editor window open with fixups for Parrot_io_open_pipe_unix 22:25
Whiteknight does it make sense to ever create just a PipeHandle, or do we always create an entire Pipe? 22:27
NotFound Are you planning to go to Lisbon? If you break my pipe implementation, I don't recommend you go to a place near me }:)
Infinoid creating a PipeHandle does not make sense, as it won't be connected to anything.
hmm.
Whiteknight Okay, I'm trying to modify the logic in Parrot_io_open that creates a new FileHandle by default if a PMC is not provided 22:28
I want to create a Pipe instead then if the PIO_F_PIPE flag is specified
Infinoid I suppose you could optimize this case a little bit by only creating *one* of the PipeHandles yourself, if the other one will just be freed
But in the open() case, the other side of the pipe is just gonna call exec() anyway, so I doubt it's worth the trouble of freeing it properly
Whiteknight really needs to read this whole Pipe/PipeHandle implementation a little closer to figure out what is happening 22:29
Infinoid Pipe/PipeHandle are pretty basic, I think the real beef is in the pipe() manpage
22:30 Limbic_Region joined
Infinoid You're welcome to harass me if something doesn't make sense, though. That would mean I haven't written enough documentation :) 22:30
Whiteknight okay, so what happens when I type "$P0 = open 'perl -v' "rp"'? 22:31
what type should $P0 contain, a Pipe or PipeHandle?
Infinoid $P0 will contain a PipeHandle 22:32
Whiteknight okay, so Parrot_io_open should open and return a PipeHandle?
Infinoid open() will internally create a Pipe, fork a child, extract the fd from one of the PipeHandles and use Parrot_dup() semi-blindly, hoping it ends up as stdin or stdout (I think that can be done a little more nicely) and exec the child process 22:33
the parent process returns the other PipeHandle
uh, all that extract/Parrot_dup stuff happens in the child process prior to calling exec(). My sentence making sk1llZ are full of fail today. 22:34
22:35 rg joined
Infinoid It's basically the same thing the existing code already does, we're just doing it with PMCs now 22:36
NotFound You can use dup2 instead of dup to make more clear the intention. 22:37
Whiteknight okay, I added basic support to Parrot_io_open for pipes, take a look at this next commit to makes ure it's sane 22:40
dalek rrot: r39851 | whiteknight++ | branches/io_cleanups/src/io/api.c:
[io_cleanups] add basic preliminary logic to support for Pipes to Parrot_io_open. Probably doesn't work as-is
Infinoid Oh. Uh... 22:43
I've just been hacking Parrot_io_close_unix() to return a PipeHandle directly, I haven't looked at Parrot_io_open() yet
Looks like the flags handling stuff is going to need some help too tho, thanks for pointing that out
uh 22:44
Infinoid =~ s/Parrot_io_close_unix/Parrot_io_open_pipe_unix/
Whiteknight the logic in Parrot_io_open is a little lousy as-is, should probably refactor that function a little bit 22:45
Infinoid great. I've been avoiding it until later because it looked complicated :) 22:46
NotFound Whiteknight: I had the idea of doing that, but left it when you started to talk about refactoring handles.
Whiteknight hey, don't let me stop you, feel free to jump in!
NotFound I'll think about that tomorrow, now I go to bed :O 22:47
Whiteknight NO BED! HACK NOW! 22:48
bacek_ Good morning
purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
NotFound www.youtube.com/watch?v=56lF8E1psDU
Infinoid hai bacek_
bacek_ o hai, Infinoid
Infinoid <MCHammer> Stop. Sammich time! 22:49
22:59 Zak joined
Whiteknight hey, we just had sammiches too! 23:04
Infinoid Sammiches++ 23:06
Whiteknight actually, we've done sammiches two nights in a row now. BLT last night, chicken salad tonight
Infinoid gets an ENOMOARSAMMICH and returns to hacking parrot 23:08
chromatic Honeymoon's over?
Whiteknight no, we've both just been craving sandwiches 23:09
plus we've gotten some really ripe tomatoes, so we put them on everything
23:09 skids joined
Infinoid even chicken salad? 23:12
Whiteknight hellz yes. I make the best chicken salad too, and we put all sorts of stuff into it
tonight we did celery, craisins, and tomato 23:13
Infinoid cool.
jonathan Mmmm...celery. 23:14
23:14 amuck joined
jonathan hadn't been hungry until he just glanced at #parrot 23:14
Infinoid ok. I just need to do the child process part and then I'll have a patch that probably crashes gloriously
23:15 snarkyboojum joined
Infinoid Do you happen to know if the IO PDD mentions anything about open() and pipes mucking with stderr? 23:16
This code tries to direct both stdout and stderr to the pipe, which I'm not sure is common behavior.
(I don't see anything, so I'm thinking about ripping it out) 23:17
23:25 patspam joined, NotFound joined
Infinoid My eternal glory is somewhat delayed by the fact that I can't figure out the right path prefix for including a pmc_*.h header 23:28
Infinoid loves it when he forgets simple stuff like this. :) 23:29
Whiteknight I have no idea
chromatic: ping
Infinoid apparently when in src/io/, one must include "../pmc/pmc_foo.h" 23:30
chromatic pong 23:31
Whiteknight chromatic: about how many PMCs get allocated by Parrot on startup? have you seen any numbers like that in your profiling?
chromatic I can check quickly.
Whiteknight because it occurs to me that our initial mallocs should provide at least that many initially, so we don't run the GC on startup
chromatic 1147 to run "Hello, world" from PBC. 23:32
That's initialized PMCs. 23:33
305 constant (a different pool).
290 non-initialized PMCs (does not call VTABLE_init).
I don't expect a speedup making the initial arenas larger, though. 23:34
I'll give you a hint: free list.
Whiteknight if the initial arena is smaller, we have to do a full GC run first, then allocate a new arena, so I would expect some speedup
of course, it would be easy enough for me to test that... 23:36
chromatic A better speedup is not dumping everything from a new pool onto the free list first.
That means changing the code that grabs a new GCable to check the free list first, then if it's empty do a pointer bump in the fresh arena, and if it reaches the end, do a GC run. 23:38
nopaste "infinoid" at 173.75.243.238 pasted "[PATCH] [HALF-BAKED] This is the kind of thing I had in mind for child pipe creation" (127 lines) at nopaste.snit.ch/17076 23:40
Whiteknight chromatic: you're right, that's probably a good speedup too 23:49
that small algorithmic change might make for a great second core in the GC 23:50
Tene Whiteknight: your next big task is AIO, right?
chromatic Let's make that a second core so we can test it. 23:51
Whiteknight Tene: that's the plan, yes
chromatic: good idea
purl Whiteknight: Good Idea: Playing catch with your grandfather. Bad Idea: Playing catch >with< your grandfather.
Whiteknight I think we have a new hacker who's interested in helping out with GC too
haha! upping the initial allocation to 2048 PMCs sped up coretest on my system by 2 seconds 23:52
EAT THAT HATERS!
Infinoid haters? 23:53
purl i think haters is nom nom nom
chromatic Two seconds in coretest is noise.
Whiteknight yeah, I know
chromatic Mine varies anywhere between 40 seconds and 55.
davidfetter don't hate the parrot. hate the game 23:57
player* 23:58
Whiteknight WHO HATES PARROT?!?!