Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2010-05-20

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:02 TimToady kde tends to read it anyway, gnome tends to ignore it completely
00:02 ash_ joined #perl6
00:08 eternaleye TimToady: The xmodmap call alone is sufficient to make caps lock the compose key
00:08 eternaleye Under any DE or none at all
00:09 sorear joined #perl6
00:09 eternaleye .XCompose is just sugar for it
00:09 eternaleye because xmodmap talks directly to X xand xkb
00:09 eternaleye *and
00:10 Tene eternaleye: .XCompose lists additional compose maps.  How does xmodmap affect that?
00:10 eternaleye Tene: Oh, I misunderstood
00:14 eternaleye TimToady: What custom maps do you need?
00:20 TimToady well, I was asking about vim digraphs, and Tene was pointing me at a pretty set of keybindings for many of the common mathematical symbols, which I downloaded, but have been unable to get working under gnome and ibus
00:20 dalek joined #perl6
00:21 TimToady googling for help with either of those gets people asking about .XCompose and being largely ignored.
00:21 wknight8111 joined #perl6
00:22 cdarroch joined #perl6
00:22 kolibrie joined #perl6
00:22 literal joined #perl6
00:22 jnthn joined #perl6
00:22 zamolxes joined #perl6
00:24 sjohnson TimToady: i take it you aren't much of a win32 kinda guy
00:25 lue jnthn is. He develops rakudo on it!
00:26 eternaleye TimToady: There is http://code.google.com/p/ibus/wiki/LaTeX in ibus-table
00:27 lue Timtoady: Makes you wish for a 300 key keyboard almost. (or maybe even the fabled Unicode keyboard!)
00:27 eternaleye lue: Space Cadet keyboard!
00:27 eternaleye Carpal tunnel free with every order!
00:28 lue I forget the number of unicode glyphs, but I want a keyboard with that many keys.
00:29 lue Yes, it'd include all four astral planes. Yes, it'd be big. Yes, it'd be *worth it*.
00:29 yinyin joined #perl6
00:29 eternaleye lue: Optimus maximus, using each shortcut key as an extra shift level?
00:32 lue hmm... 0x1000-0x1FFF access key [and so on]
00:32 lue .oO(Quick! Where's the 0x2000-0x2FFF key!? I need snowman/comet!!)
00:34 sjohnson lue: i'm a win32 kind of guy as well
00:35 sjohnson for desktop use i mean.  i find *nix unusable in a desktop setting, but pretty ideal for a server setting.
00:41 lue Linux for me. I have a Powerbook that wasn't going to get new OS X version upgrades anymore.
00:43 eternaleye rakudo: our sub infix:<∈>( @a, @b ) { all( @a ) ~~ any( @b ) ?? True !! False }; say (1, 3) ∈ (1, 2, 3, 4);
00:43 p6eval rakudo f6374a: OUTPUT«0␤»
00:44 eternaleye Hm. Still, that means ibus-table LaTeX is working
00:45 eternaleye \in ∈, \ni ∋, \cap ∩, \cup ∪, etc
00:46 rv2733 joined #perl6
00:53 eternaleye rakduo: multi sub infix:<⊕>( Int $a, Int $b ) { $a +^ $b }; say 2 ⊕ 7
00:53 eternaleye ergh
00:53 eternaleye rakudo: multi sub infix:<⊕>( Int $a, Int $b ) { $a +^ $b }; say 2 ⊕ 7
00:53 p6eval rakudo f6374a: OUTPUT«5␤»
01:00 alester joined #perl6
01:01 dalek csmeta: r278 | diakopter++ | trunk/Sprixel/ (4 files):
01:01 dalek csmeta: [perlesque] enable single-inheritance class derivation and custom constructors,
01:01 dalek csmeta: and fixed the no-return looping bug about which pmurias++ reminded me.
01:01 dalek csmeta: review: http://code.google.com/p/csmeta/source/detail?r=278
01:02 diakopter perlesquel: class Baz { method new (--> Baz) { say('hihi') } }; class Foo is Baz { has int $a; method new (str $a --> Foo) { }; method Bar (--> int) { say('in Bar ' ~ (self.a)); return self.a } }; my $blue = Foo.new('hihihi'); say($blue.Bar()); say($blue.a); $blue.a = 5; say($blue.Bar())
01:02 p6eval perlesquel: OUTPUT«hihi␤in Bar 0␤0␤0␤in Bar 5␤5␤real 0.05␤user 0.04␤sys 0.02␤»
01:08 diakopter oky doky
01:09 diakopter perlesque is basically done
01:09 diakopter time to port Cursor.pm to it
01:28 pugssvn r30723 | sorear++ | [STD] Document LazyMap better
01:29 sorear TimToady: you might want to look over that; I've dumped most of what I gleaned from you, there
01:30 plobsing joined #perl6
01:30 meppl joined #perl6
01:34 mikehh joined #perl6
01:37 masonkramer joined #perl6
01:38 sorear ((), $C)[-1]
01:38 sorear really?
01:38 diakopter sorear: thanks :) that's very helpful.  JIT for my porting of Cursor/LazyMap
01:42 lue afk
01:43 sorear diakopter: you know we're working on basically the same project, right?
01:43 diakopter orly
01:44 diakopter you're porting Cursor/LM to something?
01:45 sorear almost
01:45 sorear I'm working on viv
01:45 diakopter yeah
01:45 diakopter emit_p5, right?
01:45 sorear I'm trying to get to the point where STD-parsed STD can be turned into P5
01:45 diakopter I'm trying to get to the point where STD-parsed STD can be turned into perlesque
01:45 sorear once that's done, it'll be trivial to retarget it to generate perlesque
01:45 diakopter oh
01:46 diakopter :D
01:46 sorear we ought to work together
01:46 diakopter yeah but Cursor/LazyMap still need ported
01:46 sorear VAST is a very horizontal thing; it should be possible to avoid stepping on each others toes too much
01:46 sorear yes
01:46 diakopter and their interfaces designed, since they'll likely be different
01:47 sorear I'd like to create a lower-level viv IR
01:47 [mark] joined #perl6
01:47 diakopter cool
01:47 sorear which will be *after* regex desugaring
01:47 sorear which means that there needs to be a "Cursor" API to an extent independant of backend
01:47 diakopter yes
01:48 sorear also, I'll be gone Fri-Mon
01:49 diakopter I have kindof a full demarcation of parse operations, modeled after p6 regexes (different names in some cases tho) here: http://csmeta.googlecode.com/svn/trunk/Sprixel/src/Grammar/
01:49 diakopter and the various Cut operations I implemented in jsmeta but not csmeta yet
01:50 diakopter there are probably 15-20 operations yet to be added
01:50 diakopter or are you talking even lower level....
01:53 sorear actually in the long run I plan to rewrite Cursor et al in Perl6
01:53 sorear and share a single implementation between the backends
01:53 diakopter doesn't everybody :P
01:55 diakopter perlesque can be a stepping stone to that.  you just gotta put up with functional/OO style only (lacking Perl's "fluent"/inline style)
01:55 colomon joined #perl6
01:57 diakopter wait.  what?  Cursor.pmc is considerably bigger than I remember
01:57 diakopter <frown>
01:59 diakopter hrm
02:00 diakopter ok, yes, I'm definitely going to proceed with the 'extend my own grammar engine' idea instead of porting Cursor by hand. lol.
02:00 diakopter it'll be much easier to match the semantics
02:01 diakopter I'll need an "interpreter mode" for each of those combinators
02:01 diakopter which is fine
02:01 diakopter it'll probably be faster anyway
02:05 diakopter sorear: you still around?
02:08 sorear yes
02:08 snarkyboojum joined #perl6
02:08 diakopter decommuting&
02:25 masonkramer_ joined #perl6
02:31 occamshatchet joined #perl6
02:31 colomon o/
02:37 JimmyZ joined #perl6
03:09 buu joined #perl6
03:09 lue ohai again
03:21 lue anything in the pugs examples folders that's missing/not working/should be there?
03:32 pencilk joined #perl6
03:45 justatheory joined #perl6
03:52 viklund_ joined #perl6
03:53 meteorja1 joined #perl6
04:06 cotto joined #perl6
04:06 Arroz_ joined #perl6
04:08 araujo joined #perl6
04:19 lue afk
04:19 snarkyboojum joined #perl6
04:25 diakopter I blogmothd again: http://diakopter.blogspot.com/2010/05/perlesques-class-declarations-obtained.html
04:30 dalek csmeta: r279 | diakopter++ | trunk/Sprixel/ (2 files):
04:30 dalek csmeta: [perlesque] added tests of single inheritance and fields and field mutators and
04:30 dalek csmeta: constructors
04:30 dalek csmeta: review: http://code.google.com/p/csmeta/source/detail?r=279
04:35 dalek csmeta: r280 | diakopter++ | trunk/Sprixel/t/class.t:
04:35 dalek csmeta: [perlesque] fix class.t
04:35 dalek csmeta: review: http://code.google.com/p/csmeta/source/detail?r=280
04:40 sorear diakopter: why is it called cs *meta* ?
04:40 sorear TimToady: What do you remember about the art of regex compilation for Cursor?
04:41 diakopter cs==csharp ; cuz theoretically it'll be a metaprogramming environment
04:42 pugssvn r30724 | colomon++ | [t/spec] Refudge / tweak / add number tests.
04:43 diakopter 'The statement that it is better to ask for forgiveness than to obtain permission is true 90% of the time. The key to success is knowing where the other 10% is.'    http://blogs.msdn.com/oldnewthing/archive/2010/05/18/10013610.aspx
04:45 araujo joined #perl6
05:00 dalek rakudo: 8292d45 | (Solomon Foster)++ | src/core/Numeric.pm:
05:00 dalek rakudo: Add stub for Numeric.roots.
05:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8292d45b4db1a215470c7ce5375dee3fe477a81d
05:05 diakopter ne1 know how goes rakudo's closure-fixing?
05:06 * diakopter looks at you, sixperlers
05:12 sorear pmichaud is supposedly Looking At It
05:12 sorear we all know how many tuits he has these days, though ;(
05:15 kaare joined #perl6
05:21 diakopter my tuits are especially round lately
05:24 diakopter no masak today?
05:24 diakopter afk&
05:25 arnsholt diakopter: It's only 0730, so I think he might not be up yet
05:26 justatheory_ joined #perl6
05:34 ejs joined #perl6
05:53 Khisanth joined #perl6
05:55 lisppaste3 joined #perl6
05:58 cj joined #perl6
05:59 mtve joined #perl6
06:01 sorear diakopter: uh.  Don't mess with Cursor...
06:01 sorear Cursor contains, in addition to the uh cursory stuff, the half of STD which cannot be expressed using gimme5
06:03 uniejo joined #perl6
06:14 uniejo joined #perl6
06:20 diakopter sorear: whaddya mean "don't mean with cursor"
06:20 diakopter is that a threat?
06:20 diakopter mess
06:20 diakopter I didn't think I said I'd mess with Cursor...
06:20 sorear you blogged about rewriting cursor...
06:21 diakopter erm
06:21 sorear and it was a warning, not a threagt
06:21 diakopter "goal of either extending Sprixel's grammar engine to cover all of Cursor's capabilities or manually porting Cursor to perlesque"
06:22 diakopter I don't see "rewriting Cursor [in perl 5, which I assume you meant]" in there
06:22 sorear frankly, I don't understand 80% of Cursor's capabilities
06:22 sorear Cursor is already in Perl 5
06:22 diakopter and?
06:22 sorear I meant reimplementing its functionality in any language
06:22 sorear and, therefore rewriting it in perl 5 would make no sense
06:23 diakopter ok, that wasn't obvious at all. People rewrite software in the same language all the time.
06:23 sorear I have never heard of "rewrite" implying "in the same language"
06:23 sorear ever
06:24 diakopter that's the only usage I've ever heard
06:24 diakopter ever
06:25 snarkyboojum can definitely mean either :)
06:25 sorear right, it's always meant either to me
06:26 snarkyboojum though often if it's a rewrite in a different language that's specified "rewrite in <xyz>" as opposed to "rewrite" implying the same lang :)
06:26 * snarkyboojum butts out now
06:27 sorear when I say "rewrite" I mean "rewrite (and I haven't specified yet whether it's the same language or a different one)"
06:28 sorear life would be so much easier if English meant the same thing to everyone.
06:28 sorear I need to figure out how to get less worked up over it not doing so
06:28 diakopter sorear: I'm sorry for even imagining that I'm qualified to understand Cursor.pm6, let alone rewrite/reimplement it.  What would you recommend would be a better use of my time?
06:28 diakopter until you let me know, I won't even consider messing with Cursor
06:29 eternaleye joined #perl6
06:30 sorear ...
06:31 diakopter Cursor.pmc, I meant
06:31 sorear you make me want to stop talking to other programmers
06:32 Su-Shee joined #perl6
06:35 diakopter ok. if "uh.  Don't mess with Cursor..." was in any way meant to be light-hearted/jolly, I didn't catch it, and I regret that.
06:37 diakopter maybe I've been mistaking my benefit-of-the-doubt canister for my round-tuit canister lately. :|
06:42 diakopter sorear: I did already realize that Cursor contains a very large portion of the grammar engine. I suppose I could've made that fact more clear in my blog post. But I have spent a lot of time with STD.pm and parsers/grammars in general the past few years and I'm pretty confident in my ability to reimplement those routines and to mimic the overall architecture.
06:43 diakopter otoh, if it proves reasonable to do a mostly-automatic translation of Cursor.pmc to perlesque or something else, all the better.
06:45 sorear diakopter: As long as you realize what you are getting yourself into, I have nothing further to say
06:47 diakopter I very frequently oscillate between indulging NIH/JFDIY on the one side and ... some other option that I don't understand at all.
06:48 diakopter hrm, maybe that's part of my problem.
06:48 sorear I'm not familiar with JFDIY
06:49 diakopter just ------ do it yourself ... a just-coined variant of JFDI, after which Jifty is named, I think.
06:56 iblechbot joined #perl6
07:02 * sorear re-reads S05 on cut-like operators
07:03 moritz_ here in #perl6 we also say JDFI, which means "just duckin' fu it!"
07:04 moritz_ diakopter: in your latest blog post, you have an untyped  my $bar = Bar.new(4, 6)
07:04 moritz_ diakopter: is that type inferred?
07:04 moritz_ diakopter: or did you drop the requirement of strict type declarations?
07:05 BrowserUk joined #perl6
07:07 sorear it's inferred
07:08 sorear like C++, perlesque supports upward type inference
07:08 sorear if the types of variables are known, the type of any expression is
07:08 sorear so, if you use an initializer, you don't need to restate the type
07:19 BrowserUk ?
07:21 sorear BrowserUk: yes/
07:21 sorear ?
07:23 spinclad BrowserUk: '?'!
07:25 snarkyboojum ?
07:25 spinclad exactly
07:26 snarkyboojum heh
07:27 BrowserUk Sorry. Just a cheap way of having pheeny tell me if it has anything for me.
07:27 spinclad aha.
07:27 BrowserUk *phenny even
07:27 spinclad phenny: tell BrowserUk '!'
07:27 phenny spinclad: I'll pass that on when BrowserUk is around.
07:27 * snarkyboojum knew that, but thought he'd join in
07:28 BrowserUk ?
07:28 phenny BrowserUk: 07:27Z <spinclad> tell BrowserUk '!'
07:28 BrowserUk SHame it (he? she? ) is so verbose. Could be fun.
07:29 jonasbn joined #perl6
07:32 * spinclad re-lurks among the cricquets
07:33 BrowserUk phenny:tell ruoso, we could to & fro for ever about whether IO needs a kernel thread or not, and the benefits or otherwise. I spent yesterday knocking up a crude runnable demo to try and give us some feel for the likely benefits. It might be done already were it not that I always have trouble implementing ring buffers. Still chasing a once-per-cycle out-by-one error :(
07:37 sjohnson joined #perl6
07:37 agentzh joined #perl6
07:42 sorear BrowserUk: I think you need a space after the colon
07:42 BrowserUk phenny: tell ruoso, we could to & fro for ever about whether IO needs a kernel thread or not, and the benefits or otherwise. I spent yesterday knocking up a crude runnable demo to try and give us some feel for the likely benefits. It might be done already were it not that I always have trouble implementing ring buffers. Still chasing a once-per-cycle out-by-one error :(
07:42 phenny BrowserUk: I'll pass that on when ruoso is around.
07:43 sorear BrowserUk++ taking initiative
07:43 BrowserUk Thanks sorear. I hadn't even noticed that phenny hadn't responded
07:43 SmokeMachine joined #perl6
07:45 TiMBuS joined #perl6
07:45 sorear I /think/ I understand the Cursor API well enough to start the viv regex compiler
07:47 Trashlord joined #perl6
07:54 * sjohnson snorts [Coke]
08:03 rv2733 joined #perl6
08:24 stepnem joined #perl6
08:28 * moritz_ wonders if there'll be any takers for this week's contribution challenge
08:28 moritz_ if there's none this evening, I'll try to increase the buzz factor (perlmonks, maybe TPF blog, perlbuzz, reddit)
08:29 arnsholt joined #perl6
08:30 cls_bsd joined #perl6
08:32 ejs joined #perl6
08:38 ejs joined #perl6
08:39 frooh joined #perl6
08:39 moritz_ rakudo: (1..1000).map({.say}).eager
08:40 p6eval rakudo 8292d4:
08:40 p6eval ..OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤20␤21␤22␤23␤24␤25␤26␤27␤28␤29␤30␤31␤32␤33␤34␤35␤36␤37␤38␤39␤40␤41␤42␤43␤44␤45␤46␤47␤48␤49␤50␤51␤52␤53␤54␤55␤56␤57␤58␤59␤60␤61␤62␤63␤64␤65␤66␤67␤68␤69␤70␤71␤72␤73␤74␤75␤76␤77␤78␤79␤80␤81␤82␤83␤84␤85␤86
08:40 moritz_ rakudo: (1..1_000_000).map({.say}).eager
08:40 p6eval rakudo 8292d4:
08:40 p6eval ..OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤20␤21␤22␤23␤24␤25␤26␤27␤28␤29␤30␤31␤32␤33␤34␤35␤36␤37␤38␤39␤40␤41␤42␤43␤44␤45␤46␤47␤48␤49␤50␤51␤52␤53␤54␤55␤56␤57␤58␤59␤60␤61␤62␤63␤64␤65␤66␤67␤68␤69␤70␤71␤72␤73␤74␤75␤76␤77␤78␤79␤80␤81␤82␤83␤84␤85␤86
08:41 dakkar joined #perl6
08:41 moritz_ vim: .say for 1..1_000_000
08:43 sorear moritz_: if you can't hook any newbies I'll take it
08:44 moritz_ sorear: that's nice, but I'd like to wait a week
08:49 mathw masak and I have an agreement next week to recommence work on Form.pm :)
08:50 mathw So tempted though I am to have a go at the command-line thing, I shall not, as I do have my own project
08:50 mathw But first I need to survive tomorrow night
09:07 moritz_ btw perl 6 development makes me sensible for several kinds of LTA error messages
09:08 moritz_ take matlab
09:08 moritz_ >> ones(2, 3) + ones(3, 3)
09:08 moritz_ ??? Error using ==> plus
09:08 moritz_ Matrix dimensions must agree.
09:08 moritz_ why not include the mis-matching matrix dimensions in the error message?
09:10 constant joined #perl6
09:10 constant joined #perl6
09:20 masak joined #perl6
09:21 * masak enters channel in mid-air, spins, lands on his feet
09:21 phenny masak: 17 May 01:19Z <[Coke]> tell masak that I have a working example now of his poker code.
09:21 phenny masak: 17 May 01:19Z <[Coke]> tell masak it's just the same code he posted earlier, though. (need some .value()s)
09:21 phenny masak: 17 May 03:57Z <eternaleye> tell masak is http://irclog.perlgeek.de/perl6/2010-05-17#i_2337529 and subsequent a bug?
09:21 phenny masak: 17 May 18:10Z <[Coke]> tell masak that I forked his gist at http://gist.github.com/244255 and that my version adds royalflush and actually seems to work under rakudo-latest.
09:21 masak [Coke]: cool.
09:21 masak eternaleye: will check.
09:21 masak a bit of a backlog awaits me :)
09:22 * moritz_ observes a particular masak fondness in phenny :-)
09:22 masak :)
09:49 pugssvn r30725 | sorear++ | [viv] A first swing at regex translation
09:52 mathw Everybody loves masak
09:52 mathw Even IRC bots
09:52 * sorear hugs masak
09:53 * moritz_ sings "everybody loves masak, what's the matter with you" and apologizes by Don McLean
09:53 * mathw starts a campaign to get 'Everybody Loves masak' scheduled to replace 'Everybody Loves Hypnotoad'
09:59 clintongormley joined #perl6
10:02 pugssvn r30726 | sorear++ | [viv] Translate <.foo> and <foo>
10:13 moritz_ http://perlgeek.de/blog-en/perl-6/perl-survey.writeback
10:13 moritz_ do we want a Perl 6 survey?
10:13 moritz_ what kind of questions would we try to answer with such a survey?
10:14 m6locks "when is rakudo star coming out?"
10:14 moritz_ m6locks: that's a question to ask the developers, not the users
10:14 m6locks aye, it's still a faq
10:15 agentzh joined #perl6
10:15 moritz_ FAQs are not what you ask in survey.
10:16 moritz_ "how do I count the lines in file?"
10:16 m6locks how about asking them why are they not already enthusiastically programming with perl6
10:16 moritz_ but speaking of releases... today is the Thursday after parrot release!
10:16 m6locks after which parrot release?
10:17 moritz_ the one on Tuesday, 2.4
10:17 m6locks is it like the most advanced and optimized parrot ever?
10:17 moritz_ I think so
10:17 * m6locks makes note to build rakudo again
10:18 moritz_ rakudo startup time is down to 0.4s
10:18 m6locks pretty cool
10:19 moritz_ and build resource usage is also more acceptable than at the last release
10:19 m6locks just to make sure, the version is Parrot r46771 ?
10:19 moritz_ s/version/revision/ yes
10:20 m6locks check
10:20 pugssvn r30727 | sorear++ | [viv] Generate regex circumlogues
10:20 sorear I now have viv functionally translating 'token foo { <a> <b> <.c> }'
10:20 moritz_ sorear: wow, that commit message has a nice, cryptic feeling to it :-)
10:21 moritz_ sorear: translating to what?
10:21 sorear moritz_: perl 5
10:21 moritz_ sorear: so you're re-implementing gimme5 in viv? (or parts/supersets of it)
10:22 sorear moritz_: that is the plan, yes
10:22 sorear viv was created by TimToady++ as a successor to gimme5
10:22 sorear it's not done
10:22 moritz_ bootstrapping++
10:22 sorear also, (killing 1000 lines of p5regex)++
10:22 colomon o/
10:22 moritz_ :-)
10:23 moritz_ it's the release manager!
10:23 snarkyboojum at least http://planetsix.perl.org/ made it to the "Which of the following Perl news sites do you read" question
10:23 moritz_ aye, it did
10:24 moritz_ lunch&
10:29 meppl joined #perl6
10:31 sorear phenny: msg TimToady : metachar:normspace parsing appears to be broken; 'rule foo { <a> <b> <c> }' and 'rule foo {<a><b><c>}' generate the same AST modulo all-caps flags
10:32 sorear phenny: tell TimToady : metachar:normspace parsing appears to be broken; 'rule foo { <a> <b> <c> }' and 'rule foo {<a><b><c>}' generate the same AST modulo all-caps flags
10:32 phenny sorear: I'll pass that on when TimToady is around.
10:39 * colomon is starting to get annoyed at the Perl survey.
10:39 snarkyboojum colomon: annoyed why?
10:41 colomon so far, a lot of questions which don't acknowledge the existence of Perl 6
10:41 colomon which makes it harder to answer the remaining question
10:47 colomon *questions
10:47 snarkyboojum well moritz_ could start a Perl 6 survey :) e.g. http://gist.github.com/407440
10:47 snarkyboojum or rather #perl6 could start a survey :)
10:47 * snarkyboojum hides
10:55 colomon so, anyone out there working on last minute patches, or is the current code releasable?
10:56 colomon moritz_++ for working on the changelog
11:03 masak snarkyboojum!
11:03 masak \o/
11:03 snarkyboojum masak-san! \o/
11:03 snarkyboojum welcome back (I guess)?
11:04 masak thank you.
11:04 masak yep, came back from Russia late last night.
11:04 masak 'It's a sad fact that parts of the Perl community haven't realized that Perl 6 is more than a dream, but comes with programs you can run today. -- moritz_++
11:04 snarkyboojum I heard you did a cool talk on tardis/sigmund in "the large" conference room?
11:05 masak the room was large, yes :)
11:05 snarkyboojum :)
11:05 snarkyboojum excellent
11:05 masak and people seemed to enjoy the talk.
11:06 masak hope to have occasion to give it again once we've gooten further with yapsi/tardis/sigmund.
11:06 snarkyboojum will the talk make it's way online at some stage? :)
11:07 snarkyboojum its
11:07 masak I'll put it online today.
11:07 snarkyboojum o/
11:07 masak just thought I'd backlog first. :)
11:12 colomon "Erlangen" an okay release name?
11:13 masak think so. what's the motivation?
11:15 colomon ummm.
11:15 colomon something about you giving a talk there, I think?
11:15 colomon the discussion was a few days back....
11:15 snarkyboojum Erlangen a German city, not any relation to the Erlang programming language I s'pose :)
11:16 colomon moritz_ gave the talk.
11:16 colomon m-confusion settled!
11:16 colomon moritz_colomon: that's easy, you can name Erlangen.pm
11:16 colomon 12:59colomon: after my home .pm group where I held a Perl 6 talk this month
11:17 colomon .oO(it is too early in the morning to be thinking)
11:26 ejs joined #perl6
11:43 jnthn o/
11:43 jnthn masak: Welcome back! :-)
11:43 masak \o/ thanks
11:44 moritz_ masak: how was your talk?
11:44 masak it was a bit on the short side, but I think it was well-received.
11:44 masak the feedback coming back was positive.
11:44 jnthn masak: How'd you like Russia? :-)
11:45 masak I felt a kinship of a sort with Moscow.
11:45 masak it's hard to describe.
11:45 fridim joined #perl6
11:46 jnthn :-)
11:47 masak there were simple things, such as biting into a bread and realizing that my granny used to make that kind of bread...
11:48 masak I'm also reasonably proud that what little Russian I know helped me naviagte the metro without a problem.
11:48 moritz_ .oO( "It's possible!")
11:49 masak :)
11:50 jnthn masak: Yes, a little Russian - especially being able to read - goes a long way down there. :-)
11:50 masak I missed being able to speak better, though. will have to fix that somehow.
11:51 jnthn Yeah...I'm hacking on my Russian quite a lot at the moment. Having been to Moscow recently and having Kiev coming up Real Soon is a good motivator, but now I've dug into a routine I'm really enjoying it too.
11:51 * moritz_ misses the new talk on http://feather.perl6.nl/~masak/
11:51 masak moritz_: I'll get there sometime today. still wading in backlog.
11:52 moritz_ masak: ping me when you've uploaded it
11:52 takadonet morning all
11:52 masak jnthn: sounds gread. I'll try that too.
11:52 masak takadonet: \o
11:52 moritz_ o/
11:52 masak moritz_: sure thing.
11:52 jnthn masak: Aye, it's quite a distraction from Swedish though.
11:56 jonasbn left #perl6
11:57 moritz_ http://www.w3.org/International/tutorials/tutorial-char-enc/ woah, a lot of effort went into that document
11:57 colomon jnthn, masak, moritz_: can you guys take a look a the changelog (just pushed update) and see if there is anything more to be added?  thanks!
11:58 moritz_ ++ turned on an additional 47 test files
11:58 moritz_ woah
11:58 jnthn moritz_: Wow...that looks like a good read.
11:58 jnthn colomon: Will do shortly.
11:59 moritz_ if somebody paid me for that, I could imagine spending half of my work time on writing such documents :-)
11:59 masak oh, right. release day today. :)
11:59 moritz_ colomon: I've already put in those changes that I thought essential... so if you added more stuff, it's what I missed in the first place :-)
12:00 colomon moritz_++
12:00 colomon is there a git equivalent of "svn cp" for creating new files from old?
12:00 dalek rakudo: d855135 | (Solomon Foster)++ | docs/ChangeLog:
12:00 dalek rakudo: Add a few more bits to the changelog.
12:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d8551359608b47d28b309aa89e62e4d909fbf74c
12:01 moritz_ colomon: cp, git add $newflie
12:01 moritz_ colomon: git automatically detects that it's a dupe of an existing file
12:01 moritz_ or a nearly-dupe, if you change it
12:01 colomon git++ moritz_++
12:01 jnthn colomon: + implemented lexical classes
12:01 masak there's an interview that Andrew Shitov did with me on Tuesday: http://perl6.ru/interviews/carl-masak-on-perl6/
12:01 jnthn colomon: It was also lexical roles too
12:01 masak snarkyboojum++: you're mentioned :)
12:01 moritz_ ah, I was not quite sure
12:01 colomon jnthn: what should I say about those?
12:02 moritz_ "classes and roles"
12:02 jnthn colomon: Well, "implemented lexical and anonymous classes and roles"
12:02 jnthn We never had anonymous roles before either :-)
12:02 snarkyboojum masak: really? cool! :)
12:02 colomon jnthn++
12:02 colomon (added that line locally)
12:02 snarkyboojum masak: thanks for the mention :)
12:03 jnthn colomon: Otherwise looks pretty good.
12:04 masak snarkyboojum: it's the least I could do. I should have emphasized your role more in the talk as well.
12:05 colomon moritz_: what can I say to justify the name "Erlangen"?
12:05 snarkyboojum awww masak++ :)
12:05 moritz_ colomon: it's the home .pm group of a regular Rakudo contributor, and had a Perl 6 talk in May
12:05 colomon Is it your home group?
12:06 moritz_ yes
12:06 fridim joined #perl6
12:11 pmurias joined #perl6
12:14 iblechbot joined #perl6
12:14 ejs joined #perl6
12:14 sjohnson joined #perl6
12:14 viklund_ joined #perl6
12:14 sorear joined #perl6
12:14 yahooooo joined #perl6
12:14 xomas_ joined #perl6
12:14 simcop2387 joined #perl6
12:14 cognominal joined #perl6
12:14 pjcj joined #perl6
12:14 jjore joined #perl6
12:14 hatseflats joined #perl6
12:14 spinclad joined #perl6
12:14 bloonix joined #perl6
12:14 dhoss joined #perl6
12:14 moritz_ joined #perl6
12:21 bluescreen joined #perl6
12:24 masak haven't backlogged yet, so I don't know if this is news: http://onionstand.blogspot.com/2010/05/getting-back-at-mst.html
12:25 masak :)
12:27 pmurias transparent seems like a fun option
12:27 phenny pmurias: 19 May 22:03Z <diakopter> tell pmurias re: has int $.foo , yeah, I should change that I guess. I don't see the point of the extra . though
12:27 phenny pmurias: 19 May 22:04Z <diakopter> tell pmurias re: subroutine not returning, I don't know...
12:27 masak http://www.shadowcat.co.uk/blog/matt-s-trout/iron-man-lost/
12:28 justatheory joined #perl6
12:30 moritz_ we should ask Andrew to also publish the English version of the interview
12:30 ive joined #perl6
12:33 moritz_ http://november-wiki.org/recent gives an internal server error
12:35 justatheory joined #perl6
12:36 bbkr rakudo: sub Str {}; say "test" ~~ Str; # how this should behave according to spec? compile error? compare to Str type or enter Str sub and compare to it's output?
12:36 p6eval rakudo 8292d4: OUTPUT«1␤»
12:36 moritz_ bbkr: call sub Str, smart-match against its result
12:36 justatheory joined #perl6
12:37 bbkr then it's a bug, isn't it?
12:37 moritz_ yes
12:37 * bbkr submits
12:37 masak bbkr++
12:38 jnthn moritz_: ...oh rly?
12:38 jnthn std: sub Str {}; say "test" ~~ Str;
12:38 p6eval std 30727: OUTPUT«ok 00:01 114m␤»
12:38 masak yeah, I'm also curious why.
12:38 masak why does a lexical sub take precedence over a type name?
12:38 jnthn Anyway, I think typename beats sub.
12:39 jnthn Probably has to
12:39 jnthn Since we decide at parse time.
12:39 moritz_ but the sub is also known at parse time
12:39 jnthn And we don't know about post-declared lexical subs are parse time.
12:39 * masak checks with viv
12:39 moritz_ std: sub Str { }; Str ~~ 1
12:39 p6eval std 30727: OUTPUT«ok 00:01 111m␤»
12:39 moritz_ std: sub foo { }; foo ~~ 1
12:39 p6eval std 30727: OUTPUT«[31m===[0mSORRY![31m===[0m␤Preceding context expects a term, but found infix ~~ instead at /tmp/h4QlShACCM line 1:␤------> [32msub foo { }; foo ~~[33m⏏[31m 1[0m␤Parse failed␤FAILED 00:01 112m␤»
12:39 moritz_ ok, I was wrong
12:39 Guest43078 joined #perl6
12:39 moritz_ not a bug
12:39 * moritz_ apologizes
12:40 jnthn Heh. I really don't want "sub Str {}; say "test" ~~ Str;" and "say "test" ~~ Str; sub Str {};" to behave differently.
12:40 masak indeed not.
12:40 pmichaud good morning, #perl6 (briefly)
12:40 jnthn pmichaud! \o/
12:40 masak morning, pm.
12:40 pmichaud any urgent questions needing my attention in the next 2 hours or so?
12:40 masak viv is silent on the matter. it only says term__S_identifier.
12:41 moritz_ masak: the STD.pm6 run clearly shows that it's parsed as a type name
12:41 the_sniff joined #perl6
12:41 * moritz_ ponders blogging about the story behind http://github.com/rakudo/rakudo/commit/603c64c70d2354297b792a31bdc4a42e2be6f061
12:41 ruoso joined #perl6
12:42 the_sniff left #perl6
12:42 pmichaud +        pir::set__vps($meth, $meth_name);
12:42 pmichaud ...really?
12:42 moritz_ why not?
12:42 pmichaud what kind of object is $meth?
12:42 moritz_ a parrot Sub
12:43 pmichaud weird
12:43 moritz_ it's the clunky interface to set the sub name
12:43 pmichaud right
12:43 pmichaud that's what I find weird
12:43 pmichaud has it always been that way?
12:43 moritz_ that's what the closure earlier in the method compiles down to
12:43 jnthn pmichaud: Yes, 'fraid so.
12:43 jnthn pmichaud: Like, for ages.
12:43 moritz_ is NQP not supposed to build parrot Subs?
12:44 pmichaud moritz_: no, what is being done there is fine.
12:44 pmichaud I was just surprised to see that the 'set' opcode was the way to set a sub's name.  :-|
12:44 jnthn pmichaud: I don't think there's a method set_name to do it.
12:44 jnthn pmichaud: I agree it'd be preferable.
12:44 pmichaud that's fine
12:45 pmichaud maybe a comment in the rakudo source that makes it clear we're setting the sub's name
12:45 pmichaud because that's a little.... obscure
12:45 jnthn +1
12:45 moritz_ ok, I can add that
12:45 pmichaud also,  pir::clone__PP   can be just pir::clone, I think.
12:45 pmichaud (okay to leave with signature for now)
12:45 moritz_ is there a general rule about when the sig can be left out?
12:45 ejs joined #perl6
12:46 pmichaud not really
12:46 pmichaud the opcodes that pct knows about don't require the signature
12:46 masak moritz_ and others: ping. talk is now up at http://feather.perl6.nl/~masak/
12:46 * jnthn always ers on the side of "pct won't know it"
12:46 pmichaud in some cases, the opcodes have to have the signatures because there are multiple variants and pct can't be sure which one is intended
12:47 pmichaud well, eventually we'll have to replace all of those pir:: signatured opcodes with something else if we want to port to a different backend
12:47 moritz_ well, there's not much point in cloning non-PMCs
12:47 pmichaud (used to be able to clone strings, but can't any more, and it was rare to begin with)
12:47 moritz_ yes, I know
12:47 pmichaud and the pir:: opcodes will likely become nqp:: or something else for common things
12:47 pmichaud like clone, and add, and ...
12:48 jnthn masak: Heh, I didn't expect *that* comment of mine to make it into the talk. :-P
12:48 masak :D
12:48 pmichaud is colomon++ still up for today's release?
12:48 masak it was a good opener :)
12:48 pmichaud ...talk?
12:48 moritz_ pmichaud: yes, he  worked on the ChangeLog a few minutes ago
12:48 pmichaud colomon++
12:48 masak pmichaud: bottom of http://feather.perl6.nl/~masak/
12:49 pmichaud masak++
12:50 pmichaud I like the adoption curve, esp. the "We are here" part
12:51 moritz_ that should make it into the release anouncement of R* :-)
12:52 masak feel free.
12:52 jnthn masak: Yes, I was just on that slide too. It's nice.
12:53 xinming joined #perl6
12:53 pmichaud well, today I'll be several hours at the treatment center with my wife... should have some good hacking time then if she's not needing me for anything
12:53 jnthn masak: The time travelling debugger "The Problem" slide is nice too.
12:53 pmichaud yesterday didn't go at all as planned
12:53 proller joined #perl6
12:53 masak jnthn: heh, the translator wanted my slides beforehand, and I replied "um, ok... here they are. I don't know how useful they'll be, though. not too many words." :)
12:54 jnthn pmichaud: Sorry to hear that. :-(
12:54 jnthn masak: I wonder if we had the same translator.
12:56 dalek rakudo: 2e71bc8 | moritz++ | src/metamodel/Attribute.nqp:
12:56 dalek rakudo: beautified code a bit, and add comment about pir::set_vps($meth, $meth_name)
12:56 dalek rakudo: ... as requested by pmichaud++
12:56 dalek rakudo: No functional changes.
12:56 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2e71bc8922b92eec0a1bc86da4ecfcfc9b9ec2e0
12:56 masak jnthn: no, don't think so.
12:57 pmichaud okay, I'm heading off to the center.  Should be back online in a couple of hours.
12:58 jnthn o/
12:58 moritz_ ~\o
12:58 jnthn masak: Nice slides...I can imagine it woulda been a great talk. :-)
12:59 masak jnthn: :)
12:59 moritz_ did you comment on the degree of completeness of the tools you've talked about?
12:59 masak I did, in fact.
13:00 masak someone asked how much of sigmund exists today, and I confessed 'not much'.
13:00 masak also, Andrew tried to get Yapsi working, and came back asking 'what's /usr/bin/alpha?'. so I need to update the README for Yapsi. :)
13:02 [Coke] rakudo: for <1 2 3> Z <4 5 6> Z <7 8 9> -> $a, $b, $c { say "$a $b $c"};
13:02 p6eval rakudo d85513: OUTPUT«No applicable candidates found to dispatch to for 'infix:<Z>'. Available candidates are:␤:(Iterable $a-iterable, Iterable $b-iterable)␤:()␤:(Any $a, Any $b)␤␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
13:03 [Coke] (I do miss tcl's style of looping over multiple lists simultaneously that doesn't involve having to Z anything.)
13:03 [Coke] also, bug?
13:03 moritz_ yes (and well-known)
13:04 [Coke] day 07. =-)
13:04 takadonet for <1 2 3> Z <4 5 6> -> $a, $b { say "$a $b"};
13:05 [Coke] willskip.
13:05 takadonet rakudo: for <1 2 3> Z <4 5 6> -> $a, $b { say "$a $b"};
13:05 p6eval rakudo d85513: OUTPUT«1 4␤2 5␤3 6␤»
13:05 moritz_ rakudo: multi infix:<Z>(*@a) { say @a>>.WHAT }; <1 2 3> Z <4 5 6> Z <7 8 9>
13:05 p6eval rakudo d85513: OUTPUT«Str()Str()Str()Str()Str()Str()Str()Str()Str()␤»
13:05 moritz_ rakudo: multi infix:<Z>(\$a) { say $a.perl }; <1 2 3> Z <4 5 6> Z <7 8 9>
13:05 p6eval rakudo d85513: OUTPUT«No applicable candidates found to dispatch to for 'infix:<Z>'. Available candidates are:␤:(Any $a)␤␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
13:08 colomon pmichaud: I'm back working on the release again, just had to watch my boy a bit.
13:08 proller joined #perl6
13:08 colomon "Rakudo now passes 32,347 spectests. We estimate that there are about
13:08 colomon 39,500 tests in the test suite, so Rakudo passes about 82% of all tests."
13:09 colomon blocking on the rest of the change and improvement list in the announce
13:09 colomon jnthn: can you give me a longer blurb for "implemented lexical and anonymous classes and roles" for the announcement?
13:09 moritz_ as the showcase-improvement you can use anon class and roles
13:10 moritz_ :-)
13:10 colomon we're on the same wavelength again.  ;)
13:10 moritz_ colomon: you can also check in what you have now, to give others the chance to edit it
13:10 colomon oo, good thinking.
13:11 * masak rejected #75214
13:11 moritz_ masak++
13:11 ejs joined #perl6
13:11 moritz_ moritz_--
13:13 [Coke] is there a mailing list where all rakudo RT traffic is sent?
13:13 masak p6c.
13:13 masak but not all is sent there, only new tickets and comments explicitly cc:ed.
13:14 moritz_ the spammy list
13:14 dalek rakudo: 65893e1 | (Solomon Foster)++ | docs/ (2 files):
13:14 dalek rakudo: Work on release announcements.
13:14 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/65893e16ee691b6b9e5fc0cfb3adff91dcd8d038
13:14 moritz_ I filter all RT mails into another folder in order not to miss the other mails on p6c :-)
13:14 [Coke] what's this construct called: ^4 ?
13:15 masak [Coke]: range.
13:15 moritz_ "prefix range"?
13:15 [Coke] does it get a modifier to the name since it's only got one explicit endpoint?
13:16 moritz_ that's why I'd add "prefix"
13:18 justatheory joined #perl6
13:19 * jnthn back
13:20 jnthn colomon: checking what you have
13:20 [Coke] moritz_: yah, that was typed out before I saw your reply ^_^
13:21 jnthn s/and the Perl 6 talk they had Moritz/and the Perl 6 talk that Moritz/
13:21 moritz_ [Coke]: there's not yet a term fully coined, so we have the chance to do it
13:21 colomon seems like implemented lexical and anonymous classes and roles
13:21 colomon basic enum implementation
13:21 jnthn s/give/gave/
13:21 jnthn colomon: I'd say something like (for announce)
13:21 colomon are both worth mentioning.
13:22 jnthn "Leixcal classes and roles were implemented. Additionally, anonymous classes - which were never quite right in alpha - are now implemented more correctly, and anonymous roles are also supported."
13:22 colomon jnthn++ # changes made locally.
13:22 jnthn That's probably enough detail on them.
13:23 moritz_ btw I've pushed the list of contributors
13:23 colomon moritz_++
13:23 colomon I've incorporated jnthn's paragraph and said something about numeric / real changes.
13:23 jnthn colomon: Probably also worth noting in the release announce there's been quite a lot of nume...oh, you beat me. :-)
13:24 moritz_ "Basic support for enummerations of the form 'enum Weekday <Monday Tuesday ...>' has been restored"
13:24 moritz_ *named enummerations
13:24 colomon just pushed my latest.
13:25 colomon moritz_++
13:25 colomon (suddenly paying attention to spelling errors reported by my editor...)
13:25 dalek rakudo: 9307272 | moritz++ | docs/announce/2010.05:
13:25 dalek rakudo: [announce] list contributors since last release
13:25 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/930727221571b2e15115742c880250ae72416383
13:25 dalek rakudo: 1c6eb2d | (Solomon Foster)++ | docs/announce/2010.05:
13:25 dalek rakudo: Incorporate jnthn++'s suggestions.
13:25 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1c6eb2decdf583e4b11564db898420dbd66bf826
13:25 jnthn Maybe it's worth to mention the use :from<perl5> and eval :lang<perl5> that are now suported, so people can try out Blizkost.
13:26 ejs joined #perl6
13:26 moritz_ good idea
13:26 moritz_ (colaborative editing)++
13:26 colomon jnthn: wasn't sure what to say about those.
13:26 colomon should also add it to the changelog probably.
13:26 moritz_ somebody on perlmonks pointed out that Perl 6 needs a 'do $homework' operator :-)
13:27 colomon moritz_++ # like the "following people contributed" message.
13:27 moritz_ "Basic interoperation with Perl 5 through the external Blizkost [1] project is now supported"
13:27 pugssvn r30728 | coke++ | Add code from day07 - one skip; 2 bits of code still need testing.
13:27 moritz_ and then a link to blizkost
13:27 jnthn maybe like "First cut of use Foo:from<perl5> and eval('foo', :lang<perl5>); needs Blizkost[1] to be installed to work."
13:29 colomon link to Blizkost?
13:29 jnthn http://github.com/jnthn/blizkost
13:29 [Coke] moritz_: day07 should be rakudo-clean to run (fudged, still needs 2 things made into tests.)
13:31 dalek rakudo: c984346 | Coke++ | docs/announce/2010.05:
13:31 dalek rakudo: fix typo, minor formatting.
13:31 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c984346ef0077fb5eb46c5cf2ff3d7856678b08b
13:31 diakopter moritz_: yes, sorear is correct; upward type inference
13:33 envi^home joined #perl6
13:34 lisppaste3 colomon pasted "Current changes and improvements list" at http://paste.lisp.org/display/100230
13:34 colomon (that's been pushed, as well)  Anything else I should add?
13:36 dalek rakudo: 24e28a1 | (Solomon Foster)++ | docs/ (2 files):
13:36 dalek rakudo: Some spell checking, mention Blizkost.
13:36 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/24e28a14875a66814233295cc1cf0a162880120d
13:38 rgrau_ joined #perl6
13:40 colomon pmichaud: can you (should you?) updated spectest-progress.csv before release?
13:43 colomon anyone want to volunteer to be release manager for #31 (July 22nd)?
13:44 [Coke] Sure.
13:44 colomon [Coke]++
13:47 * masak liked http://blogs.perl.org/users/rodrigolive/2010/05/perlcritic---praise.html
13:48 dalek rakudo: 296a56c | (Solomon Foster)++ | docs/release_guide.pod:
13:48 dalek rakudo: Add #29 Erlangen to the release list, and mark that [Coke] has the July release.
13:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/296a56c779ee6d6aa4befc29fe6870f3d95fe142
13:51 gbacon_ joined #perl6
13:51 * moritz_ lols at Perl::Critic --praise
13:53 alester joined #perl6
13:54 sahadev joined #perl6
13:57 moritz_ rakudo: my @a = 'a' .. 'g'; say 0, *+2 .. @a
13:57 p6eval rakudo d85513: OUTPUT«Method 'succ' not found for invocant of class 'Block'␤current instr.: '!dispatch_.=' pc 438 (src/glue/dispatch.pir:117)␤»
13:57 moritz_ rakudo: my @a = 'a' .. 'g'; say 0, *+2 ... @a
13:57 p6eval rakudo d85513:  ( no output )
13:58 colomon moritz_: infinite list
13:58 * diakopter determines to implement literal sequences/series *last* in Sprixel
13:58 moritz_ colomon: wouldn't it DWIM better to use numeric comparsion for numbers?
13:58 colomon diakopter: the series code is entirely in perl 6, you can just copy it if you've got enough of Perl 6 running.
13:59 diakopter NIH
13:59 moritz_ std: my @a; @a[0, *+2 ...]
13:59 p6eval std 30728: OUTPUT«[31m===[0mSORRY![31m===[0m␤Bogus term at /tmp/dkABTxL4Up line 1:␤------> [32mmy @a; @a[0, *+2 ...[33m⏏[31m][0m␤Parse failed␤FAILED 00:01 115m␤»
13:59 moritz_ std: my @a; @a[0, *+2 ... *]
13:59 p6eval std 30728: OUTPUT«ok 00:01 112m␤»
14:00 masak a tweet from [the kind person whose laptop I borrowed]++ for the talk, and a picture of me giving the talk :) http://twitter.com/sharifulin/status/14157475435
14:00 masak seems his full name is (Анатолий Шарифули)++
14:01 moritz_ std: <a b c d e f g>.pairs.grep({.value !% 2})>>.value
14:01 p6eval std 30728: OUTPUT«ok 00:01 111m␤»
14:01 diakopter was the talk given in an underground bunker?
14:01 moritz_ rakudo: <a b c d e f g>.pairs.grep({.value !% 2})>>.value
14:01 p6eval rakudo d85513:  ( no output )
14:01 justatheory joined #perl6
14:01 colomon rakudo: say ("4" + 2).WHAT
14:01 p6eval rakudo d85513: OUTPUT«Num()␤»
14:02 moritz_ rakudo: say <a b c d e f g>.pairs.grep({.value !% 2})>>.value
14:02 p6eval rakudo d85513: OUTPUT«abcdefg␤»
14:02 colomon moritz_: I don't know.
14:02 moritz_ rakudo: say <a b c d e f g>.pairs.grep({1; .value !% 2})>>.value
14:02 p6eval rakudo d85513: OUTPUT«abcdefg␤»
14:02 moritz_ rakudo: say <a b c d e f g>.pairs.grep({.key !% 2})>>.value
14:02 p6eval rakudo d85513: OUTPUT«aceg␤»
14:02 colomon moritz_: and (I just realized) what did you mean?
14:03 colomon say 0, *+2 ... @a  is not at all the same thing as  say 0, *+2 ... +@a
14:03 moritz_ why not?
14:03 colomon series takes an array on the RHS.
14:03 moritz_ oh.
14:04 colomon (at least by spec)
14:04 colomon only the first element of the array figures in the series calculation, and the rest of the array is simply appended to the end of the series.
14:05 moritz_ rakudo: say <a b c d e f g>.pairs.classify({$_ % 2}).Hash.<0>>>.value
14:05 p6eval rakudo d85513: OUTPUT«Method 'Num' not found for invocant of class 'Pair'␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤»
14:05 colomon so if numeric comparison was used in your example (and series worked properly with RHS arrays, which I'm not sure it does at the moment), the result would have been
14:05 moritz_ rakudo: say <a b c d e f g>.pairs.classify({.key% 2}).Hash.<0>>>.value
14:05 p6eval rakudo d85513: OUTPUT«Method 'Hash' not found for invocant of class 'GatherIterator'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
14:05 colomon 0, 'b', 'c', 'd', 'e', 'f', 'g'
14:06 moritz_ rakudo: say %(<a b c d e f g>.pairs.classify({.key% 2}))<0>>>.value
14:06 p6eval rakudo d85513: OUTPUT«Method 'hash' not found for invocant of class 'GatherIterator'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
14:06 moritz_ that's a bug
14:06 plobsing joined #perl6
14:06 moritz_ the hash contextualizer should work with every list-y object
14:11 masak diakopter: no, it was given in a giant newly-built 'expo' building.
14:11 colomon Hmmm.... interesting that there are zillions of non-zero exit status failures on OS X, but make spectest works perfectly on my 64-bit Linux box.  (though this reminds me why I normally use tools/test_summary.pl to spectest.)
14:11 masak diakopter: totally modern, actually, with shining floors and all.
14:12 moritz_ masak: http://rt.perl.org/rt3/Ticket/Display.html?id=75174 did you see that one before?
14:12 moritz_ it sounds far too trivial to have escaped your attention for long
14:13 masak moritz_: I was surprised too.
14:13 masak moritz_: no, haven't seen it before.
14:13 diakopter see the 2nd publication on http://www.thorn-lang.org/
14:13 diakopter ruoso: see the publications on http://www.thorn-lang.org/
14:13 masak it must have slipped between our fingers as a sufficiently uncommon thing to do.
14:14 masak rakudo: my @a; for 1 { @a = gather { take 42; last; take 5 } }; say @a.perl
14:14 p6eval rakudo d85513: OUTPUT«[]␤»
14:14 masak that's wrong too, isn't it?
14:15 moritz_ I suspect so
14:15 * masak submits rakudobug
14:15 masak rakudo: my @a; for 1 { @a = gather { take 42; } }; say @a.perl
14:15 p6eval rakudo d85513: OUTPUT«[42]␤»
14:15 masak oh wait.
14:15 masak no, it's not wrong.
14:15 masak unsubmit rakudobug. :)
14:15 moritz_ the last; exits the for-loop
14:16 masak right.
14:16 masak so no assignment is ever made.
14:16 moritz_ so it's not assigned yet
14:16 masak unless the assigment is made before, to an iterator of some sort.
14:16 masak but I don't know the specifics of the semantics there.
14:17 moritz_ if laziness was guarantueed, then assignment would have to happen after the first take
14:17 moritz_ but since it isn't in the case of finite lists...
14:19 dalek rakudo: 1c32466 | Coke++ | docs/release_guide.pod:
14:19 dalek rakudo: remove extra punctuation.
14:19 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1c32466b48349392e4e01944d5e21a6f54fccd88
14:19 masak well, what's the semantics of `@a = gather for 1..* { take $_ }` ?
14:20 moritz_ it's supposed to return a lazy, infinite list
14:20 moritz_ but it's not guarantueed to return control flow after the first take()
14:21 moritz_ it's allowed to return after 10th take() if the compiler thinks that's more efficient
14:22 colomon masak: I don't think we actually know yet.
14:22 masak colomon: ok.
14:22 mathw Laziness is cool, but difficult
14:22 masak in my browser on http://proto.perl6.org/ -- the heading 'Project list' is closer to the thing above than it is to the thing below. that looks wrongish.
14:23 moritz_ .oO( patches welcome )
14:23 colomon oh, hey, just remembered I've forgotten to look at the roadmap
14:23 masak also, I'm still on the lookout for a good suggestion for where to place to project icons. I don't like that they displace the project name and break the nice left margin.
14:24 moritz_ masak: then displace all project names
14:24 moritz_ masak: and make the left margin a bit smaller
14:24 ruoso diakopter, the thorn language seems to use a kind of explicitness about threading that we're trying to avoid...
14:24 phenny ruoso: 07:42Z <BrowserUk> tell ruoso we could to & fro for ever about whether IO needs a kernel thread or not, and the benefits or otherwise. I spent yesterday knocking up a crude runnable demo to try and give us some feel for the likely benefits. It might be done already were it not that I always have trouble implementing ring buffers. Still chasing a once-per-cycle out-by-one error :(
14:24 masak moritz_: I should try that. I fear it might look bad; but I really should withhold judgment and just go for it.
14:25 moritz_ or just use a table
14:25 moritz_ it's tabular data, after all
14:25 moritz_ and it's easy to get the layout right with a table
14:27 masak the rationale for using a table is indeed bigger now that we effectively have four columns rather than two.
14:27 ruoso BrowserUk, that's an interesting exercise... I'll be waiting for your conclusions
14:28 moritz_ masak: or more, if you put each badge into a column on its own
14:28 ruoso diakopter, have you seen a presentation on that subject in the Moose site?
14:29 pugssvn r30729 | moritz++ | [u4x] remove markup that makes it invalid 5POD
14:29 ruoso diakopter, http://sartak.org/talks/osdc.tw-2010/nonhierarchical-oop/nonhierarchical-oop.pdf
14:30 masak moritz_: it would be fruitful to see what degrades nicer in a Lynx-like browser; a table or a dl. I suspect the latter.
14:32 moritz_ masak: last I tried 'links' (another text-only browser) non-huge tables looked fine
14:32 * colomon is ready to make release....
14:32 * moritz_ wonders why http://u4x.perl6.org/glossary.html still doesn't render properly
14:33 colomon "make release" as in the command, that is.
14:33 moritz_ \o/
14:34 iblechbot joined #perl6
14:34 masak moritz_: well, links goes a little further than other text-based browsers in positioning things the way they would be if t'were graphics. I'm amazed at what good a job it does sometimes.
14:36 dalek rakudo: 9021d4c | (Solomon Foster)++ | docs/ROADMAP:
14:36 dalek rakudo: Paradoxically update ROADMAP to note when the last real update to it was.
14:36 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9021d4c896c0fa0050d78a8df786d3af49ecb70f
14:37 masak rakudo: my (@a, @b) = [1, 2], [3, 4]; say @a.perl; say @b.perl
14:37 p6eval rakudo d85513: OUTPUT«[[[1, 2], [3, 4]]]␤[[]]␤»
14:37 masak disregarding the double arrays...
14:37 masak this is correct, yes?
14:38 * moritz_ doesn't think so
14:38 masak why not?
14:38 moritz_ if the RHS was (1, 2; 3, 4), then yes
14:38 moritz_ because assignment is not (signature) binding
14:38 masak so what should @a and @b contain, respectively?
14:39 moritz_ I'm not quite sure
14:39 moritz_ perl6: my (@a, @b) = [1, 2], [3, 4]; say @a.perl; say @b.perl
14:39 p6eval elf 30729: OUTPUT«syntax error at (eval 125) line 3, at EOF␤syntax error at (eval 125) line 6, near "}␤ ="␤ at ./elf_h line 5881␤»
14:39 p6eval ..rakudo d85513: OUTPUT«[[[1, 2], [3, 4]]]␤[[]]␤»
14:39 p6eval ..pugs: OUTPUT«[[1, 2], [3, 4]]␤[]␤»
14:39 PerlJam masak: sub foo (@a,@b) { ... };  foo( [1,2], [3,4] );    # same thing that they would contain here.
14:39 masak PerlJam: no, that's binding.
14:39 moritz_ masak: I kinda suspect that pugs is correct
14:40 PerlJam sure, but that's my guess :)
14:40 masak moritz_: so, 'yes' to my original question.
14:40 moritz_ oh
14:40 * moritz_ mis-read the output
14:40 moritz_ yes
14:40 masak good.
14:40 masak uasi++ on Twitter was asking.
14:41 colomon wth?
14:41 colomon make test just failed on my release.  :(
14:41 colomon t/01-sanity/._99-test-basic........ Dubious, test returned 1 (wstat 256, 0x100)
14:41 colomon No subtests run
14:41 moritz_ reproducible?
14:41 colomon t/01-sanity/99-test-basic..........ok
14:42 colomon there shouldn't even be a ._99-test-basic, should there?
14:42 moritz_ right
14:42 colomon reproducible on this build?  yes.
14:43 moritz_ colomon: a left-over backup file from an editor in your source tree?
14:43 colomon hmmmmm....
14:45 colomon nope, it's not in the source tree that generated the release tar.
14:45 moritz_ is it in MANFIFEST?
14:45 colomon but the file is in the tarball
14:45 patspam joined #perl6
14:46 colomon no
14:47 PerlJam moritz's back-file idea still sounds plausible.
14:47 PerlJam were you editing that file when you made the tarball?
14:47 moritz_ not if you know how the tarball is made
14:47 moritz_ git ls-files >> MANIFEST
14:47 moritz_ and then the tarball from the MANIFEST
14:48 colomon I have not looked at that file in months.
14:48 PerlJam oh, hmm.
14:48 colomon weird tar bug?
14:49 moritz_ hm
14:49 colomon I'm trying to make release on my Linux box instead....
14:50 colomon that appears to lack the file.
14:50 * moritz_ tries a local release
14:50 colomon now to build...
14:50 moritz_ MacOS specific weirdness?
14:52 colomon could be, I guess.
14:57 colomon make test passes now
14:58 justatheory joined #perl6
15:00 isBEKaml joined #perl6
15:05 colomon make spectest has todo passes.
15:06 colomon ship it!
15:07 orafu joined #perl6
15:08 colomon okay, uploaded to http://github.com/rakudo/rakudo/downloads
15:08 colomon if a couple people could check that and make sure it works for them, I'll go ahead and do the announcement.
15:12 isBEKaml oh, hai, #perl6!
15:13 colomon o/
15:13 moritz_ trying it out now
15:13 colomon moritz_++
15:14 * PerlJam too
15:16 * moritz_ bemounds the fact that perl Configure --gen-parrot uses serial make for building parrot
15:16 moritz_ *bemoans
15:16 moritz_ can't type today
15:17 colomon I like bemounds as a word.
15:17 [Coke] parrot tries hard to be -j safe.
15:17 moritz_ and it mostly is
15:17 [Coke] seems like you could allow the user to override that in Configure.
15:18 moritz_ (although I just got a failure for make -j3 install in the parrot release)
15:18 moritz_ but that could be related to me Ctrl+C'ing the previous build attempt
15:18 [Coke] moritz_: does it fail on just 'make' or specifically on the install?
15:19 moritz_ [Coke]: I configured parrot, ran 'make', aborted, and then ran 'make -j3 install'
15:19 moritz_ and it seemd to build parrot (at least it linked some binaries), but didn't install
15:21 [Coke] if you can duplicate it on a 'realclean, config, make -j3 install' open a ticket, i'll fix it.
15:21 moritz_ sure; testing the rakudo release first
15:22 moritz_ build and 'make test' were clean
15:23 PerlJam same here.  still waiting for make spectest
15:24 [Coke] I died on the build with:
15:24 [Coke] /Users/coke/bird/bin/parrot  -o perl6.pbc src/Perl6/Compiler.pir
15:24 [Coke] error:imcc:syntax error, unexpected IREG, expecting '(' ('$I30767') in file 'src/gen/core.pir' line 7951 included from 'src/Perl6/Compiler.pir' line 1
15:24 [Coke] (using installed parrot of most recent vintage.)
15:24 moritz_ [Coke]: most recent parrot is bogus
15:25 moritz_ at least without further rakudo patches
15:25 [Coke] I'll do the --gen-parrot.
15:25 moritz_ because post-release the gcd opcode as moved to a dynop
15:26 ejs joined #perl6
15:26 isBEKaml hey folks, is there anything I can do to help today (apart from building the release rakudo that I'm doing & )?
15:26 moritz_ if the parrot folks want to remove that opcode, we should implement it as a dynop in rakudo (as sorear++ suggested)
15:27 moritz_ isBEKaml: you could generate an index file for u4x.perl6.org
15:27 [Coke] isBEKaml: grab an advent day and test it?
15:27 isBEKaml moritz_: don't know how to do that...
15:27 moritz_ isBEKaml: the code that renders the pod into HTML is in docs/u4x/web in the pugs repo
15:27 moritz_ isBEKaml: just generate an index.html with links to the other generated HTML files
15:28 moritz_ or.. what [Coke]++ suggested
15:28 isBEKaml moritz_: yeah, I worked on it some too. :)
15:29 uniejo joined #perl6
15:29 isBEKaml [Coke]: I just make realcleaned my base parrot install, so no perl6 for me, as of now(until this build completes) :(
15:29 moritz_ perfect time to write some tests :-)
15:29 isBEKaml So I will just prolly get the indexing working.. ;)
15:30 justatheory joined #perl6
15:30 isBEKaml :-)
15:30 * colomon had a momentary surge of pride thinking that the Advent mandelbrot script might have gone into the official p6 test suite.  Then remembered I probably was already responsible for thousands of lines of the test suite anyway...
15:30 masak isBEKaml++
15:30 moritz_ lol
15:30 isBEKaml yo, masak! how was Russia?
15:30 masak colomon++
15:31 masak isBEKaml: Russia was highly satisfactory.
15:31 isBEKaml lol, colomon! some things are so easy to forget.. ;)
15:31 moritz_ in sovjet russia masak was talking
15:31 moritz_ or so :-)
15:31 moritz_ erm, masak talked to *you*
15:31 masak but I accidentally the return ticket one day late... :/
15:31 masak which was potentially disastrous.
15:31 jnthn masak: So you got an extra bonus day?
15:32 isBEKaml masak: so you'd end up saying "Rossiya Matushka" ? ;)
15:32 masak jnthn: no, because the Visa wasn't as confused as I was when I ordered the ticket.
15:33 masak jnthn: fortunately I got a ticket for the right day. I bought it just in time, one hour before departure.
15:33 colomon does building a release do something funky to your t/spec directory?
15:33 gbacon joined #perl6
15:33 moritz_ colomon: yes, it nukes it
15:33 colomon bother.
15:34 moritz_ colomon: and replaces it by a 'svn export'
15:34 moritz_ I have a local commit that warns about that
15:34 * moritz_ feels bad for not having it pushed earlier
15:34 masak jnthn: I shudder to think what the Russian authorities would have had in store for me had I deviated from the visa departure date. :-/
15:34 colomon moritz_: no worries.
15:35 isBEKaml masak: Then there would one too many Russian scowls... :D
15:35 isBEKaml uniquely Russian scowl...
15:35 masak isBEKaml: aye. the ones I got were quite enough, thank you.
15:36 isBEKaml masak: No, I meant you, for you already said "Russia was highly satisfactory". Wait, did you just practise that unique Russian scowl? ;)
15:37 masak I don't scowl. life is too short for scowls.
15:37 moritz_ t/spec/integration/advent2009-day02.t                        (Wstat: 0 Tests: 10 Failed: 1) Failed test:  8
15:37 moritz_ I've seen that failing once before
15:37 moritz_ hash order?
15:37 masak I did, however, sigh loudly two or three times before the departure stuff sorted itself out.
15:38 jnthn masak: When I do the visa application I tend to deliberately off-by-a-couple it on the start and end date.
15:38 jnthn masak: Just In Case.
15:38 masak jnthn: is that possible, given that they synch it with the hotel stay?
15:38 jnthn masak: Erm...well. :-) :_0
15:39 jnthn masak: Depends how much you're paying for the visa I guess. :-)
15:39 masak apparently there are aspects of all this that I've yet to learn. :)
15:39 ejs joined #perl6
15:39 jnthn ;-)
15:40 [Coke] 'make spectest' should not do an 'svn up' in a release tarball.
15:41 masak moritz_: I don't see any way that test file could be a victim of hash order.
15:41 moritz_ masak: neither do I... except if I typo'ed one of the alternatives (and that is seldom chosen)
15:42 isBEKaml moritz_: index.html would just be displaying all the html files along with their corresponding pods, right?
15:42 masak moritz_: 'seldom' has to be 50% here.
15:42 isBEKaml masak: seldom is "almost none"
15:42 isBEKaml :)
15:42 moritz_ isBEKaml: link to, not display them
15:42 masak well, the test file only contains 50% cases.
15:43 moritz_ masak: nobody says that hash order is *truely* random
15:43 moritz_ it's only possibly random
15:43 isBEKaml moritz_: well, I was just referring to linking them (native tongue kicked in, I guess :) )
15:43 PerlJam release tarball built and tested just fine here.
15:43 masak fwiw, 'e4x' (just like 'proto') is an internal name, not meant for public use. so please use 'doc' or 'docs' or something rather than 'e4x' in public URLs.
15:44 masak moritz_: true.
15:44 christine joined #perl6
15:44 isBEKaml The kowner himself just mis-spelt u4x! :O
15:45 isBEKaml or there's e4x too??
15:45 masak how embarrassing :)
15:45 masak no, it should be 'u4x'.
15:45 masak been a while :P
15:45 moritz_ masak: I asked here if I should call the domain 'u4x' or 'doc' or 'docs'...
15:45 jnthn .oO( embarassment 4 christmas )
15:45 masak moritz_: I missed that.
15:45 * [Coke] has some failures in spectest.
15:45 masak moritz_: haven't backlogged yet.
15:46 moritz_ masak: and I kinda liked the answer "u4x", because it's not yet sufficiently complete or good to act as official 'doc' site, IMHO
15:46 colomon "Bad file descriptor at tools/test_summary.pl line 367."
15:46 isBEKaml and it's *special* with loads of X'mas spirit!
15:46 moritz_ masak: but adding another alias to is is just one line of apache config file
15:46 colomon so how are the release tests coming?  (he asked hopefully....)
15:47 moritz_ colomon: all pass, except that one advent integration test
15:47 * isBEKaml thinks something should be done to remove the core.pir bottleneck in a future release...
15:47 colomon shall I announce?
15:47 moritz_ wfm
15:48 masak moritz_: I don't like the thought of using the name 'u4x' for anything official. the tale behind the name 'proto' shows how easily things get established, and how hard they are to change after the fact. also, see 'pugs repo'.
15:48 moritz_ got a point there
15:48 colomon and where? akudo.org, use.perl, perl6-language, perl6-announce, perl6-users, and others seems a little perl6 mailing list heavy.
15:48 moritz_ $ ./perl6 -e 'my $c = 0; for ^1000 { my %h = a => 1, b => 2; $c++ if %h.keys.[0] eq "a"}; say $c'
15:48 colomon (oh, wait, should tag, too.)
15:48 moritz_ 0
15:48 moritz_ or 1000
15:48 * masak envisions a Perl 6 implementation called 'Akudo' :)
15:49 masak for maximum confusion :P
15:49 moritz_ so currently rakudo hashes seem to chose one hash key at startup, and stick to it
15:50 isBEKaml with Aikido! :) Akudo ^^human parsing&&  Aikido  (PASS!) :)
15:50 * PerlJam wonders if kudo-ra means anything interesting
15:50 moritz_ colomon: parrot-dev@lists.parrot.org, if you care
15:52 colomon how do I update rakudo.org?
15:53 moritz_ you log in
15:53 moritz_ and then 'create content' in the left bar
15:54 colomon no account.  can I easily create one, or do I need someone else to do this to get it done quickly?
15:55 moritz_ colomon: I think Andy Lester has to give you authoring privs
15:55 moritz_ colomon: don't know if anybody else got that power... maybe pmichaud?
15:55 alester Yeah, it's pretty simple.
15:55 alester moritz_: What's wrong with me, huh?  Huh?
15:56 alester Let's fight!
15:56 moritz_ alester: ah, you're present... didn't see you in the nick list
15:56 moritz_ alester: sorr
15:56 moritz_ y
15:56 alester Come on, we'll arm wrestle.
15:56 alester colomon: What are you thinkin' of updating/
15:56 alester ?
15:56 masak the release announcement.
15:56 colomon alester: rakudo release announcement
15:57 alester Go create an account, tell me what it is, and I can give you privs.
15:57 colomon alester: it's colomon
15:57 * moritz_ 's arm is pretty weak
15:58 moritz_ but the fingers are strong, easy to write /kick alester if he insits on fighting :-)
15:58 alester The old "might makes right" strategy!
15:58 TimToady 'akudo' would mean Way of Evil, so that fits.
15:58 phenny TimToady: 10:32Z <sorear> tell TimToady : metachar:normspace parsing appears to be broken; 'rule foo { <a> <b> <c> }' and 'rule foo {<a><b><c>}' generate the same AST modulo all-caps flags
15:58 moritz_ alester: the old "we surpress the powerless domain admins" stratgy... oh wait
16:00 alester Did I set up a a separate admin account?
16:00 Lorn joined #perl6
16:01 TimToady or it could be the Way of Bitterness
16:01 * moritz_ has no idea
16:02 alester aha, I did.
16:03 * moritz_ decommutes
16:03 alester colomon: Done.
16:06 colomon alester++
16:15 colomon okay, announced at rakudo.org.  Rakudo wikipedia page updated.
16:17 jnthn colomon++
16:18 masak \o/
16:19 colomon should I just send the announce message to all of perl6-language, perl6-announce, perl6-users at once?
16:20 masak I would.
16:24 ash___ joined #perl6
16:26 BrowserUk ?
16:28 * TimToady thinks about async IO solutions that depend on polling :)
16:29 PerlJam colomon++  hit perlmonks and use.perl too, if you can.
16:30 * PerlJam wonders what sort of reaction we'd get posting release announcements to p5p  ;>
16:35 cdarroch joined #perl6
16:35 cdarroch joined #perl6
16:37 colomon would use.perl involve more than just a post to my use.perl account?
16:37 madalu joined #perl6
16:37 PerlJam colomon: nope.
16:37 colomon okay, that's easily done.
16:38 colomon wait, story or journal entry (for use.perl)?
16:41 [particle] story, iirc, this is news
16:41 PerlJam aye
16:41 jnthn I think story is what gets it on the front page.
16:41 jnthn Or at least submitted to be added to the front page.
16:41 * BrowserUk had to think about polling asynch IO for serveral long seconds (thinking Oh! No!), before the P(h)enny dropped :)
16:43 * ruoso hadn't understood until BrowserUk's comment
16:48 BrowserUk ruoso: (As your around), I tried to use go to produce the demo I mentioned, but it's still to flakey. I've coded it in Perl 5, but the GIL and slow shared mem implementation do do it justice. I'm now trying Erlang, but progress is slow.
16:48 BrowserUk *you're
16:49 BrowserUk *do do (appropriate:) don't do...
16:49 ruoso what I'm thinking now is that we should assume the interpreter should support different strategies
16:50 ruoso and some hint in the code to help it decide which one to choose
16:50 TimToady [Coke]: I think of ^ as the "upto" operator
16:52 masak nom &
16:52 ruoso basically it can go from co-routine-based-cooperative-threading for intensive IO
16:53 colomon use.perl story submitted.
16:53 ruoso to as-many-os-threads-as-necessary
16:53 Eevee joined #perl6
16:53 BrowserUk Outside of a working demo, the best explaination I can come up with is Amdahl's Law. Starting a whole new kernel thread to support a single IO (sequence)--when that thread would spend most of it's time just waiting for disk/socket/etc., will produce negligable extra gains once you've already threaded the two exspensive calculations.
16:54 ruoso sure sure... the idea is not mixing the strategies in the same code
16:54 ruoso but choosing one or the other depending on the code
16:55 BrowserUk However, having a single kernel thread sitting around in every process that cooperatively threads all IO requests, and deals with signals/system messages(on Win), is a good idea.
16:56 ruoso hmm...
16:56 ruoso but you're just moving the problem from one place to another
16:57 BrowserUk How so?
16:57 BrowserUk (And which problem?)
16:57 ruoso because the code that will deal with the data coming/going from/to the IO requests will still need to deal with the communication from that thread to they (as opposed to from the OS to them)
16:57 colomon perl6 mailing lists "spammed".  according to release guild, now time to celebrate.
16:57 PerlJam colomon++ yay!
16:58 BrowserUk Isn't that where ==> comes in?
16:58 ruoso ==> is just a pipe
16:59 BrowserUk (Or <==)
16:59 ruoso you're just moving the buffer from the OS to the program memory
16:59 ruoso but you still need a buffer
16:59 ruoso so, no gain
17:00 TimToady er, avoiding the OS can be a huge performance gain
17:00 ruoso considering ==> could operate directly in the OS buffe
17:00 ruoso TimToady, but it's not avoiding... it's just doing that in a single thread
17:00 diakopter ruoso: no I didn't see that
17:00 BrowserUk Yes, but if IO requests (attached to a pipe), pass their end of that pipe to an appropriate routine in the IO/Event thread
17:01 BrowserUk Moving which buffer from the OS?
17:01 ruoso considering the following code...
17:02 ruoso @a <== map { expensive_op_1($_) } <== { expensive_op_2($_) } <== $*IN
17:02 lokpest joined #perl6
17:02 lokpest left #perl6
17:02 ruoso you can't have the expensive_op_2 happening in the IO thread
17:03 ruoso since it's too expensive for cooperative-threading
17:03 ruoso so, if you have a thread that does all the IO operations
17:04 ruoso you still need to have a buffer with the data read from the OS and still to be sent to the worker thread
17:04 BrowserUk No. It doesn't Expensive_op_2 runs in a Kernel thread and has one end of that last pipe. $*IN actuall sends a message to the coop thread stating the IO req parameters and passing teh other end of that last pipe.
17:05 BrowserUk And the IO thread uses asynchronous read
17:05 ruoso hmm... so you wouldn't be doing all IO requests cooperatively threaded
17:06 BrowserUk Yes I would.
17:06 ash___ joined #perl6
17:06 ruoso since the read op would be done in the worker thread directly
17:06 BrowserUk coop thread == IO thread
17:06 BrowserUk ETOOMANYTHREADS :)
17:06 BrowserUk Where does "worker trhead" come from?
17:06 ruoso it's the thread running the expensive operation
17:07 dalek rakudo: e3fe329 | moritz++ | docs/release_guide.pod:
17:07 dalek rakudo: [docs] warn about potential damage from "make release"
17:07 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e3fe329c0cbba0ed3a5d41cb5277a1931d13d6e4
17:07 * TimToady must wander off, alas; play nicely, kids...  :)
17:07 * BrowserUk needs to produce demo....
17:09 BrowserUk The thred running teh expesive operation read from the last pipe. The IO thread writes to it, once the data arrives from disk
17:09 ruoso the point is, why not have the original pipe in the therad running the expensive operation?
17:10 BrowserUk But pipes are *between* threads aren't they? Not "in" them?
17:10 ruoso I mean... why not having the thread running the expensive operation to read on the original pipe
17:11 BrowserUk If the expensive tread wants to read directly from the disk, it doesn't need a pipe.
17:11 ruoso I think we lost ourselves in the discussion...
17:11 BrowserUk I don;t know what you mean by "original pipe".
17:11 BrowserUk Indeed.
17:12 isBEKaml moritz_: ok, I banged up some code. Looks a little hackish, though and needs cleaning up modules..
17:12 moritz_ isBEKaml: great
17:12 ruoso BrowserUk, considering the snippet I posted... I see today two different scenarios...
17:12 BrowserUk I'll draw a diagram of why *I* mean and paste it somewhere...
17:12 BrowserUk Okay; belay that! Listening.
17:13 ruoso 1) all the code runs in event-based-cooperative-threading (usefull for non-expensive operations)
17:13 ruoso 2) the code runs in different threads (usefull for expensive operations)
17:15 BrowserUk Why just those two? What not 3) All IO runs in the IO thread (cooperatively sharing a single kernel thread for operations that are mostly waiting), and expensive operations (can) start a new kernel thread for their duration.
17:16 BrowserUk I have to go for a while: bbl
17:16 * ruoso will try to reorganize the ideas
17:17 justatheory joined #perl6
17:17 * sorear appears
17:21 diakopter sorear: do you have some sample yaml output of STD's parse of itself handy?
17:21 ruoso maybe it's a good idea to have a different "map" that spawns a worker thread to process the input...
17:21 diakopter (such as the simple token sequence you committed)
17:25 ruoso @a <== map { non_expensive_op_1($_) } <== amap { expensive_op($_) }  <== map { non_expensive_op_2($_) } <== $*IN
17:25 ruoso where amap stands for "async map"
17:25 ruoso but it's not really async...
17:25 ruoso maybe pmap "parallel map"
17:26 ruoso mtmap -- "multi-thread map"
17:31 sorear diakopter: yaml? no
17:33 moritz_ hyper map
17:33 moritz_ already exists
17:33 moritz_ don't invent new stuff for the sake of inventiing :-)
17:40 BrowserUk aMap is what I've called my Perl5 version: See http://pastebin.com/6mqwGK1q http://pastebin.com/v07TPASV  http://pastebin.com/N8jWwuiN. (Going to eat now)
17:41 ruoso moritz_, hyper map? what is the syntax?
17:43 stephenlb joined #perl6
17:43 pugssvn r30730 | svatsan++ | [u4x] Generate index.html
17:44 isBEKaml moritz_:  Done. Can you look over it and see if it's okay?
17:46 isBEKaml moritz_: I have not written a lot of p5 code, this would be a good time to learn how. :)
17:50 [Coke] TimToady: (upto) ah, catchy. thanks.
17:51 [Coke] spectest results on tarball: http://nopaste.snit.ch/20605
17:52 moritz_ ruoso: hyper map $block, @list
17:52 moritz_ ruoso: hyper is a statement prefix, like sink, gather etc.
17:53 moritz_ isBEKaml: will look at after dinner
17:53 pugssvn r30731 | coke++ | ^ should be called upto' (TimToady++)
17:55 ruoso moritz_, hmmm... nice...
18:00 ShaneC joined #perl6
18:00 ShaneC left #perl6
18:01 proller joined #perl6
18:01 [Coke] Advent Testing, claim a day: 9,10,12,13,15-18,20-24
18:02 BrowserUk ruoso: re:@a <== map { non_expensive_op_1($_) } <== amap { expensive_op($_) } <== map { non_expensive_op_2($_) } <== $*IN What is the function  of the <== in that if amap starts a thread?
18:02 BrowserUk Why not just: @a <== map { non_expensive_op_1($_) } amap { expensive_op($_) } map { non_expensive_op_2($_) }  $*IN
18:03 BrowserUk With the remaining <== becoming simply =
18:03 ruoso BrowserUk, indeed... so probably the feed means openning a new thread
18:03 Jedai joined #perl6
18:04 ruoso and I think I'm back to the "implicit event-based programming"
18:05 ruoso which basically means... unless some specific operators define it, it goes in cooperative-threading for its regular operations...
18:05 BrowserUk I thought that <== (originally) meant "lazy". So ... <== $*IN doesn't construct a list, but rather supplies values on demand.
18:06 ruoso BrowserUk, it's not *just* lazy
18:06 ruoso it also means it is lazy
18:07 ruoso but, in fact, the eagerness in @a = map { .. }, $*IN happens in the list assignemtn
18:07 ruoso not in the map arguments
18:08 ruoso in that case...
18:08 ruoso @a := map { inexpensive_op($_) }, $*IN;
18:08 ruoso hmm...
18:08 BrowserUk Before you posted that lot I'd started to type : For example, I can't see the purpose of @a <== map{ ... ?
18:09 ruoso the purpose is allowing the interpreter to batch process @a while the code is still flowing...
18:09 ruoso for instance...
18:09 [Coke] moritz_: do you have a fix for the gcd thing, or do you want me to fix it?
18:09 ruoso @a = map {... # the list assignment forces mostly eager evaluation
18:10 ruoso @a := map {... # is mostly lazy, but the interpreter won't have time to process yet
18:11 ruoso @a <== map {... # is mostly lazy, and the interpreter will spawn that processing in parallel
18:11 BrowserUk Hm. (I thinking-but not yet arguing) That's backward.
18:13 ruoso I think I'm getting to cooperative-event-based unless explicitly said otherwise (with <==, or any hyper operator)
18:13 moritz_ [Coke]: have a fix locally, just waited for spectest to finish before I pushed
18:13 [Coke] moritz_: ah. it was a comment in a commit. Anyone mind if I bump parrot REVISION?
18:13 [Coke] moritz_: oh, you have it. hokay.
18:14 moritz_ .. and pushed
18:15 BrowserUk At compile-time, @=map{... you know the destination is @a. So why not have map populate @a directly, rather than having to apply smarts to @a to take values individually?
18:16 dalek rakudo: e6863e4 | moritz++ |  (2 files):
18:16 dalek rakudo: bump PARROT_REVISION, and load obscure_ops
18:16 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e6863e4bd102b1b336474ba1e7cc43616c130605
18:16 ruoso BrowserUk, my saying doesn't deny that... it's just *when* it happens
18:16 ruoso plain assignemnt makes it happen at that moment (except when infinite)
18:17 ruoso bind is replacing the variable for the map return buffer
18:18 ruoso feed explicitly says that it should be done in parallel
18:18 [Coke] moritz++
18:18 moritz_ isBEKaml: I've run the script -- it sets the CSS path to a local path
18:18 ash___ joined #perl6
18:18 moritz_ http://u4x.perl6.org/Pair.html
18:18 moritz_ <link rel="stylesheet" href="/var/www/u4x.perl6.org/style.css" type="text/css" />
18:18 BrowserUk I'll need you to explain "ruosoI think I'm getting to cooperative-event-based unless explicitly said otherwise (with <==, or any hyper operator)" a bit more. And maybe in a paste/post/or email? one line at a time interspersed with other stuff is confusing (To me anyway). I'm still thinking about one line and ten more appear.
18:20 * BrowserUk is going to go away and draw my little pictures and try to illustrate what I envisage "end-to-end".
18:20 ruoso just trying to summarize (will need to go away for a while): Inside one thread, several coroutines may run in cooperative-threading, they get suspended when they try to read a lazy-and-still-not-evaluated value, they are resumed when the data they are expecting gets ready
18:21 ruoso some operators (feed and hyper operators) explicitly tells the interpreter to spawn a worker thread to handle that code
18:22 isBEKaml moritz_: yes.. that's from pod2html, thingy.. you can just remove the variable referred to in --cssfile and try again?
18:22 BrowserUk And would those worker threads run cooperative shcedulers?
18:22 ruoso BrowserUk, possibly, yes....
18:22 isBEKaml moritz_: I assume you're pointing to the location in the document root ?
18:22 moritz_ yes
18:22 isBEKaml if so, --css=/style.css would do, I guess..
18:22 moritz_ right
18:23 ruoso BrowserUk, in fact, almost certainly, yes... because the code to be ran in parallel might have other lazy values, and, therefore, they might get suspended and resumed using the same principle
18:23 isBEKaml if that works, I can push that in. I was using it for debugging the script here and generating it to a different folder..
18:24 BrowserUk So, you end up with lots of kernel threads, each running cooperative threads. I hate to think about trying to reason about how that lot will interact.
18:24 moritz_ too late
18:24 pugssvn r30732 | moritz++ | [u4x] fix css path
18:25 isBEKaml anyway, \o/!
18:25 ruoso the interesting part is that I'm back to my original idea :)
18:25 BrowserUk Ruoso: Besides IO, what else do you see using cooroutines?
18:26 BrowserUk :)
18:26 mantovani joined #perl6
18:26 ruoso BrowserUk, lazy evaluations
18:26 moritz_ gather/take?
18:26 BrowserUk Full circle.
18:26 BrowserUk Too non-specific. Exampes please?
18:27 moritz_ rakudo: .say for gather { for 1..4 { say "taking $_"; take "$_"; } }
18:27 p6eval rakudo 9021d4: OUTPUT«taking 1␤taking 2␤taking 3␤taking 4␤1␤2␤3␤4␤»
18:27 moritz_ oh wait, for is still eager
18:28 ruoso it wasn't supposed to be
18:28 moritz_ rakudo: (gather { for 1..4 { say "taking $_"; take "$_"; } }).map({.say}).eager
18:28 p6eval rakudo 9021d4: OUTPUT«taking 1␤1␤taking 2␤2␤taking 3␤3␤taking 4␤4␤»
18:28 moritz_ it's a known limitation
18:28 moritz_ and one that we should soon be able to fix
18:28 ruoso cool
18:28 moritz_ as soon as we detect sink context
18:29 moritz_ which pmichaud++ plans to do at PAST level very soon
18:29 BrowserUk What is gather doing there that wouldn't work without it: for ( 1.. 4) { say }
18:29 ruoso BrowserUk, for 1..*
18:30 moritz_ BrowserUk: it's syntactic sugar for building lazy lists. It's not always that easy to inline as in the example I gave
18:30 mantovani joined #perl6
18:32 BrowserUk rakudo: say for gather{ 1..* }.take 10
18:32 p6eval rakudo 9021d4: OUTPUT«Confused at line 11, near "say for ga"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
18:32 BrowserUk Don't laugh!
18:32 moritz_ BrowserUk: take() must be (dynamically) inside the gather
18:32 moritz_ BrowserUk: it throws a control exception to pass its value to the outside
18:32 BrowserUk Seems like a complicated way to deliver iterators... shuflle shuffle!
18:33 ruoso rakudo: my @a := gather { for 1..* { say "taking $_"; take $_ } }; say @a[5];
18:33 p6eval rakudo 9021d4: OUTPUT«:= binding of variables not yet implemented␤current instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)␤»
18:33 ruoso rakudo: my @a = gather { for 1..* { say "taking $_"; take $_ } }; say @a[5];
18:33 moritz_ and 'for' is still eager in rakudo, so anything you do 'for' and 1..* is bound to loop
18:33 ruoso oops
18:33 p6eval rakudo 9021d4:  ( no output )
18:33 ruoso rakudo: my @a = gather { map { say "taking $_"; take $_ }, 1..* }; say @a[5];
18:33 p6eval rakudo 9021d4: OUTPUT«␤»
18:34 ruoso okay... that's a bug....
18:34 ruoso isn't it?
18:35 ruoso rakudo: my @a = gather map { say "taking $_"; take $_ }, 1..*; say @a[5];
18:35 p6eval rakudo 9021d4: OUTPUT«␤»
18:36 moritz_ aye
18:36 moritz_ laziness is still fragile in rakudo
18:36 BrowserUk rakudo: my @a = gather map { say "taking $_"; take $_ }, 1..*; say @a;
18:36 p6eval rakudo 9021d4: OUTPUT«␤»
18:36 ruoso is that a known bug?
18:36 moritz_ yes
18:36 * ruoso closes the mail window
18:37 isBEKaml [Coke]: can I take up day 10? Don't know if I will turn in something... :D
18:37 [Coke] isBEKaml: there isn't really a sign up sheet or anything. have fun. =-)
18:37 BrowserUk Seems to me that @a = gather ... is synonymous with @a <== ...
18:37 ruoso except that "@a <== " explicitly tells to go in parallel
18:38 ruoso gather is just "go lazy"
18:38 isBEKaml [Coke]: yeah, sure!
18:38 moritz_ rakudo: sub f($x) { take $x }; say gather for 1..3 { f $_ }
18:38 p6eval rakudo 9021d4: OUTPUT«123␤»
18:38 * BrowserUk seems to remember that lazy list in Hassel didn't require gathering.
18:38 ruoso neither it does in Perl 6
18:38 ruoso gather is just one way of doing it
18:39 moritz_ BrowserUk: it's just the example that's best implemented in Rakudo
18:39 BrowserUk Ok.
18:39 cognominal Haskell? don't know about Hassel
18:39 * BrowserUk said what he meant :)
18:39 cognominal that was a pun?
18:40 * BrowserUk nods. Not enamoured with Hass(k)ell :)
18:40 ash___ aren't there multiple ways of making lists lazy?
18:40 moritz_ sure
18:40 ruoso yes, there are
18:40 ruoso map itself generates one
18:40 moritz_ ranges
18:41 moritz_ series
18:41 ruoso it's actually harder to produce an eager list then a lazy one
18:41 moritz_ 1, 2, *+*, ... * # infinite, lazy list of fibonacci numbers
18:41 iblechbot joined #perl6
18:41 BrowserUk so (something like) @a = take 3, 1..*; ought to work?
18:41 moritz_ rakudo: say (1, 1, *+* ... *).batch(6)
18:41 p6eval rakudo 9021d4: OUTPUT«112358␤»
18:43 moritz_ BrowserUk: yes, but without the take
18:43 moritz_ (you only need that together with gather)
18:45 ruoso rakudo: my @a = 3, 1..*; say @a[10];
18:45 p6eval rakudo e6863e:  ( no output )
18:46 ruoso pugs: my @a = 3, 1..*; say @a[10];
18:46 p6eval pugs: OUTPUT«Stack space overflow: current size 8388608 bytes.␤Use `+RTS -Ksize' to increase it.␤»
18:46 ruoso ouch
18:46 moritz_ rakudo: say (3, 1..*)[10]
18:46 p6eval rakudo e6863e: OUTPUT«Any()␤»
18:46 moritz_ ouch.
18:47 ruoso moritz_, that is correct
18:47 ruoso moritz_, because you're not going through any flatenning operator
18:47 ruoso list assignemnt also flattens
18:47 ash___ (3, 1..*) what would that do? 3, 1, 2, 3, ...? i assume
18:48 moritz_ rakudo: say (3, 1...*)[10]
18:48 * BrowserUk did the same thing in Pure a few seconds ago--still don;t get the syntax.
18:48 p6eval rakudo e6863e:  ( no output )
18:48 moritz_ now *that* should print 10, no?
18:49 BrowserUk What does the 3, bit mean/do?
18:49 BrowserUk I meant for take 3, 1..* to take the first 3 elements of the infinite list.
18:49 ash___ rakudo: say 1...10
18:49 p6eval rakudo e6863e: OUTPUT«12345678910␤»
18:49 ash___ rakudo: say 3, 1...10
18:50 ruoso BrowserUk, ahh... that's not what take does
18:50 moritz_ BrowserUk: that would be (1...10).batch(3)
18:50 p6eval rakudo e6863e:  ( no output )
18:50 BrowserUk Or (1..*).batch(3)?
18:51 moritz_ probably, but NYI in rakudo
18:51 BrowserUk That why I didn't try it...didn't want to crunch it again.
18:52 moritz_ that's ok, p6eval is used to dying :-)
18:52 moritz_ rakudo: say (1..*).batch(3)
18:52 p6eval rakudo e6863e: OUTPUT«Method 'batch' not found for invocant of class 'Range'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
18:52 * BrowserUk is definitely going to draw pictures...bbl
18:56 * ruoso .oO ( Actually, I'm not back exactly to my original idea, I'm adding automatically marking values as shared to it )
18:56 isBEKaml [Coke]: Can I test individual test files? (I'm not familiar with testing)
18:56 * ruoso .oO( where marking as shared means it is thread-safe )
18:56 ash___ isBEKaml make t/path/to/test.t should run the test
18:57 ash___ if you want to run only a single file
18:57 isBEKaml ash___: thank you.
18:58 [Coke] ash___: does that fudge it?
18:59 [Coke] (i've been manually fudging and then running with my installed perl6.)
18:59 moritz_ [Coke]: yes
19:00 moritz_ and don't complain that nobody told you before - it's in the README :-)
19:01 [Coke] moritz_: which readme?
19:01 isBEKaml [Coke]: I believe he's referring to t/spec/README
19:01 ejs joined #perl6
19:01 moritz_ rakudo's README
19:02 [Coke] moritz_: ... that doesn't help when I'm editing them IN PUGS. :P
19:02 * [Coke] reads rakudo's readme.
19:02 moritz_ [Coke]: if you don't run them with rakudo, then this particular piece of advice doesn't apply anyway
19:05 [Coke] I am running them with my /installed/ rakudo.
19:05 [Coke] but I see your point. I was more addressing the "no one told me." =-)
19:06 moritz_ ok, point taken (installed rakudo)
19:07 silug joined #perl6
19:22 isBEKaml rakudo: my $t=any(3|5|7); say $t;
19:22 p6eval rakudo e6863e: OUTPUT«any(any(3, 5, 7))␤»
19:23 isBEKaml rakudo: my $temp = 5; say "any" if $temp = any(3|5|7);
19:23 p6eval rakudo e6863e: OUTPUT«any␤»
19:23 [Coke] moritz_: I was happy I figured out how to manually run fudge on my own. =-)
19:24 * moritz_ is happy to get an IMCC error message with a line number that's inside the file
19:25 moritz_ even though I really don't see why it would expect an '(' at the end of a line that returns     .return (self)
19:25 moritz_ s/returns/reads/
19:25 [Coke] moritz_: the only time I see imcc barf that horribly (out of file) is when there's an include involved. but I thought c' fixed most of those.
19:25 moritz_ [Coke]: three levels of includes, and the liine numbers are wrong on all levels
19:25 [Coke] moritz_: shouldn't; sounds like an line number error.
19:25 moritz_ http://trac.parrot.org/parrot/ticket/1652
19:26 isBEKaml rakudo: my $temp = 5; say "any" if $temp == any(3|5|7);
19:26 p6eval rakudo e6863e: OUTPUT«any␤»
19:53 ash___ can you use a closure or a * with a junction? like:    * % 2 & * % 3    to find a number both divisible by 2 and 3?
19:55 ash___ that might be neat if that worked...
19:55 ash___ or maybe i have the syntax wrong
19:55 jnthn rakudo: my $x = { $^n % 2 } & { $^n % 3 }; say 3 ~~ $x; say 4 ~~ $x; say 6 ~~ $x;
19:55 p6eval rakudo e6863e: OUTPUT«0␤0␤0␤»
19:56 jnthn oh, but guess maybe wanted
19:56 jnthn rakudo: my $x = { $^n !% 2 } & { $^n !% 3 }; say 3 ~~ $x; say 4 ~~ $x; say 6 ~~ $x;
19:56 p6eval rakudo e6863e: OUTPUT«0␤0␤1␤»
19:56 jnthn The you go.
19:56 bkeeler Heyas #p6!
19:56 ash___ ah, cool
19:56 ash___ neat, that works
19:56 moritz_ \o/ bkeeler
19:56 ejs joined #perl6
19:56 jnthn And yes, * % 3 would work one day too, when we has the curry magic.
19:56 jnthn o/ bkeeler
19:56 ash___ would be neat if you could use * to do that, is that possible?
19:56 jnthn Just NYI.
19:56 bkeeler moritz_: Howdy.  How goes that match object stuff of yours?
19:56 ash___ got ya, so its possible, just nyi
19:56 jnthn Aye. :-)
19:57 jnthn Then it'll look really cute.
19:57 moritz_ bkeeler: not at all :(
19:57 jnthn !% makes it even more so. :-)
19:57 bkeeler moritz_: oh?  It sounded promising
19:57 moritz_ bkeeler: I have a prototype in a branch, but it's not the Real Thing
19:57 moritz_ bkeeler: and I gave up my struggle with the vtables for now
19:57 jnthn Infinite recursion. It's a pain. :-/
19:58 bkeeler This is the mob4 branch in rakudo?
19:58 moritz_ yes
19:58 moritz_ if you look at the last commmit, you see what an evil hack I used
19:58 rgrau_ joined #perl6
19:59 bkeeler I see
19:59 bkeeler This is working around Capture not doing Associative and Positional?
19:59 sorear joined #perl6
20:00 bkeeler IIRC the plan was to make Match derive from Capture
20:00 moritz_ nope; I worked around that by deriving from Array and Hash instead
20:00 moritz_ which is another evil hack
20:00 jnthn rakudo: say Capture ~~ Positional
20:00 p6eval rakudo e6863e: OUTPUT«0␤»
20:00 jnthn :-/
20:00 bkeeler It doesn't sound like that much work to make Capture do the appropriate roles
20:01 moritz_ rakudo: class A is Array { }; my $x = A.new; $x[0] = 'foo'; say $x[0]
20:01 p6eval rakudo e6863e: OUTPUT«Null PMC access in invoke()␤current instr.: 'perl6;Proxy;!STORE' pc 15276 (src/builtins/Routine.pir:117)␤»
20:01 bkeeler Is it more complicated than it would seem?
20:01 moritz_ and that's another problem
20:01 moritz_ bkeeler: no idea... you can give it a shot
20:02 bkeeler I might just do that
20:06 moritz_ jnthn: how can I set up a class in PIR that does role Associative?
20:08 uniejo left #perl6
20:09 jnthn moritz_: You don't
20:09 jaldhar joined #perl6
20:09 jnthn moritz_: In the setting do like augment ThatClass does Associative { ... }
20:09 jnthn moritz_: Associative is defined in core these days.
20:09 \shade\ joined #perl6
20:09 * moritz_ hopes that's early enough for enums in setting
20:10 moritz_ jnthn: thanks, will try
20:11 jnthn "halp my circularity saw sliced straight through my workbench!"
20:11 moritz_ :-)
20:12 moritz_ wow, I got further this time
20:12 moritz_ Method 'succ' not found for invocant of class 'Integer'
20:12 moritz_ current instr.: '!create_anon_enum' pc 985 (src/glue/enum.pir:45)
20:13 ash___ how do you do binary logical ands and ors? like 0101 AND 0111  == 0100
20:13 jnthn ?& iirc
20:13 moritz_ rakudo: say 0b101 +& 0b111
20:13 p6eval rakudo e6863e: OUTPUT«5␤»
20:13 jnthn ah, yes
20:13 jnthn rakudo: say 0b101 ?& 0b111
20:13 p6eval rakudo e6863e: OUTPUT«1␤»
20:13 moritz_ ?& is logical (returns True or False)
20:13 ash___ ah, so the numeric and? got ya
20:14 jnthn Yeah
20:14 jnthn rakudo: say 0b101 ~& 0b111
20:14 p6eval rakudo e6863e: OUTPUT«5␤»
20:14 ash___ so + & is numeric and, whats ~& do?
20:14 jnthn And stringy
20:14 moritz_ ash___: coerce to string first
20:14 ash___ rakudo: say 'aaa' ~& 'bcb';
20:14 p6eval rakudo e6863e: OUTPUT«`a`␤»
20:14 jnthn moritz_: Though is ?& coerce to string *after*?
20:15 jnthn gah
20:15 jaldhar joined #perl6
20:15 moritz_ and the circularity chain strikes again... :(
20:15 jnthn too bool
20:15 jnthn *to
20:15 jnthn moritz_: Aww. Where this time?
20:15 moritz_ enums call $thing.'succ'
20:15 moritz_ to get the value of the next item
20:15 moritz_ and guess where succ is defined...
20:15 ash___ the period table of operators calls ~& "buffer and" whatever that means... it also could be out of date
20:15 jnthn moritz_: Is that an enum in the setting?
20:16 moritz_ jnthn: yes
20:16 jnthn Ah.
20:16 jnthn That...will be a problem. :-(
20:16 moritz_ unless...
20:16 moritz_ we force all enums in the setting to have explicit values
20:16 jnthn Or
20:16 jnthn eval it inside INIT
20:16 jnthn ;-)
20:16 jnthn (not too serious suggestion)
20:25 moritz_ do we have any way to find out if we're inside the setting?
20:26 moritz_ (except searching for '!YOU_ARE_HERE')
20:26 jnthn moritz_: Well, I guess just about everything should be run within the setting...
20:26 jnthn That'd be "the way" I guess.
20:26 moritz_ except that damned .'succ'() call
20:26 jnthn But it's kinda Rakudo-specific and maybe a bit fragile
20:27 colomon just peeking back in for a moment -- any release emergencies I've missed?
20:27 jnthn That's a method call...
20:27 colomon (apparently I celebrated the release by getting a new phone (Droid) and phone number.)
20:27 jnthn Nice!
20:27 moritz_ jnthn: ok, if we're compiling the setting is what I want to know
20:27 jnthn moritz_: Ah, I see.
20:27 moritz_ colomon: no emergencies I'm aware of
20:27 colomon moritz_: thanks.  :)
20:27 bkeeler colomon: Oooh nice indeed
20:28 colomon bkeeler: I want to be able to write Perl code for it.  That would be worth going back to Perl 5.  :D
20:28 moritz_ rakudo: my $x = 3; pir::succ($x); say $x
20:28 p6eval rakudo e6863e: OUTPUT«error:imcc:syntax error, unexpected PREG, expecting '(' ('$P47')␤  in file 'EVAL_1' line 72␤syntax error ... somewhere␤current instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)␤»
20:28 moritz_ rakudo: my $x = 3; $x = pir::succ__ii($x); say $x
20:28 p6eval rakudo e6863e: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I50')␤  in file 'EVAL_1' line 22837770␤syntax error ... somewhere␤current instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)␤»
20:28 jnthn moritz_: succ is a Perl 6 level thing
20:29 jnthn moritz_: inc is the PIR op
20:29 moritz_ rakudo: my $x = 3; $x = pir::inc__ii($x); say $x
20:29 jnthn Though inc is in place.
20:29 p6eval rakudo e6863e: OUTPUT«The opcode 'inc_i_i' (inc<2>) was not found. Check the type and number of the arguments␤current instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)␤»
20:29 moritz_ jnthn: does inc call .succ through vtable overrides?
20:29 jnthn rakudo: my $x = 3; $x = pir::inc__p($x); say $
20:29 p6eval rakudo e6863e: OUTPUT«Confused at line 11, near "say $"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
20:29 jnthn rakudo: my $x = 3; $x = pir::inc__p($x); say $x
20:29 p6eval rakudo e6863e: OUTPUT«rtype not set␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
20:29 bkeeler I can't wait til I get out of my current contract.  I'll probably get a Droid or whatever the latest Android phone is a year from now
20:29 pmurias joined #perl6
20:29 pmurias diakopter: hi
20:29 jnthn rakudo: my $x = 3; pir::inc__p($x); say $x
20:29 p6eval rakudo e6863e: OUTPUT«rtype not set␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
20:29 moritz_ rakudo: my $x = 3; $x = pir::inc__vp($x); say $x
20:29 jnthn rakudo: my $x = 3; pir::inc__vp($x); say $x
20:29 p6eval rakudo e6863e: OUTPUT«error:imcc:syntax error, unexpected ')' (')')␤     in file 'EVAL_1' line 22837770␤syntax error ... somewhere␤current instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)␤»
20:29 p6eval rakudo e6863e: OUTPUT«4␤»
20:31 diakopter pmurias: hi
20:31 moritz_ rakudo: class A { has $.x; method succ { $.x + 2 } }; my $x = A.new(x => 5); pir::inc__vp($x); say $x.x
20:31 p6eval rakudo e6863e: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)␤»
20:32 moritz_ \o/ it compiles much longer than before
20:32 pmurias diakopter: nice job on the recent perlesque commits
20:32 moritz_ like, it actually compiled the setting
20:33 Eevee joined #perl6
20:33 diakopter pmurias: thanks :)
20:33 pmurias diakopter: re has $.foo, has $foo actually also sets $foo as a lexical alias for $.foo
20:33 diakopter ah, oh
20:33 moritz_ for $.foo or $!foo?
20:33 jnthn for $!foo akshually, I think
20:33 moritz_ ok, good
20:34 pmurias $!foo, sorry
20:34 diakopter $.foo is public; $!foo is private ?
20:34 moritz_ $.foo is a method call
20:34 pmurias $.foo is self.foo
20:34 moritz_ $!foo is a private attribute
20:34 pmurias all attibutes are private
20:34 moritz_ jnthn: pushed branch enum-in-setting
20:34 pmurias some just have accesors
20:34 jnthn $(self.foo) # pendantic
20:34 pmurias jnthn++ # striving for correctness ;)
20:35 moritz_ jnthn: it gets as far as the iterating in '!setup_named_enum'
20:35 diakopter how does one give an attribute a public accessor
20:35 moritz_ Method 'iterator' not found for invocant of class ''
20:35 moritz_ current instr.: 'perl6;Mu;' pc 2601 (src/builtins/Mu.pir:496)
20:35 moritz_ called from Sub '!setup_named_enum' pc 1003 (src/glue/enum.pir:58)
20:35 moritz_ has $.foo; # public getter
20:35 pmurias diakopter: has $.foo creates method foo() is rw {$.foo}
20:35 pmurias s/$.foo/$!foo/
20:35 moritz_ has $.foo is rw; # public rw accessor
20:36 * pmurias --
20:36 * diakopter confuzzled still
20:36 diakopter ok
20:36 diakopter I think I get it
20:38 diakopter class Foo { has int $.b }; my $f = Foo.new(); $f.a += 3; # how is this spelled
20:38 pmurias that's correct
20:38 TimToady no
20:38 kel_ joined #perl6
20:38 pmurias i'm incorrect
20:38 TimToady has int $.b is rw;
20:38 pmurias has int $.a is rw
20:39 moritz_ jnthn: how would I port method EnumMap.iterator to PIR? :/
20:39 diakopter yeah, b, oops
20:39 * pmurias hopes he doesn't get banned for giving incorrect answers
20:39 TimToady well they both better be a or both b :)
20:39 Guest43078 joined #perl6
20:40 [Coke] moritz_: where is that defined?
20:40 diakopter class Foo { has int $.b is rw }; my $f = Foo.new(); $f.b += 3;
20:40 moritz_ [Coke]: src/core/EnumMap.pir
20:40 jnthn s/pir/pm/ ?
20:40 moritz_ erm, yes
20:40 pmurias rakudo: class Foo { has int $.b is rw }; my $f = Foo.new(); $f.b += 3;
20:40 p6eval rakudo e6863e: OUTPUT«Malformed has at line 11, near "int $.b is"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
20:41 diakopter moritz_: what did this mean:  <@moritz_> $.foo is a method call
20:41 [Coke] if you can explain gather/take to me, I can translate it. =-)
20:41 pmurias it calls the foo method
20:41 diakopter oh, you're saying the setter/getter are method calls
20:41 jnthn moritz_: Do you just want to iterate over it?
20:41 jnthn moritz_: If so
20:41 pmurias diakopter: yes
20:41 jnthn $P0 = getattribute the_enum_map, '$!storage'
20:41 PerlJam pmurias: rakudo doesn't grok "int" yet
20:41 jnthn $P1 = iter $P0
20:42 jnthn And then see some PIR iterator code somewhere else in the codebase
20:42 jnthn moritz_: Bit evil, but you know its an EnumMap, so...
20:42 moritz_ jnthn: I just want to return an iterator...
20:42 moritz_ so returning $P1 in your example
20:42 jnthn diakopter: It's a bit "fun" becuase has $.foo # declaring a method as well as an attribute
20:42 pmurias diakopter: has $.foo defines both a $!foo and a getter foo method
20:42 jnthn moritz_: Ah...where?
20:42 moritz_ in EnumMap
20:43 moritz_ wait
20:43 jnthn We don't have a .iterator() method on EnumMap?
20:43 * jnthn was sure that was implemented
20:43 moritz_ we have
20:44 [Coke] if you just want the pir iterator, you have the pir:: call right there.
20:44 moritz_ wait.. is method iterator() in Perl 6 land suppose to iterate, or to return an iterator?
20:44 moritz_ [Coke]: that's the method I want to translate to PIR
20:44 diakopter ok, so if I just say that all attributes are by default rw in perlesque, it'll all be kosher-ish
20:45 jnthn moritz_: To return one
20:45 moritz_ and gather/take is a form to construct an iterator
20:45 moritz_ ok
20:45 jnthn Right.
20:45 jnthn But we have to be careful here
20:45 moritz_ now it starts to make sense... more or less
20:45 hercynium joined #perl6
20:45 jnthn Because Parrot iterators and Perl 6 iterators work quite differently.
20:45 jnthn (Perl 6 signals the end with EMPTY sentinal)
20:46 [Coke] so you do want a more literal translate of that from p6 to pir.
20:46 [Coke] *lation
20:46 pmurias diakopter: is accessing an attribute much faster than calling a method on the CLR?
20:46 PerlJam diakopter: What, exactly, is perlesque?
20:47 * moritz_ gives up for today, and retires to bed
20:47 diakopter PerlJam: in this order: http://diakopter.blogspot.com/2010/05/jsmeta-became-csmeta.html http://diakopter.blogspot.com/2010/05/whats-implemented-in-perlesque-whats.html http://diakopter.blogspot.com/2010/05/perlesque-obtained-class-declarations.html
20:48 diakopter PerlJam: in particular, the parts after the code on the first one.
20:49 PerlJam diakopter: thanks.
20:51 diakopter PerlJam: it's just that I've written out a summary here in irc like 20 times, so now I'm pointing folks to the blog posts. :)
20:52 PerlJam diakopter: that's great.  I know you've talked about it before, but I've only paid about 1/4 attention in the past :)
20:53 supernovus joined #perl6
20:53 pmurias joined #perl6
20:55 supernovus What is the "Integer" class? Is it bleedthrough from Parrot?
20:56 moritz_ yes
20:56 jnthn Yes
20:56 supernovus interesting
20:56 supernovus rakudo: use MONKEY_TYPING; augment class Int { method hi { say "hi" } }; 1.hi
20:56 p6eval rakudo e6863e: OUTPUT«Method 'hi' not found for invocant of class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
20:56 jnthn Ah, *that* issue.
20:57 jnthn (methods in an augmented class don't get shoved over to the mapped Parrot type)
20:59 * diakopter is notably not at GoogleIO10
21:02 pmurias diakopter: see failing test
21:03 dalek csmeta: r281 | pawelmurias++ | trunk/Sprixel/t/self.t:
21:03 dalek csmeta: added failing test for self
21:03 dalek csmeta: review: http://code.google.com/p/csmeta/source/detail?r=281
21:03 * bkeeler still can never remember to put the comma after the block in map :(
21:05 diakopter pmurias: actually that's a parsing issue
21:05 diakopter for some reason a semicolon is required between the methods
21:05 diakopter and after the class
21:05 PerlJam bkeeler: use the OOPy form and no comma is required
21:06 bkeeler $foo.map { ...} ?
21:06 sahadev hello, #perl6
21:06 PerlJam bkeeler: $foo.map : { ... }
21:06 PerlJam er, s/ :/:/
21:07 sahadev can i bother you to take a look at http://gist.github.com/408099 ?
21:07 sahadev i tried to change src/core/metaops.pm in order to fix a couple of tests in t/spec/S03-metaops/hyper.t
21:07 pmurias diakopter: does that fix the error?
21:08 sahadev but I broke a couple of tests that were originally passing.
21:08 sahadev i am not sure if what i did is the right fix.
21:08 diakopter pmurias: I don't know; I assume so.
21:08 diakopter looking
21:11 diakopter pmurias: oh
21:11 diakopter it's b/c the bar method has to be declared before it's used
21:12 pmurias diakopter: still doesn't fix that
21:13 diakopter hrm
21:14 supernovus Well, hmm, now I've got another interesting bug... if I have some libraries precompiled to .pir I get a syntax error when trying to run/compile another. There is no syntax error otherwise.
21:15 mikehh_ joined #perl6
21:16 supernovus Hmm, Unable to parse blockoid, couldn't find final '}' at line 19
21:17 diakopter pmurias: for extreme debugging, set debug to true in Grammar/PatternRef.cs :) and rebuild
21:17 dalek csmeta: r282 | pawelmurias++ | trunk/Sprixel/t/self.t:
21:17 dalek csmeta: update the test to take account perlesque's limitations
21:17 dalek csmeta: review: http://code.google.com/p/csmeta/source/detail?r=282
21:19 masak joined #perl6
21:20 wknight8111 joined #perl6
21:20 masak hey #perl6. :)
21:21 masak I'm trying to grok how lexical scopes work. I've been doing thing for a few weeks now, but I thought I'd ask some pointed questions tonight, and maybe reach enlightenment.
21:21 jnthn лолетомезак!
21:21 masak :)
21:21 masak that's not a з in my name...
21:22 masak and it's more of an э than an е.
21:22 quietfanatic joined #perl6
21:22 jnthn How do you like to translit it?
21:22 jnthn мэсак?
21:22 masak da.
21:22 masak jnthn: maybe you can be my guide through the lexical scopes jungle?
21:23 jnthn Maybe... ;-)
21:23 masak I believe my questions at least partly touch them there protolexpads.
21:23 jnthn Ah yes.
21:23 jnthn Those things we so need but so don't have in Rakudo.
21:24 masak nod.
21:24 masak so, here's where I'm a bit fuzzy right now.
21:24 masak from a discussion earlier this month with TimToady, I gathered that a loop block scope is in some sense 'the same' through each iteration.
21:25 masak maybe it gets reset between iterations, but it's definitely the same something each time around.
21:25 masak on the other hand, in a fibonacci-like function, it cannot be the same, because then fibonacci really wouldn't work.
21:26 masak so my question is: when do I know when different dynamic scopes map to 'the same' static block, and when they don't?
21:26 jnthn I see it as more of a class vs object analogy.
21:26 masak ok.
21:26 jnthn That is, there's a bunch of stuff that's the same, but you get an "instance" per call frame.
21:26 jnthn Apart from in a sense it's more of a clone.
21:27 masak ok, so a new call frame gives you new lexical scopes.
21:27 jnthn I guess you could see every object instance as being "like a clone" of the proto-object though I guess.
21:27 pmurias diakopter: look at http://pugs.blogs.com/pugs/2007/10/a-graphical-tra.html
21:27 masak aye.
21:27 jnthn masak: It gives you a new instance of the storage of the things for that particular "occurence" of the scope, essentially.
21:28 masak yeah, but a loop iteration is an "occurrence" of a scope, too.
21:28 jnthn Right.
21:28 jnthn Since
21:28 jnthn my @x; loop (my $i = 0; $i < 10; $i++) { push @x, { $^n + $i } }
21:28 jnthn Needs to do the Right Thing.
21:29 masak C-style loops are never the Right Thing. :P
21:29 masak sorry, I see what you mean. :)
21:29 diakopter pmurias: ok..?
21:30 jnthn This happens because the closure inside gets cloned at the point you take the closure. It then also has pointers back down the chain to the outer call frame, so that this does not get garbage collected, like it would if we'd taken no closure.
21:30 jnthn And that's how stuff ends up referring to the right lexicals in a closure situation. Because they're pointing back to "historical" instances of the scope.
21:30 masak TimToady says the closure gets cloned at the entry of the surrounding block. but I guess that amounts to the same in this case.
21:30 BrowserUk Is rakudo CPS?
21:30 jnthn It's all in a days time travel.
21:31 jnthn BrowserUk: Parrot is CPS, and Rakudo is build atop of Parrot, so yes. :-)
21:31 jnthn masak: Well, I'm not sure how distinguishable those would be at runtime anyway.
21:31 masak jnthn: ok, so there *has* to be 10 instances of the outer scope here, just for the different values of $i to have somewhere to reside.
21:31 masak jnthn: right.
21:31 jnthn Right.
21:31 masak this helped a lot. thanks.
21:32 jnthn Phew, today I was a good guide. :-)
21:32 jnthn .oO( though as a guy, I feel I shoulda been a scout... )
21:32 masak so, in essence, both recursion and iteration needs to clone their lexical scopes.
21:32 jnthn Well, in Parrot, every time you create an invocation record, you get a fresh LexPad along with it.
21:32 masak so that closures taken inside them will have something to point into.
21:32 jnthn (Context in Parrot terminology)
21:33 masak what's the main difference between a sub and a lexpad?
21:33 jnthn has-a
21:33 masak nodnod
21:33 jnthn Well, not even that
21:33 masak but that's just a design thing.
21:33 pmurias diakopter: any ideas how to enable something like that for perlesque's grammar?
21:33 jnthn I mean
21:33 masak why can't a sub just *be* its lexpad?
21:33 BrowserUk rakudo: sub x; sub x($I) { --$i and x( $i ) }; x( 10 );
21:33 jnthn In Parrot you have a sub which is static
21:33 p6eval rakudo e6863e: OUTPUT«Symbol '$i' not predeclared in x␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
21:34 jnthn And a LexInfo which is the static bit of the lexpad.
21:34 BrowserUk rakudo: sub x; sub x(my $I) { --$i and x( $i ) }; x( 10 );
21:34 p6eval rakudo e6863e: OUTPUT«Invalid typename in parameter declaration at line 11, near " $I) { --$"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
21:34 jnthn And then when you invoke the sub, you get a Context which references both of those and has in it a LexPad
21:34 jnthn Those are the runtime parts.
21:34 masak BrowserUk: $i, not $I
21:35 jnthn A Sub (at the Perl 6 level) is quite a bit more
21:35 jnthn It has a Signature, a do (a reference to the low-levely thingy that is the code we run), etc.
21:36 masak jnthn: the LexInfo says which variables are in the lexpad, yes? I sorta discovered the need for that when doing lexpads for Yapsi :)
21:36 jnthn masak: Right.
21:36 jnthn masak: In theory, the LexInfo knows all the staticly knowable things.
21:36 masak jnthn: well, an ordinary block also has a Signature, doesn't it?
21:36 jnthn And the LexPad is just a storage area.
21:36 jnthn masak: Sure
21:36 masak jnthn: uh, I guess that's my question. what's the data model difference between a sub and a block?
21:37 jnthn a Sub isa Block at the class hierarchy level
21:37 jnthn Additionally, a Sub is mutable.
21:37 jnthn (in general, a Routine is mutable)
21:37 jnthn You can call .wrap on a Routine.
21:38 masak ah, right.
21:38 jnthn You can ne do that on a Block.
21:38 masak ne.
21:39 masak hm, do the Sub and Block things participate in exception catching?
21:39 masak or is that purely up to runtime parts of Parrot?
21:39 jnthn I guess that's mostly an implementation detail.
21:40 masak yeah. just thinking about how much to put subs and (other kinds of) blocks in different stacks.
21:40 jnthn Probably it's fair to say that a block is probably in a has-a relationship.
21:40 jnthn (has-a relationshp with exception handlers, I mean)
21:40 jnthn That's what it is in Parrot, afaik.
21:40 masak aye.
21:41 jnthn And would seem to me to be a sane model.
21:41 masak sounds reasonable.
21:41 elmex joined #perl6
21:41 masak elmex: hallo!
21:41 BrowserUk rakudo: sub x; sub x(my $i) { --$i and x( $i ) }; x( 10 );
21:41 p6eval rakudo e6863e: OUTPUT«Invalid typename in parameter declaration at line 11, near " $i) { --$"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
21:41 masak jnthn: again, thanks. I'm out of questions.
21:42 masak rakudo: sub x; sub x($i) { --$i and x( $i ) }; x( 10 )
21:42 p6eval rakudo e6863e: OUTPUT«Symbol '$ss_SS_S_S__S_S_s' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
21:42 masak whoa.
21:42 masak std: sub x; sub x() {}
21:42 p6eval std 30732: OUTPUT«[31m===[0mSORRY![31m===[0m␤Malformed block at /tmp/XzRKUWU2So line 1:␤------> [32msub x[33m⏏[31m; sub x() {}[0m␤    expecting any of:␤ new name to be defined␤   routine_def␤      trait␤Parse failed␤FAILED 00:01 113m␤»
21:42 masak rakudo: sub x($i) { --$i and x( $i ) }; x( 10 )
21:42 p6eval rakudo e6863e: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)␤»
21:43 masak oh, indeed.
21:43 masak rakudo: sub x($i is copy) { --$i and x( $i ) }; x( 10 )
21:43 p6eval rakudo e6863e:  ( no output )
21:43 masak rakudo: sub x($i is copy) { say $i; --$i and x( $i ) }; x( 10 )
21:43 p6eval rakudo e6863e: OUTPUT«10␤9␤8␤7␤6␤5␤4␤3␤2␤1␤»
21:43 jnthn masak: Glad it helped. :-)
21:43 masak BrowserUk: there you go. there were some Perl 5 assumptions in there. :)
21:44 cognominal jnthn, I managed to fill the void you left by "deserting" fpw2010 :  http://journeesperl.fr/fpw2010/user/138     Well I wrote the abstracts, now I need to write the talks.
21:44 BrowserUk masak: Bound to be I'm afraid. Thanks
21:45 jnthn Perl 6: Whatever, la classe joker
21:45 BrowserUk moritz did say it was okay to crash rakudo?
21:45 jnthn Talk title win :-)
21:45 cognominal jnthn, but you will get due credit for you signature implementation among other things
21:46 jnthn cognominal: Sorry I can't make it. One day, I'll master the art of being in two places at once. :-)
21:46 masak BrowserUk: there's no 'sub x' to predeclare subs any more. (and no need.) if you modify a parameter, you have to 'is rw' to modify the original or 'is copy' to modify a copy.
21:46 BrowserUk rakudo: sub x($i is copy) { say $i; --$i and x( $i ) }; x( 1000 )
21:46 p6eval rakudo e6863e:
21:46 p6eval ..OUTPUT«1000␤999␤998␤997␤996␤995␤994␤993␤992␤991␤990␤989␤988␤987␤986␤985␤984␤983␤982␤981␤980␤979␤978␤977␤976␤975␤974␤973␤972␤971␤970␤969␤968␤967␤966␤965␤964␤963␤962␤961␤960␤959␤958␤957␤956␤955␤954␤953␤952␤951␤950␤949␤948␤947␤946␤945␤944␤943␤942␤941␤940␤939␤938␤937␤936␤935␤934␤933␤932␤931
21:46 jnthn cognominal: Looks like some good talks you'll be giving. :-)
21:47 jnthn cognominal++
21:47 BrowserUk rakudo: sub x($i is rw ) { --$i and x( $i ) }; x( 1000 )
21:47 p6eval rakudo e6863e: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)␤»
21:47 cognominal well, your talks are my inspiration
21:47 BrowserUk rakudo: sub x($i is copy ) { --$i and x( $i ) }; x( 1000 )
21:47 jnthn :-)
21:47 p6eval rakudo e6863e: OUTPUT«maximum recursion depth exceeded␤current instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:97)␤»
21:47 cognominal sometimes the master is way younger than his pupil
21:47 masak BrowserUk: 'is rw' there is trying to modify the constant 1000.
21:48 jnthn cognominal: I have a white beard to compensate for my youth.
21:48 jnthn ;-)
21:48 cognominal :)
21:48 masak BrowserUk: since the param/argument connection has binding semantics, not assignment semantics.
21:48 BrowserUk masak: yes of course.
21:48 cognominal you need to also  get a bigger belly to be a unix wizard.
21:49 jnthn cognominal: I was doing well at that, but then I moved to Sweden and beer is more expensive.
21:51 cognominal for english people , beer is expensive everywhere comparatively. We got complaint from english people at yapc in Paris.
21:51 masak There's More Than One Way To Get A Unix Wizard Belly.
21:51 jnthn cognominal: Nah. I found cheaper places than England. :_)
21:51 cognominal ...like we could do something about it.
21:52 jnthn masak: Eating lots of köttbullar?
21:52 masak jnthn: for example.
21:54 bkeeler What does a pint go for in England these days?
21:54 masak jnthn: unlike LexInfo, a protolexpad can store values, can't it?
21:55 cognominal jonathan has attended or will attend 26 act conferences...
21:55 masak jnthn++
21:55 sahadev left #perl6
21:55 cognominal I should ask the act admin to run a sql request but I think he is a clear winner
21:56 jnthn cognominal: 26?!
21:56 jnthn :-O
21:56 jnthn bkeeler: Depends where in the UK. 2.50 GPB maybe...
21:56 jnthn masak: Yeah, well notably containers
21:57 jnthn masak: Since traits should be applied to 'em once.
21:57 cognominal and that's only for the conferences managed by act.
21:57 jnthn cognominal: Aye, though most of Europe is managed by act these days.
21:57 bkeeler Interesting
21:57 jnthn Er, most European Perl conferences. :-)
21:57 masak jnthn: containers are another thing I don't yet fully grok... :/
21:57 * [Coke] reviews and sees jnthn calling parrot "sane". WOOT.
21:58 masak [Coke]: a minor part of Parrot. but still. :P
21:58 jnthn [Coke]: Implementing an insane language on a sane VM is such a drag.
21:58 jnthn ;-)
21:58 bkeeler jnthn: So it's about doubled since I left in '92.  In the states it hasn't increased as much I think
21:58 jnthn masak: If you work them out, please let me know. :-)
21:58 cognominal World domination starts by Europe and usually fails at that stage due to the russian or the bloody english
21:58 masak :)
21:59 jnthn bkeeler: It does depend muchly on where you are. One of the big chain pubs (Weatherspoons) in my home town up north still serves some ales for 1.60 or 1.70 or so
21:59 bkeeler Not bad
22:00 jnthn Yeah, it works out better at that place to have taste^W^Wlike ale.
22:00 bkeeler I think I went to a Weatherspoons when I was last over.  Seems like the Starbucks of pubs
22:00 jnthn Yeah
22:00 jnthn Apart from with a reputation for good prices
22:00 jnthn Whereas Starbucks always struck me as expensive.
22:01 jnthn But in terms of the "big chain", yes, certainly.
22:01 bkeeler I don't think much of Starbucks myself
22:01 BrowserUk rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 1000; x( $n )
22:01 p6eval rakudo e6863e: OUTPUT«maximum recursion depth exceeded␤current instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:97)␤»
22:01 BrowserUk rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 100; x( $n )
22:01 p6eval rakudo e6863e:  ( no output )
22:01 jnthn Weatherspoons isn't *bad*, but it's hardly a substitute for a proper cosy traditional pub.
22:01 bkeeler But then I have my own Espresso machine and buy from one of the local Portland roasters ;)
22:01 BrowserUk rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 500; x( $n )
22:01 p6eval rakudo e6863e:  ( no output )
22:01 jnthn ooh, nice.
22:02 cognominal I don't think much of coffee not served in real cup.
22:03 bkeeler Yeah, paper cups don't do it for me either
22:03 Maddingu1 joined #perl6
22:03 * jnthn only tends to drink coffee at home on a morning, or when he makes morning visits to clients.
22:03 jnthn Swedish companies often seem to invest in a decent coffee machine.
22:04 cognominal or dishwater called cofee served in a bif bowl in american restaurant.
22:04 arnsholt_ joined #perl6
22:04 jnthn One of the nice things about working here. :-)
22:04 cognominal on the other hand, it is often done as a welcome gift so I appreciate the intention.
22:04 BrowserUk rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 988; x( $n )
22:04 p6eval rakudo e6863e:  ( no output )
22:04 BrowserUk rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 989; x( $n )
22:04 p6eval rakudo e6863e: OUTPUT«maximum recursion depth exceeded␤current instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:97)␤»
22:05 jnthn BrowserUk: Parrot (for debugging purposes) currently has an (artifical) recursion limit.
22:05 jnthn Hmm. Perhaps we should lift that for Rakudo *.
22:05 BrowserUk That's not a hard wired limit is it? Stack overflow? heap exhaustion?
22:05 cognominal but I will accept books on an iPad so I am not a passeist for everything
22:06 BrowserUk Jnthn: I hit enter before looking up.
22:06 masak rakudo: say (grammar { regex TOP { foo } }).parse("foo")
22:06 p6eval rakudo e6863e: OUTPUT«foo␤»
22:06 jnthn :-)
22:06 masak \o/
22:06 BrowserUk But 989 is a weird number for a preset limit?
22:06 [Coke] you can override the default setting parrot has for call depth.
22:06 * [Coke] finds the code....
22:07 gabiruh_ joined #perl6
22:07 huf_ joined #perl6
22:07 masak BrowserUk: it's conceivable that 12 levels were used up by Rakudo internals...
22:07 snarkyboojum it's actually 1000 in the parrot source from memory
22:07 Psyche^ joined #perl6
22:07 bkeeler There are probably a further 11 parrot subs above
22:07 masak snarkyboojum!
22:07 snarkyboojum masak o/
22:07 BrowserUk mask: good thought.
22:07 [Coke] http://github.com/partcl/partcl/blob/master/runtime/tcllib.pir#L326
22:08 [Coke] jnthn: I can apply that to rakudo if you like.
22:08 bkeeler Actually, ever sub you write generates two parrot subs I think, so the limit might be 2000 parrot subs?
22:09 colomon joined #perl6
22:09 BrowserUk [Coke] link says 10,000 -- or was that a proposal?
22:09 [Coke] that's what partcl does.
22:09 [Coke] (to override parrot's builtin limit.)
22:09 patrickas joined #perl6
22:10 Arroz_ joined #perl6
22:10 patrickas hello
22:10 * BrowserUk has no idea what "partcl" is...but I'll take your word for it :)
22:11 jnthn [Coke]: Yeah, a lot of people hit it. And it's easy to change again when we need to debug stuff that fails that way and want it to bottom out faster.
22:11 BrowserUk I don;t suppose there's anyway to get the memory used figure for a non-faulting run?
22:11 snarkyboojum bkeeler: #define RECURSION_LIMIT 1000 in include/parrot/sub.h
22:13 * BrowserUk .oO( Download, build, install, run; check memory)
22:15 peter_ joined #perl6
22:18 BrowserUk Is setup-parrot-2.4.0-rakudo-29.exe all I need for win32?
22:20 masak dunno. depends on what you need, I guess.
22:20 diakopter BrowserUk: I think that's just the rakudo install, it mentions parrot-2.4 in the filename to indicate its dependency; you also need parrot
22:21 masak diakopter++
22:21 jnthn Yes, what diakopter++ said.
22:22 BrowserUk Oh, okay.
22:23 BrowserUk But it says "The repository of the binaries for Windows of Parrot (Perl6 VM). The Parrot speaks your language but lives on http://www.parrot.org/" above the dwnload link?
22:23 diakopter yeah
22:23 diakopter dog and mirrors
22:25 * BrowserUk confused. No mention of "rakudo"...no hint that this isn't Parrot.
22:25 diakopter oh
22:25 diakopter well, install it :) and if it install parrot along with rakudo, great!
22:26 diakopter but if not, also download/install the parrot installer .exe
22:26 masak rakudo: my &marine = *; marine(marine, marine(marine)); say 'done'
22:26 p6eval rakudo e6863e: OUTPUT«done␤»
22:26 diakopter heh heh heh
22:27 masak diakopter++ # filling my day with examples like this
22:27 masak "it's not just weird, it's... diakopter-weird!"
22:28 * diakopter thought of a new infix logical operator  "whether"
22:28 masak spelled '?!'
22:29 masak then `if * ?! * { ... }` would read 'if Whatever whether Whatever, yadda yadda yadda' :P
22:30 diakopter std: say 1 if 2 if 3 { say 3 }
22:30 cognominal jnthn, maddingue who has root access to the act service  run a sql script to see the top attendants : http://nopaste.snit.ch/20606
22:30 p6eval std 30732: OUTPUT«ok 00:01 111m␤»
22:31 masak o.O
22:31 cognominal so I miscounted, that 27 for you
22:31 jnthn :-)
22:31 * masak runs to viv to check that
22:31 diakopter rakudo: say 1 if 2 if 3 { say 3 }
22:31 p6eval rakudo e6863e: OUTPUT«1␤3␤»
22:33 jnthn o_O
22:33 jnthn Well, at least we're consistent.
22:33 jnthn (with STD)
22:33 jnthn :-)
22:33 diakopter o!O
22:34 diakopter rakudo: say 1 if 0 if 1 { say 3 }
22:34 p6eval rakudo e6863e: OUTPUT«3␤»
22:34 Maddingu1 same thing with the names (because we don't always know who is behind a login): http://nopaste.snit.ch/20607
22:35 masak hey, int32 is a valid Perl 6 type name!
22:35 diakopter yar
22:35 jnthn Aww. jnthn ain't :(
22:37 diakopter std: class jnthn is YOYOYOYO {}
22:37 p6eval std 30732: OUTPUT«ok 00:01 110m␤»
22:39 masak so you can't write 'my jnthn $wrthngtn;' :/
22:39 diakopter rakudo: say 1 if 0 if 1 { say 3 } # masak
22:39 p6eval rakudo e6863e: OUTPUT«3␤»
22:40 masak diakopter: I got yakshaved asking viv. surely that's wrong, no?
22:41 * masak submits rakudobug
22:45 bkeeler Anyone else getting failures in t/spec/S05-mass/properties-derived.t?
22:46 justatheory joined #perl6
22:46 masak bkeeler: haven't checked, but that sounds familiar. those failures might be intermittent and of unknown origin.
22:47 BrowserUk Hm. I followed the windows link from http://rakudo.org/how-to-get-rakudo to http://sourceforge.net/projects/parrotwin32/files/. I've download & installed the big green button at the top...found nothing matching *rakudo* ; So I downloaded & installed setup-parrot-2.4.0-rakudo-29.exe into the same directory. *Still* nothing matching *rakudo* in the entire subtree. How do I get this beast?
22:47 bkeeler masak: thanks.  I'll ignore em them
22:47 masak BrowserUk: I usually run Rakudo with 'perl6', not 'rakudo'.
22:48 masak 'Rakudo' is the name of the implementation; 'perl6' is the name of the executable.
22:50 BrowserUk Yup. Perl6.exe is there after the second download.
22:51 BrowserUk But, it it crashes immediatly with missing dll libgcc_s_sjlj-1.dll :(
22:52 snarkyboojum "the big green button at the top" is a windows help file (chm)?
22:53 snarkyboojum BrowserUk: from my reading of the instructions you'll need "setup-parrot-2.4.0-rakudo-29.exe" and "setup-parrot-2.4.0.exe"
22:53 snarkyboojum BrowserUk: one is under "parrot-rakudo addon" and the other under "parrotwin32 setup"
22:54 BrowserUk Snarky...: Yep. That's the two I've pulled and installed
22:54 snarkyboojum ah sweet
22:54 masak joined #perl6
22:54 snarkyboojum you didn't mention setup-parrot-2.4.0.exe, so I was just checking
22:57 BrowserUk For me, the "big green button" contains the text "Download now! setup-parrot-2.4.0.exe (8.2 MB)" and links to 'http://sourceforge.net/projects/parrotwin32/files/parrotwin32%20setup/Parrot-2.4.0/setup-parrot-2.4.0.exe/download'. I see no .chm file?
22:58 masak std: sub circumfix:<☃ ☄> ($x) {...}; say ☃ 42 ☄; # TimToady++ -- enabling 'use Snowman::Comet;'
22:58 p6eval std 30732: OUTPUT«ok 00:01 115m␤»
22:58 BrowserUk And that missing dll doesn't appear to be a part of the MinGW setup either.
22:59 Psyche^ joined #perl6
22:59 snarkyboojum BrowserUk: weird - we see different "big green buttons" then :)
22:59 jnthn masak: Aww! Really want that in Rakudo now! :-)
23:00 masak alpha: say "foo" ~~ m☃foo☄
23:00 p6eval alpha 30e0ed: OUTPUT«foo␤»
23:01 jnthn I'm not going to re-introduce a bug. :P
23:01 BrowserUk Probably detects different systems from browser sig. If you aren't on Win, then it probably doesn't offer you the .exe download (though a .chm probably wouldn't be much use to you either:)
23:02 BrowserUk jnthn: What do you use to build Parrot/perl6?
23:03 masak joined #perl6
23:03 jnthn BrowserUk: Microsoft VC++ compiler and toolchain, plus ActiveState Perl.
23:03 BrowserUk the 2005 or 2008 SDK?
23:04 jnthn Think I have 2005 on my desktop and 2008 on my laptop.
23:06 BrowserUk Okay. I guess I'll try the sources. (But if anyone knows who controls that source forge project, they should be told that it doesn't work--or the Rakudo.org page should be clearer about what is needed.)
23:09 quietfanatic joined #perl6
23:12 diakopter ,,,,,,,,,
23:16 BrowserUk Hm Seems the missing dll is a MinGW problem--http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=539033... So, I guess the sourceforge project uses an automated build and no one actually checks that the results run. (That can't be good for the image of P6)
23:18 BrowserUk left #perl6
23:23 Maddingue joined #perl6
23:46 Limbic_Region joined #perl6
23:46 Limbic_Region salutations all
23:48 quietfanatic rakudo: @*INC = @*INC, 'x'
23:48 p6eval rakudo e6863e: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)␤»
23:48 quietfanatic That's not supposed to be readonly, is it?
23:49 sorear (on setting enums) let's just implement protolexpads and have done with it
23:50 sorear ah, I see already mentioned
23:50 rv2733 joined #perl6
23:52 quietfanatic rakudo: @*INC.push: 'x'
23:52 p6eval rakudo e6863e:  ( no output )
23:53 quietfanatic rakudo: @*INC.push: 'x'; say @*INC
23:53 p6eval rakudo e6863e: OUTPUT«./home/p6eval/.perl6/lib/home/p6eval//p2/lib/parrot/2.4.0-devel/languages/perl6/liblibx␤»
23:53 quietfanatic but that works.  I guess it's infix:<=>'s bug
23:53 sorear no, it's not
23:54 sorear .push is being buggy there
23:54 sorear @*INC is readonly
23:54 quietfanatic You mean @*INC should be readonly?
23:54 sorear no, I mean it is readonly
23:54 quietfanatic How am I to manipulate my include dirs then?
23:54 sorear the fact that you can modify it with .push is an independant bug
23:55 sorear my @*INC ::= @*INC ~ "foo" or something like that
23:55 sorear it's a contextual
23:55 sorear you shadow it, you don't change it
23:55 quietfanatic That makes sense now that you mention it, but it seems a bit unintuitive.
23:56 jnthn Note that ::= is, iirc, now readonly binding, not compile time binding.
23:56 quietfanatic yeah
23:57 quietfanatic '::= binding not yet implemented at ...'
23:57 quietfanatic := doesn't work either.
23:57 quietfanatic So, I just can't do it right now?
23:58 snarkyboojum you could use push (temporarily) :)
23:58 quietfanatic I suppose that's what I'll do.

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

Perl 6 | Reference Documentation | Rakudo