Camelia, the Perl 6 bug

IRC log for #parrot, 2010-03-27

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:16 mberends joined #parrot
00:21 dngor_ joined #parrot
00:27 mberends there seems to be an inconsistency when running `parrot_config --dump | grep ExtUtils`
00:27 darbelo mberends: inconsistency ?
00:27 purl hmmm... inconsistency is the hobgoblin of ... consistent people
00:28 mberends the latest addition, chmod, from changeset 42418, does contain the  same kind of command line as the rest
00:28 mberends compare:
00:28 mberends mv => '$(PERL) -MExtUtils::Command -e mv'
00:28 mberends chmod => '$(PERL) -MExtUtils::Command -e ExtUtils::Command::chmod'
00:29 darbelo Never noticed that before.
00:29 dalek rakudo: cddc8a7 | (Solomon Foster)++ | src/core/operators.pm:
00:29 dalek rakudo: Add infix:<X> too.  moritz++
00:29 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​ddc8a7d94515ca96d5f4d9a730f339560405c04
00:29 mberends Rakudo works around this by hardcoding a different chmod definition
00:29 Austin Is it possible that they're looking for a particular set of chmod semantics ?
00:29 mberends unlikely
00:30 payload joined #parrot
00:30 darbelo mberends: Why do that insted of asking us to change it?
00:30 mberends I this as it stands the parrot_config output for chmod is broken
00:31 mberends rakudo probably added chmod before parrot got it
00:32 darbelo mberends: http://nopaste.snit.ch/20113 ?
00:32 darbelo I just noticed parrot doesn't chmod anything in the Makefile.
00:33 mberends darbelo: that looks right
00:35 darbelo mberends: committed
00:35 mberends there may have been a reason why chmod was different, but I cannot think of one
00:35 mberends darbelo: thanks!
00:36 dalek parrot: r45193 | darbelo++ | trunk/config/init/defaults.pm:
00:36 dalek parrot: Bring chmod into line with the the other ExtUtils commands.
00:36 dalek parrot: Thanks to mberends++ for reporting the inconsistency.
00:36 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45193/
00:36 darbelo It doesn't really affect parrot, so there's no reason not to change it.
00:37 mberends it straightens out a little kink in Rakudo's build/Makefile.in
00:37 darbelo Glad to be of use.
00:38 darbelo But I'd like it better if Rakudo moved to distutils.
00:40 sorear I'd like to move Parrot to distutils.  I'm still working out the technicalities, though
00:41 mberends currently the Rakudo tuits are in short supply, so that might only happen if it makes a critical difference. I'm currently experimenting with changes to Makefiles and Configure, so I'll also bear the advice in mind.
00:41 cotto Moving Parrot to distutils is a tricky proposition.
00:42 darbelo mberends: Amusingly, migrating rakudo to distutils is a matter of dropping a single file into the repo.
00:42 mberends ooh!
00:42 darbelo fperrad (distutils's author) mailed a setup.nqp to the list.
00:42 Austin Yes, yes.
00:42 Austin Tell us the build time.
00:43 darbelo Austin: Shh! I'm selling stuff here.
00:43 Austin Selling cigarettes, it looks like..
00:43 mberends well, we all smoke
00:44 Austin Not by choice...
00:44 Austin Man, can this really by the way Tcl behaves?
00:45 cotto We'd definitely need cross-compiling before a distutils-based Parrot build would work.
00:48 chromatic Austin, based on my experience with Tcl, I can confidently say that the answer to that question is almost always "Yes, can you dig it?"
00:49 Austin Bah
00:49 Austin chromatic: Do you have any kind of tcl specification handy?
00:49 dngor joined #parrot
00:49 Austin (Google is *not* my friend, here...)
00:49 sorear cotto: My plans were a bit more... interesting
00:49 sorear cotto: they involved writing a retargetable NQP compiler and then pretending distutils was autoconf
00:50 kid51 make test, make buildtools_tests, make codetest all PASS at r45192
00:52 chromatic Austin, I don't.  I haven't used Tcl in seriousness for a few years.
00:52 Austin Urg
00:52 joeri joined #parrot
00:52 Austin The code I've got shows that (string tolower "foo") would lowercase the entire "foo".  Okay.
00:53 Austin And that (string tolower "foo" 1 2) would lowercase the string starting at index 1 and going to index 2 (inclusive).  Also okay.
00:53 Austin *And* that (string tolower "foo" 1) would lowercase the single character at index 1, then stop. Huh?
00:56 cotto sorear, you mean like nqp to something that's not pbc?  I'd call that more interesting.
00:59 dngor_ joined #parrot
01:08 dalek parrot: r45194 | chromatic++ | trunk/src (4 files):
01:08 dalek parrot: [PCC] Made Parrot_pcc_split_signature_string() *not* allocate memory for the
01:08 dalek parrot: args/returns signatures, so now nothing has to free that memory and none of
01:08 dalek parrot: that memory can ever leak.  This makes the API simpler, removes code, *and*
01:08 dalek parrot: improves PCC speed.
01:08 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45194/
01:08 dalek parrot: r45195 | chromatic++ | trunk/src/call/args.c:
01:08 dalek parrot: [PCC] Reduced (mostly) unnecessary uses of strlen() on argument and return
01:08 dalek parrot: signatures.  We could optimize the switch statements slightly more, but this is
01:08 dalek parrot: a good tradeoff for now.
01:08 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45195/
01:11 sjn_ joined #parrot
01:15 sorear mmm pcc refactoring
01:24 dalek parrot: r45196 | chromatic++ | trunk/src/call/args.c:
01:24 dalek parrot: [PCC] Revised Parrot_pcc_split_signature_string() to handle the case of no
01:24 dalek parrot: incoming arguments.  Rather than randomly walking off the end of the C string
01:24 dalek parrot: when parsing signatures, mark that there are no incoming arguments correctly.
01:24 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45196/
01:25 mberends chromatic++ # more pcc goodness
01:26 dngor_ joined #parrot
01:40 dalek parrot: r45197 | chromatic++ | trunk/src/pmc/hash.pmc:
01:41 dalek parrot: [PMC] Optimized Hash's set_value_type() method slightly to avoid recreating
01:41 dalek parrot: hashes unnecessarily.  It could use more optimization, probably by moving the
01:41 dalek parrot: guts of the method into src/hash.c.
01:41 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45197/
01:57 cotto What's nqp for super()?
01:58 Austin In kakapo, it's "super()".
01:58 Austin Not in kakapo, it's "good luck, buddy."
01:59 sorear How is kakapo super implemented?
01:59 Austin search the mro until the method lookup matches the calling sub, then keep searching until it changes.
02:00 cotto Goodie.
02:01 Austin Or, if that's what you meant, "in NQP"
02:02 Austin http://gitorious.org/kakapo/kakapo/​blobs/1c9685a188572b7def55c0679fd67​a4edcefb188/src/Syntax.nqp#line31
02:03 cotto I guess I can still call it manually.
02:08 particle1 joined #parrot
02:12 dalek joined #parrot
02:27 payload joined #parrot
03:00 Austin src/call/context.c:800: failed assertion 'Parrot_pcc_get_regs_used(interp, ctx, REGNO_STR) > idx'
03:44 Andy joined #parrot
03:48 janus joined #parrot
04:10 bubaflub joined #parrot
04:12 bubaflub left #parrot
04:22 mikehh joined #parrot
04:46 Coke chmod is only used by hpux & cygwin, IIRC.
04:50 Coke Austin: ping.
05:03 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32864), fulltest) at r45199 - Ubuntu 9.10 amd64 (gcc with --optimize)
05:06 bacek joined #parrot
05:07 bacek o hai
05:11 mikehh hi bacek
05:11 bacek mikehh, aloha
05:20 cotto hi
05:24 bacek Good news. I'm on holidays next week. So I can squeeze in couple of full working days for parrot :)
05:24 cotto That's good news indeed.
05:25 bacek Bad news... Replacement motherboard for my laptop will not arrive in next couple of weeks... I'm still using spare one.
05:25 cotto if you don't want to go outside or something )
05:25 cotto That's less good.
05:26 bacek I'm going to attend bike riding course next week.
05:27 bacek Anyway, today is "formula one" qualification day. See you in couple of hours.
05:28 bacek (If you have any good ideas what we need most (apart from compact_pool, #389 and MMD shenanigans) - msg me)
06:05 chromatic joined #parrot
06:21 bubaflub joined #parrot
06:43 sorear hmm, I need to write a better test suite for blizkost
06:44 sorear dalek's gone :(
06:49 sorear ok, before I can improve the tests I need someone to help me rewrite the test harness
06:50 sorear blizkost is set up as a parrot /language/
06:50 purl Hmm.  No matches for that, sorear.
06:50 sorear which is entirely wrong
06:50 sorear for testing
06:50 sorear because we know Perl 5 works
06:50 sorear passing files through the eval layer is very poor coverage
06:53 sorear maybe I should strip out the build system and try and get blizkost running on distutils
06:53 Tene how would you prefer the test harness work?
06:53 sorear I would prefer the test harness to run bits of NQP/PIR
06:54 sorear instead of bits of P5
06:54 * Tene nods.
06:54 sorear very little of Blizkost is exposed and testable from P5
07:09 bacek joined #parrot
07:10 bacek ~~
07:18 sorear hello
07:19 sorear rumor has it you know a lot about GC
07:19 sorear what is the status of the dynplug GC system
07:19 sorear I want to write a "GC" plugin
07:24 bacek sorear, it's "almost" pluggable.
07:25 bacek sorear, I've spend "reasonable amount of time" moving all allocations behind interp->gc_sys.
07:25 bacek It's not done yet, but you can write new GC easily then before
07:39 cotto joined #parrot
07:42 riffraff joined #parrot
07:54 fperrad joined #parrot
08:05 sorear Where does NQP keep the magic that rewrites pir::opname(x,y) into an inline op?
08:13 cotto method term:sym<pir::op> in src/NQP/Actions.pm in nqp's git repo
08:14 cotto which is kinda meta because the method right above it uses such an op
08:14 cotto time for sleep
08:15 cotto night
08:15 sorear nqp's git repo?
08:15 sorear I'm using the version of nqp bundled with Parrot
08:15 sorear is this a mistake
08:16 bacek sorear, nqp-rx shipped with parrot is bootstrapped one
08:16 bacek nqp-rx?
08:16 purl nqp-rx is http://github.com/perl6/nqp-rx
08:16 bacek purl, nqp?
08:16 purl i think nqp is http://github.com/perl6/nqp-rx
08:16 bacek stupid bot...
08:16 purl Bad programmer, no cookie!
08:17 sorear bacek: Is 'parrot-nqp' considered obsolete?
08:18 bacek sorear, nope. 'parrot_nqp' is (afair)
08:19 bacek sorear, one that built from ./compilers/nqp. ext/nqp is current one
08:19 sorear I see.
08:20 sorear So ext/nqp is generated -from- the nqp-rx git repo?
08:22 Tene yes
08:38 sorear What is nqp-ese for defined()?
10:05 bacek joined #parrot
10:35 jsut joined #parrot
10:53 Austin sorear: pir::defined($x)
10:54 Austin coke: pong
11:31 Austin hey, coke: I'm wanting some more test cases, when you get one of those round tuits.
11:41 payload1 joined #parrot
12:29 clinton joined #parrot
12:48 joeri joined #parrot
12:54 fperrad joined #parrot
12:56 Austin msg Coke: partcl grammar.pm doesn't seem to have a rule for parsing doubles. How is that going to work?
12:56 purl Message for coke stored.
13:14 Andy joined #parrot
13:18 kid51 joined #parrot
13:19 lucian joined #parrot
13:23 dukeleto joined #parrot
13:48 Whiteknight joined #parrot
13:51 Austin Good morning, Whiteknight
13:51 Whiteknight hello Austin
13:51 Whiteknight how are you today?
13:51 Austin Toothless, and unhappy.
13:51 Austin Yourself?
13:51 * dukeleto is awake too early
13:53 Whiteknight toothless? Get in a bar fight or a hockey game recently?
13:53 Austin No. I lost a filling Thursday night, and went to the dentist yesterday.
13:54 Austin Turns out he was the "NASCAR dentist."
13:54 Austin 14 seconds, and out.
13:55 Whiteknight oh, great
13:56 Austin "That's got to come out."
13:56 Austin "Gah?"
13:56 Austin <YANK!>
13:56 Austin "Gack!"
13:56 Whiteknight I went to a dentist once who forgot to use novacaine when drilling a cavity. When I mentioned I was in pain she told me to "take it like a man"
13:56 Austin "Okay, now spit."
13:56 Austin So you married her...
13:57 Whiteknight haha, nice
14:18 arnsholt I think I'm gonna have a look at the continuations code in Parrot. Wish me luck =)
14:19 Austin Arnsholt:  good luck
14:19 purl You'll need it.
14:19 arnsholt I think purl is right on that one ^^
14:21 Whiteknight arnsholt: still trying to fix that bug?
14:21 arnsholt That's what I ws hoping, yes =)
14:22 arnsholt Gonna test the latest SVN copy first, but after that I figured I might as well take a look at the code
14:24 Coke joined #parrot
14:26 Whiteknight arnsholt: okay, let me know if you have any questions
14:27 arnsholt There probably will be =)
14:28 Andy joined #parrot
14:28 Coke hurm. I get a pull request from github... how do I ... view it?
14:29 Coke msg Austin I was unsure how to deal with doubles, since parrot only has $N.
14:29 purl Message for austin stored.
14:29 Austin messages erase
14:29 Austin Coke: I think it's more "you should consider pulling from this repo"
14:30 Coke ... that's kind of useless.
14:32 Austin I've never got one, so I don't know what they look like..
14:32 * Coke reads http://github.com/guides/pull-requests
14:32 Austin But anyway, what's a double in tcl?
14:33 Coke Austin: "All internal computations involving floating-point are done with the C type double."
14:33 Coke (per http://www.tcl.tk/man/tcl8.5/TclCmd/expr.htm#M23)
14:33 Coke so I think that's just a float on the user-facing side.
14:34 Austin Sounds like a $N register.
14:34 Coke yup.
14:34 Austin Do they require support for other than decimal expression? (E.g., C recognizes hex doubles)
14:35 Coke I don't know off the top of my head; I know there's various int support (most of which is in the grammar or the old grammar)
14:35 Coke but certainly we can get pretty far without it.
14:35 Coke (even if it turns out to be needed.)
14:35 Coke nothing in t/ requires it.
14:36 Coke (more test cases)
14:36 Coke for tcl?
14:36 Austin Does anything other than string actually know about doubles? I mean, are they a natural part of expressions?
14:36 Coke yes.
14:37 Austin Heh
14:37 Austin So we come to my problem.
14:37 Coke but both the [expr] mini language and [string is] should use the same rule.
14:37 Austin The test cases in "string is double" want to recognize "7" as a double.
14:37 Austin Which I suspect expr will probably NOT want to do.
14:38 Coke in partcl (not -nqp), there is 'toNumber' and 'toInteger' - the former returns a TclInt or TclFloat as appropriate and dies if it matches neither.
14:38 Coke the latte returns a TclInt or dies.
14:38 Coke those have not yet been ported over to -nqp.
14:38 Coke mm, latte.
14:39 dalek joined #parrot
14:39 Austin I think we can get by with just a little hackery. But I wanted to double-check the expected behavior..
14:39 Coke I was pondering adding a 'toFloat' and having 'toNumber' just call them both in order.
14:40 Coke the tests in t/ can be verified by running them through tclsh8.5
14:40 Coke ... I'm very excited that you're asking all these questions, btw. =-)
14:40 Coke I knew if I showed you some crappy NQP you'd not be able to resist!
14:40 Austin Heh.
14:41 Austin The tooth is gone, the scotch has just about worn off. Time ir running out...
14:41 Austin *is
14:41 Coke ok. I think I know what to do for your merge request. be nice if you could say "these are the commits I want you to look at."
14:41 Austin Did you get anything from my pull request?
14:41 Austin "Check out string.pm" was what I sent.
14:43 Austin Anyway, back to the questions: Should "is double" really return true on "7"? (no dot)
14:46 Coke ayup.
14:47 Austin okay. added.
14:47 Austin And what's the story with map?
14:47 Austin Is that mapping an array, or some other data type?
14:47 theory joined #parrot
14:49 Coke ok. I did a git remote add, git fetch. not to figure out how to ... git.
14:49 Coke *now
14:50 Coke Austin: it's kind of like tr// but crazier.
14:50 Austin Yeah, I noticed.
14:50 Coke there is a working implementation in PIR.
14:50 Austin Heh.
14:50 Coke (in partcl's runtime/builtin/string.pir
14:50 Austin Are you on the master branch?
14:50 Coke gotta run. back soon.
14:50 Austin Okay.
14:50 Coke of yours? yes. it's the only one I see.
14:50 Coke -> gs
14:55 snarkyboojum joined #parrot
14:57 patspam joined #parrot
15:01 payload joined #parrot
15:07 snarkyboojum joined #parrot
15:12 Coke <-
15:16 Coke IWBNI if I could say "show me all the commits on this branch that were only done on that branch.
15:24 Coke ok. I'm looking at the first commit now. there's a LOT of new infrastructure in there.
15:44 dukeleto Coke: which interface/vcs are you asking for that?
15:44 Coke git.
15:44 ash_ joined #parrot
15:44 Coke doesn't matter right now as there are only 2 commits, and I can easily tell.
15:44 dukeleto Coke: i can help you do that
15:45 Coke but IWBNI for future pull requests.
15:45 dukeleto Coke: git diff foo..bar
15:45 Coke (and I'm doing a cherry pick to merge in the individual commits instead of merge.)
15:45 Coke dukeleto: that shows me the /diff/. I want the /log/
15:45 Coke no?
15:45 dukeleto Coke: git log foo..bar :)
15:45 dukeleto Coke: git log -p foo..bar is nice too
15:45 Coke ... if I didn't already cherry pick... =-)
15:46 Coke holy crap. Austin - that only fails 3 tests on t/cmd_string!?
15:46 dukeleto sorear: i would love to help you improve Blizkosts test infrastructure
15:46 Austin I told you I needed more test cases.
15:46 Coke Austin++
15:46 Coke Austin++
15:46 Coke Austin++
15:46 Coke Austin++
15:46 Coke Austin++
15:47 Coke more tests exists, but they are locked in 'spectest' and we need to run more of tcl to be able to run test.tcl
15:47 Austin Also, there are 0 for map.
15:47 Coke yah. I had gotten to the point where I was relying on 'make spectest' in partcl.
15:48 Coke (but partcl-nqp isn't there yet.)
15:48 Coke Austin: your changes have been pushed!
15:48 Coke Austin++
15:48 Coke Austin: can I give you a commit bit on partcl/partcl-nqp ?
15:49 Austin Kind of late now, eh?
15:49 Austin But sure.
15:49 Austin Next time I lose a filling, I'll know where to go..
15:49 Coke so, he ripped out the /filling/ or the /tooth/ ?
15:50 Austin The filling came out on its own. He ripped out the tooth.
15:50 Coke ugggggh.
15:51 Austin Hmm... having trouble with signs..
15:53 Austin I'm going to punt on the signs, Coke. You'll have to add a parser rule.
15:53 Austin (for "is double +2.")
15:53 dalek partcl-nqp: 1881a21 | Austin_Hastings++ | src/Partcl/commands/string.pm:
15:53 dalek partcl-nqp: Implemented a bunch of string functions.
15:53 dalek partcl-nqp: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
15:53 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/1881a217820b019b69ab0a09497d577973827255
15:53 dalek partcl-nqp: c1312b0 | Austin_Hastings++ | src/Partcl/commands/string.pm:
15:53 dalek partcl-nqp: Added wideinteger.
15:53 dalek partcl-nqp: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
15:53 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/c1312b07891b52d93c5c94b7f390252538988599
15:54 Austin Oh, yeah. There aren't any wideinteger tests, either. My wideinteger is just integer.
15:54 Coke added aghast to partcl/partcl-nqp
15:56 Coke as long as tests keep passing, have fun. =-)
15:57 Coke (wideint) yah. we'd need gmp for that, I think.
15:59 Coke there are stubs in the same dir for other "big if" subcommands that could use the same treatment.
15:59 Coke in the meantime, I can todo those last 3 tests.
16:00 Austin It's not them.
16:00 Austin It's the +/- tests in double. (There's more updates...)
16:02 Coke "the last 3 (FAILING) tests"
16:03 Coke not the last 3 tests (IN THE FILE).
16:03 Coke (sorry about the ambiguity. =-)
16:03 Coke ... ok. I will avoid todo'ing them for now and await your updates. =)
16:03 Coke (also:)
16:03 Coke Austin++ !
16:05 Austin Hmm... method getList not found for invocant of class String
16:05 Austin Shouldn't that be TclString?
16:06 Austin Ah. My bad. {{ in the .t file
16:06 Coke yah, I find that error is always hiding some other error.
16:09 Austin Hmm
16:09 Austin Is {...} a string?
16:11 Austin Coke: The first arg to string map is shown as {abc 1 ab 2 ...}. How do I convert that to an array?
16:13 Mokurai1 joined #parrot
16:15 dukeleto Mokurai1: howdy
16:18 Coke Austin: in general, /everything/ is a string.
16:18 Coke but yes. "" is like qq{}, and {} is like q{}
16:18 Austin Frabjous.
16:18 Austin So is there a "right" way to go from { a 1 b 2} to an array?
16:18 Coke .getList()
16:18 Austin Aha.
16:18 Coke if it's a list, it returns itself, if it's a string,it DTRT.
16:19 Coke (also, for extra confusion: in tcl, array means hash, and list means array. =-)
16:19 Austin Coke++
16:19 Austin Let's give it a try, and see what happens.
16:20 Coke fyi, in tcl, there are 2 kinds of data: arrays (associate arrays, or one-level-deep hashes), and "everything else" (strings, lists, dictionaries, int, float...)
16:20 Coke all the everything elses can be converted back and forth (presuming their string representation is OK).
16:31 Austin Man, I'm *really* wanting 'last' here...
16:33 Austin Grrr...concat_vPP vs. concat__PP
16:34 Austin ok 154 - string map example
16:34 Austin woot
16:34 Austin ok 155 - string map reordered example
16:37 * Austin sings, "She's from the southern part of Texas... and she was born in a hurricane."
16:39 dalek TT #1532 created by dukeleto++: Dynloadable runcores
16:39 dalek TT #1532: http://trac.parrot.org/parrot/ticket/1532
16:39 Coke Austin: instead of last, use break()
16:39 Austin You have that?
16:39 Coke it's the tcl version of perl6's last, yes. =-)
16:44 Coke other control exceptions available as HLL functions in main.pm in the same dir as string.pm
16:47 Coke break, error, return, continue, and ... um...
16:48 Coke amazing how much nicer this looks than the PIR version.
17:08 Austin joined #parrot
17:11 arnsholt How do I compile Parrot with -g again?
17:18 am0c_ joined #parrot
17:18 am0c hello
17:19 am0c I have a question that I'm trying to generate a pir file with rakudo(perl6) but it emits an error.
17:20 am0c ./perl6 --target=pir -e 'say "hi"' > hi.pir and then ./parrot/parrot hi.pir
17:20 am0c then error:imcc:syntax error, unexpected PREG, expecting '(' ('$P17')
17:20 am0c in file 'hi.pir' line 29
17:20 am0c error:imcc:syntax error, unexpected PREG, expecting '(' ('$P19')
17:20 am0c in file 'hi.pir' line 33
17:20 am0c error:imcc:syntax error, unexpected PREG, expecting '(' ('$P21')
17:21 chromatic joined #parrot
17:24 Austin msg Coke: Just pushed the "string map" changes to partcl-nqp. I stole the test cases from the manual.
17:24 purl Message for coke stored.
17:25 dalek partcl-nqp: 0d3431f | Austin_Hastings++ | src/Partcl/commands/string.pm:
17:25 dalek partcl-nqp: Implemented a bunch of string functions.
17:25 dalek partcl-nqp: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
17:25 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/0d3431f93c4902aca5276aa64c3d0e6165d173ad
17:25 dalek partcl-nqp: 28674d6 | Austin_Hastings++ | src/Partcl/commands/string.pm:
17:25 dalek partcl-nqp: Added wideinteger.
17:25 dalek partcl-nqp: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
17:25 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/28674d6c1089e81478d9f6b946c604af41d42499
17:25 dalek partcl-nqp: 1160287 | Austin_Hastings++ |  (2 files):
17:25 dalek partcl-nqp: Improved behavior of "string is double", but still having problems with signs. Need a parser rule, I think.
17:25 dalek partcl-nqp: Added string_map, with the test cases take from the manual.
17:25 dalek partcl-nqp: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
17:25 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/116028736db81fbd061616739a9e96ff63b51b4b
17:25 dalek partcl-nqp: b98b5c2 | Austin_Hastings++ | src/Partcl/commands/string.pm:
17:25 dalek partcl-nqp: Replaced various conditional gyrations with break(). Thanks, Coke++.
17:25 dalek partcl-nqp: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
17:25 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/b98b5c255a2f54addf7bdbfc0e65bd2296493f32
17:25 dalek partcl-nqp: 63d595a | Austin_Hastings++ | :
17:25 dalek partcl-nqp: Trying to merge with no differences...
17:25 dalek partcl-nqp: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
17:25 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/63d595aee9b5a8559fb09deff6f7a9f0a50feca0
17:56 theory joined #parrot
18:04 payload joined #parrot
18:10 chromatic msg allison It's worse than I mentioned: *iterating* a STRING requires making a COW header.  See get_bytes() in src/string/encoding/fixed_8.c.
18:10 purl Message for allison stored.
18:17 arnsholt What does the pcc signature stuff do?
18:17 arnsholt Whiteknight: Up a line
18:18 chromatic It manages the types and numbers of arguments and returns used in Parrot's calling conventions.
18:18 arnsholt Ah, right
18:18 Whiteknight arnsholt: every PCC call has a signature that describes it
18:21 arnsholt Right. That explains why the continuations need to fiddle with that
18:22 chromatic Wow, getting rid of Unicode iteration in Parrot_str_to_hashval() speeds up Rakudo by 5.383%.
18:26 Whiteknight just for unicode iteration?
18:27 nopaste "chromatic" at 173.50.130.127 pasted "whiteknight: naive hashing iteration" (39 lines) at http://nopaste.snit.ch/20116
18:28 arnsholt Running parrot -E on my PIR file causes a segfault. That's not supposed to happen, right?
18:28 Whiteknight chromatic: nice
18:28 chromatic Right.
18:28 Whiteknight what's -E?
18:28 purl -e as an argument to perl itself, as in  perl -ne 'print if /foo/;'  is great for one-liners; -e is also the file test operator (perldoc -f -X) for existence of a file or perldoc -f -x
18:29 Whiteknight oh, preprocess
18:29 chromatic Whiteknight, that patch fails a couple of tests because it doesn't handle Unicode properly, but if we pushed the hashing into the encoding-specific files and called them instead, we'd avoid the in-and-out function calls of iterating over each codepoint.
18:29 chromatic Oh, wow.  Look at *this*.
18:30 nopaste "chromatic" at 173.50.130.127 pasted "whiteknight: this gives a 2.346 speedup" (13 lines) at http://nopaste.snit.ch/20117
18:32 arnsholt Is there a quick way to get parrot to output the PASM code for some PIR, or to convert a .pbc to PASM?
18:33 chromatic the -o flag with a .pasm extension, I believe (though I type from memory)
18:34 arnsholt That worked. Cheers!
18:34 Coke IIRC, that isn't gauranteed to create runnable pasm.
18:35 arnsholt Heh. You're right, it doesn't run
18:39 arnsholt I'm trying to figure out why I get these problems with continuations
18:39 arnsholt A start would be knowing if it's a problem with the env stored on creation, or a problem with the restoration
18:40 Whiteknight chromatic: holy crap
18:40 purl only in the Vatican, my friend
18:41 cotto no, holy crap is <reply>only in the Vatican
18:41 purl okay, cotto.
18:41 cotto purl has no friends
18:41 purl cotto: what?
18:47 arnsholt Whiteknight: Do you happen know where I can find out how the .tailcall directive is implemented?
18:47 Whiteknight arnsholt. it's basically the same as any other function call, but uses the "tailcall" op instead of the "invokecc" op
18:47 Whiteknight src/ops/core.ops
18:49 Whiteknight chromatic: how does that hash algorithm not handle unicode correctly?
18:49 dalek parrot: r45203 | chromatic++ | trunk/src/string/api.c:
18:49 dalek parrot: [str] Added an early return to Parrot_str_to_hashval() for STRINGs with no
18:49 dalek parrot: content.  This avoids creating an unnecessary STRING iterator and speeds up my
18:49 dalek parrot: Rakudo benchmark by 2.346%.
18:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45203/
18:51 arnsholt Whiteknight: Cheers. I'm hoping it might give some insight on why things go south
18:51 Whiteknight arnsholt: what is the ticket number again?
18:51 arnsholt The problems go away with .tailcall, so that code does something to paper over the problem
18:51 arnsholt 'sec
18:52 arnsholt TT #1528
18:56 Whiteknight arnsholt: in the conttest.patch file, there's a problem with choose
18:56 Coke chromatic++
18:56 Whiteknight if do_tailcall is 0, it calls choose, returns, then fallsthrough and does .tailcall anyway
18:56 arnsholt Whiteknight: Oh?
18:56 purl it has been said that Oh is there a link where i can read more about that?
18:56 arnsholt Oh. Excellent point
18:57 Whiteknight I'm testing the fix locally to see if that changes the test result
18:58 Whiteknight arnsholt: fixing that, the test passes
18:58 arnsholt Hmm.
18:58 Whiteknight so is the test bad, or is the issue fixed?
18:58 arnsholt I think it has to be the test
18:59 arnsholt Unless the bug got fixed since this morning
19:00 Coke SQUEE! I did a 'git pull' AND STUFF WAS PULLED
19:00 Coke SQUEEEEEEEEEEEEEEEE
19:01 nopaste "arnsholt" at 81.229.93.131 pasted "Continuation issue, without .tailcall" (67 lines) at http://nopaste.snit.ch/20118
19:01 arnsholt Whiteknight: Try that paste. If you run it as is, you should get the same problem as my original bug, but if you uncomment the .tailcal line and comment out the other one, it should work fine
19:02 Whiteknight arnsholt: in the choose function, you never take the return value of choose.
19:02 Whiteknight PIR isn't like perl, the last value in the block is not returned automatically
19:03 Whiteknight on line 22, $P0 = 'choose'(...), .return($P0) and it works
19:03 Whiteknight that's what tailcall does, mostly.
19:03 Whiteknight so when you take out the tailcall, you need to replace it with a return or you lose the return value
19:03 bacek joined #parrot
19:04 arnsholt D'oh. That is, of course an excellent point >.<
19:04 Whiteknight :)
19:04 arnsholt Thank you for pointing out the error of my ways =)
19:04 Whiteknight no problem. I'm sorry I didn't notice it sooner
19:05 * bacek yawns
19:05 Whiteknight good morning bacek!
19:06 bacek Good morning
19:07 arnsholt Right. Someone with the autoritah to do so can close #1528 in that case
19:09 bacek Whiteknight, then just commit test and close it. Cheap karma ftw :)
19:10 Whiteknight Done
19:15 chromatic Whiteknight, you can't walk char-wise over codepoints for encodings where individual codepoints are wider than eight bits.
19:17 Whiteknight chromatic: assuming that's the way we consistantly calculate the hash, I don't see why the existance of "codepoints" has anything to do with it
19:17 Whiteknight walk over the buffer as if it's any arbitrary data buffer, byte-at-a-time and calculate a hash
19:19 chromatic You increase the possibility of collisions that way.
19:20 Whiteknight that doesn't make sense to me, but I'm hardly an expert on hashing algorithms
19:21 chromatic Tests fail; that's as much mathematician as I can get right now.
19:22 bacek Which tests?
19:22 purl Which tests are failing?
19:23 chromatic t/op/stringu.t and one other.
19:24 chromatic bacek, http://nopaste.snit.ch/20116
19:24 dalek parrot: r45204 | whiteknight++ | trunk/t/pmc/continuation.t:
19:24 dalek parrot: Applying patch from #1528, plus small correction to make the test pass. Resolves T #1528
19:24 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45204/
19:24 tetragon joined #parrot
19:25 bacek chromatic, of course. Code inside str_to_hashval should produce same hashval independent of string encoding.
19:25 dalek TT #1528 closed by whiteknight++: Continuations still interact badly with .return
19:25 dalek TT #1528: http://trac.parrot.org/parrot/ticket/1528
19:26 bacek chromatic, even worth - I wrote it :)
19:26 bacek erm. Or it's "worse"?
19:27 chromatic bacek, my patch improves Rakudo performance by 3%.
19:27 chromatic ... at the cost of some failing tests, as you well know.
19:27 bacek chromatic, yes. But it's incorrect patch.
19:27 chromatic We can consider moving hashing into the encoding-specific files.
19:27 bacek Or store all string in single encoding internally.
19:27 chromatic Well yes, but that's a bigger patch.
19:28 bacek Fixed-width.
19:28 bacek Single fixed-width encoding non-modifiable strings...
19:28 * bacek still dreaming and need more coffee
19:29 chromatic Moving the hashing into those files is an easier win.
19:29 bacek modulo maintenance overhead.
19:30 chromatic Duplicating the hash algorithm, you mean?
19:30 bacek yes
19:30 chromatic That's what macros are for.
19:30 bacek Or templates...
19:30 purl i guess templates is a bit specific or should be a stupid as possible
19:30 chromatic ADD_CODEPOINT_TO_HASH(hashval, c)
19:35 dukeleto joined #parrot
19:35 Andy joined #parrot
19:39 bacek chromatic, can you quick test performance if we always convert string to utf16 in str_to_hashval
19:39 bacek ?
19:41 chromatic I doubt it'll make much difference; it looks like the overhead of creating the iterator and always making a function call to get the next codepoint.
19:41 chromatic I can test a patch though.
19:42 bacek (And remove iterator of course)
19:43 bacek I.e. "your patch" + "always use same encoding"
19:43 chromatic Yes, that would make a difference.
19:44 bacek Just be careful with constant strings...
19:46 sorear Infinoid: ping
19:47 bacek .oO( It two days enough to implement Generational GC? )
19:48 arnsholt bacek: Time to find out? =)
19:48 sorear Infinoid: Un-ping
19:50 bacek sorear, what kind of GC did you want to implement?
19:50 ferdinand joined #parrot
19:51 Austin_away joined #parrot
19:52 sorear A fake GC, which didn't actually collect anything, but instead generates detailed statistics on heap objects
19:52 sorear i.o.w. a heap profiler
19:53 bacek sorear, ah... Check INF GC. It's semibroken but easily to resurrect.
20:00 Coke hurm. todo tests are borked in partcl-nqp
20:01 Austin Heh.
20:01 Coke I tried to TODO the last 2 tests and the whole thing go boom.
20:02 Coke ew, I use regsub.
20:03 Austin Yeah, eww.
20:03 Austin (?)
20:09 iblechbot joined #parrot
20:11 Coke just a lot of processing for something so basic. I made TODOs much dumber so we can use them. (committed). string tests are now by default with "make testj"
20:11 Coke er, pushed.
20:16 dalek partcl-nqp: 74e52c9 | Coke++ | lib/test_more.tcl:
20:16 dalek partcl-nqp: allow TODO tests to be run...
20:16 dalek partcl-nqp: ... by doing much less processing on them.
20:16 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/74e52c992bb5d9638247f895af54d6a85e905036
20:16 dalek partcl-nqp: c580178 | Coke++ |  (2 files):
20:16 dalek partcl-nqp: TODO a few remaining failing tests in cmd_string and now run it by default.
20:16 dalek partcl-nqp: Also fix the plan.
20:16 dalek partcl-nqp: Austin++ for getting all these to pass!
20:16 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/c58017883c7198f44aad7c73392f6dd75c393738
20:22 bacek sorear, INF GC fixed now. You can use it as base for your "GC".
20:34 dalek parrot: r45205 | bacek++ | trunk/src/gc/gc_ms.c:
20:34 dalek parrot: Remove redundant code duplication.
20:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45205/
20:34 dalek parrot: r45206 | bacek++ | trunk/src/gc/api.c:
20:35 dalek parrot: Remove mark/sweep block/unblock functions from mandatory list of GC Subsystem.
20:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45206/
20:35 dalek parrot: r45207 | bacek++ | trunk/src/gc/gc_inf.c:
20:35 dalek parrot: Cargo-culting memory chunks allocation from GC MS to GC INF.
20:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45207/
20:36 dalek TT #1498 closed by bacek++: gc_inf core breaks build.
20:36 dalek TT #1498: http://trac.parrot.org/parrot/ticket/1498
20:38 theory joined #parrot
21:09 dalek parrot: r45208 | chromatic++ | trunk/src/gc/gc_ms.c:
21:09 dalek parrot: [GC] Reordered conditionals in gc_ms_get_free_object() in terms of descending
21:09 dalek parrot: likelihood, to reduce branches and help prediction in this hot path.
21:09 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45208/
21:14 bacek joined #parrot
21:26 payload left #parrot
21:35 lucian_ joined #parrot
21:42 dalek parrot: r45209 | chromatic++ | trunk/src/packfile/pf_items.c:
21:42 dalek parrot: [PF] Inlined an inlinable memcpy() within fetch_op_le_4(), avoiding yet another
21:42 dalek parrot: function call (itself non-inlinable) when thawing PBC.  This patch speeds up
21:42 dalek parrot: the Rakudo startup benchmark by 2.771%.
21:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45209/
21:42 dalek parrot: r45210 | chromatic++ | trunk/src/packfile/pf_items.c:
21:42 dalek parrot: [PF] Tidied code in PF_fetch_string() to give the compiler slightly better
21:42 dalek parrot: optimization possibilities.  The code's also shorter; don't worry.  No
21:42 dalek parrot: functional changes and minor performance improvements.
21:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45210/
21:42 dalek parrot: r45211 | mikehh++ | trunk/src/gc/gc_inf.c:
21:42 dalek parrot: fix codetest failure - unused assert macros
21:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45211/
21:43 sorear How does one measure Rakudo startup time to 5 significant figures
21:47 chromatic Callgrind
21:47 purl Callgrind is a very intresting profiling tool for linux with details at http://kcachegrind.sourcef​orge.net/cgi-bin/show.cgi
21:50 lucian__ joined #parrot
21:54 cotto also required, patience while callgrind runs
21:56 tetragon joined #parrot
21:59 dalek parrot: r45212 | mikehh++ | trunk/src/gc/gc_inf.c:
21:59 dalek parrot: fix codetest failure - add missing c function docs
21:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45212/
22:03 * bacek is ultimate codetest breaker...
22:15 cotto That's fine as long as you're fixing something while you're breaking codetest.
22:19 ruoso joined #parrot
22:31 mikehh the g++ build is broken at the moment - it does not like char * = const char *
22:33 mikehh src/call/args.c line 1462 && 1464
22:35 mikehh (it builds ok in gcc)
22:35 bacek blame chromatic :)
22:35 mikehh yes I figgered that out already
22:36 mikehh attempting to fix caused more problems
22:38 mikehh you used to be able to do that with g++ but g++ 4.4.1 and after blew up on that
22:39 * mikehh needs to work out how to get around this
22:41 mikehh you have const char *signature and are returning the address of it and itterating over it
22:43 chromatic DECL_CONST_CAST ?
22:45 bacek mikehh, fixed.
22:45 bacek r45213
22:46 kid51 joined #parrot
22:49 dalek parrot: r45213 | bacek++ | trunk (5 files):
22:49 dalek parrot: Fix build with g++
22:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45213/
23:02 mikehh well that works - didn't know you could iterate using a const char *
23:02 cotto What's the right way to have an nqp sub call another sub, passing the exact same arguments?
23:06 dalek parrot: r45214 | cotto++ | branches/profiling_testing (5 files):
23:07 dalek parrot: [profiling] more profiling testing updates, possibly closer to usable
23:07 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45214/
23:07 dalek parrot: r45215 | cotto++ | branches/profiling_testing/c​onfig/gen/makefiles/root.in:
23:07 dalek parrot: [profiling] add a makefile target for ProfTest.pbc
23:07 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45215/
23:16 arnsholt Will <rule:foo> do what I want it to do (that is, match against the thing marked :foo in my proto-regex rule) in nqp-rx's grammars?
23:19 bacek joined #parrot
23:23 dalek parrot: r45216 | cotto++ | branches/profiling_testing (2 files):
23:23 dalek parrot: [profiling] make tests run, though only one passes before everything explodes
23:23 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45216/
23:38 theory joined #parrot
23:59 cotto more different error
23:59 cotto time for afk

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

Parrot | source cross referenced