Parrot 2.6.0 | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | merge html_cleanup (talk to Coke), merge gc_* branches, fix/replace/optimize hashing
Set by moderator on 10 August 2010.
00:00 Psyche^ joined 00:02 davidfetter joined
Paul_the_Greek ping bacek 00:04
So when a deprecation item says [eligible in 2.4], that means that in 2.4 or later it can be eliminated? 00:06
bacek_at_work Paul_the_Greek, pong
Paul_the_Greek Got a moment, bacek?
cotto_work Yes.
Paul_the_Greek Check out this ticket: trac.parrot.org/parrot/ticket/1207 00:07
bacek_at_work Paul_the_Greek, little bit.
cotto_work It actually means "this can be ripped out as soon as 2.3 has been released".
Paul_the_Greek bacek: Should we deprecate the flag or just document that it is unused?
bacek: The find_lex behavior was deprecated in 2.3 00:08
bacek_at_work Paul_the_Greek, I don't think that we need deprecation for it. But (for safety reasons) just put it into DEPRECATION.pod 00:09
Paul_the_Greek We're talking about the flag: document as unused and add to dep.pod
bacek_at_work yes
Paul_the_Greek Okay, will do. Thanks.
bacek_at_work It's exposed into PIR afaiu. So, proper deprecation is a "good thing" 00:10
Paul_the_Greek Yes, that's why I want to document it as unused, in case someone thinks there's a feature when there isn't. 00:11
bacek_at_work check with cotto about current "best practise" of deprecation. There is some page on wiki about it.
Paul_the_Greek Another question?
bacek_at_work go for it :)
Paul_the_Greek The OVERFLOW_FLAG is documented as "Throw math overflow instead of promoting to BigInt."
However, it is only consulted in the Integer PMC. Native integers never promote. 00:12
bacek_at_work We can't promote INTVAL registers
Paul_the_Greek So I'll improve the documentation to say that.
Right, native stays native.
dalek rrot: r48443 | Chandon++ | failed to fetch changeset:
[gsoc_threads] Merge from trunk.
00:13
Paul_the_Greek Also, some flags are documented as default on when they are default off and vice versa. I'll change the documentation to match the defaults.
cotto_work +1. We don't want our documentation to be any more deceptive than absolutely necessary. 00:16
Paul_the_Greek Agreed. Sarcastic perhaps, but not deceptive. 00:19
Procedure question: So let's say I have a pending patch that has not been committed. It hangs around for awhile. 00:31
Meanwhile someone else changes one of the files I changed.
When it comes time to commit my patch, mismatch problems.
How is that resolved?
cotto_work if it's a simple problem, the person who wants to commit the patch figures it out and resolves the conflicts 00:32
if not, you (as the submitter) get to do it
Paul_the_Greek Sounds about right.
So if I'm suspicious that this will happen, do I push for my patch to be committed, or play it cool? 00:33
dalek TT #1738 created by Paul_the_Greek++: Improve documentation of PARROT_ERRORS_*_FLAG
TT #1738: trac.parrot.org/parrot/ticket/1738
cotto_work push for the commit
Paul_the_Greek How/to whom?
cotto_work I suspect that this isn't merely a theoretical question.
depends on who knows the code and who's available 00:34
Paul_the_Greek Heh. No, it's not. But I'm playing it cool, being a newbie and all.
cotto_work Have you sent in a cla? I suspect you'll have a commit bit pretty soon if you want one. 00:35
Paul_the_Greek So perhaps a msg to the ticket reporter or the last person who looked at it.
cotto_work sure
Paul_the_Greek Ooh, oh my. Yes, I sent it in. Not sure I want to commit yet.
Okay, here goes.
cotto_work We only force commit bits on people about 45% of the time.
Paul_the_Greek I'll take it eventually. 00:36
msg bacek You might want to commit trac.parrot.org/parrot/ticket/1605 before long, since it affects files like pobj.h
purl Message for bacek stored.
Paul_the_Greek Is jkeenan a committer? 00:38
sorear yes 00:39
but we call him kid51 here
seen kid51
purl kid51 was last seen on #parrot 22 hours, 28 minutes and 10 seconds ago, saying: must sleep
Paul_the_Greek Oh, kid51.
msg bacek Reminder that I will on vacation starting Aug. 14.
purl Message for bacek stored.
Paul_the_Greek msg kid51 You might want to commit trac.parrot.org/parrot/ticket/481 before long, since it affects files like set.ops and float.pmc. I will be on vacation starting Aug. 14. 00:40
purl Message for kid51 stored.
Paul_the_Greek purl,help 00:41
purl #perl is not a help channel, and I'm not a help bot. If you want Perl help, try #perl-help or #metallica. or (see the 'help channel' factoid as well) or
Paul_the_Greek purl,messages
Time to pack for the beach. 00:42
whiteknight Paul_the_Greek++ 00:44
cotto_work msg Paul_the_Greek I wouldn't be too worried about the changes in #481. Merging is only tricky when a line that your patch modifies gets changed. In your case where the patch is mostly additions to a file that doesn't get changed often, the patch is not likely to become stale any time soon. 00:46
purl Message for paul_the_greek stored.
cotto_work wonders if purl truncates messages
msg cotto_work I wouldn't be too worried about the changes in #481. Merging is only tricky when a line that your patch modifies gets changed. In your case where the patch is mostly additions to a file that doesn't get changed often, the patch is not likely to become stale any time soon.
purl Message for cotto_work stored.
cotto_work ~~
looks like that one wasn't too long 00:47
msg cotto_work Lorem ipsum dolor sit amet, consectetur adipiscing elit. In lacinia dictum sapien vehicula tincidunt. Praesent in ligula lorem, ut venenatis arcu. Fusce et suscipit felis. Donec vitae sem at dolor commodo sagittis eget pellentesque lacus. Sed sed dui in justo malesuada egestas. Quisque vestibulum pulvinar quam sed viverra. Vestibulum tincidunt. 00:50
purl Message for cotto_work stored.
sorear cotto_work: I don't see why it should, IRC guarantees to silently truncate your message packet (including the addressing and command data) to 510 characters before purl even sees it 00:55
cotto_work how convenient
sorear you may have better luck sending the messages off-channel, PRIVMSG purl : uses up less of the quota than PRIVMSG #parrot:
cotto_work It's not been a limitation I've run into so far, but that might come in handy in the future. 00:56
sorear If you really want to push it, consider using a proxy with no rdns mapping 01:06
luben does out GC have some knowledge about hash memory layouts? 01:15
bacek_at_work luben, nope 01:16
luben ok, thats good :) I am trying to work on hash.c and I am getting some malloc errors. I'll check for errors in my code 01:17
01:26 plobsing joined
Chandon Why does no file in the entire parrot distribution fail to access Hashes through an abstract interface? 01:30
01:31 payload1 joined
Chandon Sorry, every file. 01:31
I was going for a triple negative there and failed.
luben yes, every file pokes with hash internals 01:32
cotto_work probably a (misguided|carefully optimized) attempt to increase performance
luben and the bad part is that the most performance critical paths use hash.pmc but still poke with hash.c internals 01:36
01:39 rurban_ joined
cotto_work We have that on ItsABugHunt. Too bad nobody's gotten to it. 01:43
I wonder how expensive it'd be to go through the proper layers. 01:45
Chandon The basic problem is iterating through a hash, so the "proper" solution would be to make a new HashIterator PMC. 02:08
cotto ~~ 02:29
03:00 janus joined
luben wow, i have succeeded to split allocations for hash bucket/index, after 2h in gdb 03:09
it's not heavy performance hit. now it's time for some optimizations that this change makes possible 03:15
03:26 chromatic joined 03:44 aloha joined 04:02 darbelo joined 04:36 bubaflub joined 04:46 dduncan joined 04:55 Chandon joined 05:00 LoganLK joined
Coke msg cotto "talk to particle about that. he was pursuing it." 05:04
purl Message for cotto stored.
cotto ok
05:10 LoganLK joined
plobsing msg Whiteknight based on wknight8111.blogspot.com/2010/01/pa...trix.html, can you confirm that TT #332 is no longer a problem? 05:11
purl Message for whiteknight stored.
05:42 LoganLK joined 06:02 uniejo joined
darbelo bacek_at_work: ping 06:05
06:15 dduncan left 06:16 jsut_ joined
cotto clock? 06:19
purl cotto: LAX: Thu 11:19pm PDT / CHI: Fri 1:19am CDT / NYC: Fri 2:19am EDT / LON: Fri 7:19am BST / BER: Fri 8:19am CEST / IND: Fri 11:49am IST / TOK: Fri 3:19pm JST / SYD: Fri 4:19pm EST /
cotto Happy Friday, bacek 06:20
darbelo Friday's old news to him by now.
cotto wolfram alpha wins: www.wolframalpha.com/input/?i=calor...0a%20bagel 06:21
bacek_at_work darbelo, ping 06:22
cotto Watch out! It might be a Ping of Death! 06:23
darbelo bacek_at_work: I may be confused by the many pools and arenas in the gc, but is there a sane way to know when I've move the last 'live' buffer from a given pool? 06:25
For the unshared_buffers branch. 06:26
bacek_at_work darbelo, strings are allocated from string_pool only. Constant strings from constant_string_pool but we don't compact it (afair)
darbelo Sorry, I think I meant block. 06:27
I want to free blocks earlier in compact_pool, rather than have that as a separate step. 06:29
bacek_at_work without shared buffers you can just check block->freed + block->free == block->size
tcurtis cotto: What's so remarkable about the number of calories in a bagel? 06:32
darbelo Right, I can make move_one_buffer() update that, and discard the block after the last move.
Okay, I think I have all the data I need for now. 06:36
bacek++
cotto tcurtis, not that, just all the extra info that is displayed 06:37
tcurtis ah, yes. That is quite nice. 06:41
dalek rrot: r48444 | NotFound++ | trunk/src/pmc/capture.pmc:
Don't set custom mark flag on empty Capture
06:51
moritz purl, msg chromatic the gc_tuning branch gives rakudo a modest speedup, 1414 vs. 1447 wallclock secs on spectest 06:54
purl Message for chromatic stored.
moritz (1447 - 1414) / 1447
purl 0.022805805114029
darbelo moritz: For gc stuff rakudo startup is also a significant benchmark. 07:00
chromatic also likes callgrind instruction counts a whole lot more than wallclock for performance measurements. 07:01
(for rakudo startup, anything else takes just too long.) 07:02
dalek rrot: r48445 | NotFound++ | trunk/t/op/string.t:
test string split with null args
07:07
cotto If that measurements is an average, that's good news. 07:08
moritz it's an average over 527 test files each 07:09
sorear it sounds like make spectest is mostly a startup time benchmark 07:10
cotto Sure. There wouldn't be many long-running tests. 07:12
moritz there are 07:13
for regexes and trig functioins
sorear hrm. that gives me an idea
sorear wonders how much faster the spectest harness would be if it did App::Persistant-like forking instead of reloading perl6 500 times 07:14
07:19 fperrad joined
dalek parrot: d1c5346 | (Jonathan "Duke" Leto)++ | Makefile:
PERL6PBC no longer needs to be specified

