Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere | Priorities: merge gc_massacre, remove deprecated items, add deprecation notices for 2.6, close tickets.
Set by moderator on 22 June 2010.
bacek_at_work (nqp mmd) It's not a bug. 00:00
Inside nqp all variables are "scalar" (or "objects"). 00:02
kthakore so any chance of close TT#812? 00:03
how do I see my waiting message?
whiteknight bacek_at_work: what do you mean? How can it not be a bug?
kthakore purl: message
purl Perhaps you mean "messages", or "message nickname blah blah", or "messages help", or.. eh, just forget it.
kthakore purl: messages help 00:04
purl To leave a message, say in channel or privmsg purl "msg <nickname> MESSAGE FOR J00". To read your messages, privmsg purl "messages". To erase your messages, privmsg purl "messages erase". or Delivery Not Guaranteed!
whiteknight msg <nickname> MESSAGE FR J00
purl Sorry, I've never seen <nickname> before.
kthakore Coke: ping I got your messages 00:05
bacek_at_work whiteknight, $foo variables are "untyped"
kthakore AHHH
fine
trac?
purl trac is a web-based software project management and bug/issue tracking system emphasizing ease of use and low ceremony. It provides an interface to the Subversion revision control systems, integrated Wiki and convenient report facilities. projects.edgewall.com/trac/ or Python, SQLite and ClearSilver or killing killtrac or a bug-tracking tool or at trac.parrot.org/parrot/ or slow or REALLY slow
kthakore whiteknight: so any chance of gett my patch on TT#812 accepted? 00:07
bacek_at_work kthakore, I can apply it tonight (if no one beets me) 00:09
whiteknight let bacek_at_work do it, I don't know enough about that code
bacek_at_work whiteknight, it's pretty simple patch to remove redundant method.
kthakore yay! patch #2 00:10
00:14 tcurtis joined
tcurtis moritz: I'm not getting your error on 47813, and my internet is to spotty to checkout r47802. Can you try 47813 and let me know if it it fixes the problem? 00:18
cotto_work yet another point in favor of git 00:19
not that it needs them ;) 00:20
tcurtis svn-- 00:21
tcurtis finally was able to create the ticket. 00:23
dalek TT #1690 created by tcurtis++: Overriding one signature of a multi-method in a subclass prevents access ... 00:24
TT #1690: trac.parrot.org/parrot/ticket/1690
mikehh cotto_work: BTW the test pass on pir/PIRATE (no backtrace) on parrot r47813 - Ubuntu 10.04 amd64 (g++ with --optimize) 00:27
cotto_work That reinforces the likely x86-specificity of the bug. 00:28
sorear karma svn 00:29
purl svn has karma of -59
cotto_work not enough digits
davidfetter karma davidfetter 00:31
purl davidfetter has karma of 8
davidfetter hrm
davidfetter wonders how he got that
cotto_work You probably did a thing at some point in the past.
sorear are you a committer? 00:34
davidfetter pretty sure that's vacuously true
sorear karma c
purl c has karma of 8670
sorear karma g
purl g has karma of 1267
davidfetter well, i'm a committer on the pl/parrot project
sorear does dalek track it?
davidfetter could well
darbelo sorear: Yes.
sorear that's why.
davidfetter so when's the switch to git happening for parrot?
darbelo davidfetter: Later :) 00:35
sorear last I heard, right after the great GSoC merge
davidfetter all the cool projects are moving to git if they haven't already
tcurtis davidfetter: probably at some point after we get a git/trac test site set up.
darbelo "As soon as we can reasonably convince ourselves it won't go horribly wrong." :) 00:36
cotto_work There's a limited site up now. 00:37
tcurtis cotto_work: link?
purl I think Link is a pretty cool guy. eh kills Ganon and doesnt afraid of anything
cotto_work It's just for source code.
lemme dig
davidfetter gets his parrots from dukeleto's github repo
(and fedora yum)
cotto_work trac.parrot.org/parrottest 00:38
00:41 Coke joined
cotto_work That should be from dukeleto's git clone of parrot on github 00:42
davidfetter [ot] my graph theory's a little weak. given that nodes - edges == 1 => directed graph is a tree, is there a similarly easy formula to show that a directed graph is a forest? 00:43
sorear not just from the totals 00:45
davidfetter how about if you know how many "root" nodes there are, i.e. nodes with indegree 0? 00:46
ash_ is the tree directory or undirected? 00:50
davidfetter directed 00:51
it's times like this when i wish i'd majored in, or at least taken a course in, CS :P 00:52
00:53 abqar joined 00:54 abqar_ joined 00:56 plobsing joined
ash_ hehe, i have some books on this if you really want me to check 01:00
davidfetter if it's an easy thing to check, that'd be awesome 01:01
ash_ why do you need to see if its a forest? just curious (checking my algorithms book for a definition of forest) 01:03
mikehh rakudo (7e3ddca) builds on parrot r47813 - make test PASS, spectest_smolder -> #34569 (pugs r31442) FAIL - Ubuntu 10.04 amd64 (g++ with --optimize)
t/spec/integration/advent2009-day20.rakudo - Failed test: 18
19 TODO PASSes in 6 files
The test PASSes when I ran it separately
davidfetter well, i don't want just a DAG 01:04
imagine you're storing posts from a mailing list thread
well, from a mailing list
which generally takes the form of threads, each of which is a tree 01:05
so the whole batch of relationships is a forest
but i'd like to make sure that that's actually so :)
NotFound davidfetter: the definition already ensures it. 01:06
davidfetter um, the db doesn't, and that's where i'm storing the relationships 01:07
imagine you have a table called nodes. it's easy to check by foreign key that edges has only nodes in it
and slightly trickier, but still pretty easy, to ensure that edges has only direction for any given pair of nodes 01:08
but i want to make sure that nothing can get inserted, updated or deleted in the edges table in such a way as to make it not be a forest
so i'm looking for a criterion the db can apply 01:09
NotFound If any message can have only one parent, I think you just need to check the absence of cycles.
davidfetter a->b->c, a->d->c <-- DAG, but not tree 01:10
NotFound But c has two paents. 01:11
davidfetter "message only has one parent" is actually kinda time-consuming to enforce
NotFound Is the way messages are linked. 01:12
davidfetter messages are just an example. i'm trying to solve a more general problem
NotFound Then choose a more general example ;) 01:13
davidfetter ok, given a directed graph where i know the number of nodes with indegree 0, the total # of nodes, and the total # of edges, can i use just that information to determine whether the DG is a forest? 01:14
mikehh davidfetter: en.wikipedia.org/wiki/Kruskal%27s_algorithm 01:16
NotFound davidfetter: I think is not enough information.
davidfetter ok. how about if i know what all the edges are? 01:17
mikehh, so if kruskal's algo finds a minimum spanning forest that's not the original graph, i can say it's not a forest? 01:19
btw, this is all done in SQL :)
NotFound davidfetter: The natural way is evaluate the connected componentes and check all are trees. 01:20
But I don't know is such evaluation can be quickly done in sql. 01:21
davidfetter that's the beauty of CTEs (common table expressions) a.k.a. recursive SQL :)
with those babies, SQL is turing-complete :) 01:22
NotFound Well, I'm not fluent in sql nor in graph tehory, so I'll better go sleep.
davidfetter g'night, NotFound 01:23
mikehh davidfetter: thers a bit more discussion on www.cs.auckland.ac.nz/software/AlgAnim/mst.html 01:38
ash_ ping plobsing 01:40
mikehh davidfetter: trying to remember all this stuff, haven't worked on it for a while 01:41
plobsing ash_: hi 01:52
ash_ I ran into an issue with the tests, but i am cleaning it up right now, if the size of a variable wasn't the same as a pointer, it would segfault, but I should have that done soon, but I also wanted to talk to you about the llvm stuff I was planning on working on 01:53
i think i miss wrote my GSoC proposal because i thought the stack frame was something else 01:54
after talking in here about it, i think what I should of said for my GSoC proposal was I wanted to make a new runcore that uses the llvm to unroll the runloop and then does all the llvm optimization passes over that
plobsing I suspected you meant something different when talking about an optimizing stack frame builder (optimizing NCI stack frames is almost useless) 01:56
ash_ yeah
plobsing but a full runcore is pretty huge
ash_ i was equating the stack frame to the runloop i think in my head for what aver reason
yeah... but thats really what I was hoping to work on, I wanted to see what you thought i should do to move forward from here 01:57
thats why in the spring I did that independent study on compilers and started making my own nqp compiler that uses the llvm as a backend, so i could get some experience with compilers and with the llvm
plobsing I think that something like that (a jitting/threading whatsit) is a really good thing to have, so I'm all for it. However the degree of difficulty I'd put on it is much higher. 01:58
ash_ yea, thats one of the reason i was at first confused when people thought my GSoC would be to short 01:59
but now i see i have been mis-communicating the whole time
plobsing I say, go for it, but I'd also like the libffi stuff to be rock solid.
ash_ yeah, i am still trying to finish that up 02:00
i want it to be good too, but i just realized that i think there was a misunderstanding about what wanted to do with the other part of m GSoC
s/m/my/ 02:01
plobsing we'll need to come up with a less confusing name for it 02:04
ash_ yeah... after I get all of the tests done for the libffi work 02:05
i just changed my memory allocation strategy so it allocates memory based off of the size of the objects its supposed to pass, so, for example (short a, long b); only allocates memory (sizeof(short) + sizeof(long)) and does the appriopriate pointer math to move the variables around, but right now I am having a stupid moment and my pointers aren't working out, but i should have that fixed soon 02:07
plobsing are your pointers aligned? that could cause problems 02:08
ash_ github.com/ashgti/parrot/blob/gsoc_...c.in#L1102 seems to be off 02:11
if i print the value (like i do on the next line) translation_pointers[i] points to a chunk of code, like it should, but values + value_offset does not 02:12
explaining it helps me think about were the problem might be
plobsing um... arity is parrot side last I checked. 'J' doesn't contribute to arity. 02:16
ash_ yeah
i subtract it out
well, that depends on the call, but in most cases J is ignored
(hence the j_offset variable, so i can keep track of if a J was used) 02:17
and if for whatever reason 2 J's are used
plobsing oic
ash_ some calls though have the signature (for instance) "PJt", so in that case, when I call Parrot_pcc_fill_params_from_c_args i don't include J as an arg 02:18
plobsing wait. why are you using memcpy for copying one value?
ash_ but I add it in when I call the NCI function
02:18 Coke joined
dalek rtcl-nqp: a6a25c1 | Coke++ | src/Partcl/commands/main.pm:
fix return value of set on an array
02:18
rtcl-nqp: 58a3154 | Coke++ | src/Partcl/commands/array.pm:
implement [array set] & [array get].
rtcl-nqp: 0ae5973 | Coke++ | t/cmd_array.t:
untodo passing tests.
rtcl-nqp: 9cde88d | Coke++ | (4 files):
Support basic $array(key) syntax, untodo tests.
ash_ because you cant assign a value to an arbitrary memory location? (but you can memcpy to an arbitrary memory location) 02:19
plobsing you can cast the memory to the appropriate pointer type and assign
ash_ true.. let me try that 02:20
hmmm, its still off for some reason 02:22
i am sure there are places in my code where I could simplify or do things better... 02:26
hmm ill look into this more in the morning, my girlfriend wants me to hang out tonight 02:30
thanks for looking at it plobsing++
night &
02:41 janus joined 02:47 jhelwig_ joined, atrodo joined 02:48 atrodo joined 02:49 atrodo joined
dalek rtcl-nqp: 2018690 | Coke++ | (2 files):
add [array names]
02:52
02:56 TiMBuS joined 03:04 Coke joined
dalek rtcl-nqp: 9128ec7 | Coke++ | (2 files):
handle [array names] with no pattern.
03:09
ttbot Parrot trunk/ r47820 i386-linux-thread-multi make error tt.taptinder.org/file/cmdout/352747.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) 03:19
dalek rtcl-nqp: f9937b5 | Coke++ | (2 files):
[array unset]
03:21
ttbot Parrot trunk/ r47821 i386-linux-thread-multi make error tt.taptinder.org/file/cmdout/352775.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) 03:22
dalek rrot: r47814 | chromatic++ | trunk/src/hash.c:
[hash] Hoisted constants in hash_thaw().
03:24
rrot: r47815 | chromatic++ | trunk/src/hash.c:
[hash] Reduced hash thawing costs.

