Parrot 4.3.0 "In Which..." | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 25 April 2012.
nbrown cotto: it would be a good idea for mmaping, but I don't think it would eliminate the special case in the deref op 00:15
cotto: the special case is there to allow us to write "deref S0, CONSTS, S0" and have it do the right thing 00:19
cotto seems I got back at just the right time 00:27
nbrown nice
cotto I definitely want to play with it and see how far it can go. Faster bytecode loading is generally a good thing, provided we're not making any harmful tradeoffs to achieve it. 00:29
nbrown ok, I think it would just require us to change how we use m0 code to access the constants
My comment was about how to remove the special case 00:30
your suggestion should have no effect on our current tests, just the implementations 00:31
cotto that sounds right
nbrown I'll think about how to remove the special case 00:32
cotto that'd be good. M0 should minimize special cases.
nbrown I agree. I was wondering if the reference to a load_const op in the spec was the way to remove that special case 00:33
cotto no such luck 00:34
nbrown or, more accurately, someone's earlier idea about a way to remove that special case
no such luck?
cotto I meant that load_const wasn't a way around the deref special case, just a leftover 00:35
nbrown oh ok, I'll try to figure out another way without introducing a special case op 00:36
cotto a special case op is an option if there's nothing better 00:37
nbrown right, but it should be the last option or optimization choice 00:38
the perl does without a special case, so c should be able to as well
00:46 whiteknight joined
whiteknight I don't know why I'm so stupid. Every 6 months I think to myself "well, the last ubuntu upgrade went terribly, but this time must be better" 00:50
cotto delusion of reprieve 00:56
which actually reminds me that I need to put off upgrading 00:57
done
whiteknight I've done this upgrade three times now. Two VMs updated with no issues whatsoever 01:01
so I decide it's safe to do on my laptop and....fail
nbrown cotto: I think if we can make the CONSTS register in the callframe work correctly, the special case in the deref_op can go away 01:12
cotto: a lot of the special registers and the interpreter data need to be implemented 01:13
cotto nbrown, you mean in the C implementation or in both? 01:15
nbrown C implementation 01:16
the perl one works correctly without special cases because the CONSTS register works
the perl deref op that is
cotto I'm having trouble remembering why the argv test isn't finished. It seems like there's nothing there that needs new ops. 01:19
nbrown I made the implementation pass the test but the test is wrong 01:20
kitten should be the second argument, not the first 01:21
cotto yes
nbrown so I think I cheated by removing the first argument in the C implementation
cotto does it pass because it's TODO'd or does it actually pass?
nbrown c passes because i cheated and removed the first argument 01:22
the test needs to be rewritten to test the second argument
look at lines 42-43 of m0_interp.c 01:23
we need to remove the - 1 and change the index to 0 01:24
cotto got it
nbrown i was being dumb when i did it and cheated, but the test is wrong too
cotto I'm still getting a segfault running that test. 01:27
it explodes when the interp gets to get_byte 01:28
nbrown weird, I don't have that
I'm on windows, but I don't think that should make a difference 01:29
cotto you'd think it wouldn't
especially since the hash test passes 01:30
nbrown exactly
what line was it crashing on?
cotto the one with get_byte
I'm working on commenting/understanding it, so my line numbers are off. 01:31
nbrown do you know which line of c implementation of the get_byte op? 01:32
cotto the last one
*target = (char)src[offset];
nbrown ok, I'll see if I can figure it out
cotto I'm not fully convinced that the test is valid. It's not hard to cause a segfault in m0.
nbrown Which part are you thinking is invalid? 01:33
cotto the string comparison look is the lest understandable 01:34
nbrown my fault, I did it and didn't comment it
cotto no worries. I'm pretty close to done commenting it up real good.
nbrown thank you 01:35
cotto can you nopaste the output when you run that test? 01:38
nbrown what nopaste do people use in here? 01:41
cotto nopaste?
aloha, nopaste?
aloha cotto: nopaste is is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl)
nopaste "nbrown" at 192.168.1.3 pasted "m0_args test output" (4 lines) at nopaste.snit.ch/136438 01:42
nbrown not very helpful :( 01:47
cotto it is. It means that the code tests something like what I expect it to. 01:49
definitely needs to be more robust, but we're also not building a standard library
s/needs to be/could be/
nbrown yeah, i just wrote the simplest string compare I could think of 01:50
cotto oh. I thought I wrote that.
I guess that explains why I don't remember writing it.
mystery solved 01:51
the algorithm is just fine for its intended purpose
nbrown yeah, there was basically no second test when I started 01:52
it's not efficient, it was just the easiest way I could think of in m0
cotto I see you're not among the privileged many with a commit bit. How do you want to collaborate on this? 01:56
dalek rrot/m0: a05aa57 | cotto++ | t/m0/integration/m0_args.m0:
comment up the m0 args test
01:57
cotto If you want a commit bit, I know a guy.
nbrown what do I need to do to get a commit bit?
cotto sign and send in a CLA
aloha, cla?
aloha cotto: cla is www.parrot.org/sites/www.parrot.org...ot_cla.pdf
cotto it basically says that PaFo has a non-exclusive license to use your contributions 01:58
nbrown ok, I'll work in a branch until that goes through
cotto you can scan and email if you like 01:59
nbrown I need to check with someone at work before I sign something like that
cotto ok
do you hack on this stuff at work? 02:00
nbrown no, not at all, but they have rules about me signing those kinds of things without telling them first 02:01
it won't be a problem, I just need to inform them
cotto wfm
dayjobs differ in how much they care what you hack on while you're on the clock 02:02
nbrown yeah, mine wouldn't allow it at all. I do all my parrot work on my own time
brb
cotto mine's pretty chill as long as I get what they need done 02:03
dalek rrot/coke/rm_pasm: 8f7470d | coke++ | t/library/parrotlib.t:
read .pir constant file instead
02:09
rrot/coke/rm_pasm: af8b198 | coke++ | t/op/stringu.t:
convert tests from PASM to PIR

Remove unneeded opcodes in the process.
02:12
nbrown I guess until I get that signed, I'll just keep my m0 branch synced with the parrot one and let you know when there's something of interest for you guys 02:14
cotto I'll be watching.
02:14 eternaleye joined
nbrown sounds good 02:16
cotto: random question, is there a long term goal to write a c m0 assembler too? or are we just going to use the perl one? 02:23
cotto nbrown, good question. It's not as important, but it wouldn't hurt. 02:24
nbrown ok, that's what I guessed 02:25
cotto fast execution is much more important than fast assembly
nbrown yep 02:26
alright, I'm fading. Time for bed, good night 02:29
dalek rrot/coke/rm_pasm: d8551ba | coke++ | t/dynoplibs/time_old.t:
convert PASM test to PIR
03:01
rrot/coke/rm_pasm: f9f622d | coke++ | / (3 files):
switch macro to PIR and remove PASM variants.

No need to change t/ usage, was updated earlier.
rrot/coke/rm_pasm: 3cd264b | coke++ | t/dynoplibs/trans-old.t:
convert PASM tests to PIR

  * create helper sub, DRY
  * split up some combined tests
  * remove unneeded p5 use
rrot/coke/rm_pasm: b9ba887 | coke++ | t/library/osutils.t:
convert remaining .pasm -> .pir includes

  (missing /g on initial convert?)
03:34
rrot/coke/rm_pasm: 8c9bcc1 | coke++ | t/dynoplibs/sysinfo.t:
Remove some duplicate PASM tests
rrot/coke/rm_pasm: 9f9a379 | coke++ | t/dynoplibs/io-old.t:
convert PASM tests to PIR
rrot/coke/rm_pasm: f016f0b | coke++ | t/dynoplibs/debug.t:
remove useless 'use'
rrot/coke/rm_pasm: 8ca0a52 | coke++ | t/dynoplibs/debug.t:
remove stale, commented out SKIP
rrot/coke/rm_pasm: e9a69b2 | coke++ | t/dynoplibs/debug.t:
convert PASM tests to PIR
rrot/coke/rm_pasm: 1b524d7 | coke++ | t/dynoplibs/debug.t:
don't globally skip a test that fails one place.

if this still fails on windows, todo it there.
rrot/coke/rm_pasm: ec1394a | coke++ | t/src/extend.t:
Convert PASM to PIR
cotto wheeee 03:43
dalek rrot/coke/rm_pasm: 5d35f31 | coke++ | t/compilers/imcc/syn/macro.t:
convet PASM test to PIR

  (Doesn't look like the PASM tests are duplicates here, so convert)
03:44
rrot/coke/rm_pasm: 5c22a89 | coke++ | / (2 files):
remove PASM specific test
04:09
rrot/coke/rm_pasm: b377f96 | coke++ | t/op/calling.t:
convert PASM tests to PIR
04:18 lateau joined
Coke msg moritz: only 26 test files still failing at this point in coke/rm_pasm. many of those tests are just changing the pasm_* tests to pir_* tests. (though some are more complicated) 04:18
aloha OK. I'll deliver the message.
Coke cotto: if we get rm_pasm to a point where a) all tests pass, b) we successfully rip PASM out of imcc (right now you can't run a .pasm file, but if /include/ a .pasm file, it'd probably still work.), what are the odds we can merge it? 04:20
or, a more easily answerable version: can you think of any blockers/reasons NOT to merge it? 04:21
zzz
cotto Coke, my only concern is that we make sure that languages that care will continue to work as normal. 04:36
If we can do everything we do now without pasm, it won't be missed.
coke++ 04:38
07:17 fperrad joined 07:18 fperrad_ joined
dalek rrot/m0: 50bf1d7 | cotto++ | src/m0/perl5/m0_interp.pl:
fix p5 interp to encode cli arguments as M0 strings
07:44
rrot/coke/rm_past: 90c6d51 | moritz++ | t/op/lexicals.t:
remove PASM specific lex tests
08:12
rrot/coke/rm_past: 490409f | moritz++ | t/op/basic.t:
start to write pasm tests in pir
rrot/coke/rm_past: 91571ac | moritz++ | t/op/interp.t:
more pasm->pir test rewriting
08:19
rrot/coke/rm_past: 2d0694e | moritz++ | t/dynoplibs/sysinfo.t:
[sysinfo.t] pasm -> pir. Needs testing on windows
08:25 lucian joined
dalek rrot/coke/rm_past: 0a63661 | moritz++ | t/pmc/object-meths.t:
remove broken PASM test
08:30
08:31 brrt joined 08:54 fperrad joined
dalek rrot/coke/rm_past: 75430d1 | moritz++ | t/op/jit.t:
[jit.t] convert the first ~40 pasm tests to PIR
08:55
08:58 lucian joined 09:40 schmooster joined 10:01 schmooster joined 10:15 ligne joined 10:26 lucian joined 10:30 brrt joined 10:32 schmooster joined 10:47 kid51 joined 11:08 lucian joined
Coke moritz++ # we still have jit tests? 12:19
moritz: we seem to be working on 2 different branches. 12:21
moritz: I probably typoed pasm at some point when adding a remote tracking branch on one of my 2 checkouts of that branch. arglebargle. 12:24
dalek kudo/nom: 7845b8d | tadzik++ | src/core/terms.pm:
Implement setting env variables by modifying %*ENV
12:29
kudo/nom: 616b622 | tadzik++ | src/core/terms.pm:
Fix a braino. benabik++ for noticing
kudo/nom: 110f35c | tadzik++ | src/core/terms.pm:
Merge branch 'setenv' into nom
Coke moritz: ah. it may have been you: looks like only six commits differ on coke/rm_past, and they're all from you. I'll merge them over to coke/rm_pasm. 12:38
12:39 jashwanth joined
dalek rrot/coke/rm_pasm: 90c6d51 | moritz++ | t/op/lexicals.t:
remove PASM specific lex tests
12:39
rrot/coke/rm_pasm: 490409f | moritz++ | t/op/basic.t:
start to write pasm tests in pir
rrot/coke/rm_pasm: 91571ac | moritz++ | t/op/interp.t:
more pasm->pir test rewriting
rrot/coke/rm_pasm: 2d0694e | moritz++ | t/dynoplibs/sysinfo.t:
[sysinfo.t] pasm -> pir. Needs testing on windows
rrot/coke/rm_pasm: 0a63661 | moritz++ | t/pmc/object-meths.t:
remove broken PASM test
rrot/coke/rm_pasm: 75430d1 | moritz++ | t/op/jit.t:
[jit.t] convert the first ~40 pasm tests to PIR
Coke Ok. 24 failing tests in branch remaining. moritz++ 12:48
(and one of those fails for me in master.)
12:55 PacoAir joined 13:04 whiteknight joined
whiteknight good morning, #parrot 13:06
13:09 PacoAir_ joined 13:12 JimmyZ joined
Coke Anyone wants to convert tests in that branch while I'm at $dayjob, lemme know. ;) 13:16
dalek rrot/m0-c-args-fix: 2638f9f | cotto++ | / (3 files):
update cm0 to encode cli arguments as M0 strings

