|
Parrot 4.4.0 "Banana Fanna Fo Ferret" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 15 May 2012. |
|||
|
01:14
nbrown joined
|
|||
| dalek | rrot/whiteknight/io_cleanup1: c729b29 | Whiteknight++ | / (8 files): A random assortment of build fixes. |
01:29 | |
|
02:28
alvis left
02:31
perlite_ joined
03:17
simcop2387 joined
03:58
diginet joined
|
|||
| diginet | hello, umm, sorry for the perhaps obvious question, but I'm working on a toy compiler, and I'm kind of confused about creating the PAST, as I haven't been able to find any comprehensive documentation on it, could someone point me in the right direction? | 03:59 | |
| benabik | diginet: The "comprehensive" documentation is parrot.github.com/html/docs/pdds/pd...t.pod.html | 04:02 | |
| diginet: The introductory type documentation is parrot.github.com/html/pct_tutorial.html or github.com/benabik/cish | |||
| diginet | okay, gotcha | 04:03 | |
| benabik | We're also very open to questions here. :-) | ||
| diginet | thanks, Parrot is so awesome, I'm so glad I (re)discovered it | ||
| Parrot itself is an awesome piece of software, one of the cleanest designs Ive seen, but the community is so great as well :) | 04:04 | ||
| benabik | diginet++ # wonderful optimism | ||
| diginet | I guess it just amazes me that you guys can put something together that is infinitely more intutive than the CLR or JVM, and is only 8mb | 04:05 | |
| (that is, for implementing languages on) | 04:06 | ||
| benabik | It's extremely lovely. Just wish we could streamline and speed it up. But we're working on that. :-) | ||
| diginet | perhaps I should be careful saying this, but the fact that it's written in C and not C++ is a huge bonus for me | 04:07 | |
| benabik | Well, our C code is a bit of a sticking point... But mostly that it's clumsy to interact carefully with the VM. | 04:08 | |
| C++ is nice, but it's also easy to really screw yourself with it. | 04:09 | ||
|
04:34
contingencyplan joined,
japhb joined,
dadada joined,
atrodo joined,
tadzik joined,
dalek joined,
awwaiid joined,
ttbot joined,
jlaire joined,
Infinoid joined
04:45
contingencyplan joined,
japhb joined,
dadada joined,
atrodo joined,
tadzik joined,
dalek joined,
awwaiid joined,
ttbot joined,
jlaire joined,
Infinoid joined
04:46
alvis joined
04:54
perlite joined,
nbrown joined,
Patterner joined,
mtk joined,
nopaste joined,
PerlJam joined
04:58
perlite joined,
nbrown joined,
Patterner joined,
mtk joined,
nopaste joined,
PerlJam joined
05:08
PerlJam joined,
nopaste joined,
mtk joined,
Patterner joined,
nbrown joined,
perlite joined,
alvis joined,
Infinoid joined,
jlaire joined,
ttbot joined,
awwaiid joined,
dalek joined,
tadzik joined,
atrodo joined,
dadada joined,
japhb joined,
contingencyplan joined,
diginet joined,
kurahaupo joined,
pjcj joined,
Hunger joined,
eternaleye joined,
schm00ster joined,
particle1 joined,
brambles joined,
preflex joined,
elmex joined,
GeJ joined,
autark joined,
jtpalmer joined,
Util joined,
Maddingue joined,
sri joined,
jevin joined,
Timbus joined,
wagle joined,
janus joined,
TonyC joined,
szbalint joined,
NotFound joined,
Woodi joined,
pmichaud joined,
Coke joined,
p6eval joined,
sorear joined,
smash joined,
Tene joined,
arnsholt joined,
rblackwe joined,
Kovensky joined,
knewt joined,
cxreg joined
05:10
PerlJam joined,
nopaste joined,
mtk joined,
Patterner joined,
nbrown joined,
perlite joined,
alvis joined,
Infinoid joined,
jlaire joined,
ttbot joined,
awwaiid joined,
dalek joined,
tadzik joined,
atrodo joined,
dadada joined,
japhb joined,
contingencyplan joined,
diginet joined,
kurahaupo joined,
pjcj joined,
Hunger joined,
eternaleye joined,
schm00ster joined,
particle1 joined,
brambles joined,
preflex joined,
elmex joined,
GeJ joined,
autark joined,
jtpalmer joined,
Util joined,
Maddingue joined,
sri joined,
jevin joined,
Timbus joined,
wagle joined,
janus joined,
TonyC joined,
szbalint joined,
NotFound joined,
Woodi joined,
pmichaud joined,
Coke joined,
p6eval joined,
cxreg joined,
knewt joined,
Kovensky joined,
rblackwe joined,
arnsholt joined,
Tene joined,
smash joined,
sorear joined
05:12
pjcj joined,
Hunger joined,
schm00ster joined,
particle1 joined,
brambles joined,
preflex joined,
elmex joined,
GeJ joined,
autark joined,
Maddingue joined,
sri joined,
jevin joined,
Timbus joined,
wagle joined,
TonyC joined,
p6eval joined,
cxreg joined,
knewt joined,
Kovensky joined,
rblackwe joined
05:16
perlite joined,
nbrown joined,
Patterner joined,
mtk joined,
nopaste joined,
PerlJam joined
05:19
contingencyplan joined,
japhb joined,
dadada joined,
atrodo joined,
tadzik joined,
dalek joined,
awwaiid joined,
ttbot joined,
jlaire joined,
Infinoid joined
05:20
perlite joined,
nbrown joined,
Patterner joined,
mtk joined,
nopaste joined,
PerlJam joined
05:50
woosley joined
|
|||
| diginet | Hi. I've been following the tutorial on Squaak, and while I get the general idea behind how the PCTs work, I'm completely lost | 06:48 | |
| basically, I'm confused, in the grammars, which symbols are arbitrary labels, and which have any defined semantic value | 06:49 | ||
| like, for instance, at the beginning of the Squaak grammar, it says | |||
| program ::= {stat-or-def} | |||
| stat-or-def ::= statement | |||
| | sub-definition | |||
| but how does the PCT know what "statement" or "sub-definition" means? aren't those just as meaningless to the computer as "program" | 06:50 | ||
| I've probably read every page 10 times, and it just seems like the semantics aren't rigorously defined, it's so unclear what are keywords and what are just labels | 06:56 | ||
|
06:57
brrt joined
|
|||
| sorear | diginet: that would appear to be an EBNF grammar intended for human consumption. | 07:02 | |
| diginet: PCT grammars look completely different, iirc | |||
| diginet: by 'PCT' do you mean 'PGE (Parrot Grammar Engine)' or 'NQP (Not Quite Perl6)' ? | 07:03 | ||
| NQP grammars look like "rule program { <stat-or-def> * } | 07:04 | ||
| " | |||
| I don't remember PGE syntax, nearly (or all?) everyone has moved on to NQP | |||
| there's an NQP update of the Squaak tutorial floating around somewhere, maybe on tylercurtis' github acct | 07:05 | ||
| moritz | I think diginet is referring to en.wikibooks.org/wiki/Parrot_Virtua...ak_Grammar | ||
| which looks vaguely like BNF | |||
| sorear | yeah, that's EBNF | ||
| moritz | and en.wikibooks.org/wiki/Parrot_Virtua...started.21 shows the correponding PCT grammar | 07:06 | |
| sorear | the machine readable grammar is below | ||
|
07:24
lucian joined
|
|||
| diginet | sorry. was afk | 07:30 | |
| I meant NQP, and yeah it does sort of look vaguely BNF, but it's just still so confusing, I also haven't been able to find any intro to NQP for people with no prior knowledge of perl | 07:31 | ||
|
07:36
crab2313 joined
|
|||
| moritz | fwiw www.perlcabal.org/syn/S05.html is the specification of Perl 6 regexes and grammars, of which NQP implements a subset | 07:37 | |
| perl6advent.wordpress.com/2009/12/2...d-actions/ has a gentler introduction | 07:38 | ||
| diginet | I wish Parrot had a prolog implementation, I could probably write a compiler with that | ||
| moritz | it probably has several, all of which are incomplete and bitrotten :( | 07:39 | |
| diginet | hmm | ||
| imo, a minimal implementation of prolog would be /perfect/ for compiler construction | |||
| dalek | kudo/nom: e42d841 | moritz++ | src/core/List.pm: enable autovivifcation in the sub form of push fixes RT #77038 |
07:41 | |
| diginet | to me, an ideal systems world work like so: source code --> Prolog:[EBNF Grammar] --> s-exp based syntax tree format --> s-exp parser --> PAST | 07:47 | |
| s-exps are ridiculously easy to parse, but by having a standard, textual format that correspons to PAST, one can use any system to transform the source to the PAST | 07:48 | ||
| sorear | diginet: nqp's parsing kernel is LL(k), it works a lot like prolog | 07:53 | |
| diginet | what is LL(k)? | ||
| sorear | no unification, but backtracking is handled in essentially the same way | ||
| diginet | ah, okay | 07:54 | |
| sorear | LL(k)? hmm. Recursive descent with lookahead? | ||
| Left-to-right, Leftmost-derivation | |||
| diginet | gotcha | ||
| sorear does not grok the expansion of the acronym (either?) | |||
| at various times people have tried to write a yacc-like (LALR) parser generator for parrot | 07:55 | ||
| diginet | I | ||
| sorear | I am not sure any of them succeeded. | ||
| diginet | I've never used yacc, doesn't it require knowledge of C++? | 07:56 | |
| or am I thinking of something else? | |||
| sorear | you're thinking of something else. | 07:57 | |
| yacc predates C++. | |||
| diginet | ah, maybe I'm thinking of flex? | ||
| sorear | yacc per se is a tool which generates C code, so it's mostly useful with C programs | ||
| ditto lex | 07:58 | ||
| however 'lex and yacc' refers to a family of program clones that exist for almost every popular environment | |||
| diginet | yeah | ||
| sorear | like happy for haskell | ||
| when I say 'yacc', I am referring to all yacc clones, including bison | 07:59 | ||
| nonterminal := 'a' 'b' 'c' { CODE IN YOUR FAVORITE LANGUAGE GOES HERE } | |||
| absolutely nothing about this is specific to C. | |||
| *absolutely nothing* | |||
| NQP syntax is pretty similar, but the underlying parser technology is completely different | 08:00 | ||
| PGE doesn't allow you to include code in grammars, so it's language agnostic by default ;) | |||
| (this is an age thing: PGE was created before Parrot had *any* high-level languages.) | 08:01 | ||
| diginet | so, if I understand correctly, the compiler works essentially like this: it scans the source for certain symbols, and then converts them to tokens, then rules are specified which describe how to map the tokens to the PAST? | ||
| moritz | perl.plover.com/py/ is a nice hack :-) | ||
| sorear | diginet: your last post means nothing, it has too many unbound variables :-) | 08:02 | |
| diginet | haha, sorry, let me try and be less vague | ||
| sorear | I haven't used prolog in an even longer age than the age that I haven't used PGE in | ||
| moritz | diginet: well, roughly. There is a parser, and the 'actions' convert the parse tree to PAST | ||
| or rather, build a second tree along the parse tree | 08:03 | ||
| sorear | but regex quux { <foo> <bar> || <baz> } --> quux(a,a') :- foo(a,a'), bar(a',a''). quux(a,a') :- baz(a,a'). | ||
| I suppose prolog has an expression-level OR operator that works in the obvious way | 08:04 | ||
| code in braces translates in the obvious way into the prolog model, including the potential of being run multiple times with backtracking | |||
| diginet | Prolog is basically predicate logic with some impurities | 08:05 | |
| (but you probably knew that) | |||
| sorear | about five years ago I put together a toy (200 lines) prolog in Haskell while trying to understand the Hindley-Milner type inference algorithm | 08:09 | |
| that's the extent of my Prolog knowledge. I've never actually tried to write anything in it ;) | |||
| diginet | well, writing a prolog implementation is nothing to scoff at :P | ||
| Prolog DCGs (definite clause grammars) are really easy to write/work with | 08:13 | ||
| sorear googles DCGs | 08:18 | ||
|
08:18
lucian joined
|
|||
| sorear | they appear to be isomorphic to perl6-style grammars. | 08:18 | |
| examples on request. | 08:19 | ||
| dalek | rrot: ca755b6 | fperrad++ | tools/dev/mk_inno_language.pl: [win32/inno] follow nqp/rakudo |
08:24 | |
|
08:24
woosley left
|
|||
| dalek | kudo/nom: 306fcd8 | moritz++ | src/core/List.pm: port autovivification fix to &unshift, JimmyZ++ |
09:19 | |
| kudo/nom: 61e6739 | moritz++ | docs/ChangeLog: update ChangeLog |
|||
| kudo/nom: 92a95c7 | moritz++ | t (2 files): bump NQP revision, and run proto token LTM tests by diakopter++ |
09:51 | ||
|
10:31
JimmyZ joined
11:27
kjs joined
|
|||
| JimmyZ | it's hard to get llvm working on ubuntu 12.04 | 11:50 | |
| dalek | : 28d9c79 | (kj, kjs)++ | m1 (4 files): remove unop_minus; handle x = -x as binexpr with mult by -1. |
11:55 | |
| kudo/nom: e2d8762 | moritz++ | src/ (2 files): typed exception for infix in term position |
12:06 | ||
|
12:12
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:13 | |
| kjs | morning whiteknight | ||
| brrt | good part-of-the-day | 12:15 | |
|
12:17
JimmyZ joined
|
|||
| whiteknight | hello kjs, brrt. How are you two doing? | 12:23 | |
| kjs | very well, thank you. how are you? | ||
| whiteknight | doing well. Back to work today after the long weekend, and I'm not happy about that | 12:27 | |
| kjs | work means less parrot hacking? | ||
| whiteknight | yes, unfortunately | 12:30 | |
| Although my queue doesn't currently have many tasks in it, so I might be able to clock out later and surf around | 12:31 | ||
| brrt | i'm doing very well, too :-) | 12:33 | |
| i'm not sure if you saw it, but i'm near to getting cgi-style mod_parrot working | |||
| admittedly in a fairly lousy state, but i'm happy about the progress anywa | 12:34 | ||
| whiteknight | brrt: that's good! | ||
| brrt | thanks :-) | 12:35 | |
| whiteknight | brrt: 1) Get something working. 2) Add tests to prove it keeps working. 3) Make it better, faster and add more features | ||
| brrt | yes, thats what i'm thinking, too :-) | ||
| its just, that steps 2 and 3 look much larger now i'm getting near | |||
| but its exciting, really | 12:36 | ||
| anyway, i'll try to make #parrotsketch today | 12:37 | ||
| Coke | brrt++ | 12:43 | |
|
12:50
PacoAir joined
|
|||
| whiteknight | awesome | 13:02 | |
| I think the rest of us will try to make it too | |||
|
13:03
bluescreen joined
13:07
Psyche^ joined
|
|||
| Coke | I won't even bother to try! ;) | 13:09 | |
|
13:30
kjs joined
14:19
isBEKaml joined
|
|||
| isBEKaml | hello, #parrot! | 14:22 | |
| whiteknight | hello isBEKaml | 14:23 | |
| isBEKaml | hello, whiteknight. What would be a good way to proceed on #276? | 14:25 | |
| whiteknight | I'm going to have to look at it. Give me a few minutes | ||
| isBEKaml | whiteknight: ok. I won't be surprised if it's a difficult bug to track down. :) | 14:26 | |
| whiteknight | oh, the thawed Sub one? That's a big ticket | 14:29 | |
| NotFound | isBEKaml: the good way to proceed is to redesign the pbc format from scratch ;) | 14:30 | |
| isBEKaml | NotFound: That's what I thought at first! :D | ||
| whiteknight | The pbc format is not bad, actually. I think this is mostly an object model issue | ||
| moritz | 6model! 6model! | ||
| isBEKaml | NotFound: Well, not exactly. But that the reconstruction from string to PBC is somewhat broken somewhere. | ||
| whiteknight | moritz: I'm sure that's a big part of it | ||
| NotFound | It works when it works and fails when not, mostly. | 14:31 | |
| whiteknight: I'm ruminating an idea for the function parameter siganture: ( : ClassName varname, ... | 14:32 | ||
| isBEKaml | Yeah, I wasn't sure where I should go looking for it - I've been on and off at it. Didn't look at it fully. | 14:33 | |
| gist.github.com/2828768 # this is what I have had so far. | 14:34 | ||
| whiteknight | NotFound: I'm not sure what you mean. An example? | ||
|
14:34
dmalcolm joined
|
|||
| isBEKaml | this is where I poke-guessed that the reconstruction was b0rked somewhere. | 14:35 | |
| NotFound | whiteknight: Instead ov (var varname and putting ClassName in the multi modifier. | ||
| The : prefix makes the parsing unambiguous. | 14:36 | ||
| whiteknight | okay | ||
| isBEKaml | admittedly, I was groping in the dark. | ||
| NotFound | whiteknight: and also using similar syntax as sugar for declaration and new: " : ClassName object(arguments); " meaning "var object = new ClassName(arguments); " | 14:38 | |
| whiteknight | NotFound: seems good to me | ||
| benabik | ~~ | 14:39 | |
| whiteknight | hello benabik | ||
| isBEKaml | hi, benabik | 14:40 | |
| benabik | o/ whiteknight isBEKaml | ||
| NotFound | Maybe some day it can allow some kind of type safety, but just as sugar looks helpful. | ||
| I tend to avoid sugar (in syntax), but new is the most boring invention in the C++/java/javascript world. | 14:42 | ||
| isBEKaml | whiteknight,NotFound: I don't mean to sound naive - but what's blocking us from getting this out of the way? I understand our object model is lacking here.... | 14:46 | |
| whiteknight | isBEKaml: what are you talking about, #276? | ||
| isBEKaml | whiteknight: yes, unless you were talking about something else. | ||
| whiteknight | isBEKaml: I'm not sure, I haven't had time to really look into that failure yet | 14:47 | |
| NotFound | isBEKaml: I don't know what problem that tickect is trying to solve. | ||
| isBEKaml | NotFound: sorry, I don't mean to be a pedant - tickets don't "solve" problems, they "report" problems. :P | 14:48 | |
| NotFound | isBEKaml: not being able to do something when I don't know if something should be doable is a maybe-problem for me. | 14:49 | |
| isBEKaml | whiteknight: my gist I posted above is what I have so far at guesstimating. | ||
| whiteknight | okay, I'll try running that tonight and see what I can find | ||
| isBEKaml | NotFound: fair enough. | ||
| NotFound | isBEKaml: by the way, is that example you are using the pir compreg in the deprecated way. | 14:50 | |
| isBEKaml | NotFound: I took that out of the ticket, really. | 14:51 | |
| NotFound: what is the current way of doing things? | |||
| whiteknight | I don't think that matters in any case | ||
| NotFound | isBEKaml: pirC.'compile'(code) | ||
| And for extra points, write that kind of tests in winxed better than pir ;) | 14:53 | ||
| isBEKaml | NotFound: I don't understand. You mean, pir's deprecated? | 14:55 | |
| moritz | no | ||
| Coke | "sort of" | 14:56 | |
| moritz | there's just some anti-PIR-sentiment in here | ||
| but in the case of tests/bug reports I like it, because it shows clearly what's going on | |||
| kjs | don't you know that M0 is the new way to go :-) | ||
| moritz | which opcodes are called | ||
| NotFound | Is just usually more clear to use winxed as a sort of pre-processor for PIR. | 14:57 | |
| isBEKaml | Guys, guys - stick to one thing and ONE thing only! ;) | ||
| benabik | PIR is just fine for bug reports. Winxed is generally considered the better way to be productive. | 14:58 | |
| NotFound | isBEKaml: that's the point. With winxed you focus in the real problem, no in the PIR mood. | ||
| benabik | PIR is sticking around for at least a while. The old way of calling the PIR compiler is depreciated though. | 14:59 | |
| `$P0 = compreg 'PIR' ; $P0(code)` is the old way, `$P0 = compreg 'PIR' ; $P0.'compile'(code)` is the new. | 15:00 | ||
| NotFound | benabik: and assembler is sticking around, but we usually tell the C compiler to generate it ;) | 15:01 | |
| isBEKaml | I don't understand how winxed would make me more productive in isolating bugs. Is it a frontend/backend to the compiler/generator ? | ||
| NotFound | isBEKaml: it makes the communication easier. Sometimes you can write one line of winxed instead of two dozen pir lines. | 15:03 | |
| And you can take a quick look at the generated PIR to be sure it does what you intend. | 15:04 | ||
| isBEKaml | NotFound: Yes, I found that part. Now, where are the examples? | ||
| NotFound: it's c-like code? frontend/parrot2/prt0.winxed | 15:06 | ||
| NotFound | isBEKaml: C-C++-javascript-java-C# alike | 15:08 | |
| nopaste | "NotFound" at 213.96.228.50 pasted "Translation of the start of gist 2828768" (13 lines) at nopaste.snit.ch/142689 | 15:09 | |
| NotFound | isBEKaml: here is an example | ||
| whiteknight | Having to translate the example code from PIR to something else, or talking about language choice at all doesn't help resolve this ticket | 15:11 | |
| it's unnecessarily confusing | |||
| isBEKaml | okay - now I know about winxed, helps in triaging. :) | 15:12 | |
| NotFound | whiteknight: right, but I've seen these days examples with loops writtn in spaghetti PIR and I feel the need if some evangelizing ;) | ||
| isBEKaml | whiteknight++ # I'm basically looking for a way to get into this. | 15:13 | |
| brrt | winxed is a pretty simple language that looks like javascript but is so incredibly parrot-y in implemenetation | 15:15 | |
| NotFound | brrt: Yeah, and for short snippets you don't need to learn much of it. | ||
| brrt | .. i'd argue that if you know javascript and a bit of how parrot works that learning winxed is a no-op | 15:16 | |
| NotFound | Reminds me the "heroic age" of the ms-dos, when people wrote demos with the hard parts in turbo pascal inline assembly and the boring parts in pascal. | 15:17 | |
|
15:21
Justin joined
|
|||
| whiteknight | isBEKaml: yeah, like I said. I'll take a look at this ticket tonight and see if I can come up with anything for you | 15:49 | |
| I don't know how Sub PMCs are supposed to serialize/deserialize, there's a real chance it's not sane from the bottom up | |||
| isBEKaml | whiteknight: okay, great. I'll be out now, you can leave a msg if you found anything (or I'll look them up in backlogs) | 15:58 | |
| whiteknight | isBEKaml: sure thing! | 15:59 | |
| isBEKaml *out | |||
| whiteknight: thanks! | |||
|
16:02
brrt left
|
|||
| dalek | : 8e2f787 | (kj, kjs)++ | m1 (5 files): reorganize data structure for lhsobject for easier code generation. use recursion to traverse the tree depth first. work in progress |
16:04 | |
| Coke | NotFound: the purpose of 276 was that I couldn't save the results of my work. I had to re-run potentially slow code every invocation of parrot. | 16:21 | |
| I have no need for that particular function right now, but it's still a bug that needs fixing eventually. | 16:22 | ||
| there are plenty of other tcl blocks in the bug queue I'd rather folks hacked on | 16:24 | ||
| github.com/parrot/parrot/issues/448 being the biggest one. | 16:28 | ||
| :( | 16:32 | ||
| whiteknight | Added to my list. I'll try looking at it again | 16:33 | |
| Coke | testing to make sure it didn't get magically fixed in the last 7 months. | 16:34 | |
| whiteknight | I wouldn't hold your breath | ||
| benabik holds his breath | |||
| Coke | partcl.com/ - hey, that's new. | ||
| whiteknight: given that this bug report is 18 months old and shows zero signs of progress, trust me, I'm not. | |||
| benabik | Although that had more to do with a cat trying to sit on my face. | 16:35 | |
| Coke | (10 dec 2010) | ||
| ayup, no change. | 16:40 | ||
| hurm. partcl updates not getting published here. | |||
| aloha, dalek? | 16:41 | ||
| aloha | Coke: dalek is run by sorear. | ||
| Coke | aloha, dalek hook? | ||
| aloha | Coke: Search me, bub. | ||
| benabik | Dalek's URL changed. | ||
| moritz | aloha: dalek hook is described at github.com/perl6/mu/blob/master/mi...k-push.txt | 16:42 | |
| aloha | moritz: Okay. | ||
| dalek | rtcl-nqp: 81c9c19 | coke++ | src/Partcl/commands/info.pm: track changes to parrot opcodes |
||
| Coke | ... I didn't do that. | ||
| also directions say Select "Post-Receive URLs", which doesn't exist. | 16:43 | ||
| perhaps "WebHook URLs" ? | 16:44 | ||
| moritz | yes, github renamed it | ||
| benabik | Seems right | ||
| Coke | which I have none of. weird. wonder where that dalek message came from. | ||
| moritz | from the old pull config | 16:45 | |
| which is why it also took some time | |||
| Coke: if you add the push URL, I remove partcl-nqp from the pull config | |||
| Coke | magnet == perl.org ? | 16:46 | |
| moritz | yes | ||
|
16:47
contingencyplan joined
|
|||
| Coke | moritz: done. added partcl & partcl-nqp | 16:47 | |
| moritz++ sorear++ | |||
| dalek | : b3e4edd | (kj, kjs)++ | m1 (2 files): more work on x.y and x[y]. |
||
| rrot/m0: 3953c26 | (kj, kjs)++ | CREDITS: remove "kj" for kjs so as not to miss out on karma. |
17:28 | ||
| benabik | kjs: I think dalek only pays attention to the CREDITS file in master. | 17:33 | |
| kjs | ugh. yeah you're right i think. | ||
| thanks. | |||
| dalek | rrot: 5038881 | kjs++ | CREDITS: remove "kj" in credits file so as not to miss out on karma. |
17:35 | |
| kjs | yay :-) | ||
| benabik | kjs++ | ||
|
17:43
brrt joined
|
|||
| dalek | kudo/nom: 9ef8010 | jnthn++ | src/Perl6/ (3 files): pir:: -> nqp:: for a bunch more stuff in the compiler. |
18:17 | |
| : a53d4e2 | kjs++ | m1_gencode.c: fix implementation if isgt and isge. |
18:20 | ||
| : 062125e | kjs++ | TODO.txt: update TODO. |
|||
| : 3432ea6 | kjs++ | TODO.txt: update TODO |
18:21 | ||
| : 50d399b | kjs++ | m1_gencode.c: woops. forgot to close multiline comment. |
18:23 | ||
| p: 14b6fca | jnthn++ | src/PAST/NQP.pir: Add nqp::can. |
18:32 | ||
| kudo/nom: 223419d | jnthn++ | / (15 files): pir::can => nqp::can |
18:48 | ||
|
19:03
Justin joined
|
|||
| dalek | : 22819b9 | kjs++ | m1 (5 files): implement casting from floats to ints and vice versa. prob needs some fixing later. |
19:05 | |
|
19:28
brrt joined
|
|||
| cotto | #ps in 0 | 19:30 | |
|
19:38
kjs joined
|
|||
| kjs | is #ps on now? | 19:39 | |
| brrt | yes | 19:40 | |
| dalek | kudo/nom: 3b15966 | jnthn++ | src/ops/perl6.ops: Fix SEGV that arose from a return in a gather. |
||
| kjs | it's fairly quiet there. | 19:41 | |
| cotto | quite | 19:42 | |
|
19:43
brrt joined
|
|||
| kjs | cotto: from my understanding, M0 regs are typeless; that is, they're just 8 bytes of bits and it's up to the compiler to give a meaning to them | 19:43 | |
| cotto | kjs, exactly | 19:44 | |
| kjs | but if that is true, then I don't see the advantage of having type identifiers, (I, N S, P) | ||
| it's rather misleading to a certain extent. it's promising something that isn't there. | |||
| what was the rationale for that? | |||
| cotto | they're for convention | ||
| kjs | how does it help? | 19:45 | |
| cotto | it helps humans | ||
| benabik | And I'd argue we at least need P vs NP for our registers. | 19:46 | |
| kjs | ok. fair enough. but i thought that M0 wasn't meant for humans... | ||
| cotto | no, but for now humans are writing most of it | ||
| Coke | I fail to see how this is a good thing. | 19:47 | |
| benabik | Hm. And if M0 is supposed to help JIT, then we're shooting ourselves in the foot by not distinguishing I vs N. | 19:48 | |
| Coke | (doing something which is for convention only to help us short term.) | ||
| kjs | in my opinion, I think once there is a working, tested and proven-correct (as far as possible) compiler that emits M0, those "types" could go. It complicates code generation, makes "false" promises, and is also not optimal for chunks, in that you may run out of I regs but not out of P regs. | ||
|
19:49
not_gerd joined
|
|||
| not_gerd jumps into the discussion | 19:50 | ||
| benabik: did you mean IN vs SP? | |||
| kjs | benabik: I don't know if a JIT needs typed registers. For this, and other reasons it would be good to start on a JIT soon-ish. | ||
| benabik | not_gerd: I mean PMC vs non-PMC | ||
| atrodo | a JIT would benefit a lot with typed registers | ||
| kjs | well, PMCs are just pointers right? | 19:51 | |
| benabik | Most processors have very distinct operations for integers and floats. | ||
| And the GC needs to distinguish between integers and pointers. | |||
| kjs | operations yes, but do they operate on different registers? | ||
| benabik | IIRC, yes. | ||
| kjs | benabik: at the moment you can store doubles in I registers, for instance. you can store everythign in everything. | ||
| atrodo | on x86, FP is much different then integers | ||
| kjs | the letters don't force anything. it's just convention, but some tests even use P regs for integers | 19:52 | |
| and S regs for ints | |||
| benabik | kjs: Yes. And I'd argue that's an error. | ||
| not_gerd | benabik: for what it's worth, you can still precisely walk registers without explicit m0 support | ||
| benabik | not_gerd: Pardon? If you can't tell an integer from a pointer, how do you walk precisely? | ||
| not_gerd | just use a specialiced register which stores either a count (first X registers contains PMCs) or a pointer to a bitmap | ||
| benabik | Sure. | 19:53 | |
| That just makes the devision between P and I changeable. But there is a distinction. | |||
| Oh, wow. Yes. x86 uses a stack for floating point. | 19:54 | ||
| atrodo | If i remember correct, it's a weird "stack" as well | ||
| benabik | seems likely. | ||
| kjs | does anyone know whether a JIT (e.g. using LLVM or libjit) would need to know whether registers are int or float regs? | 20:01 | |
| cotto | I don | 20:02 | |
| 't know how it wouldn't | |||
| kjs | eh. does that mean it does? | ||
| to be clear: a JIT would have to know? | |||
| not_gerd | depends - typed registers can help performance because floats can be stored in fp registers | ||
| cotto | You can't add two things if you don't know whether they're floats or ints | ||
| not_gerd | it's not absolutely necessary, though | 20:03 | |
| kjs | ok well if they are needed, then M0 would need the types | ||
| not_gerd | cotto: that's why we have different ops for fp and integer addition | ||
| kjs | so it can be left as a convention, or to enforce it | ||
| cotto | yes | 20:04 | |
| kjs | cotto: were you planning to implement excpetions at the M0 level? | ||
| cotto | there's some support for them | 20:05 | |
| do M0 does know that exceptions are a thing | |||
| kjs | ok, but how are they activated. in Java terms, there's a throw statement | 20:06 | |
| benabik | In Java VM there's a throw op | ||
| cotto | they're just another call frame | 20:07 | |
| kjs | ok so "throw" would be a call frame call | ||
| cotto | yes | ||
| kjs | but how to catch them then? | ||
| benabik | I'm a fan of making exception throwing just continuation calling in true CPS style. | ||
| kjs | catching is done in a list; that is, you can catch various types | ||
| and it will select the right one. | 20:08 | ||
| cotto | if a handler can't deal with an exception, it'll invoke the next one | ||
| benabik | cotto++ | ||
| cotto | and so forth until the exception gets handled or a top-level handler get invoked | 20:09 | |
| kjs | ok, well once i see the example working I could build it into M1 :-) | ||
| cotto: I've tried to decipher the funcall example. It's a lot of fields that need to be set for each function call.I'm worried it takes an awful high number of M0 ops to make one function call. | 20:10 | ||
| Coke | kjs: who cares how many ops it taks? | ||
| *takes | |||
| kjs | well if function calls are common, and i would expect they are, then it's a performance hit, no? | 20:11 | |
| cotto | the first thing is to make it work. After it's working, we can figure out how to optimize it. | ||
| benabik | CPS says that there's a continuation for each path execution can follow... Hm. I think Matt Might had a good article on it. | ||
| Coke | kjs: adding sugar to simplify calls smells like PIR. | ||
| kjs | cotto: agreed. | ||
| Coke: do you mean that in a bad way? | 20:12 | ||
| benabik | matt.might.net/articles/by-example-...ing-style/ | ||
| Coke | kjs: yes. | 20:13 | |
| cotto | M0 is all about a lack of magic. If calling a function is innately complex, it'll take more m0 ops. | ||
| dalek | kudo/nom: 0248432 | moritz++ | src/core/control.pm: typed exception for returning from exhausted routine |
||
| kjs | well, i was thinking, if I can get arrays and/or structs working in M1, I might be able to emit M1 code for function calls and run that through M1 to get the M0 :-) | 20:14 | |
|
20:15
benabik left
|
|||
| cotto | I'm not sure I follow. Are you talking about arrays and structs working on M1? | 20:16 | |
|
20:16
benabik joined
|
|||
| kjs | arrays in M1 yes | 20:16 | |
| cotto | we'll need those eventually | 20:17 | |
| kjs | or structs | 20:18 | |
| which will just be blobs of memory in M0, and using addresses and offsets | |||
| the only thing I'm not really clear on how to do, is addresses. Local vars are just mapped to registers. Let's sayyou want to have the address of a local var. Can you get the address of a register? | |||
| addresses/pointerss. | |||
| Coke | kjs: what would you do with the address of a local va? | 20:19 | |
| *var | |||
| kjs | pass it to another function ? | ||
| to let that called function fill it | |||
| possible in C, though admittedly, you have to know what you're doing | |||
| cotto | that gets into the memory model, which I was about to start figuring out when I got hit by a startup-shaped bus | 20:23 | |
| kjs | ah ok | ||
| I suppose M1 could do without explicit pointers, and C's &/address-of operator | 20:24 | ||
| cotto | How would that work? | 20:25 | |
| I was thinking more along the lines of it having pointers, but only to regions within M0's memory. | 20:26 | ||
| i.e. address 0 is the first byte allocated by the vm, etc | |||
| kjs | without the & op, you effectively would have something like Java's references | 20:27 | |
| so you can only pass around pointers to allocated mem blobs | |||
| pmcs | |||
| etc. | |||
|
20:45
kjs joined
|
|||
| dalek | : ccc4006 | kjs++ | m1. (2 files): add bool type. require boolexpr for conditional statements. wont work for not-expr; need a semcheck check |
20:46 | |
|
20:55
not_gerd left
20:57
dukeleto joined
|
|||
| dukeleto | ~~ | 20:57 | |
|
21:32
plobsing joined
21:44
crab2313 joined
21:45
kurahaupo joined
22:07
kjs joined
22:34
kid51 joined
|
|||
| dalek | : a848e5a | kjs++ | m1_gencode.c: implement naive version of switch statement. |
22:35 | |
|
22:39
Hunger joined
|
|||
| cotto | kjs++ I love naive things. | 22:41 | |
| kjs | :-) | ||
| i think there's better ways to do it, but let's get this thing running first! | |||
| dalek | nxed: 0776e3b | NotFound++ | winxed (2 files): drop support for try modifiers from stage 1 |
22:44 | |
| nxed: 9153d9e | NotFound++ | winxedst0.cpp: drop support for try modifiers from stage 0 |
|||
|
23:01
whiteknight joined
|
|||
| awwaiid | go twitter | 23:27 | |
| oops | |||
| dalek | : 12e6a2f | kjs++ | m1 (4 files): updates to semantic checker; add a few keywords for try/catch/throw/continue statements. various updates |
23:31 | |
|
23:31
whiteknight joined,
crab2313 joined,
contingencyplan joined,
dmalcolm joined,
Patterner joined,
PacoAir joined,
perlite joined,
mtk joined,
nopaste joined,
PerlJam joined
23:33
Hunger joined,
kid51 joined,
benabik joined,
japhb joined,
dadada joined,
atrodo joined,
tadzik joined,
dalek joined,
awwaiid joined,
ttbot joined,
jlaire joined,
Infinoid joined
|
|||
| dalek | : 58909f4 | kjs++ | m1_ast. (2 files): functionality for bools |
23:33 | |
|
23:34
Infinoid joined,
jlaire joined,
ttbot joined,
awwaiid joined,
dalek joined,
tadzik joined,
atrodo joined,
dadada joined,
japhb joined,
benabik joined,
kid51 joined,
Hunger joined,
PerlJam joined,
nopaste joined,
mtk joined,
perlite joined,
PacoAir joined,
Patterner joined,
dmalcolm joined,
contingencyplan joined,
crab2313 joined,
whiteknight joined
|
|||
| whiteknight | netsplit -- | 23:44 | |
| kid51 | did someone burp? | ||
| benabik | karma netsplit | 23:45 | |
| aloha | netsplit has karma of -1. | ||
| whiteknight | netsplit-- | ||
|
23:45
kjs joined
|
|||
| whiteknight | misspelling-- | 23:45 | |
| dalek | : 2f9a7a4 | kjs++ | m1_semcheck.c: updates on the semantic checker |
23:58 | |
|
23:58
kjs joined
|
|||