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