|
Parrot 4.2.0 "Ornithopter" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 21 March 2012. |
|||
| whiteknight | good evening, #parrot | 00:03 | |
| nine++ | 00:04 | ||
|
00:08
jsut_ joined
00:22
cogno joined
|
|||
| Coke | good morning. | 00:24 | |
| whiteknight | hello Coke | 00:25 | |
| Coke | good night. 12:30 here, need sleep. | 00:26 | |
|
00:42
benabik joined
|
|||
| benabik | nine++ (catching up on some backlog) | 00:44 | |
|
00:47
GodFather joined
|
|||
| whiteknight | oh man, I opened a can of worms with this IMCC work | 00:59 | |
| it turns out that handling of :immediate subs has always been stupid because the rest of the system is too stupid for it to be fixed | |||
| benabik | whiteknight: You touched IMCC? You're a braver man than... wait, I just committed to IMCC too, didn't I? | ||
| whiteknight: How so? | 01:00 | ||
| whiteknight | I'm on my branch, rewriting the way :immediate and :postcomp work | ||
| benabik | ... to what? | ||
| whiteknight | in master, when a Sub is compiled IMCC checks if it's an :immediate. If so, it calls PackFile_fixup_subs | ||
| PackFile_fixup_subs iterates over the entire constants table, looking for immediate subs | 01:01 | ||
| so for every sub, we iterate over all constants | |||
| every time | |||
| benabik | Wait, what? | ||
| whiteknight | And then, for good measure, we iterate the whole collection again after compilation, to make sure we don't miss any | ||
| benabik | For every :immediate sub, I hope. | ||
| whiteknight | AND THEN we iterate again looking for :postcomp subs | ||
| yeah, only for :immediates | |||
| benabik | This sounds... LTA | ||
| whiteknight | yeah, I'm fixing it | ||
| now when we compile a sub, we keep a reference to it and we just execute it directly | 01:02 | ||
| no looping | |||
| dalek | rrot/remove_sub_flags: fb8119f | Whiteknight++ | / (5 files): Fix :immediate subs. We need to execute them more immediately than I had them. Cleanup/Rewrite several bits of sub-saving code to keep a reference to the sub as it's generated and execute it directly. |
01:03 | |
| whiteknight | that should fix a broken test or two | ||
|
01:15
contingencyplan joined
01:32
jsut joined
|
|||
| whiteknight | ah, needed one more fix to get some tests to pass | 01:43 | |
| dalek | rrot/remove_sub_flags: 422f859 | Whiteknight++ | compilers/imcc/pbc.c: Only store the result of an :immediate sub if it's non-null. This fixes at least t/dynpmc/subproxy.t |
01:48 | |
| rrot/remove_sub_flags: 0945f74 | Whiteknight++ | t/dynpmc/ (2 files): Fix a few more tests before bed |
01:49 | ||
| whiteknight | okay, that's it for tonight | 01:52 | |
| benabik | whiteknight++ | ||
|
02:02
jsut_ joined
|
|||
| cotto | ~~ | 03:22 | |
|
04:02
preflex_ joined
04:27
davidfetter joined
|
|||
| dalek | rrot: d344da6 | petdance++ | src/ (4 files): quiet some unused variable warnings |
05:55 | |
|
06:02
mdupont joined
06:23
fperrad joined
08:28
perlite joined
09:28
lucian joined
10:26
schm00ster joined
10:32
wknight-phone joined
11:42
benabik joined
|
|||
| benabik | Good morning, #parrot | 11:57 | |
| tadzik | hello benabik | 11:58 | |
|
12:17
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:20 | |
| benabik | o/ whiteknight | ||
| whiteknight | hello benabik | ||
| tadzik | o/ | 12:40 | |
| benabik | o/ tadzik | 12:41 | |
|
12:41
JimmyZ joined
14:07
lucian joined
14:19
p6eval joined
14:22
lateau joined
14:29
mtk joined
|
|||
| dalek | sella: 6247747 | Whiteknight++ | src/ (34 files): merge optional_args branch, fix conflicts |
14:51 | |
| sella: 15ead1b | Whiteknight++ | / (5 files): [Build] Fix build. Some constructs are not currently allowed by Winxed as parameter default values. For now, work around those limitations. |
|||
|
15:00
benabik joined
15:07
PacoAir joined
15:11
benabik joined
15:33
lateau joined
15:34
benabik joined
|
|||
| dalek | sella: e494eb0 | Whiteknight++ | src/string/String.winxed: [String] Add a new String.to_integer utility, borrowed from the String::Utility library in the standard parrot runtime. |
15:38 | |
| whiteknight | msg NotFound optional params have a few problems that I've been finding: gist.github.com/2159106 I'll try to fix them. Let me know if you have any ideas or concerns | 15:44 | |
| aloha | OK. I'll deliver the message. | ||
|
15:46
Psyche^ joined
15:58
dmalcolm joined
17:18
mj41 joined
|
|||
| nine | Good evening, #parrot | 17:23 | |
| Coke chuckles at the suggestion to remove PGE. | |||
| dalek | kudo/slurpy-sequence: 0604d1b | moritz++ | src/core/ (3 files): bring back sequences with slurpy generators |
17:24 | |
| benabik | Is anything still using PGE? Does nqp-rx use it? | ||
| aloha | (parrot/parrot) Issues opened : 746 (Create PARROT_STATIC_ASSERT) by petdance : github.com/parrot/parrot/issues/746 | 17:36 | |
|
17:37
hercynium joined
|
|||
| whiteknight | yeah, I think NQP-rx uses PGE | 17:51 | |
| no, wait. that's what the -rx is, it has its own regex engine | |||
| several bits of the build do rely on PGE, but I don't know if those bits are also good to be removed | |||
| data_json and yaml::Tiny do, I think | 17:52 | ||
| nine | is there a way to get a pasm file for a given pir file? | 17:59 | |
| whiteknight | nine: short answer, no | 18:01 | |
| there used to be a way to sort-of do a conversion that would generate code that wouldn't be valid and wouldn't compile | |||
| that got ripped out | |||
| you can use pbc_disassemble or pbc_dump to get a readable approximation | 18:02 | ||
| nine | Ah, of course I have to build more than just corevm to get the real tools. Thanks, pbc_disassemble is pretty much what I need | 18:03 | |
| whiteknight | benabik++ was putting together a slightly better disassembler as part of his PACT project too, if you need a second opinion on anything | 18:17 | |
| benabik | The output is fairly readable at this point. The major thing I'd like to do is introspection of Keys. | 18:18 | |
| whiteknight | benabik: ah, right. I keep forgetting that you've been asking for that | ||
| benabik | whiteknight: Yeah, Keys need introspection and creation that can handle register values. I think I opened an issue for it? | 18:19 | |
| cotto | ~~ | 18:20 | |
| whiteknight | benabik: yeah, there's an issue for it. I just haven't gotten to it yet | 18:31 | |
| benabik | whiteknight: No rush yet, although if I do a PACT assembler, it would be basically required. | 18:32 | |
| (for GSoC) | |||
| benabik should probably finish his "introductory" e-mail to -dev. | 18:36 | ||
| whiteknight | yeah, otherwise we'll have no idea who you are! | 18:41 | |
| tadzik | heh | 18:42 | |
| benabik | I like to obey the forms. :-D | ||
| nine | Seems like Parrot never runs out of new challenges. get_global in a sub which itself is fetched via get_global does not work, because it would access the sub's namespace unproxied, so the fetched global is used directly instead of a proxy to it | 18:50 | |
| benabik | :-( | 18:51 | |
|
18:53
hercynium joined
|
|||
| nine | Well it's no wonder. I had to special case subs when creating the thread's task (copying the sub and creating proxies for all its attributes). It's just the same now. | 18:54 | |
| whiteknight | nine: Yeah, like I said. NameSpace is known to be the worst thing ever | 19:08 | |
| benabik | Worse than IMCC? | 19:09 | |
| whiteknight | benabik: arguably, IMCC is just a large complicated engine for creating namespaces | ||
| benabik | whiteknight: hah | ||
| moritz | rakudo has stopped using parrot namespaces | ||
| whiteknight | moritz: exactly! That means we can rip them out | ||
| we'll tolerate any horrible code that Rakudo is relying on | |||
| benabik | moritz: What does it use instead? | 19:10 | |
| moritz | rakudo: module A { }; say A.WHO.WHAT | 19:11 | |
| p6eval | rakudo 1a468d: OUTPUTĀ«Stash()ā¤Ā» | ||
| moritz | benabik: Stash | ||
| rakudo: say Stash ~~ Hash | |||
| p6eval | rakudo 1a468d: OUTPUTĀ«Trueā¤Ā» | ||
| moritz | it's a Perl 6 object, fittingly | ||
| benabik | Does NQP still use Parrot's namespaces? | 19:12 | |
| moritz | I don't know | ||
| benabik | Fair enough | 19:13 | |
| whiteknight | NQP-rx does. New NQP does not | ||
| at least, I don't think it does. Not explicitly | |||
| it does implicitly jam symbols into the 'parrot' namespace or the 'NQP' HLL namespace | |||
| but there's no way to turn that off | |||
| not yet | |||
| :) | |||
| moritz | we're happy to hand commit bits to anybody who awesomizes nqp :-) | 19:15 | |
| I'd love to have the ability to give commit access to all parrot committers from within the perl6 organization | 19:16 | ||
| whiteknight | moritz: we've got to catch up with all the awesome improvements NQP provides first, before we can start making improvements of our own | 19:17 | |
| moritz: I cry a little bit every day when I think about how 6model should have been written directly in parrot core instead of as an external module | |||
| and the dyncall stuff would have been great to have in core | 19:19 | ||
| moritz | agreed | ||
|
19:21
contingencyplan joined
|
|||
| whiteknight | one way or another, I'm going to get 6model into Parrot core this year | 19:22 | |
| dukeleto | ~~ | 19:24 | |
| moritz: you could create a parrot team in the perl6 org | |||
| moritz: it would need to be manually updated and could get out of sync, but you could just add the core parrot devs that actually hack on nqp stuff and that would work pretty well | 19:25 | ||
| whiteknight | it's really not so big a deal, yet | 19:36 | |
| moritz: It's been a while since I've had a patch for NQP, but what's the best way to submit it? Still a .patch file? | |||
| benabik | pull request, I would assume. | 19:37 | |
| I think I submitted a pull request and got a commit bit a few months back. :-D | |||
| nine | Why can I declare multiple .locals in one line but not multiple .params in PIR? | 19:38 | |
| whiteknight | nine: because .param syntax is stupid | ||
| nine | :) | ||
| whiteknight | nine: The parser used to be so picky (and this is only about two years ago) that you couldn't insert comments before or between .param declarations in a function | 19:39 | |
| nine | wow | ||
| whiteknight | yeah, we've fixed that infelicity, but it's still far from perfect | ||
| the real solution is to avoid PIR and use Winxed or NQP instead | 19:41 | ||
| benabik | winxed++ | ||
| NotFound++ | |||
| benabik hopes to have some alternative to PIR by September. | 19:42 | ||
| nine | Probably...but I know neither of those languages and I don't know if I could do this kind of low level stuff I do right now | ||
| benabik | Although it probably won't be very appealing to write by hand. | 19:43 | |
| nine | benabik: I used to write x86 assembly as a kid. How bad can your new thing be? ;) | 19:44 | |
| particle | dukeleto: s/flavor/breed/ | 19:45 | |
| dukeleto | particle: sure, sounds fine to me. | 19:46 | |
| particle: we can have a lot of fun with that... | 19:47 | ||
| particle | precisely. -Ofun | ||
| benabik | nine: Probably not too much worse. My current plan involves 0 assistance for the user. PCC by hand and no variable names is the unappealing part to me. | ||
|
19:47
root_ joined
|
|||
| whiteknight | benabik: variable names should not be too difficult, if you leave scoping flat and boring | 19:48 | |
| have a hash that's a simple mapping table from varname to register alias | |||
| then when you parse you can do the translation on the fly | |||
| regname = is_reg(var) ? var : symbol_table[var]; | 19:49 | ||
| benabik | whiteknight: I'm currently picturing two levels of assembly. One that's literally what the bytecode is, and another that does things like named variables and labels, in-line constants, etc etc. | 19:50 | |
| dukeleto | benabik: the lowest level will be m0 bytecode | 19:51 | |
| benabik | I want one that has _no_ magic in it for machine processing and simplicity. That way there's no ambiguity. | ||
| dukeleto | benabik: m0 has no magic | ||
| benabik: because it is "magic level 0" :) | 19:52 | ||
| benabik | dukeleto: Yes, eventually. | ||
| dukeleto: Then there might be 4 assemblies in my perfect world. :-D | |||
| dukeleto | benabik: sounds fine to me. | ||
| benabik | dukeleto: I want to keep M0 in mind when writing PACT. If the classes could be used for PBC and M0, that would be perfect. | 19:53 | |
| Static single assignment control flow graphs for _everybody_. | |||
| dalek | kudo/slurpy-sequence: 048f1b7 | moritz++ | docs/announce/2012.03: add first draft of 2012.03 release announcement |
19:54 | |
| moritz | oops, wrong branch | 19:55 | |
| benabik | The goal, from my point of view, is to give everyone a good environment for optimization. :-) | ||
| dalek | kudo/nom: 4c7f568 | moritz++ | docs/announce/2012.03: add first draft of 2012.03 release announcement |
||
| benabik | Although I suppose that zero-magic assembly should really be a series of PACT.Packfile nodes or some such. | 19:58 | |
| whiteknight | benabik: yeah, that's fine too. I'm just saying you don't NEED to address registers by index if you don't want, you can give simple names to registers | 20:04 | |
| I don't feel like an explicit name->register mapping adds any magic | |||
| nine | I certainly don't see register names like eax and ebx as magic | 20:07 | |
| benabik | tax is like $P0 | 20:08 | |
| *eax | |||
| Even then, raw PCC and probably interesting things with subs and namespaces. | |||
|
20:11
root_ joined
|
|||
| whiteknight | The silver lining is that for a simple-enough assembly language, parsing is a snap. It can basically be reduced to a bunch of operations on lines, with splits and table lookups | 20:17 | |
| dukeleto | whiteknight: that is what the m0 parser does | 20:25 | |
| whiteknight: it is line-based | |||
| whiteknight | dukeleto: yeah, if your syntax is easy enough and if you make yourself a rule that you won't be writing that code by hand and therefore don't need niceties, you can make it dirt simple | 20:26 | |
| while(line = file.readline()) { var tokens = split_on_whitespace(strip_trailing_whitespace(line)); var ins = instructions[tokens[0]].parse(tokens); push(output, ins); } | 20:27 | ||
| there's your assembler, minus the details | |||
| well, the parser for your assembler | 20:28 | ||
| then it's a call to emitter.generate(output) | |||
| anyway, I'll be back later tonight to hear complaints about that snippet | 20:31 | ||
| dalek | p: fd67256 | masak++ | VERSION: bump VERSION to 2012.03 |
20:52 | |
| kudo/nom: 77dcb04 | masak++ | tools/build/NQP_REVISION: [tools/build/NQP_REVISION] to latest NQP release ...and it's only minutes old! That's how current we are! |
20:55 | ||
| cotto | benabik++ | 21:04 | |
| benabik | ack? what? | ||
| cotto | pact email | ||
| sorry. my brain is fried from 3 days of conference stuff | 21:05 | ||
| benabik | cotto: Hopefully there was some enjoyment to be had along the way. | 21:06 | |
| cotto | definitely. I even ran into ingy | 21:07 | |
| tadzik | ha, how's he doing? | ||
| cotto | he seemed to be his normal self | ||
|
21:21
darbelo joined
|
|||
| dalek | kudo/nom: c15aecd | masak++ | docs/announce/2012.03: [docs/announce/2012.03] finalized s/TODO/Argentina/. other small fixes. |
21:32 | |
| kudo/nom: 5dab131 | masak++ | docs/announce/2012.03: [docs/announce/2012.03] s/February/March/ pmichaud++ eagle eyes. |
21:35 | ||
| pmichaud | I will get autoviv working before the next release. | 21:40 | |
| I didn't realize it wasn't working. | |||
| oops, wrong chan | |||
| dalek | kudo/nom: 5dda9a7 | masak++ | docs/release_guide.pod: [docs/release_guide.doc] current release => past Also extended the future a little. |
21:42 | |
| nine | How should I call an op which simply ends the current task? | 22:09 | |
|
22:16
sri joined
|
|||
| nine | Called it 'terminate' for now but I will probably not need it in the long term anyway | 22:17 | |
|
22:20
mj41 joined
|
|||
| dalek | kudo/nom: fb64898 | masak++ | VERSION: [release] bump VERSION |
22:27 | |
|
22:39
whiteknight joined
22:46
pjcj joined
22:47
myhrlin joined
23:12
jsut joined
|
|||
| whiteknight | good evening, #parrot | 23:12 | |
|
23:29
davidfetter joined
|
|||