variables. jhelwig++
07:21
dukeleto sorear: considerably faster 07:22
07:38 mj41 joined
dalek rrot: r48446 | NotFound++ | trunk/src/pmc (2 files):
Don't set custom mark flag on empty RPA/FPA
07:40
rrot: r48447 | plobsing++ | trunk/src/pmc (2 files):
avoid creating useless packfile objects when performing freeze/thaw operations on packfiles

improves rakudo hello world by 0.586%
mikehh t/perl/Parrot_Test.t - Failed test: 70 in make corevm/make coretest, test and perl_tests in fulltest 07:43
all other tests PASS (pre/post-config, make corevm/make coretest, test, fulltest) at r48445 - Ubuntu 10.04 i386 (g++ with --optimize)
working on fixin' the test for Test::Simple/Builder 0.96 07:44
07:51 mj41 joined
dalek rrot: r48448 | NotFound++ | trunk/src/pmc/fixedstringarray.pmc:
Don't set custom mark flag on empty string arrays
07:57
08:14 simcop2387 joined 08:23 cosimo joined 08:37 AndyA joined 09:07 lucian joined
mikehh gah that was horrible - think that the test - t/perl/Parrot_Test.t has been sorted out, some more tests before committing :-{ 09:21
09:41 rurban_ joined 09:45 luben_work joined
dalek rrot: r48449 | mikehh++ | trunk/t/perl/Parrot_Test.t:
incorporate changes necessary for test to pass with Test::Builder post version 0.94
09:54
TT #1739 created by mikehh++: Latest CPAN Module Test::Builder caused test failure 10:17
TT #1739: trac.parrot.org/parrot/ticket/1739
10:44 jsut joined 12:03 whiteknight joined 12:04 AndyA joined
whiteknight good morning, #parrot 12:08
luben_work good localtime() 12:18
it's late afternoon here
12:27 ruoso joined
whiteknight purl msg plobsing you are correct, TT #332 was closable. It is now done. I submitted a smolder report this morning on that platform to prove the case 12:45
purl Message for plobsing stored.
dalek TT #332 closed by whiteknight++: icc-10.0 32bit imcc crash 12:46
TT #332: trac.parrot.org/parrot/ticket/332
13:02 vino_bot joined 13:03 vino_bot joined
luben_work purl msg chromatic I have tested separate allocation of buckets with differend sized and I have done some optimizations on it: lazy buckets allocation, do not rehash until numbre of buckets reaches index size. The results are not optimistic rakudo startup went from 630 to 690ms. I have made a separate function parrot_create_sized_hash but I do not where it could be used in order to boost performance 13:10
purl Message for chromatic stored.
13:15 bluescreen joined
luben_work purl msg chromatic Actually the optimizations (lazy alloc and n<m) do not shave a lot of execution time - from 696 to 690ms. It seems that the cost of separate buckets allocation could not be regained. 13:19
purl Message for chromatic stored.
mikehh whiteknight: query how did you submit a smolder report? 13:37
dalek a: c71335e | fperrad++ | dynext/pmc/luastring.pmc:
Parrot_find_global_s() is gone,
whiteknight mikehh: ah, I didn't know the smolder server was down 13:48
when I ran "make smoke", it gave me the same timeout error that it always does. I just assumed that it was actually working 13:49
13:49 bubaflub joined
particle i've put a ticket in with osuosl to get us smolder. actually, i put it in ten days ago, with no response. i sent a follow-up yesterday, with no response yet. i'll make sure to get a response today, with a date. 13:52
13:54 Paul_the_Greek joined
Paul_the_Greek Good morning folks. 13:54
dalek a: b2d2f85 | fperrad++ | doc/running.pod:
with setup.pir (distutils)
13:55
mikehh particle: mpeters has been providing smolder services for us, maybe you could contact him and see if he has any updates, etc - Michael Peters <mpeters@plusthree.com> 13:56
Paul_the_Greek Can someone give me the URL for DEPRECATED.pod? All the links to it are broken.
particle i'm sorry, i thought that was done already. am i wrong?
i could certainly ask... he doesn't bite. 13:57
mikehh particle: I emailed him and he replied: Sorry, I'm having some problems with that machine. I'm going to have to move smolder some place else. Please bear with me as I find the time to do that. 13:58
I thought that someone else had taken it up, but have not been in touch with him since
particle ok, well, volunteers.
purl volunteers are FRESH MEAT! MUAHAHAHAHA
mikehh I can send him another email asking him to contact you 13:59
TiMBuS Woah. Oracle are suing Google over the dalvik VM. Apparently one software patent they infringed was: ā€œInterpreting Functions Utilizing A Hybrid Of Virtual And Native Machine Instructionsā€ 14:00
atrodo Uh oh
mikehh I don't see how they can support that patent - previous art - eg Lisp Machine 14:01
atrodo The title is usually overly broad, so, out of curiosity, i'm going to go read the claims of the patent 14:02
dalek rrot: r48450 | mikehh++ | trunk/src/pmc/fixedstringarray.pmc:
fix codetest failure - line length
14:03
TiMBuS www.scribd.com/doc/35811761/Oracle-...fringement 14:04
for the full text
particle mikehh: if you would, send him an email asking for a status update and copy me (particle@parrot.org)
TiMBuS Oracle America prays for judgment as follows: [...] C) An order that all copies made or used in violation of Oracle America’s copyrights, and all means by which such copies may be reproduced, be impounded and destroyed or otherwise reasonably disposed of; 14:05
um 14:06
Paul_the_Greek Can someone give me the URL for DEPRECATED.pod?
atrodo Patent doesn't sound good. But, it was filed 2002.
particle oracle wants to destroy all computers? 14:08
atrodo More than likely
14:09 fperrad joined
bubaflub Paul_the_Greek: what specifically are you looking for? 14:11
Paul_the_Greek The link to deprecated.pod from the Support Policy page is broken. I'm trying to view the page. 14:12
bubaflub Paul_the_Greek: ah, i see it now 14:13
lemme check what the link should be
i can patch the docs
Paul_the_Greek Great, thanks. I'm submitting a patch to DEPRECATED.pod, which is why I noticed. 14:14
bubaflub Paul_the_Greek: well, we can get that patch in first. point me to the ticket and i'll apply it for ya. 14:15
Paul_the_Greek I'm about to attach the patch. Will you be around in 5 minutes? 14:16
bubaflub Paul_the_Greek: that's strange. DEPRECATED.pod.html isn't giving a 404, but it's just returning nothing. perhaps we need to regenerate it on the website.
Paul_the_Greek: yep.
14:16 plobsing joined
Paul_the_Greek Note that the first link to it (done with L) is broken. The other two links (done with F) are giving blank pages. It's rather odd. 14:16
particle Paul_the_Greek: received your CLA yesterday. 14:18
Paul_the_Greek Wonderful. Now I be official.
Coke Paul_the_Greek: I'm not sure there is a URL. (which would probably suck). why do you need it?
bubaflub Coke: there is a link to DEPRECATED.pod from docs.parrot.org/parrot/latest/html/...y.pod.html that goes nowhere 14:19
Coke also, "make html" is broken. look for a ticket about zero sized files being generated, adn add that one to the pile.
bubaflub Coke: ah, makes sense. i'll update the ticket.
Coke ok. please open a ticket and assign it to me so that doesn't get lost. 14:20
oir update, perfect, danke.
Paul_the_Greek bubaflub: Here's the ticket: trac.parrot.org/parrot/ticket/1738
Should I do something special to a ticket to note that there is a pending removal of a deprecated feature? 14:22
Coke ... that's not the ticket for the html, just to be clear to those logging.
Paul_the_Greek: you could mark it as of type "deprecation", but no one really cares.
bubaflub Coke: updated TT #765
Coke bubaflub: danke.
Paul_the_Greek I guess dep.pod acts as the official list.
Coke yes. 14:23
bubaflub Paul_the_Greek: I've applied your patch, i'm going to run all the codingstd tests. I'll fix any errors and then commit it. 14:25
14:27 robin-gvx joined
dalek TT #1738 closed by Paul_the_Greek++: Improve documentation of PARROT_ERRORS_*_FLAG 14:28
TT #1738: trac.parrot.org/parrot/ticket/1738
TT #1738 reopened by Paul_the_Greek++: Improve documentation of PARROT_ERRORS_*_FLAG
TT #1738: trac.parrot.org/parrot/ticket/1738
Paul_the_Greek Great, thanks bubaflub.
Coke bubaflub? 14:29
purl i think bubaflub is Bob Kuo, mailto:bobjkuo@gmail.com
Coke botsnack
purl :)
Coke wonders how much of his karma is freebies from the beverage. 14:30
bubaflub Paul_the_Greek: committed in r48451. i'll update and close the ticket.
Paul_the_Greek Thanks! 14:31
bubaflub Coke: wadda ya mean?
Coke bubaflub: regarding karma? 14:33
bubaflub regarding "beverage" 14:34
Coke www.coke.com/ ?
bubaflub ahhhhhh
*that* beverage
Coke the eponymous one and only.
bubaflub Coke II: Coke with a vengeance 14:35
dalek rrot: r48451 | bubaflub++ | trunk (2 files):
[TT #1738] Improve docs of PARROT_ERROR_*_FLAG Paul_the_Greek++
14:36
14:44 theory joined
dalek TT #1738 closed by bubaflub++: Improve documentation of PARROT_ERRORS_*_FLAG 14:44
TT #1738: trac.parrot.org/parrot/ticket/1738
rrot: r48452 | plobsing++ | trunk/t/native_pbc (7 files):
native_pbc platform updates
14:53
Coke note: things are eligible only after a supported release. if you're adding a note for something to be removed NOW, it's not eligible until just after 2.9 14:56
(so, adding a fresh "eligible in 2.7" is wrong) 14:57
dalek kudo: 938b133 | moritz++ | src/core/Match.pm:
be explicit about .keys, .values, .kv and .pairs in Match
14:59
bubaflub Coke: should i update that last commit to say 2.9 instead? 15:00
15:01 allison joined
mikehh t/pmc/pmc.t - Failed test: 3 with Segmentation fault 15:05
15:07 chromatic joined
bubaflub mikehh: i'm seeing that same error on r48451 15:07
15:19 fperrad joined 15:20 allison joined
Coke bubaflub: 2.10 15:20
bubaflub Coke: ok, i'll fix that. 15:21
Coke it's eligible for removable in "the first release after the next supported release"
(which practically means 'rip from svn as soon as the next supported release is tagged')
bubaflub Coke: fixed in 48453 15:25
Coke bubaflub: danke.
dalek rrot: r48453 | bubaflub++ | trunk/DEPRECATED.pod:
the first release after the next supported release would be 2.10, not 2.7
15:26
15:31 bacek joined 15:37 aloha joined
Coke jnthn++ # signature talk 15:40
dalek rrot: r48454 | fperrad++ | trunk/t/op/calling.t:
add test for TT#1733
15:43
Coke I thought notfound already added a test for that.
huh 15:45
15:48 jan joined
dalek TT #1733 closed by fperrad++: calling convention broken 15:51
TT #1733: trac.parrot.org/parrot/ticket/1733
Coke oh, notfound said we needed a test, he didn't write one. ;) 15:59
chromatic t/pmc.t #3 segfaults for me 16:05
ImageIO PMC changes... I can fix that. 16:08
mikehh chromatic: got a backtrace and # src/packfile.c:590: failed assertion 'pf' 16:20
chromatic Yeah, it's r48447.
I'm going to put in a quick fix, then give plobsing some suggestions to improve things.
My Right Fix isn't.
msg plobsing Please see r48455. 16:23
purl Message for plobsing stored.
particle try the left one 16:26
Coke gives up on #perl6 again for a while. 16:27
chromatic Hm, someone sped up Rakudo again. 16:31
jnthn \\o/ 16:32
luben_work chromatic, yes
jnthn someone++
dalek rrot: r48455 | chromatic++ | trunk/src/pmc/imageio.pmc:
[PMC] Fixed segfaults in ImageIO PMC's destroy().

attribute" flag is on but there's no PackFile attribute. This makes C sad. The culprit is r48447. A better approach is to use PObj_custom_destroy_SET() only when it's okay to destroy this attribute, but that fix will take longer. In the meantime, this works at the expense of a bit of extra work.
16:33
luben_work chromatic, do you want a patch that reverts the constant_pmc checks in fill_params, that I have introduces with last patch?
chromatic I'm not sure. I think that may have been noise. 16:35
luben_work ok, I do not see a difference either
next thing to try is paged allocation for hash->buckets 16:36
chromatic, do we use macros of that type: pastebin.com/Ph4UrqJQ 16:39
I am not sure about the compilers support, coding standards etc. 16:40
chromatic Seems reasonable to me. 16:41
luben_work I have replaced all copy/paste code in the tree with this macro 16:42
so if I change hash internals, the only place that I have to update is this macro
chromatic I like it. 16:43
luben_work I could send a patch 16:44
Coke wouldn't an inline function theoretically DTST?
particle and be better for PARROT_EXPORT? 16:45
embedders will want to take advantage of this, and macros polluting the global namespace is bad. 16:47
Coke Oh. I just reread the macro. nevermind.
(that does NOT look extractable into an function) 16:48
chromatic Yeah, those concerns don't apply to this macro.
particle yeah. do we have a coding convention for macro names? case, prefix, etc? 16:51
16:54 allison joined
dalek kudo: c41bcd7 | moritz++ | src/core/Match.pm:
Match.new roundtrips from Match.perl
17:00
darbelo allison: Hi. 17:07
luben_work I have sent a patch to parrot-dev list, for evaluation and discussion of proposed macros and their usage 17:19
time to go home... 17:21
dalek rrot: r48456 | darbelo++ | branches/unshared_buffers/src/gc/mark_sweep.c:
Remove misleading comment.
17:23
rrot: r48457 | darbelo++ | branches/unshared_buffers/src/gc/alloc_resources.c:
Turn speculative comment into action. Harms nothing.
rrot: r48458 | darbelo++ | branches/unshared_buffers/src/pmc/stringbuilder.pmc:
Update stringbuilder to the new substr semantics.
rrot: r48459 | darbelo++ | branches/unshared_buffers/src/gc/alloc_resources.c:
Remove a check for a condition that can't be true.
rrot: r48460 | darbelo++ | branches/unshared_buffers/src/gc (2 files):
Prune the Variable_sized_pool struct of members that were only useful with cow.
rrot: r48461 | darbelo++ | branches/unshared_buffers/src/gc/alloc_resources.c:
Make sure we keep the free mem counters up to date in the buffer_pools.
rrot: r48462 | darbelo++ | branches/unshared_buffers/include/parrot/pobj.h:
Remove a macro with a misleading name and some obsolete pointer masking.
rrot: r48463 | darbelo++ | branches/unshared_buffers/src/gc/alloc_resources.c:
Add a function to free just one block and swith compact_pool to use it.
rrot: r48464 | darbelo++ | branches/unshared_buffers/src/gc/alloc_resources.c:
Properly nest checks.
rrot: r48465 | darbelo++ | branches/unshared_buffers/src/gc/alloc_resources.c:
There is no point in calling compact_pool() after calling Parrot_gc_mark_and_sweep(). The pools are already compacted by then.
chromatic Is r48465 a cherry pick to trunk? 17:25
17:33 allison joined
allison darbelo: flakey conference network 17:33
darbelo: hi
purl hi, allison.
cotto_work ~~ 17:38
darbelo allison: I'm still working on unshared_buffers, which has kinda turned into gc refactor work by now. 17:40
allison darbelo: sounds like a case of creature feep :) 17:41
(feature creep)
17:41 rurban_ joined
allison darbelo: how's the general progress otherwise? is unshared_buffers a blocker, or mostly on the side? 17:42
darbelo It's mostly on the side by now. The NFG is pretty much all there now, and it allowed some cleanups on the charset/encoding side, that are in the branch as well. 17:43
allison darbelo: excellent 17:44
darbelo I thought I would get a sizable benefit from reducing the string header size, which I did separately in unshared_buffers.
That sped up our string becnhmarks by a solid 10%, but chews through our string pools faster, which causes trouble for Rakudo. 17:45
And PCT parsers in general, really. 17:46
allison because we're creating more string copies?
chromatic Substrings, to be specific.
allison yah, that was the risk we predicted
(specifically, in removing the last traces of the COW code) 17:47
darbelo AFAICT, most are small and fairly short lived, but they fragment our pools more and tickle compact_pools in the wrong way. 17:48
allison more heavily exposing our need for copying and compacting GC 17:49
darbelo We also do some questionably-timed string compacting along the way. Which doesn't help.
chromatic darbelo, can you annotate STRING creation to see the sizes of these substrings?
allison so what have you been focusing on in the GC refactors? 17:50
darbelo allison: Yeah, I'm trying to add some smarts to compact_pool now, make it more 'precise'. 17:51
allison darbelo: good start
purl good start is probably the perldoc for files in compilers/PGE - but I feel my pain. documentation comes last after code, tests, and then maybe examples, it seems.
allison hush, purl
purl o/` don't you cry o/`
whiteknight purl forget good start 17:53
purl whiteknight: I forgot good start
darbelo I've also noticed that we do call substr with a constant 1 as 'length' argument, which is probably better handled by ord and an integer compare, but that's a separate thing. 17:55
chromatic: I can annotate the calls to substr() fairly easily. Not sure about other codepaths. 17:58
chromatic That should give us PCT information.
18:01 dafrito joined 18:03 davidfetter joined 18:04 AndyA joined
dalek TT #1740 created by ild++: pbc_dump crashes on certain inputs 18:06
TT #1740: trac.parrot.org/parrot/ticket/1740
darbelo Compiling rakudo's Actions.pm with annotated substr now. 18:09
cotto_work is ild in here by some other name? 18:10
I'm not sure how I feel about playing with a pbc file named exploit_0_0 18:11
darbelo 690237 total calls, 436821 made with lenght=1 18:12
purl: 436821 / 690237
purl 0.63285654057954
cotto_work though having a bunch of broken pbcs for debugging is nice. ild++ 18:13
18:14 luben joined
chromatic ord and compare it is! 18:15
darbelo To be fair, not all of thse are *constant* 1s, since I annotated the C side.
chromatic I wonder if they correspond to whitespace checks. 18:16
darbelo Also, each of those is taking up sizeof(void *) + the char itself + alignment in the pool, which is still smaller than the string header.
It's likely.
I'm not familiar enough with nqp internals to say for sure, but it's the most likely option. 18:17
chromatic Maybe we need an op for "Skip whitespace". pmichaud will know better, but I suspect he may say "In some cases we want to capture that."
darbelo What, the witespace? 18:18
chromatic Right.
Although within the non-capturing ws rule....
nopaste "darbelo" at 192.168.1.3 pasted "ack for pir::substr in rakudo's src/Perl6/Actions.pm" (8 lines) at nopaste.snit.ch/22758 18:22
darbelo The code "pir::substr(~$<typename>, 0, 2) eq '::'" will create two GC-ables, and do a string compare, right? 18:23
chromatic Looks like it.
purl No it doesn't, shut your hole!
darbelo Even with shared buffers it strikes me as a questionable thing to do. 18:24
chromatic It could chew through STRING headers in a hurry. 18:25
We need something more like streq_at 18:27
darbelo I wonder if a index variant that 'stops after this much' is the right thing to use here. 18:28
chromatic That comparison API we worked out a while back might do the trick. 18:30
The question is "Does this string at this position contain exactly this substring?" 18:32
18:32 brianwisti joined 18:37 robin-gvx joined
dalek kudo: 44f0ec0 | (Kyle Hasselbacher)++ | docs/ (2 files):
[docs] Misspellings caught by ispell
18:41
chromatic darbelo, that's one I think we should take to the list to figure out what PCT could really use and what Parrot should provide. 19:01
19:04 allison joined
darbelo chromatic: Okay, I'll mail parrot-dev later today. 19:04
chromatic +1
purl 1
chromatic It does tickle my intuition as something PCT could do better for great speed. 19:05
19:06 AndyA_ joined
darbelo Also, I think I've found a "leak" in our pool compaction scheme. 19:08
19:09 lucian joined
darbelo In order to cut down on copying we skip all pool blocks over 80% full. But, when creating storage for buffers bigger than the top block's free count we give that buffer a block all on it's own, 100% full. 19:11
allison darbelo: that's nutty 19:12
chromatic Seems like it'll never get freed.
darbelo Also, whenever we create one of this blocks we put it into the pool as the top block, regardless of the free size of the previous top block. 19:16
That means we will be performing a really big, possibly unneeded, allocation on the next compaction run. 19:17
19:18 LoganLK joined
chromatic How fixable is it? 19:18
darbelo I can fix the second part fairly easily, by passing in a "Don't put the new block at the top' to the block allocator. The 'leak' I have to think about. 19:22
chromatic Create a block of double that size?
dalek kudo: 0839993 | (Patrick Abi Salloum)++ | src/core/MAIN.pm:
Added short arguments parsing to MAIN
19:23
darbelo There's a todo in alloc_resources.c 19:24
* TODO - Big blocks
*
* Mark the block as big block (it has just one item)
* And don't set big blocks as the top_block.
chromatic Ah, so that's what it meant. 19:25
darbelo It's the part of mem_allocate that creates the 'big block'
chromatic I must have read that code several dozen times while trying to decipher it.
darbelo The other parts of the riddle were inside compact_pool and free_old_mem_blocks 19:26
OTOH, as long as we compact unconditionally on every mark and sweep (which is triggered on every mem_allocate call) the mis-handling of big blocks isn't our biggest problem. 19:32
I think we might need a threshold system to make compacting tamer or more aggressive as needed. 19:38
Coke pmichaud: ping. 19:41
chromatic That's the idea of the gc_threshold branch, or whatever its name is.
darbelo I thought that was for the header pools. 19:43
chromatic Oh, right. I thought you meant more broadly than you did. 19:44
darbelo As it stands now, every mark and sweep run is a full compact run. I want to sometimes skip it, or maybe even run a 'lazy' compact. 19:48
chromatic If we know the sizes, yeah. 19:49
moritz maybe just compact on every 5th mark?
tewk_ darbelo: only compact when you are going to regain at least some % of the space. 19:50
chromatic Lazy compact only when you can reclaim enough for the next allocation. 19:52
mikehh All tests PASS (pre/post-config, make corevm/make coretest, test, fulltest) at r48465 - Ubuntu 10.04 i386 (g++ with --optimize)
Paul_the_Greek Does the VM store the same string more than once? 19:56
chromatic That depends what you mean by "the same". There's no string interning at runtime. 19:57
Paul_the_Greek Okay, so the same content can show up more than once.
chromatic Yes.
darbelo Also, in order to make sure 'big blocks' eventually die. We ocasionally have to do a "more aggressive" run.
Paul_the_Greek Boy, that really makes me think that 1-character strings should be preallocated.
chromatic Preallocation does seem useful. 19:58
Paul_the_Greek Consider the overhead for each 1-character string.
About 32 to 1 or something.
chromatic That and the GC pressure. 19:59
Paul_the_Greek I'd love to see benchmarks of interning vs. not interning.
chromatic I'm curious to hear what pmichaud says about darbelo's findings though. If we can avoid the creation and disposal of substrings for that part of PCT, what happens?
cotto_work How often do we create 1-character strings? It sounds like a good idea but it'd be a good idea to profile first.
Paul_the_Greek Yes, it would. And it's related to whether the assembler optimizes substr(,,1). 20:00
Consider also the possibility of a substr1 opcode. 20:06
Or an optimization to chr(ord()). 20:07
61 uses or chr() in the various PIR files; 504 uses of substr , , 1 20:09
20:09 dafrito joined
darbelo Paul_the_Greek: See irclog.perlgeek.de/parrot/2010-08-13#i_2700241 20:12
Paul_the_Greek No thought shall go unrecorded. 20:14
It would be relatively easy to preallocate 1-character strings and then see if we get any improvement. 20:15
Are strings ASCII or Unicode by default?
chromatic It's feasible with immutable strings.
The default encoding is ascii. 20:16
darbelo For the record, the rakudo build passes --encoding=utf8 to parrot-nqp. 20:17
Paul_the_Greek So preallocate 256 (128?) ASCII strings and 128 Unicode strings. Fat strings would be good.
In fact, even with strings as they are, the preallocated ones could be fat, since they are pinned.
dafrito purl, fat strings? 20:18
purl dafrito: i haven't a clue
darbelo
.oO(a rope?)
Paul_the_Greek dafrito: A string whose data is stored right after the header, rather than in the variable-sized memory areas.
dafrito Paul_the_Greek: ah, okay 20:19
20:31 bluescreen joined
luben it does not seep a good idea to hand edit a patch file :) 20:34
Paul_the_Greek Unless you do it very very carefully. 20:35
chromatic I've done it. The trick is not to forget to delete trailing newlines. 20:39
luben Paul_the_Greek, yes, but half of the changes are gone, another unrelated changes are in, I have missed them (about the patch I sent with hash iteration macros proposition on the mailing list)
Paul_the_Greek Okay, I'm convinced. Don't do it. 20:40
luben chromatic, I am still new in handediting diffs :)
purl, git mirror? 20:41
purl luben: wish i knew
luben purl, git?
purl git is like svn but not a braindamaged amoeba or perl5.git.perl.org/perl.git or at git-scm.com/ or the source of all SCM happiness in the world. or the Emacs of source code management systems or easy!
luben purl, git-svn 20:42
purl i think git-svn is amazingly great or trac.parrot.org/parrot/wiki/git-svn-tutorial
20:43 mikehh joined
luben is this the official git mirror: github.com/leto/parrot 20:43
dafrito luben: AFAIK, yes 20:44
luben nice :) 20:45
bubaflub luben: that mirror is managed by dukeleto
luben I am lost in half a dozen svn checkouts here :( And you could not locally commit :( So, its everything or nothing 20:46
dukeleto++ 20:47
20:56 tcurtis joined 21:02 davidfetter joined 21:48 whiteknight joined 21:51 masak joined
masak I have a ByteBuffer question. how do I say "get a ByteBuffer from this string using this encoding"? 21:52
I have a feeling my question is slightly ill-posed, because I seem to recall that Parrot strings have an encoding in themselves.
darbelo masak: Yes. 21:53
You can transcode the string if it isn't in the encoding you need.
masak so maybe what I want is "turn this string to use that encoding, and then turn it into a ByteBuffer"?
right.
how?
darbelo $I0 = find_encoding 'Your Encoding' 21:54
$S0 = trans_encoding $S0, $I0
masak thank you. 21:55
where can I find a list of the available encodings?
darbelo fixed_8, utf8, utf16, ucs2, ucs4 21:56
masak ok. 21:57
let's say I wanted latin-1 to be in that list. what are my options?
cotto_work files in src/string/encoding/
dukeleto luben: is it not official, but it is a mirror
NotFound masak: ByteBuffer works the other way, it provides way to encode strings from raw data.
darbelo masak: That would be a charset, in the current scheme.
dukeleto luben: check the git-svn wiki page on parrot.org for a git-svn mirror 21:58
masak ah, ok.
dukeleto luben: gotta go, good luck!
masak NotFound: I think I'm using ByteBuffer to go in both directions in Rakudo currently.
where can I find a list of the available charsets? :) 21:59
darbelo We call it, iso-8859-1 and it uses fixed_8 as it's encoding.
NotFound masak: yeah, but it takes the string as is, without ability to recoding.
luben dukeleto++ thanks a lot, it seems that I have made myself a workflow with git in the last 1-2 years, and I miss some freatures with svn
masak ah, src/str/charset, of course.
darbelo ascii, iso-8859-1, unicode and binary.
luben I'll try git-svn page 22:00
masak thanks. this is a lot of information, but it's things I need to know anyway. darbelo++ NotFound++
NotFound masak: it can be added, but I'm not sure if it will give a measurable performance gain. 22:02
masak NotFound: no, me neither.
cotto_work luben: From its name, it's not clear what the parrot_hash_iterator macro does. Maybe parrot_hash_iterator_advance would be clearer. There are also some codingstd issues, but overall your patch looks like an improvement. 22:03
Do you mind filing a ticket?
luben cotto_work, thanks, I'l file a tiket. May be parrot_hash_iterator_advance is a better name. 22:05
masak is there a find_charset and trans_charset just like there's a find_encoding and trans_encoding? 22:06
cotto_work We might have a naming convention that says what the name should be.
darbelo masak: Yep. 22:08
masak \\o/
22:12 jsut_ joined
whiteknight In NQP, how do I register a built-in PMC type with P6metaclass? 22:17
jnthn Think that's the .register method 22:18
whiteknight jnthn: ok, let me move back a step: Where do I get a reference to P6metaclass?
jnthn whiteknight: Easiest way is just to .HOW something you know uses it. 22:19
(In Rakudo we just do that and cache it somewhere.)
whiteknight I'm trying to make basically something like a shared header in NQP that I can include into other NQP programs (by compiling it down to pbc and loading it). So I have a small file with basically one INIT block and no classes 22:21
and I was hoping NQP would include a reference to P6metaclass somewhere in the generated
PIR, but it doesnt
jnthn whiteknight: Are you in the Parort namespace? 22:22
whiteknight jnthn: I guess? I haven't specified any other namespace
jnthn If P6object.pbc is loaded then you should just have P6metaclass available.
See the synopsis in P6object.pir. 22:23
whiteknight P6object.pbc. I think that's what I'm looking for 22:26
thanks
dalek TT #1741 created by luben++: Macro abstraction for hash iterations 22:35
TT #1741: trac.parrot.org/parrot/ticket/1741
TT #1742 created by nwellnhof++: Skip compact_pool if all blocks are almost full
TT #1742: trac.parrot.org/parrot/ticket/1742
22:41 kid51 joined
whiteknight is there any way to unload a library from Parrot? 22:57
I don't see an "unloadlib" opcode, and no methods on the ParrotLibrary PMC 22:58
darbelo Ending your progrma? 23:00
whiteknight no, trying to clear things out for tests 23:02
darbelo Well, they are not singletons, so the gc should collect them, eventually. Unless it comes from the constant pool. 23:06
Either somthing is keeping it alive, in which case you could null out the reference and the gc will take care of it, or it's a constant and you are hosed. 23:07
dalek rrot-linear-algebra: 07879a6 | Whiteknight++ | (4 files):
add a new file src/nqp/pla.nqp, which is a bootstrap file which helps to setup

P6metaclass. Add a quick example of it's use in examples/nqp.nqp
rrot-linear-algebra: 7695a74 | Whiteknight++ | examples/nqp.nqp:
rename the example to something a little better
rrot-linear-algebra: bc1d869 | Whiteknight++ | src/nqp/pla.nqp:
load linalg, expecting it to be installed. Don't load it from a relative address
rrot-linear-algebra: 65bf0ac | Whiteknight++ | src/nqp/pla.pir:
remove a generated file from the repo
23:08
chromatic Hm, Rakudo's sort_candidates() is spendy.
... mostly because is_narrower() is super spendy.
StringBuilder's append_format() is worse. 23:09
jnthn chromatic: Does lots and lots of method calls. 23:10
chromatic ... thanks to Parrot_pcc_fill_params_from_varargs via Parrot_pcc_fill_params_from_c_args.
Yeah, that looks like the culprit.
jnthn The good news is that the sorting is static so one day we can do it at compile time and serialize it. 23:11
chromatic Allocating an RIA for parameter flags is expensive.
purl (649406 - 70250 ) / 649406 23:12
purl 0.89182422090341
jnthn chromatic: The thing is, just about all the calls it does are to an ACCEPTS method and it's always two args.
chromatic Wouldn't it be nice to be able to cache that signature somehow? 23:13
jnthn Yes. :-)
Do you know how to do that?
chromatic Without changing the current API?
jnthn Ah, OK 23:14
Parrot_ext_call is maybe not so ideal in this case. :-)
chromatic It isn't.
jnthn But I'm not sure what API I want.
s/want/should be using/
(if it exists)
chromatic I think we have to separate signature from context, if we haven't finished that already.
jnthn The binder also does loads of ACCEPTS calls 23:15
So we can improve that too. 23:16
chromatic If that means we can have immutable signatures, we're mostly there.
Immutable signatures helps PIR too. 23:17
jnthn *nod* 23:20
kthakore hi chromatic 23:26
Paul_the_Greek purl,messages 23:32
dalek rrot: r48466 | darbelo++ | branches/unshared_buffers/src/gc/alloc_resources.c:
Apply nwellnhof's patch from TT #1742.
23:47
Paul_the_Greek How do people decide which patches to commit when? 23:52
chromatic If it applies cleanly, passes tests, and looks sane to someone who knows something about the relevant code, it's safe enough to apply. 23:54
cotto_work deprecations that break compatibility are treated more formally and significant refactors usually go into a branch 23:56
but there's not much more than that
chromatic A couple of days before the release, the month's release manager asks people to stop committing code changes. 23:58
cotto_work msg cotto trac.parrot.org/parrot/ticket/1605
purl Message for cotto stored.
Paul_the_Greek There are many on the New Patches list that have been around for many days, which is what prompted my question. 23:59
cotto_work It's a matter of tuits.