|
Parrot 2.7.0 "Australian King" Released! | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets (20 to go), merge outstanding branches; profile your favorite PIR for memory leaks with valgrind Set by moderator on 2 September 2010. |
|||
| 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. | ||
| cotto_work: For example, Integer uses get_integer all over the place. | 00:03 | ||
| Does that have to go through the vtable? | 00:04 | ||
| I suppose it does. | |||
| chromatic | It's not about faster but about smarter. | ||
| Paul_the_Greek | chromatic: Smarter booleans? What do you mean? | 00:05 | |
| cotto_work | Also, it's possible that the compiler is inlining it already. | 00:06 | |
| 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,
dngor joined
|
|||
| Paul_the_Greek | Percentage decrease would be nice to see. | 00:09 | |
| chromatic | Booleans shouldn't have to allocate any memory. | 00:16 | |
| Use one of the PMC private flags to store its one-bit state. | |||
| Paul_the_Greek | Ah, you're thinking we could get rid of the attribute block. | ||
| chromatic | Exactly. | ||
| Paul_the_Greek | There's a lot to be said for that. | ||
| Okay, I'll continue my investigation to see how HLLs are using booleans. | 00:17 | ||
| I'm betting some are relying on the integer-ish behavior of them. | |||
| But they can't rely on that for boolean vectors, so perhaps it's okay to eliminate that behavior. | 00:18 | ||
| Maybe any strange behavior can simply be merged into the smart boolean (e.g., negate). | 00:19 | ||
| dalek | rrot: r48767 | bacek++ | trunk/src/string/api.c: Block GC in str_join to avoid premature collecting of temporary strings. Closes #1767. |
00:20 | |
| rrot: r48768 | bacek++ | trunk/t/op/string.t: Add test for #1767. |
|||
| TT #1767 closed by bacek++: join opcode causes segfaults and other memory corruption issues | |||
| TT #1767: trac.parrot.org/parrot/ticket/1767 | |||
| 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
|
|||
| chromatic | msg Paul_the_Greek I'd change the current one. | 00:30 | |
| purl | Message for paul_the_greek stored. | ||
|
00:35
davidfetter joined,
whiteknight left
|
|||
| dalek | rrot: r48769 | jkeenan++ | trunk/config/inter/progs.pm: Per discussion in ļæ½trac.parrot.org/parrot/ticket/854, revert code comment. |
00:37 | |
| purl | comment is pretty exhaustive, read it carefully | ||
| pmichaud | purl, your days are numbered. :-P | 00:38 | |
| purl | ...but purl's days is clearly numbered. It's a sign.... | ||
| ...but purl's days are clearly numbered. It's a sign.... | |||
| cotto | ~~ | 00:43 | |
|
00:48
davidfetter left
|
|||
| dalek | rrot-linear-algebra: a78a64c | Whiteknight++ | setup.nqp: fix the 'instructions' portion of the generated plumage metadata. NotFound++ for the catch |
00:57 | |
| rrot-linear-algebra: 1831e83 | Whiteknight++ | ports/plumage/parrot-linear-algebra.json: regenerate the plumage metadata file |
|||
| rrot-linear-algebra: 8b3241e | Whiteknight++ | s (7 files): Merge branch 'master' of github.com:Whiteknight/parrot-linear-algebra |
|||
| rrot-linear-algebra: cfcbcb1 | Whiteknight++ | / (6 files): boxing primitive types respects HLL mappings. Untested |
|||
|
00:57
Psyche^ joined,
Psyche^ is now known as Patterner
01:04
GeJ left,
GeJ joined
01:14
theory left
|
|||
| bacek_at_work | aloha, karma whiteknight | 01:17 | |
| aloha | bacek_at_work: whiteknight has karma of 4. | ||
|
01:24
fedov left
|
|||
| kid51 , ever the contrarian, has few problems with purl | 01:25 | ||
| kid51 feels lonely when purl is not around | 01:26 | ||
| GeJ | seconded. | 01:27 | |
| pmichaud | purl would be fine if it spoke only when spoken to. :) | 01:35 | |
| purl | pmichaud: huh? | ||
| bacek_at_work | insult purl | 01:36 | |
| aloha | purl is nothing but a vain half-mouthful of beslubbering entrails. | ||
| GeJ | purl: don't listen to them hun', they're just being mean. | 01:39 | |
| purl | GeJ: huh? | ||
| GeJ | sigh | ||
| kid51 will consider aloha an improvement over purl only if it talks back to me in Russian | 01:40 | ||
| cotto will consider aloha an improvement if he doesn't respond to "+1" with "1" | 01:42 | ||
|
01:44
theory joined
01:48
bluescreen left
02:18
tcurtis joined
02:31
kid51 left
02:35
janus left
02:42
janus joined
02:56
bacek_mobile joined
|
|||
| bacek_mobile | github.com/parrot/pir | 02:57 | |
| I moved pirate to parrot organization on github. | 02:58 | ||
| Hooray? | |||
| cotto | hooray! | 02:59 | |
|
03:26
tetragon left
03:34
wagle left
03:44
wagle joined
|
|||
| 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. | ||
| pmichaud | I mean, if we're concatenating a million-element array, we end up with a million strings | ||
| that aren't gc'ed until the join is finished. | 03:52 | ||
| 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:54 | ||
| chromatic | Only the transcoding should change things. | 03:56 | |
| pmichaud | ? | ||
| I don't understand. | |||
| 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? | ||
| chromatic | src/string/api.c:3304 | ||
| Hm, I suppose so yes. | |||
| pmichaud | (which is the exact case here) | ||
| 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 | ||
| (with gc disabled) | |||
| chromatic | That's partly because Parrot_str_from_int() is silly. | ||
| 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 .. * | 03:59 | ||
| bacek_mobile | Vtable-get-string generates temporary. | 04:00 | |
| dalek | thub-trac: a6f5f15 | cotto++ | github/hook.py: silly typo fix |
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. | ||
| pmichaud | I was thinking something similar. | ||
| chromatic | It's a lot less code, and we can reliably disable the GC. | ||
| Er. | |||
| We can rely on GC working properly. | 04:03 | ||
| pmichaud | afk, errand. | ||
| 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 | ||
| chromatic | Oh yeah, you mentioned that too. | 04:08 | |
| StringBuilder gets init_pmc(), hooray! | 04:12 | ||
|
04:28
mikehh_ joined
04:30
mikehh left,
mikehh_ is now known as mikehh
|
|||
| mikehh | opbots, names | 04:30 | |
|
04:35
Andy joined
|
|||
| dalek | kudo: 1e56d20 | pmichaud++ | build/PARROT_REVISION: Bump PARROT_REVISION to get pir::join opcode fix (TT #1767). |
04:40 | |
| tcurtis | I finally finished my valgrind run of the rakudo spectests. | 04:41 | |
| chromatic | What's the damage? | ||
| purl | age is probably not valid, so it's not backwards | ||
| pmichaud wonders how chromatic's comment leads to purl's response. | 04:42 | ||
| chromatic | the damage? | ||
| purl | rumour has it age is not valid, so it's not backwards | ||
| pmichaud | I also have trouble envisioning "valgrind" and "spectest" in the same thoughstream, so tcurtis++ :-) | 04:43 | |
| tcurtis | Now to look at the some amount less than 31K lines of backtraces. | 04:48 | |
|
04:51
hercynium left
|
|||
| 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 | ||
| tcurtis | Thanks. | 05:00 | |
| tcurtis failed at man-page-reading. | |||
| bacek++ | |||
| 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
06:18
bacek_mobile left
06:25
uniejo joined
06:36
chromatic left
|
|||
| dalek | rrot: r48770 | NotFound++ | trunk/t/pmc/exception.t: test Exception get/set attribute handler_ctx |
06:36 | |
|
06:38
theory left
06:44
fperrad joined
|
|||
| dalek | thub-trac: e12d18d | cotto++ | github/ (2 files): add and fix checks for the enable_revmap config option |
06:56 | |
| thub-trac: 84eac6c | cotto++ | github/github.py: rollback db to undo any goofiness caused by looking for a nonexistent table |
|||
| nopaste | "NotFound" at 192.168.1.3 pasted "Another blizkost example: using Gtk2 from winxed" (57 lines) at nopaste.snit.ch/23221 | 07:37 | |
| NotFound | That,s language interoperability! | 07:39 | |
| moritz | what does the 'using destroy;' do? | 08:05 | |
| cotto | trac-- | 08:15 | |
| stupid subtly different db interfaces | |||
| my, what a pain that was | 08:21 | ||
| sorear | NotFound: Nifty. I'm suprised it worked at all | ||
| dalek | thub-trac: 88444aa | cotto++ | github/github.py: fix and simplify the table creation code |
08:23 | |
| thub-trac: 769c04f | cotto++ | github/github.py: be more forgiving when looking up commit ids |
08:24 | ||
| thub-trac: 846c629 | cotto++ | github/github.py: tighten up regexes a little |
|||
| thub-trac: 25c3650 | cotto++ | github/github.py: fix db queries to work as trac expects, not just as sqlite happens to accept |
|||
| cotto | time to see if it'll run on my server | ||
| The osuosl people are way better at setting up trac than me. | 08:33 | ||
| mksig.org/trac/wiki/WikiStart | 08:36 | ||
| It's slow because my vm is grossly underpowered for trac. | 08:37 | ||
| u/p of parrot/parrot if anyone wants to play with it | |||
| and I'm off to bed | 08:38 | ||
| szbalint | cotto: how do you integrate trac with git? | 08:39 | |
| any good way to handle multiple branches? | |||
| ah. good night :) | |||
|
08:40
aloha left
08:42
bacek left
08:49
fperrad_ joined
08:53
fperrad left,
fperrad_ is now known as fperrad
08:59
cotto left
09:09
tcurtis left
09:12
cotto joined
09:54
cotto left
|
|||
| dalek | kudo: 5ae715c | colomon++ | t/spectest.data: Turn on S03-operators/comparison.t. |
09:58 | |
| kudo: c9eac47 | colomon++ | src/core/operators.pm: Fix the Any versions of the numeric comparison operators to forward to the Numeric versions. If you are doing a numeric comparison of non-Numeric types, this will be slightly slower but handle edge cases correctly. |
|||
|
10:08
cotto joined
10:58
nwellnhof joined
|
|||
| dalek | rrot: r48771 | NotFound++ | trunk/t/src (2 files): rearrange remaining test in src/extend and sr/warnings to make its coverage reports more useful |
11:12 | |
|
11:33
jsut joined
11:38
jsut_ left
11:49
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 11:55 | |
| moritz | good morning white knight | 11:56 | |
| whiteknight | hello moritz. How are you today? | 11:57 | |
| 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 | ||
| 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 | ||
| that makes me a sad whiteknight | 12:01 | ||
| moritz | happens from time to time :-) | 12:02 | |
| next weekend (ie the one of the Sep 11) will be busy for me | 12:03 | ||
|
12:12
tadzik joined,
ruoso joined
|
|||
| dalek | TT #854 closed by jkeenan++: config/inter/progs.pm: Figure out why -libpath: needs to be removed from ... | 12:35 | |
| TT #854: trac.parrot.org/parrot/ticket/854 | |||
|
12:36
tadzik left
12:37
bluescreen joined
|
|||
| dalek | rrot: r48772 | jkeenan++ | trunk/config/inter/progs.pm: Further refinement of inline comment per doughera++. See TT 854. |
12:37 | |
|
12:39
bkuhn joined
12:44
smash joined
|
|||
| smash | hello everyone | 12:44 | |
| 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:46 | ||
|
12:51
tadzik joined
|
|||
| 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
|
|||
| NotFound | whiteknight: ping | 13:06 | |
| 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
13:32
robin-gvx joined
|
|||
| whiteknight | NotFound: yeah, I'm not ready yet to update it for Plumage | 13:45 | |
|
13:53
a3r0 joined
13:54
a3r0 left
|
|||
| Coke | particle: you in? | 14:03 | |
| 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
|
|||
| 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:08 | |
| in fact they are in dynoplibs now | 14:09 | ||
| plus a bunch of others generated by ops2c | 14:10 | ||
|
14:12
mariano joined
|
|||
| moritz | I don't think there are any concerns outside of corevm | 14:14 | |
| (but Coke should know better than me :-) | |||
| 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
|
|||
| particle | Coke: wozzup? | 14:15 | |
| Coke | this is often missed when pushing things out of "core" | ||
| particle: nevermind. check your email. | 14:16 | ||
| Coke hands off mailing list duties to the new board so they can have some private time. ;) | |||
| mikehh | personally I think the tests should be in dynop / dynpmc rather than op / pmc | ||
|
14:17
integral joined
|
|||
| Coke | if they're testing those things, yes. | 14:17 | |
| (as opposed to just usng them to test something else) | |||
| 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:18 | |
| the 2 tests give - error:imcc:loadlib directive could not find library `sys_ops' | 14:20 | ||
| and I think there was a similar test in t/pmc/nci.t | 14:21 | ||
| because of moving ops out of 'core' | 14:22 | ||
|
14:23
bacek joined
14:24
aloha joined
14:28
tcurtis joined
14:42
Paul_the_Greek joined
|
|||
| Paul_the_Greek | G'day, kids. | 14:43 | |
| 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,
bluescreen joined
|
|||
| Paul_the_Greek | Does the Rakudo boolean type use the Parrot Boolean PMC? | 14:47 | |
| Coke | rakudo: ?1.WHAT.say | 14:48 | |
| p6eval | rakudo 5ae715: OUTPUTĀ«Int()ā¤Ā» | ||
| Coke | rakudo: (1==2).WHAT.say | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«Bool()ā¤Ā» | ||
| Coke | rakudo: (1==2).PARROT.say | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«Boolā¤Ā» | ||
| particle | Paul_the_Greek: github.com/rakudo/rakudo/raw/master...re/Bool.pm | 14:49 | |
| nwellnhof | src/builtins/Bool.pir: boolproto = p6meta.'new_class'('Bool', 'parent'=>'parrot;Boolean Cool') | ||
| it does | |||
| particle | hrmm, that doesn't help... nwellnhof++ beat me to it | ||
| Coke | boolproto = p6meta.'new_class'('Bool', 'parent'=>'parrot;Boolean Cool') | ||
| whoops. | |||
| so, yes, it uses the parrot Boolean as one of its parent classes. | 14:50 | ||
| particle | next time, fingers, copy the correct page. | ||
| whiteknight | Coke++ # doing a wonderful job with the handoff | ||
| Paul_the_Greek | particle: Huh? | ||
| Coke | whiteknight: yah, I think particle's being lazy on this one. ;) | 14:51 | |
| Paul_the_Greek | What is 'parrot; Boolean Cool' ? | ||
| Coke | paul;he's talking to himself. | ||
| whiteknight | Coke: don't worry, we're going to put him to work soon enough | ||
| :) | |||
| Coke | PTG: split on whitespace. | ||
| it's "parrot;Boolean" and "Cool". Cool is a p6 class/role/something. | |||
| Paul_the_Greek | Ah. | 14:52 | |
| particle | Cool gives classes a whole bunch of standard methods | ||
| nwellnhof | perlgeek.de/blog-en/perl-6/cool.html | 14:53 | |
| moritz++ | |||
| Paul_the_Greek | I see no mention of Boolean in Bool.pm. | ||
| particle | Paul_the_Greek: github.com/rakudo/rakudo/raw/master...s/Bool.pir | 14:54 | |
| i pasted the wrong url above, if that's where you were looking | |||
| 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 | ||
| Coke | (the perl6 stuff augments the pir definition) | ||
| 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:56 | |
| I would think so, since nothing in Bool.pir prevents it. | 14:57 | ||
| 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ā¤Ā» | ||
| particle | rakudo: my Bool $x = true; say $x / 8 | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«Could not find sub &true⤠in main program body at line 22:/tmp/YdIY6JQSLKā¤Ā» | ||
| particle | rakudo: my Bool $x = True; say $x / 8 | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«0.125ā¤Ā» | ||
| particle | rakudo: my Bool $x = True; say $x.succ | 14:59 | |
| Paul_the_Greek | rakudo: my Bool $x = true; say -$x | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«1ā¤Ā» | ||
| rakudo 5ae715: OUTPUTĀ«Could not find sub &true⤠in main program body at line 22:/tmp/LHn5G_jATEā¤Ā» | |||
| 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_ā¤Ā» | ||
| particle | rakudo: my Bool $x = True; say -$x | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«-1ā¤Ā» | ||
| particle | the Bool:: enums are capitalized | ||
| Paul_the_Greek | rakudo: my Bool $x = False; say -$x | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«-0ā¤Ā» | ||
| Coke | but on the face of it, you have no idea how rakudo is doing that math. | ||
| Paul_the_Greek | Huh? | ||
| Coke | Paul_the_Greek: huh? | 15:01 | |
| Paul_the_Greek | -0? | ||
| purl | well, -0 is a switch that specifies $/ in octal or www.fourmilab.ch/documents/univac/minuszero.html | ||
| Coke | yes? | ||
| particle | 622/20846 | ||
| purl | 0.0298378585819822 | ||
| aloha | 0.0298378585819822 | ||
| Paul_the_Greek | rakudo: my Bool $x = False, $y = -$x; say -$y | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«===SORRY!===ā¤Symbol '$y' not predeclared in <anonymous> (/tmp/siJyIU4I5V:22)ā¤Ā» | ||
| nwellnhof | en.wikipedia.org/wiki/Signed_zero | ||
| particle | Paul_the_Greek: -0 is a perfectly fine ieee746 value | 15:02 | |
| 754 even | |||
| Paul_the_Greek | Why would floats come into play at all? | ||
| 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 | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«Type check failed for assignment⤠in '&infix:<=>' at line 1⤠in main program body at line 22:/tmp/zhXXFeQfx3ā¤Ā» | ||
| particle | they shouldn't come into play. | ||
| Coke | nwellnhof: that's not entirely true. | 15:04 | |
| nwellnhof | rakudo: say "3.5" + True | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«4.5ā¤Ā» | ||
| Coke | so, paul, is your quesiton answered? | ||
| particle | rakudo: my Bool $x = False; say $x -= $x; | ||
| Paul_the_Greek | rakudo: my Bool $x = False; my Bool $y = ! $x; say $y | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«Type check failed for assignment⤠in '&infix:<=>' at line 1⤠in main program body at line 22:/tmp/wKV_dpOyv2ā¤Ā» | ||
| rakudo 5ae715: OUTPUTĀ«1ā¤Ā» | |||
| Coke | note that you can also talk to p6eval in private. ;) | ||
| Paul_the_Greek | It appears that I cannot use integer operators willy-nilly. | ||
| nwellnhof | coke: so what does perl6 exactly? | 15:05 | |
| particle | Paul_the_Greek: be careful | ||
| purl | if you can't be careful, name it after me | ||
| particle | you're looking to do parrot;Integer operations on the perl6;Bool | ||
| perl6;Bool does not inherit from perl6;Integer | |||
| Coke | rakudo: say (4/10).perl | ||
| p6eval | rakudo 5ae715: OUTPUTĀ«2/5ā¤Ā» | ||
| 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
|
|||
| 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 | ||
| Coke | and see what breaks. | ||
| Paul_the_Greek | Coke, particle: Agreed. | ||
| Coke | it is possible to analyze the code and figure this out ahead of time, but... that's a pITA. | ||
| nwellnhof | break things first, ask questions later ;) | 15:07 | |
| Paul_the_Greek | pITA? A bread reference? | ||
| Coke | PITA? | ||
| 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 ali.as/pita (for now) or MAGnet#pita or new and cool or socks glue www.jbox.com/PRODUCT/DAI545 or People Eating Tasty Animals | ||
| whiteknight | pain in the ass | ||
| Paul_the_Greek | Right. | ||
| My first task is to write a Boolean benchmark. | |||
| Andy | Check one: [ ] Fast, [ ] Slow | 15:13 | |
| Coke | Andy, do you have any relatives named "Moe" ? | 15:14 | |
| Andy | Are you following me on Facebook/ | ||
| ? | |||
| whiteknight | no, it was on failblog | ||
| Andy | oh, right | 15:15 | |
| I posted that to FB saying "3rd grade taunting come to life (and death)" | |||
| Coke | and also, I am following you on facebook. | ||
| but I don't follow facebook in realtime. | |||
| failblog, yes. | 15:16 | ||
| I am wonder why people that wish to have a private email conversation would not.. .just. send a private email. | 15:18 | ||
| *ing | |||
|
15:24
theory joined
|
|||
| Coke | ugh. someone needs to go through the PIR book again. | 15:30 | |
| (getting started refers to "make install-dev") | |||
|
15:35
wagle left,
wagle joined
|
|||
| Paul_the_Greek | Could someone explain the $Id line? I can't find anything in the guidelines document. | 15:44 | |
| moritz | Paul_the_Greek: it's an svn feature, which expands the $Id$ to the last change revision and date/time | 15:45 | |
| Paul_the_Greek | So if I'm creating a new file, I just put $Id$ in it? | 15:46 | |
| moritz | yes | 15:49 | |
|
15:55
jan left
15:59
jan joined
16:04
chromatic joined
16:10
whiteknight left
|
|||
| smash | chromatic: ping | 16:10 | |
|
16:12
Paul_the_Greek left
16:16
robin-gvx left
|
|||
| chromatic | smash pong | 16:16 | |
| smash | chromatic: add some more data to the table in gil.di.uminho.pt/users/smash/rakudo-bench.html % faster/slower as you suggested | 16:18 | |
| still have some doubts on what values to use tho | |||
| chromatic | I'd compare averages. | ||
| smash | i added the % increase for min/avg/max values, check the hover info on 2010.08 rakudo | 16:19 | |
| chromatic | Very nice. | 16:20 | |
| particle | yes, compare averages for sure | 16:22 | |
| smash | particle: min/avg/max values are being compared | ||
| particle | the hover info shows minimums, not avg | 16:23 | |
| 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 | ||
| also, i'd invert that table, as the number of distributions will grow more frequently than the number of scripts | 16:26 | ||
|
16:27
whiteknight joined
|
|||
| smash nods. | 16:27 | ||
| particle | oh... hover info on the table shows %, now i see. nice | 16:28 | |
| hover info on the chart shows you're comparing minimums | |||
| Andy | smash: Any reason for me to NOT Tweet that page to @perlbuzz? | 16:29 | |
| smash | particle: yes | ||
| Andy: no, go ahead if you wish | |||
|
16:30
nwellnhof left
|
|||
| 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:31 | |
| anyway, these are cool charts. where is the code that implements them? | 16:32 | ||
| Andy | twitter.com/perlbuzz/status/22901930965 | 16:33 | |
| smash | particle: yes, i'm still considering the 0-based y-axis.. | 16:34 | |
| particle: the charts are created with a JS library (www.highcharts.com/) | |||
| whiteknight | smash: what's the link? | 16:55 | |
| purl | well, the link is for me? | ||
| smash | whiteknight: sorry, the link for ? | 16:57 | |
|
17:21
Paul_the_Greek joined
|
|||
| Paul_the_Greek | PMC implementation question. | 17:21 | |
| 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:22 | ||
| I notice that Integer does a GET_ATTR in all three, rather than in only one. | 17:23 | ||
|
17:24
chromatic left
|
|||
| cotto_work | depends on how much we care about the overhead of an extra function or VTABLE call | 17:24 | |
| 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 | |
| For Integer, I'd have to override all three functions if I had a new representation for the integer. | |||
| Personally, I think speed of low-level PMCs is more important. | 17:27 | ||
| 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. | ||
| tcurtis | Perhaps there could be a static function in integer.pmc that get_{bool,integer,number} all call (which hopefully will be inlined). | 17:31 | |
| Paul_the_Greek | The new Boolean PMC does not inherit from Integer, so it provides its own getters and setters. | 17:32 | |
|
17:32
hercynium joined
|
|||
| 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 | |
| I think cotto's suggestion for benchmarking is good. | |||
| 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:36 | |
| 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. | ||
| 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. | ||
| Paul_the_Greek | Of course, all three getters are trivial and easy to override, and a comment would point out the situation. | ||
| Ah, cotto brings up the CR syndrome. Indeed, you are correct, sir. | |||
| 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. | ||
| This was in 1971, so it seemed important at the time. | 17:41 | ||
|
17:41
nwellnhof joined,
theory left
|
|||
| cotto_work | wfm. I like that. | 17:41 | |
| kinda like bikeshedding, but for performance | |||
| Paul_the_Greek | My friend Bill and I use the actual name, but she shouldn't be embarrassed on a public forum. :D | ||
| Yes. | |||
| 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? | ||
| dukeleto | mornin' | ||
| Paul_the_Greek | Howdy dukeleto. | 17:43 | |
| cotto_work | I'm not aware of anything like that. | ||
| Paul_the_Greek | It seems like a good idea, no? | ||
| 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 | |||
| cotto_work | I'm shocked. | ||
| Paul_the_Greek | I think only Rakudo uses it, but it just seems like the right thing. | ||
| particle accelerates | 17:45 | ||
| tcurtis | P6metaclass.accepts returns Boolean PMCs, I think. | ||
| Yes, it does. It pre-allocates one for true and one for false to avoid having to allocate a new one every time. | 17:47 | ||
| Paul_the_Greek | Sounds like a job for super-Boolean. | 17:48 | |
| One more question, oh patient ones. | 17:49 | ||
| dukeleto attempts to differentiate between one particle and another ... and fails. | |||
| Paul_the_Greek | The immediate forms of operations modify in place. How is that valid for immutable PMCs? | 17:50 | |
|
17:50
preflex left
|
|||
| cotto_work | Which PMCs are immutable? | 17:52 | |
| Paul_the_Greek | Integer, for example. | ||
| Oh, hang on ... | 17:53 | ||
| It must be that there is never more than one reference to an Integer. | |||
| So modifying in place is okay. | 17:54 | ||
| cotto_work | assignment semantics are a mess | ||
| Paul_the_Greek | What happens when I code $P1 = $P0? | 17:55 | |
| whiteknight | probably set_p_p $P1, $P0 | 17:56 | |
| Paul_the_Greek | assign does a copy, it appears. | ||
| nopaste | "cotto_work" at 192.168.1.3 pasted "side-effects" (10 lines) at nopaste.snit.ch/23223 | ||
| Coke | smash: no clue if this is still relevant, but yellow on white is really hard to see. | ||
| smash: just loaded the latest version. awesome, nevermind. ;) | 17:57 | ||
| Paul_the_Greek | Both registers point to the same PMC. | 17:58 | |
| cotto_work | yes | 17:59 | |
| Paul_the_Greek | So what happens if I negate one of those registers? Will the assembler generate an in-place negate? | 18:00 | |
| Must test... | |||
| cotto_work | depends on whether you use the one- or two-arg form of neg | 18:01 | |
| dukeleto would appreciate if anybody interested could look at this Parrot coredump and tell me what they see: gist.github.com/564286 | 18:07 | ||
| 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 | |||
| 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: github.com/leto/plparrot/commit/6a5...7f0bb665bf | ||
| if anybody could share some of their wisdom with me, i would grealy appreciate it | 18:09 | ||
|
18:09
hercynium left
|
|||
| tcurtis | cotto_work: I think I accidentally assigned TT #1768 to you. Sorry about that. | 18:14 | |
| dukeleto begs people to look at his coredump backtrace | 18:15 | ||
| cotto_work | oh noes | ||
| that looks like one I should look into | 18:16 | ||
| whiteknight | dukeleto: would love to see that backtrace with an unoptimized build | ||
| 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? | ||
| 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 | ||
| dalek | TT #1768 created by tcurtis++: Profiling runcore breaks Rakudo. | 18:19 | |
| TT #1768: trac.parrot.org/parrot/ticket/1768 | |||
| tcurtis | dukeleto: I think there's --gen-parrot-options. | ||
| dukeleto | tcurtis: that seems vaguely familiar. hmmm | ||
| whiteknight | dukeleto: I don't know enough about rakudo's build | ||
| tcurtis | s/options/option/ | ||
| 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:23 | |
| cotto_work | You can always configure it manually or build with an installed Parrot. | 18:24 | |
|
18:25
pjcj left
|
|||
| tcurtis | Another option is to just modify your local Configure.pl to omit --optimize. | 18:25 | |
|
18:25
pjcj joined
|
|||
| cotto_work | It makes me sad how slow trac is. | 18:26 | |
|
18:26
preflex joined
|
|||
| 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:26 | |
| cotto_work | you could go into parrot/ and run Configure.pl manually with whatever other options Rakudo passes to it | 18:28 | |
|
18:28
patspam joined
18:33
silug left
|
|||
| tcurtis | TT #731 looks like it's fixed. According to docs.parrot.org/parrot/latest/html/....ops.html, '$I0 = stat path, 0' should do what Coke wanted there. | 18:34 | |
| dukeleto attempts to get Rakudo running on an unoptimized parrot | 18:36 | ||
|
18:38
senf_statt_oel joined
|
|||
| dalek | parrot: r48773 | nwellnhof++ | branches/charset_massacre (30 files): | 19:35 | |
| parrot: Bring branch up-to-date with trunk | |||
|
19:35
dalek left
19:36
dalek joined
|
|||
| tcurtis | msg plobsing Was the patch in TT #1549 ever applied? Can the ticket be closed now? | 19:48 | |
| purl | Message for plobsing stored. | ||
| aloha | OK. I'll deliver the message. | ||
|
19:51
theory joined
|
|||
| cotto_work | an embarrassingly slow demo side demoing the github trac plugin is up at mksig.org/trac/wiki/WikiStart | 19:56 | |
| The speed is due to a combination of trac being slow and my vm being underpowered. | |||
|
19:59
pjcj left
|
|||
| particle hands cotto_work some more electrons | 19:59 | ||
|
20:01
jan left
20:02
whiteknight left
|
|||
| dalek | kudo: 52f9ea8 | pmichaud++ | src/builtins/Array.pir: Refactor Array.new and circumfix:<[ ]> so that subclasses of Array properly instantiate the correct type. Reported by Util++ on #perl6. |
20:05 | |
|
20:06
jan joined
|
|||
| Coke | tcurtis: exists != executable | 20:06 | |
| tcurtis was clearly not thinking sanely. | |||
| Coke | ugh. i would rather tickets had NO category than be forced into 'core' | 20:11 | |
|
20:11
silug joined
|
|||
| Coke supposes he could open a few dozen more tickets with missing functionality. | 20:12 | ||
| Given that that one's been open for 15 months, though, probably not worth the time until they are actually blocking me. | 20:13 | ||
| mmm, grapemes. | |||
|
20:32
bluescreen left
20:46
bluescreen joined
20:59
patspam left
21:05
whiteknight joined
21:09
bluescreen left
21:13
mikehh left
|
|||
| GeJ | Bonjour everyone. | 21:20 | |
| cotto_work | hi GeJ | ||
|
21:21
fperrad left
|
|||
| 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? | ||
| Paul_the_Greek | I wrote a benchmark that does what I think are typical boolean operations. | 21:26 | |
| cotto_work | nopaste? | ||
| purl | i heard nopaste was nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or paste.scsys.co.uk or www.extpaste.com or gist.github.com or App::Nopaste or codepeek.com/paste/ or (: pastebot) | ||
| Paul_the_Greek | nopaste the PMC code? | ||
| Or the benchmark? | 21:27 | ||
| purl | It seems faster | ||
| cotto_work | both? | 21:28 | |
| nopaste | "Paul_the_Greek" at 192.168.1.3 pasted "New Boolean benchmark" (69 lines) at nopaste.snit.ch/23226 | 21:29 | |
|
21:29
M_o_C joined
|
|||
| nopaste | "Paul_the_Greek" at 192.168.1.3 pasted "New Boolean.pmc (without pod)" (103 lines) at nopaste.snit.ch/23227 | 21:30 | |
| cotto_work | You should stick that into a branch. | 21:36 | |
| Paul_the_Greek | What's the advantage over simply committing it eventually? | 21:37 | |
| whiteknight | branch gives the ability to test it rigorously | 21:38 | |
| cotto_work | easier for others to test | ||
| Paul_the_Greek | Okay, will do. | ||
| cotto_work | and commit fixes, if needed | ||
| Paul_the_Greek++ | |||
| Paul_the_Greek | Thanks! | ||
| 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 | ||
| It's a bit magical in that imcc looks at the output filename to decide what to put into it. | 21:40 | ||
| if it sees -o x.pasm, it'll output pasm, if it sees -o x.pbc it'll output pbc | |||
| Paul_the_Greek | You're suggesting that option on the parrot command itself? | ||
| cotto_work | yes | ||
| Paul_the_Greek | parrot examples\\benchmarks\\boolean.pir -o boolean.pbc | 21:41 | |
| There is no boolean.pbc file anywhere in the directory tree. | |||
| cotto_work | -o boolean.pbc nees to come first | ||
| Paul_the_Greek | All righty then ... | ||
| cotto_work | otherwise it'll try passing -o boolean.pbc to your script | ||
| Paul_the_Greek | Oh, that makes sense. | 21:42 | |
| Now I can disassemble this pbc file somehow ... | |||
|
21:42
M_o_C left
|
|||
| 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
|
|||
| cotto_work | forget pbc_disassemble | 21:42 | |
| purl | cotto_work: I forgot pbc_disassemble | ||
| Paul_the_Greek | Works great on my machine. | 21:43 | |
| cotto_work | It's gotten more stable since then. | ||
| 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
|
|||
| shockwave | Hi, people. | 21:45 | |
| purl paste | |||
| purl | i heard paste was see factoid nopaste | ||
| nwellnhof | nopaste? | ||
| purl | i heard nopaste was nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or paste.scsys.co.uk or www.extpaste.com or gist.github.com or App::Nopaste or codepeek.com/paste/ or (: pastebot) | ||
| nopaste | "shockwave" at 192.168.1.3 pasted "No reference semantics for certain uses of PMC!" (37 lines) at nopaste.snit.ch/23228 | 21:46 | |
| shockwave | I'm looking for a way to accomplish what the code I pasted sudjest. | 21:47 | |
| 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:48 | ||
| Instead, $P0 references the old value, which is fucking my shit up with cached registers. | 21:49 | ||
| NotFound | shockwave: box creates a new pmc, setattribute sets a pmc, doesn't assign to the one presen. | 21:52 | |
|
21:53
mikehh joined
21:54
M_o_C joined
|
|||
| shockwave | @NotFound: Thanks. As always, you're helpful. I'm thinking of something smart to ask that can help me make this work... | 21:54 | |
| NotFound | shockwave: if you don't need to mutate the type, $P0 = _p should be enough | 21:55 | |
| shockwave | thinking.... | 21:56 | |
| purl | hmmm... thinking is see `made of meat` | ||
| NotFound | Or you can just return $P1 | ||
| 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 | |
| I actually had this working, but, | |||
|
21:59
ruoso left
|
|||
| 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 | |
| It boils down to using getattribute once, and cache the result register to be used subsequently. | |||
| Of course, you can imaging all sorts of use cases within a method. | |||
| 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. | ||
| Basically, every time setattribute is used, all the old references are invalidated, then? | 22:02 | ||
| whether scalar or not? | |||
| NotFound | shockwave: setattribute sets the attribute slot, unless is set to the same PMC that was here before, you lose the reference. | 22:03 | |
| You keep a reference to some value that is no longer the current value of the attribute | |||
| If you want a different semantic for some class, you need to override the attribute access vtable functions | 22:04 | ||
| 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 | |
| @NotFound: err.. what? There's a possible way? | |||
| sweet. | |||
| 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 | ||
| @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:07 | ||
|
22:11
Andy left
22:17
bkuhn left
22:28
pjcj joined
|
|||
| Coke | uh, don't forget --output-pbc | 22:32 | |
| shockwave | @Coke, Who was that last message for? | 22:42 | |
| @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 | ||
| Thanks for your insight. | |||
|
22:45
M_o_C left
|
|||
| 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
|
|||
| Paul_the_Greek | That doesn't appear to be linked anywhere. | 23:07 | |
|
23:10
cotto_work2 joined
23:14
cotto_work left
|
|||
| dalek | parrot: 6a55637 | leto++ | t/sql/plperl6.sql: Add tests for a grammar in package scope These tests produce a core dump from Parrot that looks like gist.github.com/546982 |
23:27 | |
| parrot: 2b99026 | leto++ | t/sql/plperl6.sql: Make the global grammar test not core dump |
|||
| rrot: r48775 | Paul C. Anagnostopoulos++ | branches/sleeker_boolean: Boolean that does not inherit Integer |
23:30 | ||
|
23:32
PacoLinux left
23:33
PacoLinux joined
23:34
mikehh left,
PacoLinux left,
PacoLinux joined
23:37
particle left
23:38
mikehh joined
|
|||
| NotFound | shockwave: looks like a good solution | 23:40 | |
|
23:41
particle joined
|
|||
| 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:51 | |
|
23:53
cotto_work2 is now known as cotto_work
|
|||
| Paul_the_Greek | Will do. | 23:55 | |