Camelia, the Perl 6 bug

IRC log for #parrot, 2012-03-22

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:03 whiteknight good evening, #parrot
00:04 whiteknight nine++
00:08 jsut_ joined #parrot
00:22 cogno joined #parrot
00:24 Coke good morning.
00:25 whiteknight hello Coke
00:26 Coke good night. 12:30 here, need sleep.
00:42 benabik joined #parrot
00:44 benabik nine++ (catching up on some backlog)
00:47 GodFather joined #parrot
00:59 whiteknight oh man, I opened a can of worms with this IMCC work
00:59 whiteknight 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
00:59 benabik whiteknight: You touched IMCC?  You're a braver man than...  wait, I just committed to IMCC too, didn't I?
01:00 benabik whiteknight: How so?
01:00 whiteknight I'm on my branch, rewriting the way :immediate and :postcomp work
01:00 benabik ... to what?
01:00 whiteknight in master, when a Sub is compiled IMCC checks if it's an :immediate. If so, it calls PackFile_fixup_subs
01:01 whiteknight PackFile_fixup_subs iterates over the entire constants table, looking for immediate subs
01:01 whiteknight so for every sub, we iterate over all constants
01:01 whiteknight every time
01:01 benabik Wait, what?
01:01 whiteknight And then, for good measure, we iterate the whole collection again after compilation, to make sure we don't miss any
01:01 benabik For every :immediate sub, I hope.
01:01 whiteknight AND THEN we iterate again looking for :postcomp subs
01:01 whiteknight yeah, only for :immediates
01:01 benabik This sounds... LTA
01:01 whiteknight yeah, I'm fixing it
01:02 whiteknight now when we compile a sub, we keep a reference to it and we just execute it directly
01:02 whiteknight no looping
01:03 dalek parrot/remove_sub_flags: fb8119f | Whiteknight++ | / (5 files):
01:03 dalek parrot/remove_sub_flags: 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 dalek parrot/remove_sub_flags: review: https://github.com/parrot/parrot/commit/fb8119f382
01:03 whiteknight that should fix a broken test or two
01:15 contingencyplan joined #parrot
01:32 jsut joined #parrot
01:43 whiteknight ah, needed one more fix to get some tests to pass
01:48 dalek parrot/remove_sub_flags: 422f859 | Whiteknight++ | compilers/imcc/pbc.c:
01:48 dalek parrot/remove_sub_flags: Only store the result of an :immediate sub if it's non-null. This fixes at least t/dynpmc/subproxy.t
01:48 dalek parrot/remove_sub_flags: review: https://github.com/parrot/parrot/commit/422f859379
01:49 dalek parrot/remove_sub_flags: 0945f74 | Whiteknight++ | t/dynpmc/ (2 files):
01:49 dalek parrot/remove_sub_flags: Fix a few more tests before bed
01:49 dalek parrot/remove_sub_flags: review: https://github.com/parrot/parrot/commit/0945f74091
01:52 whiteknight okay, that's it for tonight
01:52 benabik whiteknight++
02:02 jsut_ joined #parrot
03:22 cotto ~~
04:02 preflex_ joined #parrot
04:27 davidfetter joined #parrot
05:55 dalek parrot: d344da6 | petdance++ | src/ (4 files):
05:55 dalek parrot: quiet some unused variable warnings
05:55 dalek parrot: review: https://github.com/parrot/parrot/commit/d344da6cbc
06:02 mdupont joined #parrot
06:23 fperrad joined #parrot
08:28 perlite joined #parrot
09:28 lucian joined #parrot
10:26 schm00ster joined #parrot
10:32 wknight-phone joined #parrot
11:42 benabik joined #parrot
11:57 benabik Good morning, #parrot
11:58 tadzik hello benabik
12:17 whiteknight joined #parrot
12:20 whiteknight good morning, #parrot
12:20 benabik o/ whiteknight
12:20 whiteknight hello benabik
12:40 tadzik o/
12:41 benabik o/ tadzik
12:41 JimmyZ joined #parrot
14:07 lucian joined #parrot
14:19 p6eval joined #parrot
14:22 lateau joined #parrot
14:29 mtk joined #parrot
14:51 dalek Rosella: 6247747 | Whiteknight++ | src/ (34 files):
14:51 dalek Rosella: merge optional_args branch, fix conflicts
14:51 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/62477478cb
14:51 dalek Rosella: 15ead1b | Whiteknight++ | / (5 files):
14:51 dalek Rosella: [Build] Fix build. Some constructs are not currently allowed by Winxed as parameter default values. For now, work around those limitations.
14:51 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/15ead1b11a
15:00 benabik joined #parrot
15:07 PacoAir joined #parrot
15:11 benabik joined #parrot
15:33 lateau joined #parrot
15:34 benabik joined #parrot
15:38 dalek Rosella: e494eb0 | Whiteknight++ | src/string/String.winxed:
15:38 dalek Rosella: [String] Add a new String.to_integer utility, borrowed from the String::Utility library in the standard parrot runtime.
15:38 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/e494eb0858
15:44 whiteknight msg NotFound optional params have a few problems that I've been finding: https://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 #parrot
15:58 dmalcolm joined #parrot
17:18 mj41 joined #parrot
17:23 nine Good evening, #parrot
17:23 * Coke chuckles at the suggestion to remove PGE.
17:24 dalek rakudo/slurpy-sequence: 0604d1b | moritz++ | src/core/ (3 files):
17:24 dalek rakudo/slurpy-sequence: bring back sequences with slurpy generators
17:24 dalek rakudo/slurpy-sequence: review: https://github.com/rakudo/rakudo/commit/0604d1bf00
17:24 benabik Is anything still using PGE?  Does nqp-rx use it?
17:36 aloha (parrot/parrot) Issues opened : 746 (Create PARROT_STATIC_ASSERT) by petdance : https://github.com/parrot/parrot/issues/746
17:37 hercynium joined #parrot
17:51 whiteknight yeah, I think NQP-rx uses PGE
17:51 whiteknight no, wait. that's what the -rx is, it has its own regex engine
17:51 whiteknight several bits of the build do rely on PGE, but I don't know if those bits are also good to be removed
17:52 whiteknight data_json and yaml::Tiny do, I think
17:59 nine is there a way to get a pasm file for a given pir file?
18:01 whiteknight nine: short answer, no
18:01 whiteknight 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
18:01 whiteknight that got ripped out
18:02 whiteknight you can use pbc_disassemble or pbc_dump to get a readable approximation
18:03 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:17 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:18 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
18:19 benabik whiteknight: Yeah, Keys need introspection and creation that can handle register values.  I think I opened an issue for it?
18:20 cotto ~~
18:31 whiteknight benabik: yeah, there's an issue for it. I just haven't gotten to it yet
18:32 benabik whiteknight: No rush yet, although if I do a PACT assembler, it would be basically required.
18:32 benabik (for GSoC)
18:36 * benabik should probably finish his "introductory" e-mail to -dev.
18:41 whiteknight yeah, otherwise we'll have no idea who you are!
18:42 tadzik heh
18:42 benabik I like to obey the forms.  :-D
18:50 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:51 benabik :-(
18:53 hercynium joined #parrot
18:54 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.
19:08 whiteknight nine: Yeah, like I said. NameSpace is known to be the worst thing ever
19:09 benabik Worse than IMCC?
19:09 whiteknight benabik: arguably, IMCC is just a large complicated engine for creating namespaces
19:09 benabik whiteknight: hah
19:09 moritz rakudo has stopped using parrot namespaces
19:09 whiteknight moritz: exactly! That means we can rip them out
19:09 whiteknight we'll tolerate any horrible code that Rakudo is relying on
19:10 benabik moritz: What does it use instead?
19:11 moritz rakudo: module A { }; say A.WHO.WHAT
19:11 p6eval rakudo 1a468d: OUTPUT«Stash()␤»
19:11 moritz benabik: Stash
19:11 moritz rakudo: say Stash ~~ Hash
19:11 p6eval rakudo 1a468d: OUTPUT«True␤»
19:11 moritz it's a Perl 6 object, fittingly
19:12 benabik Does NQP still use Parrot's namespaces?
19:12 moritz I don't know
19:13 benabik Fair enough
19:13 whiteknight NQP-rx does. New NQP does not
19:13 whiteknight at least, I don't think it does. Not explicitly
19:13 whiteknight it does implicitly jam symbols into the 'parrot' namespace or the 'NQP' HLL namespace
19:13 whiteknight but there's no way to turn that off
19:13 whiteknight not yet
19:13 whiteknight :)
19:15 moritz we're happy to hand commit bits to anybody who awesomizes nqp :-)
19:16 moritz I'd love to have the ability to give commit access to all parrot committers from within the perl6 organization
19:17 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 whiteknight 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
19:19 whiteknight and the dyncall stuff would have been great to have in core
19:19 moritz agreed
19:21 contingencyplan joined #parrot
19:22 whiteknight one way or another, I'm going to get 6model into Parrot core this year
19:24 dukeleto ~~
19:24 dukeleto moritz: you could create a parrot team in the perl6 org
19:25 dukeleto 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:36 whiteknight it's really not so big a deal, yet
19:36 whiteknight 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?
19:37 benabik pull request, I would assume.
19:37 benabik I think I submitted a pull request and got a commit bit a few months back.  :-D
19:38 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
19:38 nine :)
19:39 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
19:39 whiteknight yeah, we've fixed that infelicity, but it's still far from perfect
19:41 whiteknight the real solution is to avoid PIR and use Winxed or NQP instead
19:41 benabik winxed++
19:41 benabik NotFound++
19:42 * 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
19:43 benabik Although it probably won't be very appealing to write by hand.
19:44 nine benabik: I used to write x86 assembly as a kid. How bad can your new thing be? ;)
19:45 particle dukeleto: s/flavor/breed/
19:46 dukeleto particle: sure, sounds fine to me.
19:47 dukeleto particle: we can have a lot of fun with that...
19:47 particle precisely. -Ofun
19:47 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 #parrot
19:48 whiteknight benabik: variable names should not be too difficult, if you leave scoping flat and boring
19:48 whiteknight have a hash that's a simple mapping table from varname to register alias
19:48 whiteknight then when you parse you can do the translation on the fly
19:49 whiteknight regname = is_reg(var) ? var : symbol_table[var];
19:50 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:51 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.
19:51 dukeleto benabik: m0 has no magic
19:52 dukeleto benabik: because it is "magic level 0" :)
19:52 benabik dukeleto: Yes, eventually.
19:52 benabik dukeleto: Then there might be 4 assemblies in my perfect world.  :-D
19:52 dukeleto benabik: sounds fine to me.
19:53 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 benabik Static single assignment control flow graphs for _everybody_.
19:54 dalek rakudo/slurpy-sequence: 048f1b7 | moritz++ | docs/announce/2012.03:
19:54 dalek rakudo/slurpy-sequence: add first draft of 2012.03 release announcement
19:54 dalek rakudo/slurpy-sequence: review: https://github.com/rakudo/rakudo/commit/048f1b7fd4
19:55 moritz oops, wrong branch
19:55 benabik The goal, from my point of view, is to give everyone a good environment for optimization.  :-)
19:55 dalek rakudo/nom: 4c7f568 | moritz++ | docs/announce/2012.03:
19:55 dalek rakudo/nom: add first draft of 2012.03 release announcement
19:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4c7f568762
19:58 benabik Although I suppose that zero-magic assembly should really be a series of PACT.Packfile nodes or some such.
20:04 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 whiteknight I don't feel like an explicit name->register mapping adds any magic
20:07 nine I certainly don't see register names like eax and ebx as magic
20:08 benabik tax is like $P0
20:08 benabik *eax
20:08 benabik Even then, raw PCC and probably interesting things with subs and namespaces.
20:11 root_ joined #parrot
20:17 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:25 dukeleto whiteknight: that is what the m0 parser does
20:25 dukeleto whiteknight: it is line-based
20:26 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:27 whiteknight while(line = file.readline()) { var tokens = split_on_whitespace(strip_t​railing_whitespace(line)); var ins = instructions[tokens[0]].parse(tokens); push(output, ins); }
20:27 whiteknight there's your assembler, minus the details
20:28 whiteknight well, the parser for your assembler
20:28 whiteknight then it's a call to emitter.generate(output)
20:31 whiteknight anyway, I'll be back later tonight to hear complaints about that snippet
20:52 dalek nqp: fd67256 | masak++ | VERSION:
20:52 dalek nqp: bump VERSION to 2012.03
20:52 dalek nqp: review: https://github.com/perl6/nqp/commit/fd6725660a
20:55 dalek rakudo/nom: 77dcb04 | masak++ | tools/build/NQP_REVISION:
20:55 dalek rakudo/nom: [tools/build/NQP_REVISION] to latest NQP release
20:55 dalek rakudo/nom:
20:55 dalek rakudo/nom: ...and it's only minutes old! That's how current we are!
20:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/77dcb04420
21:04 cotto benabik++
21:04 benabik ack?  what?
21:04 cotto pact email
21:05 cotto sorry.  my brain is fried from 3 days of conference stuff
21:06 benabik cotto: Hopefully there was some enjoyment to be had along the way.
21:07 cotto definitely.  I even ran into ingy
21:07 tadzik ha, how's he doing?
21:07 cotto he seemed to be his normal self
21:21 darbelo joined #parrot
21:32 dalek rakudo/nom: c15aecd | masak++ | docs/announce/2012.03:
21:32 dalek rakudo/nom: [docs/announce/2012.03] finalized
21:32 dalek rakudo/nom:
21:32 dalek rakudo/nom: s/TODO/Argentina/. other small fixes.
21:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c15aecd5a7
21:35 dalek rakudo/nom: 5dab131 | masak++ | docs/announce/2012.03:
21:35 dalek rakudo/nom: [docs/announce/2012.03] s/February/March/
21:35 dalek rakudo/nom:
21:35 dalek rakudo/nom: pmichaud++ eagle eyes.
21:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5dab131b1d
21:40 pmichaud I will get autoviv working before the next release.
21:40 pmichaud I didn't realize it wasn't working.
21:40 pmichaud oops, wrong chan
21:42 dalek rakudo/nom: 5dda9a7 | masak++ | docs/release_guide.pod:
21:42 dalek rakudo/nom: [docs/release_guide.doc] current release => past
21:42 dalek rakudo/nom:
21:42 dalek rakudo/nom: Also extended the future a little.
21:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5dda9a7142
22:09 nine How should I call an op which simply ends the current task?
22:16 sri joined #parrot
22:17 nine Called it 'terminate' for now but I will probably not need it in the long term anyway
22:20 mj41 joined #parrot
22:27 dalek rakudo/nom: fb64898 | masak++ | VERSION:
22:27 dalek rakudo/nom: [release] bump VERSION
22:27 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fb648983db
22:39 whiteknight joined #parrot
22:46 pjcj joined #parrot
22:47 myhrlin joined #parrot
23:12 jsut joined #parrot
23:12 whiteknight good evening, #parrot
23:29 davidfetter joined #parrot

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

Parrot | source cross referenced