|
www.parrotcode.org/ | Last release: 0.7.1 "Manu Aloha" Set by moderator on 17 September 2008. |
|||
| NotFound | s1n: I think that ANSI and ISO are not of the same opinion. | 00:00 | |
| s1n | unfortunately ANSI and ISO don't package my copy of libc | ||
| NotFound | And parrot. | ||
| s1n | if you're looking for a regex header that's ansi compliant, good luck with that | 00:01 | |
| NotFound | Don't know what cotto are looking for. If is some available to any parrot build, regex.h is not. | 00:02 | |
| cotto | NotFound, I found a better solution. | 00:03 | |
| s1n | besides, parrot is fully ANSI compliant? | ||
| cotto: better than regex.h? do share | |||
| NotFound | Parrot does not mandate Posix, that is the point. | ||
| s1n | NotFound: wow, really? i'm going to add the ansi and pedantic flags on the build and see what happens... | 00:05 | |
| cotto | I needed to match a really simple regex, so I just wrote the FSM manually. | ||
| see pipp_hash_get_intval in r31500 | 00:06 | ||
| s1n | NotFound: well, i don't see any ansi flag already in use, so i don't think it's fair to say it _must_ be ansi compliant | ||
| NotFound | s1n: I say that? | ||
| s1n | okay, it doesn't mandate posix or ansi compliance | 00:07 | |
| NotFound | s1n: you can assume you can use any C 89 std header, but you cannot assume teh same for any Posix header. That's all | ||
| s1n | NotFound: i'm looking at the makefile and i don't see -std=c89 anywhere | 00:09 | |
|
00:09
AndyA joined
|
|||
| NotFound | s1n: Again, I don't say that. | 00:09 | |
| s1n | NotFound: s1n: you can assume you can use any C 89 std header | ||
| NotFound | s1n: You don't need any gcc option to assume that | 00:10 | |
| dalek | r31503 | julianalbo++ | trunk: | 00:11 | |
| : remove unused static function src/oo.c:get_init_meth | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31503 | |||
| s1n | NotFound: i don't think it's safe to assume anything unless the headers being used are ansi compliant | ||
| i don't know what gcc typically will assume the standard is if it's not provided, i would think c99 would be the default | 00:12 | ||
| gnu89 | |||
| according to the man page gnu89 is the default for C code (on my platform), which includes some c99 features | 00:13 | ||
| NotFound | s1n: but gcc does not define the Parrot design decisions. | ||
| s1n | NotFound: the point i was getting at was c89 _is_ ansi compliance | 00:14 | |
| no matter how you look at it, there is a platform assumption, either by parrot or by gcc and if parrot doesn't build on a platform, it with either adapt or ignore the platform, which may have a different set of standards | 00:15 | ||
| NotFound | s1n: surely Parrot can mandate that the plaftorm must have some sort of regex.h, but currently does no do that. | 00:16 | |
| Also does not mandate gcc, BTW | 00:17 | ||
| s1n | yeah i know, i was just trying to make a point, which i've forgotten now | 00:20 | |
| NotFound | Anyway, cotto has solved his problem :) | 00:21 | |
| cotto | Yes, but don't let that interrupt your conversation. ;) | 00:27 | |
| NotFound | cotto: What do you think about crab's inmortality? | 00:28 | |
| (Reference: en.wikipedia.org/wiki/Thinking_abou...f_the_crab ) | 00:31 | ||
|
00:33
tetragon joined
|
|||
| cotto | I haven't gotten anywhere, which is disappointing given how much time I spend thinking about it. | 00:34 | |
| I like that idiom, btw. | |||
|
00:38
Theory joined
00:44
bacek_ joined
01:33
kid51 joined
02:42
Zaba joined
02:47
petdance joined
02:54
Zaba_ joined
03:02
Bzek joined
03:20
grim_fandango joined
03:57
Bzek_ joined
04:05
Bzek joined
04:13
davidfetter joined
04:20
Bzek joined
|
|||
| Ontolog | can I have a method signature that puts a value constraint on a parameter? For example, I want to any negative values for an Integer to be rejected by the signature | 04:21 | |
| cotto | in perl6 you can do that with roles, iirc. | 04:24 | |
| Tene | This imcc bug is really creepy. | 04:25 | |
| cotto grabs popcorn | |||
| Ontolog, rakudo.org/2008/09/rakudo-mmd-now-u...-6-al.html | 04:27 | ||
| I seem to have been thinking of constraints. | 04:31 | ||
| nopaste | "tene" at 12.172.96.105 pasted "callgrind output from the weird imcc thing" (45 lines) at nopaste.snit.ch/14192 | 04:40 | |
| Tene | purl: parrot-porters? | 04:41 | |
| purl | rumour has it parrot-porters is now superceded by mailto:parrot-dev@lists.parrot.org | ||
| Tene | purl: botsnack | 04:44 | |
| purl | :) | ||
| cotto | somebody tell me that code review isn't supposed to be fun | 04:53 | |
| because it's not | |||
| Tene | It's spending most of its time by far in compilers/imcc/sets.c:set_add and compilers/imcc/cfg.c:compute_dominance_frontiers | 05:07 | |
| dalek | r31504 | cotto++ | trunk: | 05:16 | |
| : [pipp] finish the pipp_hash interface, now to start on the PMC code... | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31504 | |||
| r31505 | cotto++ | trunk: | 05:17 | ||
| : [cotto--] undo accidental commit | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31505 | |||
| cotto | that code definitely didn't belong in trunk | 05:18 | |
| Tene | purl: msg pmichaud I likely will be neither around nor sane during #ps tomorrow. Can you make sure ot bring up rt #59410 for me? | 05:21 | |
| purl | Message for pmichaud stored. | ||
|
05:43
iblechbot joined
05:46
TiMBuS joined
05:50
Theory joined
|
|||
| cotto | prime factorization of karma cotto | 05:55 | |
| lazy bot | |||
| Tene | purl: karma cotto | 05:58 | |
| purl | cotto has karma of 138 | ||
| Tene | 2 3 13 | ||
| Wait, that's not right. | |||
| 2 3 23 | 05:59 | ||
| purl: wtf am i doing still awake? | 06:00 | ||
| purl | tene: bugger all, i dunno | ||
| Tene | good point | ||
| cotto | prime factorizations, apparently | 06:02 | |
| Tene | badly | 06:03 | |
|
06:11
uniejo joined
08:51
johbar joined
08:54
tomyan joined
|
|||
| dalek | r31506 | kjs++ | trunk: | 09:02 | |
| : [pirc/new] fix the identifier/symbol checking issue in PASM style instructions | |||
| : * "lt i, j, L" can now be parsed correctly: i and j are checked as symbols, and L, being a label, won't be checked | |||
| : * track all memory allocations, which makes freeing it a lot easier. It does mean that the lexer param. must be in any allocating function. | |||
| : * add a -W warning flag. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31506 | |||
|
09:22
barney joined
09:49
baest joined
10:08
kj joined
10:22
braceta joined
11:06
bacek joined
11:28
bacek joined
11:35
pako joined
11:36
pako left
11:42
johbar_ joined
|
|||
| dalek | r31507 | bernhard++ | trunk: | 11:48 | |
| : Provide link to the RT-ticket for a TODO item. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31507 | |||
|
12:09
davidfetter joined
12:57
tetragon joined
|
|||
| dalek | r31508 | julianalbo++ | trunk: | 13:17 | |
| : fix memory leak in parrotio.pmc:open, RT#46083 | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31508 | |||
|
13:35
Bzek joined
|
|||
| dalek | r31509 | julianalbo++ | trunk: | 14:26 | |
| : remove check for props in default.pmc:get_attr_str, RT#46667 | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31509 | |||
| r31510 | coke++ | trunk: | |||
| : [tcl] [DRY] move the volatile part of this description out to the website. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31510 | |||
| r31511 | coke++ | trunk: | |||
| : [tcl] "-1" isn't a switch, it's a number. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31511 | |||
| r31512 | coke++ | trunk: | |||
| : [tcl] if a namespace doesn't exist, skip the import instead of dying with a null PMC error. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31512 | |||
| barney | In PDD09 the 'Control stack' is mentioned. Is there still such a thing? | 14:36 | |
|
14:41
hercynium joined
14:44
Debolaz joined
|
|||
| dalek | r31513 | bernhard++ | trunk: | 14:51 | |
| : [C] A saner error message when dumping the dynamic environment stack | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31513 | |||
| r31514 | julianalbo++ | trunk: | 15:03 | ||
| : fix pod item for library.c:Parrot_get_runtime_path | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31514 | |||
|
15:09
Hinrik joined
|
|||
| dalek | r31515 | julianalbo++ | trunk: | 15:16 | |
| : update headerizer of include/parrot/key.h | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31515 | |||
|
15:21
Theory joined,
Hinrik joined
15:26
ruoso joined
|
|||
| dalek | r31516 | bernhard++ | trunk: | 15:41 | |
| : Mention the correct ticket in TODO comment | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31516 | |||
|
15:44
Zaba joined
|
|||
| dalek | r31517 | julianalbo++ | trunk: | 15:49 | |
| : fix imcc headerizer problem, RT#57690, and headerize imcc files | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31517 | |||
|
15:50
Hinrik joined
16:01
Hinrik joined
|
|||
| dalek | r31518 | cotto++ | trunk: | 16:05 | |
| : [pipp] avoid using a win32 reserved word for my own nefarious purposes | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31518 | |||
| cotto | parrotvm.org is suddenly serving blank pages | 16:08 | |
| moritz suspects feather apache f*ckup | |||
| NotFound | cotto: yes, I noticed one hour or so ago. | 16:09 | |
| particle | (vmware unity mode)++ | 16:12 | |
| moritz | parrotmv links now work again for me | 16:15 | |
| NotFound | Still blank for me. | 16:16 | |
| cotto | still b0rked | 16:20 | |
| moritz | for me it shows the page now, but without CSS | 16:22 | |
|
16:24
jhorwitz joined
16:54
Hinrik joined
17:00
Lorn joined
17:04
Wknight8111 joined
17:18
Zaba_ joined
17:28
jq joined
17:50
apeiron joined
|
|||
| pmichaud | #ps in 22. | 18:08 | |
|
18:09
rurban joined
18:12
tewk joined
18:18
Ivatar joined
|
|||
| pmichaud | #ps in 5. | 18:25 | |
| PerlJam | o/~ it's the final countdown o/~ | 18:26 | |
| moritz | Broadcast message from root@pmichaud (pts/1) (Tue Sep 30 19:27:19 2008): The system is goin DOWN for #ps in 3 mintues! | 18:27 | |
| PerlJam | heh | ||
| moritz | erm, minutes ;) | ||
| barney | Pipp being alive: www.youtube.com/watch?v=NnA24EQJYI8 | 18:28 | |
| NotFound | Too much #ps, I want a #wii | ||
| PerlJam | barney: heh, I thought I was going to see some cheesey screen-cast like demo of pipp running actual php code. | 18:29 | |
| Tene makes a report | |||
| PerlJam preparse to lurk | |||
| er, prepares | |||
|
18:30
tewk_ joined
|
|||
| rurban | purl: seen chromatic? | 18:32 | |
| purl | chromatic was last seen on #parrot 4 days, 18 hours, 6 minutes and 6 seconds ago, saying: I haven't read the patch yet, so I'm not suggesting the implementation is problematic, by the way. [Sep 26 00:26:26 2008] | ||
|
18:33
chromatic joined,
johbar joined,
tewk left
|
|||
| chromatic | kj, do you track bugs and syntax changes made to IMCC? | 18:39 | |
|
18:40
rurban_ joined
|
|||
| chromatic | dmknopp's CLA arrived; do your magic. | 18:40 | |
| dmknopp | :-) | 18:42 | |
| particle | dmknopp: read and perform the steps for the committer in docs/metacommitter_guide.pod | 18:44 | |
| kj | chromatic: all syntax changes go through DEPRECATED and tickets.. what kind of tracking were you thinking of? | ||
| dalek | r31519 | pmichaud++ | trunk: | ||
| : [rakudo]: spectest-regression.csv update: 193 files, 4381 passing tests | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31519 | |||
| chromatic | r30841 for example. | 18:45 | |
| kj | I can't seem to find that bug... | 18:47 | |
| chromatic | It's a commit, not a ticket. | ||
| kj | oh right. | ||
| well no I don't really track commits to imcc | 18:48 | ||
| I think you made a change recently | |||
| something with autoconverting I to Ns when overflowing? | |||
| chromatic | That too. | ||
| kj | how can I check out a commit? | ||
| chromatic | www.parrotvm.org/svn/parrot/revision?rev=xxxxx | 18:49 | |
| www.parrotvm.org/svn/parrot/revision?rev=30841 | |||
| kj | chromatic: for that particular commit, that can not happen in pirc I think (if that is what you mean...?) | 18:50 | |
| i think the whole [X,Y] thing should not even be valid syntax anymore (PIR slicing syntax is deprecated; only ';' is allowed iirc) | 18:51 | ||
| chromatic | I mean that sometimes I fix bugs in Parrot by making certain constructs illegal in PIR, and I want to make sure that pirc reflects those changes to IMCC. | ||
| kj | right, i see | ||
| chromatic | Some of them may be artifacts of IMCC and not intentional design decisions. | 18:52 | |
| kj | well, so for that particular commit, it can't happen in pirc. For the rest, I guess I should track that a bit more. | ||
| chromatic | I'll try to notify you. | ||
| particle | svn log compilers/imcc/ will give you hints | ||
| kj | ok, thanks. I'll keep an eye. | ||
| usually i always check out the logs on IMCC whenever I update my parrot. | 18:53 | ||
| rurban | purl: seen leo_? | 18:54 | |
| purl | leo_ was last seen on #parrot 1 years, 81 days, 5 hours, 48 minutes and 35 seconds ago, saying: thx [Jul 12 13:05:32 2007] | ||
| rurban | purl: seen leo? | ||
| purl | leo was last seen on #parrot 138 days, 5 hours, 17 minutes and 42 seconds ago, saying: Hi DietCoke, on diet now? [May 15 13:36:32 2008] | ||
|
18:54
DietCoke joined
|
|||
| barney | cotto: For Pipp on Linux I get segfaults in src/hash.c:373 Does it work under Win32 ? | 18:55 | |
| rurban | leo_: don't you want to try your luck with RT #58368? | 18:56 | |
| oops, it's rt.perl.org/rt3//Public[ā¦]lay.html?id=59410 really | 18:57 | ||
| dalek | r31520 | pmichaud++ | trunk: | 18:58 | |
| : [rakudo]: Correct name of t/spec/S05-modifier/ignorecase.t | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31520 | |||
| rurban | ../../parrot.exe -o befunge.pbc befunge.pasm | 18:59 | |
| error:imcc:syntax error, unexpected IDENTIFIER, expecting PARROT_OP ('save') | |||
| in file 'flow.pasm' line 33 | |||
| included from 'befunge.pasm' line 1 | |||
| anybody knows how 'save' should be converted to now? | 19:00 | ||
| DietCoke rails his fist at rakudo's spectest progress. | 19:01 | ||
| chromatic | Normal calling conventions, I thought. | ||
| DietCoke | it's not a drop in replacement, though. | ||
| if they're specifically using the old user stack, you need to convert the calls to be normal sub calls. | |||
| dalek | r31521 | moritz++ | trunk: | 19:02 | |
| : [pynie] implement some builtins | |||
| : * len, list, range, str | |||
| : * added .namespace [] at top of funcs.pir | |||
| : * add tests (13-builtins.t) | |||
| : * update MANIFEST and CREDITS | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31521 | 19:03 | ||
| r31522 | moritz++ | trunk: | 19:05 | ||
| : [pynie] implement for. Patch courtesy by isop++ | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31522 | |||
| DietCoke | AndyA: ping | 19:06 | |
| AndyA | Hello :) | ||
|
19:06
gmansi joined
19:12
Zaba joined
|
|||
| barney | AndyA: Is it worth looking at frama-c.cea.fr/index.html ? | 19:13 | |
| moritz | isop++ # pynie patches | ||
| AndyA | Funnily enough I was just looking at that for work this week - but I barely got it working. Didn't try for very long. | 19:14 | |
| barney | I just saw it on en.wikipedia.org/wiki/List_of_tools...analysis#C | ||
| dalek | r31523 | kjs++ | trunk: | 19:15 | |
| : [pirc/new] fix bug in [target=parrotop] rule. (else clause didn't have braces!) | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31523 | |||
| r31524 | julianalbo++ | pdd27mmd: | |||
| : Fixed integer.pmc default cmp and pmc/integer test | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31524 | |||
| DietCoke | AndyA++ | 19:22 | |
| dalek | r31525 | kjs++ | trunk: | 19:26 | |
| : [pirc/new] refactor the big chunk of code added for checking 'lt $I0, 10, L' into a function so it can be re-used. The re-use doesn't quite work, that's next. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31525 | |||
| DietCoke | -> offline | 19:29 | |
|
19:45
contingencyplan joined
|
|||
| dalek | r31526 | kjs++ | trunk: | 19:45 | |
| : [pirc/new] fix the not-working re-use of argument-checking code. Also implement an operand-count check. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31526 | |||
| r31527 | julianalbo++ | pdd27mmd: | 19:47 | ||
| : fix eq PMC INT | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31527 | |||
| Tene | svn.perl.org/account is throwing an error | 19:48 | |
|
19:58
contingencyplan joined
|
|||
| kj | mmm. I'm trying pirc on linux now, I exported the path to the libparrot shared object file to LD_LIBRARY_PATH, but still an error message | 20:02 | |
| saying it can't find the shared object. | |||
| anyone any ideas? | 20:03 | ||
| NotFound | kj: try setting both LD_LIBRARY_PATH and LD_RUN_PATH | 20:04 | |
| kj | ah I see. It was the export stuff; I tried to export an absolute path | ||
| didn't work, but exporting relative address works | |||
| and I see it segfaults! :-( | |||
| dalek | r31528 | pmichaud++ | rt59410: | 20:07 | |
| : Create a branch for diagnosing RT#59410. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31528 | |||
| chromatic | Hm, the MMD branch needs a merge from trunk. | 20:08 | |
| NotFound | chromatic: the items I fixed have different implementations than trunk. | 20:10 | |
| chromatic | I meant the ExceptionHandler fix I made yesterday. | 20:12 | |
|
20:13
grim_fandango joined
|
|||
| dalek | r31529 | kjs++ | trunk: | 20:17 | |
| : [pirc/new] fix memory freeing. embarrassing mistake... | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31529 | |||
| r31530 | kjs++ | trunk: | 20:18 | ||
| : [pirc/new] forgot to remove brace (that's what happens when editing on 1 system and testing on the other :-( ) | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31530 | |||
| r31531 | kjs++ | trunk: | 20:21 | ||
| : [pirc/new] remove 'return' statement to prevent some code running. NOW the memory issue is fixed. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31531 | |||
|
20:24
Zaba_ joined
|
|||
| dalek | r31532 | kjs++ | trunk: | 20:27 | |
| : [pirc/new] fix printing of instructions; don't use stderr if it's not necessary (it prints (flushes) stuff before earlier statements!) | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31532 | |||
| r31533 | kjs++ | trunk: | 20:49 | ||
| : [pirc/new] Ah that's a shame. the argument count check is no good here; opinfo might point to a different variant of the op, which has a different op count. Too bad! | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31533 | |||
| r31534 | kjs++ | trunk: | 20:54 | ||
| : [pirc/new] add another error check; errors can occur during code generation. (not that we're generating code yet, for those who are wondering... just printing them) | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31534 | |||
| r31535 | pmichaud++ | rt59410: | 20:56 | ||
| : Apply loop_control_next.patch from RT #59410. All parrot tests pass. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31535 | |||
| Tene | pmichaud: are there any parrot tests that use pct? | 21:05 | |
| pmichaud | Tene: now. | ||
| no. | |||
| Tene | Oh. Okay. | ||
| I was confused by your "all tests pass" note. | |||
| pmichaud | all parrot tests pass, but not rakudo ones. | ||
| I'm working to come up with a small failure case. | 21:06 | ||
| Tene | Right. That patch doesn't touch any parrot stuff, just changes the code generation in pct. | ||
| bacek | morning. | 21:09 | |
| Tene | Hi, bacek. | ||
| bacek | hi Tene | ||
| pmichaud: if you'll have time there is patch in #58646 to convert "new Failure" to "!FAIL()" (not mine ;) | 21:10 | ||
| Tene | I'm definitely in the mood for some parrot hacking tonight. | 21:11 | |
| Class should be out in 1.5 hours or so. | |||
| pmichaud | bacek: RT #58646 is now in my hiveminder list. | ||
| bacek | pmichaud: can I have commit bit to this list? I want to add LTM to it ;) | 21:13 | |
| pmichaud | ltm is on the list also, but I guarantee that's not likely to happen overnight. | ||
| particle | unless you move to the north pole.... | 21:14 | |
| pmichaud | well, if I move to the south pole I could probably have it done by this evening :-) | ||
| NotFound | ltm? | 21:16 | |
| purl | somebody said ltm was longest token matching | ||
| pmichaud | is there a quick command to strip all pod from a file? | ||
| particle | perl 5 pod? | 21:24 | |
| perldoc might have one... | 21:25 | ||
| PerlJam | pmichaud: a week long expedition to the south pole costs around $20K. Do you think a Parrot or Perl Foundation grant would pay for it? LTM is quite important :) | 21:26 | |
| NotFound | PerlJam: sure, you only need to tell someone to organize a parrot convention. | 21:28 | |
| PerlJam | NotFound: or a cruise! Randal does geek cruises, I bet he could whip something up. :) | 21:29 | |
| bacek | pmichaud: Something like ":/^=/;/^=cut/d", I can't remember how to execute many times for file :( | 21:31 | |
| NotFound | I remember reading something about a HP user's convention on a cruise on the Baltic Sea, that is the closest from a pole I know about. | ||
| pmichaud | yes. perl 5 pod | ||
| PerlJam | bacek: that fails for =begin/=end pairs among other things. | 21:32 | |
| pmichaud | perl 5 pod has =begin/=end pairs? | ||
| moritz | yes | ||
| pmichaud | anyway, this particular file doesn't have any. | ||
| moritz | erm, it has =for editor...=end for or something | 21:33 | |
| particle | search.cpan.org/dist/Pod-Strip/ | ||
| pmichaud | it's a file of PIR and I need to strip the perl5 pod from it so that I can comment out large chunks of code to find out why 59410 is causing trouble | ||
| PerlJam | search.cpan.org is your friend. | ||
| bacek | "CPAN is my language of choice" ;) | ||
| PerlJam | particle: though the docs say it "strips all POD from Perl Code". Pm doesn't have Perl Code. | 21:34 | |
| particle | i don't think pod::simple cares if the file has perl code in it | 21:35 | |
| pod::strip is a pod::simple subclass | |||
| pmichaud | $lines =~ s/^=.*?^=cut//gms; | 21:37 | |
| seems to do it. | |||
| chromatic | If it's valid POD, that should work. | 21:41 | |
| moritz | might fail for some perl 5 obfus ;) | 21:42 | |
| PerlJam | that works modulo =begin/=end as I mentioned earlier :) | ||
| =for will break it too | |||
| chromatic | Will can fix his own POD. | ||
| </subtle> | |||
|
21:52
Debolaz joined
21:53
Zaba joined
21:54
grim_fandango joined,
cognominal joined
21:57
Lorn joined
|
|||
| pmichaud | yay! I got the problem down to a single sub. | 22:03 | |
| well, one sub that when included causes the hang. | |||
| moritz | scary | ||
| whenever I hear about bugs like this I wonder how we could ever got as far as we did ;) | 22:05 | ||
| pmichaud | down to two lines of PIR | 22:08 | |
|
22:08
TiMBuS joined
|
|||
| pmichaud | down to one line of PIR | 22:09 | |
| get ready for it.... | |||
| $N0 *= elems | |||
| Tene | *= ? | 22:10 | |
| Are you sure that's the same? | |||
| pmichaud | I have a program where if I compile with that line commented out, it compiles fine, but if commented out, it hangs. | ||
| er | |||
| wait | |||
| if the line is commented out, compiles fine, if left in, compiling hangs | |||
| brb | 22:12 | ||
| Tene | pmichaud: interesting. | ||
| pmichaud | nopaste coming. | 22:16 | |
|
22:17
Lorn joined
|
|||
| nopaste | "pmichaud" at 76.183.97.54 pasted "reproducible hang in rt #59410" (12 lines) at nopaste.snit.ch/14198 | 22:18 | |
| pmichaud | adding that one subroutine to the beginning of gen_actions.pir is sufficient to get imcc to hang. | 22:19 | |
| without it, gen_actions.pir compiles just fine. | |||
| (gen_actions.pir is the file that is produced from compiling actions.pm with nqp) | |||
| chromatic | Besides the fact that :multi and :method aren't compatible... | 22:20 | |
| pmichaud | chromatic: we use it all the time in PCT and Rakudo | ||
| chromatic | They do completely different things. | 22:21 | |
| pmichaud | however, eliminating ":method :multi()" from hanger.pir still results in the hang. | ||
| chromatic | They're two separate dispatch mechanisms and two separate storage mechanisms. | ||
| pmichaud | :multi() still works with :method, though. Otherwise PCT wouldn't work at all. | 22:22 | |
| chromatic | Yeah, besides that, there's nothing in that code that ought to cause a hang. | ||
| pmichaud | :multi is how we're able to distinguish obj.'foo'($P0) based on the type of $P0 | 22:23 | |
| i.e., foo can be .sub 'foo' :method :multi(_, 'Integer') or .sub 'foo' :method :multi(_, 'String') | |||
| chromatic | Sure, and I think that's semantically wrong. | 22:24 | |
| NotFound | pmichaud: Changing the name of the .sub has some effect? | ||
| moritz | chromatic: so how would you make that distinction? | ||
| chromatic | With multimethods. That's what they're for. | ||
| pmichaud | do multimethods work in PIR? how are they defined? | ||
| moritz | and how do multimethods look in PIR? | ||
|
22:25
Lorn joined
|
|||
| chromatic | .sub whatever :multi( T, U, V ) | 22:25 | |
| .end | |||
| moritz | but that's a sub, not a method, isn't it? | ||
| chromatic | Yep. | ||
| Different dispatch mechanism. | |||
| pmichaud | so obj.'whatever'(...) would fail to find it. | ||
| moritz | which again leads to my question | 22:26 | |
| pmichaud | at any rate, :method :multi is an issue I'd prefer to defer | ||
| chromatic | multi dispatch has nothing to do with inheritance | ||
| That's the heart of the problem; they're two very different dispatch mechanisms. Confusing them produces problems. | 22:27 | ||
| nopaste | "pmichaud" at 76.183.97.54 pasted "another hang" (9 lines) at nopaste.snit.ch/14199 | ||
| chromatic | pmichaud, what happens if you use a named N-reg instead of $N0? | 22:28 | |
| pmichaud | looking at that now. | 22:29 | |
| Tene | pmichaud: have you tried trimming down gen_actions.pir yet? | ||
| pmichaud | Tene: yes, trimming gen_actions can also cause things to work. What this does is get it down to a single PIR statement that appears to cause the problem. | ||
| Tene | Right. I'm just wondering if we can produce a smaller failing case. | ||
| nopaste | "pmichaud" at 76.183.97.54 pasted "named n-reg also hangs" (10 lines) at nopaste.snit.ch/14200 | 22:30 | |
| "pmichaud" at 76.183.97.54 pasted "multiply by constant value does not hang" (11 lines) at nopaste.snit.ch/14201 | 22:32 | ||
| chromatic | That tickles something in my head. | 22:35 | |
| particle | you ought to get that fixed. | 22:36 | |
| pmichaud | okay, I got it down to two subs. | ||
| nopaste | "pmichaud" at 76.183.97.54 pasted "this hangs (only two subs)" (40 lines) at nopaste.snit.ch/14202 | 22:37 | |
| pmichaud | (I removed the :outer, but it shouldn't really affect things.) | 22:38 | |
| oh, and there's a .const there... let me strip those. | |||
| nopaste | "pmichaud" at 76.183.97.54 pasted "this hangs (only two subs, no lexicals or constant lookups)" (40 lines) at nopaste.snit.ch/14203 | 22:40 | |
| pmichaud | commenting out the "unless $I1811, for_1807_end" line allows it to compile. | 22:42 | |
| NotFound | compute_dominance_frontiers seems to be the culprit. | ||
| pmichaud | it's still weird that it's dependent on the *= instruction in the previous sub | ||
| NotFound | Use kill -s BUS to get a core dump | 22:43 | |
| chromatic | There's probably a cyclical edge somehow. | 22:46 | |
| pmichaud | is compute_dominance_frontiers used for anything besides register allocation...? | 22:49 | |
| chromatic | No. | 22:50 | |
| pmichaud | once again, register allocation is the bane of my Parrot existence. | ||
|
22:50
peepsalot joined
|
|||
| chromatic | Control flow is not easy with continuations, unless you convert everything to CPS. | 22:51 | |
| The problem is that the runner keeps flipping back and forth between 8 and 9 in the innermost loop of compute_dominators. | 22:52 | ||
| pmichaud | what is it about 'myfoo *= $I0' that is affecting dominance in the later sub, though? | 22:53 | |
| that's what is a little weird. | |||
| changing to 'mul' or '+=' doesn't seem to help. | |||
| chromatic | Register information doesn't get cleared appropriately? | 22:54 | |
| Valgrind doesn't show anything wrong there... but I did just fix a memory leak in AddrRegistry. | 22:56 | ||
| NotFound | Don't know if is related, but we have a problem with the int_overflows function in imcc/symreg.c and headerizer | ||
| Is static but headerizer puts it in the .h file, and bad formatted, | 22:57 | ||
| chromatic | Anybody want to bisect this problem and see if it appeared sometime in the past 1000 commits? | ||
| pmichaud | the problem is that it only occurs with Tene's PCT patch | ||
| oh, I see | |||
| but with this PIR we can do it w/o the patch | |||
| cool. | |||
| chromatic | Right. | ||
| dalek | r31536 | chromatic++ | trunk: | ||
| : [PMC] Fixed a memory leak when destroying an AddrRegistry PMC. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31536 | 22:58 | ||
| nopaste | "pmichaud" at 76.183.97.54 pasted "commenting out any of the lines marked 'xxx' allows this to compile" (34 lines) at nopaste.snit.ch/14204 | 22:59 | |
| pmichaud | also, reversing the order of the new $P1809, "Undef" and the unless instruction before it allows it to compile. | 23:00 | |
| gotta join family for dinner... bbl | 23:01 | ||
| nopaste | "pmichaud" at 76.183.97.54 pasted "commenting out any of the lines marked 'xxx' allows this to compile (#2)" (34 lines) at nopaste.snit.ch/14205 | 23:02 | |
| NotFound | Found the headerizer problem: "static \\n int" instead of "static int" | ||
| (Add random words about headerizer here) | 23:03 | ||
| Tene | Words like "headerizer is awesome"? | ||
| NotFound | Maybe | ||
| chromatic | I need to finish something else and head out soon, but the way to debug this is to figure out how to dump IMCC register and basic blocks information and look for the edge identification between blocks. | ||
| It looks like block #5 in the second sub is the problem. | 23:04 | ||
| Tene | I'll understand what "register and basic blocks information" is once I read enough of the register allocator code? | ||
| chromatic | I can give you a quick overview. | 23:05 | |
| Tene | That would be great, if you have time. | ||
| chromatic | The alligator divides every compilation unit into basic blocks. | ||
| A block is a single block of code between branch points. | 23:06 | ||
| Every entrance and exit point demarcates a block. | |||
| NotFound | Unfortunately, the problem of the int_overflows was unrelated to the debated problem | ||
| chromatic | If you arrange the blocks in terms of a control flow graph, you can evaluate all of the possible ways you can reach a point within the block. | 23:07 | |
| You also keep track of which registers you use within a block. | |||
| If all of the paths to a block go through another block, the latter dominates the former. | 23:08 | ||
| Tene nods. | |||
|
23:08
Lorn joined
|
|||
| dalek | r31537 | julianalbo++ | trunk: | 23:08 | |
| : fix imcc/symreg.c:int_overflows() declaration that was fooling headerizer | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31537 | |||
| chromatic | All of this is to say, if you have a named register used in the first block of a unit and the final block of the unit can branch back to the first unit, you have to keep the physical register untouched. | 23:09 | |
| If there's a block beyond which you can never branch back, you can reuse physical registers unique to that branch and never used later. | 23:10 | ||
| I've been unclear about name/physical register mapping, but I think you get the picture. | |||
| Tene | I do. | ||
| chromatic | It's the mapping of name to register that really matters. | 23:11 | |
| Tene orders chinese and reads imcc. | |||
| NotFound | Chinese translator? | 23:12 | |
| Tene | no, sesame chicken and fried dumplings | 23:13 | |
| chromatic | My guess is there's something wrong in compute_dominators. | ||
| At least, that's the next place to start looking. | |||
|
23:18
tetragon joined
23:25
mwhudson joined
23:38
Zaba_ joined
23:40
mwhudson joined
|
|||
| NotFound | Why is compute_dominance_frontiers called? Is if'ed with IMCC_INFO(Interp)->optimizer_level | 23:45 | |
| chromatic | I could never figure that out. | ||
| Something set that, even though we were trying to disable it universally. | |||
| NotFound | His value is 0x100 | 23:47 | |
| Tene | Really weird things happen with the code if you don't call it. | 23:48 | |
| In this situation, at least. | 23:49 | ||
| chromatic | Maybe someone needs to tease some of these large functions into smaller ones and see what happens. | ||
| NotFound | And even weirder if you don't know why you are calling it. | ||
| Tene | Hmm. Back in an hour. | 23:50 | |
| chromatic | NotFound, I've seen people write: | 23:54 | |
| #typedef Foo struct Foo | 23:55 | ||
| and with that forward declaration, they use just Foo when declaring the struct later. | |||
| If the struct has a pointer to a nested struct, they don't have to use "struct" on the pointer. | |||
| It seems cleaner. | |||
| NotFound | chromatic: yes, is a common usage | ||
| tetragon | chromatic: I'm really finding it annoying that 32-bit Intel Darwin uses 16-byte alignment for the stack instead of word alignment | 23:56 | |
|
23:56
dmknopp joined
|
|||
| NotFound | BTW, using _SomeStructName is not good, idenifiers starting with an underscore followed by capital are reserved for the C implementation. | 23:57 | |
| chromatic | Think of Darwin as something not quite completely entirely unlike a Unix operating system, and you'll feel better. | 23:59 | |
| NotFound | chromatic: optimizer_level is changed in imcc/parser_util.c:change_op() | ||