Camelia, the Perl 6 bug

IRC log for #parrot, 2011-06-10

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:14 mikehh left #parrot
00:15 bubaflub joined #parrot
00:16 bubaflub left #parrot
00:23 mikehh joined #parrot
00:39 cotto_work msg dukeleto an interesting first use for M0 metadata would be to store file and line information
00:39 aloha OK. I'll deliver the message.
00:43 dukeleto cotto_work: pong
00:44 dukeleto cotto_work: i have been thinking about bytecode hashing and signing
00:51 whiteknight cotto_work: s/interesting/mandatory/
01:02 soh_cah_toa yeah. i highly agree :)
01:05 davidfetter left #parrot
01:10 mtk left #parrot
01:11 cotto ~~
01:12 dalek TT #2131 created by whiteknight++: pbc_merge discards annotations
01:12 dalek TT #2131: http://trac.parrot.org/parrot/ticket/2131
01:17 mtk joined #parrot
01:23 cotto dukeleto, what have you been thinking?
01:25 cotto dukeleto, also, do you have any alternatives to using labels in set_imm?
01:28 dalek TT #2132 created by whiteknight++: NQP-rx does not use "file" annotations
01:28 dalek TT #2132: http://trac.parrot.org/parrot/ticket/2132
01:40 whiteknight it's almost absurd how little annotations are working throughout our entire toolchains
01:41 whiteknight people must not be using annotations very much, to be missing all these problems
01:41 whiteknight and we clearly have no tests for them. And no tests for pbc_merge either
01:42 cotto pbc_merge is part of the build.  It's the underuse of annotations that's left this problem unexposed for so long.
01:42 cotto not a big part though
01:43 soh_cah_toa yeah, they've definitely caused me to think about my project a little differently
01:48 kid51 joined #parrot
01:49 kid51 NotFound ping
01:51 kid51 msg NotFound To which email address should questions about winxed, the winxed web site, etc. be directed? (particularly from newbies or non-parrot folk)
01:51 aloha OK. I'll deliver the message.
01:52 dalek Rosella: e9ee1c3 | Whiteknight++ | src/winxed/Distutils.winxed:
01:52 dalek Rosella: fix the winxed lib again. modern winxed really hates 'using static'
01:52 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/e9ee1c30ce
01:52 dalek Rosella: f0e7550 | Whiteknight++ | / (5 files):
01:52 dalek Rosella: Rearrange t/harness because FileSystem is a stable lib now
01:53 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/f0e7550280
01:53 dalek Rosella: fdebbe0 | Whiteknight++ | t/ (2 files):
01:53 dalek Rosella: Add a new test directory for sanity tests written in winxed (to prove we can use winxed for tests, not just NQP)
01:53 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/fdebbe0514
01:53 whiteknight left #parrot
01:53 dukeleto cotto: reading up about cryptographic hashes and digital signatures and whatnot
01:53 * dukeleto would love to see more annotation tests
01:55 cotto dukeleto, I'm fine with it if we can do what we claim to do well.
02:04 dalek parrot: 0b40e95 | dukeleto++ | runtime/parrot/library/Digest/sha256.pir:
02:04 dalek parrot: We (sadly) don't yet again have a JIT runcore
02:04 dalek parrot: review: https://github.com/parrot/parrot/commit/0b40e95228
02:09 kid51 left #parrot
02:12 woosley joined #parrot
02:17 cotto dukeleto, whatever we do, we need to be sure we define it well.
02:18 dalek parrot: 297c935 | dukeleto++ | t/library/sha.t:
02:18 dalek parrot: [t] Add a sha256 test for a large string containing newlines
02:18 dalek parrot: review: https://github.com/parrot/parrot/commit/297c935cb3
02:28 shachaf_ left #parrot
02:32 soh_cah_toa left #parrot
02:57 dalek parrot: d9d9df8 | mikehh++ | MANIFEST:
02:57 dalek parrot: re-generate MANIFEST
02:57 dalek parrot: review: https://github.com/parrot/parrot/commit/d9d9df8ba9
02:57 dalek parrot: 3cd4b91 | mikehh++ | .gitignore:
02:57 dalek parrot: add generated winxed files to .gitignore
02:57 dalek parrot: review: https://github.com/parrot/parrot/commit/3cd4b91091
02:57 dalek parrot: 256e9da | mikehh++ | MANIFEST.SKIP:
02:57 dalek parrot: re-generate MANIFEST.SKIP
02:57 dalek parrot: review: https://github.com/parrot/parrot/commit/256e9da042
03:05 cotto dukeleto, feel free to add your thoughts to pdd 32
03:07 janus joined #parrot
03:19 hudnix left #parrot
03:27 davidfetter joined #parrot
03:29 mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_4_0-196-g256e9da
03:29 mikehh Ubuntu 11.04 i386 (g++ --optimize)
03:31 * mikehh this is rediculous - what am I doing awake at this time - have an appointment in 4 hours
03:34 cotto goto sleep
03:35 mikehh cotto: ha - ain't working for me at the moment
03:35 mikehh sleep that is
03:37 particle left #parrot
03:39 cotto mikehh, that's because you're on #parrot
03:40 cotto I sleepchat all the time, but I always fall asleep first.
03:40 benabik And trying to sleep on a bird isn't comfortable.
03:47 mikehh especially if it pecks me as I try to sleep
03:48 mikehh anyway I shall make another attempt - it's nearly 5am for me :-}
03:49 * mikehh but better set the alarm first, otherwise I will be in deep trouble :-}
04:19 davidfetter left #parrot
05:37 particle joined #parrot
05:42 theory joined #parrot
06:12 cotto I seriously need someone to stand over me when I'm coding and smack my hands with a ruler every time I start to type something without having thoroughly thought about it first.
06:27 cotto dukeleto, happy time
06:27 dalek parrot/m0-prototype: 14ba3e8 | cotto++ | / (2 files):
06:27 dalek parrot/m0-prototype: make the interp pass around a reference to the current call frame
06:27 dalek parrot/m0-prototype:
06:27 dalek parrot/m0-prototype: Passing around a reference to the current call frame makes it possible
06:27 dalek parrot/m0-prototype: for ops to change which call frame is currently active.  This and an
06:27 dalek parrot/m0-prototype: off-by-one fix in poke_caller get poke_caller working as expected.
06:27 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/14ba3e82ca
06:27 dalek parrot/m0-prototype: febedca | cotto++ | src/m0/perl5/m0_interp.pl:
06:27 dalek parrot/m0-prototype: simplify op execution loop a bit
06:27 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/febedcaa97
06:27 dalek parrot/m0-prototype: 0a4fdd0 | cotto++ | t/m0/m0_assembler.t:
06:27 dalek parrot/m0-prototype: update assembler tests
06:27 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/0a4fdd0c29
06:27 dalek parrot/m0-prototype: 77de53a | cotto++ | t/m0/basic/hello_canon.m0b:
06:27 dalek parrot/m0-prototype: update canonical hello world m0b
06:27 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/77de53a36e
06:27 dalek parrot/m0-prototype: f1b698f | cotto++ | / (2 files):
06:27 dalek parrot/m0-prototype: remove bogus m0 test
06:27 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/f1b698f121
06:53 dukeleto cotto++ # making poke caller work
06:58 theory left #parrot
06:59 cjh joined #parrot
07:05 dalek parrot/m0-prototype: 1754b36 | cotto++ | / (3 files):
07:05 dalek parrot/m0-prototype: add newline parsing to m0 assembler, update poke_caller to use it
07:05 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/1754b36aef
07:05 dalek parrot/m0-prototype: 83b560d | cotto++ | / (19 files):
07:05 dalek parrot/m0-prototype: update tests to use explicit newlines, fix a few minor goofs
07:05 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/83b560d2bd
07:05 dalek parrot/m0-prototype: db498f3 | cotto++ | t/m0/basic/hello_canon.m0b:
07:05 dalek parrot/m0-prototype: update canonical hello world with an explicit newline
07:05 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/db498f3d35
07:05 cotto and there's another thing that's been bugging me
07:10 dalek parrot/m0-prototype: 79cc5c7 | cotto++ | t/m0/integration/m0_poke_caller.m0:
07:10 dalek parrot/m0-prototype: start converting poke_caller to spit out TAP
07:10 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/79cc5c723c
07:11 cotto dukeleto, I'd appreciate you taking a look at poke_caller and adding comments to anything that's unclear.
07:11 cotto I've been staring at it for the last few days, so my objectivity is questionable.
07:12 cotto It's really nice to have the concept nailed down in runnable code, but that still doesn't mean that it's easy for others to understand or that it's correct.
07:14 cotto Also, it'd be nice to have pasm codas (codae) in the m0 test files.
07:15 cotto dukeleto, also, any references to RETCHUNK can be excised.  I thought I might need it but that turns out not to have been the case.
07:22 mj41 joined #parrot
07:31 dngor left #parrot
07:33 dngor joined #parrot
08:02 jsut joined #parrot
08:02 jsut_ left #parrot
08:16 fperrad joined #parrot
08:57 mtk left #parrot
08:59 fperrad left #parrot
09:04 mtk joined #parrot
09:06 cjh left #parrot
09:31 cjh joined #parrot
09:34 preflex left #parrot
09:37 preflex joined #parrot
10:24 woosley left #parrot
10:55 jsut_ joined #parrot
10:57 lucian joined #parrot
10:59 jsut left #parrot
11:05 dalek nqp: 53824c3 | jonathan++ | src/ (4 files):
11:05 dalek nqp: Move decontainerization logic into a place where it can be more easily re-used.
11:05 dalek nqp: review: https://github.com/perl6/nqp/commit/53824c3274
11:05 dalek nqp: b43dcd1 | jonathan++ | src/ (2 files):
11:05 dalek nqp: Add some missing decontainerization.
11:05 dalek nqp: review: https://github.com/perl6/nqp/commit/b43dcd14e3
11:06 lucian left #parrot
11:12 lucian joined #parrot
11:19 PacoLinux left #parrot
11:21 PacoLinux joined #parrot
11:28 dalek nqp: c6c1df5 | jonathan++ | src/pmc/sixmodelobject.pmc:
11:28 dalek nqp: Try and fix build breakage.
11:28 dalek nqp: review: https://github.com/perl6/nqp/commit/c6c1df5a5e
11:35 * lucian is late with a blog post
12:39 hudnix joined #parrot
12:40 hudnix left #parrot
12:46 hudnix joined #parrot
12:47 bubaflub joined #parrot
13:04 preflex left #parrot
13:06 preflex joined #parrot
13:11 whiteknight joined #parrot
13:11 bluescreen joined #parrot
13:16 whiteknight good morning, #parrot
13:21 dalek website: lucian++ | More objects.
13:21 dalek website: http://www.parrot.org/content/more-objects.
13:22 bubaflub morning whiteknight
13:24 lucian whiteknight: morning
13:25 lucian whiteknight: annotations?
13:26 lucian whiteknight: re your messasge
13:27 * lucian reads commit messages
13:29 whiteknight lucian: for prettier backtraces
13:30 lucian so do i have to annotate my tests somehow?
13:30 whiteknight so it gives you the file names and line numbers of the winxed source files, not the generated PIR
13:30 lucian btw, i have to steal your setup.winxed
13:30 lucian whiteknight: ah, ok. GREAT! thanks
13:30 whiteknight lucian: no, winxed compiler generates the annotations automatically
13:30 whiteknight lucian: and if you generate annotations from  your python source, you get the same benefits there for free
13:30 lucian i was having to grep pir to find those :)
13:30 lucian whiteknight: yeah, i realised
13:31 lucian still not sure how i'll do python exceptions
13:31 whiteknight setup.winxed is fine to steal. It's pretty Rosella-specific because Rosella is broken down into libraries, but you should be able to find most things you want in it
13:31 lucian afaict right now, i won't be able to implement python's stack traces correctly
13:31 whiteknight lucian: what do those look like?
13:32 whiteknight if you look at some of the code in Rosella /src/core/Parrot.winxed, you will see how I generate backtraces. You might be able to adapt that same thing
13:32 lucian whiteknight: they don't look particularly special, but require correct line numbers among other things
13:32 lucian yeah, i'll have a look. i've put exceptions off for now, will focus on the compiler for a bit
13:38 whiteknight okay
13:42 lucian whiteknight: hmm, now the tracebacks only show exceptions bouncing around in rosella/test guts
13:44 whiteknight what do you mean?
13:44 lucian whiteknight: oh, i'm wrong. sorry about that
13:44 whiteknight I do plan to filter out some of those internal functions from test failure reports
13:44 whiteknight but i haven't gotten to that point quite yet
13:44 lucian apparently that test still fails, but now now with an exception
13:45 whiteknight gist the output?
13:45 lucian not needed anymore, it was my fault
13:45 whiteknight ok
13:45 lucian tracebacks are fine, i just expected a traceback where there was none
13:45 lucian i introduced an exception deliberately in a test and it's fine
13:45 lucian whiteknight: much better tracebacks, thanks!
14:03 whiteknight no problem, I've been hating the current PIR backtraces for a long time, and finally got off my butt to do something about it
14:03 whiteknight of course, I ran into a million other problems along the way
14:15 lg_quassel joined #parrot
14:20 losinggeneration left #parrot
14:24 particle left #parrot
14:27 particle joined #parrot
14:28 ambs joined #parrot
14:36 lucian is there a straightforward way to inject the contents of a hash in a namespace?
14:37 whiteknight define "straightforward"
14:37 whiteknight for (string key in hash) ns[key] = hash[key]?
14:38 moritz isn't there a "copy" op or so?
14:39 whiteknight there's a clone op
14:39 whiteknight There's also an Exporter PMC, though I've never used it and don't know what it does
14:41 lucian whiteknight: hmm. perhaps i'm doing this backwards
14:42 lucian i need to boot my object system, which involves creating lots of objects
14:42 lucian which i then want in the namespace of the code generated by the compiler
14:52 lucian whiteknight: do you think it'd be better to just generate code that does this??
14:54 whiteknight what do you mean?
14:54 lucian whiteknight: right now, i have a winxed function boot() that returns a hash with python's builtins
14:55 whiteknight ok
14:55 lucian and i was intending that my generated PIR would call boot and put everything in it in the local namespace
14:55 lucian i was wondering if perhaps it'd be better to just generate PIR that does boot()'s job
14:55 lucian then it'd be all .local-ed
14:56 lucian (although i'm not even sure if making a python module into a sub is that good an idea)
15:01 * lucian is tempted to generate winxed
15:03 * whiteknight is tempted to prefer that :)
15:04 lucian bah. annoying
15:14 lucian whiteknight: hmm, i think i'll try calling set_global from winxed
15:16 whiteknight ok
15:16 whiteknight there are set_global and set_hll_global opcodes
15:16 whiteknight slightly different semantics
15:17 lucian whiteknight: i've given up .hll for now since winxed has issues with it
15:17 whiteknight ok
15:17 lucian yay, a boot sub also lets me avoid pbc_merge
15:18 whiteknight pbc_merge isn't a bad program, it was just never updated to deal with annotations
15:18 lucian i see
15:19 whiteknight actually, maybe it's not well-written, but it does mostly work
15:22 jnthn__ whiteknight: iirc, pbc_merge predated annotations.
15:22 jnthn__ whiteknight: So most likely it just never learend about them :)
15:22 jnthn__ I'm sure it's teachable though :)
15:24 bubaflub whiteknight: could you open a ticket for pbc_merge to keep annotations?
15:24 whiteknight bubaflub: already did
15:24 whiteknight jnthn__: I'm sure that's the case.
15:24 bubaflub well then.
15:25 whiteknight http://trac.parrot.org/parrot/ticket/2131
15:34 alester joined #parrot
15:37 mj41 left #parrot
15:43 bubaflub whiteknight++
16:00 dalek parrot/m0-prototype: 78e574f | cotto++ | t/m0/integration/m0_poke_caller.m0:
16:00 dalek parrot/m0-prototype: add an explanation of what this test does
16:00 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/78e574f702
16:02 dmalcolm joined #parrot
16:04 davidfetter joined #parrot
16:24 cotto_work ~!~
16:33 lucian left #parrot
16:41 cotto_work this might come in handy: https://github.com/blog/876-repo-transfers
16:49 dodathome joined #parrot
17:04 dukeleto ~~
17:04 lucian joined #parrot
17:06 lucian are globals set with 'set_global' accessible in winxed somehow?
17:06 lucian other than get_global ...
17:09 mikehh rakudo (Dahut-15-g4a6d216) - builds on parrot (3_4_0-196-g256e9da) - make test, make stresstest [roast (ea22fe5)] PASS
17:09 mikehh Ubuntu 11.04 i386 (g++ --optimize)
17:12 bubaflub left #parrot
17:15 whiteknight lucian: probably not
17:15 whiteknight lucian: probably requires get_global
17:15 whiteknight get/set_global basically store data in the current namespace
17:15 lucian whiteknight: i see
17:16 lucian i find parrot's namespacing very confusing
17:16 whiteknight I feel like those ops are stupid, and we should be able to get a reference to the NameSpace object directly and interact with it that way
17:16 whiteknight lucian: don't fret, it *is* confusing
17:16 lucian whiteknight: that's reasurring
17:16 lucian yes, dammit! a f*ing reference to the namespace object
17:17 whiteknight I'm not here to blow smoke up anybody's ass
17:17 lucian of course, i didn't write it, so i shouldn't complain
17:17 * lucian apologises
17:17 whiteknight NameSpaces are one of those things which I've always said are sucky
17:17 lucian whiteknight: i think it's another effect of PIR being the recommended interface to parrot
17:17 whiteknight yes, exactly
17:18 mikehh whiteknight: how much effort would be required to set up a different interface?
17:19 whiteknight mikehh: in terms of code in parrot? Probably not too too much. The killer is the deprecation policy, updating tests, and updating HLLs and projects that rely on the current interface
17:20 mikehh whiteknight: yeah, I think we need to seriously investigate different possible interfaces
17:20 lucian i find it sad to see a deprecation policy, when the rest of the world is convinced the parrot is dead
17:21 lucian people think i'm joking when i tell them i'm working on python on parrot
17:21 whiteknight mikehh: I agree strongly. But before we plan anything, we need to figure out a way to offer the new interface in parallel with the old interface so we don't run into problems from users
17:21 whiteknight lucian: I share that sentiment more than you can possibly know
17:22 mikehh whiteknight: yeah, but we should start documenting possibilities
17:22 whiteknight mikehh: this is true
17:22 whiteknight mikehh: you have any ideas in mind?
17:22 benabik OTOH, if Parrot is to be useful to anyone, it can't change out from under them too quickly.  And having those habits ingrained now is better than trying to put them in afterwards.
17:23 mikehh we certainly need to start developing it in parralel
17:23 whiteknight I've always said that we should only make guarantees about the parts of Parrot that don't suck, and the interfaces that are good enough to be stabilized
17:23 rdesfo joined #parrot
17:23 whiteknight we made a blanket guarantee that everything, including the things which were known to be bad and unworkable, were stable and could not be readily changed
17:23 lucian whiteknight++
17:24 lucian i think i'll just end up using Hashes for python namespaces
17:24 lucian no, i'll do even better. i'll use python dicts
17:26 mikehh whiteknight: one of the things you mentioned was that we had more or less discarded the PASM interface, we should look at reviving that as much as possible
17:28 mikehh and provide the necessary tolls that it is generated properly
17:28 mikehh from winxed and/or NQP
17:29 mikehh and have that as the primary interface to parrot not pir
17:30 mikehh but always expect generated code and hand written
17:31 mikehh this would allow optimizations and jitting etc
17:31 lucian mikehh: i don't know, i can't even remember the last time i had to write assembly for the JVM
17:31 lucian mikehh: oh, i think i misunderstood
17:31 mikehh lucian: exactly, we should not have to do that
17:33 mikehh a large part of PIR is syntactic sugar to enable it to be hand written, which causes a lot of the problems
17:35 rdesfo left #parrot
17:37 dukeleto "JSIL is a compiler that transforms .NET applications and libraries from their native executable format - CIL bytecode - into standards-compliant, cross-browser JavaScript." http://jsil.org/
17:37 dukeleto at least we aren't the craziest crazy people
17:38 lucian dukeleto: actually, there's another one
17:39 rohit_nsit08 joined #parrot
17:39 lucian dukeleto: *this* is what the craziest crazy people do http://jsc.sourceforge.net/
17:40 rohit_nsit08 hello #parrot
17:40 mikehh what we really need to do is look at how we can build on M0 and perhaps get rid of (eventually) of a lot of "legacy" parrot
17:40 lucian mikehh: i'd like to see most of parrot marked as legacy, in fact
17:40 lucian there are few things i've though of fondly
17:41 mikehh a lot of things were tried in parrot and many do not work properly, but are still being retained
17:42 mikehh which gives a lot of "legacy" overhead
17:42 * davidfetter thinks it's pretty cool that people are re-examining compiler technologies
17:43 mikehh an important aspect is that we are trying to provide a register based VM as opposed to a stack based one
17:44 mikehh we need to examine what we have learned, discard what has not worked properly and provide a lean, mean AND working VM
17:45 lucian dukeleto: http://www.fructoselang.org/
17:45 hercynium joined #parrot
17:47 atrodo mikehh++
17:47 atrodo lucian> I wonder, how do people find the time to keep working on these projects after they're done with the proof of concept
17:49 benabik NQP Question: How to store multiple return values?  (PIR: `(ops, posargs) = self.'pos_children'(node, 'signature' => signature)`)
17:49 mikehh atrodo: one of the problems with proof-of-concept and prototypes in general is when to move on and start developing the  "real" thing :-}
17:49 benabik I tried `my ($ops, @posargs) := self.post_children($node, :signature($signature));`
17:50 atrodo mikehh> Or when to realize it's only a proof of concept
17:51 mikehh atrodo: definately
17:52 lucian atrodo: maybe they're actually using them
17:52 mikehh we have the M0 project and need to consider what needs to be added in terms of M1, M1+
17:52 lucian mikehh: the register-based nature of the vm hasn't bothered me much
17:53 mikehh let's not add things that are not needed
17:53 dukeleto benabik: store the return values in an aggregate pmc?
17:54 mikehh lucian: the idea is to avoid stack based overhead on mostly register based machines
17:55 lucian mikehh: i know. it's just that PIR spoils it
17:55 benabik dukeleto: Does NQP simply not due multiple return?
17:56 mikehh lucian: right, that's where this discussion started, solution -> replace PIR with something more appropriate
17:57 lucian mikehh: i'm not entirely convinced there is a significant overhead for stack VMs, but it sure is trendy
17:58 mikehh lucian: if we had stack based machines, that's ok - most modern machines are not stack based
17:59 mikehh we have two problems there - we are trying something new essentially, and are looking at a dynamic languages VM
17:59 bubaflub joined #parrot
18:03 lucian mikehh: i don't see how parrot being register-based helps at all
18:04 atrodo lucian> Also, there's a lot more research into efficient register based architectures that we (in theory) can draw from
18:04 lucian atrodo: for VMs?
18:04 atrodo However, that may not be as true today
18:04 benabik lucian: There's a lot more literature on optimizations for register machines than stack.
18:04 atrodo lucian> In general
18:04 dukeleto benabik: i would guess that it does not, but could be wrong. Ask on #perl6 on freenode if nobody in here can give you a straight answer
18:04 mikehh lucian: it should, but we need to remove a lot of legacy concepts that have crept in
18:04 lucian atrodo: i'm not sure hardware knowledge maps to VMs well
18:05 benabik There is also some research indicating that Register VMs are more efficient: http://www.usenix.org/events/ve​e05/full_papers/p153-yunhe.pdf
18:05 lucian benabik: perhaps. but parrot's extremely slow anyway, for many reasons
18:05 benabik lucian: Yes, but we can fix that.  And we're trying.
18:05 lucian sure, parrot is already register-based
18:05 atrodo benabik++ # Nice find
18:05 lucian so changing it to stack-based wouldn't help
18:06 mikehh lucian: how much slower would it be otherwise
18:06 rohit_nsit08 left #parrot
18:06 lucian mikehh: impossible to ascertain :)
18:06 lucian but really, register-vs-stack is pointless
18:07 lucian parrot has much more fundamental issues, and i think the deprecation policy is the biggest culprit
18:07 dukeleto lucian: i think that is because you are new to the project, and you want to see everything change as fast as possible
18:07 lucian dukeleto: perhaps
18:08 dukeleto Without our deprecation policy, Parrot wouldn't have any users, since nothing can be built on a foundation that is constantly changing.
18:08 lucian dukeleto: but my work sure feels pointless right now
18:08 dukeleto lucian: why does your work feel pointless?
18:08 lucian dukeleto: not constantly changing, change a lot once
18:08 lucian dukeleto: i hope PIR and Class/Object will go away, and i'm using both
18:08 dukeleto lucian: i don't think our dep policy is perfect, but I think it helps more than it hurts.
18:08 dukeleto lucian: don't use PIR Class or Object.
18:09 lucian dukeleto: ah, but there's no reasonable alternative
18:09 dukeleto lucian: define "reasonable"
18:09 dukeleto lucian: emulate what Rakudo does
18:09 lucian dukeleto: actually working, right now, and with a shred of future
18:10 lucian dukeleto: i don't have the resources or age that rakudo does, but i guess i will look into what they're doing
18:10 lucian and i have so far with 6model, but it's extremely hard to figure out
18:15 lucian dukeleto: what rakudo does is write its own. and it still generates PIR afaict
18:16 mikehh we are still stuck with PIR for the foreseeable future, we need to investigate new possibilities
18:16 lucian sure
18:16 lucian but for now, i'm forced to use a Hash for namespaces, unless i find a hack around PIR's sillyness
18:17 lucian and this technique will ideally be obsolete soon enough
18:17 mikehh lucian: I feel your pain, wish I could offer more
18:18 mikehh help not pain that is :-}
18:18 lucian mikehh: i know, perhaps i just complain too much
18:18 lucian mikehh: :)) i didn't see that for a moment
18:18 mikehh lucian: without complaints we don't necessarily see problems that need to be raised
18:19 dukeleto lucian: using a hash should be fine for now.
18:20 dukeleto lucian: do you have a test suite which you are trying to make pass? I assume python has some spec test suite?
18:20 tcurtis lucian: there's some work being done on compiling from PAST to POST to PBC without going through PIR.
18:20 dukeleto lucian: the internals of your implementation will always change. But if you can make a few more tests pass per week of your python implementation, then you are making progress
18:20 tcurtis I think benabik++ is working on that for GSoC, I think.
18:21 benabik yes
18:21 * tcurtis was redundant.
18:21 lucian dukeleto: yes, it does have a test suite. and have no tests running at all now
18:21 lucian that's largely because python can't run at all without objects
18:21 benabik I keep considering using Winxed instead of NQP...
18:21 dukeleto lucian: perhaps you can write simpler tests for your implementation?
18:21 mikehh tcurtis: nah, we don't all know what is happening :-}
18:22 dukeleto lucian: it is a huge positive boost in coding to see some tests pass
18:22 lucian dukeleto: yes, i will. and i have some left over from pynie
18:22 lucian dukeleto: so far i have most object system tests passing (in winxed), which is why i'm switching to the compiler for a while
18:22 lucian tcurtis: i see. i guess i would prefer PASM, but not fervently
18:23 dukeleto lucian: great to hear! I would really love to see another blog post...
18:23 lucian tcurtis: PIR's evils have been cumulative
18:23 lucian dukeleto: you just missed it, check the website
18:23 dukeleto lucian: you can just copy+paste irc logs and edit a bit if you are really lazy :) You are doing cool stuff and other people want to hear about it.
18:23 dukeleto lucian: oh!
18:23 * dukeleto evidently lives under a very comfortable rock
18:23 lucian well, if you define "just" very loosely
18:24 * lucian has to go to a friends' birthday
18:24 * atrodo loves comfortable rocks
18:25 * mikehh has to go and meet some people at a greek resturant in 30 minutes, better get ready :-}
18:26 atrodo hopefully it's not 30 minutes away
18:26 mikehh atrodo: nah only about 5
18:27 atrodo I've done that before.  Didn't even plan for the 20 minutes it takes to drive somewhere
18:27 mikehh need to leave here in 30 minutes, well less than that now
18:28 benabik I'm going to take some time and see what it's like to convert this thing to Winxed instead of NQP, now that Winxed is in master.
18:28 mikehh it's about 20 minutes walk away, but not going to do that
18:28 * mikehh anyway need to get ready
18:29 atrodo winxed++
18:29 atrodo karma winxed
18:29 aloha winxed has karma of 3.
18:29 atrodo karma Winxed
18:29 aloha Winxed has karma of 3.
18:29 atrodo That is surprisingly low
18:29 whiteknight benabik: NQP does not support multi-returns
18:29 benabik NQP is much much better than PIR, but the impedance mismatch is becoming more and more of a problem.
18:30 benabik whiteknight: pmichaud said it puts multi-returns into an RPA, but I'm having issues unpacking it.
18:31 lucian left #parrot
18:31 benabik whiteknight: Didn't you write an intro to Winxed somewhere?
18:32 whiteknight yeah, give me a second
18:32 benabik whiteknight++
18:33 whiteknight http://whiteknight.github.co​m/Rosella/winxed/index.html
18:34 whiteknight benabik: also, look for Data::Dumper in runtime/parrot/library. It will help you dump out aggregates so you can see what the contents are
18:37 benabik Does Winxed have contextuals (find_dynamic_lex)?
18:42 dalek parrot/m0-prototype: 8ba3698 | cotto++ | / (2 files):
18:42 dalek parrot/m0-prototype: make semantics of set_ref match deref, update poke_caller
18:42 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/8ba369816b
18:42 dalek parrot/m0-prototype: ce2b99d | cotto++ | t/m0/integration/m0_poke_caller.m0:
18:42 dalek parrot/m0-prototype: add a bunch of comments to poke_caller
18:42 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/ce2b99de14
18:42 whiteknight no, not built-in
18:47 cotto_work dukeleto: can you take a look at https://github.com/parrot/parrot/blob/m0-pr​ototype/t/m0/integration/m0_poke_caller.m0 ?  I tried to make it as clear as possible.
18:47 cotto_work (or anyone interested in M0)
18:56 * dukeleto looks
18:58 benabik whiteknight: How do I use Data::Dumper?  It's documentation seems slightly laking.
19:01 dukeleto whiteknight: from PIR ?
19:01 dukeleto benabik: from PIR?
19:02 benabik dukeleto: From NQP, but I can drop to PIR if needed.
19:02 dukeleto benabik: you do a load_bytecode 'Dumper.pbc' and a _dump(foo) in PIR
19:03 dukeleto benabik: look at t/examples/past_1.pir
19:04 dukeleto benabik: seems to be load_bytecode 'dumper.pbc' and then _dumper(foo)
19:04 * dukeleto dislikes the interface, but lives with it
19:04 dukeleto cotto_work: i like the comments in poke_caller
19:05 dukeleto cotto_work: it is now much clearer what is going on
19:05 dukeleto cotto_work: also, you use 'x' to mean an ignored argument, correct ?
19:06 dukeleto cotto_work: it would seem to me that it would be an undefined symbol, but I guess that doesn't happen for ignored arguments?
19:06 dukeleto cotto_work++ # pasm-highlighting for m0
19:07 whiteknight there is a way to use it from NQP too
19:07 whiteknight benabik: here's an old setup.nqp file from kakapo which uses dumper: https://github.com/Whiteknight​/kakapo/blob/master/setup.nqp
19:08 whiteknight actually, nevermind. It doesn't use dumper, it only includes it
19:08 whiteknight weird
19:08 benabik whiteknight: It's a short Q:PIR block.  Eh.
19:08 whiteknight benabik: ok
19:09 whiteknight benabik: normally, calling PIR functions from NQP should be pretty transparent
19:09 bluescreen left #parrot
19:09 whiteknight multireturns is the only case I can think of where it would not be
19:12 soh_cah_toa joined #parrot
19:13 soh_cah_toa ~~
19:17 benabik Does Winxed have something like NQP's pir::?
19:18 cotto_work back
19:18 dalek parrot/soh-cah-toa/hbdb: 0ed756c | soh_cah_toa++ | / (2 files):
19:18 dalek parrot/soh-cah-toa/hbdb: Added and fixed a few comments
19:18 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/0ed756cb83
19:18 dalek parrot/soh-cah-toa/hbdb: b3a5844 | soh_cah_toa++ | src/hbdb.c:
19:18 dalek parrot/soh-cah-toa/hbdb: Defined hbdb_init()
19:18 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/b3a5844983
19:18 dalek parrot/soh-cah-toa/hbdb: 323a762 | soh_cah_toa++ | src/hbdb.c:
19:18 dalek parrot/soh-cah-toa/hbdb: Changed ARGMOD to ARGIN in command function parameters
19:18 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/323a7626ec
19:18 dalek parrot/soh-cah-toa/hbdb: 0979095 | soh_cah_toa++ | include/parrot/hbdb.h:
19:18 dalek parrot/soh-cah-toa/hbdb: Created hbdb_file_t type
19:18 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/0979095a85
19:18 cotto_work dukeleto: the assembler translates x to 0
19:19 gbacon_ joined #parrot
19:19 klavs joined #parrot
19:20 dukeleto cotto_work: is that a special case?
19:20 dukeleto cotto_work: if so, we should add to the spec that using "x" is the preferred way to pass arbitrary params
19:20 cotto_work dukeleto: it's treated the same as any other constant value by the assembler
19:20 cotto_work dukeleto: it's already in the spc
19:20 cotto_work *spec
19:20 dukeleto cotto_work: goodly
19:22 bluescreen joined #parrot
19:32 cotto_work dukeleto: I'm not sure I like the name of set_ref.  Does that strike you as a good name for what the op does?  (it's documented in pdd32)
19:35 dukeleto cotto_work: i will brood upon a better name
19:37 dalek parrot: b97f4bf | benabik++ | t/harness:
19:37 dalek parrot: Return test error status even when submitting smoulder
19:37 dalek parrot: review: https://github.com/parrot/parrot/commit/b97f4bfa76
19:37 benabik Huh.  That wasn't supposed to happen.
19:37 cotto_work no taking it back now
19:38 whiteknight left #parrot
19:39 benabik Well, if someone complains we can revert it.
19:39 dalek parrot/nqp_pct: 8d11940 | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:39 dalek parrot/nqp_pct: PAST::Compiler - remove simple Q:PIR blocks
19:39 dalek parrot/nqp_pct:
19:39 dalek parrot/nqp_pct: There are lots left, but I'm nibbling around the edges.
19:39 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/8d11940fbd
19:39 dalek parrot/nqp_pct: 214f4c5 | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:39 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.node_as_post
19:39 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/214f4c58a2
19:39 dalek parrot/nqp_pct: 871b5cb | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:39 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.as_post(Control)
19:39 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/871b5cba81
19:39 dalek parrot/nqp_pct: 53c706e | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:39 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler one-liners
19:39 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/53c706e507
19:39 dalek parrot/nqp_pct: 39986b5 | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:39 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.as_post(Op)
19:39 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/39986b5072
19:39 dalek parrot/nqp_pct: 311e374 | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:39 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.def_or
19:39 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/311e3741fc
19:39 dalek parrot/nqp_pct: 92cc051 | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:39 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.bind
19:39 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/92cc051d7d
19:39 dalek parrot/nqp_pct: 392a8ae | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:39 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.copy
19:39 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/392a8ae980
19:39 dalek parrot/nqp_pct: ed8f97d | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:40 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.inline
19:40 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/ed8f97d94d
19:40 dalek parrot/nqp_pct: 62c07be | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:40 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.vivify
19:40 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/62c07be4bf
19:40 dalek parrot/nqp_pct: 778bc2b | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:40 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.lexical
19:40 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/778bc2b5f4
19:40 dalek parrot/nqp_pct: bfb8aab | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:40 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.register
19:40 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/bfb8aab972
19:40 dalek parrot/nqp_pct: 1965e1c | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:40 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.wrap_handlers
19:40 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/1965e1cc0d
19:40 dalek parrot/nqp_pct: d8ccc49 | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:40 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.as_post(Block)
19:40 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/d8ccc493e2
19:40 dalek parrot/nqp_pct: 723c015 | benabik++ | compilers/pct/src/PAST/Compiler.pm:
19:40 klavs left #parrot
19:40 dalek parrot/nqp_pct: War on Q:PIR - POST::Compiler.pirop
19:40 dalek parrot/nqp_pct:
19:40 dalek parrot/nqp_pct: This still have 5 lines of PIR because NQP doesn't handle
19:40 dalek parrot/nqp_pct: multiple return values.
19:40 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/723c015b30
19:40 benabik ...  I thought I had pushed more recently than that.  Sorry.
19:44 cotto_work You're making it better.  Don't apologize for that.
19:45 cotto_work If you want to flood the channel with commits that change 15-line PIR methods to 2-line nqp methods, I could watch those all day.
19:45 cotto_work benabik++
19:45 bubaflub benabik++
19:45 tadzik benabik: and that still works? :)
19:46 benabik tadzik: Makes and passes make test.
19:46 benabik *Builds
19:46 tadzik cool :) have the incrementation operator from me too
19:46 tadzik benabik++
19:58 klavs joined #parrot
20:00 Hunger left #parrot
20:02 Hunger joined #parrot
20:06 cotto_work good evening, klavs
20:09 klavs Good evening, cotto (or what should i say if it is ~13.10 for you good afternoon? :) )
20:10 cotto_work "good afternoon" works
20:11 cotto_work or whatever.  If you're contributing code, you can say "asdfkhajkqwehjqlkjagljhalhd" and it'll be fine. ;)
20:12 klavs Then, good afternoon, cotto.
20:13 klavs Damn, i just thougt, i do not feel like coding today. So that means, i cannot say anything i want :D
20:14 cotto_work klavs: it's a general principle.  You're golden.
20:14 cotto_work (contributing testing and bug reports is equally valuable)
20:16 klavs Cotto, i could read spec for 7th time, and try to figure out some interesting question ;)
20:16 dukeleto klavs: how is your disassmbler?
20:17 cotto_work klavs: go for it.  Alternately, I just added a bunch of comments to a calling conventions test.  You could look at that: https://github.com/parrot/parrot/blob/m0-pr​ototype/t/m0/integration/m0_poke_caller.m0
20:18 cotto_work or take a day off.  That's as important as anything.
20:21 klavs dukeleto, i am thinking about it constantly. ;)
20:21 klavs as i said, i do not feel like coding today, but i have a plan for constant detection and outputting as string.
20:21 klavs i have a plan for register formating, too
20:23 klavs cotto, i will take two next days off, so i just have to do something today.
20:25 cotto_work klavs: I think it'll be a good idea to build a data structure out of the bytecode segment.  Unless you're planning on outputting labels for every instruction, making 2 passes over the bytecode segment data will be the best way to intelligently spit out labels.
20:26 cotto_work different ops have different properties, and it'll be necessary to have the disassembler understand them on some level to output a nice disassembly.
20:27 cotto_work e.g. if you're disassembling deref S0, CONSTS, S0, it'd be nice if dm0 were smart enough to add the value of that constant to the disassembly as a comment.
20:28 klavs cotto, i thougt about it yesterday, when i asked about ops, which are using labels. I think i will do first pass to check goto and goto_if ops, while saving labels they reffer to and in the second pass, i will insert them.
20:29 cotto_work klavs: ok.  Just make sure you're writing the code so that it's reasonably extensible.
20:29 klavs Cotto, thanks, i wiil write it down so i can remember ;)
20:31 klavs Cotto, by concept, should m0 assembler support non-ansii charsets?
20:37 klavs *non-ascii
20:42 dukeleto klavs: seems like it should
20:43 dukeleto klavs: or the spec should at least specify which charset m0 source files are in
20:43 cotto_work klavs: I'm not sure that it will need to be specifically concerned about them.  It should just use whatever data is between quotes.
20:48 klavs dukeleto, i think there is nothing mentioned about that. my disasm is outputting every constant as hex string and as a string in comment, because i think there is no way to tell, if constant is not ment as a string. I was about checking if constant does not contain tens of newline chars- 'n that way, code will look ugly.
20:50 bluescreen left #parrot
20:50 klavs Cotto, is it perfectly clear to define floating point constant using a hex number?
20:51 sorear hex FP uses 'p'
20:51 sorear 0x1.800p4
20:51 sorear this is to avoid ambiguity with "e"
20:55 klavs I will rephrase my queston. Will m0 understand float if it is  defined as, e.g., 0xB0B0?
20:56 cotto_work klavs: m0 treats everything as a bunch of bytes.  Values have types depending on how they're used.  If a value encodes a valid float, the *_n ops will work with it.
20:57 sorear does that mean 45232.0 or 2.23475772926913e-319?
20:59 dodathome left #parrot
20:59 benabik local_branch and local_return?  Ack.
21:00 cotto_work I wonder if those get much use.
21:01 klavs That means, m0 asm will treat string "abcdefg" as integer 0x6162 if reffered as integer?
21:01 benabik Well, they were used in PAST.
21:05 bluescreen joined #parrot
21:08 cotto_work klavs: depending on endianness and word size
21:12 klavs Ok, it is clear for me now. I will try to finish working on labels after weekend.
21:12 klavs but now, i am going to sleap.
21:12 klavs may you all have a productive day!
21:13 cotto_work klavs: 'night
21:13 klavs left #parrot
21:17 ambs left #parrot
21:28 hercynium left #parrot
21:32 dduncan joined #parrot
21:33 dduncan left #parrot
21:34 dalek parrot/m0-spec: ef992cb | cotto++ | docs/pdds/draft/pdd32_m0.pod:
21:34 dalek parrot/m0-spec: remove the unneeded RETCHUNK register, put its space up for rent
21:34 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/ef992cbcc6
21:34 dalek parrot/m0-prototype: b73907c | cotto++ | / (3 files):
21:34 dalek parrot/m0-prototype: remove references to RETCHUNK, update canonical hello world
21:34 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/b73907ccd9
21:41 Psyche^ joined #parrot
21:46 Patterner left #parrot
21:46 Psyche^ is now known as Patterner
22:02 alester left #parrot
22:08 gbacon_ left #parrot
22:17 whiteknight joined #parrot
22:20 cotto_work ohai whiteknight
22:20 whiteknight hola senor cotto_work
22:22 * sorear reads lucian's post
22:22 davidfetter in spanish, it's possible to make terrible mistakes by substituting n for ñ
22:22 davidfetter frex, "feliz ano nuevo" could be a threat ;)
22:22 sorear it seems like Python's objects are very ... circularly defined
22:25 bluescreen left #parrot
22:25 cotto_work an object is an object that objects objectively
22:26 davidfetter objection!
22:26 cotto_work objectification?
22:53 gbacon_ joined #parrot
23:08 Drossel left #parrot
23:09 Kulag joined #parrot
23:11 cotto_work M0 todo: https://gist.github.com/1019986
23:13 cotto_work dukeleto: suggestions for that list are welcome
23:13 soh_cah_toa afromi()? i think that sounds really weird
23:13 soh_cah_toa why re-invent the wheel if itoa() is something everybody knows?
23:13 cotto_work soh_cah_toa: that's my problem too.
23:13 cotto_work itoa doesn't match the way m0 uses its arguments
23:13 sorear why is itoa a M0 op?
23:14 cotto_work sorear: how else would you convert?
23:15 sorear cotto_work: while (n != 0) { *--ptr = 48 + n % 10; n /= 10 }
23:15 sorear or ffi call
23:15 soh_cah_toa cotto_work: why? how does m0 use its args?
23:15 sorear if M0 is at the C level, it doesn't make much sense to me for it to have a single operation for int->str conversion
23:15 cotto_work sorear: dest, src1, src2
23:16 cotto_work er, soh_cah_toa
23:16 soh_cah_toa ahh...
23:16 soh_cah_toa i see your dilemma
23:17 cotto_work I may end up flipping a coin.
23:17 soh_cah_toa on the one hand you want to be consistent but on the other you have long established conventions
23:18 soh_cah_toa yeah...coin may be the only way
23:18 soh_cah_toa :)
23:21 soh_cah_toa though it certainly would be in the parrot tradition to break long established conventions ;)
23:21 cjh left #parrot
23:21 soh_cah_toa hmm...wordsize. weren't you and dukeleto talking about an 8-byte wordsize the other day?
23:22 soh_cah_toa did that not work well?
23:22 cotto_work soh_cah_toa: that's the direction it's moving in, but it isn't in the spec yet.
23:22 soh_cah_toa ok
23:22 cotto_work mostly because I've been focused on the poke caller test
23:23 soh_cah_toa i won't even ask what that is :)
23:24 cotto_work Since you didn't ask, I won't tell you that it's a test to see what code that creates, initializes, invokes and returns from a new call frame looks like.
23:24 soh_cah_toa i'm glad i don't know now
23:24 preflex left #parrot
23:25 soh_cah_toa actually, that sounds kinda cool
23:25 cotto_work It's a fun test.  I commented it very heavily so it should be fairly reasonable to read and understand.
23:26 cotto_work https://github.com/parrot/parrot/blob/m0-pr​ototype/t/m0/integration/m0_poke_caller.m0
23:26 soh_cah_toa yeah, i can see that being quite useful  in the future
23:27 soh_cah_toa what's an "imm"?
23:27 preflex joined #parrot
23:28 cotto_work immediate value, i.e. one that's taken directly from the op stream
23:28 soh_cah_toa yeah
23:28 soh_cah_toa as opposed to direct
23:29 soh_cah_toa ouch, testing in assembly (m0 assembly, whatever). that's gotta be rough
23:29 soh_cah_toa i love assembly and even i wouldn't do that
23:31 cotto_work It's necessary.
23:31 soh_cah_toa that's true
23:32 cotto_work and the interpreter's written in Perl, so it's not as inscrutable as the typical assembly language
23:34 soh_cah_toa yeah, it seems fairly straight forward
23:36 soh_cah_toa as for endianness, i would definitely support little-endian
23:36 soh_cah_toa but that's just my personal preference. big-endian--
23:36 cotto_work stupid historical leftovers
23:36 cotto_work yet here we are
23:37 soh_cah_toa i know!
23:37 sorear why is m0b using big endians?
23:38 cotto_work sorear: who says it is?
23:39 sorear cotto_work: reading between soh_cah_toa's lines
23:39 soh_cah_toa sorear: it was in the m0 todo list. that's what i was referring to
23:39 sorear cotto_work: clear 'complaining' tone
23:40 cotto_work sorear: that wasn't my intent at all.  I'm sorry that I communicated that.
23:42 soh_cah_toa looking at this list, i think now is a good time to ask something i've always wondered: calling conventions. what exactly is a "calling convention"?
23:43 dalek nqp: b289784 | pmichaud++ | src/PAST/SixModelPASTExtensions.pir:
23:43 dalek nqp: First set of coercion refactors for attribute_6model.
23:43 dalek nqp: review: https://github.com/perl6/nqp/commit/b289784817
23:43 dalek nqp: dd1944b | pmichaud++ | src/ (4 files):
23:43 dalek nqp: Add :pasttype<bind_6model> to PAST::Compiler, to improve handling of native constants.
23:43 dalek nqp:
23:43 dalek nqp: PAST::Compiler's :pasttype<bind> doesn't know about native types, and
23:43 dalek nqp: forces the RHS argument to be a PMC.  This doesn't play well with
23:43 dalek nqp: 6model's native attributes, though, and caused a lot of unneeded
23:43 dalek nqp: boxing and unboxing of native constants.  Rather than try to fix
23:43 dalek nqp: :pasttype<bind> in PAST::Compiler (which likely runs into all sorts
23:43 dalek nqp: of Parrot deprecation issues), we just add a new :pasttype<bind_6model>
23:43 dalek nqp: that can handle binding to attribute_6model variables (albeit in
23:43 dalek nqp: a slightly hacky way).  When we rewrite PAST into NQP, we should be
23:43 dalek nqp: able to clean up the bind semantics dramatically and can fix things
23:43 dalek nqp: then.
23:43 dalek nqp: review: https://github.com/perl6/nqp/commit/dd1944bc2f
23:43 cotto_work soh_cah_toa: that determines how arguments get passed from one function (or chunk in M0's case) to another.
23:44 soh_cah_toa you mean like pushing them on the stack vs. continuations?
23:45 cotto_work soh_cah_toa: exactly
23:45 lg_quassel left #parrot
23:45 soh_cah_toa and are those the two ways you are deciding between or are there other types of calling conventions?
23:47 cotto_work soh_cah_toa: M0 will use CPS.  What needs to be nailed down is how it'll be used.
23:49 soh_cah_toa ok
23:49 losinggeneration joined #parrot
23:51 cjh joined #parrot
23:52 redicaps joined #parrot
23:56 cotto_work soh_cah_toa: how's the debugger doing?
23:57 soh_cah_toa i'm actually making a lot of progress. for the past several days i've been "defining the control flow." just really designing the structure of how things will work
23:58 soh_cah_toa b/c i could just use a quick fix to get breakpoints going quickly. however, this would require major refactoring in the future
23:59 soh_cah_toa i'm really happy w/ where i'm headed :)
23:59 cotto_work soh_cah_toa: I'm glad you're thinking ahead.

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

Parrot | source cross referenced