optimization.
purl hmmm... optimization is the mother of all fuckups. or "1) it's an IO problem, 2) it's an IO problem, 3) it's an IO problem" or for those who don't have enough hardware or something people often obsess about pointlessly or see Rules of Optimization or "Premature optimization is the root of all evil"
rrot: r47816 | chromatic++ | trunk/src/pmc/hashiterator.pmc:
[PMC] Sped up HashIterator's shift_string VTABLE.

speeds up the Rakudo startup benchmark by ~6.23%, and should help Rakudo run time and anything else which performs Class introspection.
rrot: r47817 | chromatic++ | trunk/src/pmc/object.pmc:
[PMC] Tidied Object PMC; no functional changes.
rrot: r47818 | chromatic++ | trunk/src/pmc/pmcproxy.pmc:
[PMC] Removed duplicate code from PMCProxy.
rrot: r47819 | chromatic++ | trunk/src/pmc/object.pmc:
[PMC] Optimized isa VTABLE for Object PMC.

Figure that one out.
rrot: r47820 | chromatic++ | trunk/src/pmc/class.pmc:
[PMC] Added a cache to speed up Class's isa_pmc.

now has a cache of Classes it is and isn't. This only works if the Class is already instantiated, for obvious "don't pull the rug out from under me" reasons. The result is a 1.5% performance improvement on the Rakudo startup benchmark.
purl It seems faster
rrot: r47821 | chromatic++ | trunk (3 files):
[src] Optimized Class inspect_str hash cloning.

