Camelia, the Perl 6 bug

IRC log for #parrot, 2009-08-03

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:11 dalek pynie: r81 | Bradley.Sif++ | trunk/ (5 files):
00:11 dalek pynie: Closure support for inner defs when returned by function.
00:11 dalek pynie: When returning from a defined function, any subroutines returned need a
00:11 dalek pynie: 'newclosure' generated.  This is so that inner defs will generate closures
00:11 dalek pynie: properly.  This may not be the best way to solve this problem, and it also
00:11 dalek pynie: does not handle assignment statements.
00:11 dalek pynie: review: http://code.google.com/p/pynie/source/detail?r=81
00:20 * cotto figured
00:21 dalek rakudo: e95ae57 | pmichaud++ | src/classes/Signature.pir:
00:21 dalek rakudo: Remove unused all_types PMC creation.
00:21 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​95ae570a79f3b620750d849080093e81656dfeb
00:21 dalek rakudo: 186e36d | pmichaud++ | src/ (2 files):
00:21 dalek rakudo: We don't need to store an Undef for cons_type; PMCNULL suffices.
00:21 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​86e36d6a49ce0c385532c8a609eed493814c41a
00:24 patspam joined #parrot
00:26 dalek pynie: r82 | Bradley.Sif++ | trunk/ (3 files):
00:26 dalek pynie: Brought over CREDITS from Parrot's CREDITS files where they pertain to pynie.
00:26 dalek pynie: Add Artistic-2.0 LICENSE, which was not brought over from Parrot when Pynie SVN
00:26 dalek pynie: was split from Parrot.
00:26 dalek pynie: review: http://code.google.com/p/pynie/source/detail?r=82
00:29 wayland76 joined #parrot
00:48 kid51 joined #parrot
00:49 whoppix joined #parrot
01:07 whoppix joined #parrot
01:25 bkuhn joined #parrot
01:34 TiMBuS joined #parrot
01:34 mikehh All tests PASS (pre/post-config, smolder, nqp_test, fulltest) at r40390 - Ubuntu 9.04 amd64
01:39 cotto test coverage?
01:39 purl test coverage is much better
01:39 cotto no, test coverage is http://tapir2.ro.vutbr.cz/cover/
01:39 purl okay, cotto.
01:41 dalek pynie: r83 | Bradley.Sif++ | trunk/ (2 files):
01:41 dalek pynie: Added test for lambda inside lambda closure.
01:41 dalek pynie: review: http://code.google.com/p/pynie/source/detail?r=83
01:41 dalek pynie: r84 | Bradley.Sif++ | trunk/ (2 files):
01:41 dalek pynie: Added full Python 3.1 keyword list from Section 2.3.1 of The Python Language
01:41 dalek pynie: Reference.
01:41 purl rumour has it reference is now stringified
01:41 dalek pynie: http://docs.python.org/3.1/referen​ce/lexical_analysis.html#keywords
01:41 dalek pynie: review: http://code.google.com/p/pynie/source/detail?r=84
02:01 dukeleto joined #parrot
02:11 theory joined #parrot
02:16 dalek cardinal: 0173911 | treed++ | Rakefile:
02:16 dalek cardinal: A few minor fixes to the Rakefile.
02:16 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/017391152f74a824573ad570caa0457c8ded05fb
02:16 dalek cardinal: 869b38d | treed++ | Rakefile:
02:16 dalek cardinal: Make it so you can twiddle a global to run tests against CRuby instead of Cardinal.
02:16 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/869b38dd04047af7363202f7b7e103666ec54ac4
02:18 dalek rakudo: d51bca3 | pmichaud++ | src/classes/Signature.pir:
02:18 dalek rakudo: Slurpy params should default to Object instead of Any.
02:18 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​51bca3629b90986428f758b26a6b7d7b0053e24
02:18 dalek rakudo: 91408af | pmichaud++ | src/ (2 files):
02:18 dalek rakudo: Move print() and say() functions to the setting.
02:18 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​1408af1b18a14a00a95a8f64badb34d181c61db
02:18 kid51 pynie, cardinal, rakudo:  All being worked on simultaneously!  (Haven't seen much of that before now!)
02:19 treed :-)
02:20 pmichaud scary stuff, isn't it?
02:20 * treed is just messing with the test suite.
02:20 treed Trying to get it to run faster.
02:20 kid51 yeah.  If I turn around, they might be swapping bytecode behind my back!
02:21 treed If I precompile to .pir, it knocks about 4 and a half minutes off the time for test:all
02:21 pmichaud sure, parsing is known to be slow.
02:21 treed (Of course, running the suite against cruby is still 2-3 seconds rather than the 30 or so parrot takes on the pir.)
02:21 pmichaud that should be fixed rsn
02:21 treed Well, Cardinal's parser is also particularly stupid.
02:21 purl okay, treed.
02:21 pmichaud and parsing should also speed up a lot when we get the calling conventions refactored.
02:21 treed What did I just tell purl to do?
02:22 treed Cardinal's parser?
02:22 purl Cardinal's parser is slower than partcl's or particularly stupid.
02:22 treed LOL
02:33 Tene pmichaud: cardinal's parser is crazy stupid.  very bad.
02:34 Tene I remember vaguely thinking that I could use protoregexes to help a lot, but don't remember the details.
02:35 Tene also does a lot of backtracking iirc.
02:35 janus joined #parrot
02:46 Andy joined #parrot
03:01 Andy Who wants to talk dependencies?
03:39 cxreg chemical?
03:39 purl chemical is probably called 'heat'. :)
04:18 Tene Yay, dependencies!
04:20 eternaleye Q:chromatic/The "Dependencies Yay/Boo" Debate is Subtly Wrong/
04:20 eternaleye Whoopsies
04:20 eternaleye Made a quoting error ;-(
04:39 wayland76 joined #parrot
04:56 Tene purl: msg WhiteKnight I can't find any way to do select() or poll() on Parrot sockets.  Is this going to come as part of your async IO work?  I see an apparently-unused Parrot_io_poll.  Can I add a 'poll' method to Socket.pmc that calls that?
04:56 purl Message for whiteknight stored.
05:06 dalek rakudo: 18598de | tene++ | src/setting/IO/Socket/INET.pm:
05:07 dalek rakudo: Fix Socket::INET to re-use the appropriate attribute from its parent class.
05:07 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​8598dec8636e1f28db522258bad12f99ce8cecb
05:07 Andy I'm kinda horrified at all the dependencies I see.
05:07 Andy It's not just .c/.h
05:08 dalek parrot: r40391 | petdance++ | branches/depends (3 files):
05:08 dalek parrot: more banging on dependencies
05:08 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40391/
05:21 dalek parrot: r40392 | petdance++ | trunk/src/gc/mark_sweep.c:
05:21 dalek parrot: consting
05:21 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40392/
05:22 MikHel joined #parrot
05:26 Andy Tomrorow at this time: Dependency tracking in Parrot and why it's going to kill me.
05:28 Tene That would be tragic.
05:28 Andy I didn't look at the existing dependencies.  They're insanely Parrot-
05:28 Andy specific.  None of these existing tools will do the job.  I've started
05:28 Andy work on my own makedeps.pl.
05:28 Andy https://trac.parrot.org/pa​rrot/ticket/893#comment:7
05:29 Andy we have dependencies on .str and .vdump and this and that and the other and so on
05:29 Andy soI need to dig more.
05:29 Andy ok, nightynight
05:32 cotto Yay!  We get our own makedepend clone!
05:38 cognominal joined #parrot
05:42 treed purl: msg pmichaud Tene suggests that you may be able to help figure out a problem I'm having with a namespace(?) bug: http://github.com/cardinal​/cardinal/issues/#issue/31 Any help would be appreciated.
05:42 purl Message for pmichaud stored.
05:48 tekky joined #parrot
05:49 dalek cardinal: 35bb161 | treed++ |  (2 files):
05:49 dalek cardinal: Enable precompilation.
05:49 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/35bb161cf869c5e914522c24141aabc689457ed4
06:02 flh joined #parrot
06:06 dalek cardinal: a155287 | treed++ | README:
06:06 dalek cardinal: Update the README
06:06 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/a155287e5c1075a04eba2e2ba9c793919f24d0d6
06:10 uniejo joined #parrot
06:23 dalek cardinal: 7e2651e | treed++ | Rakefile:
06:23 dalek cardinal: Adjust filename for generated test files so that .gitignore catches them.
06:23 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/7e2651ed8ff6a3b5dd3e4b91cfdf418705d95528
07:04 chromatic joined #parrot
07:53 payload joined #parrot
08:04 tekky joined #parrot
08:06 Gerd joined #parrot
08:07 Gerd Hello Patrick
08:18 nillo left #parrot
09:14 bacek joined #parrot
09:19 donaldh joined #parrot
09:27 wayland76 joined #parrot
09:28 dukeleto joined #parrot
09:32 bacek good evening
09:39 dalek tracwiki: v4 | bacek++ | KeysRefactor
09:39 dalek tracwiki: Unscratch KeysRefactor</a> idea
09:39 dalek tracwiki: https://trac.parrot.org/parrot/wiki/K​eysRefactor?version=4&amp;action=diff
09:40 bacek msg Infinoid dalek has problems with trac's changes when "Description" contains "WikiWord" inside.
09:40 purl Message for infinoid stored.
10:02 HG` joined #parrot
10:23 gaz joined #parrot
10:24 eiro__ joined #parrot
10:25 mokurai left #parrot
10:56 UltraDM joined #parrot
11:06 AndyA joined #parrot
11:07 AndyA joined #parrot
11:21 donaldh joined #parrot
11:25 payload joined #parrot
12:16 whiteknight joined #parrot
12:17 quek joined #parrot
12:18 whiteknight good morning #parrot
12:18 whiteknight Tene: ping
12:20 whiteknight purl msg Tene select and poll will be improved with AIO, yes. But you can add a poll method to the Socket PMC too if you want
12:20 purl Message for tene stored.
12:20 wayland76 moritz implied on #perl6 that many people are at YAPC::EU.  That's why things are quiet
12:29 cono :D
12:29 cono pizza & soda.. yeah that's why so quiet :D
12:44 payload joined #parrot
12:50 quek left #parrot
12:56 JimmyZ joined #parrot
13:12 Coke when reporting bugs, it's a good idea to include the desired output and the actual output. :|
13:22 JimmyZ Coke: yes
13:57 Austin joined #parrot
14:02 Austin hello, purl
14:02 purl hi, Austin.
14:02 whiteknight good morning Austin
14:02 Austin Good morning, Andrew.
14:02 Austin What's new in GC-ville?
14:09 Austin seen pmichaud?
14:09 purl pmichaud was last seen on #parrot 11 hours, 48 minutes and 5 seconds ago, saying: and parsing should also speed up a lot when we get the calling conventions refactored.
14:10 Austin laugh
14:22 * Coke wonders if there is a keypress that will tell more to give up and act like cat.
14:32 Andy joined #parrot
14:32 Andy joined #parrot
14:42 tokuhirom__ joined #parrot
14:52 * Coke ponders replacing his helper subs in _tcl with macros.
14:52 uniejo joined #parrot
14:53 Psyche^ joined #parrot
14:54 dukeleto joined #parrot
14:56 payload joined #parrot
15:00 Tene whiteknight: You said "improved"... is there a way to select() or poll() in Parrot right now that I'm missing?
15:00 whiteknight Parrot_io_poll
15:00 whiteknight at least, that's all I'm aware of
15:00 Tene whiteknight: Right, but that's not *used* anywhere afaict.
15:00 Tene So you can't call it from PIR.
15:00 JimmyZ epoll?
15:00 purl epoll is at http://www.xmailserver.org/li​nux-patches/nio-improve.html or at http://www.xmailserver.org/linux-patches/epoll.txt
15:01 whiteknight oh, I didn't realize it wasn't called from anywhere then
15:01 moritz any news about the pcc-rewire branch?
15:01 whiteknight none that I have heard
15:02 theory joined #parrot
15:02 Tene epoll looks like it would be nice.
15:03 davidfetter joined #parrot
15:03 Tene whiteknight: If you follow to Parrot_io_poll_unix in src/io/socket_unix.c, you'll see it's not quite a standard poll(), and there's a little conversation in the POD about whether it's useful or not.
15:03 whiteknight yeah
15:04 Tene whiteknight: Ideally, I'd like a way to watch several FDs at once.  Should I maybe write a new opcode that takes an array of FDs?
15:05 whiteknight I've been trying to design a Poll PMC that would do that
15:05 Tene Ooo...
15:05 Tene Nice.
15:05 Tene So, I should just block this on io_cleanups?
15:06 nopaste "tene" at 24.10.252.130 pasted "Add a poll() method to Socket.pmc for WhiteKnight++" (37 lines) at http://nopaste.snit.ch/17456
15:06 Tene Does that look like a good commit to you?
15:08 whiteknight yeah, looks reasonable
15:08 moritz a bit more documentation might not be bad :-)
15:10 Tene moritz: the function above it that I copy/pasted didn't have documentation. :P
15:11 Tene OK
15:12 Tene whiteknight: lthough... should the poll method be on Socket or on Handle?
15:14 whiteknight I have no idea which would be better
15:14 whiteknight that's an allison question
15:14 Tene Okay, I'll just add it and let someone else sort it out. :D
15:20 Tene WhiteKnight++ for advice. :)
15:21 donaldh joined #parrot
15:22 * davidfetter wonders whether cisco is using parrot
15:23 * davidfetter hopes donaldh can provide some enlightenment on this
15:23 dalek parrot: r40393 | tene++ | trunk/src/pmc/socket.pmc:
15:23 dalek parrot: Add a poll method to Socket.pmc
15:23 dalek parrot: Add function signatures to the POD for Socket methods.
15:23 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40393/
15:24 Coke davidfetter: cisco's a big place, but I doubt they're using it for anything production.
15:24 MikHel joined #parrot
15:25 JimmyZ Is poll in socket.pmc support windows?
15:25 JimmyZ s/Is/Does/
15:25 davidfetter they were using postgresql in production at a stage when i would have been cautious about doing so
15:26 davidfetter as in, "un-updateable box-ware?!? are you out of your [long string of expletives] mind?!?"
15:27 Coke davidfetter: I'm willing to be surprised.
15:27 ruoso joined #parrot
15:30 Coke Has anything changed recently that would caus Getopt::Obj to be unavailable in an install?
15:37 cognominal whiteknight++  #  very informative stuff on planet parrot
15:37 whiteknight thanks!
15:38 Topic for #parrotis now http://www.parrot.org/ | Parrot 1.4.0 "Mundo Cani" Released! | Planet Parrot http://planet.parrotcode.org/
15:42 Coke my working copy of tclsh is borked. :|
15:45 Coke (ah, thankfully, it's just me.)
15:45 moritz I'd rather see one tclsh broken than Coke broken
15:46 * Coke wonders what =cut in PIR should do if we're not in pod mode.
15:46 * Coke thinks "enabling POD" is not the right answer.
15:46 mikehh All tests PASS (pre/post-config, smolder, nqp_test, fulltest) at r40392 - Ubuntu 9.04 amd64
15:47 Coke ah. not "=cut" but "=cut "
15:48 moritz ugh.
15:48 nopaste "coke" at 72.228.52.192 pasted "this prints nothing and doesn't error (note the extra space after the first cut." (9 lines) at http://nopaste.snit.ch/17457
15:49 Coke if someone wants to bugreport that, have fun. =-)
15:49 Coke I'm not sure what the right answer is.
15:53 jan joined #parrot
15:54 Coke (perl's podchecker doesn't complain about it.)
16:09 cotto msg darbelo When you write up your summary for #ps, be sure to mention how close you are to the timeline in your GSoC proposal.
16:09 purl Message for darbelo stored.
16:10 cotto Hmmmm.  Slow purl.
16:22 hercynium joined #parrot
16:43 hercynium joined #parrot
16:50 chromatic joined #parrot
16:51 Coke would a CCLASS_ASCII be helpful?
16:55 payload joined #parrot
16:57 * Coke finds himself wishing he had git in front of svn.
17:09 davidfetter joined #parrot
17:10 Tene Coke: I can give you a tarball of my git-svn repo.
17:10 Coke for partcl. =-)
17:10 Coke thanks, though.
17:10 moritz how many revisions are in the partcl source tree?
17:10 Coke about 500.
17:10 Coke about 550
17:11 Tene Coke: same
17:11 Tene although easy to grab yourself
17:12 Tene I never use svn directly when I can avoid it.  I can't manage to get the svn model in my head well enough to not screw things up.
17:12 PerlJam Tene: It's weird to see anyone say that about svn.
17:13 Tene It's weird to me when people say that about git, so we're even. ;)
17:16 Coke git-svn?
17:16 purl git-svn is amazingly great
17:16 Coke any urls on how to use it other than the man page?
17:20 Coke git-svn is https://trac.parrot.org/pa​rrot/wiki/git-svn-tutorial
17:20 Infinoid https://trac.parrot.org/pa​rrot/wiki/git-svn-tutorial
17:20 Coke git-svn is also https://trac.parrot.org/pa​rrot/wiki/git-svn-tutorial
17:20 purl okay, Coke.
17:21 Tene Coke: does that tutorial work for you?  I never heard any feedback after writing it.  If you have any questions or difficulties, please let me know.
17:22 davidfetter joined #parrot
17:25 chromatic whiteknight, adding all new items in a freshly allocated arena to the free list in the fixed-sized allocator is... ripe for optimization.
17:25 whiteknight yes, a very naive first attemp
17:25 whiteknight attempt
17:26 whiteknight more proof-of-concept then final implementation. Plus, it gives us a nice proving ground to test some lazy features in the PMC allocator
17:26 chromatic The benchmarks won't be representative until we fix that is all.
17:28 Coke tene: there's an unanswered question already on it.
17:31 Coke tene - you can squash commits, yes? That would be good to know.
17:31 chromatic Only until you dcommit, but yes.
17:33 * Coke wonders how long a git svn clone of parrot from r1 took. =-)
17:34 chromatic A while.  I cloned the prior ~2000 revisions.
17:34 PerlJam Coke: it takes a lot longer if the SVN repo is remote  :)
17:36 Coke msg tene - that example mentions tags, trunk and branches, but only checks out trunk.
17:36 purl Message for tene stored.
17:36 Coke (which ties into the question.)
17:38 Tene Coke: it makes the tags and branches available as git tags and branches.
17:40 Coke ok. a link to something that explains how that works but mentioning that you end up with 'trunk' would be helpful.
17:40 Coke hurm. git working copy won't build.
17:40 Coke does git have something like 'svn st -q' ?
17:42 Coke git diff --name-status
17:44 Tene git can't handle empty directories.  I think tcl might need one, iirc.
17:44 Coke yup. empty directory showed up as a file. wtf.
17:47 Coke tene; added a .README to force the directory to be non-empty
17:50 dalek partcl: r566 | coke++ | trunk/dynext/.README:
17:50 dalek partcl: add placeholder so git-svn can work
17:50 dalek partcl: review: http://code.google.com/p/p​artcl/source/detail?r=566
17:52 PerlJam Coke: it's typical to use a .gitignore file for that purpose (FYI)
17:53 tokuhirom__ joined #parrot
17:54 gaz joined #parrot
18:03 Coke PerlJam: I can give you a commit bit so you can fix it. =-)
18:05 Coke git doesn't respect svn:ignore properties, eh?
18:06 PerlJam git svn create-ignore
18:07 PerlJam (makes .gitignore files from svn:ignore properties)
18:11 Coke does it git-add them?
18:11 Coke (wow, slow0
18:14 joeri joined #parrot
18:19 tokuhirom__ joined #parrot
18:24 payload joined #parrot
18:26 Coke PerlJam: I have a few commits pending locally. I just did a git add of all the .gitignore files - when I try to commit now, it shows me another file that I already commited earlier, but has no changes now. should I expect to see it in the comments when I do a 'git commit' ?
18:27 Coke hurm. i think I might have already committed those .gitignore files locally, which is why they're all showing up in teh same list.
18:28 Coke yup, that's the problem.
18:28 treed git status # tells you what files have been modified, are untracked
18:28 PerlJam glad to have been of help  :)
18:28 treed git diff # shows a diff from HEAD
18:28 treed git commit --interactive # Best thing since sliced bread
18:29 moritz treed: not quite (git diff)
18:29 treed I love that you can edit a diff in commit.
18:29 treed moritz: Oh?
18:29 moritz treed: it doesn't show things from the staging area
18:29 treed Ah.
18:29 moritz you need git diff HEAD or git diff --cached for that
18:29 Coke I would dislike editing in a commit because of testing issues.
18:29 * treed edits commits to separate them out into more atomic commits.
18:29 treed If I had to fix a bug to get something working, OSLT.
18:30 treed I'll commit the bugfix first by itself.
18:30 treed In some cases, editing the diff so that it goes back to the original way without the new feature in.
18:30 Coke if i git rm something and then git commit that... where can I see that if I do a git svn dcommit that it'll get deleted?
18:32 moritz maybe 'git diff origin/trunk'
18:32 Coke fatal: ambiguous argument 'origin/trunk': unknown revision or path not in the working tree.
18:33 Coke a, just trunk, yes, that works.
18:34 Coke danke.
18:34 Coke didn't seem to show up in just git diff --cached
18:35 moritz --cached doesn't make a difference if you comitted it already
18:35 Coke tene++
18:35 Coke perljam++
18:35 Coke chromatic++
18:35 moritz only if you added but not commited
18:35 Coke moritz++
18:35 Coke ok. I thought cached was "stuff you committed but hadn't dcomitted"
18:37 moritz no, git doesn't know about these things, only git-svn does
18:38 athomason joined #parrot
18:41 dalek close: r88 | Austin++ | trunk/ (17 files):
18:41 dalek close: Grammar refactor checkpoint. Nothing works.
18:41 dalek close: review: http://code.google.com/p/close/source/detail?r=88
18:43 particle treed: use git commit -p # shortcuts to patch in interactive mode
18:44 particle er, git add -p
18:44 particle i like to add before commit.
18:46 treed Ah.
18:46 treed I add in commit --interactive.
18:47 treed Mostly because I'm sometimes not sure how many different commits I'll want.
18:47 treed So I'll jump into commit --interactive, examine things, then start sorting it out in depends order.
18:47 nillo joined #parrot
18:51 iblechbot joined #parrot
18:55 Coke looks like I have it working enough that i can use it basically as a disconnected svn, which is all I needed.
19:19 dalek TT #900 created by Austin_Hastings++: NQP parses functions beginning with 'make' as keyword
19:25 sekimura left #parrot
19:38 hercynium joined #parrot
19:47 payload joined #parrot
19:53 theory joined #parrot
20:19 MoC joined #parrot
20:22 mokurai joined #parrot
20:33 JC1 joined #parrot
20:33 cogno joined #parrot
21:00 bacek joined #parrot
21:00 Whiteknight joined #parrot
21:01 Whiteknight chromatic: ping
21:02 chromatic pong
21:02 Whiteknight I wanted to get more information from you about that lazy allocation idea
21:02 Whiteknight because I'm thinking about it, and I feel like it's going to be more expensive overall because of added runtime checks
21:02 chromatic Amortized, it's about the same.
21:03 chromatic You have "Add everything to a free list on every new pool allocation", with all of that runtime cost.
21:03 Whiteknight okay, so then what would be the benefit in doing one over the other?
21:03 Whiteknight right, but I'm adding everything at once in a very tight loop
21:03 chromatic That also touches the page in a big way and moves empty, unused stuff into a cache.
21:03 chromatic Processor cache.
21:03 Whiteknight ah, I see what you are saying then
21:03 chromatic The other one is "Allocate, update the first_free_in_pool pointer".
21:04 chromatic Skip the add to free list.
21:04 chromatic Then when you want a new item, grab first free in pool, bump the pointer, then check if it's at the end.
21:04 chromatic You already have to do that check if you use the free list; you could have an empty free list.
21:04 Whiteknight ok
21:04 chromatic Grabbing a free item should check the free list first, then bump the pool pointer.
21:05 chromatic This strategy is also a step toward releasing allocated memory later.
21:05 Whiteknight how's that?
21:05 chromatic If we mmap() our pools and if we have a copying/compacting scheme, we can detect when a pool is unused.
21:05 Whiteknight I feel like the only real step we can make in that direction is to introduce copying/compacting
21:05 chromatic Then unmmap() it back to the OS, for platforms where that works.
21:07 Whiteknight unfortunately we aren't going to have any good comparative benchmarks for this new allocator until NotFound moves forward with TT #895
21:08 chromatic Conservative estimate: 10% improvement.
21:08 Whiteknight I could try to introduce that change into the PObj allocator instead, see how it works there
21:08 chromatic Add another 5% for the pool change.
21:08 Whiteknight 15% is a nice little change, for such a comparatively small amount of code to write
21:08 chromatic It's a nice tuning without too much danger.
21:09 Whiteknight so if we do this lazy pool thing on the PObj allocator, what do you estimate that will buy us?
21:09 Whiteknight another 5%?
21:09 chromatic 3-5%
21:09 purl 2.95
21:09 Whiteknight ok
21:09 chromatic But...
21:09 Whiteknight ...?
21:09 purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
21:09 chromatic It also lets us allocate larger pools.
21:10 Whiteknight what do you mean "lets us"? Is there anything stopping us from allocating much larger pools now?
21:10 chromatic Adding a fresh pool to the free list is O(n).
21:10 Whiteknight hell, our pool size grows by 1.5 times on every new allocation, they get huge after a while
21:10 chromatic They start small.
21:10 Whiteknight on a side note, they start too small considering our significant startup costs
21:11 chromatic Exactly.
21:11 chromatic If we didn't have that O(n), we could bump them up so that most of our test programs fit in the initial pools and avoid GC altogether.
21:12 chromatic I profiled it.  That O(n) wipes out the costs of making them larger.
21:13 chromatic Wipes out the gains, I mean.
21:13 Whiteknight okay, so implement that lazy allocation algorithm first, increase initial pool size, we're looking at about 15-20% improvement?
21:13 Whiteknight including TT #895
21:14 chromatic Maybe 15% overall.
21:14 Whiteknight okay, that's certainly worth my while
21:14 chromatic If we increase the pool size, we can ignore GC in most of the test programs.
21:14 chromatic Figure another 10% improvement there, so our test suite could be some 25% faster.
21:15 Whiteknight ok
21:16 chromatic Bump up the pools so that Rakudo doesn't have to run the GC to start up and....
21:19 Whiteknight that optimization path has finite potential though, we can't hog too much memory
21:19 cotto says who?
21:19 purl i think says is not reliable, in that errors are reported but no automatic retry.
21:19 chromatic 10 MB startup cost is not hideous.
21:19 chromatic We can trim that.
21:25 donaldh joined #parrot
21:26 Whiteknight too big and there's a very real possibility that memory will start getting moved to disk
21:27 Whiteknight 10MB is probably acceptable, probably even higher would be fine, but too much is too much
21:28 chromatic We'll be able to profile Rakudo in the near future.
21:28 cotto Yes we will.
21:28 purl o/` We will, we will ROCK YOU! o/`
21:34 joeri left #parrot
21:37 MikHel joined #parrot
21:40 bacek Good morning #parrot
21:41 donaldh Hi, reading the backlog, there seems to be some GC activity taking place.
21:43 donaldh I'm in the process of hacking Boehm GC into parrot to see how it fares
21:45 Whiteknight awesome!
21:45 purl rumour has it awesome is a window manager or at http://awesome.naquadah.org or awesome
21:45 Whiteknight nopaste?
21:45 purl nopaste is, like, at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others) or http://gist.github.com/ or paste or gtfo
21:46 nopaste "Whiteknight" at 69.248.162.161 pasted "lazy allocator patch for chromatic++" (79 lines) at http://nopaste.snit.ch/17461
21:46 Whiteknight chromatic, that patch should do what you are talking about with the lazy allocator
21:47 Whiteknight "this software is provided as-is without any warranty or even suspicion that it should work at all"
21:47 chromatic That's pretty short.  That's a decent proof of concept.  What runs with it?
21:47 Whiteknight nothing, haven't even tried building it yet
21:47 donaldh Ends up being a bit of a hatchet job. Have to replace _everything_ with Boehm. It does flush out all the cases where things directly call malloc/free without going through mem_sys_alloc
21:47 Whiteknight mostly want a sanity check that this is what you are talking about
21:48 chromatic donaldh, can you send a patch to make things go through the mem_sys_* macros?
21:48 Whiteknight donaldh: where are you doing your work? in a branch?
21:49 donaldh chromatic: I could probably make up a patch to do that. I would need to search/replace all GC_MALLOC calls with mem_sys_alloc. I was lazy, tsk.
21:50 chromatic Even if the Boehm replacement never works, that would be an advantage for Parrot.
21:50 donaldh Whiteknight: just on my checkout.
21:53 Whiteknight okay, awesome. I would love to see it whenever you get a chance
21:54 Whiteknight the only problem I found with Boehm was the difficulty in getting the VTABLE_destroy called
21:54 Whiteknight it doesn't make any guarantee whatsoever about order of destruction, or even timeliness of destruction
21:55 donaldh Is that important semantically for parrot?
21:55 Whiteknight no, our current GC doesn't make those guarantees either
21:55 chromatic Timeliness not so much.
21:56 Whiteknight order of destruction would sure be nice, but at this point we are more likely to get it by asking Santa
21:56 donaldh If you GC _everything_ do you need a VTABLE_destroy?
21:56 chromatic Yes.
21:56 Whiteknight yes, because some PMC types still need custom finalization (think closing filehandles)
21:56 Whiteknight of course, far fewer PMCs would need them then what currently use them
21:57 donaldh Ah, okay. That was my question. It is important sematically because it is parrot's finalize.
21:58 Whiteknight Boehm does provide a callback hook that you can pass a function pointer to to run custom cleanup on a freed item, but I never quite dug into that deep enough
21:58 chromatic I had to make that work in Haskell for Pugs.  Found bug in GHC that way.
21:59 donaldh Yes I read about that but decided to try an extremely simple approach first.
21:59 Whiteknight the simpler the better
22:00 donaldh Okay, Failed 6/317 test programs. 49/9824 subtests failed.
22:03 Whiteknight chromatic: that patch had at least 1 typo and it segfaults somewhere when I test it
22:04 theory joined #parrot
22:04 chromatic +        pool->newfree = (PMC_Attribute_Free_List*)((char*)(pool->newfree) + pool->attr_size);
22:04 chromatic could be
22:04 cotto quality
22:04 chromatic pool->newfree++
22:05 donaldh Do you want me to post a svn diff just now? I might not get back to this for a few days.
22:06 Whiteknight chromatic: can't be that because the ->newfree pointer doesn't know what size the object is
22:06 cotto chromatic, how do we feel about perl 5.10 features in the profile postprocessing script?
22:06 chromatic Hm, I see.
22:07 chromatic cotto, which ones?  given/when?
22:07 cotto smart match
22:07 purl hmmm... smart match is http://www.xray.mpe.mpg.de/mailing-lis​ts/perl5-porters/2005-12/msg00561.html or L<perlsyn/Smart matching in detail> in >5.9.* or a feature from perl 6
22:08 chromatic Good for a first approximation anyway.
22:08 cotto Ok.  It won't be hard.
22:08 cotto just annoying
22:10 chromatic To use smart match?
22:13 cotto yeah.  I'm checking if a string is an element of a list.
22:14 ruoso joined #parrot
22:14 cotto to *not* use smart match is annoying
22:20 GeJ Good morning everyone
22:25 Whiteknight good morning GeJ
22:31 kid51 joined #parrot
22:39 rg joined #parrot
22:40 Whiteknight ah, found my errpr
22:40 Whiteknight error
22:40 Whiteknight pool->newfree == NULL, insted of pool->newfree = NULL;
22:42 cotto That didn't produce a warning?
22:47 kid51 [somewhat OT]  When I am viewing either planet.parrotcode.org or Whiteknight's blog in Firefox and go to print, I only get the first page of any particular blog post -- and even the header doesn't get printed on the same page as the first paragraphs.
22:47 kid51 Has anyone else experienced this?
22:49 Whiteknight never heard of that
22:49 kid51 That's Firefox on Ubuntu Linux, BTW
22:49 Whiteknight cotto: maybe, but the build zipped by so quickly I didn't see it
22:51 Zak joined #parrot
22:51 cotto seen rgrjr
22:51 purl rgrjr was last seen on #parrot 1 years, 96 days, 3 hours, 13 minutes and 19 seconds ago, saying: thx.  [Apr 29 19:32:08 2008]
22:51 nopaste "donaldh" at 213.123.171.12 pasted "chromatic: patch to replace malloc / free with mem_sys_allocate / mem_sys_free" (330 lines) at http://nopaste.snit.ch/17463
22:51 kid51 And, based on Preview, it looks like I'll get the same results printing from either Camino or SeaMonkey on Mac OS X
22:51 Whiteknight well holy shit, I'm sure I've seen him in here more recently then 1.25 years ago
22:52 kid51 seen rgr
22:52 purl rgr was last seen on #parrot 2 years, 230 days, 19 hours, 9 minutes and 3 seconds ago, saying: Anybody want to point me at something?  [Dec 17 03:37:17 2006]
22:52 kid51 Whiteknight's blog?
22:52 purl it has been said that Whiteknight's blog is certainly not "authoritative", but Whiteknight is a committer, yes
22:53 chromatic cotto, go ahead and use smart match (if it wasn't clear already).
22:53 kid51 purl forget Whiteknight's blog
22:53 purl kid51: I forgot whiteknight's blog
22:53 kid51 purl Whiteknight's blog is http://wknight8111.blogspot.com/
22:53 purl OK, kid51.
22:54 kid51 Whiteknight's blog?
22:54 purl Whiteknight's blog is http://wknight8111.blogspot.com/
22:54 dalek parrot: r40394 | whiteknight++ | trunk/src/gc (2 files):
22:54 dalek parrot: [TT #895] improvement to the fixed-size allocator that uses a lazy allocation approach as suggested by chromatic++. May adapt this same methodology, after testing, to the PObj allocator as well for the win.
22:54 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40394/
22:54 mikehh_ joined #parrot
22:54 donaldh chromatic: I realize that I've edited two generated lexer files in that patch but I don't have flex installed.
22:55 chromatic Did you edit the source files?
22:56 donaldh Yes.
22:56 cotto seen rj
22:56 purl rj was last seen on #catalyst 3 years, 314 days, 20 hours, 55 minutes and 36 seconds ago, saying: who knows how to configure apache to run catalyst app?  [Sep 24 01:55:25 2005]
22:57 chromatic Shouldn't be a problem then.
23:01 donaldh I would need to dust off my flex knowledge to remember how to override yymalloc and yyfree.
23:05 chromatic +    if(pool->newfree != NULL) {
23:05 chromatic coding std!
23:05 chromatic I beat mikehh in reporting that one.
23:05 chromatic Could even be:
23:05 chromatic if (pool->newfree) {
23:06 donaldh chromatic: I can revise that patch to fix the lex source files. It'll be tomorrow though. Sleep now.
23:06 chromatic Thanks.
23:26 eternaleye purl: seen rjr
23:26 purl I haven't seen 'rjr', eternaleye.  Close matches are: rgrjr [1y, 96d, 3:48:43], rjray [2y, 354d, 19:27:16]
23:44 mberends joined #parrot

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

Parrot | source cross referenced