Camelia, the Perl 6 bug

IRC log for #parrot, 2010-09-03

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 cotto_work Paul_the_Greek: I doubt it unless you're talking about internal functions.
00:02 Paul_the_Greek chromatic: I don't think Boolean can be made appreciably faster by not inheriting from Integer.
00:03 Paul_the_Greek cotto_work: For example, Integer uses get_integer all over the place.
00:04 Paul_the_Greek Does that have to go through the vtable?
00:04 Paul_the_Greek I suppose it does.
00:04 chromatic It's not about faster but about smarter.
00:05 Paul_the_Greek chromatic: Smarter booleans? What do you mean?
00:06 cotto_work Also, it's possible that the compiler is inlining it already.
00:07 Paul_the_Greek But I was being stoopid. Of course get_integer has to go through the vtable in case an inheriting PMC overrides it.
00:07 dukeleto chromatic: very nice to see some graphical benchmark data
00:09 dngor left #parrot
00:09 dngor joined #parrot
00:09 Paul_the_Greek Percentage decrease would be nice to see.
00:16 chromatic Booleans shouldn't have to allocate any memory.
00:16 chromatic Use one of the PMC private flags to store its one-bit state.
00:16 Paul_the_Greek Ah, you're thinking we could get rid of the attribute block.
00:16 chromatic Exactly.
00:16 Paul_the_Greek There's a lot to be said for that.
00:17 Paul_the_Greek Okay, I'll continue my investigation to see how HLLs are using booleans.
00:17 Paul_the_Greek I'm betting some are relying on the integer-ish behavior of them.
00:18 Paul_the_Greek But they can't rely on that for boolean vectors, so perhaps it's okay to eliminate that behavior.
00:19 Paul_the_Greek Maybe any strange behavior can simply be merged into the smart boolean (e.g., negate).
00:20 dalek parrot: r48767 | bacek++ | trunk/src/string/api.c:
00:20 dalek parrot: Block GC in str_join to avoid premature collecting of temporary strings. Closes #1767.
00:20 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48767/
00:20 dalek parrot: r48768 | bacek++ | trunk/t/op/string.t:
00:20 dalek parrot: Add test for #1767.
00:20 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48768/
00:20 dalek TT #1767 closed by bacek++: join opcode causes segfaults and other memory corruption issues
00:20 dalek TT #1767: http://trac.parrot.org/parrot/ticket/1767
00:20 Paul_the_Greek chromatic: Would you add a new boolean pmc and eventually deprecate the current one, or just change the current one?
00:29 Paul_the_Greek left #parrot
00:30 chromatic msg Paul_the_Greek I'd change the current one.
00:30 purl Message for paul_the_greek stored.
00:35 davidfetter joined #parrot
00:35 whiteknight left #parrot
00:37 dalek parrot: r48769 | jkeenan++ | trunk/config/inter/progs.pm:
00:37 dalek parrot: Per discussion in �http://trac.parrot.org/parrot/ticket/854, revert code
00:37 dalek parrot: changes in r48758, deleting TODO item and replacing it with explanatory inline
00:37 dalek parrot: comment.
00:37 purl comment is pretty exhaustive, read it carefully
00:37 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48769/
00:38 pmichaud purl, your days are numbered. :-P
00:38 purl ...but purl's days is clearly numbered.  It's a sign....
00:38 purl ...but purl's days are clearly numbered.  It's a sign....
00:43 cotto ~~
00:48 davidfetter left #parrot
00:57 dalek parrot-linear-algebra: a78a64c | Whiteknight++ | setup.nqp:
00:57 dalek parrot-linear-algebra: fix the 'instructions' portion of the generated plumage metadata. NotFound++ for the catch
00:57 dalek parrot-linear-algebra: review: http://github.com/Whiteknight/parrot-linear-algebr​a/commit/a78a64c7d8a3dbdf6308ab0d02cdfecc9873a0f8
00:57 dalek parrot-linear-algebra: 1831e83 | Whiteknight++ | ports/plumage/parrot-linear-algebra.json:
00:57 dalek parrot-linear-algebra: regenerate the plumage metadata file
00:57 dalek parrot-linear-algebra: review: http://github.com/Whiteknight/parrot-linear-algebr​a/commit/1831e83e698bf5a5cc59c83d277b4fbbf6dc3f2c
00:57 dalek parrot-linear-algebra: 8b3241e | Whiteknight++ | s (7 files):
00:57 dalek parrot-linear-algebra: Merge branch 'master' of github.com:Whiteknight/parrot-linear-algebra
00:57 dalek parrot-linear-algebra: review: http://github.com/Whiteknight/parrot-linear-algebr​a/commit/8b3241e735b4fad0b50164a7d2f4d859531b616c
00:57 dalek parrot-linear-algebra: cfcbcb1 | Whiteknight++ | / (6 files):
00:57 dalek parrot-linear-algebra: boxing primitive types respects HLL mappings. Untested
00:57 dalek parrot-linear-algebra: review: http://github.com/Whiteknight/parrot-linear-algebr​a/commit/cfcbcb1ef84c2434a6461be9ff1e1a9fa29f9831
00:57 Psyche^ joined #parrot
00:57 Psyche^ is now known as Patterner
01:04 GeJ left #parrot
01:04 GeJ joined #parrot
01:14 theory left #parrot
01:17 bacek_at_work aloha, karma whiteknight
01:17 aloha bacek_at_work: whiteknight has karma of 4.
01:24 fedov left #parrot
01:25 * kid51 , ever the contrarian, has few problems with purl
01:26 * kid51 feels lonely when purl is not around
01:27 GeJ seconded.
01:35 pmichaud purl would be fine if it spoke only when spoken to.  :)
01:35 purl pmichaud: huh?
01:36 bacek_at_work insult purl
01:36 aloha purl is nothing but a vain half-mouthful of beslubbering entrails.
01:39 GeJ purl: don't listen to them hun', they're just being mean.
01:39 purl GeJ: huh?
01:39 GeJ sigh
01:40 * kid51 will consider aloha an improvement over purl only if it talks back to me in Russian
01:42 * cotto will consider aloha an improvement if he doesn't respond to "+1" with "1"
01:44 theory joined #parrot
01:48 bluescreen left #parrot
02:18 tcurtis joined #parrot
02:31 kid51 left #parrot
02:35 janus left #parrot
02:42 janus joined #parrot
02:56 bacek_mobile joined #parrot
02:57 bacek_mobile http://github.com/parrot/pir
02:58 bacek_mobile I moved pirate to parrot organization on github.
02:58 bacek_mobile Hooray?
02:59 cotto hooray!
03:26 tetragon left #parrot
03:34 wagle left #parrot
03:44 wagle joined #parrot
03:51 pmichaud (r48768)  blocking gc for the duration of the join obviously is a sufficient workaround... but somehow I worry that's not a good overall answer.
03:51 chromatic Likewise.
03:51 pmichaud I mean, if we're concatenating a million-element array, we end up with a million strings
03:52 pmichaud that aren't gc'ed until the join is finished.
03:54 pmichaud however, I'll note that disabling gc during join did indeed solve the issue we were seeing in rakudo (at least from the tests I've run).  I'm spectesting now.
03:56 chromatic Only the transcoding should change things.
03:56 pmichaud ?
03:56 pmichaud I don't understand.
03:57 chromatic The only thing that could generate a STRING that isn't otherwise reachable is the case where we have to transcode STRINGs.
03:57 pmichaud or if we're stringifying non-string elements, yes?
03:57 chromatic src/string/api.c:3304
03:57 chromatic Hm, I suppose so yes.
03:57 pmichaud (which is the exact case here)
03:58 chromatic I assumed it was an RSA, but nothing forces that.
03:58 pmichaud so, a join of a million integers results in a million strings
03:58 pmichaud (with gc disabled)
03:58 chromatic That's partly because Parrot_str_from_int() is silly.
03:59 chromatic Then again, the optimization I had in mind that I didn't mention and you're certainly not thinking of doesn't help that pathological case of 1 .. *
04:00 bacek_mobile Vtable-get-string generates temporary.
04:02 dalek github-trac: a6f5f15 | cotto++ | github/hook.py:
04:02 chromatic I'm at the point of arguing that Parrot_str_join() ought to be less complex even if it means reallocating the destination a couple of times.
04:02 dalek github-trac: silly typo fix
04:02 dalek github-trac: review: http://github.com/cotto/github-trac/commit​/a6f5f150bacd1bd6c505d12e915f2201be27528b
04:02 pmichaud I was thinking something similar.
04:02 chromatic It's a lot less code, and we can reliably disable the GC.
04:02 chromatic Er.
04:03 chromatic We can rely on GC working properly.
04:03 pmichaud afk, errand.
04:06 chromatic The function is 108 lines (counting blank lines and comments)... it could be a third that size.  I'm game, unless someone beats me to it.
04:06 bacek_mobile We can switch to StringBuilder now
04:08 chromatic Oh yeah, you mentioned that too.
04:12 chromatic StringBuilder gets init_pmc(), hooray!
04:28 mikehh_ joined #parrot
04:30 mikehh left #parrot
04:30 mikehh_ is now known as mikehh
04:30 mikehh opbots, names
04:35 Andy joined #parrot
04:40 dalek rakudo: 1e56d20 | pmichaud++ | build/PARROT_REVISION:
04:40 dalek rakudo: Bump PARROT_REVISION to get pir::join opcode fix (TT #1767).
04:40 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​e56d206cd7c814336a813a8985e1209c05a0b3b
04:41 tcurtis I finally finished my valgrind run of the rakudo spectests.
04:41 chromatic What's the damage?
04:41 purl age is probably not valid, so it's not backwards
04:42 * pmichaud wonders how chromatic's comment leads to purl's response.
04:42 chromatic the damage?
04:42 purl rumour has it age is not valid, so it's not backwards
04:43 pmichaud I also have trouble envisioning "valgrind" and "spectest" in the same thoughstream, so tcurtis++  :-)
04:48 tcurtis Now to look at the some amount less than 31K lines of backtraces.
04:51 hercynium left #parrot
04:58 tcurtis Is there an option to grep that causes it to print lines that don't match the pattern?
04:58 bacek_at_work grep -v
05:00 tcurtis Thanks.
05:00 * tcurtis failed at man-page-reading.
05:00 tcurtis bacek++
05:07 cotto explain bacek
05:07 aloha positive: | trunk/src/string/api.c: (dalek), | trunk/t/op/string.t: (dalek), : join opcode causes segfaults and other memory corruption issues (dalek); negative: nothing; overall: 5.
06:16 Andy left #parrot
06:18 bacek_mobile left #parrot
06:25 uniejo joined #parrot
06:36 chromatic left #parrot
06:36 dalek parrot: r48770 | NotFound++ | trunk/t/pmc/exception.t:
06:36 dalek parrot: test Exception get/set attribute handler_ctx
06:36 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48770/
06:38 theory left #parrot
06:44 fperrad joined #parrot
06:56 dalek github-trac: e12d18d | cotto++ | github/ (2 files):
06:56 dalek github-trac: add and fix checks for the enable_revmap config option
06:56 dalek github-trac: review: http://github.com/cotto/github-trac/commit​/e12d18df6fe32916149da9d047dec7a385283fd0
06:56 dalek github-trac: 84eac6c | cotto++ | github/github.py:
06:56 dalek github-trac: rollback db to undo any goofiness caused by looking for a nonexistent table
06:56 dalek github-trac: review: http://github.com/cotto/github-trac/commit​/84eac6cc21c5f6862967a44e4a930e8c12c8c2d4
07:37 nopaste "NotFound" at 192.168.1.3 pasted "Another blizkost example: using Gtk2 from winxed" (57 lines) at http://nopaste.snit.ch/23221
07:39 NotFound That,s language interoperability!
08:05 moritz what does the 'using destroy;' do?
08:15 cotto trac--
08:15 cotto trac--
08:15 cotto trac--
08:15 cotto trac--
08:15 cotto stupid subtly different db interfaces
08:21 cotto my, what a pain that was
08:21 sorear NotFound: Nifty.  I'm suprised it worked at all
08:23 dalek github-trac: 88444aa | cotto++ | github/github.py:
08:23 dalek github-trac: fix and simplify the table creation code
08:23 dalek github-trac: review: http://github.com/cotto/github-trac/commit​/88444aa3ae83ae92a9006f4892606c2291fbef95
08:24 dalek github-trac: 769c04f | cotto++ | github/github.py:
08:24 dalek github-trac: be more forgiving when looking up commit ids
08:24 dalek github-trac: review: http://github.com/cotto/github-trac/commit​/769c04fa06276fa42321bb0be8217b12563a6625
08:24 dalek github-trac: 846c629 | cotto++ | github/github.py:
08:24 dalek github-trac: tighten up regexes a little
08:24 dalek github-trac: review: http://github.com/cotto/github-trac/commit​/846c62993f26efa6ffa80a0c4246ce87b9eea823
08:24 dalek github-trac: 25c3650 | cotto++ | github/github.py:
08:24 dalek github-trac: fix db queries to work as trac expects, not just as sqlite happens to accept
08:24 dalek github-trac: review: http://github.com/cotto/github-trac/commit​/25c3650abd8b742377a9f4ba04efea2aae6de36c
08:24 cotto time to see if it'll run on my server
08:33 cotto The osuosl people are way better at setting up trac than me.
08:36 cotto http://mksig.org/trac/wiki/WikiStart
08:37 cotto It's slow because my vm is grossly underpowered for trac.
08:37 cotto u/p of parrot/parrot if anyone wants to play with it
08:38 cotto and I'm off to bed
08:39 szbalint cotto: how do you integrate trac with git?
08:39 szbalint any good way to handle multiple branches?
08:39 szbalint ah. good night :)
08:40 aloha left #parrot
08:42 bacek left #parrot
08:49 fperrad_ joined #parrot
08:53 fperrad left #parrot
08:53 fperrad_ is now known as fperrad
08:59 cotto left #parrot
09:09 tcurtis left #parrot
09:12 cotto joined #parrot
09:54 cotto left #parrot
09:58 dalek rakudo: 5ae715c | colomon++ | t/spectest.data:
09:58 dalek rakudo: Turn on S03-operators/comparison.t.
09:58 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​ae715c7b79ad0dbd983eef0da2f5fc9bc6ce80a
09:58 dalek rakudo: c9eac47 | colomon++ | src/core/operators.pm:
09:58 dalek rakudo: Fix the Any versions of the numeric comparison operators to forward to the Numeric versions.
09:58 dalek rakudo:
09:58 dalek rakudo: If you are doing a numeric comparison of non-Numeric types, this will be slightly slower but handle edge cases correctly.
09:58 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​9eac474d0c8bf3349c83762645ae9df1da42fd6
10:08 cotto joined #parrot
10:58 nwellnhof joined #parrot
11:12 dalek parrot: r48771 | NotFound++ | trunk/t/src (2 files):
11:12 dalek parrot: rearrange remaining test in src/extend and sr/warnings to make its coverage reports more useful
11:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48771/
11:33 jsut joined #parrot
11:38 jsut_ left #parrot
11:49 whiteknight joined #parrot
11:55 whiteknight good morning, #parrot
11:56 moritz good morning white knight
11:57 whiteknight hello moritz. How are you today?
11:58 moritz I'm fine, thanks. It's Friday afternoon, and the weekend is aproaching rapidly
11:58 whiteknight yes. that fact brings me hope as well
11:59 moritz and I have the luxury of having patches in the fork queue that I can review
11:59 whiteknight ah, nice. This weekend is going to be busy for me. probably won't have a lot of time for mad haxxoring
12:01 whiteknight that makes me a sad whiteknight
12:02 moritz happens from time to time :-)
12:03 moritz next weekend (ie the one of the Sep 11) will be busy for me
12:12 tadzik joined #parrot
12:12 ruoso joined #parrot
12:35 dalek TT #854 closed by jkeenan++: config/inter/progs.pm:  Figure out why -libpath: needs to be removed from ...
12:35 dalek TT #854: http://trac.parrot.org/parrot/ticket/854
12:36 tadzik left #parrot
12:37 bluescreen joined #parrot
12:37 dalek parrot: r48772 | jkeenan++ | trunk/config/inter/progs.pm:
12:37 dalek parrot: Further refinement of inline comment per doughera++.  See TT 854.
12:37 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48772/
12:39 bkuhn joined #parrot
12:44 smash joined #parrot
12:44 smash hello everyone
12:46 * Coke hopes someone steers the guy on parrot-users towards the new tutorial and nqp-rx and that we get rid of PGE +/or TGE after 3.0
12:51 tadzik joined #parrot
12:56 smash seen chromatic
12:56 purl chromatic was last seen on #parrot 8 hours, 13 minutes and 49 seconds ago, saying: the damage?
12:59 uniejo left #parrot
13:06 NotFound whiteknight: ping
13:10 NotFound msg whiteknight You fixed PLA metadata in PLA itself, but don't updated the copy in plumage
13:10 purl Message for whiteknight stored.
13:16 tadzik left #parrot
13:32 robin-gvx joined #parrot
13:45 whiteknight NotFound: yeah, I'm not ready yet to update it for Plumage
13:53 a3r0 joined #parrot
13:54 a3r0 left #parrot
14:03 Coke particle: you in?
14:04 Coke seen allison?
14:04 purl allison was last seen on #parrot 2 days, 17 hours, 9 minutes and 46 seconds ago, saying: mikehh: it just needs an "official location" for the records  [Aug 31 20:55:02 2010]
14:06 davidfetter joined #parrot
14:08 mikehh Coke: do we have any specific policy regarding the use of library 'sys_ops' in tests (which is only generated by make / make world not make corevm
14:09 mikehh in fact they are in dynoplibs now
14:10 mikehh plus a bunch of others generated by ops2c
14:12 mariano joined #parrot
14:14 moritz I don't think there are any concerns outside of corevm
14:14 moritz (but Coke should know better than me :-)
14:15 mikehh moritz: hope so, there are a couple of tests failing make corevm / make coretest because of this
14:15 Coke "please try to avoid using dynops or dynpmcs in coretest."
14:15 integral left #parrot
14:15 particle Coke: wozzup?
14:15 Coke this is often missed when pushing things out of "core"
14:16 Coke particle: nevermind. check your email.
14:16 * Coke hands off mailing list duties to the new board so they can have some private time. ;)
14:16 mikehh personally I think the tests should be in dynop / dynpmc rather than op / pmc
14:17 integral joined #parrot
14:17 Coke if they're testing those things, yes.
14:17 Coke (as opposed to just usng them to test something else)
14:18 mikehh at the moment just 2 tests added which cause t/op/integer.t and t/pmc/bigint.t to fail in corevm/coretest (but pass test)
14:20 mikehh the 2 tests give - error:imcc:loadlib directive could not find library `sys_ops'
14:21 mikehh and I think there was a similar test in t/pmc/nci.t
14:22 mikehh because of moving ops out of 'core'
14:23 bacek joined #parrot
14:24 aloha joined #parrot
14:28 tcurtis joined #parrot
14:42 Paul_the_Greek joined #parrot
14:43 Paul_the_Greek G'day, kids.
14:44 Paul_the_Greek Who is the right person to talk to about Rakudo's use of Parrot PMCs?
14:44 Coke #perl6 on freenode, if you want IRC... but why don't you ask your question in here first.
14:46 bluescreen left #parrot
14:46 bluescreen joined #parrot
14:47 Paul_the_Greek Does the Rakudo boolean type use the Parrot Boolean PMC?
14:48 Coke rakudo: ?1.WHAT.say
14:48 p6eval rakudo 5ae715: OUTPUT«Int()␤»
14:48 Coke rakudo: (1==2).WHAT.say
14:48 p6eval rakudo 5ae715: OUTPUT«Bool()␤»
14:48 Coke rakudo: (1==2).PARROT.say
14:48 p6eval rakudo 5ae715: OUTPUT«Bool␤»
14:49 particle Paul_the_Greek: http://github.com/rakudo/rakud​o/raw/master/src/core/Bool.pm
14:49 nwellnhof src/builtins/Bool.pir:    boolproto = p6meta.'new_class'('Bool', 'parent'=>'parrot;Boolean Cool')
14:49 nwellnhof it does
14:49 particle hrmm, that doesn't help... nwellnhof++ beat me to it
14:49 Coke boolproto = p6meta.'new_class'('Bool', 'parent'=>'parrot;Boolean Cool')
14:49 Coke whoops.
14:50 Coke so, yes, it uses the parrot Boolean as one of its parent classes.
14:50 particle next time, fingers, copy the correct page.
14:50 whiteknight Coke++ # doing a wonderful job with the handoff
14:50 Paul_the_Greek particle: Huh?
14:51 Coke whiteknight: yah, I think particle's being lazy on this one. ;)
14:51 Paul_the_Greek What is 'parrot; Boolean Cool' ?
14:51 Coke paul;he's talking to himself.
14:51 whiteknight Coke: don't worry, we're going to put him to work soon enough
14:51 whiteknight :)
14:51 Coke PTG: split on whitespace.
14:51 Coke it's "parrot;Boolean" and "Cool". Cool is a p6 class/role/something.
14:52 Paul_the_Greek Ah.
14:52 particle Cool gives classes a whole bunch of standard methods
14:53 nwellnhof http://perlgeek.de/blog-en/perl-6/cool.html
14:53 nwellnhof moritz++
14:53 Paul_the_Greek I see no mention of Boolean in Bool.pm.
14:54 particle Paul_the_Greek: http://github.com/rakudo/rakudo/​raw/master/src/builtins/Bool.pir
14:54 particle i pasted the wrong url above, if that's where you were looking
14:55 Paul_the_Greek Yes, thanks particle.
14:55 particle src/core/Bool.pm is the perl 6 code for the Bool class.  src/builtins/Bool.pir is the pir code
14:55 Coke (the perl6 stuff augments the pir definition)
14:56 Paul_the_Greek So here's the big question: Since Bool inherits from Boolean inherits from Integer, can any integer operator be applied to a Bool?
14:57 Paul_the_Greek I would think so, since nothing in Bool.pir prevents it.
14:58 particle rakudo: my Bool $x = 1; say $x / 8
14:58 p6eval rakudo 5ae715: OUTPUT«Type check failed for assignment␤  in '&infix:<=>' at line 1␤  in main program body at line 22:/tmp/vFkD_0JXlG␤»
14:58 particle rakudo: my Bool $x = true; say $x / 8
14:58 p6eval rakudo 5ae715: OUTPUT«Could not find sub &true␤  in main program body at line 22:/tmp/YdIY6JQSLK␤»
14:58 particle rakudo: my Bool $x = True; say $x / 8
14:58 p6eval rakudo 5ae715: OUTPUT«0.125␤»
14:59 particle rakudo: my Bool $x = True; say $x.succ
14:59 Paul_the_Greek rakudo: my Bool $x = true; say -$x
14:59 p6eval rakudo 5ae715: OUTPUT«1␤»
14:59 p6eval rakudo 5ae715: OUTPUT«Could not find sub &true␤  in main program body at line 22:/tmp/LHn5G_jATE␤»
15:00 Paul_the_Greek rakudo: my Bool $x = false; say -$x
15:00 p6eval rakudo 5ae715: OUTPUT«Could not find sub &false␤  in main program body at line 22:/tmp/RiELYc0or_␤»
15:00 particle rakudo: my Bool $x = True; say -$x
15:00 p6eval rakudo 5ae715: OUTPUT«-1␤»
15:00 particle the Bool:: enums are capitalized
15:00 Paul_the_Greek rakudo: my Bool $x = False; say -$x
15:00 p6eval rakudo 5ae715: OUTPUT«-0␤»
15:00 Coke but on the face of it, you have no idea how rakudo is doing that math.
15:00 Paul_the_Greek Huh?
15:01 Coke Paul_the_Greek: huh?
15:01 Paul_the_Greek -0?
15:01 purl well, -0 is a switch that specifies $/ in octal or http://www.fourmilab.ch/docu​ments/univac/minuszero.html
15:01 Coke yes?
15:01 particle 622/20846
15:01 purl 0.0298378585819822
15:01 aloha 0.0298378585819822
15:01 Paul_the_Greek rakudo: my Bool $x = False, $y = -$x; say -$y
15:01 p6eval rakudo 5ae715: OUTPUT«===SORRY!===␤Symbol '$y' not predeclared in <anonymous> (/tmp/siJyIU4I5V:22)␤»
15:01 nwellnhof http://en.wikipedia.org/wiki/Signed_zero
15:02 particle Paul_the_Greek: -0 is a perfectly fine ieee746 value
15:02 particle 754 even
15:02 Paul_the_Greek Why would floats come into play at all?
15:03 Paul_the_Greek rakudo: my Bool $x = False; my Bool $y = -$x; say $y
15:03 nwellnhof when perl6 does a mathematical operation the operands are converted to numbers (floats) first
15:03 p6eval rakudo 5ae715: OUTPUT«Type check failed for assignment␤  in '&infix:<=>' at line 1␤  in main program body at line 22:/tmp/zhXXFeQfx3␤»
15:03 particle they shouldn't come into play.
15:04 Coke nwellnhof: that's not entirely true.
15:04 nwellnhof rakudo: say "3.5" + True
15:04 p6eval rakudo 5ae715: OUTPUT«4.5␤»
15:04 Coke so, paul, is your quesiton answered?
15:04 particle rakudo: my Bool $x = False; say $x -= $x;
15:04 Paul_the_Greek rakudo: my Bool $x = False; my Bool $y = ! $x; say $y
15:04 p6eval rakudo 5ae715: OUTPUT«Type check failed for assignment␤  in '&infix:<=>' at line 1␤  in main program body at line 22:/tmp/wKV_dpOyv2␤»
15:04 p6eval rakudo 5ae715: OUTPUT«1␤»
15:04 Coke note that you can also talk to p6eval in private. ;)
15:04 Paul_the_Greek It appears that I cannot use integer operators willy-nilly.
15:05 nwellnhof coke: so what does perl6 exactly?
15:05 particle Paul_the_Greek: be careful
15:05 purl if you can't be careful, name it after me
15:05 particle you're looking to do parrot;Integer operations on the perl6;Bool
15:05 particle perl6;Bool does not inherit from perl6;Integer
15:05 Coke rakudo: say (4/10).perl
15:05 p6eval rakudo 5ae715: OUTPUT«2/5␤»
15:06 Paul_the_Greek If we reimplement Boolean without inheriting from Integer, we will have to implement any vtable functions that HLLs rely on.
15:06 Coke you get the numification for printing, but not for all math.
15:06 Andy joined #parrot
15:06 Coke Paul_the_Greek: I've said this before. your easiest path to a working solution here is to just change it and run it.
15:06 particle Paul_the_Greek: correct, and that's done by running the hll test suites
15:06 Coke and see what breaks.
15:06 Paul_the_Greek Coke, particle: Agreed.
15:06 Coke it is possible to analyze the code and figure this out ahead of time, but... that's a pITA.
15:07 nwellnhof break things first, ask questions later ;)
15:07 Paul_the_Greek pITA? A bread reference?
15:07 Coke PITA?
15:07 purl PITA is Pain In The Ass or a pain in the aptakisic or a container object for the infamous Beetabaga Fajita in a Pita or Sachmet and Alias' new image-based multi-everything testing concept or a turkish bread or http://ali.as/pita (for now) or MAGnet#pita or new and cool or socks glue http://www.jbox.com/PRODUCT/DAI545 or People Eating Tasty Animals
15:07 whiteknight pain in the ass
15:07 Paul_the_Greek Right.
15:07 Paul_the_Greek My first task is to write a Boolean benchmark.
15:13 Andy Check one: [ ] Fast, [ ] Slow
15:14 Coke Andy, do you have any relatives named "Moe" ?
15:14 Andy Are you following me on Facebook/
15:14 Andy ?
15:14 whiteknight no, it was on failblog
15:15 Andy oh, right
15:15 Andy I posted that to FB saying "3rd grade taunting come to life (and death)"
15:15 Coke and also, I am following you on facebook.
15:15 Coke but I don't follow facebook in realtime.
15:16 Coke failblog, yes.
15:18 Coke I am wonder why people that wish to have a private email conversation would not.. .just. send a private email.
15:18 Coke *ing
15:24 theory joined #parrot
15:30 Coke ugh. someone needs to go through the PIR book again.
15:30 Coke (getting started refers to "make install-dev")
15:35 wagle left #parrot
15:35 wagle joined #parrot
15:44 Paul_the_Greek Could someone explain the $Id line? I can't find anything in the guidelines document.
15:45 moritz Paul_the_Greek: it's an svn feature, which expands the $Id$ to the last change revision and date/time
15:46 Paul_the_Greek So if I'm creating a new file, I just put $Id$ in it?
15:49 moritz yes
15:55 jan left #parrot
15:59 jan joined #parrot
16:04 chromatic joined #parrot
16:10 whiteknight left #parrot
16:10 smash chromatic: ping
16:12 Paul_the_Greek left #parrot
16:16 robin-gvx left #parrot
16:16 chromatic smash pong
16:18 smash chromatic: add some more data to the table in http://gil.di.uminho.pt/use​rs/smash/rakudo-bench.html % faster/slower as you suggested
16:18 smash still have some doubts on what values to use tho
16:18 chromatic I'd compare averages.
16:19 smash i added the % increase for min/avg/max values, check the hover info on 2010.08 rakudo
16:20 chromatic Very nice.
16:22 particle yes, compare averages for sure
16:22 smash particle: min/avg/max values are being compared
16:23 particle the hover info shows minimums, not avg
16:24 smash the hover info shows the % increase (or decrease) of that value with the corresponding value from the previous release
16:24 particle yes, and it shows the values you are using are outliers (minimum values) not averages over muliple runs, which is more reliable data
16:26 particle also, i'd invert that table, as the number of distributions will grow more frequently than the number of scripts
16:27 whiteknight joined #parrot
16:27 * smash nods.
16:28 particle oh... hover info on the table shows %, now i see. nice
16:28 particle hover info on the chart shows you're comparing minimums
16:29 Andy smash: Any reason for me to NOT Tweet that page to @perlbuzz?
16:29 smash particle: yes
16:29 smash Andy: no, go ahead if you wish
16:30 nwellnhof left #parrot
16:31 particle i still think those charts should be 0-based on the y-axis.  mandlebrot is not running almost twice as fast now as a month ago, which the slope of the line suggests.
16:32 particle anyway, these are cool charts. where is the code that implements them?
16:33 Andy http://twitter.com/perlbuzz/status/22901930965
16:34 smash particle: yes, i'm still considering the 0-based y-axis..
16:34 smash particle: the charts are created with a JS library (http://www.highcharts.com/)
16:55 whiteknight smash: what's the link?
16:55 purl well, the link is for me?
16:57 smash whiteknight: sorry, the link for ?
17:21 Paul_the_Greek joined #parrot
17:21 Paul_the_Greek PMC implementation question.
17:22 Paul_the_Greek Consider get_bool/get_integer/get_number: Should two of these be written in terms of the third, or is it okay for all three to do low-level operations?
17:23 Paul_the_Greek I notice that Integer does a GET_ATTR in all three, rather than in only one.
17:24 chromatic left #parrot
17:24 cotto_work depends on how much we care about the overhead of an extra function or VTABLE call
17:26 Paul_the_Greek But we don't necessarily require all in terms of one for ease of inheriting from a PMC and then overriding one vtable function?
17:26 Paul_the_Greek For Integer, I'd have to override all three functions if I had a new representation for the integer.
17:27 Paul_the_Greek Personally, I think speed of low-level PMCs is more important.
17:29 cotto_work My inclination would be to have a unified path, but I'd definitely profile before committing.
17:29 Paul_the_Greek Okay, that's a good idea. I now have a Boolean benchmark, so I have a way to compare.
17:31 tcurtis Perhaps there could be a static function in integer.pmc that get_{bool,integer,number} all call (which hopefully will be inlined).
17:32 Paul_the_Greek The new Boolean PMC does not inherit from Integer, so it provides its own getters and setters.
17:32 hercynium joined #parrot
17:32 Paul_the_Greek The question is whether all the getters should call one of them to do the low-level operation, or whether all the getters should do the operation.
17:32 Paul_the_Greek I think cotto's suggestion for benchmarking is good.
17:36 tcurtis Right, profiling is good. I'm just pointing out that there's a third alternative: each getter calls a static function that performs the operation.
17:38 Paul_the_Greek But someone inheriting from Boolean would still have to override all three getters if representing the boolean value differently.
17:38 tcurtis Ah, true.
17:39 Paul_the_Greek If they all called get_bool, then only get_bool has to be overridden.
17:39 cotto_work I think more electrons have been expended discussing this than it'd take to write the extra functions.
17:39 Paul_the_Greek Of course, all three getters are trivial and easy to override, and a comment would point out the situation.
17:39 Paul_the_Greek Ah, cotto brings up the CR syndrome. Indeed, you are correct, sir.
17:40 cotto_work cr syndrome?
17:40 Paul_the_Greek It's named after a woman I worked with who spent more time benchmarking some implementation choices than could ever have been wasted if the wrong choice was made.
17:41 Paul_the_Greek This was in 1971, so it seemed important at the time.
17:41 nwellnhof joined #parrot
17:41 theory left #parrot
17:41 cotto_work wfm.  I like that.
17:41 cotto_work kinda like bikeshedding, but for performance
17:41 Paul_the_Greek My friend Bill and I use the actual name, but she shouldn't be embarrassed on a public forum. :D
17:41 Paul_the_Greek Yes.
17:42 cotto_work I'm sure Warnock would agree.
17:42 Paul_the_Greek One more question: Does Parrot provide a global TRUE and FALSE Boolean, preallocated and read-only?
17:42 dukeleto mornin'
17:43 Paul_the_Greek Howdy dukeleto.
17:43 cotto_work I'm not aware of anything like that.
17:43 Paul_the_Greek It seems like a good idea, no?
17:44 cotto_work I don't know how frequently the Boolean PMC is used, but the idea makes sense.
17:44 * particle hands out some electrons
17:44 cotto_work I'm shocked.
17:44 Paul_the_Greek I think only Rakudo uses it, but it just seems like the right thing.
17:45 * particle accelerates
17:45 tcurtis P6metaclass.accepts returns Boolean PMCs, I think.
17:47 tcurtis Yes, it does. It pre-allocates one for true and one for false to avoid having to allocate a new one every time.
17:48 Paul_the_Greek Sounds like a job for super-Boolean.
17:49 Paul_the_Greek One more question, oh patient ones.
17:49 * dukeleto attempts to differentiate between one particle and another ... and fails.
17:50 Paul_the_Greek The immediate forms of operations modify in place. How is that valid for immutable PMCs?
17:50 preflex left #parrot
17:52 cotto_work Which PMCs are immutable?
17:52 Paul_the_Greek Integer, for example.
17:53 Paul_the_Greek Oh, hang on ...
17:53 Paul_the_Greek It must be that there is never more than one reference to an Integer.
17:54 Paul_the_Greek So modifying in place is okay.
17:54 cotto_work assignment semantics are a mess
17:55 Paul_the_Greek What happens when I code $P1 = $P0?
17:56 whiteknight probably set_p_p $P1, $P0
17:56 Paul_the_Greek assign does a copy, it appears.
17:56 nopaste "cotto_work" at 192.168.1.3 pasted "side-effects" (10 lines) at http://nopaste.snit.ch/23223
17:56 Coke smash: no clue if this is still relevant, but yellow on white is really hard to see.
17:57 Coke smash: just loaded the latest version. awesome, nevermind. ;)
17:58 Paul_the_Greek Both registers point to the same PMC.
17:59 cotto_work yes
18:00 Paul_the_Greek So what happens if I negate one of those registers? Will the assembler generate an in-place negate?
18:00 Paul_the_Greek Must test...
18:01 cotto_work depends on whether you use the one- or two-arg form of neg
18:07 * dukeleto would appreciate if anybody interested could look at this Parrot coredump and tell me what they see: http://gist.github.com/564286
18:07 dukeleto that core dump comes from PL/Perl 6 in PL/Parrot. It happens when I attempt to use a Perl 6 grammar that has already been defined
18:08 Paul_the_Greek Yup, an in-place negate changes both values. So we have mutable integers. Interesting.
18:08 dukeleto the core dump happens with these tests: http://github.com/leto/plparrot/commit/6​a55637086be8c9df75f6ca3ae8e127f0bb665bf
18:09 dukeleto if anybody could share some of their wisdom with me, i would grealy appreciate it
18:09 hercynium left #parrot
18:14 tcurtis cotto_work: I think I accidentally assigned TT #1768 to you. Sorry about that.
18:15 * dukeleto begs people to look at his coredump backtrace
18:15 cotto_work oh noes
18:16 cotto_work that looks like one I should look into
18:16 whiteknight dukeleto: would love to see that backtrace with an unoptimized build
18:18 dukeleto whiteknight: ok. currently i am using --gen-parrot on rakudo for that. Is there a way to use --gen-parrot with Rakudo, but still give it compile flags?
18:18 tcurtis cotto_work: should I open a separate ticket or add to that ticket for the segfault I get when I try to run the PIR from perl6 --target=pir with -R profiling?
18:18 dukeleto whiteknight: or i guess i could just use my own parrot, but then I run the risk of bugs caused by Rakudo running on a parrot revision that it wasn't tested with
18:19 dalek TT #1768 created by tcurtis++: Profiling runcore breaks Rakudo.
18:19 dalek TT #1768: http://trac.parrot.org/parrot/ticket/1768
18:19 tcurtis dukeleto: I think there's --gen-parrot-options.
18:19 dukeleto tcurtis: that seems vaguely familiar. hmmm
18:19 whiteknight dukeleto: I don't know enough about rakudo's build
18:19 tcurtis s/options/option/
18:23 dukeleto tcurtis: it seems that you can add to the build options with that, but --optimize is on by default, not sure if it will work
18:24 cotto_work You can always configure it manually or build with an installed Parrot.
18:25 pjcj left #parrot
18:25 tcurtis Another option is to just modify your local Configure.pl to omit --optimize.
18:25 pjcj joined #parrot
18:26 cotto_work It makes me sad how slow trac is.
18:26 preflex joined #parrot
18:26 dukeleto cotto_work: i want to use --gen-parrot though, so I know that I am using the parrot rev that it expects. I guess I could just install the parrot rev it wants manually
18:28 cotto_work you could go into parrot/ and run Configure.pl manually with whatever other options Rakudo passes to it
18:28 patspam joined #parrot
18:33 silug left #parrot
18:34 tcurtis TT #731 looks like it's fixed. According to http://docs.parrot.org/parrot/late​st/html/src/dynoplibs/io.ops.html, '$I0 = stat path, 0' should do what Coke wanted there.
18:36 * dukeleto attempts to get Rakudo running on an unoptimized parrot
18:38 senf_statt_oel joined #parrot
19:35 dalek parrot: r48773 | nwellnhof++ | branches/charset_massacre (30 files):
19:35 dalek parrot: Bring branch up-to-date with trunk
19:35 dalek left #parrot
19:36 dalek joined #parrot
19:48 tcurtis msg plobsing Was the patch in TT #1549 ever applied? Can the ticket be closed now?
19:48 purl Message for plobsing stored.
19:48 aloha OK. I'll deliver the message.
19:51 theory joined #parrot
19:56 cotto_work an embarrassingly slow demo side demoing the github trac plugin is up at http://mksig.org/trac/wiki/WikiStart
19:56 cotto_work The speed is due to a combination of trac being slow and my vm being underpowered.
19:59 pjcj left #parrot
19:59 * particle hands cotto_work some more electrons
20:01 jan left #parrot
20:02 whiteknight left #parrot
20:05 dalek rakudo: 52f9ea8 | pmichaud++ | src/builtins/Array.pir:
20:05 dalek rakudo: Refactor Array.new and circumfix:<[ ]> so that subclasses of Array properly instantiate the correct type.  Reported by Util++ on #perl6.
20:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​2f9ea82798dfbb1201479e38b8a724084f1afe4
20:06 jan joined #parrot
20:06 Coke tcurtis: exists != executable
20:06 * tcurtis was clearly not thinking sanely.
20:11 Coke ugh. i would rather tickets had NO category than be forced into 'core'
20:11 silug joined #parrot
20:12 * Coke supposes he could open a few dozen more tickets with missing functionality.
20:13 Coke Given that that one's been open for 15 months, though, probably not worth the time until they are actually blocking me.
20:13 Coke mmm, grapemes.
20:32 bluescreen left #parrot
20:46 bluescreen joined #parrot
20:59 patspam left #parrot
21:05 whiteknight joined #parrot
21:09 bluescreen left #parrot
21:13 mikehh left #parrot
21:20 GeJ Bonjour everyone.
21:20 cotto_work hi GeJ
21:21 fperrad left #parrot
21:25 Paul_the_Greek A Boolean that doesn't inherit from Integer does not allocate an attribute block and is about 10% faster.
21:25 cotto_work sounds like a win.  How are you measuring that?
21:26 Paul_the_Greek I wrote a benchmark that does what I think are typical boolean operations.
21:26 cotto_work nopaste?
21:26 purl i heard nopaste was http://nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or http://paste.scsys.co.uk or http://www.extpaste.com or http://gist.github.com or App::Nopaste or http://codepeek.com/paste/ or (: pastebot)
21:26 Paul_the_Greek nopaste the PMC code?
21:27 Paul_the_Greek Or the benchmark?
21:27 purl It seems faster
21:28 cotto_work both?
21:29 nopaste "Paul_the_Greek" at 192.168.1.3 pasted "New Boolean benchmark" (69 lines) at http://nopaste.snit.ch/23226
21:29 M_o_C joined #parrot
21:30 nopaste "Paul_the_Greek" at 192.168.1.3 pasted "New Boolean.pmc (without pod)" (103 lines) at http://nopaste.snit.ch/23227
21:36 cotto_work You should stick that into a branch.
21:37 Paul_the_Greek What's the advantage over simply committing it eventually?
21:38 whiteknight branch gives the ability to test it rigorously
21:38 cotto_work easier for others to test
21:38 Paul_the_Greek Okay, will do.
21:38 cotto_work and commit fixes, if needed
21:38 cotto_work Paul_the_Greek++
21:38 Paul_the_Greek Thanks!
21:39 Paul_the_Greek Is there a way to get parrot to create a pbc file? The --output option doesn't seem to do it.
21:39 cotto_work -o x.pbc
21:40 cotto_work It's a bit magical in that imcc looks at the output filename to decide what to put into it.
21:40 cotto_work if it sees -o x.pasm, it'll output pasm, if it sees -o x.pbc it'll output pbc
21:40 Paul_the_Greek You're suggesting that option on the parrot command itself?
21:40 cotto_work yes
21:41 Paul_the_Greek parrot examples\benchmarks\boolean.pir -o boolean.pbc
21:41 Paul_the_Greek There is no boolean.pbc file anywhere in the directory tree.
21:41 cotto_work -o boolean.pbc nees to come first
21:41 Paul_the_Greek All righty then ...
21:41 cotto_work otherwise it'll try passing -o boolean.pbc to your script
21:42 Paul_the_Greek Oh, that makes sense.
21:42 Paul_the_Greek Now I can disassemble this pbc file somehow ...
21:42 M_o_C left #parrot
21:42 cotto_work pbc_disassemble
21:42 purl pbc_disassemble is rather fragile. It segfaults every now and then on darbelo's box.
21:42 hercynium joined #parrot
21:42 cotto_work forget pbc_disassemble
21:42 purl cotto_work: I forgot pbc_disassemble
21:43 Paul_the_Greek Works great on my machine.
21:43 cotto_work It's gotten more stable since then.
21:44 Paul_the_Greek Okay, some dinner. Then I can look at the generated code.
21:44 cotto_work pbc_dump -d might also be of use
21:44 shockwave joined #parrot
21:45 shockwave Hi, people.
21:45 shockwave purl paste
21:45 purl i heard paste was see factoid nopaste
21:45 nwellnhof nopaste?
21:45 purl i heard nopaste was http://nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or http://paste.scsys.co.uk or http://www.extpaste.com or http://gist.github.com or App::Nopaste or http://codepeek.com/paste/ or (: pastebot)
21:46 nopaste "shockwave" at 192.168.1.3 pasted "No reference semantics for certain uses of PMC!" (37 lines) at http://nopaste.snit.ch/23228
21:47 shockwave I'm looking for a way to accomplish what the code I pasted sudjest.
21:48 shockwave Essentially, I would like $P0 and $P1 within the 'value' method to act as references, such that when $P1 is assigned as the new value of the '%value' attribute, $P0 references the new value.
21:49 shockwave Instead, $P0 references the old value, which is fucking my shit up with cached registers.
21:52 NotFound shockwave: box creates a new pmc, setattribute sets a pmc, doesn't assign to the one presen.
21:53 mikehh joined #parrot
21:54 M_o_C joined #parrot
21:54 shockwave @NotFound: Thanks. As always, you're helpful. I'm thinking of something smart to ask that can help me make this work...
21:55 NotFound shockwave: if you don't need to mutate the type, $P0 = _p should be enough
21:56 shockwave thinking....
21:56 purl hmmm... thinking is see `made of meat`
21:56 NotFound Or you can just return $P1
21:58 shockwave I created the code I pasted above to illustrate the semantics I'm trying to achive. I have a bunch of validation/unit tests that perform all kinds of permutations. I need that reference semantics, or some way to accomplish something similar.
21:58 shockwave I actually had this working, but,
21:59 ruoso left #parrot
22:00 shockwave essentially for each HLL field access, there would be a getattribute call. But, that's not very efficient. So, now that I'm taking care of some simple optimizations, this one was on the list.
22:00 shockwave It boils down to using getattribute once, and cache the result register to be used subsequently.
22:00 shockwave Of course, you can imaging all sorts of use cases within a method.
22:01 NotFound shockwave: setattrubute sets a new pmc, there is no way to grant you keep a refererence to the attribute living forever.
22:01 shockwave That's what's causing the problem: The fact that is fecthed once, per subroutine, when needed, and then the same register is used afterwards.
22:02 shockwave Basically, every time setattribute is used, all the old references are invalidated, then?
22:02 shockwave whether scalar or not?
22:03 NotFound shockwave: setattribute sets the attribute slot, unless is set to the same PMC that was here before, you lose the reference.
22:03 NotFound You keep a reference to some value that is no longer the current value of the attribute
22:04 NotFound If you want a different semantic for some class, you need to override the attribute access vtable functions
22:05 shockwave @NotFound: I appreciate getting a definitive answer, even if it was not what I was looking for. :( ... I guess I'll be around the drawing board thinking of a workaround.
22:05 shockwave @NotFound: err.. what? There's a possible way?
22:05 shockwave sweet.
22:06 NotFound shockwave: In theory, I don't know if somenone has implemented something like that. It can be hard.
22:06 shockwave btw, ^^^ s/looking/hoping
22:07 shockwave @NotFound: My guess is that such road may not yield anything workable. I'll try to think of a decent way of handling it, without resorting to that vtable override.
22:11 Andy left #parrot
22:17 bkuhn left #parrot
22:28 pjcj joined #parrot
22:32 Coke uh, don't forget --output-pbc
22:42 shockwave @Coke, Who was that last message for?
22:43 shockwave @NotFound: I got it working so that cached registers are used until a call to setattribute happens, at which case the cache for that particular register is invalidated so that next time the value is refetched and recached.
22:43 shockwave Thanks for your insight.
22:45 M_o_C left #parrot
23:04 Paul_the_Greek So what is the right way to create a new branch?
23:04 cotto_work docs/project/branching_guide.pod
23:07 nwellnhof left #parrot
23:07 Paul_the_Greek That doesn't appear to be linked anywhere.
23:10 cotto_work2 joined #parrot
23:14 cotto_work left #parrot
23:27 dalek plparrot: 6a55637 | leto++ | t/sql/plperl6.sql:
23:27 dalek plparrot: Add tests for a grammar in package scope
23:27 dalek plparrot:
23:27 dalek plparrot: These tests produce a core dump from Parrot that looks like http://gist.github.com/546982
23:27 dalek plparrot: review: http://github.com/leto/plparrot/commit/6​a55637086be8c9df75f6ca3ae8e127f0bb665bf
23:27 dalek plparrot: 2b99026 | leto++ | t/sql/plperl6.sql:
23:27 dalek plparrot: Make the global grammar test not core dump
23:27 dalek plparrot: review: http://github.com/leto/plparrot/commit/2​b990262490b93aac8b829b305a5700c97373511
23:30 dalek parrot: r48775 | Paul C. Anagnostopoulos++ | branches/sleeker_boolean:
23:30 dalek parrot: Boolean that does not inherit Integer
23:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48775/
23:32 PacoLinux left #parrot
23:33 PacoLinux joined #parrot
23:34 mikehh left #parrot
23:34 PacoLinux left #parrot
23:34 PacoLinux joined #parrot
23:37 particle left #parrot
23:38 mikehh joined #parrot
23:40 NotFound shockwave: looks like a good solution
23:41 particle joined #parrot
23:51 cotto_work2 Paul_the_Greek: If you can think of a place it should be linked from, you're encouraged to implement or recommend it.
23:53 cotto_work2 is now known as cotto_work
23:55 Paul_the_Greek Will do.

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

Parrot | source cross referenced