parrot_hash_clone_pruneable() function; Class's inspect_str VTABLE now uses this instead of cloning the hash manually. The function may need a better name, and we may consider exporting it. This optimization improves Rakudo startup by 3.557% and should improve all object reflection similarly.
03:37 jhelwig joined 03:47 LoganLK joined
ttbot Parrot trunk/ r47822 i386-linux-thread-multi make error tt.taptinder.org/file/cmdout/352942.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) 03:52
dalek rrot: r47822 | mikehh++ | trunk/src/hash.c:
fix codetest failure - add missing docs
03:57
rrot: r47823 | bacek++ | trunk/src/pmc/class.pmc:
Re-run headerizer
kudo: f34e780 | pmichaud++ | src/binder/bind.c:
Refactor "is copy" binding to avoid extra objectrefs and VTABLE_clone.
04:09
bacek_at_work pmichaud, ping. 04:32
dukeleto 'ello 04:33
bacek_at_work msg pmichaud in NQP RPA.delete should use pir::delete__vQp, not pir::delete__vQi. 04:35
purl Message for pmichaud stored.
dukeleto incoming 04:37
purl duck!
dalek parrot: 8c00aa8 | dukeleto++ | plparrot.c:
Add some more meat to the plperl6_func_handler skeleton
04:43
parrot: 68311bc | dukeleto++ | plparrot.c:
Get rid of SPI for now
parrot: 1a3efda | dukeleto++ | plparrot.c:
Add more meat to plperl6_func_handler
parrot: 63ac82d | dukeleto++ | plparrot.c:
Add code to wrap PL/Perl6 procedures
parrot: dc6ad7d | dukeleto++ | plparrot.c:
Attempt to compile perl6 source
parrot: 3ea00ac | dukeleto++ | (3 files):
Start the code which will wrap Perl 6 procedures and call them from PIR
parrot: b1855fb | dukeleto++ | (3 files):
Closer to getting Perl 6 code running
parrot: c8ae516 | dukeleto++ | plparrot.c:
Actually run Perl 6 code
parrot: bfef901 | dukeleto++ | plperl6.pir:
Dump the return value with dumper.pbc
parrot: e0ad2f9 | dukeleto++ | plparrot.c:
Get rid of magic constants
parrot: 409644c | dukeleto++ | (3 files):
Create Perl 6 wrapper code from PIR, not C
parrot: dc93d09 | dukeleto++ | t/sql/test.sql:
Add a test for floats in PL/Perl6
parrot: 69c39b5 | dukeleto++ | (2 files):
Only define HAS_PERL6 if PERL6PBC is defined
parrot: 3058930 | dukeleto++ | (4 files):
Give PL/Perl6 tests their own home
parrot: ab6a764 | dukeleto++ | (2 files):
Properly define HAS_PERL6
parrot: 5893254 | dukeleto++ | (9 files):
Merge branch 'plperl6'
rrot: r47824 | mikehh++ | trunk/src/pmc/class.pmc:
add cast(s) to get g++ to build
04:47
rrot: r47825 | mikehh++ | trunk/src/pmc/object.pmc:
remove const(s) to get g++ to build
05:19 simcop238 joined
cotto ~~ 05:21
05:25 simcop2387 joined 05:26 LoganLK joined
dalek rrot: r47826 | plobsing++ | branches/dynop_mapping (11 files):
handle op_info
05:36
05:38 Coke joined, simcop2387 joined 05:43 simcop238 joined 05:55 simcop2387 joined 06:04 simcop238 joined
bacek_at_work cotto, ~~ 06:16
06:17 simcop2387 joined
cotto I am smartly matched. 06:17
bacek_at_work cotto, :)
cotto, speaking of pirates - tweetphoto.com/28970505
afk # Friday beers
cotto that's great 06:18
pirate is also tweetphoto.com/28970505
purl okay, cotto.
moritz purl: msg tcurtis with r47826 all tests pass again, thanks. Will try to actually use the pattern matcher soon 06:27
purl Message for tcurtis stored.
cotto bacek, I don't think the dynamic hello world test in t/pbc/call.txt *should* work. Under imcc it throws an exception. 06:30
moritz does nqp-rx support inheritance via 'class Foo is Bar::Baz { }'? 06:35
cotto sure
moritz thanks
then something else is borked
06:37 tcurtis joined 06:38 ilbot2 joined
moderator Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere | Priorities: merge gc_massacre, remove deprecated items, add deprecation notices for 2.6, close tickets.
dalek rrot: r47827 | darbelo++ | branches/gsoc_nfg (2 files):
Work out the last iterator issues causing the creation of dynamic graphemes for valid Unicode compositions.
06:58
rrot: r47828 | tcurtis++ | branches/gsoc_past_optimization (15 files):
Create Tree::Walker base class for ::Walker classes.
moritz tcurtis: turns out the tests now pass, I just have a local problem related to get_root_global not finding P6metaclass - which sometimes manifests in my code, and sometimes in your code, depending on compilation order 07:01
tcurtis moritz: What revision? 07:05
purl revision is 0, unless it's an svn co, then it's whatever svn reports
moritz tcurtis: 47826
bbl 07:06
tcurtis moritz: I'm going to go to bed soon, and I probably won't be on again until tomorrow evening, but msg me if there are any further problems or you have any questions. 07:07
07:10 eternaleye joined
dalek rrot: r47829 | darbelo++ | branches/gsoc_nfg (3 files):
Add some null table handling to grapheme_table_capacity and use that to simplify the iterator code a bit.
07:14
07:17 arnsholt joined
dalek rrot: r47830 | darbelo++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
Localize a variable.
07:30
moritz ok, general question 07:37
purl general question is the Perl Cookbook a good choice for someone's (who's still basically a beginner) second perl book?
moritz which file do I have to load (.include or loadlib or load_bytecode or whatever) to get acccess to P6Metaclass? 07:38
plobsing moritz: probably P6object 07:55
moritz plobsing: thanks, just found it 07:56
what about HLL::Compiler?
I'm kinda randomly loading PCT and NQP related stuff in the hope it'll work at some point :( 07:57
cotto what's nqp's quote_EXPR ?
moritz cotto: it's a method for parsing quoted strings
(iirc) 07:58
cotto wfm
plobsing moritz: are you looking for 'PCT/HLLCompiler.pbc' ? 07:59
07:59 arnsholt joined
moritz plobsing: probably... trying... 08:00
still doesn't work :( 08:03
I'll paste some code...
dalek rrot: r47831 | NotFound++ | trunk/src/pmc/default.pmc:
Don't use a name that conflicts in some platform and you don't need to protect it
nopaste "moritz" at 192.168.1.3 pasted "This dies with "Parent is not a class"" (16 lines) at nopaste.snit.ch/21571
moritz that's generated PIR from my attempt to use tcurtis' optimization framework in rakudo 08:04
actually the line number points to a few lines above the class to new_class, but I don't believe it 08:05
it points to the load_bytecode "PAST/Pattern.pbc", but if I comment out that line, it still dies with the same error 08:06
that's the nqp source: github.com/rakudo/rakudo/blob/optim...timizer.pm 08:07
plobsing moritz: load_bytecode 'nqp-rx.pbc' seems to do it 08:12
cotto parallel testing in distutils would be really nice 08:13
That'd be a great test case for the threading gsoc project.
ash's iirc
plobsing nope. ash_ is NCI. he was talking about a different kind of threading today. 08:14
moritz Chandon was doing threads, iirc
cotto idrc then 08:15
08:18 JimmyZ joined
cotto clock? 08:25
purl cotto: LAX: Fri 1:25am PDT / CHI: Fri 3:25am CDT / NYC: Fri 4:25am EDT / LON: Fri 9:25am BST / BER: Fri 10:25am CEST / IND: Fri 1:55pm IST / TOK: Fri 5:25pm JST / SYD: Fri 6:25pm EST /
cotto msg bacek I suspect a POST::String class with an encoding and charset will be a good idea. Thoughts? 08:33
purl Message for bacek stored.
dalek r: fe13df5 | cotto++ | (3 files):
add charset/encoding parsing and tests for string literals
08:35
r: f95e32f | cotto++ | src/PIR/Grammar.pm:
remove trailing spaces and make vim highlighting nicer
r: eb31699 | cotto++ | src/PIR/Grammar.pm:
delete todo comment
08:40 arnsholt joined
plobsing dynop_mapping now builds without failing. maybe tommorrow I'll be able to extinguish all the little problems. 08:43
this is taking longer than expected
08:46 simcop238 joined
cotto that's still good progress 08:51
dalek rrot: r47832 | plobsing++ | branches/dynop_mapping/src (2 files):
fixup pbc_merge to remap ops properly
08:52
09:10 fperrad joined 09:36 bacek_mobile joined
bacek_mobile cotto, post::string is really good idea 09:37
10:25 lucian joined 11:29 Coke joined 11:31 khairul joined 12:14 fperrad joined 12:54 bluescreen joined 13:00 whiteknight joined 13:21 JimmyZ joined
kthakore bacek_at_work: so did it get accepted TT812 ? 13:30
13:34 ambs joined 13:38 plobsing joined
whiteknight good morning, #parrot 13:45
atrodo good morning 13:46
purl Lies!
Coke atrodo: ~~ 13:49
atrodo I need an irc lesson, what does ~~ indicate? 13:50
arnsholt Is there a practical way to splice RPAs? 13:58
(Or at least just insert an element in the middle of it)
ambs atrodo: Coke waved :) 13:59
whiteknight arnsholt: Not that I am aware of. RPAs are implemented as raw C arrays internally, not linked lists 14:01
so there are no good semantics for insert or remove from the middle
14:01 bubaflub joined
arnsholt Ah, right 14:02
I'll just implement my sets the easy way then =) 14:03
atrodo ambs++ # Thanks. I was never sure 14:04
14:10 gbacon joined 14:18 lucian_ joined 14:28 ambs joined
dalek rrot: r47833 | tcurtis++ | branches/gsoc_past_optimization/t/library/pastwalker.t:
Remove debugging says.
14:36
14:37 Coke joined
whiteknight arnsholt: what is the easy way? It is probably worthwhile for us to write a new PMC type with insert/remove semantics 14:56
I could start prototyping such a beast in Parrot-Data-Structures if you want
Andy Server is back up, now crnaking thru a make test on GCC 4.6 14:57
And I'm being the PARROT_ annotation police. 14:58
"You there! You could be flagged as PARROT_CONST_FUNCTION!"
whiteknight tcurtis: If only we had some kind of mechanism that would automatically remove debugging statements from the source code... 15:13
Coke coke waved and then fell asleep, aparently. 15:15
15:15 JimmyZ joined
ambs :) 15:15
dalek rrot: r47834 | petdance++ | trunk/src/nci_test.c:
test functions need annotations, too, because they are testing
15:25
rrot: r47835 | petdance++ | trunk/compilers/opsc/src/Ops/Trans/C.pm:
normalize C headers to match the rest of the codebase
15:27 jsut joined
kthakore ambs: hi! 15:36
oops
atrodo: hi
atrodo Hi!
ambs kthakore: hellows
kthakore ambs: hi 15:39
purl what's up, kthakore.
kthakore atrodo: oh hai
particle kthakore: i'm amazed you managed to distract ambs from the brazil-portugal hame
*game
ambs particle: hehehe
it isn't going anywhere
darbelo It hasn't been a very exiting game, all told.
particle i think they don't mind if each other advance 15:40
...live to fight another day.
atrodo kthakore> Hi again!
particle yep, they took out fabiano. 15:42
16:10 patspam joined 16:11 theory joined
arnsholt whiteknight: The easy way would be an array and looping over the entire thing before inserting 16:24
(To check if the element is already present) 16:25
whiteknight arnsholt: easy for you. hard for the CPU
arnsholt Yeah. Which is why I wondered if it was possible to splice RPAs =) 16:26
But yeah, actually writing a Set PMC might be a good idea 16:27
Good opportunity to learn how to write 'em too =) 16:28
whiteknight yeah
dalek rrot: r47836 | mikehh++ | trunk/src/nci_test.c:
add C function documentation
16:30
16:44 fperrad joined
fperrad purl ? 16:48
purl yes, fperrad?
17:09 gbacon joined 17:12 davidfetter joined 17:19 treed joined
cotto_work ~~ 17:25
17:31 chromatic joined
whiteknight chromatic: nice work with the object optimizations 17:36
chromatic Thanks. There are a few more available. 17:37
isa_pmc could be smarter and simpler.
Another fun one is parrot_hash_clone; that could be a couple of well-placed memcpy instructions instead of manual iteration. 17:38
Shallow clones are trivial, and detecting deep clones is fairly easy.
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34577), fulltest) at r47836 - Ubuntu 10.04 amd64 (g++) 17:39
chromatic I didn't have the brainpower to get it right on the airplane, and I'd done enough C for the day. Anyone willing to poke at it a bit should get a ~2.5% Rakudo improvement with ~30 minutes of work. 17:40
cotto_work chromatic, I gather from kid51 that Lorito barely came up at the Parrot/Rakudo BOF. Does that mean that Lorito is a lower priority or just that there were more pressing issues that those present wanted to discuss? 17:43
chromatic The latter. 17:44
I have three pages of notes on Lorito from the flight over -- in particular, one way security can work.
cotto_work Great. 17:45
ash_ how complicated are the runcores?
cotto_work If you don't need preprocessing for the .ops files, they're not bad.
whiteknight chromatic: I thought we were moving to using all shallow clones for core PMC types 17:46
ash_: in general, not too complicated
well, they don't need to be
a runcore is essentially a function that takes a pointer to bytecode and loops over it
cotto_work If you want to do something silly like profiling, it ups the complexity a bit.
whiteknight ash_: Look at trac.parrot.org/parrot/browser/trun...re/cores.c 17:47
the functions runops_slow_core and runops_fast_core are the basics, and are very informative
lookup the definition of DO_OPs if you're trying to go cross-eyed 17:48
chromatic whiteknight, maybe so... but even still, parrot_hash_clone does more work than it needs to.
whiteknight chromatic: no doubt
ash_ are runcore's pluggable? or do they have to be present at compile time? 17:49
chromatic Half an hour, tops, for a moderately decent C programmer willing to unravel it.
whiteknight ash_: not pluggable, though if somebody put in the elbow grease they could be
cotto_work There's a little work remaining to make them fully pluggable.
whiteknight ash_: but if you build it in, you can select it at runtime 17:50
chromatic: Hey! I'm a moderately decent C programmer!
chromatic Go for it.
whiteknight chromatic: looking at this, I don't see any obvious places where we can drop in a memcpy 17:57
...unless we want individual buckets to be shared across multiple hashes 17:58
17:58 LoganLK joined
whiteknight there are plenty of other simplifications Ithink we can make, however 17:58
17:58 rblackwe joined
chromatic No reason to have all of those parrot_hash_put calls. 17:59
whiteknight right, I'll definitely get rid of that
chromatic Presizing makes sense too. 18:00
whiteknight yeah, the whole thing is going to get simplified. My point was I don't think memcpy is the tool to use
chromatic Not with the next pointers, no. 18:01
whiteknight There is a hell of a lot of cleanup needed in hash.c and hash.h. I may just create a branch 18:04
I wonder if anybody can explain to me the logic behind N_BUCKETS and HASH_ALLOC_SIZE macros 18:05
chromatic I *think* it's a desire to expand by doubling the hash size, but I'm not sure.
I've always heard (The Practice of Programming?) that you want an odd number like 17 for the modulus when picking the bucket. 18:06
whiteknight actually, it looks like it's attempting to combine allocations for the pointer array and the initial buckets for each point in the array
although...not quite
chromatic It does initially. 18:07
whiteknight I can't figure out why N_BUCKETS in (n - n/4)
dalek rrot: r47837 | whiteknight++ | trunk/docs/project/release_manager_guide.pod:
[docs] add empty spaces on the calendar for releases between now and 3.0
18:09
whiteknight whatever, I'll trace through this more when I get home 18:11
18:14 gbacon joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34578), fulltest) at r47836 - Ubuntu 10.04 amd64 (gcc with --optimize) 18:16
cotto_work bacek, ping 18:19
mikehh whiteknight: I might give RM a try 18:22
whiteknight RM?
purl it has been said that RM is a powerful compression tool, that also provides unbreakable encryption or one-way compression or the ultimate in lossy compression protocols or reliable messaging and sadly real media or good for opening large SVGs
moritz rm is also release manager
purl okay, moritz.
dalek kudo: 4e6cce6 | (Patrick Abi Salloum)++ | src/core/operators.pm:
Various series fixes:

  * generators that involve geometric sign change work (we pass an extra TODO)
  * use Numeric instead of Num so that Rats also work
Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
mikehh as in Release Manager
whiteknight mikehh: Oh, awesome! What month do you want?
mikehh whiteknight: whatever 18:23
purl whatever is trying to write to this should not, and I worked up the entire chain of ensure_class_loaded
mikehh whiteknight: could try for August
whiteknight mikehh: done and done 18:24
bubaflub whiteknight: just got your message. i've been lurking for a bit. i'd love to contribute to PLA if you have somewhere you want me to start, lemme know. 18:25
whiteknight bubaflub: Anywhere is good. I'm pushing for a release following Parrot 2.6.0. so adding new features and increasing test coverage are top priorities
bubaflub okey dokey, i'll take a look at the code sometime today / tonight 18:26
and see what i can hack on
whiteknight adding examples for how to use PLA from various languages (winxed, rakudo, partcl) would be nice too
awesome! Let me know if you want a commit bit and I'll hook you up
bubaflub i'm bubaflub on github if that helps at all 18:27
18:30 ambs joined
chromatic moritz, if you or anyone else has a chance, Parrot has some nice optimizations that appear to help Rakudo. 18:32
moritz chromatic: I'll bump PARROT_REVISION and see what happens :-)
or better I'll time a spectest run first 18:33
cotto_work chromatic, what sets off your "this could use some optimization" trigger?
chromatic I'm not sure I understand the question. 18:35
cotto_work How do you pick a chunk of code to optimize? 18:37
chromatic I pick a likely benchmark, profile it, then look at the KCachegrind visualization. 18:38
Anything that creates lots of GCables is a target.
Anything with a lot of inclusive time is a target.
Anything with a lot of self time is a big target.
Then I walk up and down the call graph to understand particular paths. 18:39
kthakore hi chromatic can you accept my patch at TT 812 ? 18:40
chromatic You don't see the changes that make things worse or that have no effect.
kthakore chromatic: pretty please?
cotto_work gets it 18:41
dalek rrot: r47838 | whiteknight++ | trunk/docs/project/release_manager_guide.pod:
[docs] mikehh++ has August
chromatic testing now, kthakore. 18:43
cotto_work dig + elbow grease + keep what helps
kthakore chromatic: yay!
chromatic: wow! you get grease for you elbow?
oops
chromatic It's a combination of insight, experience, tools, and persistence. 18:44
kthakore chromatic: oh rlly? we could use some of that in SDL ... but I am a dumb ass
chromatic: all I have is hindsight, vigour, blind faith and ignorance 18:45
chromatic You can trade that for the others, but it's not a quick transaction.
kthakore yeah
meh ... w/e I still got direct pixel access to surface pixels working!!! 18:46
:) I am so freaking proud of that
sjn looks at www.youtube.com/watch?v=tz-Bb-D6teE (60 minute talk with Steve Yegge, at Stanford titled "Dynamic Languages Strike Back") 18:47
kthakore sjn: cool
moritz sjn: a bit ranty, but quite nice :-) 18:48
sjn kinda neat, yes :) 18:49
sjn is completely blank when it comes to JITs and optimizing, but listening to the rant gave me another good feeling about Parrot :) 18:50
dalek rrot: r47839 | chromatic++ | trunk/compilers/pct/src/PAST/Node.pir:
[PCT] Removed unnecessary passthrough method.