The code emits a warning and needs a bit of cleanup, but the new args_basic test successfully prints out its first arg. Issues with the m0_args.t are probably due a bug in that test.
13:20
JimmyZ cotto++ for M0 13:44
14:27 jsut joined 14:30 schmooster joined 15:07 JimmyZ joined 15:11 dmalcolm joined
cotto ~~ 15:57
I love the smell of parrots in the morning. 15:58
seen nbrown
aloha nbrown was last seen in #parrot 13 hours 29 mins ago saying "alright, I'm fading. Time for bed, good night".
cotto msg nbrown I think part of the problem I was seeing with m0 arg handling was that args weren't being turned into m0 strings. 15:59
aloha OK. I'll deliver the message.
JimmyZ would like to clean up some branches 16:00
cotto JimmyZ: what specifically are you thinking about doing? 16:02
JimmyZ cotto: nope, there are too many branches, 103. 16:06
cotto sure. which ones were you thinking about nuking?
JimmyZ cotto: maybe some gci branches and ttXXX branches, which about 1-2 years ago. 16:08
cotto JimmyZ: when you have a list of candidates, make sure to send them to parrot-dev before deleting them 16:09
JimmyZ cotto: will do
cotto pruning branches is great, but we obviously don't want to lose anything of value. Bonus points if you find something merge-worthy and merge it. 16:11
benabik o/ #parrot 16:15
cotto hio, gsoc student
benabik greetings, mentor. 16:16
cotto it's a good day for menting 16:19
JimmyZ cotto: yep 16:20
cotto all kinds of warnings build cm0 on x86 16:23
16:27 brrt joined 16:32 mtk joined 17:01 PacoAir joined 17:09 dukeleto joined
dalek rrot/pct_winxed: 1664578 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
PCT: PAST.Compiler.as_post basics

