Camelia, the Perl 6 bug

IRC log for #parrot, 2009-07-01

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:06 Whiteknight Infinoid: that patch looks reasonable enough to my untrained eye
00:07 Whiteknight i don't see you calling pipe() anywhere though
00:10 Infinoid Right, that's the point.  Instead, I create a new Pipe PMC
00:11 Whiteknight so...how do you create the pipe at the OS level?
00:11 Infinoid Pipe.new() does that
00:11 Whiteknight oh
00:11 Whiteknight okay then
00:12 Infinoid by the way, can you free up a child process on win32 by simply closing its HANDLE?
00:12 nopaste "pmichaud" at 72.181.176.220 pasted "this is what is maddening about parrot" (22 lines) at http://nopaste.snit.ch/17078
00:12 Infinoid Or do you have to call the WaitWhateverCamelCase() thingy?
00:12 Whiteknight I believe so, yes
00:12 Infinoid WaitForSingleObject()
00:13 pmichaud yes, the difference between a.rakudo and b.rakudo is a COMMENT AND A BLANK LINE
00:13 Whiteknight pmichaud: that is maddening
00:13 Infinoid uck.
00:13 pmichaud a.rakudo segfaults.  b.rakudo passes.
00:13 Whiteknight happen to have a backtrace?
00:13 pmichaud I can get one.
00:14 Whiteknight that would be helpful, make sure IMCC is handling comments and blank lines properly
00:14 Whiteknight not that I am not grasping at straws here
00:14 pmichaud it's not IMCC that gets the comment.
00:14 pmichaud the sources are Perl 6
00:14 Whiteknight oh crap, right, it's PCT.
00:14 pmichaud even PCT doesn't get the comment.
00:14 Whiteknight ?
00:15 pmichaud by the time we get to PCT, they should be exactly equivalent with the exception of the position of the final statement
00:15 pmichaud the comment introduces no functional change in the code.
00:15 Infinoid Can that be verified?
00:15 pmichaud I think so, yes.
00:15 pmichaud just a sec.
00:15 pmichaud backtrace first
00:15 Infinoid thanks :)
00:15 Whiteknight heisenbug--
00:15 jonathan ffs wtf huh?
00:15 Infinoid heisenbugs often show up in valgrind
00:16 nopaste "pmichaud" at 72.181.176.220 pasted "backtrace of "a.rakudo"" (80 lines) at http://nopaste.snit.ch/17079
00:16 * Whiteknight needs to practice his valgrind-foo
00:16 jonathan pmichaud: tbh though, I've been moving these things around almost on a per-commit basis at times.
00:17 Infinoid vgp='valgrind --suppressions=/some/path/to/​parrot/tools/dev/parrot.supp --freelist-vol=1000000000 --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test'
00:17 pmichaud jonathan: yes, I know -- it's long been my experience with Parrot that simply changing a line of source causes the bugs to move
00:17 Infinoid Whiteknight: That's courtesy of chromatic++.  Stick that in your .bashrc, and then replace "./parrot" with "vgp" and you're off and running
00:17 jonathan All about getting (un)lucky with the memory allocations I guess.
00:18 Infinoid (replace in your parrot command line I mean)
00:18 Infinoid ooh, the obj=0x2 bug again
00:18 jonathan It does actually crash while doing a GC run.
00:18 jonathan Though I'll get it's nothing to do with the GC and everything to do with earlier corruption.
00:19 Infinoid That's a pretty safe bet
00:19 jonathan (well, it is to do with the GC probably, but not this specific run through of it)
00:19 pmichaud agreed.
00:19 pmichaud running with -G means the segfault disappears, as usual.
00:19 jonathan So far as we call "X was not marked and should have been" style things as GC bugs.
00:20 pmichaud ...installing valgrind
00:23 Infinoid Hmm.  I have no idea whether valgrind will help or not
00:23 Infinoid From valgrind's perspective, we've traded one PMC struct for another, but the arena is still allocated
00:24 Infinoid Even if it's on the free list, it's still reachable
00:24 pmichaud valgrind gives me a huge amount of output
00:25 pmichaud ...and no segfault.
00:26 pmichaud http://pmichaud.com/sandbox/vgout.txt
00:26 jonathan I fear valgrind won't help
00:27 jonathan Since we allocate out of our own pools for PMCs.
00:27 kid51 joined #parrot
00:28 Infinoid There are apparently some annotations we can add to make valgrind smarter about that, but that's not a quick project
00:28 pmichaud so, what should I do with the (many) segfaults that are starting to show up in Rakudo?
00:29 Infinoid boil them down if you can (which I fear you can't)
00:30 pmichaud since something as simple as adding a comment is sufficient to make the problem disappear, I'm not sure how to boil this one down.
00:30 Infinoid http://valgrind.org/docs/man​ual/mc-manual.html#mc-manual.mempools would help here
00:30 Whiteknight Infinoid: where do I point that suppressions file thingy?
00:31 Infinoid it's tools/dev/parrot.supp in your checkout
00:31 Whiteknight okay, thanks
00:35 * jonathan -> sleep
00:35 dalek rakudo: ee1fd13 | pmichaud++ | src/classes/Multi.pir:
00:35 dalek rakudo: Allow .WHAT and other p6object methods on Parrot MultiSub objects (RT #66928).
00:35 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​e1fd13321ed5bbe1cc51fde5efce2d7c26049d5
00:41 dalek rakudo: 7fdd7c8 | pmichaud++ | build/PARROT_REVISION:
00:41 dalek rakudo: Bump PARROT_REVISION so we get some Parrot fixes (RT #66060).
00:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​fdd7c8b8dd2bc374e14c19362369c333829431a
00:48 Whiteknight pmichaud: this is a very interesting stack trace
00:49 Whiteknight trace_system_stack is a ugly messy function and we should kill it with a stick
00:50 Whiteknight but, I can't look at it any more tonight, need sleep. Goodnight
00:50 Infinoid sleep well
00:50 Whiteknight always do :)
00:51 * Infinoid makes a quick attempt to see how hard adding valgrind annotations is
00:58 Infinoid Can we apply redzones in our arena allocator?
01:17 rdice joined #parrot
01:27 Coke Infinoid: that vgp is in tools/dev/vgp
01:27 Coke if you can't supply a short PIR snippet, it would seem that declaring the parrot and rakudo versions and supplying the backtrace can't hurt.
01:28 Coke it is at least theoretically possible that someone can avoid the segfault based on the BT alone.
01:47 dalek parrot: r39852 | pmichaud++ | trunk/compilers/pge/PGE/OPTable.pir:
01:47 dalek parrot: [pge]:  Change ternary parse error to throw exception instead of exit.
01:47 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39852/
01:49 Coke pmichaud: I think that will fix a tcl spectest bug.
01:50 pmichaud Coke: excellent, I hope it does.  :-)
02:16 leto_ joined #parrot
02:19 Andy joined #parrot
02:32 Coke vgp?
02:32 purl somebody said vgp was valgrind --suppressions=tools/dev/parrot.supp --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test $@
02:32 Coke vgp is also tools/dev/vgp
02:32 purl okay, Coke.
02:33 japhb joined #parrot
02:43 szabgab joined #parrot
02:45 dalek rakudo: 6c6299f | pmichaud++ | src/builtins/globals.pir:
02:45 dalek rakudo: Fix %*VM<config> (RT #66818).
02:45 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​c6299fccddffc1b2905ff6a4598559d006c5cd8
02:45 dalek rakudo: 5351a33 | pmichaud++ | build/PARROT_REVISION:
02:45 dalek rakudo: Bump PARROT_REVISION to get fix for RT #66840 (ternary error shouldn't exit)
02:45 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​351a33da8a4d98a0610abea466e51cdfb7901aa
02:57 s1n is there anything built in to build ctags or am i going to have to do that myself?
02:58 s1n i see references to auto::ctags
03:01 s1n okay, i see the tags-* make targets
03:02 leto_ joined #parrot
04:16 zak_ joined #parrot
04:32 Theory joined #parrot
05:21 dukeleto joined #parrot
05:40 QiFengDao joined #parrot
05:43 QiFengDao left #parrot
05:44 coke_zzz pmichaud: sadly, no fix. [expr 7?3>>>2:3] should give an error because >>> isn't a valid operator. instead I gte ResizablePMCArray: Can't pop from an empty array!
05:44 Coke msg pmichaud sadly, no fix. [expr 7?3>>>2:3] should give an error because >>> isn't a valid operator. instead I gte ResizablePMCArray: Can't pop from an empty array!
05:44 purl Message for pmichaud stored.
06:00 chromatic joined #parrot
06:01 uniejo joined #parrot
06:06 MoC joined #parrot
06:06 Zak joined #parrot
07:05 japhb joined #parrot
07:26 zak_ joined #parrot
07:28 particle joined #parrot
07:28 soxet joined #parrot
07:35 iblechbot joined #parrot
07:36 purl joined #parrot
08:36 mikehh pre/post config, smolder, fulltest All PASS at r39852 - Ubuntu 9.04 amd64
09:10 bacek_ joined #parrot
09:15 whoppix joined #parrot
09:27 bacek_ o hai
09:29 Infinoid good evening
09:29 mikehh greetings
09:32 moritz oh hai
09:37 * bacek_ had 6 hours of meeting today and want to die...
09:38 bacek_ meetings...
09:38 purl HE WHO CONTROLS THE MEETINGS, CONTROLS THE UNIVERSE!  (see also, "litany against meetings")
09:38 bacek_ O! purl++
09:38 moritz litany against meetings?
09:38 purl "I must not attend meetings. Meetings are the mind killer. Meetings are the little-death that brings total obliteration. I will face my meeting. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the wasted time has gone there will be nothing. Only I will remain."
09:38 Infinoid "I will find a way to smuggle my DS into meetings."
09:39 bacek_ I can't speak and play on my iPhone at the same time :(
09:40 bacek_ And I've got nice assertion "!PObj_on_free_list_TEST(s)" in my keys_revamp branch...
09:40 bacek_ Something collected prematurely...
09:41 Infinoid Last night I spent a little time trying to add valgrind annotations to our GC
09:42 Infinoid I think once this is working, we can take over the universe with it
09:43 bacek_ "valgrind annotations"?
09:43 Infinoid http://valgrind.org/docs/man​ual/mc-manual.html#mc-manual.mempools
09:45 Infinoid the goal is to get it to emit errors/warnings about access to pobjs on the free list
09:45 bacek_ PARROT_ASSERT is very nice "error/warning" in my case...
09:46 Infinoid we've had a heisenbug for a while in which we end up with a PMC ATTR pointer value of 0x2, which pmichaud hit lastnight in rakudo
09:47 Infinoid He removes a comment and a blank line from his script, and it goes away.  Or something like that
09:47 Infinoid So it's affected by GC churn
09:47 bacek_ Hah!
09:48 bacek_ It's not only my problem!
09:48 bacek_ But in my case GC collecting Hash keys way too early...
09:49 Infinoid hmm
09:50 Infinoid anyway, if I can get valgrind to tell me when we access freed pmcs, I'm hoping it might help find this bug
09:54 bacek_ I hope so.
10:04 * Infinoid stares at Memory_Pool, Small_Object_Pool and Small_Object_Arena and scratches his head
10:10 * bacek_ passing Heavy Duty Head Scratcher to Infinoid
10:14 bacek_ oh... Can we integrate some third-party GC into parrot and blame "third party" for all faults?
10:15 bacek_ Boehm/Harmony/whatever...
10:27 muixirt joined #parrot
10:27 Infinoid blaming is fine, but I prefer fixing
10:28 Infinoid Anyway, as far as I can tell, the GC is fine.  It's just that some of our code isn't using it right :)
10:28 Infinoid so I think the alternatives would have the same issue
10:31 bacek__ joined #parrot
10:32 Infinoid bacek__: Is the sun down yet?
10:32 Infinoid Your shadow is getting longer
10:32 bacek__ clock?
10:32 purl bacek__: LAX: Wed 3:32am PDT / CHI: Wed 5:32am CDT / NYC: Wed 6:32am EDT / LON: Wed 11:32am BST / BER: Wed 12:32pm CEST / IND: Wed 4:02pm IST / TOK: Wed 7:32pm JST / SYD: Wed 8:32pm EST /
10:33 bacek__ it's half-past-eight
10:33 bacek__ and it's winter
10:33 Infinoid ah
10:33 bacek__ so it's pretty dark here
10:33 bacek__ And I'm on 3G internet which lost connection from time to time :/
10:34 Infinoid eew, cell internet
10:34 * Infinoid feels your pain
10:35 bacek_with_shadow Infinoid: heh. I work for one of largest telco in AU.
10:35 cognominal joined #parrot
10:44 masak joined #parrot
11:10 bacek_with_shadow msg Whiteknight I suspect, that PMCs on C stack which survive more than 1 collection causing a lot of problems. They didn't have "live" flag cleared. So second collection will not call VTABLE_mark. (I hope I totally wrong...)
11:10 purl Message for whiteknight stored.
11:12 szbalint bacek_with_shadow: telstra?
11:12 purl telstra is probably an evil monopoly. or deeply fscked up and sucks half-decayed gerbils through dirty sausage casing or a spamhaus or http://www.hereticweb.org/sm​elstra/telstracallcentre.mp3 or  particularly evil
11:13 bacek_with_shadow szbalint: I said "one of" not "largest" :) Optus
11:13 bacek_with_shadow optus?
11:13 purl i guess optus is probably one of the top 3 Perl employers in the country
11:13 bacek_with_shadow wow!
11:14 szbalint ;)
11:18 bacek_with_shadow purl telstra is also AKA hellstra
11:18 purl okay, bacek_with_shadow.
11:21 Infinoid ... dirty sausage casing, wow
11:22 mikehh joined #parrot
11:27 bacek_with_shadow Infinoid: noone like monopolies...
11:37 * bacek_with_shadow taking Heavy Duty Head Scratcher back from Infinoid
11:38 bacek_with_shadow sorry, I need it for myself
12:01 kid51 joined #parrot
12:06 Whiteknight joined #parrot
12:06 muixirt hi Whiteknight
12:07 Whiteknight good morning muixirt
12:07 muixirt Whiteknight, read your last post
12:08 Whiteknight ?
12:08 muixirt it's quite a C-centric view
12:09 Whiteknight yes, that's true. But Parrot is written in C
12:09 Whiteknight there is plenty of optimizations that could be made in pure assembly though
12:10 muixirt I would write the whole dispatching and opcode code in assembler
12:11 Whiteknight There isn't necessarily any benefit in that unless we majorly change the algorithm that we're using
12:11 Whiteknight a context-threading core is the next step I think, and once we have that we can add trace-based JIT for the hotspots
12:13 muixirt from a low-level view (or in forth systems) subroutine threaded code is all about avoiding indirect calls
12:15 muixirt Whiteknight, what papers did you read on that topic?
12:16 Whiteknight I did mention that I wasn't being accurate about subroutine threading in the blog post
12:16 ArjenL left #parrot
12:16 Whiteknight But you're right, a "real" subroutine threaded system will avoid indirect calls like that
12:19 muixirt soxet, what I would call 'subroutine threading' is what you call 'context-threading', more or less
12:19 muixirt s/soxet/so/
12:21 muixirt I wonder how your proposal would handle that 'foo' literal in your example new P0, 'foo'
12:22 * kid51 starts to dive into Whiteknight's post-YAPC blogs ... but has to go to $job
12:24 Whiteknight muixirt: from what I have read, there are distinctions between subroutine-threading and context-threading
12:24 Whiteknight although i may not be entirely clear on the differences
12:25 muixirt Whiteknight, I'm curious :-) what have you read?
12:26 Whiteknight let me see if I can find a link
12:27 Whiteknight http://citeseerx.ist.psu.edu/viewdoc/download​?doi=10.1.1.59.1271&amp;rep=rep1&amp;type=pdf
12:29 Whiteknight that's one that I've read most recently, and I've been following through the web of citations to find new related papers
12:29 muixirt Whiteknight, thanks ... hopyfully it is readable without a cs grade
12:32 dalek parrot: r39853 | whiteknight++ | trunk/src/gc/api.c:
12:32 dalek parrot: [gc] Add some documentation to api.c to explain what most of the files in this system do.
12:32 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39853/
12:32 Whiteknight http://en.wikipedia.org/wiki/Forth_v​irtual_machine#Subroutine_threading Here is a very interesting overview on Wikipedia
12:36 muixirt Whiteknight, some time ago i read Anton Ertls paper mentioned there, hence my low-level view :-)
12:37 nopaste "muixirt" at 91.47.112.145 pasted "for Whiteknight, example for direct threaded code in amd64 asm code" (74 lines) at http://nopaste.snit.ch/17081
12:38 Whiteknight yeah, I guess what I presented as subroutine-threaded code is really an example of call-threaded code.
12:38 Whiteknight so I should post an update to that
12:40 ruoso joined #parrot
12:42 * muixirt has accidently overwritten his call threaded example, sigh!
12:49 Whiteknight I updated the blog post with some clarifications
12:51 skids joined #parrot
12:55 Whiteknight purl msg Infinoid check out r39853, I added some explanations of files in src/gc/api.c. Let me know if that answers any of your questions
12:55 purl Message for infinoid stored.
12:56 Whiteknight purl msg bacek that's a very interesting idea about the system stack thing. Worth looking into.
12:56 purl Message for bacek stored.
13:13 Whiteknight joined #parrot
13:22 mj41 joined #parrot
13:27 clinton joined #parrot
13:29 nopaste "muixirt" at 91.47.112.145 pasted "for Whiteknight, example for call threaded code in amd64 asm code" (60 lines) at http://nopaste.snit.ch/17082
13:33 muixirt Whiteknight, the direct threaded code runs in about 34 secs. and the call threaded code in about 9 secs.
13:37 Whiteknight that's a pretty impressive benchmark
13:37 Whiteknight what platform/processor are you on?
13:38 muixirt x86_64 linux
13:39 Whiteknight okay.
13:41 muixirt Whiteknight, you mentioned trace-based JIT, did you study the tracemonkey approach?
13:42 Whiteknight muixirt: I've been looking very closely at tracemonkey, yes
13:43 muixirt I can't see how Parrot would manage to infer the types of, let's say, rakudo variables
13:43 Whiteknight pmc->vtable->base_type
13:45 PacoLinux joined #parrot
13:50 dalek parrot: r39854 | NotFound++ | trunk (2 files):
13:50 dalek parrot: [core] respect HLL mappings in split, TT #794
13:50 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39854/
13:53 muixirt Whiteknight, sure?
13:54 Whiteknight mostly sure, most of the time
13:55 muixirt so as the interpreter executes the bytecode, pmc->vtable->base_type always reflects the type of the perl6scalar?
13:56 jonathan If it's wrapped in a Perl6Scalar proxy it'll always be the same, and not related to what's contained.
13:56 NotFound The type of perl6scalar is perl6scalar, isn't it?
13:58 Whiteknight for cases where we can't accurately check the type of the object, we just won't be able to optimize things
13:58 muixirt NotFound, yes, but trace based compilation tries to assume whether a variable is/contains for instance a integer (at that point), right?
13:59 NotFound If some HLL know for sure the type of some var during a bug, for example, and optimize basing on it, is the HLL business, not the parrot backend, IMO.
14:00 Whiteknight muixirt: trace-based JIT doesn't check for specific types, only that a certain object does not change type on each iteration of a loop
14:01 NotFound s/bug/loop
14:01 szbalint that's the beauty of it
14:01 NotFound Stormy wheater makes me doing even more mistakes than ususally.
14:01 muixirt Whiteknight, well that tracemonkey LIR operates on integers, right?
14:02 Whiteknight I can't imagine that it's all integers for javascript, it's all sorts of prototype-based object references
14:04 muixirt there are no integers in JavaScript, only floating point numbers
14:06 muixirt and LIR has opcodes for integer and floatings point operations
14:09 Coke-ZZZ any world travellers here have pointers on booking flights between the US & EU?
14:10 szbalint get your fingerprints removed by acid
14:10 szbalint and watch the hiliarity ensue
14:10 szbalint tell them it's a sideeffect of a cancer drug you used to take
14:11 szbalint http://www.forensicmag.com​/News_Articles.asp?pid=594
14:11 muixirt jonathan, so Parrot has no means to make a judgement if integer operations would suffice in case of a per6scalar?
14:15 jonathan If the Perl 6 type checker had enough info to know, it could probably convert a multi dispatch to a static one.
14:15 jonathan my int $x; though would end up in an I register rather than a P one.
14:16 jonathan (vs my Int $x)
14:29 PacoLinux joined #parrot
14:30 NotFound I suppose any good compiler can optimize 'for (i= 0; i < 10; ++i) ' to using integer if it can know for sure that 'i' is not touched by any other part.
14:31 NotFound No need to special JIT runtime analysis magic to do that.
14:35 muixirt Well Perl6 might be a bad example for that because it can act like a static language as log as you provide the appropriate native type (line my int $x;)
14:36 muixirt in that case the perl6 compiler has to do the optimizations and jitting is more or less trivial
14:37 NotFound Well, the code generated can be the same no matter if the programmer provides the info ot the compiler deduce it.
14:38 muixirt NotFound, so we need better compilers and not L1/LIR/trace based compilation :-)
14:38 NotFound Better compilers will be good, in any case.
14:40 * davidfetter wonders what he can do, short of getting a bachelor's in CS, to understand what the issues around this are
14:41 muixirt davidfetter, hg clone http://hg.mozilla.org/tracemonkey
14:42 muixirt and read the whole thing
14:42 NotFound Then return and explain it to us X-)
14:45 * muixirt is waiting
14:46 davidfetter heh
14:52 Austin joined #parrot
14:54 Austin Error on final test. How frustrating is that?
14:57 jonathan I hate it when that happens.
14:58 jonathan Especially if your test suite takes 10+ mins to run.
14:59 Austin :) Fortunately, I don't have that many tests.
14:59 Austin Or is that "Unfortunately?"
15:00 Austin I have two questions, jonathan. Do you have some mips to spare?
15:00 dalek close: r26 | austin_h...@yahoo.com++ | trunk/ (4 files):
15:00 dalek close: Moved 'p6object' phylum to 'P6object' to reflect name in library. Made some
15:00 dalek close: changes to support Node.c=
15:00 dalek close: review: http://code.google.com/p/close/source/detail?r=26
15:03 Austin Moo.
15:06 cghene joined #parrot
15:12 dalek rakudo: 2dded8e | pmichaud++ | docs/spectest-progress.csv:
15:12 dalek rakudo: spectest-progress.csv update: 412 files, 11592 passing, 52 failing
15:12 dalek rakudo: Failure summary:
15:12 dalek rakudo:     S04-declarations/my.rakudo aborted 47 test(s)
15:12 dalek rakudo:     S12-enums/basic.rakudo 27 - short name of the enum without parenthesis is an enum
15:12 dalek rakudo:     S32-num/rand.rakudo aborted 4 test(s)
15:12 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​dded8edc021a3a33c89daa31991a1f874bbc100
15:13 amuck_ joined #parrot
15:32 Coke is there a hackathon planned for yapc::eu?
15:40 jdv79 joined #parrot
15:41 Theory joined #parrot
15:49 mikehh joined #parrot
15:59 darbelo joined #parrot
16:05 bruce joined #parrot
16:06 pmichaud Coke: I think most people are aiming at a 1-day hackathon or session post-yapc::eu
16:09 Coke pmichaud: turns out I just got screwed. nevermind. :|
16:10 Coke purl, going to yapc::eu 2009?
16:10 purl going to yapc::eu 2009 is probably ash or BinGOs or maybe coke or jnthn
16:10 Coke purl, going to yapc::eu 2009? =~ s/maybe coke//
16:10 purl I didn't have anything matching 'going to yapc::eu 2009?', Coke
16:10 Coke purl, going to yapc::eu 2009 =~ s/maybe coke//
16:10 purl OK, Coke
16:11 Coke trip to the uk is cancelled, so the trip to .pt is off the table.
16:21 bacek_ joined #parrot
16:39 Psyche^ joined #parrot
16:57 chromatic joined #parrot
17:07 bruce joined #parrot
17:13 abesapien joined #parrot
17:17 abesapien joined #parrot
17:18 abesapien joined #parrot
17:28 braceta joined #parrot
17:33 sekimura joined #parrot
17:34 |MoC| joined #parrot
17:36 _MoC_ joined #parrot
17:43 clinton1 joined #parrot
17:53 bacek_ joined #parrot
18:10 Whiteknight joined #parrot
18:11 Coke did any voting happen at yapc?
18:11 chromatic No.
18:12 particle we can't vote without a list of members
18:12 particle members != committers
18:13 particle i had planned on making that list last week, but without a computer it proved impossible
18:15 allison particle: you must be reading my mind
18:16 allison about 15 minutes ago I started filling in the rest of the list
18:16 allison it's the google doc of Parrot contributor agreements
18:16 allison particle: we're missing CLAs for a lot of committers
18:17 allison particle: that is, we're missing *Parrot* CLAs for a lot of committers
18:17 particle allison: yes, indeed.  i wasn't able to get any at the con
18:17 particle it was really a bad time for my video card, monitor, and memory module to go bad on my laptop
18:18 allison particle: I'm planning to subscribe all the committers to the members list, then we can start talking to everyone about the steps to get ready for the first vote
18:18 particle they've now been replaced, and i'm rebuilding the computer
18:19 clinton joined #parrot
18:19 allison particle: ah, that's good. a dead computer is always a pain
18:19 athomason joined #parrot
18:20 particle we need a membership committee
18:21 particle then we can vote coke in as a member
18:21 particle ...as soon as he completes a cla...
18:22 chromatic You mean something is blocking ON Coke, not blocking Coke?  Nice.
18:22 davidfetter joined #parrot
18:22 allison particle: in the bylaws we put in a "grandfather" clause, that all current committers would be the first set of members
18:23 mberends joined #parrot
18:23 allison particle: other members will be added by the membership committee
18:24 allison particle: Tene volunteered to help review membership requests, and I've had a couple messages from non-committers interested in membership
18:24 particle allison: as have i
18:24 particle and a 'contribution' is left undefined in the bylaws
18:25 particle what defines a contribution?  creating a trac ticket? doc patch provided via irc?
18:25 allison do we need a parrot-membership-committee mailing list for people to send those requests to? or is sending them to the general parrot-members list good enough?
18:26 particle well, we're going to have various committees
18:26 * allison digging up the exact text defining contribution in the bylaws
18:26 particle tech-advisory-board, membership-committee, grants, etc
18:26 Coke I'll print it out and scan it in now.
18:27 allison "must have made at least two contributions to the project or a language implementation targeting
18:27 allison the project"
18:28 allison particle: an "accepted" contribution is critical
18:28 particle right.  still leaves unanswered the definition of contribution
18:28 allison particle: spamming with useless patches doesn't count
18:28 GeJ Good morning everyone
18:28 particle yes, but tracking down folks who post two doc patches via irc will be tough
18:28 allison particle: a patch that has been applied certainly counts
18:28 allison particle: oh, we don't track them down
18:28 particle if courtesy is not properly given in the commit logs
18:29 allison particle: they have to apply for membership, and show us the contributions when they apply
18:29 allison particle: it's a push system, not a pull system
18:29 particle ok, so for the purpose of this vote, it's strictly committers?
18:29 allison particle: they also have the burden of finding 2 other members to recommend them
18:30 particle then we appoint a membership committee, and let them handle the rest
18:30 Coke I happen to have a copy of Acrobat Pro I can use; would you like me to convert that PDF into a form?
18:30 particle allison: we're stronger if we're larger.  i'd like the membership committee to start by actively recruiting those who have contributed
18:30 Coke ah, mailing address. I think this is why I balked last time.
18:30 particle coke: that doesn't go public
18:30 allison particle: yes, that's sensible, since the membership committee should always be made up of members
18:32 allison coke: yes, particle's right, the mailing address doesn't even get copied into the spreadsheet
18:32 allison coke: but we are required by law to keep a record of the addresses of members (silly, but those sorts of requirements often are)
18:32 AndyA joined #parrot
18:33 allison particle: I take it you are volunteering to head up the membership committee?
18:33 particle allison: perhaps that belongs in a privacy statement
18:33 particle allison: yes
18:34 allison particle: excellent
18:34 particle are committers required to be members?
18:34 allison particle: no, membership is voluntary
18:34 purl okay, allison.
18:34 particle great
18:35 allison particle: but, you'll notice that the membership requirements are such that if someone has qualified for a commit-bit, they have what they need for membership
18:35 particle yes, indeed
18:36 particle ooh, i have to follow up with chris from linode
18:36 particle he offered us free services there
18:36 particle in exchange for a spot on our sponsors page
18:37 particle oh, and we should mention osuosl there
18:37 * particle needs a more permanent todo list
18:38 flh joined #parrot
18:39 Coke allison, chromatic, particle: my CLA is in. Enjoy. =-)
18:41 particle great.  jhorwitz will file it in the vault
18:41 allison Coke: vunderbar, thanks!
18:43 Coke I was hoping to hand it in in person. Ah well.
18:44 allison Coke: maybe we should have the next parrot developer summit in your home town
18:44 Coke heh. with my luck I'll be in the UK when that happens. =-)
18:44 Coke though my home town (not my current town) has the mohegan sun in it; that would make for a nice summit. =-)
18:46 japhb joined #parrot
18:46 masak joined #parrot
18:49 Tene allison: are there plans for another PDS?
18:50 allison Tene: yes, but no specific dates or location yet
18:51 particle ...and we'll need sponsors
18:55 allison particle: speaking of which, we need to spend some time with our current sponsors
18:55 particle yes, we desperately do
18:56 allison particle: might be good to send you/Patrick up to speak with the devs up at ActiveState
18:57 particle happy to
19:02 zak_ joined #parrot
19:25 pmichaud I'd be glad to speak, yes.
19:32 AndyA joined #parrot
19:34 Theory joined #parrot
19:42 Tene I'm considering implementing this in Parrot, just for fun: http://hackety.org/potion/
19:45 NotFound Tene: looks like forth on steroids
19:45 Coke I would prefer this: http://www.inform-fiction.org/I7/Inform%207.html
19:45 AndyA joined #parrot
19:46 Tene NotFound: kinda, yeah.
19:47 dalek decnum-dynpmcs: r95 | darbelo++ | trunk/t/add.t:
19:47 dalek decnum-dynpmcs: Remove two tests: I don't know what this is supposed to be testing, or why we
19:47 dalek decnum-dynpmcs: should care about it.
19:47 dalek decnum-dynpmcs: review: http://code.google.com/p/decn​um-dynpmcs/source/detail?r=95
19:48 Tene Coke: that page really tickled my "Nice GUI libraries in Parrot" interest.
19:49 mberends pmichaud: possible pod error (because the examples die here with "invoke() not implemented in class 'PGE;Perl6Grammar;Compiler' " ) in parrot/library/PGE/Perl6Grammar.pir:22,25 $P1=pgc(grammar_source... should they possibly be $P1=pgc.'compile'(grammar_source... ?
19:50 Tene I've almost started writing bindings for the enlightenment libraries several times.
19:50 Tene I always held off on the promise that ncigen would write them for me, but it was never able to parse the e headers properly.
19:54 pmichaud mberends: you're correct -- the pod is out of date.
19:54 mberends pmichaud: thanks, getting into this stuff slowly...
20:00 TimToady phone
20:11 brbrooks joined #parrot
20:23 iblechbot joined #parrot
20:37 Tene There are six files in runtime/parrot/include/ that are not being installed.
20:37 Tene Can anyone confirm for me whether this is an issue or not?
20:37 Tene cloneflags.pasm, for example.
20:37 Theory joined #parrot
20:40 allison Tene: there are several files we're intentionally not installing
20:40 allison Tene: don't recall off the top of my head if that's 6 files
20:41 Tene allison: from runtime/parrot/include?
20:41 NotFound cloneflags.pasm is used for example in examples/sdl/mandel.pir, so I suppose it must be installed.
20:41 Tene NotFound: I can confirm that it isn't installed.
20:41 allison NotFound: examples aren't installed
20:41 NotFound I don't think we must have examples that can't work in an installed parrot.
20:42 Tene without the constants defined in cloneflags, we can't use .'run'() on threads properly.
20:42 Tene (that's broken anyway, but for other reasons)
20:42 allison NotFound: but if it's code that's only used for an example, it shouldn't be installed
20:42 allison NotFound: it probably shouldn't even be in the general 'include/' directory
20:44 allison NotFound: though, looking at the file, it doesn't look like it's specific to one example
20:45 NotFound allison: IMO if some thing not usable is used in an example, the example is wrong.
20:46 NotFound Unless the intention is to exemplify what to not do.
20:47 allison NotFound: it's fine for examples to build on what's in core parrot, supplying their own include files and such
20:48 Theory allison: ping!
20:48 allison Theory: pong
20:48 NotFound Then maybe we need a real_examples directory
20:48 Theory allison: Is there a term of art for the idea, frequently expressed by TimToady, that functions that do similar names should not be named too similarly.
20:50 allison Theory: "The Principle of Distinction"
20:50 * Theory googles
20:50 allison Theory: stands in complement to "The Principle of Reuse"
20:51 Theory Interesting. Google turns up a bunch of military references.
20:51 Theory also law
20:51 Theory "Belligerents must distinguish between combatants and civilians."
20:52 chromatic "It's nice to tell the difference between your SO and an angry leopard."
20:52 dalek rakudo: 468c021 | masak++ |  (2 files):
20:52 dalek rakudo: [control.pir] take without gather now warns
20:52 dalek rakudo: Before this commit, a 'take' without a (dynamically) enclosing 'gather'
20:52 dalek rakudo: block halted the program without explanation. This commit makes the
20:52 dalek rakudo: condition non-fatal and adds a warning message. Tene++ for guidance.
20:52 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​68c021f9a3480658bb973182b7f797220521d78
20:52 allison Theory: it's basically a linguistic principle
20:53 Theory allison: Yeah.
20:53 allison Theory: the best example is a language where, say, b and p aren't considered different sounds
20:53 Theory I see a reference on Perl Monks…http://www.perlmonks.org/?dis​playtype=print;node_id=553487
20:54 Theory allison: Yeah, I understand. I want to reference in a post I'm writing on new functions in pgTAP
20:54 Theory Just want to point to a link
20:54 allison A more Larry-esque way to phrase it might be "different things should be different"
20:54 Theory Here we go: http://www.perl.com/pub/a/200​3/06/25/perl6essentials.html
20:55 allison Theory: the reuse principle is "same things should be the same" and "similar things should be similar"
20:55 Theory yeah, that's how I phrased it on #perl6 when I was asking for the term there.
20:55 Theory allison: Right. The second clause there is the one in opposition.
20:55 Theory pity there's no id or a name in that article.
20:56 allison Theory: it's actually a chapter from Perl 6 and Parrot Essentials, which is freely available now
20:56 Theory oh yeah?
20:56 allison Theory: at least, it was contributed to TPF
20:57 allison Theory: ah, found it! http://svn.perl.org/perl6/doc/trunk/boo​ks/tutorial/ch03_design_principles.pod
20:57 Theory Yay!
20:58 Theory Think I might ref the ORA article, though, that POD isn't too reader-friendly.
20:58 allison Theory: yes, sensible
20:58 purl rumour has it sensible is usually inappropriate, yes :)
20:58 Theory Or, is that generated into HTML somewhere?
20:58 Theory Should be.
20:58 chromatic I thought we had HTML generated somewhere.
20:58 allison we do for the Parrot chapters, but not for the Perl 6 chapters
20:58 Theory chromatic: You coming to the perl5 hackathon tomorrow?
20:58 Theory Oh, why not???
20:58 chromatic I have a prior commitment.
20:59 Theory chromatic: Buffing your nails? Rearranging your sock drawer?
20:59 allison Theory: why not on the generated HTML? Largely just because no one's bothered to set it up.
21:00 Theory allison: Yeah
21:00 allison Theory: not sure where we would put it if we did. maybe rakudo.org?
21:00 Theory http://dev.perl.org/perl6/?
21:00 purl it has been said that http://dev.perl.org/perl6/ is not really clear on where to click for the most useful information, I suppose.
21:02 PerlJam allison: http://rakudo.org/documentation could use it.
21:02 allison Theory: aye, that'd make sense. The more code-related chapters are out-of-date, but the design (linguistic) principles are still sound
21:03 Theory whatever docs could be got out would surely be useful.
21:11 Whiteknight joined #parrot
21:25 eternaleye joined #parrot
21:29 eternaleye joined #parrot
21:30 flh eval.t uses "compreg 'PASM'": I guess I'd rather switch to PIR for quoted code also, right?
21:31 dalek close: r27 | austin_h...@yahoo.com++ | trunk/src/ (3 files):
21:31 dalek close: Added wishlist gadget
21:31 dalek close: review: http://code.google.com/p/close/source/detail?r=27
21:36 dalek close: r28 | austin_h...@yahoo.com++ | wiki/ZzzTestPage.wiki:
21:36 dalek close: Created wiki page through web user interface.
21:36 dalek close: review: http://code.google.com/p/close/source/detail?r=28
21:38 Infinoid Whiteknight: Thanks for r39853
21:38 Whiteknight no problem. answer most of your questions?
21:38 Infinoid mark_sweep.c allocates PObjs from pools managed by alloc_resources.c, right?
21:38 bacek_ joined #parrot
21:38 Whiteknight no
21:38 Whiteknight alloc_resources are large pools for things like strings primarily
21:39 Infinoid string buffers or STRING structures or both?
21:39 Whiteknight mark_sweep.c provides some helper routines to mark and then sweep pools
21:39 Whiteknight the string buffers, not the string headers
21:39 Infinoid ok
21:40 Infinoid so Small_Object_Pools are completely separate from Memory_Pools
21:41 Infinoid (though I probably want to track both)
21:41 Whiteknight yes, completely separate
21:41 dalek close: r29 | austin_h...@yahoo.com++ | wiki/ZzzTestPage.wiki:
21:41 dalek close: Edited wiki page through web user interface.
21:41 dalek close: review: http://code.google.com/p/close/source/detail?r=29
21:41 Infinoid Thanks, that clears some things up
21:41 Whiteknight Small_Object_Pools hold headers and are completely homogenous. A single Small_ObjecT_Pool only holds objects of a specific size
21:41 Infinoid and has a nice object_size field :)
21:41 Whiteknight so there is one pool for PMCs, one pool for STRING headers, one pool for Stack_Chunk, etc
21:42 Whiteknight right
21:42 Tene I keep feeling choice overload whenever I think of working on something parrot-related. :(
21:42 Infinoid It also sounds like I want to avoid gc_ms.c and focus on alloc_resources.c
21:42 Infinoid Tene: I tend to be a bit more focused than "parrot-related", because parrot is too big to fit in my brain all at once
21:43 PerlJam Tene: you could have the channel pick for you so that the choice is out of your hands :)
21:43 * Infinoid relies heavily on virtual memory
21:45 Tene PerlJam: I've tried that; it never works. :P
21:45 chromatic Installation is our big priority at the moment.
21:51 dalek close: r30 | austin_h...@yahoo.com++ | trunk/src/GoogleCode/gadget-issue_report.xml:
21:51 dalek close: gadget fixes
21:51 dalek close: review: http://code.google.com/p/close/source/detail?r=30
21:51 dalek close: r31 | austin_h...@yahoo.com++ | wiki/ZzzTestPage.wiki:
21:51 dalek close: Edited wiki page through web user interface.
21:51 dalek close: review: http://code.google.com/p/close/source/detail?r=31
21:51 Andy joined #parrot
21:54 bacek_ good morning
21:54 purl And good moroning to you, bacek_.
21:56 dalek close: r32 | austin_h...@yahoo.com++ | trunk/src/GoogleCode/gadget-issue_report.xml:
21:56 dalek close: gadget fixes
21:56 dalek close: review: http://code.google.com/p/close/source/detail?r=32
21:56 dalek close: r33 | austin_h...@yahoo.com++ | trunk/src/GoogleCode/gadget-issue_report.xml:
21:56 dalek close: gadget fixes
21:56 dalek close: review: http://code.google.com/p/close/source/detail?r=33
21:59 bacek__ joined #parrot
21:59 Infinoid With the valgrind suppressions update in r39856, I can run through examples/pir/mandel.pir with no false hits at all (on amd64)
21:59 Infinoid I suspect most or all of those will have to be re-added for x86-32 as well
21:59 dalek parrot: r39855 | Infinoid++ | trunk/t/pmc/capture.t:
21:59 dalek parrot: [t] Apply capture.t_to_pir.patch from flh++ in TT #801.
21:59 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39855/
21:59 dalek parrot: r39856 | Infinoid++ | trunk/tools/dev/parrot.supp:
21:59 dalek parrot: [cage] Add more valgrind suppressions.
21:59 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39856/
22:00 bacek_ good morning
22:00 purl And good moroning to you, bacek_.
22:00 Infinoid rehai bacek_
22:01 bacek_ "parrot-members"?
22:01 Infinoid I got one of those too
22:01 dalek close: r34 | austin_h...@yahoo.com++ | trunk/src/GoogleCode/gadget-issue_report.xml:
22:01 dalek close: gadget fixes
22:01 dalek close: review: http://code.google.com/p/close/source/detail?r=34
22:02 dalek close: r35 | austin_h...@yahoo.com++ | wiki/ZzzTestPage.wiki:
22:02 PerlJam We're all mere feathers on the great parrot
22:02 dalek close: Edited wiki page through web user interface.
22:02 dalek close: review: http://code.google.com/p/close/source/detail?r=35
22:02 PerlJam though some may be a beak or some claws too I guess
22:02 bacek_ ...which stay on 3 elephants and big turtle?
22:03 Whiteknight joined #parrot
22:03 Infinoid Preferably >=1 big turtles
22:03 dalek TT #801 closed by Infinoid++: Rewrite capture.t in PIR
22:04 bacek_ "Committee is beast with 6 or more legs and no brain"
22:07 dalek close: r36 | austin_h...@yahoo.com++ | trunk/src/GoogleCode/gadget-issue_report.xml:
22:07 dalek close: gadget fixes
22:07 dalek close: review: http://code.google.com/p/close/source/detail?r=36
22:18 skids joined #parrot
22:29 dalek decnum-dynpmcs: r96 | darbelo++ | trunk/src/pmc/decnumcontext.pmc:
22:29 dalek decnum-dynpmcs: Make {set,get}_clamp {take,return} and INTVAL.
22:29 dalek decnum-dynpmcs: review: http://code.google.com/p/decn​um-dynpmcs/source/detail?r=96
22:29 Whiteknight Austin++ # Finaly got around to downloading and testing close
22:35 rg1 joined #parrot
22:36 Limbic_Region joined #parrot
22:38 bacek__ joined #parrot
22:38 bacek__ bah
22:40 * Coke grumbles. changes to tcl's [exec] to allow dispatch to work are now causing hangs in t_tcl/exec.t
22:40 bacek__ Whiteknight: r39858 on keys_revamp branch is special for you.
22:41 dalek parrot: r39857 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
22:41 cotto karma  austin_h...@yahoo.com
22:41 purl austin_h...@yahoo.com has karma of 31
22:41 dalek parrot: [pmc] Small cleanups in Hash
22:41 dalek parrot: - Drop PARROT_PURE_FUNCTION pragmas.
22:42 dalek parrot: - Consistently use cast functions.
22:42 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39857/
22:42 dalek parrot: r39858 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
22:42 dalek parrot: [pmc] Workaround for premature GCing of kyes in Hash PMC.
22:42 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39858/
22:42 dalek parrot: r39859 | cotto++ | trunk/CREDITS:
22:42 dalek parrot: [CREDITS] add a Google-mangled email alias for Austin Hastings
22:42 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39859/
22:42 dalek parrot: r39860 | cotto++ | trunk/compilers/pge/demo.pir:
22:42 dalek parrot: [pge] fix the pge demo
22:42 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39860/
22:43 cotto karma Austin
22:43 purl austin has karma of 8
22:43 cotto karma Austin_Hastings
22:43 purl austin_hastings has karma of 19
22:43 bacek_ Whiteknight: without workaround it consistently crashed on assert in "sanitify_string" during expand hash.
22:46 dalek rakudo: 59d2b7a | jnthn++ |  (5 files):
22:46 dalek rakudo: More work on bringing our traits support closer in line with S14 and STD.pm. This kills trait_auxiliary in favor of trait_mod, adds parsing and an implementation of will (just delegates to is) and parsing of hides too (not yet implemnted), so now we should parse all the trait mods that STD does.
22:46 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​9d2b7afe06d313f360cbe11ff0d26c595c0262a
22:46 dalek rakudo: 3d94ef4 | jnthn++ | :
22:46 dalek rakudo: Merge branch 'master' of git@github.com:rakudo/rakudo
22:46 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3​d94ef4ef9c088d6e81f2a26b016aab202719d30
22:47 dalek partcl: r517 | coke++ | wiki/SpecTestStatus.wiki:
22:47 dalek partcl: Skip [exec] for now.
22:47 dalek partcl: review: http://code.google.com/p/p​artcl/source/detail?r=517
22:47 Tene I hope my parrot-dev mail isn't interpreted harshly by Austin Hastings.
22:47 Tene I have a lot of trouble judging appropriate tone in email.
22:48 Tene I really really don't want to turn him off of these questions.  I'm excited to have someone else asking them.
22:49 chromatic I don't think he'll take it badly.  He seems like a reasonable person.
22:50 Tene thanks. :)
22:51 Coke msg cotto - it would be nice if that demo.pir was moved to the examples and then tested with examples_tests.
22:51 purl Message for cotto stored.
22:52 Coke msg cotto (or just the latter bit.)
22:52 purl Message for cotto stored.
22:52 Coke Tene: since tcl's stuff lives in the top level tcl namespace, I presume you'd need to do something like ask for ::parrot::Tcl::foo::bar
22:53 Coke so you have to know it's tcl before you get anywhere.
22:53 Coke (where ::parrot is a magical namespace alias to the parrot root.)
22:55 cotto afk_coke, I thought about that but it's a repl demo and I'm not entirely sure how it works.
23:02 bruce joined #parrot
23:05 bruce Does anyone know if there has been any recent work on a browser plugin for parrot?
23:05 Whiteknight bacek_: I'm trying to wrap my head around this issue. What has changed?
23:06 bacek_ I use old string as key instead of COWed copy
23:06 Tene bruce: not recently, that I've heard of.
23:06 Whiteknight right, but why isn't the hash getting marked correctly?
23:06 Whiteknight that seems to be the root problem
23:07 bacek_ yes :)
23:07 bacek_ You can checkout keys_revamp branch, uncomment old line and try to build it.
23:07 bacek_ I consistently got assertion failure on compiling PGE.
23:08 bacek_ But my GC-fu is weak
23:08 bacek_ .. to catch root problem.
23:08 chromatic Hm, an 8.03% startup speedup by rearranging some code.  Nice.
23:09 Whiteknight bacek_: so is that problem you found also a problem in trunk? Or is it just branch?
23:09 Whiteknight chromatic: what code did you rearrange?
23:10 bacek_ Whiteknight: I spotted it inn branch. But my gut's feeling that this is same failure as pmichaud's
23:10 chromatic build_call_sig().
23:10 Whiteknight oh okay
23:11 Whiteknight chromatic: I don't even see that in the repo
23:13 chromatic src/nci.c -- generated file
23:13 purl i guess generated file is here: http://kados.org/stuff/GetIt-S​chema-GetItDB-0.001-MySQL.sql
23:13 Whiteknight ah, okay. That's why ack isn't finding it
23:14 bacek_ time to go
23:14 Andy ack will find it, just not if it hasn't been generated. :-)
23:18 cotto Andy, maybe you should add a feature to search generated code that hasn't been generated yet.
23:18 Andy The --dwimitf flag
23:18 Andy do what I mean in the future
23:19 dalek parrot: r39861 | chromatic++ | trunk/tools/build/nativecall.pl:
23:19 dalek parrot: [NCI] Made generated function build_call_func() attempt to use NCI to build
23:19 dalek parrot: call frames (if the built Parrot supports that) rather than installing NCI
23:19 dalek parrot: functions for every potential NCI signature when first loaded.  This reduces
23:19 dalek parrot: startup time by 8.03% and reduces the number of PMCs generated on startup
23:19 dalek parrot: dramatically.
23:19 dalek parrot: The behavior is unchanged on builds which do not support JIT, though they may
23:19 dalek parrot: be slightly faster as well.
23:19 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39861/
23:19 Infinoid chromatic++ # nice commit message
23:24 dalek decnum-dynpmcs: r97 | darbelo++ | trunk/src/pmc/dec (3 files):
23:24 dalek decnum-dynpmcs: Removed the ieee754_cmp METHOD from DecNum and added a flag to DecNumContext to
23:24 dalek decnum-dynpmcs: switch the DecNum cmp VTABLE from it's current (default) behaviour to ieee754
23:24 dalek decnum-dynpmcs: total ordering.
23:24 purl total ordering is probably "�NaN < �sNaN < �Infinity < �finites < �0 < +0 < +finites < +Infinity < +sNaN < +NaN"
23:24 dalek decnum-dynpmcs: review: http://code.google.com/p/decn​um-dynpmcs/source/detail?r=97
23:26 * cotto is suddenly hungry for some negative naan.
23:26 Whiteknight bacek_: so you're saying that the keys in hashes aren't getting marked?
23:26 Tene Mmm, naan.
23:27 * Whiteknight has some naan in the freezer
23:28 * darbelo wonders where naan fits in the order of things...
23:29 chromatic Almost 500 fewer PMCs allocated at startup.
23:33 cotto What kind of a relative drop is that?
23:33 chromatic 28%
23:33 purl 0.28
23:33 cotto Nice work.
23:34 chromatic 26.43% in practice; I was estimating before.
23:36 cotto Is that for a hello world?
23:37 chromatic Yes.
23:37 chromatic Let's see if there's another 2% lurking in there.
23:38 chromatic Yep.
23:38 Whiteknight chromatic++
23:40 bacek_ joined #parrot
23:41 patspam joined #parrot
23:42 chromatic Now to make the code smaller.
23:45 dalek parrot: r39862 | chromatic++ | trunk/tools/build/nativecall.pl:
23:45 dalek parrot: [NCI] Removed the _XJIT_ prefix from JIT-generated call thunks.  Avoiding the
23:45 dalek parrot: STRING concatenation necessary to find the right thunk in the NCI hash speeds
23:46 dalek parrot: up startup time by more than 2%.
23:46 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39862/
23:47 chromatic ... and now src/nci.o is 93.66% smaller.
23:49 Whiteknight well that's quite impressive
23:49 cotto as in 6.33% of the previous size?
23:49 Whiteknight of course, I'm on amd64 with no JIT support, so I probably won't see any benefit
23:49 chromatic Except that one PCRE test fails and four NCI tests fail due to missing signatures.
23:53 chromatic libparrot.so ends up 6% smaller too.
23:53 chromatic We'll have to do more work to make the patch work, but it's a possibility.
23:54 chromatic http://nopaste.snit.ch/17086
23:59 abesapien joined #parrot
23:59 chromatic Ahh, src/jit/i386/jit_defs.c

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

Parrot | source cross referenced