Thakore).
18:58
kthakore yay! 18:59
kthakore dances to 2nd patch jubiliance 19:00
chromatic: thanks man
chromatic Thanks for the patch.
particle kthakore++
kthakore np
it was a simple one
so simple even I could od it 19:01
all I had to do was delete! yay!
dalek TT #812 closed by chromatic++: PCT - PAST::Op::lvalue() is redundant 19:06
TT #812: trac.parrot.org/parrot/ticket/812
mikehh rakudo (4e6cce6) builds on parrot r47836 - make test PASS, spectest_smolder -> #34580 (pugs r31446) PASS - Ubuntu 10.04 amd64 (gcc with --optimize) 19:12
19 TODO PASSes in 6 files
19:17 bubaflub joined
mikehh pir/PIRATE build ok, test PASS - t/01-parse/05-assign.t - TODO passed: 10 19:23
19:23 mikehh joined
mikehh partcl-nqp: make ok / test PASS 19:25
winxed - make ok test/test1/test2 all PASS 19:39
cotto_work If anyone with a PIRATE commit bits wants some easy karma, the string tests in t/01-parse/05-assign.t should be moved to t/parse/string.txt 19:46
whiteknight NotFound: ping 19:47
19:47 jsut_ joined 20:18 mariano__ joined
rblackwe In Damian's Rakudo class at YAPC and he just showed multiple dispatch on MAIN. that is just coolio! 20:18
particle go american continent! 20:21
all seven teams advance. 20:22
moritz rblackwe: I'm amazed it works
particle *continents
moritz rblackwe: know how we cheat in that case :-)
particle rblackwe: that's how we roll :)
rblackwe moritz: to rephrase he showed it will be possible did not say if it worked right now.
particle it will work soon, as i finish my hague grant 20:23
it's working now, kinda
moritz rblackwe: what currently works is that if only one candidate matches, it is picked up
rblackwe particle++
moritz rblackwe: what doesn't work is that the best match is always called
actually it will be pretty trivial to get right once &multi.cando is fixed 20:24
chromatic: r47839 didn't make rakudo's spectest run measurable faster 20:31
chromatic What are you comparing? 20:33
moritz time perl tool/test_summary.pl
r47835 and r47839 20:34
chromatic Start with r47808.
moritz the latter is actually a bit slower, but that might be due to the noise (other prorgrams running in parallel)
dalek rtcl-nqp: c46b635 | Coke++ | (2 files):
fix [array set] to coerce @list to a list.
20:35
rtcl-nqp: 16baa4d | Coke++ | (2 files):
the list passed array set has to have an even # of elements.
rtcl-nqp: 14e5902 | Coke++ | (2 files):
validate that [array set] is called on an array.
atrodo I wanted to take a second and say thanks to all the parrot people at yapc for letting me hang out and listen in 20:37
20:40 mariano__ joined
chromatic You're always welcome. 20:41
particle atrodo: i'm glad you could join us and looking forward to more of your input 20:43
atrodo I hope I can give more input in the future. Parrot's starting to grow on me 20:51
20:54 ambs joined 21:00 whiteknight joined
kthakore atrodo: you were listening! 21:01
atrodo: who gave you permission?
atrodo kthakore> huh? 21:08
kthakore atrodo: what? 21:09
atrodo: say it louder I can't hear you here 21:10
kthakore might be silly
cotto_work more than likely
21:28 mikehh joined
Andy I'd love to see evidence to support (or disprove) my theory that merely committing something to a repository increases the quality of the code, because people are more likely to update it. 21:51
In other words, that churn improves quality.
chromatic I see your theory and raise you Dan's theory from early Parrot. 21:53
atrodo What was Dan's theory?
chromatic Committing suboptimal code might encourage other people to contribute because they wanted to improve it.
Andy All brontosauruses are thin at one end, much MUCH thicker in the middle,
and then thin again at the far end. That is the theory that I have and
which is mine, and what it is too.
cotto_work I'm sure it'd work fine for small bits of code. 21:54
it's pretty easy to replace a bubble sort function with something better.
chromatic I think if it works, it works because it provides small, self-contained projects for interested novices to perform in isolation.
cotto_work yes 21:55
imcc? not so much
barring the appearance of a magical coding robot
atrodo I agree. There's a critical mass that the theory breaks apart
chromatic Relying on interested novices to read patches or the source code specifically to *find* places for those tasks seems like the weak part of that theory.
atrodo Oh, magical robot! I knew I forgot to grab something before I left yapc 21:56
kthakore BAH! how do you guys maintain you modules man
I am sitting behind a mountain of things to doc and update
kthakore cries
oh btw 22:01
Coke: I saw your message
Coke: how do we add the tests and SDL code into trunk?
chromatic whiteknight, you could even walk src_hash->bi (the bucket store itself, not the linked lists), copy across the values, then fix up the next pointers with a little bit of math. 22:08
whiteknight that's what I
chromatic That's a simple loop, cache friendly, no function calls, no realloc, and a lot friendly.
whiteknight m planning
chromatic Maybe I mean src_hash->bs
Whichever one is the dumb array of HashBuckets, and not the place where we use hash->mask to index into a linked list. 22:09
whiteknight I don't know a hell of a lot about this hash implementation, so It's going to take me some reading before I really get cracking 22:10
dalek rrot: r47840 | petdance++ | trunk/compilers/imcc/pbc.c:
removed unused var
22:15
rrot: r47841 | whiteknight++ | branches/hash_faster:
creating a branch to do some optimizing and general cleanup in the hash implementation
chromatic Wow, S03-operators/series.t is a pig. 22:18
22:19 Themeruta joined
NotFound_gf whiteknight: pong 22:19
cotto_work What'd be the right way to handle a string with specified encoding and/or charset in PIRATE? Would it work to treat the parsed string contents as a bunch of bytes and use a ByteBuffer?
whiteknight NotFound: what does ${} syntax in winxed do?
NotFound_gf whiteknight: pir ops
whiteknight ah, okay. That's what I thought 22:20
also, how do you load a dynpmc lib in winxed?
NotFound_gf whiteknight: I haven't tested with dynpmc, only with dynops, but using extern at global scope should do. 22:21
whiteknight ok 22:22
I'll have to look through the examples
cotto_work btw, whiteknight++ for the OpLib PMC. It's pretty essential for PIRATE.
whiteknight cotto_work: I'm glad people are using it! I figured it would come in handy 22:23
NotFound_gf whiteknight: using extern 'libname';
22:23 ash_ joined
whiteknight would it kill people to give these things human-readable and human-understandable names? 22:31
Tene which things?
whiteknight wtf is hash->bi? how is it different from hash->bs? I shouldn't have to read so much code to figure out what these things are
cotto_work I'll give you a cookie if you fix them. 22:32
Those names are a pretty effective impediment to understanding the code. 22:33
Tene ouch 22:34
which code is this? hash.pmc?
cotto_work src/hash.c iirc 22:35
Tene ah
bi is bucket index, I think 22:36
cotto_work bs is base
but the code wins an award for not being very clear 22:37
22:44 tcurtis joined
dalek rrot: r47842 | whiteknight++ | branches/hash_faster/include/parrot/hash.h:
[hash] small cleanup. Remove/rework comments for clarity and modernity
22:48
whiteknight The code is remarkably unclear. And that could be forgiven if it were massively optimized 22:51
it ain't 22:52
fields in the hash structure are considered internal opaque things, right? so I can rename them at will without running afoul of the deprecation policy? 22:53
chromatic Yes please. 22:54
What's the word for premature optimization that isn't even optimization?
Oh, right. C.
cotto_work +1 to please do 23:00
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34584), fulltest) at r47841 - Ubuntu 10.04 i385 (gcc) 23:02
t/op/exit.t - TODO passed: 6 in testf
i386 - better take a break - starting to make idiot mistakes 23:03
dalek rrot: r47843 | tcurtis++ | branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.nqp:
Remove another debugging output statement.
23:05
bacek aloha, humans 23:07
23:10 lucian joined
cotto_work hi bacek 23:12
bacek aloha, cotto_work
23:21 kid51 joined
chromatic bacek, do you have a Rakudo checkout? 23:22
bacek chromatic, yes.
chromatic src/binder/bind.c around line 500. 23:23
bacek substr?
purl substr is perldoc -f substr is handy but overlooked far too often or good for a simple literal match, when you don't need the hammer of regex -- it's also something that lets you substitute parts of a string with something else.. like deleting bits of it or substr EXPR, OFFSET or substr EXPR, OFFSET, LEN or substr EXPR, OFFSET, LEN, REPLACEMENT or slower as it means modifying the string
chromatic I've hoisted a couple of string_from_literal() calls into constant strings.
The substr and equals calls are fairly inefficient; creating a garbage STRING header just to say "Is this substring in the other string at the start?" 23:24
bacek yeah...
chromatic I'm trying to come up with a decent Parrot_str_* API to perform this operation more efficiently.
whiteknight It's remarkable how much memory-management logic these hashes reproduce from the GC
not that it's a bad thing, slab-style allocation of buckets helps cache locality, but it is still a hell of a lot of duplication 23:25
bacek call to str_byte_length looks suspicious
chromatic I'm not aware of any particular bugs in here, but I'm looking at the possibility for providing another Parrot_str_* function to reduce the work done here. 23:26
bacek str_find_index == 0 for sigil? == 1 for twigil? 23:27
Iterating over identifier should be faster than substr
chromatic It looks like the code creates three to five garbage STRINGs for each named parameter in every call. 23:28
Churn, baby, churn.
kid51 seen darbelo? 23:36
purl darbelo was last seen on #parrot 7 hours, 57 minutes and 4 seconds ago, saying: It hasn't been a very exiting game, all told.
kid51 msg darbelo You will need to document C functions in src/string/grapheme.c so that t/codingstd/c_function_docs.t passes. 23:37
purl Message for darbelo stored.
dalek rrot: r47844 | tcurtis++ | branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.nqp:
Remove unnecessary multi specialization for PAST::Walker.
kid51 msg darbelo That's in gsoc_nfg branch. 23:38
purl Message for darbelo stored.
cotto_work s/so that t\\/codingstd\\/c_function_docs.t passes/so that people can understand the code more easily./ 23:45
bacek cotto_work, ~/src/nqp-rx (master)$ ./nqp -e 'my $a:=1; $a := $a * $_ for <1 2 3>; say($a)' 23:47
6
:)
cotto_work nice
bacek did you ask for "postfix" for?
cotto_work btw, I don't think that one of the call tests *should* pass.
bacek which one?
cotto_work I asked about for/if
bacek "if" should work. 23:48
cotto_work Hello, World (dynamic)
bacek ~/src/nqp-rx (master)$ ./nqp -e 'say("hi") if 42 == 42'
hi
cotto_work, yes. Wrong test. 23:49
dalek p-rx: caa5ba5 | bacek++ | (3 files):
Implement expression for modifier
cotto_work I'm not sure why it'd cause a segfault on x86 and work fine on x64, but it shouldn't be there and probably falls under "don't do that". 23:50
23:53 Psyche^ joined
dalek rrot: r47845 | jkeenan++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
[codingstd] Eliminate trailing whitespace it; correct POD formatting error.
23:54
cotto_work bacek, do you know if it'll be safe to take the data that PIRATE parses out of a string literal with an explicit encoding/charset and stick it into a ByteBuffer for later stringification?
It's great that these recently-written PMCs are proving to be so useful to PIRATE. 23:55
bacek cotto_work, it will probably require some hacking of quote_EXPR. But it's good idea.
cotto_work Should I rely on that and assume that the fixes will happen at a lower level than PIRATE or will that need some changes in PIRATE too? 23:56
bacek cotto_work, no idea atm. Sorry. 23:57
cotto_work pmichaud, ping