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