The default, Integer, Float, and String versions of as_post()
17:16
rrot/pct_winxed: 4436b32 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
PCT: PAST.Compiler.as_vivipost
rrot/pct_winxed: d6b74d3 | benabik++ | ext/winxed/ (2 files):
Update Winxed snapshot to 4006a0b

Fixes qualified class declarations
rrot/pct_winxed: b3417fa | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
PCT: PAST.Compiler.as_post for Node and Stmt

I don't see a way in Winxed to refer to a single version of a multi, so I split the common code out into another method.
whiteknight benabik++ 17:19
dalek rrot/coke/rm_past: 711f6c6 | moritz++ | t/op/jit.t:
port some more PASM tests to PIR
17:34
benabik I was about to comment that this would go faster if I wasn't running `make test codetest` after every commit, but it just caught an error, so I'll accept the slowdown. :-D 17:38
dalek kudo/nom: c7bf334 | jnthn++ | src/ (3 files):
Make //=, ||= and &&= thunky with their RHS.
17:39
kudo/nom: 1c92d0a | jnthn++ | src/core/List.pm:
The splice implementation relied on the previously incorrect semantics of //= in a rather subtle way. This makes it work again now //= is fixed.
Coke moritz: you pushed to rm_past again. 17:41
moritz Coke: did I create merge conflicts?
Coke no, just a new branch. 17:42
moritz oh dammit
too many ^pa abbreviations 17:43
Coke I assume a typo with the manual adding of an origin. ;
aye.
I merged the other commits over, that's the only spare one, I think.
moritz thanks
dalek rrot/coke/rm_pasm: 711f6c6 | moritz++ | t/op/jit.t:
port some more PASM tests to PIR
17:44
moritz nope it comes out better this time
dalek rrot/pct_winxed: 1202f2c | benabik++ | compilers/pct/src/PAST/Compiler.winxed:
PCT: PAST.Compiler - add repeat inline
17:46
rrot/pct_winxed: 5629791 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
PCT: PAST.Compiler.as_post(PAST.Control)
cotto you can't erase the past
17:48 brrt joined
Coke wonders why we have a t/op/jit.t when we have no JIT. 17:57
Coke assumes it's a test that needs renaming.
benabik Optimisim? 17:58
whiteknight I would assume it's a test worth deleting
cotto when we had a jit, it tested code that would get jitted. There's not much value in it now. 17:59
so +1 to deleting
moritz Coke: it tests register allocation stuff and some pretty basic things 18:03
18:05 lucian joined
dalek rrot/pct_winxed: 52fc553 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
PCT: PAST.Compiler.push_exception_handler in Winxed
18:08
dukeleto ~~ 18:12
cotto hi dukeleto 18:14
dukeleto cotto: wazzup
+1 to deleting jit-related tests 18:15
18:18 dmalcolm joined
moritz they are pretty generic tests, they just have 'jit' in the name 18:19
whiteknight most of those things are already covered in the t/compilers/imcc/syn/*.t tests 18:20
Coke whiteknight: as long as it's not in syn/pasm.t 18:21
whiteknight heh 18:22
Coke so, this is going faster than I expected. 18:23
dalek kudo/nom: 5ea23bc | moritz++ | src/Perl6/Actions.pm:
make a sub lexcical
18:24
kudo/nom: 2da78a1 | moritz++ | src/Perl6/Compiler.nqp:
[REPL] catch and print errors from stringification
Coke will send out an email in a bit asking if anyone is using PASM.
Coke ah, dukeleto is here: any thoughts on removing PASM, other than "ask nicely if anyone is using it" ?
benabik I've been pondering it. It would be an apocalyptic change. Very little code written before PASM removal will work because of include/*.pasm 18:26
whiteknight the include/*.pasm stuff should still work, that's built into IMCC's PIR mode 18:27
Coke right, but what are people using those .pasm files for?
whiteknight You guys aren't ripping it out of IMCC, right?
Coke whiteknight: sure.
whiteknight mostly compile-time constants
Coke this branch is removing it entirely.
benabik Access to the interp, exception types, character classes. 18:28
Coke and those compile-time constants work fine when you rename .pasm to .pir
benabik I'm not saying the code can't be fixed, just that it will have to be fixed.
Coke benabik: workaround: allow .pasm as an alias for .pir 18:29
whiteknight Coke: I don't know if you'll be able to completely rip all PASM support out of IMCC. I think that's a quagmire
PASM and PIR modes are pretty closely inter-related 18:30
removing the "PASM" compreg would be easy to do
recommended, even
dukeleto Coke: in general, i am +1 to removing PASM as long as it doesn't hurt our users. 18:33
We should probably write a blog post on parrot.org that describes why we are removing pasm, what it means for HLLs devs and describe any non-backcompat changes that are being made
PerlJam dukeleto: even if it's just temporary pain?
dukeleto PerlJam: see above :) 18:34
PerlJam aye. :)
+1 to that
dukeleto PerlJam: i am ok with a small amount of temp pain as long as stuff improves and is joyous after that :)
benabik We could have .include do a little s/\\.pasm/.pir/ and print a warning.
dukeleto benabik: not a bad idea for a transition period
benabik realizes he suggested adding code to IMCC. 18:35
dukeleto is moving out of his old place, moving into temp housing and hopefully getting keys to a House.new() on Wednesday. I hope.
so my tuits will be 0, negative or imaginary for the next few days
i have told jashwanth to email parrot-dev questions and cc me
whiteknight dukeleto: good luck with all that
dukeleto whiteknight: aye aye, captain!
There was actually *a bug* in the mortgage software which delayed my closing 3 days. 18:36
Yes, *a bug* in the mortgage software. The nerve!
whiteknight thats....absurd
dukeleto My APR was wrong and everything needed to be done, which causes a 3 day federal waiting period to come into effect
whiteknight When you've got hundreds of thousands of dollars depending on that software working properly per mortgage, possibly thousands of mortgages, you make sure that shit works
dukeleto whiteknight: my life is absurd right now. Moving my future wife, a cat and a turtle into my friends house for a few days, and everything I own is in a POD that will be delivered to a house I don't yet own today 18:37
whiteknight ouch
dukeleto whiteknight: yeah. 'tis all good. I have embraced the madness by now. it almost feels normal :)
whiteknight I can't offer more than vague moral support, from 3000 miles away
dukeleto whiteknight: reading your blog posts about your house hunt gave me moral support :) 18:38
whiteknight dukeleto: my poor wife was exposed to curse words that no mortal should have to be exposed to
there was much weeping and gnashing of teeth 18:39
benabik had his home purchasing go fairly well, which is why he's happy to not have to do it again. 18:41
whiteknight My wife says we're going to die in this house, since she's so frightened of trying to buy another one
moritz fwiw in the rm_pasm branch, all those include files are just .pir files the same contents as before 18:48
whiteknight moritz: Do they work with the .include directive like normal? 18:49
moritz whiteknight: well, you have to change the file name in the .include. But apart from that, yes 18:50
whiteknight okay, awesome
Rosella uses a few of those include files, I'll have to update that. I'll also have to make sure winxed can handle a .pir include file 18:51
dalek rrot/pct_winxed: 0dc14b1 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
PCT: PAST.Compiler.wrap_handlers in Winxed
19:03
19:03 lucian joined
Coke moritz: offline for a bit, will look here before hacking on rm_pasm again. 19:06
whiteknight rm_pasm branch makes me happy 19:19
cotto +1
whiteknight Coke++, moritz++ for working on it
20:11 schmooster joined
moritz Coke: I won't do any more rm_pasm hacking tonight 20:14
dalek p/toqast: ea5e3c6 | jnthn++ | src/QAST/Compiler.nqp:
BlockInfo methods to register parameter and variable declarations, tracking the native type and register vs. local.
20:19
20:21 perlite joined 20:25 lucian joined
dalek p/toqast: 8ee175e | jnthn++ | src/QAST/Compiler.nqp:
Allocate registers for lexicals at the point of declaration, including params. Also (untested) code gen for lexical and local declarations, including natively typed ones.
20:39
20:47 contingencyplan joined
dalek rrot/m0-c-args-fix: 525be62 | cotto++ | src/m0/perl5/m0_interp.pl:
remove a stray newline from the p5 m0 interp
21:12
21:12 brrt joined 21:14 brrt left 22:06 whiteknight joined 22:43 kid51 joined 23:19 whiteknight joined
whiteknight I'm back! 23:20
cotto How do we know you're the real whiteknight?
You could be his kid or his dog.
whiteknight ask me a question that requires experience and expertise to get right. The real whiteknight will get it wrong
or better yet, ask me my opinion about IMCC. The real whiteknight has a particular response 23:21
cotto If I had a dog, he'd probably know my opinion of imcc.
whiteknight everytime he hears that word, he hides under the table 23:23
23:55 alvis` joined, alvis` left