|
Parrot 1.0 Released | parrot.org | 380 RTs left! Set by moderator on 28 March 2009. |
|||
| Infinoid | I particularly love how this jit bug trashes the stack before it crashes | 00:02 | |
|
00:04
cotto joined
00:05
Tene joined
00:09
AndyA joined
|
|||
| Infinoid | cotto: Ok, I'm looking at the generated code here... it's just dereferencing the pmc pointer directly, expecting to find your PMC_struct_val at offset 0 within the structure | 00:16 | |
| cotto | Sounds like the right place. Where is that code? | 00:17 | |
| Infinoid | it's on the heap, it's the function called as jit_func() | ||
|
00:19
bacek_ joined
|
|||
| Infinoid | apparently the jit code doesn't bother to maintain stack frames, so gdb's backtraces are useless at this point, but I have a register dump and disassembly if you want the exact offset | 00:19 | |
| bacek_ | good morning | ||
| Infinoid | hi bacek_ | ||
| bacek_ | hi Infinoid | ||
| cotto | I wouldn't know what to do with it. | ||
| Infinoid | I need to understand where and how jit generated this code, in order to fix this | 00:20 | |
| first off, where can I find the jit engine sources? :) | |||
| rg | you mean like src/jit/i386? | 00:21 | |
| Infinoid | (We're pretty fortunate that we're only one function call deep, by the way. Makes the result pretty easy to read) | ||
| rg++ | 00:22 | ||
| rg has looked at the jit sources before ... without much success (as documented in TT #501 and the linked RT) | 00:23 | ||
| Infinoid stares at Parrot_pcc_invoke_from_sig_object() for starters | |||
| bacek_ | I've got stupid question - who can check fax machine at Parrot Foundation? :) | 00:28 | |
| Infinoid | particle2: Have you gotten bacek's CLA yet? | 00:29 | |
| bacek_ | Infinoid: any objections about approach in github.com/bacek/parrot/tree/packfile_revamp ? (I'm going to move more tests from perl to pir today. And start adding "write" ability to packfile*.pmc) | 00:31 | |
| bacek_ heading off to another meeting... | 00:32 | ||
|
00:36
darbelo left
|
|||
| Infinoid | bacek_: +1, good stuff | 00:37 | |
| it appears before I can learn the horrors of JIT, I need to learn the horrors of MMD first | 00:50 | ||
| cotto | Infinoid, why? | 00:53 | |
| dalek | rrot: r37933 | cotto++ | trunk/tools/dev/parrot-fuzzer: [fuzzer] minor refactor, add --ignore_blacklist option |
00:54 | |
| Infinoid | cotto: I want to know how this nci function is generated by the jit engine | 00:55 | |
| but unfortunately, that leads directly into the middle of pcc/mmd | 00:56 | ||
| dalek | rrot: r37934 | cotto++ | trunk/src/pmc (2 files): [PMC] finish the switch to ATTRs in *ManagedStruct |
01:01 | |
| cotto | smolder? | 01:11 | |
| purl | well, smolder is sourceforge.net/projects/smolder or web-based smoke test aggregator used by developers and testers to upload (automated or manually) and view smoke/regression tests using the Test Anything Protocol (TAP). or smolder.plusthree.com/app/public_pr..._reports/8 | ||
| cotto | lovely? | 01:14 | |
| purl | i heard lovely was programmer-speak for "JUST FUCKING WONDERFUL AND BY THAT I MEAN POOP" | ||
| cotto | no, lovely is engrishfunny.com/2008/10/15/engrish...-yourself/ | ||
| purl | okay, cotto. | ||
| Util | heh | 01:15 | |
| Infinoid | cotto: Oh, nevermind. Process of elimination worked, the bad jit code call was generated at src/jit/i386/jit_defs.c:2320 | 01:19 | |
| Is there a function it can call to fetch the value of nci_info->orig_func? | 01:23 | ||
| Preferably without having to call Parrot_PCCINVOKE (I assume the whole point of using jitted nci is to speed things up) | 01:25 | ||
| cotto | It'd be very easy to add a get_pointer VTABLE function that did that. | 01:27 | |
| get_pointer deals with orig_func, so it'd go with the principle of least surprise. | |||
|
01:28
acajou left
|
|||
| cotto | Are you thinking in terms of debugging or coding? | 01:28 | |
| Infinoid | hmm, I think we can make VTABLE_get_pointer | ||
| mikehh | kid51: I notice that in your config you have -lnsl and -lutil which I don't have | ||
| Infinoid | Those VTABLE_* things are preprocessor magic that isn't available at this level, but I can look and see if jit has a wrapper I can use | 01:29 | |
| I'm done debugging, now trying to code a replacement | |||
| cotto | Infinoid, you can look at r37897 where tewk calls a VTABLE function from the jit code. | 01:30 | |
| Infinoid | awesome, thanks | ||
| cotto | also, engrishfunny.com/2008/11/06/engrish...r-octopus/ | 01:31 | |
| shorten | cotto's url is at xrl.us/owkqm | ||
| Infinoid | ah, that vtable code doesn't look too bad | 01:32 | |
| though I'm not really sure how get_pointer gets the pointer of its invocant (eax is overwritten during the pmc->vtable->get_pointer dereferencing) | 01:34 | ||
| kid51 | mikehh: Then you know my config better than I do ;-) | ||
| I didn't consciously do anything to add them. | |||
| mikehh | I was just wondering what they were - I couldn't seem to track them down | 01:36 | |
| kid51 | vi +88 ./tools/build/dynpmc.pl | 01:40 | |
| But that's not source; it must be built by something. Hold on. | 01:41 | ||
|
01:45
mikehh joined
|
|||
| kid51 | mikehh: It's picked from my Perl 5 %Config in step 2: init::defaults. Am configuring with /usr/local/bin/perl. Perl 5.10.0 manually compiled (on the day it came out!). | 01:48 | |
| perl Configure.pl --configure_trace && perl -MData::Dumper -MStorable -e '$hashref=retrieve(q|.configure_trace.sto|);print Dumper $hashref' | grep -n lutil | 01:51 | ||
| ... and same for lnsl | |||
| But I don't know what those two libs are all about. | 01:52 | ||
| mikehh | I am using the Perl 5,10 that is distributed with Intrepid - updated and with CPAN but I am not happy with their build - they are Python people - NOT Perl | ||
| kid51 | Well, my build, though by hand, was whatever the simplest possible build is. No special arguments to Perl's Configure. | 01:53 | |
| mikehh | They have install directories all over the place including /usr/local which worries me if I build to that dir | 01:54 | |
| kid51 leaves that to AndyD ;-) | |||
| mikehh | I think I might build to localperl - who knows how to build from the git repo? | 01:55 | |
| kid51 does not. I got a tarball the day it came out -- which was before the move to the git repo, IIRC. | 01:57 | ||
| mikehh | I have an up to date git locally - I think I need to build against Maint 10,0 or maybe I should jyst try Bleed | 02:00 | |
| I just spent a day building gcc 4.3.3 and I am not sutr I want to do Perl at the moment :-{ | 02:04 | ||
| dalek | rrot: r37935 | jkeenan++ | trunk/t/tools/ops2pm/05-renum_op_map_file.t: Correct 'Stage' numbers in messages of 4 tests. |
02:10 | |
| rrot: r37936 | jkeenan++ | trunk/t/tools/ops2pm/05-renum_op_map_file.t: Eliminate superfluous get_last_opcode() calls in Stages 3 and 6. |
02:13 | ||
| kid51 | Well, as noted above, building your own gcc is only for the very brave or very foolish. | 02:14 | |
| But I've built perl -- albeit always in the simplest possible configuration -- quite a few times. | |||
| mikehh | I woukd normally build to /usr/local/bin but the standard build would conflict with the Ubuntu one so I need to consider that very carefully | 02:21 | |
| mainly because it has CPAN modules in /usr/local/lib/perl | 02:23 | ||
| kid51 | Eeeek. That *is* a messy install. | ||
|
02:23
eternaleye joined
|
|||
| mikehh | also /usr/local/share/perl and /usr/local/share/perl5 and /usr/lib/perl5 and ... and | 02:25 | |
| Infinoid | cotto, you still around? | ||
| mikehh | as I said they really are Python people and they made a mess the first time and then updated to try and get it right but did not remove all the old directories | 02:27 | |
| nopaste | "infinoid" at 75.5.243.250 pasted "cotto: [PATCH] [HALFBAKED] [DANGER WILL ROBINSON] JIT NCI call wrapper should use VTABLE_get_pointer to access function pointer, not PMC_struct_val" (71 lines) at nopaste.snit.ch/16163 | 02:28 | |
| mikehh | The number of times that I have updated with cpanp and had to remove some of the old files manually ... :-} | 02:29 | |
| dalek | rrot: r37937 | pmichaud++ | trunk (2 files): [codestring]: Add 'lineof' method for finding line numbers. |
||
| Infinoid | msg cotto I have to run. nopaste.snit.ch/16163 works for me, but it could use some polishing, and a review from a JIT person. I haven't had to do explicit stack handling on x86 for a long time, and I *think* it's right, but I'm not really sure about all that temp_calls_offset and args_offset handling stuff. | 02:30 | |
| purl | Message for cotto stored. | ||
| Infinoid | msg cotto The PMC_struct_val(SELF) = NULL stuff is in there just to make sure it segfaulted when it should. That can be removed. | 02:33 | |
| purl | Message for cotto stored. | ||
| Infinoid gone & | 02:34 | ||
|
02:35
janus joined
|
|||
| dalek | rrot: r37938 | pmichaud++ | trunk/compilers/pge/PGE/Match.pir: [pge]: Use a CodeString PMC to hold match targets instead of String. |
02:36 | |
| kid51 must sleep | 02:37 | ||
| purl | $kid51->sleep(8 * 3600); | ||
|
02:56
eternaleye_ joined
03:02
karatorian joined
|
|||
| cotto | Infinoid, back | 03:11 | |
| messages erase | |||
|
03:57
karatorian left
|
|||
| Coke_afk | messages shake etch a sketch | 03:58 | |
|
04:29
tetragon joined
04:44
masak joined
|
|||
| eternaleye_ | Are there any plans for an API to access the AST for HLL code from an embedding program? I could see it being immensely useful for, say, syntax hilighting. Especially the Declaration-Use Chain stuff the KDevelop guys are doing. | 04:48 | |
| cotto | eternaleye_, that's a good question for #parrotsketch | 04:52 | |
| eternaleye_ | Cool, I'll join | 05:00 | |
| cotto | Good for you! | 05:02 | |
| eternaleye_, #parrotsketch is where we hold our weekly meetings | 05:29 | ||
| eternaleye_ | Ohhh | 05:30 | |
| Tene | eternaleye_: the weekly meeting is tomorrow | ||
| eternaleye_ | Gotcha. | ||
| Tene | purl: parrotsketch? | ||
| purl | well, parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch | ||
| cotto | Sorry. I assumed too much there. | ||
| eternaleye_ | 'sokay. | ||
| cotto | If you're around, you're free to join and ask your question, though. | ||
| I'd ask it, but I'll have to miss it tomorrow. | 05:31 | ||
| eternaleye_ | I ought to be able to show up. It's at 11:30am localtime (PST8PDT). I'll be in class, but I ought to be able to manage (It's my CS class XD) | 05:36 | |
| dalek | rrot: r37939 | cotto++ | trunk/t/codingstd/copyright.t: [t] unTODO a passing codingstd test |
05:37 | |
| cotto | You only occasionally have to pay attention, especially if you're a fast reader. | 05:39 | |
| The usual format for #ps is that regular contributors report, then it's open for questions. | 05:40 | ||
| eternaleye_ | Sounds good. I'll probably set a hilight fot the regex 'question(s?)', and just check it every few minutes | 05:46 | |
| Let me know when it's time | 05:47 | ||
| s/^L/That should l/ | 05:48 | ||
| cotto | seen tewk | 06:05 | |
| purl | tewk was last seen on #parrot 2 days, 8 hours, 51 minutes and 43 seconds ago, saying: :q [Apr 4 21:12:07 2009] | ||
|
06:05
eiro joined
06:06
eiro joined
|
|||
| cotto | msg tewk When you have a minute, the patch for trac.parrot.org/parrot/ticket/365 needs review by someone who understands the JIT code. I'd appreciate it if you could review the patch (trac.parrot.org/parrot/raw-attachm...t365.patch ) and either give it your +1 or say what needs to be fixed. Thanks. | 06:15 | |
| purl | Message for tewk stored. | ||
| shorten | cotto's url is at xrl.us/ben5b7 | ||
| cotto | Infinoid++ #(le)jit hackery | 06:16 | |
| sleepytime | 06:19 | ||
| moritz | eternaleye_: PCT based compiler have a target=parse option that reveals the syntax tree | ||
|
06:29
Tene_ joined
|
|||
| eternaleye_ | moritz: That's cool! I'll probably still end up asking #parrotsketch whether there'll be an API for embedders to access that AST though, like to walk the AST from C or C++ | 06:44 | |
| moritz | eternaleye_: sure, feel free | ||
|
06:52
iblechbot joined
07:07
bsdz joined
08:03
particle joined
08:20
donaldh joined
|
|||
| nopaste | "mikehh" at 92.30.6.100 pasted "Weird happenings with the jit core" (106 lines) at nopaste.snit.ch/16172 | 08:29 | |
| mikehh | Anyone want to have a look at this - I think my computer has lost the plot | 08:30 | |
|
09:07
cognominal joined
09:22
elmex joined
09:25
PacoLinux joined
|
|||
| dalek | rrot: r37940 | fperrad++ | trunk/compilers/nqp/src/builtins.pir: [nqp] refactor 'say' with tailcall |
09:54 | |
|
09:59
schinkelm joined
11:12
eiro joined
11:39
kid51 joined
11:40
flh joined
|
|||
| Coke_zzz | bacek: ping | 12:12 | |
| (asking things in parrotsketch) there's also the mailing list, which has the advantage of being open 24/7. | 12:28 | ||
|
12:36
rg1 joined
12:53
iblechbot joined,
PacoLinux joined
12:56
register joined
|
|||
| Infinoid finds some jit docs and reads them | 13:03 | ||
|
13:08
ruoso joined
13:12
register joined
|
|||
| register | Hi! | 13:13 | |
| how to configure the big int library? | |||
| moritz | I think you install libgmp3-dev and run Configure.pl again | 13:15 | |
| register | ah ok | 13:17 | |
| thx | 13:18 | ||
| moritz | (libgmp3-dev is the name on Debian, on other systems it might vary= | ||
| s/=/)/ | |||
| you're welcome | |||
| oh, and recompile of course ;-) | |||
| register | well... yes... | 13:19 | |
| I am using an ubuntu | |||
| should be the same name | 13:20 | ||
| moritz | right | 13:21 | |
| Ubuntu++ # bringing apt/dpkg to a wider user base | |||
| register | well it's a fabolous distribution | 13:22 | |
| I have a double boot laptop with ubuntu and windows 2008 server | 13:23 | ||
| on the w2008 server I have a virtualbox with xubuntu | |||
|
13:23
gryphon joined
|
|||
| register | when I can foresee that I need to do some mix development | 13:23 | |
| xubuntu really rocks | |||
| it's extremely fast and solid | |||
| I really cannot see the difference between the vm xubuntu and the pure ubuntu... | 13:24 | ||
| and another revolution has been the release of qt creator | |||
| this ide is on par with visual studio | |||
| but it is completely open | |||
| I foresee big things for it | |||
| it will become the de-facto standard for C++ development on all the supported platforms | 13:25 | ||
| moritz is still on vim for C++ development | 13:26 | ||
| register | well | ||
| i still use vim on linux too | |||
| but i code c++ for a living | 13:27 | ||
| and i can really appreciate the difference between a textual development environment | |||
| and a real IDE | |||
| just setting breakpoints on gdb typing a sourcecodefilename:linenumber | |||
| is a complete waste of time | 13:28 | ||
| moritz | aye, agreed | ||
| register | and being forced to remember every signature of every function is a complete waste of brain .memory also | ||
| intellisense helps | |||
| just by having an ide that is able to remember breakpoints | |||
| you save at least 50% of the development time | 13:29 | ||
| Even if I admire the open source movement for the quality of the code and the braveness of some ideas | |||
| I have to blame it a little bit for not producing an interesting - modern - standard ide for development on linux | 13:30 | ||
| eiro | register, ++ about bps .. -- about signatures | ||
| <c-]> and <c-t> are your friends | 13:31 | ||
| (i do it everytime with every langagesĆ | |||
| moritz | ctags? | ||
| purl | ctags is cool :) or at ctags.sf.net/ | ||
| eiro | moritz, yep | 13:32 | |
| register | ctags with vim? | ||
| eiro | register, yes of course | ||
| register | with automatic tags compilation every time the source is modified? | ||
| eiro | and it complete the names of functions with <c-x><c-]> (i remapped with <c-j> ... borland souvenirs) | ||
| register, no ... i have a macro to do it manually | 13:33 | ||
| register | eheh | ||
| gotcha | |||
| eiro | ,rt ( refresh tags) | ||
| register | ;) | ||
| eiro | i don't carre: i don't have signatures | ||
| btw it can be easy to add a event handler ... for every pressed keys if you want | 13:34 | ||
| so it's not an argument ;) | |||
| breakpoints is one ! | |||
| :( | |||
| moritz | it would be nice to have a really good IDE with vim as the editor | 13:35 | |
| register | well | ||
| moritz | I've seen a vim plugin for msvc, but I couldn't get it to run (but that's years ago) | ||
| register | with qt creator I guess it could be done | ||
| the ide is extendible | |||
| is very modular | |||
| as soon as I get some spare time I will play with it | |||
| but I suggest you to have a look at it | 13:36 | ||
| it's intellisense in magnificient | |||
| its intellisense | |||
| is | |||
| eiro | it could be great! i can't imagine the developpement without vim | ||
| register | by the way | 13:39 | |
| what is missing from the bigint pmc? | |||
|
14:01
bsdz joined
|
|||
| dalek | kudo: 2c7f5b3 | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 349 files, 8436 passing, 0 failing |
14:22 | |
| shorten | dalek's url is at xrl.us/ben5z4 | ||
| dalek | rrot: r37941 | coke++ | trunk (3 files): [cage] make sure src/exec.c is headerized it passes the function doc test. |
14:24 | |
|
14:27
Theory joined
|
|||
| Coke | that seems to me the wrong way to fix headerizer. are we not linking against exec.o ? | 14:30 | |
|
14:36
particle1 joined
|
|||
| Coke | ah. we are, just not on my platform. blah. | 14:38 | |
| dalek | rrot: r37942 | coke++ | trunk/config/gen/makefiles/root.in: [cage] revert explicit add of exec.o is skipped on osx/x86, but not on linux/x86. |
14:41 | |
|
14:42
davidfetter joined
|
|||
| dalek | rrot: r37943 | coke++ | trunk/tools/build/headerizer.pl: [cage] when warning about missing function docs, give the filename. |
14:44 | |
| Coke ponders an eclipse plugin. | 14:49 | ||
| Infinoid | If you wrote one, I would use it | 14:50 | |
| Coke | If I wrote one, I'm not sure /i/ would use it. =-) | 15:00 | |
| might be interesting to learn how, so I could also hack on cfeclipse, though. | |||
| flh | when I write, in PIR, new 'something', this calls the "something" pmc init vtable function? | 15:02 | |
| particle1 | $P0 = new ['Something'] is the correct syntax now btw | 15:03 | |
| and yes, it calls Something's init vtable function | |||
| particle- | $P0 = new ['Something'], $P1 calls Something's init_pmc vtable function | 15:04 | |
| flh | and it should work also with a dynpmc? | ||
| particle- | yes | 15:05 | |
| flh | ok, so I missed something somewhere else, since my init_pmc should throw an exception, but it doesn't | ||
| particle- | are you using gcc, and if so, do you know your way around gdb? | 15:06 | |
| you can set a breakpoint at init_pmc | |||
| dalek | kudo: ea94175 | (Moritz Lenz)++ | t/harness: re-enable parallel testing in t/harness again Requires a sufficiently recent Test::Harness. For example the harness works fine with 3.12, but for parallelism you need something newer, 3.16 seems to work. |
15:11 | |
| shorten | dalek's url is at xrl.us/ben567 | ||
| dalek | kudo: 27f0c01 | (Moritz Lenz)++ | README: document requirements for parallel testing |
||
| shorten | dalek's url is at xrl.us/ben569 | ||
| flh | well, actually, my init_pmc is not even in the C file generated from the .pmc | 15:14 | |
| let's see how Rakudo is doing :) | 15:16 | ||
| Coke | particle-: new ['Something'] - that's /recommended/ but not /required/, neh? | 15:20 | |
| (and if it's eventually going to be required, let's document the changeover in DEPRECATED.pod and start warning on the old syntax. | 15:21 | ||
| particle- | iirc the test suite has been converted over | ||
| pmichaud | aiui, ['Something'] is not required. | ||
| 'Something' is still valid. | |||
| particle- | ok, y'all know better than me at this point, i'm sure. | ||
| Coke | particle-: the test suite has NOT been fully converted. | 15:22 | |
| (nor has most of the codebase. =-) | |||
| flh | hum, found it... "badly balanced pmc": I should definitely close curly brackets :) | ||
| Coke | pmichaud: is new <STRING> eventually going to be illegal? | ||
| particle- | i lose. | ||
| flh: that'll do it, every time :) | |||
| pmichaud | Coke: I haven't had that impression. | 15:23 | |
| Coke | pmichaud: k | ||
| pmichaud | Coke: I think that chromatic and I were arguing for making it illegal, but allison wanted to keep it. | ||
| dalek | kudo: 4453712 | pmichaud++ | build/Makefile.in: Refactor checks for Makefile updates so that 'make realclean' continues to work. |
15:25 | |
| shorten | dalek's url is at xrl.us/ben58n | ||
|
15:28
Tene joined
|
|||
| flh | particle, the funny thing being that with my original source, pmc2c did not complain about the missing bracket | 15:29 | |
| particle- | flh: that's a bug, and if you can get a minimal test case, it would be wonderful to report | 15:31 | |
| Coke | there is a LONG open bug about that. | 15:33 | |
| moment. | |||
| check this: rt.perl.org/rt3/Ticket/Display.html?id=39313 | 15:34 | ||
| there are some things that are just dropped on the floor when using pmc2c.pl | 15:35 | ||
| I presume this is a case of that. | |||
| pmc2c.pl should pass through anything it doesn't understand to the .c (where it would presumably fail miserably) | |||
| particle- | Good Idea. | 15:37 | |
| purl | particle-: Good Idea: Singing Christmas carols to your neighbors. Bad Idea: Singing Christmas carols to your neighbors on the Fourth of July. | ||
| particle- | was that ever funny? | ||
|
15:37
rdice joined
|
|||
| Coke | what, GI/BI? clearly you're not an animaniacs fan. | 15:37 | |
| particle- | i am, but that one isn't funny. | ||
| potty emergency? | 15:38 | ||
| Coke | no, I'm good. | ||
| ;) | |||
| rg | lol. don't do that when i'm drinking :P | 15:39 | |
| bsdz | pmichaud: hi, do you mind taking a look at a PCT compiler prob I have. I've a nopaste. | 15:40 | |
| pmichaud | bsdz: sure thing | ||
| bsdz | pmichaud. nopaste.snit.ch/16135 ; it's a boiled down snippet. i'm trying to loop through the elements of a capture but using @(..) comes up empty. | 15:41 | |
| pmichaud | which line is the one giving you trouble? | ||
| bsdz | 88 and below. | 15:42 | |
| pmichaud | in func_sig? | 15:43 | |
| bsdz | yes. i can access each array element one by one but can't get them into a 'for' loop | ||
| pmichaud | you need $<return_identifier>[0]<identifier> | ||
| instead of $<return_identifier><identifier> | |||
| oops, "return_identifier_list" | |||
| particle- | classic failure | 15:44 | |
| PerlJam | Seems like there should be some DWIM there though. | ||
| bsdz | hmm. i think i tried that and many other combinations. | ||
| PerlJam | (I get bitten by that one occasionally too :) | ||
| pmichaud | well, $<return_identifier_list> will be an array. | ||
| bsdz | i'm not at my normal dev env right now but will try and give it a spin. | ||
| pmichaud | PerlJam: at one point we had ? quantifiers as not returning arrays.... but that got changed. | ||
| okay, I'm about to make a commit that adds a new opcode. Any special rules for adding opcodes in the post-1.0 world that I should know about? | 15:45 | ||
| bsdz: you're also likely to run into a problem because $<return_identifier_list>[0] will sometimes have <identifier> as a single Match object and sometimes as an Array | 15:46 | ||
| (depending on which path gets taken in the return_identifier_list rule) | 15:47 | ||
| dalek | tracwiki: v4 | coke++ | Deprecation | ||
| tracwiki: trac.parrot.org/parrot/wiki/Deprec...ction=diff | |||
| shorten | dalek's url is at xrl.us/ben6at | ||
| bsdz | ah okay | ||
| pmichaud | you can force it to always be an array by using <identifier>**{1} | ||
| bsdz | is that something along the lines of: - for $<return_identifier_list>[0]<identifier>**{1} { | 15:50 | |
| pmichaud | no, I mean in the regex/rule | ||
| PerlJam | pm: speaking of ** ... we had talked about the <thingy>**',' version before and I intended on implementing it, but never did. I've run into places where I've wanted to use it a couple of times in the last few days, so maybe I'll take a stab at it again. Any advice or clues you want to impart upon me? | ||
| bsdz | ah right | ||
| dalek | tracwiki: v5 | coke++ | Deprecation | ||
| tracwiki: trac.parrot.org/parrot/wiki/Deprec...ction=diff | |||
| shorten | dalek's url is at xrl.us/ben6bf | ||
| pmichaud | PerlJam: not beyond what we might've discussed last time. | ||
| PerlJam | okay | 15:51 | |
| pmichaud | but look at the goal-matching parser for ideas about how to do the parsing | ||
| that part should be easier now. | |||
| speaking of which, I need to fix that. | |||
| PerlJam | "the goal-matching parser"? | ||
| pmichaud | That, and synopsis 5. | ||
| Tene | ~ | 15:52 | |
| pmichaud | oh. | ||
| goal matching: '(' ~ ')' <expression> | |||
| PerlJam | oh, yes. I don't really have a term for that in my head :) | ||
| bsdz | ah okay. i'll take a look at synopsis 5 | ||
| pmichaud | I call that the goal-matching syntax. | ||
| bsdz: my synopsis 5 comment was for PerlJam (but you could look there, yes) | |||
| bsdz in: | 15:53 | ||
| token return_identifier_list { | <identifier> {*} #= single | '[' <identifier> [',' <identifier> ]* ']' {*} #= multiple | |||
| } | |||
| argh | |||
| bsdz | yep - i admit it's not elegant ;-) | ||
| pmichaud | if the parser takes the 'single' path, then $<return_identifier_list>[0]<identifier> will be a Match object | ||
| if the parser takes the 'multiple' path, then $<return_identifier_list>[0]<identifier> will be an Array of Match objects | |||
| bsdz | yes i think i was getting Capture when i used dumper on the first. | 15:54 | |
| pmichaud | thus @($<return_identifier_list>[0]<identifier) will give you different results depending on which path was taken. | ||
| so to force it to be an array in both cases | |||
| use | |||
| | <identifier>**{1} {*} #= single | |||
| then in the action, @($<return_identifier_list>[0]<identifier>) will always be an array of Match objects | 15:55 | ||
| (that you can loop over) | |||
| PerlJam | bsdz: that would simplify your action for return_identifier_list too | 15:56 | |
| bsdz | seems to give a "Method 'list' not found for invocant of class 'ResizablePMCArray'" | ||
|
15:57
Psyche^ joined
|
|||
| pmichaud | oh... | 15:57 | |
| right | |||
| in that case, you also don't need the @(...) | |||
| dalek | rrot: r37944 | pmichaud++ | trunk/src/ops (2 files): [lex]: Add find_caller_lex opcode for getting lexicals from callers' scopes. |
||
| pmichaud | it's just for $<return_identifier_list>[0]<identifier> { ... } | ||
| (because it's already an array) | |||
| bsdz | doh - sorry | 15:58 | |
| does appear to be working as I expect now even with out the **{1} modifier. hmm :/ are there any more docs on that modifier syntax - looks very handy? | 15:59 | ||
| thank a lot btw :) | |||
| pmichaud | that's just a quantifier | 16:00 | |
| same as **{1..4} # match 1 to 4 times | |||
| the use of the quantifier forces it to be an array of matches instead of just a match | 16:01 | ||
| bsdz | of course! i've think i've been looking at too much other stuff today | ||
| thanks again | |||
|
16:18
schinkelm joined
16:30
AndyA joined
16:31
Khisanth joined
16:45
braceta joined
16:53
AndyA joined
16:54
jrockway joined
|
|||
| pmichaud | #parrotsketch in ~90 | 17:01 | |
|
17:12
darbelo joined
|
|||
| PacoLinux | make spectest now 19m12.009s :) | 17:16 | |
|
17:16
acajou joined
17:19
allison joined
17:22
particle1 joined
|
|||
| Coke | pmichaud: did you run 'make opsrenumber' ? | 17:22 | |
| (don't do that.) | |||
| Coke moves to email on that one. | 17:26 | ||
| PerlJam | Coke: given the "don't do that" nature of it, it sounds like someone should make it say "Don't! If you *really* want to ..." by default. (assuming it's a useful tool for someone) | 17:29 | |
| Coke | PerlJam: a ticket has already been opened on this. | ||
| ISTR that kid51 is working on it. | |||
| PerlJam | cool. | ||
| Coke | not that particular item, but "why does opsrenumber suck in a post 1.0 world." | 17:30 | |
|
17:32
eternaleye joined
|
|||
| PerlJam | well, still cool | 17:33 | |
| Tene | purl: parrotsketch? | 17:43 | |
| purl | parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch | ||
| Tene | ah, next hour | ||
| cotto | Coke, (wrt tt #543), the duplicate copyright test passes for me. | 17:44 | |
| Do you have any idea why it'd pass for me but not you? | 17:45 | ||
| Infinoid | Coke: I think I offered previously to rewrite opsrenumber.pl to be as non-invasive as possible... that offer still stands :) | 17:48 | |
| cotto | it seems that your machine dtrt | ||
| dalek | rrot: r37945 | chromatic++ | trunk/docs/project/branching_guide.pod: [docs] Updated references to svn.parrot.org from svn.perl.org. |
17:56 | |
|
17:56
chromatic joined
|
|||
| pmichaud | I did do opsrenumber, yes. | 17:57 | |
| If that's an oops, I need to know what the correct procedure is now. | |||
| dalek | rrot: r37946 | chromatic++ | branches/headercleanup: Created branch to clean up headers and move code into subsystem directories |
17:59 | |
| Coke | pmichaud: there's a ticket about it in trac. ISTR that kid51 was working on it. | 18:05 | |
| pmichaud | I also replied to list message (just now) | ||
| Coke | my concern being that doing a renumber now makes any future PBC migration hard. | ||
|
18:05
gryphon joined
|
|||
| NotFound | hi | 18:05 | |
| Coke | (even though we're not doing that right now) | ||
| dalek | rrot: r37947 | moritz++ | trunk/docs/book/ch02_getting_started.pod: [docs/book] delete reference to snapshots that are 404s now |
18:06 | |
| Coke | NotFound: namaste | ||
| pmichaud | right, I was under the impression that we're not yet too concerned with ops numbering | ||
| Coke | pmichaud++ | ||
| no, but there's no sense chumming the water. | |||
| pmichaud | So, should I revert+fix ops.num, or leave it for now? Either way is likely to require realcleans. | 18:07 | |
| moritz | do we still do cpan releases? If not, ports/cpan/pause_guide.pod could go away | 18:09 | |
| cotto | Coke, which perl are you running? | ||
| chromatic | I believe the biannual releases will go on the CPAN. | ||
| particle- | that's my recollection | ||
| moritz | chromatic: thanks | ||
| Coke | cotto: 5.10 | 18:10 | |
| "what chromatic said." | |||
| 1.0 is already on the cpan. | |||
| cotto | I'm on 5.8.8. The copyright test passing on my system might be due to that. | ||
| Coke | cotto: that's freaky. | 18:11 | |
|
18:11
barney joined
|
|||
| cotto | Coke, it's just a guess. | 18:11 | |
|
18:12
gryphon_ joined
|
|||
| cotto | If I remove the $ from the end of $copyright_parrot, it dtrt | 18:12 | |
| allison | Coke/pmichaud: yes, we're still doing ops renumbering | ||
| pmichaud | yay. I don't have to undo, then? | ||
| allison | pmichaud: aye | ||
| pmichaud | yay * 2. | 18:13 | |
| Infinoid | chromatic: Santtu++ has posted some patches to TT #18 to fix the nonexecutable-heap issue on selinux/fedora. He followed a different approach which reasonable to me, but I was wondering if you had any feedback before I started committing that stuff. | ||
| chromatic | I thought (but am not arguing for) we were going to renumber ops only once, right before the 1.4 release. | ||
| Infinoid, I haven't browsed them yet. I will. | |||
| Infinoid | When we discussed this issue, you suggested fixing up ManagedStruct with a custom free() pointer, which I failed to do. He just added a JitCode PMC instead, which seems pretty clean | ||
| Thanks | 18:14 | ||
| Coke | allison: I think that's going to make it much harder to do retroactive bytecode translation, which I know we're not doing now, but would be nice to have. | ||
| chromatic | I'm not a huge fan of adding yet another special purpose PMC, but... it does look cleaner. | ||
| Then again, I suspect that UnManagedStruct might need a custom free() pointer anyway sometimes. | 18:15 | ||
| Infinoid | He's got some further plans regarding splitting jit buffer allocation into "write" and "executable" phases, which apparently will make selinux happier. But I wanted some review before he got too far into that, to avoid wasted effort | ||
| allison | Coke: yes, we do ops renumbering on a deprecation cycle | ||
| Coke: and support for backward compatibility also happens on the deprecation cycle | 18:16 | ||
| Infinoid | I think the problem with the custom free() pointer approach is that munmap() required the right "size" argument, which my patch wasn't doing correctly. So it's more than just the pointer to the free() function itself | ||
|
18:16
jhorwitz joined
|
|||
| Coke | allison: what is the point of renumbering the ops, though? | 18:16 | |
| Infinoid | If you still think it's better to put all of that stuff in UnmanagedStruct, I'll see if I can rework it | 18:17 | |
| allison | Coke: but, when we have a deprecation notice in (which we do for 1.4) there may be several changes between two supported releases | ||
| Coke | I'm arguing specifically about future attempts to translate bytecode. | ||
| chromatic | Infinoid, this seems like one example of a case where we need a C function to free() memory allocated from C. I can imagine that NCI bindings may have to do the same thing too. | ||
| Coke | (where we'll have to now remap a ton of opcodes that we would otherwise be able to just leave alone) | 18:18 | |
| allison | Coke: renumbering is for code sanity, and we're still adding and removing substantial numbers of opcodes | ||
| Coke | s/a ton of/pretty much every/ | ||
| Ok. -1 from me. | |||
| allison | Coke: right, but we're not going to retroactively do bytecode translations for all previous versions of bytecode | ||
| Coke | not now. =-) | 18:19 | |
| allison | Coke: when we have support for multiple versions of bytecode, then we'll establish a bytecode policy that works with the implementation | ||
| Coke: right now, we'd just be making a guess at what policy might possibly work with the future implementation | 18:20 | ||
| Infinoid | chromatic: ... as opposed to letting the object expire so the GC/destroy function can do it? I'm not sure what you mean. | ||
| allison | Coke: and the guess is just as likely to be wrong as right | ||
| Coke | Yes. I'm fairly certain that renumbering ops will be more painful in that regard than not. I'm willing to stand by that guess. | ||
| but it doesn't matter. | |||
| allison | Coke: so we might as well stick with the policy that works for the current implementation | ||
| chromatic | Infinoid, if Parrot didn't allocate the memory (from a GC pool), Parrot won't be able to destroy it. | 18:21 | |
| Coke | allison: respectfully disagree, but ok. | 18:22 | |
| Infinoid | So you're arguing for a more general approach. | ||
| allison | Coke: fair enough :) | ||
| chromatic | Right. I think we have to solve that problem generally anyway. | 18:23 | |
| Infinoid | I'm going to have to add a buffer-size attribute to UnmanagedStruct to get it working, I think that's the only implementation detail worth noting. | ||
| I suppose other allocation models might have their own weirdnesses. But that's just handwaving, not really an argument, so I'll JFDI. | 18:24 | ||
| chromatic | If we're clever, I don't think we even have to add that.... | ||
| Infinoid | Well, my current patch fails because munmap() doesn't get the right size parameter. I'm certainly open to ideas. | ||
| (This kind of thing makes me wish C had closures.) | |||
| chromatic | We need to store it somewhere, but in theory we *could* store the size as the first four bytes of the mmap()ed chunk. | 18:25 | |
| dalek | rrot: r37948 | NotFound++ | trunk/compilers/imcc/parser_util.c: [imcc] fix a C warning/C++ error |
18:26 | |
| Infinoid | I suppose so. I'd worry about alignment, but hey, if someone needs strict alignment they can do it themselves. | ||
| chromatic | Presumably anything returned from mmap() will be aligned properly to start. | 18:28 | |
| #ps in 2 | 18:29 | ||
| Infinoid | Yeah, it's still dword-aligned. We won't be using this interface for I/O buffers so we don't have to care about page alignment, either. So I think we can make it work | ||
| That said, it's going to make the two-staged (write+noexec -> readonly+exec) allocation model Santtu wants ... interesting | 18:31 | ||
| chromatic | How so? | ||
| Coke | allison: reopened the ticket regarding opsrenumber so that jim can revert the tests back to the way they were. | 18:32 | |
| allison | Coke: ticket #? | ||
| Coke | trac.parrot.org/parrot/ticket/489 | 18:33 | |
| (in which tests failed, I complained about the tests in light of my stance here about ops renumbering, and jim fixed the test to compensate for my complaint.) | |||
| I suggested to him that perhaps he revert the test change to the way it was. | |||
| allison | Coke: appears to be related to trac.parrot.org/parrot/ticket/469 (poor Jim, serving two masters) | 18:35 | |
| Infinoid | chromatic: If we have two kinds of buffers with different mmap flags, I'm guessing it would be nice to be able to store the current status of that somewhere. | 18:36 | |
| Coke | That's what he gets for listening to me. | 18:37 | |
| Infinoid | But this can wait until after #ps | ||
| Coke | is that now? | ||
| chromatic | Sounds almost like defining a struct for JIT and storing that pointer in the PMC. | ||
| Coke | irc logs? | ||
| purl | irc logs are nothing like http logs... very low overhead and storage | ||
| Coke | irclogs? | ||
| purl | somebody said irclogs was irclog.perlgeek.de/parrot/today or see also: infrared clogs | ||
| moritz | also s/parrot/parrotsketch/ | 18:38 | |
| dalek | rrot: r37949 | chromatic++ | branches/headercleanup (13 files): Moved src/interpreter.c and src/interp_guts.h into src/interp/. |
18:39 | |
| chromatic | Hm, we could get down to 550 open tickets by the next release. | 18:45 | |
| Coke | 258+378 | ||
| purl | 636 | ||
| Coke | no we can't. =-) | ||
| I could see 600. | 18:46 | ||
| chromatic | A lot of those 378 can just go away with a bit of review. | ||
| One ticket closed per committer per day is 140 tickets. | 18:47 | ||
| Coke | I don't see it happening. (a lot of that low hanging fruit has already been plucked from RT) | ||
| cotto | I'm sure a lot of them can die once the right person looks at them, but that's the trick. | 18:49 | |
| chromatic | Exactly. | ||
| Infinoid | pmichaud: Apologies, I haven't yet found tuits for figuring out why your icu patches cause segfaults here. | ||
|
18:52
Santtu joined
|
|||
| Infinoid | Santtu: [11:37] <@chromatic> Sounds almost like defining a struct for JIT and storing that pointer in the PMC. | 18:57 | |
| (the ManagedStruct PMC, he means) | |||
| Coke | chromatic: when merging that back to trunk, watch out for changes to renamed files. | 18:58 | |
| chromatic | Coke, I'm fairly confident that these files are stable enough that that won't hurt too much. | 18:59 | |
| Infinoid | Santtu: When you start working on your two-stage jit buffer allocation model, what kind of additional state will you need to keep? The JIT state struct seems like a good idea, just because the amount of state may grow | 19:00 | |
| Santtu | I'm not sure how JIT code is shared between interps/threads, but if the interp clone routine does a copy of globals, including the _XJIT_ from NCI then the JIT code itself needs to be copied too. | ||
| Coke | chromatic: did you not run mk_manifest on purpose to make the merge simpler? =-) | ||
| Infinoid | Right, so you'll need a custom clone as well as custom destroy to get this working with ManagedStruct | ||
| Coke | chromatic: also, you shouldn't be renaming things in ports/cygwin, I wager. | 19:01 | |
| since those refer to the 1.0.0 that ws. | |||
| "was" | |||
| Santtu | And the safe method to do JIT code is to first get rw page, write code to it, then change it to rx. So exec-capable page allocation is three-step process, first get writable page, then write stuff to it, then mark it read-executable but without write permissions. | ||
| chromatic | Ugh. | ||
| Infinoid | (a shallow copy won't work for jit buffers... they will just copy the jit structure, not the mmapped buffer) | ||
|
19:01
Whiteknight joined
|
|||
| Coke | you could always just renaming /everything/ in the branch and not merge those files back. | 19:01 | |
|
19:02
rob joined
|
|||
| Santtu | And I think you'd really want to share NCI JIT pages between interpreters, since they're more or less static. I'm not familiar with that part of parrot so I don't know whether PMCs can be shared between interps or not. | 19:03 | |
| chromatic | They can. | ||
| Santtu | Global GC? | 19:04 | |
|
19:04
Theory joined
|
|||
| tewk | Santtu: do we have to grab a whole page per NCI jit? NCI jits are usually pretty short. | 19:05 | |
| chromatic | We mark the shared PMC as shared, so child interpreters don't try to free it. | ||
| Santtu | tewk: Yes. mprotect works on a page level. | 19:06 | |
| Infinoid | If you differentiate between writable pages and executable pages, you'd have to flipflop the permission bits as you try to write more to the buffer, and somehow prevent other threads from executing anything in the buffer during that process | ||
| tewk | I knew NX was going to be a pain in the butt | 19:07 | |
| Santtu | So it is 4k or 8k typically. It'd be useful to at some point walk the NCI code through and coalesce multiple NCI stubs into a single page, but that is premature optimization at this point, since I'd just want to get the JIT code working even on selinux-enabled box (which it won't do without mmap+mprotect changes.) | ||
| Infinoid | selinux prevents RWX pages, right? | 19:08 | |
| Santtu | Yeah. Silently. You just run into segv. | ||
| Infinoid | Beautiful. | ||
| purl | it has been said that beautiful is a love thing | ||
| tewk | thats really inefficient | ||
| Santtu | RWX gets downgrated into RX, then you try to write and ... | ||
| tewk | Well I guess we could calesce jits during a gc op and fixup NCI PMCs to point to the new coalesced versions. | 19:10 | |
| Santtu | NCI code is PIC, so you could just generate N stubs and keep count until you've got a full page, then go back and copy those over to a new page and update the NCI stub pointers. | ||
| Infinoid | Hmm. You'd not only have to prevent other threads from executing within the buffer while you're appending to it, you'd also have to detect when other threads have already called through the buffer to something that hasn't returned yet | ||
| That sounds painful | |||
| Santtu | JIT typically is :-) | 19:11 | |
| chromatic | Hooray for not maintaining our own JIT! | ||
| Infinoid | Is LLVM on our roadmap? | ||
| (or something similar, I dunno what's out there) | |||
| Santtu | I've worked on a system that JITted stuff into kernel-mode code, that'd be fun, single incorrect insn and panic :-) | 19:12 | |
| particle- | it's on our list of gsoc projects :) | ||
| Santtu | anyways, there's two unrelated problems: unused memory on underfilled pages, and jit-specific pmc vs. extending managedstruct pmc to store the JIT pages. | 19:13 | |
| The first one has no nice or simple solution, since you do end up with page coalescing on concurrent threads of execution with nice liveness issues related to call stacks. | 19:14 | ||
| Infinoid | For ManagedStruct to work, you'd need custom destroy and custom clone methods. I'm starting to think a subclass would be cleaner than a bunch of function pointers in attrs | ||
| but ... the custom destroy and custom clone methods are the *only* requirements I can think of, from the jit buffer perspective. Does it need to be a subclass of ManagedStruct at all? | 19:15 | ||
| chromatic | I'm not sure what a subclass offers, in that case. | 19:16 | |
| Infinoid | it offers a cleaner way to override destroy() and clone(), that's all. | ||
| chromatic | Sounds more like a ManagedBuffer. | 19:17 | |
| Santtu | I'd like to point also that since ManagedStruct subclasses UnManagedStruct, it comes with a lot of methods that don't make sense with jit code. If you'd ever later want to hand PMCs holding JIT code to PIR level for processing (peephole optimization, anyone?) you could break a lot of things quickly.. | ||
| Infinoid | or ManagedPointer | ||
| chromatic | We already have a CPointer PMC, but it probably doesn't do the right thing here. | 19:18 | |
| Santtu | ManagedPointer, then subclass JitCode from that for the specific clone/destroy? | ||
| dalek | tracwiki: v145 | allison++ | ParrotRoadmap | 19:19 | |
| tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff | |||
| shorten | dalek's url is at xrl.us/ben67p | ||
| chromatic | Rather than adding two PMCs, let's stick with one until we need to generalize more. | ||
| Santtu | Is the solution then to generalize ManagedStruct more and add custom clone/free handlers (function pointers)? | 19:20 | |
| allison | CPointer is very simple and could certainly have more features added (rather than making another PMC that does mostly the same things) | ||
| chromatic | I'd rather see CPointer expanded, if we can make it work. | 19:21 | |
| Hm, src/interp/interpreter.c (nee src/interpreter.c) has very little about interpreters in it. It mostly works on runcores and dynops. | |||
| Infinoid | We can make ManagedStruct or CPointer work. We'd just be putting most of the jit-specific stuff into a jit-specific structure, rather than having a jit-specific pmc. Which one makes a better base? | 19:22 | |
| Santtu | I don't think JIT code needs really anything except a place to stash pointer + size info, plus custom destroy and clone handling. I would prefer it to have *nothing* else available, since the need is very specific. | ||
| Infinoid | We have two patches that do this in different ways... I'm willing to adapt the stuff we already have to play nicely with whatever we decide here | ||
| Santtu | What would be the semantics for ManagedPointer or ManagedMemory be? I noticed that there's already sockaddr PMC that doesn't really do much more than wraps a known struct (sockaddr_in) and handles its allocation/destruction, and nothing more? | 19:26 | |
| allison | chromatic: src/interp/interpreter.c sounds like a candidate for a file-rename | 19:27 | |
| Whiteknight | allison: agreed | ||
| chromatic | Oh, it's already on my list. | 19:28 | |
| I'm going to move its functions into src/ops/dynops and src/runcores/foo.c (better name welcome) and there'll be nothing left. | |||
| allison | chromatic: src/ops? | 19:29 | |
| src/ops is just for *.ops files and ops.num, not for general C functions | |||
| +1 on src/runcores | 19:30 | ||
| chromatic: if it really is about calling opcodes, then src/call/ops.c might make sense | 19:31 | ||
| chromatic | Where else would you stick files related to the ops subsystem? | ||
| allison | (it already exists) | ||
| chromatic | Already existing is a plus. | ||
| Most of these functions are about registering and initializing ops. | |||
| allison | then maybe src/runcores/core.c | 19:32 | |
| or src/call/core.c | |||
| Infinoid | Santtu: Sockaddr is a placeholder for now until we start getting a lot smarter about sockaddr_in, sockaddr_inet6, etc. It's support infrastructure for the (similarly new) Socket PMC | ||
| cotto | eternaleye, I recommend you ignore docs/pmc.pod. | 19:33 | |
| allison | chromatic: the core.c file in each subsystem contains the pieces that need to be initialized in the interpreter for the subsystem to run | ||
| cotto | I'm going to rewrite and update it as soon as I get rid of the PMC_x_val macros. | ||
| If it'd be helpful to you, I could do it sooner. | |||
| Infinoid | Santtu: it sounds like we're going to wrap all the needed functionality into ManagedStruct or CPointer directly. They both have a lot of extra stuff we don't need, but if we're actually using it to store a pointer to a JIT structure, ManagedStruct seems a little more appropriate than CPointer does | 19:34 | |
| chromatic | I prefer src/runcores/core.c | ||
| They're not really about calling things. | |||
| particle- | (src/runcores/core.c)++ | ||
| allison | chromatic: makes sense | 19:35 | |
| Infinoid | Santtu: Does that seem reasonable to you? I can rework the patch that's already up there, and if you have any other outstanding changes, I can adapt them as well | ||
| Santtu | infinoid: If so, then should jit-specific stuff be subclassed from managedstruct (unmanagedstruct->managedstruct->jitcode), or have custom free/dup handlers (like ManagedStruct_free_ptr_t in your 02 patch in TT#18? | 19:36 | |
| cotto | tewk, ping | ||
| Infinoid | It sounds like we want custom free/dup handlers, an extension of the 02 patch. | 19:37 | |
| But we also want to use it in a slightly different way, with an nci buffer struct sitting between the ManagedStruct object and the actual mmap buffer | |||
| I am a little nervous about adding custom clone and destroy methods that can't be tested directly from PIR space, does anyone have suggestions about that? | |||
| tewk | cotto: yes | 19:38 | |
| cotto | tewk, will you have the tuits to look at TT #365 within the next week or so? | ||
| Santtu | Ummm... why? There's already PMC subclassing, why use function pointers when just subclassing the PMC you could do all without them? | ||
| tewk | I just glanced at it, dont have a co copy of parrot who wrote " /* TT #365 - Some i386 jit code depends on this. If t/pmc/nci.t " | 19:39 | |
| NotFound | Infinoid: adding methods to set them to nci functions. | ||
| Infinoid | Santtu: | 19:40 | |
| [11:14] <@chromatic> I'm not a huge fan of adding yet another special purpose PMC, but... it does look cleaner. | |||
| [11:15] <@chromatic> Then again, I suspect that UnManagedStruct might need a custom free() pointer anyway sometimes. | |||
| So I think the motivation is just to be able to reuse this infrastructure later | |||
| cotto | tewk, that's fine. I just noticed that Whiteknight++ gave it his +1. | ||
| Whiteknight | I need to do more testing, but it looks sane | 19:41 | |
| NotFound | I'd like to have a way to set a custom free, the Xlib module will benefit from that. | ||
| Infinoid | tewk, Whiteknight, the reason I wanted more review is because I'm not familiar with JIT at all, and wasn't sure I was handling temp_calls_offset correctly | 19:42 | |
| NotFound | And be able to set it from pir, to a function imported with nci | ||
| Whiteknight | Infinoid: Okay, I'll double-check that for you | ||
| Infinoid | and whether the stuff at args_offset was already set up properly, and all of that | 19:43 | |
| I mean, I guess it had to be if it runs at all. But extra eyeballs can't hurt | 19:44 | ||
| tewk | Infinoid: I'll try to take a look tonight, do all the pmc/nci.t tests pass? if so its probably safe. | ||
| Santtu | The problem with JIT code is that you must keep hold of the size information and pass it to the free routine. That is *really* exceptional -- no other allocator interface has that requirement (until you go to kernel-land, but that's another issue). So trying to keep stuff generalized based on that requirement might give a does-not-really-fit-any-size solution.. | ||
| cotto | tewk, all of t/pmc/nci.t passes | ||
| Infinoid | Amazingly enough, they seem to. | 19:45 | |
| tewk | Thats a good sign. | ||
| Santtu | (okay apart from apache-style region allocators, but interfacing with them isn't probably be solvable with the size parameter either) | ||
| NotFound | Santtu: c++ allocators come to mind | 19:46 | |
| Infinoid | Santtu: True. But the jit struct saves us from having to add size handling to ManagedStruct directly | 19:47 | |
| (and also saves us from having to worry about how many arguments the free function takes) | |||
| cotto | Whiteknight, lmk when you've checked. I'm ready to commit whenever. | ||
| Whiteknight | I'm not going to get to it till tonight. I'll send you a msg or somethign when I do | ||
| Infinoid | In this case, we're just "managing" the jit struct, which seems reasonable enough | ||
| cotto | Whiteknight, ok. | 19:48 | |
| Santtu | How'd you make region allocator work with ManagedStruct? | 19:49 | |
| Infinoid | You mean in mod_parrot? I have no idea | 19:50 | |
| jhorwitz perks up | 19:51 | ||
| Coke | chromatic: have fun re-headerizing. =-) | ||
| chromatic | No kidding. | ||
| Coke | headerizer sucks, btw. seems to be a custom run based on your build. | 19:52 | |
| dalek | tracwiki: v1 | allison++ | NamespaceTasklist | ||
| tracwiki: trac.parrot.org/parrot/wiki/Namesp...ction=diff | |||
| tracwiki: v10 | allison++ | IOTasklist | |||
| shorten | dalek's url is at xrl.us/ben7cd | ||
| dalek | tracwiki: trac.parrot.org/parrot/wiki/IOTask...ction=diff | ||
| Santtu | infinoid: With ManagedStruct specifically, since region allocator free routine takes two pointers (region + memory within the region). | ||
| shorten | dalek's url is at xrl.us/ben7cf | ||
| Coke | (so if you build with jit, you headerize more). | ||
| Still beats the alternative. | |||
| chromatic | Rather than saying it sucks, let's call it not yet complete. | ||
| Infinoid | Santtu: I'm not sure we've ever tried to wrap a ManagedStruct around an apache region-allocated object. I think jhorwitz is the mod_parrot author, so if anyone has tried, it'd be him | 19:53 | |
| Santtu | Since JIT code custom free routine needs size parameter, and region allocators need additional pointer, that's not really one-size-fits-all custom callback free? | ||
| jhorwitz has done many things he's not proud of | 19:54 | ||
| Infinoid | jhorwitz: Don't worry, we love you anyway. | ||
| jhorwitz | that's why i keep coming back | ||
| particle- | jhorwitz: ...do you work out? | ||
| jhorwitz | ah particle, the memories are still fresh | 19:55 | |
| Santtu | e.g. the 02 patch has "typedef void (*ManagedStruct_free_ptr_t)(void*, size_t)" type, for region allocators it'd need be (...)(void*,void*). | ||
| dalek | tracwiki: v63 | allison++ | WikiStart | ||
| tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff | |||
| shorten | dalek's url is at xrl.us/ben7cy | ||
| jhorwitz | Infinoid: mod_parrot uses UnManagedStruct only, letting NCI code access any Apache-specific data | 19:56 | |
| Santtu | Maybe it should really be (*)(PMC*) and let the custom free routine pull out necessary bits from the PMC? | ||
| Infinoid | Santtu: Yeah. My current thinking is void (*)(void*), but we pull the additional stuff from within the void* | 19:57 | |
| jhorwitz: Do you have to worry about freeing the data, or does apache do that internally? | |||
| jhorwitz | i was very careful to make sure that data in apache structures is allocated by apache, and parrot data is allocated by parrot. so for apache structures, apache will free the data when its pool is destroyed. | 19:59 | |
| Infinoid | Ok, so you were able to sidestep our issue. :) | ||
| jhorwitz | i didn't read back far enough to understand the issue, but i'm glad i don't have to now. :) | ||
| Santtu | infinoid: If the PMC_data(self) field contains pointer to struct with meta-information, then that totals 3 separate allocations for each NCI stub (JIT code, PMC and meta-structure). Is memory fragmentation an issue? | 20:00 | |
| jhorwitz: How does mod_parrot ensure that apache pool references are not referenced after the pool is destructed (after request is finished)? Or is it a non-issue by requiring that the user must not hold to references to pool memory? | 20:02 | ||
| Infinoid | Memory fragmentation an issue? Have you *seen* how many GCable elements we throw away on average per pir op? :) | ||
| Santtu | JIT code stays around forever.. (almost) | 20:03 | |
| PerlJam | pmichaud: ping | ||
| Santtu | .. and doesn't move around .. if it is smack in the middle of some page then the allocator cannot coalesce it .. | ||
| (or 2^N region) | |||
| jhorwitz | Santtu: verifying something..... | ||
| PerlJam | (or anyone), how do I visually inspect the structure of a match object? Isn't there a way to dump it to stdout? | 20:04 | |
| Santtu | .. and there's probably a lot of JIT code, from both NCI and I guess eventually from jitting actual PIR code too (?) | ||
| Infinoid | We don't have a compacting GC yet | ||
| Yeah. That goes to your other issue of what to do with partially filled jit buffers | 20:05 | ||
| Santtu | Not GC, the PMC is the only GCable object there. JIT code and meta-structure would come directly from system allocator (well, mmap + system allocator). Okay, the mmap page isn't an issue since it is handled by system. On UNIX. On windows it would be from heap... | ||
| I'd think that Many Objects ĆĀ Many Small Allocations Ć Long Lifetime => Slab/Region Fragmentation :_) | 20:06 | ||
| jhorwitz | Santtu: it's possible that PIR/HLL code could hold onto an [APR;Pool] object that references a destroyed pool. | ||
| Santtu | jhorwitz: But is that user's problem? E.g. "don't do that"? | 20:07 | |
| pmichaud | PerlJam: pong | ||
| PerlJam: you can try _dumper(match) | 20:08 | ||
| PerlJam | do I have to load_bytebode 'dumper.pir' or something? | 20:10 | |
| ah, so I do. nevermind | |||
| (I had PGE/Dumper.pir, but not dumper.pir) | |||
| Infinoid | Santtu: I'm not sure what you're trying to say, but I don't think the additional struct is an issue | ||
| pmichaud | PerlJam: also, you might want to know that PGE understands 'target'=>'pir' and 'target'=>'pge::exp' and 'target'=>'parse' | 20:11 | |
| jhorwitz | Santtu: yes, but it's unlikely to happen anyway. most apache pools you would use will be destroyed when the request ends, along the lexical variables referencing them. now, if you referenced a short-lived pool as a persistent global, then you're digging your own grave. | ||
| pmichaud | very useful for debugging changes to Perl6Regex | ||
| Santtu | Anyway. Should the JIT in NCI ManagedStruct just use some struct Jit_NCI_Bridge allocated and stuffed to PMC_data and reference that in custom free/clone? | ||
| jhorwitz: agree on that | |||
| chromatic | That seems the least invasive right now. | ||
| PerlJam | pmichaud: when I do mob.'new'(mod, ...) Do I just get a new "empty" match object, or is it cloned from the original and then morphed into whatever I've asked for in the ... portion? | 20:13 | |
| s/mod/mob/ | |||
| Santtu | And for the fragmentation.. NCI could chain JIT allocations and keep a running count of the sizes, and at suitable point coalesce multiple pages, replace the _XJIT_ references (to sub-page addresses) and let the GC handle the no-longer-referenced old NCI JIT PMCs. | ||
| pmichaud | PerlJam: .'new' returns a new Match object | 20:14 | |
| its .from is set to the current position of whatever was passed to it, and it's set as a failed match | |||
| PerlJam | pmichaud: how do I clone one? | ||
| pmichaud | I don't know that you clone one. You shouldn't need to clone one. (more) | ||
| oh, the new Match object has its target already set to the same target as the mob you passed in. | |||
| it's basically a clone with updated .from and .to | 20:15 | ||
| PerlJam | target, from and to ? or just target and from? | ||
| pmichaud | (.to being set to a value that causes the Match to act like a failed match) | ||
| (I think .to is set to -1 ) | |||
| a failed Match is one where .to < .from | |||
| PerlJam | okay, thanks | 20:16 | |
| moritz | so you don't support reversed Match objects? ;-) | ||
| pmichaud | I do not. | ||
| *something* has to be straight>forward< somewhere! | 20:17 | ||
| :-P | |||
| moritz | lol | ||
| PerlJam | Just following the precedent of the arrow of time? :) | 20:18 | |
| pmichaud | It's a darn good precedent, and anyone who disagrees can go back and fix it. | ||
| which, iirc, Damian did choose to do at last year's OSCON keynote :-P | 20:19 | ||
| PerlJam | When you're a Q, time doesn't really matter. | 20:20 | |
| moritz | (that conversation above would be worth submitting to bash.org - then again I think that most readers wouldn't appreciate its humor) | ||
| pmichaud | my humor is often underappreciated. | ||
| particle- | very funny. | 20:21 | |
| purl | Thanks, I'm here all week. | ||
| rg | moritz: you can put it there: trac.parrot.org/parrot/wiki/ParrotQuotes | 20:23 | |
| moritz | rg: thanks | 20:24 | |
| dalek | tracwiki: v8 | moritz++ | ParrotQuotes | 20:28 | |
| tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff | |||
| shorten | dalek's url is at xrl.us/ben7hc | ||
|
20:34
sjn joined
|
|||
| bacek | good morning | 20:36 | |
| Coke: pong | |||
|
20:36
Tene joined
|
|||
| bacek hates DST... | 20:36 | ||
| Coke | bacek: yes, I've seen your CLA. | 20:37 | |
| bacek | Coke: that's good :) | ||
| Coke | Infinoid: were you mentoring? | ||
| I can't see how to add commit bits. =-) | 20:38 | ||
| Infinoid | Coke: Yes, I can mentor | 20:39 | |
| cotto | Coke, I'd also be interested in helping mentor the person who's doing libdecnumber integration. | 20:40 | |
| chromatic | Is there a Configure.pl option only to regenerate makefiles? | 20:43 | |
| Coke | I'm referring to mentoring a new committer, not mentoring a GSOC candidate. | 20:46 | |
| if you're interested in that, sign up with dukeleto. | |||
| chromatic: you could try to run just that step. | |||
| I would just rerun the whole damn thing. | |||
| bacek: do you have a trac id? | 20:47 | ||
| bacek | Coke: yes, "bacek" | 20:48 | |
|
20:48
acajou left
|
|||
| cotto | dukeleto, ping | 20:48 | |
| chromatic | Yeah, I know some people like to make realclean then reconfigure and make the whole thing for every commit, but one of the reasons for maintaining a makefile is so that you don't have to do that whole thing every time. | ||
| Coke | chromatic: like to? absolutely not. Want to fix configure? not that either. | 20:50 | |
| we could probably rip out 70% of configure and put it into makefiles. | |||
| moritz | usually 'make' works pretty well for me | ||
| Coke | bacek, Infinoid: bacek is now a committer, which ISTR was approved last #ps. | ||
| Infinoid: usual caveats about your minion breaking anything. | 20:51 | ||
| Infinoid | bacek: please don't break anything, kthx :) | ||
| bacek | Infinoid: I'll try :) | 20:52 | |
| Coke: where I can find password for svn? | |||
| rg | bacek: same as trac | 20:53 | |
| Coke | bacek... did you try your trac id? =-) | ||
| bacek | Coke: not yet :) It's 7AM here and I'm little bit scared to commit anything at this time | 20:54 | |
| particle- | you can update credits | ||
| or add your name to release managers for some month this year ;) | |||
| bacek | particle-: Can it be post-2.0 release? :) | 20:56 | |
| Infinoid: I want to create "packfile_revamp" branch in svn. Any objections? | 20:57 | ||
| Infinoid | No objections | 20:58 | |
| bacek | Infinoid: ok. | 20:59 | |
| bacek reading "git svn --help" to understand how to do it | |||
| moritz | bacek: there's a branching guide somehwere in doc/ | 21:00 | |
| Infinoid | if it were me, I'd create it with svn and then do a fresh git-svn checkout of just the branch | ||
| But that's because I've never really figured out git-svn's branch handling. | |||
| chromatic | perldoc docs/projects/branching_guide.pod | ||
| bacek | chromatic: thanks | 21:01 | |
| Tene | Infinoid: just use -s or --stdlayout and svn branches become git branches. | ||
| moritz | I have also a git clone of parrot including all branches | ||
| hm, I would have searched for that in docs/dev/ | |||
| dalek | rrot: r37950 | chromatic++ | branches/headercleanup (6 files): Moved the other src/interp_*.c files into src/interp/, updating all references |
||
| Coke | chromatic: bah. I am juggling 10 branches here at work. | 21:03 | |
| chromatic | Yeah, but you're a mathematician. | 21:04 | |
| PerlJam | and a juggler apparently | 21:11 | |
| Coke is a juggler. Can only do 3-at-a-time, though. | 21:13 | ||
| Infinoid | (the rest are emulated using timeslices) | ||
| pmichaud | I can see why 10 is a problem, then. :-) | ||
| PerlJam | I can juggle 6 clubs ... if I have a partner sharing the load :) | 21:14 | |
| Coke | hurm. I could potentially do that, though I have no one to practice with. I sense a BOF. | ||
| dalek | rrot: r37951 | bacek++ | branches/packfile_revamp: Created branch for improving packfile*.pmc |
21:15 | |
| Infinoid | I'd like to learn that | 21:24 | |
| Don't all start throwing clubs at me at once tho. | |||
| Coke | I can teach you how to juggle like my dad taught me how to swim. | ||
| Infinoid can juggle 3, but hasn't tried any team stuff | |||
| dalek | rrot: r37952 | allison++ | branches/pcc_rewiring: Creating branch for refactoring calling conventions, rewiring the internals of pcc dispatch. |
21:28 | |
|
21:29
register joined
|
|||
| PerlJam | Infinoid: you can juggle 3 clubs? | 21:30 | |
| register | what is missing from bigint? | ||
| cotto | seen dukeleto | ||
| purl | dukeleto was last seen on #pdx.pm 7 hours, 10 minutes and 7 seconds ago, saying: register: yes? | ||
| cotto | seen dukeleto in #parrot | ||
| Infinoid | Yeah. Haven't practiced in a long time tho | ||
| bacek | "git svn dcommit" in action | 21:31 | |
| dalek | rrot: r37953 | bacek++ | branches/packfile_revamp/t/pmc/packfile.t: Remade t/pmc/packfile.t in pure PIR. |
||
| bacek | afk # morning duties: kids, breakfast, etc. | 21:32 | |
| Coke | I haven't done clubs. are there special clubs or can I use like lawn bowling pins? =-) | 21:34 | |
| dalek | rrot: r37954 | bacek++ | branches/packfile_revamp/t/native_pbc (6 files): Rebuild few t/native_pbc/*.pbc |
21:35 | |
| rrot: r37955 | bacek++ | branches/packfile_revamp/t/pmc/packfile.t: Simplify slightly packfile loading |
|||
| rrot: r37956 | bacek++ | branches/packfile_revamp/t/pmc/packfile.t: Move helper function to the end of file |
|||
| rrot: r37957 | bacek++ | branches/packfile_revamp/t/pmc/packfile.t: Factor out _filename function. It will be useful for testing on different platforms |
|||
| PerlJam | Coke: they're special enough. www.dube.com | ||
| rrot: r37958 | bacek++ | branches/packfile_revamp/src/packfile.c: Fill padding with zeros during pack |
|||
| rrot: r37959 | bacek++ | branches/packfile_revamp/src/packfile.c: Fill one more padding with zeros |
|||
| Coke | PerlJam: european or american? | ||
| rg | bacek: if you need some native_pbc files for big endian, just ask ;) | 21:36 | |
| Coke | holy #*(&. 41 bucks a PIN? | ||
| cotto | It's getting kinda branchy in here. | ||
| Coke guesses bacek is using git2svn. | |||
| bacek | rg: I definitely need them :) | ||
| PerlJam | Coke: theres are cheaper manufacturers. Generally the pros use dube though :) | ||
| Coke | PerlJam: ok. for practice, I'll check out something cheaper. =-) | 21:37 | |
|
21:37
Casan joined
|
|||
| Infinoid | bacek is importing the last week's worth of patches from github.com/bacek/parrot/tree/packfile_revamp, I imagine | 21:37 | |
| PerlJam | Coke: dube has various pricing too. Not sure how their cheaper clubs compare though | ||
| bacek | Infinoid: yes I am :) | ||
| rg | bacek: will you need special versions build from you branch or will trunk do? | 21:38 | |
| dalek | rrot: r37960 | bacek++ | branches/packfile_revamp/src/packfile/pf_items.c: Fill padding for stored cstring with zeros. |
||
| PerlJam | Coke: quality is kind of important though. Cheaper clubs are usually made from cheaper, hard plastic and they tend to hurt your hands after a while. | ||
| PerlJam | (that applies to dube as well as others) | ||
| rrot: r37961 | bacek++ | branches/packfile_revamp/t/pmc/packfile.t: Add test for Packfile_pack |
|||
| rrot: r37962 | bacek++ | branches/packfile_revamp/t/pmc/packfiledirectory.t: Rewrite t/pmc/packfiledirectory.t in PIR |
|||
| rrot: r37963 | bacek++ | branches/packfile_revamp/src/pmc/packfiledirectory.pmc: Propogate segment name on replacing old segment with new one. |
|||
| chromatic | Cheaper club is cheaper? | ||
| rrot: r37964 | bacek++ | branches/packfile_revamp/t/pmc/packfiledirectory.t: Remove disabled check for replacing old segment with new one. |
|||
| PerlJam | chromatic: redundancy is your friend :) | ||
| Coke, Infinoid: so ... if I make it to YAPC this year, should I bring my clubs so we can juggle? :) | 21:40 | ||
| Coke | PerlJam: if I was serious about it, I'd spend $$. | ||
| PerlJam | (I haven't seriously juggled in a long while though) | ||
| Coke | PerlJam: if I go. note that I am currently merely a balljuggler. | ||
| PerlJam: www.amazon.com/Juggling-Club-Set-Pa...amp;sr=1-8 ?? | 21:41 | ||
| shorten | Coke's url is at xrl.us/ben7uk | ||
| Infinoid | Coke: If I make it to YAPC, I'd love to. (Note: I've yet to ever make it to a YAPC, and so far this year doesn't look much different, unfortunately.) | ||
| Coke | Infinoid: I hear you. I am actually considering not going merely due to lack of being paid. | 21:42 | |
| dalek | rrot: r37965 | bacek++ | branches/packfile_revamp/src/pmc/packfile.pmc: Made get_string_native/set_string_native shortcuts for pack/unpack |
||
| Coke | hurm. i should ask my consulting company if there's any money for that sort of thing. | ||
| (expecting the answer no) | |||
| hurm. i wonder if toysRus would have a crappy set to experiment with. | |||
| Coke drowns in commit emails. | 21:43 | ||
| PerlJam | Coke: probably depends on where you're at. I've never seen one in a toysrus | ||
| moritz | parrot-dev is such a quiet place when you don't subscribe to ticket mails... | ||
| Coke feels an obligation to review commits. | 21:44 | ||
| moritz too - for rakudo | |||
| Coke disconnects so no one expects him to review. =-) | |||
| Coke will return thursday, prolly. | 21:45 | ||
| chromatic: I'll probably miss the call tomorrow, though I may be on a bus and bored and call in anyway. | |||
|
21:56
cghene joined
|
|||
| dalek | rrot: r37966 | pmichaud++ | trunk/PBC_COMPAT: Forgot to update PBC_COMPAT in r37944. Coke++ pmichaud-- |
21:58 | |
|
22:03
Whiteknight joined
|
|||
| dalek | rrot: r37967 | allison++ | branches/pcc_rewiring (5 files): [pcc] Broad rework of the core calling conventions for subroutine/method |
22:19 | |
| chromatic | Now there's a big commit to review. | 22:25 | |
| jonathan | chromatic: Dares you to grep it for varargs. ;-) | 22:26 | |
| dalek | kudo: f822294 | (Moritz Lenz)++ | docs/ChangeLog: [docs] more ChangeLog |
22:30 | |
| shorten | dalek's url is at xrl.us/ben7zo | ||
| cotto | chromatic, do you review all commits? | ||
| dalek | rrot: r37968 | pmichaud++ | trunk/compilers/pct/src/POST/Compiler.pir: [pct]: Refactor POST code generation in preparation for bytecode annotations. |
22:35 | |
| jonathan | pmichaud++ # yay! | 22:36 | |
| Whiteknight | he certainly reviews all of mine (for good reason) | ||
| dalek | kudo: 6eef54b | jnthn++ | src/classes/ (2 files): Signature on positional and associative postcircumfixes should not use @ and % sigils, since they are what define said sigils in the signature. |
22:48 | |
| shorten | dalek's url is at xrl.us/ben73h | ||
| dalek | kudo: fb553bd | jnthn++ | src/ (3 files): More progress on typed arrays and hashes. This patch allows them to be declared, gets them responding correctly to .of, allows checking for (potentially typed) positionals/associatives/callables in the signature and allows the sigils and the Positional/Associative/Callable parametric types to participate in multi dispatch. |
||
| shorten | dalek's url is at xrl.us/ben73j | ||
| dalek | kudo: 4abd893 | jnthn++ | : Merge branch 'master' of git@github.com:rakudo/rakudo |
||
| shorten | dalek's url is at xrl.us/ben73o | ||
|
22:50
bsdz joined
|
|||
| chromatic | cotto, I do my best. I skim the Perl ones. | 23:02 | |
|
23:03
Doubi joined
|
|||
| Infinoid starts adding custom free/destroy attrs to ManagedStruct | 23:09 | ||
|
23:10
Tene joined
23:11
cognominal joined
|
|||
| Infinoid | uh, s/free/clone/ | 23:21 | |
|
23:24
tetragon joined
23:29
s1n joined
|
|||
| Infinoid | pmc2c doesn't seem to like: ATTR void (*custom_free_func)(void *ptr, void *priv); | 23:42 | |
| Infinoid uses void * and external typedefs | 23:43 | ||
| cotto | Infinoid, that part of the pmc2c code is fairly naive. | 23:46 | |
| Infinoid | Fair enough. It's working well enough for me to keep hacking, for now | 23:47 | |
| cotto | lib/Parrot/Pmc2c/Parser.pm around line 133 if you're curious | ||
| Infinoid | I'll add a TT so I can come back to it later | 23:48 | |
| chromatic | Or if it really bothers you, we can use a PGE-based PMC preprocessor. | 23:49 | |
| Infinoid | Let me fix ManagedStruct first. And jit. And packfile*.pmc. And parrotcode.org. And world hunger. | 23:50 | |
| Oh goodie, more codetest failures for me to fix | 23:51 | ||
| cotto | I opened a tt on the copyright.t failures. It's a Perl 5.8 vs 5.10 issue from what I can tell. | 23:52 | |
| dalek | rrot: r37969 | Infinoid++ | trunk (2 files): [cage] Fix trailing whitespace. |
23:58 | |