Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere | Priorities: review experimental features for promotion or removal, fix 'make html', pre-release testing.
Set by moderator on 8 July 2010.
dalek kudo: 91a34e7 | jonathan++ | src/ (2 files):
Rip out the non-syntactic Whatever method call to block logic. Doesn't cause any

path.
00:09
00:28 rv2733 joined 00:43 tcurtis joined
dalek rtcl-nqp: 6c17315 | Coke++ | (2 files):
define some more globals.
00:54
01:32 tcurtis_ joined 02:18 hercynium joined
dalek kudo: bb6df24 | pmichaud++ | src/Perl6/Grammar.pm:
Accept <.ws> after version or module information in 'use' (per STD.pm6).
02:27
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34858), fulltest) at r48074 - Ubuntu 10.04 amd64 (gcc with --optimize) 02:33
02:42 janus joined 03:03 TiMBuS joined 03:10 theory joined
bacek_at_work ~~ 03:12
seen tcurtis
purl tcurtis was last seen on purl 1 hours, 33 minutes and 19 seconds ago, saying: <private message>
tcurtis bacek: yes? 03:13
bacek_at_work aloha, tcurtis
tcurtis Hello.
bacek_at_work Can you drop post-optimization branch in pirate? I merged it into master already
Or you want to continue to work in branch?
tcurtis Deleting it is fine. 03:17
bacek_at_work ok 03:18
mikehh rakudo (bb6df24) builds on parrot r48074 - make test PASS, spectest_smolder -> #348 (pugs r31630) FAIL - Ubuntu 10.04 amd64 (gcc with --optimize) 03:32
t/spec/S14-roles/basic.rakudo - Parse errors: No plan found in TAP output - All 4 subtests passed
t/spec/S32-temporal/DateTime.t - Failed 23/47 subtests
20 TODO PASSes in 4 files
bacek_at_work: pir/PIRATE fails tests - Parse errors: Unknown TAP token: ""load_bytecode" couldn't find file 'POST/Pattern.pbc'" 03:36
tcurtis mikehh: do you have my GSoC stuff installed? PIRATE requires it now. 03:40
mikehh tcurtis: how do I do that? 03:42
tcurtis mikehh: if you have plumage, "./plumage install tree-optimization" will work. Otherwise, it's at github.com/ekiru/tree-optimization now. 03:43
bacek_at_work tcurtis, can you update pirate's README to reflect dependency on tree-optimization? 03:44
mikehh tcurtis: I can probably test through plumage - at the moment I have local dirs with parrot instaled in /usr/local, plumage does a checkout into .parrot dir 03:45
tcurtis bacek_at_work: will do. 03:46
mikehh partcl-nqp(6c17315) - make ok, make test PASS - t/cmd_expr.t - TODO passed: 287 - parrot r48074 - Ubuntu 10.04 amd64 (gcc with --optimize) 03:49
tcurtis bacek_at_work: pushed the README change. 03:58
dalek r: 1c61c4b | (Tyler Leslie Curtis)++ | README:
Add a note in README about the dependency on tree-optimization.
04:00
04:01 slavorgn joined 04:02 GeJ joined
mikehh tcurtis: ok that worked 04:08
tcurtis: is all your GSOC work in that or are you still working with the svn branch? 04:09
tcurtis mikehh: all of it is in the github repository. 04:10
mikehh tcurtis: you need to get dalek to report changes there as it does for pir/rakudo/partcl-nqp,winxed etc. - dont ask me how, don't know, but someone else should 04:14
tcurtis mikehh: Alright. 04:18
mikehh tcurtis: I think either sorear, particle or infinoid handles that 04:19
sorear the official go-to person for dalek configuration changes is diakopter
mikehh sorear: noted 04:20
sorear ...who is mysteriously absent from #parrot atm, but present in #perl6
I'll ask him what the procedure is next time we meet, it could use more redundancy
04:28 brooksbp joined 04:44 dalek left, dalek joined 04:55 GeJ joined, fperrad joined 05:24 slavorgn joined 05:25 GeJ joined 05:43 uniejo joined
bacek_at_work tcurtis, thanks! Is it typo - "plumage or on plumage"? 05:45
tcurtis bacek_at_work: indeed, it is. Thanks for catching that. 05:46
tcurtis pushes a fix.
dalek r: 080f2f2 | (Tyler Leslie Curtis)++ | README:
Fix typo.
05:47
website: tcurtis++ | Tail-call elimination and moving to github 06:15
website: www.parrot.org/content/tail-call-el...ing-github
06:15 jsut joined
tcurtis bacek_at_work: I'm off to bed. Good night. Hopefully this week will allow me PIRATE optimization-hacking time. 06:16
06:22 jsut joined, uniejo joined, slavorgn joined, dalek joined, theory joined, TiMBuS joined, janus joined, hercynium joined, rv2733 joined, Patterner joined, Chandon joined, pjcj joined, plobsing joined, eternaleye joined, LoganLK joined, lucian_ joined, jan joined, preflex joined, PerlJam joined, JaphMalik joined, contingencyplan joined, TonyC joined, baest joined, cotto_work joined, mikehh joined, NotFound joined, skv joined, szabgab joined, Hunger joined, gaz joined, ttbot joined, simcop2387 joined, Khisanth joined, cotto joined, hudnix joined, pmichaud joined, japhb joined, Util joined, integral joined, cosimo joined, Essobi joined, wagle joined, ingy joined, aloha joined, spinclad joined, rblackwe joined, treed joined, arnsholt joined, jhelwig joined, atrodo joined, particle joined, slavorg joined, athomason joined, estrabd joined, jjore joined, sjn joined, Ryan52 joined, sri joined, zibri joined, bacek_at_work joined, knewt joined, ascent joined, TimToady joined, workbench joined, KatrinaTheLamia joined, mattp joined, moritz joined, jnthn joined, purl joined 06:28 ttbot joined 06:31 theory joined, rv2733 joined, plobsing joined, eternaleye joined, LoganLK joined, jan joined, PerlJam joined, cotto joined, hudnix joined, rblackwe joined, arnsholt joined 06:54 purl joined 06:56 purl joined, ttbot joined, rv2733 joined, eternaleye joined, LoganLK joined, jan joined, PerlJam joined, cotto joined, hudnix joined, rblackwe joined, arnsholt joined 06:58 fperrad joined 07:02 LoganLK joined 07:26 integral joined 07:29 elmex joined 08:34 jsut_ joined
bacek ~~ 09:17
tcurtis++ # good post
msg tcurtis You did answer your "question" about why I didn't "explicitly stated" reason for moving optimizer into own repo. Just because I want to use it in PIRATE without additional complexity :) 09:19
purl Message for tcurtis stored.
09:26 clinton joined 09:34 ruoso joined 09:37 preflex joined
bacek msg tcurtis afaiu Tree::Walker is in really good shape now. Let's move to SSA for the next challenge :) 09:42
purl Message for tcurtis stored.
09:52 muixirt joined
muixirt hi folks 09:52
anyone here and familiar with parrot srcs and the build process 09:53
?
moritz a bit 09:54
muixirt ok moritz do these ARGIN/ARGOUT etc. macros do any good nowadays? 09:55
muixirt isn't even an amateur if it comes to C
moritz yes, I think so 09:56
muixirt moritz: these macros seem to be empty on my platform (linux amd64) 09:57
moritz uhm. They detemine the arity of ops and PMC methods, no? 09:58
I kinda don't see how parrot could work if they were empty
muixirt some magic incantation for Configure.pl or make? 10:00
moritz how did you figure out it is empty?
muixirt moritz: gimme just a minute to look for it again 10:01
moritz: it seem to depend on PARROT_HAS_HEADER_SAL which is not set (sal is a windows thing right?) 10:04
according to compiler.h 10:05
another thing is make splint, parrot isn't kept lint clean 10:10
moritz: to be more precise: ARGIN(x) resolves simply to x, it doesn't do anything to it 10:20
bacek muixirt, it's all about headerizer and PARROT_ASSERT_ARGS 10:21
So, ARGIN(x) doesn't do anything (you are correct) 10:22
ASSERT_ARGS (without PARROT_ prefix) 10:24
muixirt sorry for being stupid, but what does it do? example? 10:28
bacek ASSERT_ARGS macro expanded to quite few asserts.
E.g. arg shouldn't be NULL for pointer, etc 10:29
(and it's basically what it does) 10:30
muixirt bacek it depends on compiler/platform? 10:32
bacek Plus it add compiler specific pragmas on args. Which can give better performance in optimized builds. Because decent compiler can omit some checks on arguments
muixirt, sorta :)
mikehh muixirt: what compiler/platform are you using/om? 10:33
bacek ASSERT_ARGS are platform independent, pragmas are
mikehh s/om/on/
muixirt mikehh: gcc/linux amd64 10:34
mikehh muixirt: me also - Ubuntu 10.04 amd64
muixirt: ASSERT_ARGS needs to be the first entry in any sub, before anything else 10:35
muixirt this C macro jungle in a real project is too hard to grasp for a beginner like me 10:36
bacek muixirt, yeah... I personally hate it for screwing up vim indenting. But it's necessary evil because it can catch some very-hard-to-catch error early :) 10:38
mikehh muixirt: I **HATE** C macros, but they seem to be necessary for consistancy
10:50 lucian joined
muixirt 12099 code warnings, parrot isn't going to be lint clean in the near future, I presume. 11:08
bacek muixirt, Andy "Petdance" Lester is your man-in-charge for such things. He did a quite good job in making parrot lint/slint clean. 11:12
muixirt bacek but then was that? 11:13
and imho all devs are in charge of keeping the source lint clean (if it is an objective) 11:15
bacek muixirt, erm... Can you rephrase your question? English is only my forth language.
muixirt how long was that ago? (being lint clean) 11:16
bacek muixirt, not quite true about "lint clean"
First - lint (or splint) isn't available on all platforms. 11:17
Second - we have slightly different coding standards (covered by "make codetest") 11:18
Third - alas, there is not much available resources to make our codebase "lint clean"
I do like idea of being "compiler warnings"/"lint clean" in general. But... 11:20
We just doesn't have enough time and people to do all of this. 11:21
muixirt, you can chase mikehh for enforce some coding standards. 11:23
muixirt 12099 code warnings. let's say one per cent are real problems you could catch 120 potential bugs :-) 11:28
bacek we have 600+ opened trac tickets already :) 11:29
muixirt you don't want to hear about more bugs? :-) 11:30
bacek I _do_ want to _know_ about them
Especially if "lint" can point on exact location where bug is. 11:32
And _I_ will put everything aside to fix it. 11:33
So, it's classical trade-off: you'll point to some function/line-of-code with potential bug, we'll try to fix it :) 11:35
11:37 whiteknight joined
bacek Even simple "Lint complains about blah-blah-blah" will help. 11:38
11:42 rv2733 joined
mikehh muixirt: how did you run lint/splint 11:43
muixirt make splint 11:44
mikehh muixirt: I thought that was broken - let me check
muixirt trac.parrot.org/parrot/wiki/splint 11:45
Coke seems to be the man for it
12:05 khairul joined
mikehh got to go out for a bit - bbl 12:20
13:01 jsut joined
Coke what did I do this time? 13:25
I am more of a "clean up makefile" guy than a "splint" guy.
you might need to dig deeper with 'svn blame'. =-) Seriously, though, lester is your man for linting. 13:26
13:35 AzureStone joined 13:53 uniejo joined 14:01 bubaflub joined 14:04 Andy joined 14:10 PacoLinux joined
Coke Andy: hio. muixirt was asking about splint. 14:11
but he seems to be gone now. just fyi.
14:12 gbacon joined 14:14 NotFound joined
NotFound hi 14:15
purl hola, NotFound.
14:19 muixirt joined 14:22 tcurtis joined 14:30 ash_ joined 14:49 PacoLinux_ joined, patspam joined 14:57 rblackwe joined
cotto_work ~~ 15:20
dalek rrot: r48075 | khairul++ | branches/gsoc_instrument (9 files):
Refactored common items out of InstrumentGC and InstrumentVtable.
15:40
cotto_work That is not a small diff. 15:41
khairul's blog? 15:42
atrodo Not even close to a small diff.
khairul sorry.
cotto_work khairul's blog is parrot.mangkok.com/
ohai
I wasn't complaining 15:43
khairul hiya cotto.
cotto_work It looks like much of it is generated code anyway. 15:45
clock?
purl cotto_work: LAX: Mon 8:45am PDT / CHI: Mon 10:45am CDT / NYC: Mon 11:45am EDT / LON: Mon 4:45pm BST / BER: Mon 5:45pm CEST / IND: Mon 9:15pm IST / TOK: Tue 12:45am JST / SYD: Tue 1:45am EST /
15:54 davidfetter joined 15:58 theory joined 16:04 whiteknight joined 16:08 ruoso joined 16:14 whiteknight__ joined 16:28 eternaleye joined
Coke mildew? 16:40
cotto_work no thanks. I just ate. 16:43
tcurtis mildew is www.perlfoundation.org/perl6/index.cgi?mildew 16:44
Although I don't know how up-to-date that is. 16:45
davidfetter o/` i've got 99 opcodes and fopen ain't one o/`
cotto_work davidfetter++
that gives me an idea for an alternate name for "gripe" ;) 16:46
davidfetter heh 16:47
tcurtis gripe?
cotto_work write to stderr
davidfetter :)
"whinge" 16:48
16:50 AndyA joined 17:14 gbacon joined
atrodo "whinge"? 17:33
cotto_work I too am confused by suspicious foreign words. 17:35
17:36 bubaflub_ joined
Coke whinge is british for whine. 17:47
cotto_work like I said, suspicious foreign words
17:51 bubaflub joined
Coke If you only learn one other language, British isn't so hard. 17:52
atrodo I wouldn't use british enough to remember it 17:53
18:54 LoganLK joined
Coke Is it possible to use find_lex or find_dynamic_lex to go higher up the lex chain? 19:17
ah, .outer. 19:18
(pmichaud++ already did this trick for [uplevel] for partcl-nqp)
dalek kudo: cfca4fb | moritz++ | src/core/IO.pm:
implement cwd, jnthn++
19:19
kudo: 129c37f | moritz++ | src/core/Match.pm:
[Match.perl] fix double-brackets
kudo: 94d01ff | moritz++ | src/core/Match.pm:
initial Match.new - does not handle subcaptures yet
19:27 bubaflub joined 19:50 eternaleye joined 20:11 hercynium joined 20:33 joeri joined 20:34 joeri left, AndyA joined 20:40 lucian joined 20:44 bluescreen joined
bacek aloha, humans 20:48
cotto_work ~~ bacek 20:51
bacek hi cotto
dalek nxed: r545 | NotFound++ | trunk/winxedst1.winxed:
tiny refactor of NewExpr, first step towards constructor calls
20:55
21:09 Mark joined
Mark hey 21:09
moritz hi 21:10
Mark before i ask my question, I'd like to say how much I am currently liking Parrot ;)
seems like a very useful platform/tool 21:11
with that said, i am following the pct introduction. I have set up languages/squaak and tried to run parrot setup.pir test 21:12
I got Parrot revision r44549 required (currently r0)
moritz where did you get parrot from?
Mark Current supported release 21:13
tar
moritz I only ever use development releases, so I fear I can't really help you 21:15
also I've heard that the squaak tuorial is a bit out of date... but that information could be out of date as well
Coke no, the meta-information is correct. 21:16
updating the tutorial has slipped through the cracks. :( 21:17
Mark so, parrot setup.pir test should not work?
bacek Mark, It should. Let me check. 21:19
Mark, are you on 2.3? 21:21
Mark bacek: yes, it seems like Stable release is 2.3
bacek Mark, yeah... Sorry, it's probably broken in 2.3. I fixed it on April, 24th. Which is 4 days after 2.3... 21:23
Mark, you can try to get squaak from svn. It should work with 2.3. 21:24
Mark bacek: squaak, or parrot?
bacek squaak
Mark so, the generator is old?
bacek Mark, yes. It uses old nqp. 21:25
trac.parrot.org/parrot/browser/trun...ges/squaak
Mark bacek: i see, k. Trying with checkout 21:26
what version is the svn?
2.5?
purl well, 2.5 is out, and OpenBSD has a nice port of egcs-stable (the current -snapshot is actually older)
bacek Mark, it's almost 2.6 :) 21:27
Mark so, i better re-make ;)
bacek :)
Mark hm, will "make install" replace the older binaries?
bacek Mark, yes. 21:28
Mark great
bacek Libraries will not be replaced.
somewhere in /usr/local/lib/parrot/
Mark bacek: should I worry about that? 21:29
bacek Nope
Mark k
tcurtis Mark: the new ones will be in a different path /usr/local/lib/parrot/2.5.0-devel(I think) as opposed to /usr/local/lib/parrot/SOMETHING-ELSE, and the newly installed parrot will know where to find the new ones. 21:30
Mark thnx
i dont see tools/dev/mk_language_shell.pl 21:31
bacek tcurtis, aloha! Where is my beloved SSA? :)
cotto_work bacek, if you have your way our optimizations will give real compilers a run for their money 21:32
bacek Mark, it should be in /usr/local/lib/parrot/2.5.0-devel/tools/dev/ 21:33
cotto_work, :) We do need some kind of SSA for any decent optimizations. 21:34
tcurtis bacek: NYdesigned. :)
Mark ah
bacek passing "Modern Compiler Design and Implementation" by Muchnick to tcurtis 21:35
tcurtis, actually you can choose lambda lifting instead of SSA. 21:37
ash_ lambda lifting? 21:47
tcurtis bacek: I'd have thought CPS would be a more obvious alternative to SSA.
bacek tcurtis, erm... They are orthogonal. 21:48
SSA form is about variable assignment. CPS is control flow. 21:49
"lambda lifting" is wrong term, sorry.
tcurtis bacek: according to secure.wikimedia.org/wikipedia/en/...nment_form , SSA is formally equivalent to CPS without non-local control flow. 21:50
bacek tcurtis, github.com/bacek/pir/blob/alpha/TODO (under OPTIMIZATION)
tcurtis, hmm. "citation required" (or how it's usually called in wikipedia) :) 21:54
Anyway, parrot is CPS based. So, got for it :)
" The CPS!SSA transformation is especially helpful for compiling functional programs. Many optimizations that normally require flow analysis can be performed directly on functional CPS programs by viewing them as SSA programs" 21:56
22:01 davidfetter joined
tcurtis became significantly less excited about the free ACM student membership from GSoC when he realized it wouldn't actually let him read ACM-published papers. 22:02
cotto_work not much point to that 22:04
bacek afk # rl
tcurtis bacek: citeseerx.ist.psu.edu/viewdoc/summa...1.1.3.6773 is a paper about the equivalence.
cotto_work robot life? 22:05
;)
tcurtis is wondering when the best time to do SSA/CPS transformation and related optimizations is. 22:14
Mark "First, open your editor and open the files src/parser/grammar.pg" i dont have the parser folder in src/ ? 22:17
where can i find the grammar generated by mk_language_shell ? 22:21
tcurtis Mark: unfortunately the tutorial is out of date. I think mk_language_shell.pl creates the core of a NQP-rx and PCT-based compiler, but the tutorial still uses PGE. 22:23
Mark tcurtis: where can i go for updated reference? 22:24
:( The tutorial was beginning to get very informative and easy to follow 22:26
it was always, actually
cotto_work which tutorial were you looking at?
Mark docs.parrot.org/parrot/latest/html/index.html
docs.parrot.org/parrot/latest/html/...orial.html to be exact 22:27
tcurtis A lot of the grammar stuff will be either close to the same or almost the same, now, but there are some differences. 22:28
Mark tcurtis: well, to start off, i dont see the grammar file :P
tcurtis The grammar file should not be in src/LANGUAGE_NAME/Grammar.pm
The actions in src/LANGUAGE_NAME/Actions.pm 22:29
Mark oh, its a pm though
what is the difference between a .pm and a .pg? 22:30
tcurtis Right. Now that NQP-rx has regex/grammar support, grammars are written in NQP itself.
Mark tcurtis: thnx btw
tcurtis .pg is used for PGE grammars, but .pm is used for modules in NQP or Perl 5 or 6. In this case, it's an NQP file. 22:31
Mark what is the difference between a token and a ri;e? 22:33
tcurtis The best reference for information about Perl 6 regexes, as NQP implements, is the Perl 6 spec(perlcabal.org/syn/S05.html is the main relevant part).
Mark tcurtis: nvm, its in the tutorial :P 22:34
thnx
cotto_work Mark, moritz++ has a good explanation on his blog: perlgeek.de/blog-en/perl-5-to-6/07-rules.html 22:36
Mark cotto_work: thnx
cotto_work under Named Regexes and Grammars 22:37
tcurtis perlgeek.de/blog-en/perl-5-to-6/19-regex.html and perlgeek.de/blog-en/perl-5-to-6/20-...r-xml.html are a couple further posts from Moritz about them. The last one writes a simple grammar. No actions, though. 22:38
Mark on a scale of 1 to 10, how practical is it to write a language that targets the Parrot vm?
tcurtis There are some aspects of regexes that aren't yet fully implemented from the spec, but it's pretty well implemented.
cotto_work what do you mean by "practical"?
Mark not inefficient 22:39
22:39 rv2733 joined, kid51 joined
cotto_work in terms of how fast your code will run or in terms of how fast you'll get to a working compiler? 22:40
Mark cotto_work: how fast your code will run ('m not doubting the working compiler part ;) )
cotto_work parsing is pretty slow atm
in PIRATE, it's the slowest stage by orders of magnitude 22:41
ash_ are there any good examples of nqp grammars with actions?
maybe i should say simple examples of them? 22:42
cotto_work an action is just a chunk of nqp code that gets called (kinda) once a grammar rule has found a match. 22:43
It'll probably be easiest to get used to nqp by looking at existing code (i.e. its test suite) so you're not learning both nqp's syntax *and* PAST manipulation at the same time. 22:44
tcurtis Mark: how fast do you need it to run? Do you need it to run really fast right now? Parrot's not terribly fast right now; if I had a chance to run some code on a super-computer for a length of time, I definitely wouldn't use Parrot to do it. On the other hand, that's definitely something we're working on, and getting some significant improvements in. 22:45
cotto_work Lorito is a big part of our plan to get faster. 22:46
tcurtis In addition, there are some plans in the work for some things that will hopefully result in very significant performance improvements for Parrot. e.g., Lorito, as cotto mentioned.
Mark tcurtis: fast in comparison to ruby per se
22:52 whiteknight joined
ash_ parrot's not terribly slow with hand crafted parrot code, but as a whole its not faster than ruby 22:55
whiteknight not yet. Performance is definitely not Parrot's strong point right now 22:58
cotto_work you could go with a hand-rolled parser in C or C++ like winxed 23:06
I'm not saying I would, but it's possible.
tcurtis Mark: on the plus side, I'm working on an optimization framework right now to help HLL compilers optimize their code more easily. That's one of the biggest slow spots currently: HLLs without very thoroughly-optimized generated code. For example, on a simple loop incrementing a variable from 1 to 100,000, PIR is faster than Ruby or Python for me, but NQP is significantly slower than either. Trivial benchmarks, of course. 23:07
But my point is that there's a lot of room for optimization of Parrot compilers. Probably the biggest slow-down here in the NQP compared to the PIR is that the PIR version doesn't box its numbers. 23:09
ash_: what exactly is the new runcore you're working on going to do? 23:13
Mark: there are two obvious big differences I can think of between the Squaak tutorial and now, by the way. 23:14
Mark: first is that the appropriate action method is automatically called at the end of a rule successfully matching. 23:15
The other is that $( $<foo> ) is no longer the correct way to get a match result's AST: $<foo>.ast is.
cotto_work Heh. A blog post I was reading on creating a tiny toy language ended with a link to the p&w paper. ( thingsaaronmade.com/blog/bootstrapp...-code.html ) 23:20
tcurtis cotto_work: I'm using P&W's object system as the base for my Perl 6 to LLVM compiler. :) 23:23
Well, as the base of the runtime.
cotto_work are you blogging about that?
sounds like an interesting project 23:24
tcurtis cotto_work: not yet. Maybe once it does more than "say 42;" or "my $a = 42; say $a;" and going from Perl 6 to native code requires less than 7(although to be fair, two of them only need to be done once to build the runtime) commands. :) 23:26
cotto_work: github.com/ekiru/bennu is the github repository. It currently uses Yapsi as its parser. 23:29
cotto_work starts to count the layers and gets dizzy 23:30
23:34 ruoso joined 23:55 Psyche^ joined