Camelia, the Perl 6 bug

IRC log for #parrot, 2012-05-29

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
01:14 nbrown joined #parrot
01:29 dalek parrot/whiteknight/io_cleanup1: c729b29 | Whiteknight++ | / (8 files):
01:29 dalek parrot/whiteknight/io_cleanup1: A random assortment of build fixes.
01:29 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/c729b291a2
02:28 alvis left #parrot
02:31 perlite_ joined #parrot
03:17 simcop2387 joined #parrot
03:58 diginet joined #parrot
03:59 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?
04:02 benabik diginet: The "comprehensive" documentation is http://parrot.github.com/html​/docs/pdds/pdd26_ast.pod.html
04:02 benabik diginet: The introductory type documentation is http://parrot.github.com/html/pct_tutorial.html or https://github.com/benabik/cish
04:03 diginet okay, gotcha
04:03 benabik We're also very open to questions here.  :-)
04:03 diginet thanks, Parrot is so awesome, I'm so glad I (re)discovered it
04:04 diginet 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
04:05 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:06 diginet (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.  :-)
04:07 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:08 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:09 benabik C++ is nice, but it's also easy to really screw yourself with it.
04:34 contingencyplan joined #parrot
04:34 japhb joined #parrot
04:34 dadada joined #parrot
04:34 atrodo joined #parrot
04:34 tadzik joined #parrot
04:34 dalek joined #parrot
04:34 awwaiid joined #parrot
04:34 ttbot joined #parrot
04:34 jlaire joined #parrot
04:34 Infinoid joined #parrot
04:45 contingencyplan joined #parrot
04:45 japhb joined #parrot
04:45 dadada joined #parrot
04:45 atrodo joined #parrot
04:45 tadzik joined #parrot
04:45 dalek joined #parrot
04:45 awwaiid joined #parrot
04:45 ttbot joined #parrot
04:45 jlaire joined #parrot
04:45 Infinoid joined #parrot
04:46 alvis joined #parrot
04:54 perlite joined #parrot
04:54 nbrown joined #parrot
04:54 Patterner joined #parrot
04:54 mtk joined #parrot
04:54 nopaste joined #parrot
04:54 PerlJam joined #parrot
04:58 perlite joined #parrot
04:58 nbrown joined #parrot
04:58 Patterner joined #parrot
04:58 mtk joined #parrot
04:58 nopaste joined #parrot
04:58 PerlJam joined #parrot
05:08 PerlJam joined #parrot
05:08 nopaste joined #parrot
05:08 mtk joined #parrot
05:08 Patterner joined #parrot
05:08 nbrown joined #parrot
05:08 perlite joined #parrot
05:08 alvis joined #parrot
05:08 Infinoid joined #parrot
05:08 jlaire joined #parrot
05:08 ttbot joined #parrot
05:08 awwaiid joined #parrot
05:08 dalek joined #parrot
05:08 tadzik joined #parrot
05:08 atrodo joined #parrot
05:08 dadada joined #parrot
05:08 japhb joined #parrot
05:08 contingencyplan joined #parrot
05:08 diginet joined #parrot
05:08 kurahaupo joined #parrot
05:08 pjcj joined #parrot
05:08 Hunger joined #parrot
05:08 eternaleye joined #parrot
05:08 schm00ster joined #parrot
05:08 particle1 joined #parrot
05:08 brambles joined #parrot
05:08 preflex joined #parrot
05:08 elmex joined #parrot
05:08 GeJ joined #parrot
05:08 autark joined #parrot
05:08 jtpalmer joined #parrot
05:08 Util joined #parrot
05:08 Maddingue joined #parrot
05:08 sri joined #parrot
05:08 jevin joined #parrot
05:08 Timbus joined #parrot
05:08 wagle joined #parrot
05:08 janus joined #parrot
05:08 TonyC joined #parrot
05:08 szbalint joined #parrot
05:08 NotFound joined #parrot
05:08 Woodi joined #parrot
05:08 pmichaud joined #parrot
05:08 Coke joined #parrot
05:08 p6eval joined #parrot
05:08 sorear joined #parrot
05:08 smash joined #parrot
05:08 Tene joined #parrot
05:08 arnsholt joined #parrot
05:08 rblackwe joined #parrot
05:08 Kovensky joined #parrot
05:08 knewt joined #parrot
05:08 cxreg joined #parrot
05:10 PerlJam joined #parrot
05:10 nopaste joined #parrot
05:10 mtk joined #parrot
05:10 Patterner joined #parrot
05:10 nbrown joined #parrot
05:10 perlite joined #parrot
05:10 alvis joined #parrot
05:10 Infinoid joined #parrot
05:10 jlaire joined #parrot
05:10 ttbot joined #parrot
05:10 awwaiid joined #parrot
05:10 dalek joined #parrot
05:10 tadzik joined #parrot
05:10 atrodo joined #parrot
05:10 dadada joined #parrot
05:10 japhb joined #parrot
05:10 contingencyplan joined #parrot
05:10 diginet joined #parrot
05:10 kurahaupo joined #parrot
05:10 pjcj joined #parrot
05:10 Hunger joined #parrot
05:10 eternaleye joined #parrot
05:10 schm00ster joined #parrot
05:10 particle1 joined #parrot
05:10 brambles joined #parrot
05:10 preflex joined #parrot
05:10 elmex joined #parrot
05:10 GeJ joined #parrot
05:10 autark joined #parrot
05:10 jtpalmer joined #parrot
05:10 Util joined #parrot
05:10 Maddingue joined #parrot
05:10 sri joined #parrot
05:10 jevin joined #parrot
05:10 Timbus joined #parrot
05:10 wagle joined #parrot
05:10 janus joined #parrot
05:10 TonyC joined #parrot
05:10 szbalint joined #parrot
05:10 NotFound joined #parrot
05:10 Woodi joined #parrot
05:10 pmichaud joined #parrot
05:10 Coke joined #parrot
05:10 p6eval joined #parrot
05:10 cxreg joined #parrot
05:10 knewt joined #parrot
05:10 Kovensky joined #parrot
05:10 rblackwe joined #parrot
05:10 arnsholt joined #parrot
05:10 Tene joined #parrot
05:10 smash joined #parrot
05:10 sorear joined #parrot
05:12 pjcj joined #parrot
05:12 Hunger joined #parrot
05:12 schm00ster joined #parrot
05:12 particle1 joined #parrot
05:12 brambles joined #parrot
05:12 preflex joined #parrot
05:12 elmex joined #parrot
05:12 GeJ joined #parrot
05:12 autark joined #parrot
05:12 Maddingue joined #parrot
05:12 sri joined #parrot
05:12 jevin joined #parrot
05:12 Timbus joined #parrot
05:12 wagle joined #parrot
05:12 TonyC joined #parrot
05:12 p6eval joined #parrot
05:12 cxreg joined #parrot
05:12 knewt joined #parrot
05:12 Kovensky joined #parrot
05:12 rblackwe joined #parrot
05:16 perlite joined #parrot
05:16 nbrown joined #parrot
05:16 Patterner joined #parrot
05:16 mtk joined #parrot
05:16 nopaste joined #parrot
05:16 PerlJam joined #parrot
05:19 contingencyplan joined #parrot
05:19 japhb joined #parrot
05:19 dadada joined #parrot
05:19 atrodo joined #parrot
05:19 tadzik joined #parrot
05:19 dalek joined #parrot
05:19 awwaiid joined #parrot
05:19 ttbot joined #parrot
05:19 jlaire joined #parrot
05:19 Infinoid joined #parrot
05:20 perlite joined #parrot
05:20 nbrown joined #parrot
05:20 Patterner joined #parrot
05:20 mtk joined #parrot
05:20 nopaste joined #parrot
05:20 PerlJam joined #parrot
05:50 woosley joined #parrot
06:48 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:49 diginet basically, I'm confused, in the grammars, which symbols are arbitrary labels, and which have any defined semantic value
06:49 diginet like, for instance, at the beginning of the Squaak grammar, it says
06:49 diginet program              ::= {stat-or-def}
06:49 diginet stat-or-def          ::= statement
06:49 diginet | sub-definition
06:50 diginet but how does the PCT know what "statement" or "sub-definition" means? aren't those just as meaningless to the computer as "program"
06:56 diginet 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:57 brrt joined #parrot
07:02 sorear diginet: that would appear to be an EBNF grammar intended for human consumption.
07:02 sorear diginet: PCT grammars look completely different, iirc
07:03 sorear diginet: by 'PCT' do you mean 'PGE (Parrot Grammar Engine)' or 'NQP (Not Quite Perl6)' ?
07:04 sorear NQP grammars look like "rule program { <stat-or-def> * }
07:04 sorear "
07:04 sorear I don't remember PGE syntax, nearly (or all?) everyone has moved on to NQP
07:05 sorear 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 http://en.wikibooks.org/wiki/Parrot_Vi​rtual_Machine/Squaak_Tutorial/Squaak_D​etails_and_First_Steps#Squaak_Grammar
07:05 moritz which looks vaguely like BNF
07:05 sorear yeah, that's EBNF
07:06 moritz and http://en.wikibooks.org/wiki/Parro​t_Virtual_Machine/Squaak_Tutorial/​Squaak_Details_and_First_Steps#Let.27s_get_started.21 shows the correponding PCT grammar
07:06 sorear the machine readable grammar is below
07:24 lucian joined #parrot
07:30 diginet sorry. was afk
07:31 diginet 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:36 crab2313 joined #parrot
07:37 moritz fwiw http://www.perlcabal.org/syn/S05.html is the specification of Perl 6 regexes and grammars, of which NQP implements a subset
07:38 moritz http://perl6advent.wordpress.com/200​9/12/21/day-21-grammars-and-actions/ has a gentler introduction
07:38 diginet I wish Parrot had a prolog implementation, I could probably write a compiler with that
07:39 moritz it probably has several, all of which are incomplete and bitrotten :(
07:39 diginet hmm
07:39 diginet imo, a minimal implementation of prolog would be /perfect/ for compiler construction
07:41 dalek rakudo/nom: e42d841 | moritz++ | src/core/List.pm:
07:41 dalek rakudo/nom: enable autovivifcation in the sub form of push
07:41 dalek rakudo/nom:
07:41 dalek rakudo/nom: fixes RT #77038
07:41 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e42d84135e
07:47 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:48 diginet 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:53 sorear diginet: nqp's parsing kernel is LL(k), it works a lot like prolog
07:53 diginet what is LL(k)?
07:53 sorear no unification, but backtracking is handled in essentially the same way
07:54 diginet ah, okay
07:54 sorear LL(k)?  hmm.  Recursive descent with lookahead?
07:54 sorear Left-to-right, Leftmost-derivation
07:54 diginet gotcha
07:54 * sorear does not grok the expansion of the acronym (either?)
07:55 sorear at various times people have tried to write a yacc-like (LALR) parser generator for parrot
07:55 diginet I
07:55 sorear I am not sure any of them succeeded.
07:56 diginet I've never used yacc, doesn't it require knowledge of C++?
07:56 diginet or am I thinking of something else?
07:57 sorear you're thinking of something else.
07:57 sorear yacc predates C++.
07:57 diginet ah, maybe I'm thinking of flex?
07:57 sorear yacc per se is a tool which generates C code, so it's mostly useful with C programs
07:58 sorear ditto lex
07:58 sorear however 'lex and yacc' refers to a family of program clones that exist for almost every popular environment
07:58 diginet yeah
07:58 sorear like happy for haskell
07:59 sorear when I say 'yacc', I am referring to all yacc clones, including bison
07:59 sorear nonterminal := 'a' 'b' 'c' { CODE IN YOUR FAVORITE LANGUAGE GOES HERE }
07:59 sorear absolutely nothing about this is specific to C.
07:59 sorear *absolutely nothing*
08:00 sorear NQP syntax is pretty similar, but the underlying parser technology is completely different
08:00 sorear PGE doesn't allow you to include code in grammars, so it's language agnostic by default ;)
08:01 sorear (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?
08:01 moritz http://perl.plover.com/py/ is a nice hack :-)
08:02 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
08:02 sorear I haven't used prolog in an even longer age than the age that I haven't used PGE in
08:02 moritz diginet: well, roughly. There is a parser, and the 'actions' convert the parse tree to PAST
08:03 moritz 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').
08:04 sorear I suppose prolog has an expression-level OR operator that works in the obvious way
08:04 sorear code in braces translates in the obvious way into the prolog model, including the potential of being run multiple times with backtracking
08:05 diginet Prolog is basically predicate logic with some impurities
08:05 diginet (but you probably knew that)
08:09 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 sorear that's the extent of my Prolog knowledge.  I've never actually tried to write anything in it ;)
08:09 diginet well, writing a prolog implementation is nothing to scoff at :P
08:13 diginet Prolog DCGs (definite clause grammars) are really easy to write/work with
08:18 * sorear googles DCGs
08:18 lucian joined #parrot
08:18 sorear they appear to be isomorphic to perl6-style grammars.
08:19 sorear examples on request.
08:24 dalek parrot: ca755b6 | fperrad++ | tools/dev/mk_inno_language.pl:
08:24 dalek parrot: [win32/inno] follow nqp/rakudo
08:24 dalek parrot: review: https://github.com/parrot/parrot/commit/ca755b6d48
08:24 woosley left #parrot
09:19 dalek rakudo/nom: 306fcd8 | moritz++ | src/core/List.pm:
09:19 dalek rakudo/nom: port autovivification fix to &unshift, JimmyZ++
09:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/306fcd8de9
09:19 dalek rakudo/nom: 61e6739 | moritz++ | docs/ChangeLog:
09:19 dalek rakudo/nom: update ChangeLog
09:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/61e6739269
09:51 dalek rakudo/nom: 92a95c7 | moritz++ | t (2 files):
09:51 dalek rakudo/nom: bump NQP revision, and run proto token LTM tests by diakopter++
09:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/92a95c780c
10:31 JimmyZ joined #parrot
11:27 kjs joined #parrot
11:50 JimmyZ it's hard to get llvm working on ubuntu 12.04
11:55 dalek m1: 28d9c79 | (kj, kjs)++ | m1 (4 files):
11:55 dalek m1: remove unop_minus; handle x = -x as binexpr with mult by -1.
11:55 dalek m1: review: https://github.com/parrot/m1/commit/28d9c794ad
12:06 dalek rakudo/nom: e2d8762 | moritz++ | src/ (2 files):
12:06 dalek rakudo/nom: typed exception for infix in term position
12:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e2d8762e11
12:12 whiteknight joined #parrot
12:13 whiteknight good morning, #parrot
12:13 kjs morning whiteknight
12:15 brrt good part-of-the-day
12:17 JimmyZ joined #parrot
12:23 whiteknight hello kjs, brrt. How are you two doing?
12:23 kjs very well, thank you. how are you?
12:27 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?
12:30 whiteknight yes, unfortunately
12:31 whiteknight Although my queue doesn't currently have many tasks in it, so I might be able to clock out later and surf around
12:33 brrt i'm doing very well, too :-)
12:33 brrt i'm not sure if you saw it, but i'm near to getting cgi-style mod_parrot working
12:34 brrt admittedly in a fairly lousy state, but i'm happy about the progress anywa
12:34 whiteknight brrt: that's good!
12:35 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
12:35 brrt yes, thats what i'm thinking, too :-)
12:35 brrt its just, that steps 2 and 3 look much larger now i'm getting near
12:36 brrt but its exciting, really
12:37 brrt anyway, i'll try to make #parrotsketch today
12:43 Coke brrt++
12:50 PacoAir joined #parrot
13:02 whiteknight awesome
13:02 whiteknight I think the rest of us will try to make it too
13:03 bluescreen joined #parrot
13:07 Psyche^ joined #parrot
13:09 Coke I won't even bother to try! ;)
13:30 kjs joined #parrot
14:19 isBEKaml joined #parrot
14:22 isBEKaml hello, #parrot!
14:23 whiteknight hello isBEKaml
14:25 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
14:26 isBEKaml whiteknight: ok. I won't be surprised if it's a difficult bug to track down. :)
14:29 whiteknight oh, the thawed Sub one? That's a big ticket
14:30 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
14:30 whiteknight The pbc format is not bad, actually. I think this is mostly an object model issue
14:30 moritz 6model! 6model!
14:30 isBEKaml NotFound: Well, not exactly. But that the reconstruction from string to PBC is somewhat broken somewhere.
14:30 whiteknight moritz: I'm sure that's a big part of it
14:31 NotFound It works when it works and fails when not, mostly.
14:32 NotFound whiteknight: I'm ruminating an idea for the function parameter siganture: ( : ClassName varname, ...
14:33 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:34 isBEKaml https://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 #parrot
14:35 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.
14:36 NotFound The : prefix makes the parsing unambiguous.
14:36 whiteknight okay
14:36 isBEKaml admittedly, I was groping in the dark.
14:38 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
14:39 benabik ~~
14:39 whiteknight hello benabik
14:40 isBEKaml hi, benabik
14:40 benabik o/ whiteknight isBEKaml
14:40 NotFound Maybe some day it can allow some kind of type safety, but just as sugar looks helpful.
14:42 NotFound I tend to avoid sugar (in syntax), but new is the most boring invention in the C++/java/javascript world.
14:46 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?
14:46 isBEKaml whiteknight: yes, unless you were talking about something else.
14:47 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.
14:48 isBEKaml NotFound: sorry, I don't mean to be a pedant - tickets don't "solve" problems, they "report" problems. :P
14:49 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.
14:49 whiteknight okay, I'll try running that tonight and see what I can find
14:49 isBEKaml NotFound: fair enough.
14:50 NotFound isBEKaml: by the way, is that example you are using the pir compreg in the deprecated way.
14:51 isBEKaml NotFound: I took that out of the ticket, really.
14:51 isBEKaml NotFound: what is the current way of doing things?
14:51 whiteknight I don't think that matters in any case
14:51 NotFound isBEKaml: pirC.'compile'(code)
14:53 NotFound And for extra points, write that kind of tests in winxed better than pir ;)
14:55 isBEKaml NotFound: I don't understand. You mean, pir's deprecated?
14:55 moritz no
14:56 Coke "sort of"
14:56 moritz there's just some anti-PIR-sentiment in here
14:56 moritz but in the case of tests/bug reports I like it, because it shows clearly what's going on
14:56 kjs don't you know that M0 is the new way to go :-)
14:56 moritz which opcodes are called
14:57 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! ;)
14:58 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.
14:59 benabik PIR is sticking around for at least a while.  The old way of calling the PIR compiler is depreciated though.
15:00 benabik `$P0 = compreg 'PIR' ; $P0(code)` is the old way, `$P0 = compreg 'PIR' ; $P0.'compile'(code)` is the new.
15:01 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 ?
15:03 NotFound isBEKaml: it makes the communication easier. Sometimes you can write one line of winxed instead of two dozen pir lines.
15:04 NotFound 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?
15:06 isBEKaml NotFound: it's c-like code? frontend/parrot2/prt0.winxed
15:08 NotFound isBEKaml: C-C++-javascript-java-C# alike
15:09 nopaste "NotFound" at 213.96.228.50 pasted "Translation of the start of gist 2828768" (13 lines) at http://nopaste.snit.ch/142689
15:09 NotFound isBEKaml: here is an example
15:11 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 whiteknight it's unnecessarily confusing
15:12 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 ;)
15:13 isBEKaml whiteknight++ # I'm basically looking for a way to get into this.
15:15 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.
15:16 brrt .. i'd argue that if you know javascript and a bit of how parrot works that learning winxed is a no-op
15:17 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:21 Justin joined #parrot
15:49 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 whiteknight 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
15:58 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:59 whiteknight isBEKaml: sure thing!
15:59 * isBEKaml *out
15:59 isBEKaml whiteknight: thanks!
16:02 brrt left #parrot
16:04 dalek m1: 8e2f787 | (kj, kjs)++ | m1 (5 files):
16:04 dalek m1: reorganize data structure for lhsobject for easier code generation. use recursion to traverse the tree depth first. work in progress
16:04 dalek m1: review: https://github.com/parrot/m1/commit/8e2f787bd3
16:21 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:22 Coke I have no need for that particular function right now, but it's still a bug that needs fixing eventually.
16:24 Coke there are plenty of other tcl blocks in the bug queue I'd rather folks hacked on
16:28 Coke https://github.com/parrot/parrot/issues/448 being the biggest one.
16:32 Coke :(
16:33 whiteknight Added to my list. I'll try looking at it again
16:34 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
16:34 * benabik holds his breath
16:34 Coke http://partcl.com/ - hey, that's new.
16:34 Coke whiteknight: given that this bug report is 18 months old and shows zero signs of progress, trust me, I'm not.
16:35 benabik Although that had more to do with a cat trying to sit on my face.
16:35 Coke (10 dec 2010)
16:40 Coke ayup, no change.
16:40 Coke hurm. partcl updates not getting published here.
16:41 Coke aloha, dalek?
16:41 aloha Coke: dalek is run by sorear.
16:41 Coke aloha, dalek hook?
16:41 aloha Coke: Search me, bub.
16:41 benabik Dalek's URL changed.
16:42 moritz aloha: dalek hook is described at https://github.com/perl6/mu/bl​ob/master/misc/dalek-push.txt
16:42 aloha moritz: Okay.
16:42 dalek partcl-nqp: 81c9c19 | coke++ | src/Partcl/commands/info.pm:
16:42 dalek partcl-nqp: track changes to parrot opcodes
16:42 dalek partcl-nqp: review: https://github.com/partcl/p​artcl-nqp/commit/81c9c19581
16:42 Coke ... I didn't do that.
16:43 Coke also directions say Select "Post-Receive URLs", which doesn't exist.
16:44 Coke perhaps "WebHook URLs" ?
16:44 moritz yes, github renamed it
16:44 benabik Seems right
16:44 Coke which I have none of. weird. wonder where that dalek message came from.
16:45 moritz from the old pull config
16:45 moritz which is why it also took some time
16:45 moritz Coke: if you add the push URL, I remove partcl-nqp from the pull config
16:46 Coke magnet == perl.org ?
16:46 moritz yes
16:47 contingencyplan joined #parrot
16:47 Coke moritz: done. added partcl & partcl-nqp
16:47 Coke moritz++ sorear++
16:47 dalek m1: b3e4edd | (kj, kjs)++ | m1 (2 files):
16:47 dalek m1: more work on x.y and x[y].
16:47 dalek m1: review: https://github.com/parrot/m1/commit/b3e4eddf16
17:28 dalek parrot/m0: 3953c26 | (kj, kjs)++ | CREDITS:
17:28 dalek parrot/m0: remove "kj" for kjs so as not to miss out on karma.
17:28 dalek parrot/m0: review: https://github.com/parrot/parrot/commit/3953c26a9e
17:33 benabik kjs: I think dalek only pays attention to the CREDITS file in master.
17:33 kjs ugh. yeah you're right i think.
17:33 kjs thanks.
17:35 dalek parrot: 5038881 | kjs++ | CREDITS:
17:35 dalek parrot: remove "kj" in credits file so as not to miss out on karma.
17:35 dalek parrot: review: https://github.com/parrot/parrot/commit/50388819d7
17:35 kjs yay :-)
17:35 benabik kjs++
17:43 brrt joined #parrot
18:17 dalek rakudo/nom: 9ef8010 | jnthn++ | src/Perl6/ (3 files):
18:17 dalek rakudo/nom: pir:: -> nqp:: for a bunch more stuff in the compiler.
18:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9ef80103f0
18:20 dalek m1: a53d4e2 | kjs++ | m1_gencode.c:
18:20 dalek m1: fix implementation if isgt and isge.
18:20 dalek m1: review: https://github.com/parrot/m1/commit/a53d4e2c58
18:20 dalek m1: 062125e | kjs++ | TODO.txt:
18:20 dalek m1: update TODO.
18:20 dalek m1: review: https://github.com/parrot/m1/commit/062125e104
18:21 dalek m1: 3432ea6 | kjs++ | TODO.txt:
18:21 dalek m1: update TODO
18:21 dalek m1: review: https://github.com/parrot/m1/commit/3432ea63c0
18:23 dalek m1: 50d399b | kjs++ | m1_gencode.c:
18:23 dalek m1: woops. forgot to close multiline comment.
18:23 dalek m1: review: https://github.com/parrot/m1/commit/50d399b439
18:32 dalek nqp: 14b6fca | jnthn++ | src/PAST/NQP.pir:
18:32 dalek nqp: Add nqp::can.
18:32 dalek nqp: review: https://github.com/perl6/nqp/commit/14b6fca7a1
18:48 dalek rakudo/nom: 223419d | jnthn++ | / (15 files):
18:48 dalek rakudo/nom: pir::can => nqp::can
18:48 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/223419d1a7
19:03 Justin joined #parrot
19:05 dalek m1: 22819b9 | kjs++ | m1 (5 files):
19:05 dalek m1: implement casting from floats to ints and vice versa. prob needs some fixing later.
19:05 dalek m1: review: https://github.com/parrot/m1/commit/22819b959e
19:28 brrt joined #parrot
19:30 cotto #ps in 0
19:38 kjs joined #parrot
19:39 kjs is #ps on now?
19:40 brrt yes
19:40 dalek rakudo/nom: 3b15966 | jnthn++ | src/ops/perl6.ops:
19:40 dalek rakudo/nom: Fix SEGV that arose from a return in a gather.
19:40 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3b15966a49
19:41 kjs it's fairly quiet there.
19:42 cotto quite
19:43 brrt joined #parrot
19:43 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:44 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)
19:44 kjs it's rather misleading to a certain extent. it's promising something that isn't there.
19:44 kjs what was the rationale for that?
19:44 cotto they're for convention
19:45 kjs how does it help?
19:45 cotto it helps humans
19:46 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...
19:46 cotto no, but for now humans are writing most of it
19:47 Coke I fail to see how this is a good thing.
19:48 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.)
19:48 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 #parrot
19:50 * not_gerd jumps into the discussion
19:50 not_gerd benabik: did you mean IN vs SP?
19:50 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.
19:50 benabik not_gerd: I mean PMC vs non-PMC
19:50 atrodo a JIT would benefit a lot with typed registers
19:51 kjs well, PMCs are just pointers right?
19:51 benabik Most processors have very distinct operations for integers and floats.
19:51 benabik And the GC needs to distinguish between integers and pointers.
19:51 kjs operations yes, but do they operate on different registers?
19:51 benabik IIRC, yes.
19:51 kjs benabik: at the moment you can store doubles in I registers, for instance. you can store everythign in everything.
19:51 atrodo on x86, FP is much different then integers
19:52 kjs the letters don't force anything. it's just convention, but some tests even use P regs for integers
19:52 kjs and S regs for ints
19:52 benabik kjs: Yes.  And I'd argue that's an error.
19:52 not_gerd benabik: for what it's worth, you can still precisely walk registers without explicit m0 support
19:52 benabik not_gerd: Pardon?  If you can't tell an integer from a pointer, how do you walk precisely?
19:52 not_gerd just use a specialiced register which stores either a count (first X registers contains PMCs) or a pointer to a bitmap
19:53 benabik Sure.
19:53 benabik That just makes the devision between P and I changeable.  But there is a distinction.
19:54 benabik Oh, wow.  Yes.  x86 uses a stack for floating point.
19:54 atrodo If i remember correct, it's a weird "stack" as well
19:54 benabik seems likely.
20:01 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:02 cotto I don
20:02 cotto 't know how it wouldn't
20:02 kjs eh. does that mean it does?
20:02 kjs to be clear: a JIT would have to know?
20:02 not_gerd depends - typed registers can help performance because floats can be stored in fp registers
20:02 cotto You can't add two things if you don't know whether they're floats or ints
20:03 not_gerd it's not absolutely necessary, though
20:03 kjs ok well if they are needed, then M0 would need the types
20:03 not_gerd cotto: that's why we have different ops for fp and integer addition
20:03 kjs so it can be left as a convention, or to enforce it
20:04 cotto yes
20:04 kjs cotto: were you planning to implement excpetions at the M0 level?
20:05 cotto there's some support for them
20:05 cotto do M0 does know that exceptions are a thing
20:06 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
20:07 cotto they're just another call frame
20:07 kjs ok so "throw" would be a call frame call
20:07 cotto yes
20:07 kjs but how to catch them then?
20:07 benabik I'm a fan of making exception throwing just continuation calling in true CPS style.
20:07 kjs catching is done in a list; that is, you can catch various types
20:08 kjs 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
20:08 benabik cotto++
20:09 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 :-)
20:10 kjs 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?
20:10 Coke *takes
20:11 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.
20:11 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.
20:11 Coke kjs: adding sugar to simplify calls smells like PIR.
20:11 kjs cotto: agreed.
20:12 kjs Coke: do you mean that in a bad way?
20:12 benabik http://matt.might.net/articles/by-e​xample-continuation-passing-style/
20:13 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.
20:13 dalek rakudo/nom: 0248432 | moritz++ | src/core/control.pm:
20:13 dalek rakudo/nom: typed exception for returning from exhausted routine
20:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0248432017
20:14 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:15 benabik left #parrot
20:16 cotto I'm not sure I follow.  Are you talking about arrays and structs working on M1?
20:16 benabik joined #parrot
20:16 kjs arrays in M1 yes
20:17 cotto we'll need those eventually
20:18 kjs or structs
20:18 kjs which will just be blobs of memory in M0, and using addresses and offsets
20:18 kjs 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?
20:18 kjs addresses/pointerss.
20:19 Coke kjs: what would you do with the address of a local va?
20:19 Coke *var
20:19 kjs pass it to another function ?
20:19 kjs to let that called function fill it
20:19 kjs possible in C, though admittedly, you have to know what you're doing
20:23 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
20:24 kjs I suppose M1 could do without explicit pointers, and C's &/address-of  operator
20:25 cotto How would that work?
20:26 cotto I was thinking more along the lines of it having pointers, but only to regions within M0's memory.
20:26 cotto i.e. address 0 is the first byte allocated by the vm, etc
20:27 kjs without the & op, you effectively would have something like Java's references
20:27 kjs so you can only pass around pointers to allocated mem blobs
20:27 kjs pmcs
20:27 kjs etc.
20:45 kjs joined #parrot
20:46 dalek m1: ccc4006 | kjs++ | m1. (2 files):
20:46 dalek m1: add bool type. require boolexpr for conditional statements. wont work for not-expr; need a semcheck check
20:46 dalek m1: review: https://github.com/parrot/m1/commit/ccc4006b1c
20:55 not_gerd left #parrot
20:57 dukeleto joined #parrot
20:57 dukeleto ~~
21:32 plobsing joined #parrot
21:44 crab2313 joined #parrot
21:45 kurahaupo joined #parrot
22:07 kjs joined #parrot
22:34 kid51 joined #parrot
22:35 dalek m1: a848e5a | kjs++ | m1_gencode.c:
22:35 dalek m1: implement naive version of switch statement.
22:35 dalek m1: review: https://github.com/parrot/m1/commit/a848e5aa96
22:39 Hunger joined #parrot
22:41 cotto kjs++ I love naive things.
22:41 kjs :-)
22:41 kjs i think there's better ways to do it, but let's get this thing running first!
22:44 dalek winxed: 0776e3b | NotFound++ | winxed (2 files):
22:44 dalek winxed: drop support for try modifiers from stage 1
22:44 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/0776e3b710
22:44 dalek winxed: 9153d9e | NotFound++ | winxedst0.cpp:
22:45 dalek winxed: drop support for try modifiers from stage 0
22:45 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/9153d9e8a5
23:01 whiteknight joined #parrot
23:27 awwaiid go twitter
23:27 awwaiid oops
23:31 dalek m1: 12e6a2f | kjs++ | m1 (4 files):
23:31 dalek m1: updates to semantic checker; add a few keywords for try/catch/throw/continue statements. various updates
23:31 dalek m1: review: https://github.com/parrot/m1/commit/12e6a2feb2
23:31 whiteknight joined #parrot
23:31 crab2313 joined #parrot
23:31 contingencyplan joined #parrot
23:31 dmalcolm joined #parrot
23:31 Patterner joined #parrot
23:31 PacoAir joined #parrot
23:31 perlite joined #parrot
23:31 mtk joined #parrot
23:31 nopaste joined #parrot
23:31 PerlJam joined #parrot
23:33 Hunger joined #parrot
23:33 kid51 joined #parrot
23:33 benabik joined #parrot
23:33 japhb joined #parrot
23:33 dadada joined #parrot
23:33 atrodo joined #parrot
23:33 tadzik joined #parrot
23:33 dalek joined #parrot
23:33 awwaiid joined #parrot
23:33 ttbot joined #parrot
23:33 jlaire joined #parrot
23:33 Infinoid joined #parrot
23:33 dalek m1: 58909f4 | kjs++ | m1_ast. (2 files):
23:33 dalek m1: functionality for bools
23:33 dalek m1: review: https://github.com/parrot/m1/commit/58909f40fe
23:34 Infinoid joined #parrot
23:34 jlaire joined #parrot
23:34 ttbot joined #parrot
23:34 awwaiid joined #parrot
23:34 dalek joined #parrot
23:34 tadzik joined #parrot
23:34 atrodo joined #parrot
23:34 dadada joined #parrot
23:34 japhb joined #parrot
23:34 benabik joined #parrot
23:34 kid51 joined #parrot
23:34 Hunger joined #parrot
23:34 PerlJam joined #parrot
23:34 nopaste joined #parrot
23:34 mtk joined #parrot
23:34 perlite joined #parrot
23:34 PacoAir joined #parrot
23:34 Patterner joined #parrot
23:34 dmalcolm joined #parrot
23:34 contingencyplan joined #parrot
23:34 crab2313 joined #parrot
23:34 whiteknight joined #parrot
23:44 whiteknight netsplit --
23:44 kid51 did someone burp?
23:45 benabik karma netsplit
23:45 aloha netsplit has karma of -1.
23:45 whiteknight netsplit--
23:45 kjs joined #parrot
23:45 whiteknight misspelling--
23:58 dalek m1: 2f9a7a4 | kjs++ | m1_semcheck.c:
23:58 dalek m1: updates on the semantic checker
23:58 dalek m1: review: https://github.com/parrot/m1/commit/2f9a7a41a4
23:58 kjs joined #parrot

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

Parrot | source cross referenced