»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
felher o/ 00:00
00:02 NamelessTee left
jnthn Good beervning, #perl6 00:31
colomon o/ 00:36
00:37 wolfman2000 joined 00:48 huf left 00:57 Vespakoen left 00:58 ivan`` joined 01:07 benabik left 01:08 benabik joined 01:13 thou left 01:14 Chillance left
dalek kudo/name-cleanup: d1b53d7 | jnthn++ | src/Perl6/Grammar.pm:
Fix typo; kboga++.
01:14
01:15 huf joined
sorear o/ jnthn 01:15
why are jnthn and masak out of phase today?
jnthn sorear: I was out with folks from $client this evening
And busy doing @stuff for them during the day 01:16
I'm probably gonna sleep soon, though.
jnthn has had on-and-off headache all day :/
Five days until vacation \o/ 01:17
colomon one week until St. Patrick's Day gigs start. \o/ 01:20
01:21 plobsing_ joined
jnthn :) 01:21
sorear o/ colomon 01:22
colomon \o
01:22 plobsing left
jnthn Time for some rest...hopefully I get some hacking tuits tomorrow. 01:32
'night
01:46 icwiener left, icwiener joined
cbk1090 Is there a way to call a method from inside the same class? 01:59
02:00 mucker left
TimToady sure, you can either do it explicitly with self.foo, or as a pseudo-attribute, $.foo 02:01
cbk1090 so foo would be the method name? 02:02
TimToady yes
that's a virtual call
if you want a non-virtual call, you'll need to store its name somewhere you can call it as a subroutine 02:03
cbk1090 Ok got it! Thanks!!!
I think the first way will work. I dont need anyting fancy
TimToady the $.foo form works with args, in fact: $.foo(1,2,3)
basically, the external API hides whether something is actually implemented as an attribute or as a method 02:04
this helps with any later refactoring in that regard
cbk1090 TimToady, This is what I now got: self.addData( $topic, $remarks); It works great! I was thinking of making addData a sub but I really wanted it as a method for my data class. 02:06
02:08 evilcubed joined 02:13 icwiener left 02:14 icwiener joined 02:15 jaldhar joined
evilcubed is it out yet? 02:16
02:18 whiteknight joined
TimToady everyone is out on Friday night, so I would expect it to be out too 02:23
bynari :) 02:26
huf well then zip it back up, nobody wants to see that 02:32
02:39 whiteknight left
evilcubed is perl 6 ready? 02:44
skids perl6: (?"Ready").say 02:47
p6eval pugs b927740: OUTPUT«1␤»
..rakudo a8086d, niecza v15-4-g1f35f89: OUTPUT«True␤»
evilcubed dude i have no fracking clue what you and the bot just said 02:51
bynari He wrote some perl6 code and the perl6 bot eval'd it and returned the result 02:52
skids There are three perl6 implementations, pugs, rakudo, and niecza. Each are ready for some things, not so much for other things. 02:53
benabik perl6.org/compilers/features
evilcubed so when i write a mod_perl or run perl from the shell in the latest CentOS it's jacked into one of these compilers? 02:54
benabik mod_perl is Perl 5
03:05 leprevost joined 03:06 orafu left, orafu joined
evilcubed thank you skids, bynari, and benabik for the heads up 03:08
appreciate your time
sorear evilcubed: Perl 6 is not "the next version" of Perl. 03:09
it's a fork (yes I'm revising history here)
so all the Perl stuff you're familiar with now is, and will stay for a while, Perl 5 03:11
Perl 5 and Perl 6 are being developed in parallel 03:13
run perl -V and it might say something like "version 12"
evilcubed thank you for explaining sorear 03:14
sorear perl 5 has a lot more manpower behind it, but is suffering from the legacy of a 25-year-old codebase that's shown to strongly resist extending 03:15
the idea of perl 6 is to fix the architectural issues first
perl 6 is slower and less useful than perl 5 now, but if we calculated right it should be better within the decade
it's *usable* now.
03:15 PacoAir left
sorear and arguably *more fun* to use now. 03:15
evilcubed can i chain perl 6 into mod_rewrite and mod_perl? 03:16
sorear but it IS slower, has fewer working libraries, etc
bynari mod_rewrite has nothing to do with perl, evilcubed
evilcubed anyone done it with production boxes?
sorear define "production"
evilcubed makes money
bynari And mod_perl is a nasty old module. Join us in the brave new world of the web where we have coolness like nginx with plack and starman
evilcubed can crash and burn, but makes money
bynari: ah 03:17
sorear several people here have used perl 6 for non-website business purposes
evilcubed nginx, plack, and starman?
sorear websites ... need to be fast
not much fun to use a wiki if all the page loads take a minute
evilcubed it's alright if it's a tad slow
bynari Well. nginx is a very fast, lean web server. Starman is a backend server used to run Perl web services using frameworks like mojolicious, dancer etc 03:18
Look into Dancer, plack and starman
evilcubed okay
sorear evilcubed: the usual way cool people do web apps today is to have a perl-specific server that apache connects to
bynari They're for perl 5 btw
evilcubed kinda like fast-cgi then
sorear the perl-specific server tends to either speak http (using mod_proxy) or fastcgi
bynari I don't think perl 6 is really ready for web stuff just now, or at least there's not any frameworks etc. But you can certainly do a lot of fun things with perl 6 just now 03:19
sorear bynari: there does exist at least one working perl 6 web framework, tadzik's Bailador
03:19 PacoAir joined
bynari evilcubed: Like fast-cgi, yeah. Instead of fast cgi you'd have starman, or corola, or twiggy, or any of the other servers 03:19
bynari nods at sorear
You can join #dancer on irc.perl.org to ask more specific questions about that related stuff too 03:21
I'm going a bit off-topic for #perl6
araujo well, perl 6 is _ready_ ... depends on the project or web stuff you want to do
evilcubed thank you for the heads up
i appreciate it
bynari No one's doing production stuff with Perl 6 just now, but it's "ready" for fun projects 03:22
And there seems to be some people using it for some serious'ish projects now too
But the more people that start using it for fun stuff, the quicker it'll be production ready 03:23
evilcubed i am a bench warmer
bynari :-)
evilcubed i will wait
sorear I take issue with the equation of "production" with "runs a web server" 03:25
FORTRAN is virtually never used for Web sites, but it's a living language that is very frequently used for meaningful tasks
bynari reads "living language" and pictures Frankenstein's monster 03:26
Eek. I saw a rather disturbing image of a large creature with a head that's an old computer from the 70's 03:27
sorear Perl is more the Frankenstein's monster here.
bynari And it reads FORTRAN on the screen
sorear c.f. wall.org/...pm...
Perl 6 is already a pretty nice language for one-off scripting 03:28
colomon For what it's worth, I've got two short perl 6 scripts that I've been using for $work since 2009. As well as a nice p6 tool for working with the ABC music format, another tool for reminding me when to practice music, and the GTK mandelbrot set program. The only one where the p6 implementations feel limiting is the mandelbrot set one.
sorear Perl 6's type system is designed to allow "C"-style code in Perl 6 to run fast, but these dreams have not yet been fully realized 03:29
colomon perl 6 is already quite capable as a "glue" language for scripts. 03:30
sorear also, current Perl 6 parsers are _slow_
Perl 5 can slurp 100,000 lines of code in 2 seconds on a 2GHz P4 from 2003
evilcubed Pentium 4 is pretty fast when it isn't being smothered by Flash. 03:31
sorear perl 6 ... well I was celebrating last month when I got the 4000 line standard library to parse in under a minute
evilcubed there's a lot of definition of production, please don't take "spitting out web pages" as the only definition 03:32
i didn't mean to imply that
and actually probably didn't imply that
sorear (I maintain one of the compilers so I can get away with being pessimistic, nobody thinks I'm just going to walk off :p)
ah OK.
a lot of people use "production" and rarely explain well what they mean by that.
maybe I'd understand better if I weren't 21 and a work-virgin 03:33
03:34 PacoAir left
evilcubed i noticed that last year .NET took a hit in a way, Metro was becoming very C++ friendly, warm to that type of developers. 03:34
All the .NET foundation classes, not really a part of Metro. 03:35
dalek gs.hs/wip/ident: f54ade7 | au++ | Pugs/src/Pugs/ (2 files):
* Properly implement apostrophe/dash identifier name rule as per S02.
sorear yeah, I haven't really been following that closely - I'm strictly a Mono guy
I probably oughta 03:36
evilcubed Mono won't be following Metro very closely, there's no desire to create a Metro run-time clone for Linux.
sorear oh hey, au++ is coding again 03:37
hi au.
evilcubed And when M$FT doesn't offer to keep Metro and WinRT open, that basically means they aren't going to ECMA it, not gonna standardize it, will patent encumber it up the ass
so you can feel free to ignore Metro, if you are strictly Mono 03:38
au hi sorear.
sorear I wish there were a better application platform I could use... I don't want to write my own GC and native code generator 03:39
03:40 PacoAir joined
evilcubed Use whatever you want lah 03:40
sorear the need to work around delegates makes JVMs a lot less useful for me
evilcubed Just recognize that your working knowledge has a shelf life, so better bill as much as you possibly can while you can. 03:41
Eventually the ecosystem is pulled out from under your feet.
sorear bill?
dalek gs.hs: 4a341a7 | au++ | Pugs/src/Pugs/Lexer.hs:
* implements the proper ident semantic but runs into the many/many parsec error; improvements welcome before mergine
03:44
gs.hs: f54ade7 | au++ | Pugs/src/Pugs/ (2 files):
* Properly implement apostrophe/dash identifier name rule as per S02.
gs.hs: 2143b48 | au++ | Pugs/src/Pugs/Lexer.hs:
* Parse "$x--" correctly.
benabik karma x
aloha x has karma of 106.
sorear au: What is the many many parsec error? 03:45
au (x*)* 03:46
03:46 PacoAir left
au parsec guards against that form 03:46
TimToady early STD had that guard in there, but it dropped out of the cart somewhere alongside the road...
sorear STD has a "repetition of zero-width atoms" check in CursorBase.pmc, _STAR and friends 03:47
that I don't understand
TimToady well, the check is easy to understand; it's the propagation of "nullable" that is difficult 03:48
it also became less important after the LTMer finds the LT 03:49
au yeah. the way parsec checks it is to just make sure cursor position moved between each iteration of (...)*
*nod*
TimToady a la P5
but the harder you try to nail down the notion of "made progress", the harder it is to define, unless you have a language with monads :) 03:50
benabik monads++
TimToady anyway, the LTM took pressure off that to some extent, just as having an OPP in the middle layer took pressure off of having to detect left recursion 03:51
au "best of possible RealWorld#s"
benabik OPP?
au aye aye.
↪ lunch, bbl &
03:53 evilcubed left
sorear benabik: Operator precedence parser 03:53
aka 'method EXPR' 03:54
benabik Ah. That thing.
sorear PEGs have trouble with operator precedence, LR grammars don't
PEGs have the nice property of always knowing what synactic form they are trying to parse 03:55
TimToady Mahou Shoujo Madoka Magica &
04:37 colomon left 05:01 icwiener left
sorear Who is Jan Ingvoldstat? 05:15
planetsix.perl.org seems to be have an issue with em 05:16
05:33 colomon joined 05:36 kaare_ joined 06:07 kaare_ left
moritz that's frettled iirc 06:12
good morning btw :-)
sorear good morning moritz. 06:25
06:29 thou joined 06:38 tokuhirom joined 07:06 SHODAN left 07:07 SHODAN joined 07:39 thou left
[Coke] yawns. 07:52
au++ # yay-subs-with-dashes. 07:54
phenny: tell colomon about feather.perl6.nl/~coke/sin.diff 08:05
phenny [Coke]: I'll pass that on when colomon is around.
08:16 sisar joined 08:23 Jerkwad left
sorear o/ sisar 08:24
tadzik good morning #perl6 08:29
sorear good morning tadzik
08:38 havenn joined 08:47 havenn left 08:54 rsimoes left 08:57 alvis left
frettled sorear: good morning, what's the issue? 09:02
moritz: (yup, and good morning)
sorear frettled: look at the top of planetsix.perl.org 09:03
see it? 09:04
09:12 alvis joined 09:15 mucker joined
frettled oh. 09:28
Oh dear.
Trusty Yahoo! Pipes :(
sisar sorear: hi :)
frettled sorear: I can see no way to fix that quickly, except by removing my feed from planetsix 09:29
(the pipe appears to work when I follow the link, though)
sisar tadzik: i'm getting Segmentation fault (core dumped) on running bootstrap.sh in panda
sorear -> sleep 09:31
sisar 'night !
tadzik sisar: eek. Reproducable? 09:39
sisar yep 09:40
tadzik which Rakudo are you on?
sisar 'git pull' says 'already up-to-date'
tadzik okay, I'll take a look at it
sisar whoa ! 'perl6' also gives a segmentation fault ! 09:41
moritz sisar: did you do 'make install'? 09:42
09:42 tokuhirom left, tokuhirom joined
sisar i don't remember. let me do 'make install' & recheck... 09:42
moritz: ah that fixed it 09:44
how could've i forgotten that !
moritz people often forget it. We need better sanity checks for that. 09:45
sisar how to exit from the 'panda>' prompt ?
tadzik ^D 09:46
sisar 'exit' & 'quit' don't work
tadzik as in EOF
sisar tadzik: ah, ok.
09:46 mj41 joined
sisar on strangelyconsistent.org/blog/june-2...-and-grep, what does this line mean 'Leaving out the & would...' ? 09:49
moritz writing square calls the function 09:54
writing &square gives you the function object
sisar moritz: ah, so work for passing arguments to square one-by-one is done by map 10:00
lower down the article, this line 'my @primes = grep { is_prime($_) }, 2..100; ' what are the braces around is_prime for ? 10:03
(is_prime($_) just returns True or False) 10:04
10:07 fglock joined
fglock reads perlmroapi 10:12
10:18 MayDaniel joined 10:19 NamelessTee joined 10:20 lateau joined 10:31 lichtkind joined
lichtkind cheers 10:33
tadzik hello
10:34 sisar left 10:37 pmurias joined
pmurias fglock: hi 10:37
fglock pmurias: hi! 10:38
I'm implementing @ISA
pmurias will you go through it every time or update the methods when it changes? 10:39
fglock yes, probably - there is an API for adding subs to a package, I'll plug it in there 10:41
I mean, update when it changes
but just get it to work, first
pmurias fglock: it turns feeding nam to niecza nowdays isn't as easy as it used to be 10:42
lichtkind tadzik: was great to see you again 10:43
tadzik yeah, same here. Next time I'm coming with some Deutch-fu so I can understand what you guys are talking about :) 10:44
fglock pmurias: alternately, compiling 5-to-6 should work fine
not sure about speed
but a low-level backend would be nice as a proof of concept 10:45
that is, for fun
pmurias targeting low-level seems the right approach for targeting niecza, as it avoids the slow parsing, and jumping throught hoops to emulate minor differences 10:50
fglock hmm - UNIVERSAL is the last class to be looked up, right? after all @ISA
pmurias yes
fglock k
10:51 buubot_backup left
fglock fixing 10:51
10:55 lateau left
pmurias buying breakfeast& 10:55
10:57 lateau joined 11:05 MayDaniel left
masak g'day, #perl6 11:05
lichtkind moin
tadzik hey masak 11:06
masak hey all you wonderfuls.
heh -- any guesses as to when jnthn will show up today? :P 11:08
tadzik I thought you're the one to know :) 11:09
masak we're neighbours on the town level, I don't live with him ;) 11:10
tadzik right :)
masak well, apart from a few days when I was moving house in November... :)
fglock good morning masak
masak good fglock, afternoon. 11:11
11:11 buubot_backup joined
masak <sorear> define "production" 11:14
<evilcubed> makes money 11:15
that one's new.
are you sure you're not thinking of "commercial"?
tadzik if we all had the same definition of "production", life would be easier 11:16
(at least for us answering questions) 11:17
huf where's the fun in that? 11:18
masak I briefly considered writing a "when is Perl 6 production ready" from the viewpoint of an irate outgrouper who refuses to accept more than 1 bit of information. 11:23
huf is it webscale?
masak s:2nd/\"/" blog post/
tadzik I don't think that'd help
moritz masak: not worth the effort
huf you have to remember, *that* is the important bit of info :)
tadzik ridiculing and generalizing won't make people stop asking questions 11:24
what they want to know may be "should I suggest my boss using Perl 6 for a new project"
or such
moritz masak: as long as we can't simply answer "yes", our answer won't satisfy most people
tadzik +1
11:25 MayDaniel joined 11:31 birdwindupbird joined
au "ask not if perl 6 is ready for your production environment, ask if your production environment is ready for perl 6" 11:33
11:33 sporous left, sporous joined
au (the reasoning being that folks have relatively more control over their production environment than over perl 6 implementations) 11:34
11:36 bacek left
felher How do i iterate over '1, 2 X 3, 4' with a for loop and get '(1,3)', '(1,4)' assigned to $x, and not first 1, then 3, then 1, then 4 ...? 11:38
jnthn nom: for (1, 2 X 3, 4).tree -> $x { say $x } 11:41
p6eval rakudo a8086d: OUTPUT«1 3␤1 4␤2 3␤2 4␤»
felher really has to look up 'tree' in the specs. 11:42
jnthn: awesome, thnx :)
felher -> lunch 11:44
11:45 sisar joined 11:47 whiteknight joined
tadzik oh, hello jnthn 11:56
fglock yay! - @ISA works - perlcabal.org/~fglock/perlito5.html near 'package Printer;'
tadzik fglock: cool 11:58
jnthn hi tadzik :) 12:01
tadzik have a moment to talk about roles? 12:02
jnthn Sure
tadzik Within a role the has declarator always indicates the declaration from the viewpoint of the class. Therefore a private attribute declared using has is private to the class, not to the role
so says S14, and it's the only thing that rakudo does not implement right now
and the only spectest it's not running
jnthn Yeah. Hm. :)
It basically requires suppressing "undeclared attribute" checks until class composition time. 12:03
tadzik you mentioned something about that file may have been outdated, I hope this feature is not going to go away
aye
jnthn Well, we have a choice
tadzik so that's after CHECK time, si?
jnthn Well, it's kinda orthogonal to those. It's when .^compose gets called 12:04
For declarations that is BEGIN time
At the momnent, whenever we see a $!a, we go and ask the metaclass, "oh, do you know $!a?"
And if it says no, we complain
That's why attributes from roles are na issue
tadzik right
jnthn *an
Because they aren't added until composition time 12:05
Anyway, the choice we get is (1) make this work, or (2) decide that the attributes are private to roles like today, and find a way to prevent them conflicting.
The way things are today is kinda the worst of both worlds really.
tadzik I'm wholeheartedly for (1), and so is the spec, for that matter :) 12:06
jnthn *nod*
tadzik I'm no expert in OOP and roles, but that's kinda the way I'd expect it to work
jnthn OK, then let's fix it that way :)
tadzik is there something I can do?
jnthn tadzik: Well, you've probably the skills to write the patch if I tell you where to look and you're interested in doing so :) 12:07
tadzik sure thing 12:08
jnthn In rule package_def, declare a contextual where you'll store the names to check. A hash may be cheapest as then you can be sure you only check each name once.
12:08 lichtkind left
jnthn oh, er :/ 12:09
I've just realized why this is trickier than I first realized.
Code-gen depends on knowing if the attribute is natively typed or not.
12:10 JimmyZ_ joined
jnthn And we'd not know that for attributes being composed from roles. 12:10
tadzik uh
jnthn When I say code-gen, I mean building the PAST node for looking up the attribute. 12:11
12:11 lichtkind joined
jnthn Granted we can keep a list of such things and tweak them later. 12:13
jnthn will ponder it a bit 12:14
Anyway, not so simple after all..
tadzik tormenting implementors, right? :) 12:15
jnthn Aye.
12:17 lasse__ joined 12:24 mj41 left
felher Oh, i like .tree :) 12:27
12:40 MayDaniel left
felher From 02-bits.pod: "The anonymous enum function takes a list of keys or pairs, and adds values to any keys that are not already part of a key.". Shouldn't that be more like: "The anonymous enum function takes a list of keys or pairs, and adds values to any keys that are not already part of a >>pair<<."? 12:44
jnthn That's seem more reasonable. 12:45
felher fixes 12:46
jnthn tadzik: Having a fiddle with the attributes thing
tadzik okay 12:47
dalek ecs: d43113a | (Felix Herrmann)++ | S02-bits.pod:
[S02] fix description of the anonymous enum function
12:48
12:55 tokuhirom left
masak tadzik: I know I've had opinions on private attributes in roles. but it's too long ago, and I'm not focused enough to remember what I thought. and it might not be relevant anymore. 12:59
but I remember liking the idea of private attributes belonging to the *role* rather than the class. then same-named attributes will never conflict.
jnthn masak: I'm leaning a bit to that too, but it's not what the spec, or tests, or tadzik's use case expect. 13:00
masak but I feat that's not going to fly, because... there's only one "attribute storage", and that's the instance. unless we do name munging, things are gonna conflict.
fear*
jnthn masak: Oh, the name issue isn't an issue really
Use the role's type object as the key we store the attribute under.
masak oh!
jnthn We'd likely hae some fallout. 13:01
But it's very doable.
masak then... for the purposes of this discussion, I'm in the camp of doin' it like that.
it's very clean.
people from the future will thank us.
it makes little sense to have attributes from dozens of roles trample on each others' namespaces.
I'll happily change the spec... I assume it's S14? 13:02
jnthn masak: I think it may be worth getting TimToady's input first. 13:03
masak anyway, today my plan is to (a) blog about the macros D1 merge, and (b) rant on p6l about PRE/POST.
jnthn masak: Also, this doesn't help tadzik's use case.
masak jnthn: oki.
what's tadzik's use case?
jnthn tadzik: ping :)
iirc though it's about factoring certain things out in to roles
In the collection types
tadzik masak: Set refactoring
masak nom: say 'tadzik: ', 'ping' xx 50
p6eval rakudo a8086d: OUTPUT«tadzik: ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping ping␤»
tadzik :) 13:04
masak tadzik: could you be a bit specific about the use case? I'm curious.
jnthn What are you putting into the role?
And is there any sense in which exposing the shared stuff by using a private method would work? 13:05
tadzik masak: I thought %!elems and almost everything that operates on them cuold be in Settish role, and then classes like KeySet, KeyHash etc only need to implement sub register-arg
as a method, of course
it should be possible to expos %!elems througha private method, yes 13:06
jnthn Why does %!elems need to be visible in the class?
OK
tadzik I've probably tried that
jnthn Because we optimize private method calls somewhat also.
So it may well work out just fine
tadzik jnthn: it's when the class needs to overload something else than register-arg
like Str, gist, perl
jnthn OK, but I guess a private method could work?
tadzik or at_key for that matter
could, yes. I'll retry and report
jnthn method !elems() is rw { %!elems }
er, maybe don't call it elems :) 13:07
tadzik yeah ;)
jnthn It won't conflict with .elems but it will confuse the heck out of anyone
I suspect this discussion is going to end with a spec change rather than attributes from roles ending up like the spec says today, though.
tadzik right
jnthn So it's probably best not to depend on something that may be about to change.
13:10 Chillance joined
masak there's a sense in which private attributes in the role shouldn't disencapsulate out into the composed class. 13:11
this discussion is really about whether that concern weighs more heavily than the convenience of accessing private role attributes in the class. 13:12
my intuition tells me that the purity is more important than the convenience. which is why it's interesting to hear about and think about tadzik's use case. 13:13
jnthn Having just poked at the disencapsulation approach, it certainly introduces implementation baggage.
13:13 whiteknight left
jnthn Well 13:13
It breaks certain rules we like to follow
Like, predeclaration in a given scope
masak "private attributes in the role shouldn't leak outside of the role block" would be strangely consistent with "private attributes in the class shouldn't leak outside of the class block". 13:14
I guess that's the case I'm making.
jnthn Right
Which makes sense in many ways. 13:15
tadzik masak: 'twas just confusing for me that private methods work while attriutes do not
jnthn I mean, if you find two roles on the internet, and you want to compose both of them into your class, then it limits your reuse if you have to luck out on them having non-overlapping attribute names. 13:16
tadzik if you really don't want anything to conflict and so, maybe it'd be better to use delegation
why wouldn't that be a case with private meths?
jnthn Because you can presumably write a method in your class to resolve the conflict in the way you prefer. 13:17
tadzik okay, right
tadzik tries the new approach 13:20
13:26 GlitchMr joined
felher From an encapsulation point of view: Are there/shouldn't there be role-private methods, which are private to the role, not to the class? So that a role can have methods that violate some invariant of the role when used on their own? 13:31
tadzik there are 13:32
felher tadzik: great :)
felher goes reading the specs on roles again :)
tadzik jnthn: it'd seem like access to role private methods from a consuming class does not work in the setting :/
jnthn tadzik: er 13:33
Is it really the setting?
lasse__ A year ago or so i was told that perl6 could not connect to SAP via perl5 module sapnwrfc. Is that still true? I'm greatful if anyone who knows can give an answer.
jnthn nom: role R { method !foo() { say 42 } }; class C does R { method bar() { self!R::foo() } }; C.bar 13:34
p6eval rakudo a8086d: OUTPUT«===SORRY!===␤Method 'is_trusted' not found for invocant of class 'Perl6::Metamodel::ParametricRoleGroupHOW'␤»
tadzik jnthn: gist.github.com/2011428 fails with Undefined private method 'storage' called in numerous places
jnthn nom: role R { method !foo() { say 42 } }; class C does R { method bar() { self!foo() } }; C.bar
p6eval rakudo a8086d: OUTPUT«42␤»
13:35 lutok joined
pmurias lasse__: you could try using niecza+it's perl5 interop 13:36
JimmyZ_ r: class C { trusts GLOBAL; }
p6eval rakudo a8086d: ( no output )
pmurias lasse__: what os do you use?
lasse__ Preferably Linux but I can use Windows if I have to
pmurias Linux is preferable for that 13:37
lasse__: you are using rakudo right now? 13:40
13:40 rsimoes1 left, moritz left, jrockway left, cj left, moritz joined 13:41 jrockway joined, cj joined 13:43 MayDaniel joined
lasse__ Yes If have installed it and read a bit, but I need to do some new SAP comms stuff (which i have done PHP so far) but I like to learn perl6 so if it is possible i like to give rakudo a spin 13:43
JimmyZ_ nom: role R { has $!foo =42; method foo() { $!foo; } }; class C does R { method bar() { say self.foo } }; C.bar 13:46
p6eval rakudo a8086d: OUTPUT«Cannot look up attributes in a type object␤ in method foo at /tmp/d5QijfdPCI:1␤ in method bar at /tmp/d5QijfdPCI:1␤ in block <anon> at /tmp/d5QijfdPCI:1␤␤»
jnthn JimmyZ_: You need an instance if you're going to look up attributes 13:47
(C.new.bar)
JimmyZ_ oops...
nom: role R { has $!foo =42; }; class C does R { method bar() { say $!foo } }; C.new.bar 13:49
p6eval rakudo a8086d: OUTPUT«===SORRY!===␤Attribute $!foo not declared in class C␤at /tmp/qiNr_mxWta:1␤»
pmurias lasse__: to use sapnwrfc you will have to use niecza (which is a different perl implementation)
JimmyZ_ nom: role R { has $!foo =42; }; class C does R { method bar() { say $!foo } }; C.new.bar
p6eval rakudo a8086d: OUTPUT«===SORRY!===␤Attribute $!foo not declared in class C␤at /tmp/Q4v4bB9jcE:1␤»
JimmyZ_ nom: role R { has $!foo =42; }; class C does R { has $!foo= 42; method bar() { say $!foo } }; C.new.bar
p6eval rakudo a8086d: OUTPUT«===SORRY!===␤Attribute '$!foo' already exists in the class 'C', but a role also wishes to compose it␤»
JimmyZ_ bug?
may not 13:50
lasse__ niecza is that windows only?
pmurias no
it runs on mono
JimmyZ_ pugs: role R { has $!foo =42; }; class C does R { has $!foo= 42; method bar() { say $!foo } }; C.new.bar 13:51
p6eval pugs b927740: OUTPUT«42␤»
lasse__ pmurias: Thanks a lot I will try install niecza and give it a spin 13:52
pmurias beware that p5 interop in niecza is very experimental, so you'll have to hack around things 13:53
masak lasse__: welcome. it's nice to hear someone trying out SAP with Perl 6.
lasse__: I agree with pmurias -- you should try out Niecza on Linux. 13:54
lasse__ pmurias: I like problems so thats cool
felher nom: role R { my method !foo() { say 42 } }; class C does R { method bar() { self!foo() } }; C.bar 13:55
p6eval rakudo a8086d: OUTPUT«42␤»
felher Hm.. i expected this to die with "method !foo not found..." or something. I thought "my method !foo" isn't shared so C can not call it. Am i wrong about that? 13:56
jnthn The "my" here means nothing more than "install the method in the lexpad also"
tadzik !foo is private to a class, not to a role 13:57
masak nom: role R1 { method !foo { say "R1" } }; role R2 { method !foo { say "R2" } }; class C does R1 does R2 {}; say "alive?!"
p6eval rakudo a8086d: OUTPUT«alive?!␤»
masak nom: role R1 { method !foo { say "R1" } }; role R2 { method !foo { say "R2" } }; class C does R1 does R2 { method bar { self!foo() } }; say C.new.bar
p6eval rakudo a8086d: OUTPUT«Private method 'foo' not found on type C␤ in method dispatch:<!> at src/gen/CORE.setting:777␤ in method bar at /tmp/diNxcNUBGu:1␤ in block <anon> at /tmp/diNxcNUBGu:1␤␤»
13:58 JimmyZ_ left
masak huh! 13:58
nom: role R1 { method !foo { say "R1" } }; class C does R1 { method bar { self!foo() } }; say C.new.bar
p6eval rakudo a8086d: OUTPUT«R1␤True␤»
felher So i miunderstood: S14-roles-and-parametric-types.pod:126?
jnthn masak: Yeah, I've found the issue
masak: RoleToRoleApplier doesn't copy private methods
masak so... if private methods in a role collide... none of them gets installed?
oh. 13:59
then why did felher's oneliner work?
jnthn masak: Because RoleToRoleApplier never gets used there 14:00
masak: Because only one role is being applied
masak aaaaaaah.
jnthn So we don't need to compute the summation. 14:01
masak fwiw, I'm open to ParametricRoleHOW being renamed to RoleHOW. it would make one of jnthn++'s Metaprogramming slides look nicer ;)
and it is, in some sense, the "default" role HOW. 14:02
this message delivered from the guy who brought you... World. ;)
dalek kudo/priv-role-attrs: fa7ffb2 | jnthn++ | src/Perl6/Actions.pm:
Start declaring role attributes under the package they're declared in rather than the class they end up composed in to.
kudo/priv-role-attrs: 6408afa | jnthn++ | src/Perl6/Metamodel/RoleTo (2 files):
Start to liberalize role composers so that they allow attributes with the same name but from different roles.
kudo/priv-role-attrs: ab5f444 | jnthn++ | src/ (3 files):
Allow multiple attributes of the same name to be added provided they are attached to different packages (e.g. different roles).
kudo/priv-role-attrs: d1e0b2b | jnthn++ | src/Perl6/Metamodel/BUILDPLAN.pm:
First crack at updating BUILDPLAN handling for new approach to role attributes.
jnthn That lot starts sketching out how masak++'s idea for role attributes could work out 14:03
Though it doesn't actually work yet :)
masak nevertheless, \o/ 14:05
felher I like the specs opinion on roles an private attributes. If one wants a real role-private attribute, the spec says: "you may wish to declare an attribute that is hidden even from the class; a completely private role attribute (that will exist per instance of the class) may be declared like this: my $!spleen;" 14:07
I like to have more ways, even if one may be bad in most situations. 14:08
I have to admit that compared to most of you folks i am a real noob. But isn't it more perlish to allow it and say "best don't use it if you don't have too", than to remove the possibility of doing so? 14:09
masak I hear ya. 14:10
my only question is: why would you want the default to be bad, and recommend the good alternative as a social convention?
felher Ah, so you don't want to remove the old way. Its more like swapping default/non-default? 14:11
masak right.
felher Oh, then i'm totally in for that :) 14:12
masak I'm sure there'll be a way for people to explicitly flaunt role encapsulation. :)
I don't care much exactly how it'll be done.
except to the degree it helps tadzik write actual CORE code.
felher kk.
pmurias masak: you want the "private to the role" to be the default?
masak I do. 14:13
felher Ok, so i just misunderstood the discussion. Sorry for the nosie :)
masak not at all -- it was a worthwhile point to make.
felher Well, even better than :) 14:14
masak also, we're all OO noobs, at least to a first approximation. 14:15
OOP is not too hard to grok, but OOD takes a lifetime.
jnthn masak: Did you file rakudobug on that priv meth from multiple roles issue? 14:19
masak laughs again at au++'s "me" solution to moritz++'s Prisoners' Dilemma challenge
jnthn: no. doin' it now.
masak submits rakudobug 14:20
jnthn masak: OK. Testing a patch locally for it. 14:22
Hopefully this unblocks tadzik++ too :)
14:23 MayDaniel left
masak jnthn: rt.perl.org/rt3/Ticket/Display.html?id=111664 14:24
jnthn tsm 14:25
<chuckle>
moritz "tadzik seems mad"? :-) 14:27
jnthn :D 14:28
moritz nom: sub a(\$arg) { say $arg.elems }; a(a => 2, 3) 14:31
p6eval rakudo a8086d: OUTPUT«Unexpected named parameter 'a' passed␤ in sub a at /tmp/b0l742_Tw0:1␤ in block <anon> at /tmp/b0l742_Tw0:1␤␤»
moritz nom: sub a(|$arg) { say $arg.elems }; a(a => 2, 3)
p6eval rakudo a8086d: OUTPUT«1␤»
masak late to the game: "tracker sans mystique" 14:32
dalek kudo/nom: 149cb58 | jnthn++ | src/Perl6/Metamodel/RoleToRoleApplier.pm:
Fix a typo.
kudo/nom: 54e0769 | jnthn++ | src/Perl6/Metamodel/ (3 files):
Implement private method composition when the private methods come from multiple roles.
masak though maybe it should be "traqueur", given the other two words... 14:33
jnthn tadzik: Tried some 'mprovements ^^
14:34 isBEKaml joined
moritz n: my Str enum A <b c>; say b 14:36
p6eval niecza v15-4-g1f35f89: OUTPUT«b␤»
moritz n: my Str enum A <foo bar>; say b
p6eval niecza v15-4-g1f35f89: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'b' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1362 (die @ 3) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 33) ␤ at /home/p6…
moritz n: my Str enum A <foo bar>; say foo
p6eval niecza v15-4-g1f35f89: OUTPUT«foo␤»
tadzik :P 14:38
I'll see if that helped 14:39
masak anyone remember gist.github.com/1061562 ?
I just re-ran things on nom.
tadzik I think so
istr it
masak now getting 1.665s real time with the same script.
if I natively type the sub params, I get about 1.236s real time. 14:40
tadzik now where is this image I always use in those occasions...
masak that's a 50% improvement.
tadzik here: 29.media.tumblr.com/tumblr_lltzgnHi...o1_400.jpg
masak :P
boy, I hope sometime soon quoting Shakespeare comes back into fashion. 14:41
tadzik :D 14:44
jnthn Nice :)
14:45 Jerkwad joined
jnthn afk for a bit 14:46
14:50 lateau_ joined, lateau_ left
felher perl6: say @$*IN; 14:53
p6eval rakudo a8086d: OUTPUT«IO<-5400900929721989300>␤»
..niecza v15-4-g1f35f89: OUTPUT«TextReader.new(...)␤»
..pugs b927740: OUTPUT«␤»
felher Spec says: instead of 'while (<HANDLE>) {...}' you now write 'for @$handle {....}' 14:54
masak O RLY?
felher Might that be a fossil?
masak yes.
where is it?
felher S02, Files 14:55
Nearly at the bottom.
isBEKaml felher: did you perhaps mistake @$*IN for @*INC? 14:56
I only $*IN in there.
masak it's S02:4796. 14:57
tadzik hmm, roles don't seem to like having submethod BUILD
masak it might actually be correct.
tadzik and .new which the class re-uses
14:57 PacoAir joined
masak it coincides in time with the killing off of prefix:<=> in 2009. 14:57
tadzik: having a submethod BUILD in a role feels odd, given that the thing that submethods do is mostly twiddle with (private) attributes of the class. 14:58
tadzik nom: gist.github.com/2011660
p6eval rakudo a8086d: OUTPUT«Can not get non-existent attribute '$!a' on class 'MyRole'␤ in submethod BUILD at /tmp/_mMN5ilSiQ:8␤ in method BUILDALL at src/gen/CORE.setting:582␤ in method bless at src/gen/CORE.setting:567␤ in method new at /tmp/_mMN5ilSiQ:5␤ in block <anon> at /tmp/_mMN5i…
isBEKaml masak: that ack script takes 18s on my poor machine. :D 14:59
masak isBEKaml: is that the version with or without multis?
isBEKaml masak: ofcourse, after commenting out the tracking variable. And oh, niecza!
tadzik masak: well, I want to twiddle with those private attributes of a role :) (see gist)
masak tadzik: hm. 15:01
tadzik I guess it's the issue of BUILD being called for the class, which doesn't then have the %!elems anywhere
so that's the same underlying issue as before, maybe
masak tadzik: if your use case is "valid" (i.e. if we're not missing something obvious here), that indicates that roles should have their own BUILD, separate from classes. I'm not sure I believe that's feasible, or even a good idea.
but in terms of scoping, it makes a lot of sense. as long as the class can have a BUILD and the roles can too. the $!a is visible within the role, so it should be possible to refer to it. 15:02
isBEKaml tadzik: you're wrapping private methods into a role and making them available through classes via a facade? :) 15:04
tadzik isBEKaml: facade?
phenny: en pl "facade"?
phenny tadzik: "fasada" (en to pl, translate.google.com)
tadzik phenny: that doesn't make any sense :)
isBEKaml tadzik: hm, how do I say? (helper or wrapper function) 15:05
tadzik isBEKaml: they're not really "available through classes", I just don't want them to leak out for public use
I need a way to communicate between role and class that won't leak out as a public method of the eventual object
isBEKaml tadzik: exactly as I thought. :)
tadzik okay :) 15:06
isBEKaml phenny: pl en "fasada"?
phenny isBEKaml: "facade" (pl to en, translate.google.com)
isBEKaml does it make any sense? :D
funny, that's how I pronounce that word. 15:08
masak tadzik: "facade" is just an OO pattern-lingo word for "interface which presents you with a nices API than the thing it wraps". 15:09
tadzik I see 15:10
masak there are a number of related patterns in that area, with slightly overlapping meanings: "adapter", "wrapper", "facade".
isBEKaml masak: hey, I wasn't thinking of "Facade" pattern! :)
masak oh! I assumed you were.
15:10 lateau left
isBEKaml Just what came to mind. (helper, thin layer) :) 15:10
masak you even used "wrapping" in the same sentence :P 15:11
isBEKaml I also said, "helper" :D
Personally, I find that design patterns tend to obscure the most straightforward approach. You end up thinking in terms of these patterns instead of the simplest approach. 15:12
15:12 skids left
isBEKaml Sure, it helps if you know about these things but I'd prefer people choose the best approach instead of blindly applying these patterns, all because they exist. </offtopic> 15:14
15:16 xinming left
masak I disagree. OO patterns aren't meant to be followed slavishly, they're meant to provide a starting point for building a solution that both (a) encodes important lessons from experience and (b) fits the current terrain. 15:16
to satisfy (a), you follow the pattern. to satisfy (b), you adapt it judiciously for your particular problem.
isBEKaml (b) is what is missing most of the time. Judicious application (if only that were true in most of the projects I had worked on... ) 15:17
15:19 xinming joined
isBEKaml masak: I think we are mostly in agreement in that we should *not* blindly apply these patterns. If you miss the big picture, you're working with half baked ideas (dangerously). 15:19
masak yeah, the danger of patterns is that they are applied blindly. 15:21
as with all other kinds of advice, they apply within a context. sometimes the context is different, and the advice doesn't apply. 15:23
isBEKaml A good doctor once told me (he was into Natural medicine): Treat the terrain, not the symptoms. :) 15:24
masak aye.
this bliki article is a nice example of that: martinfowler.com/articles/lmax.html 15:25
note: they started out trying all the conventional concurrency solutions. they didn't work for their application.
so they had to sit down and actually address the problem. going outside of the normal patterns, and ending up with a much more event-driven solution, as it were. 15:26
TimToady
.oO(Patterns: pre-approved XY problems)
15:30
masak maybe some of them. 15:33
just like some patterns are really missing language features.
who wants to do the March release of Rakudo? it'll be an awesome release, and it's easy and fun to be a release manager. 15:35
arnsholt Patterns came up on #lisp at some point I was looking and someone said "patterns are for defective languages". I decided not to comment =) 15:36
isBEKaml March! March on for Rakudo! :) 15:37
bs goes in March, right?
masak right. 15:38
it's already merged.
and macros too.
and all the phasers.
isBEKaml \o/
Now, I just have to see if it builds on my machine. What's the memory usage like?
masak lower; still not great.
I mean, it's "great" in the literal sense... which isn't so great. 15:39
isBEKaml if it's still more than 1gig, it's hard. :| 15:40
15:40 birdwindupbird left
masak I think it's slightly more. 15:41
15:45 Psyche^ joined 15:49 Patterner left, Psyche^ is now known as Patterner
isBEKaml masak: great article. What fascinates me is, they haven't really used any new techniques. Rather, it's a different application of existing techniques to tackle known problems. 15:57
masak: They took a lot of care to make sure that their application runs smoothly, Event Sourcing and cache friendly collections using primitive types. All of them managed on a single core without concurrency. I really should explore CQRS and async event communication models. :) 15:59
hmm, s/core/thread/ 16:01
masak aye. 16:06
there's a lot of neat stuff in there.
16:07 JimmyHoff joined 16:08 JimmyHoff left
jnthn back 16:08
masak left shoulder 16:15
isBEKaml gotta love this channel. You can discuss anything and you won't be too offtopic! (ducks) 16:17
(#perl6)++
masak isBEKaml: yes, you can even discuss ducks. :P 16:18
isBEKaml right clavicle 16:19
:P
masak blog post! \o/ strangelyconsistent.org/blog/macros...-d1-merged 16:21
jnthn \o/
masak I'll take a walk before it turns dark, and then I'll write the rant to p6l. 16:22
jnthn [Cool use for a macro: meta for])gist.github.com/1809356) 16:23
fail
isBEKaml You can psee the slides here](masak.org/carl/gpw-2012-macros/talk.pdf).
markdown fail?
masak jnthn: oops, thanks, fixing.
isBEKaml: oh, another one! fail :)
fixing. jnthn++ isBEKaml++
isBEKaml masak: and spllelling
masak well, the 'p' was s'posed to be a '[' :) 16:24
jnthn Don't pee the slides!
isBEKaml masak++ 16:26
Ulti 8/win 2
erk sorry
masak Util: I always go Alt-2, it's much faster. 16:27
isBEKaml hugme: hug masak (mistab) 16:28
hugme hugs masak
16:29 MayDaniel joined
Ulti masak you would end up with line noise from me considering how often I switch between different keyboard layouts :) 16:30
masak heh. 16:31
oh, Ulti, oh Util!
Ulti haha yeah
Ulti is claiming fame
masak I apologise to both of you for millions of mistabs I will make in the future!
Ulti its fine I'm under the assumption no one is going to want my attention on here ;) 16:32
unless someone is thinking of porting all of BioPerl to perl6
masak pyrimidine: ping :) 16:33
Ulti I have an outrageous question for everyone.. what's with all the perl6 hostility from some perl people?
I dont understand it, as far as I can see perl6 is set to be a great language with several sensible implementations 16:34
masak I don't actually think there's that much hating at this point. 16:35
I talk to lots of sensible Perl 5 people and I mostly hear support.
Ulti good
masak there's still a bit of a grumbling because of the name. 16:36
people fall straight into version think when they hear "Perl 5", "Perl 6".
Ulti its more I've been googling and keep finding blogs with people moaning about lack of magical perl6 setup.exe distributions... what do you expect from something thats still fluid and under huge dev effort?
yeah I guess that is a problem
masak it's good that people are pointing out what they want from Perl 6. 16:37
Ulti but as soon as I heard about perl6 I also heard "its a new language"
masak we try our best to deliver and to make the product more useful.
it's not a new language anymore. it's 11 years and a half :)
Ulti masak sure but there is a new version thats usable every month, packaging is non trivial especially cross platform.. you can expect core devs to do everything
*cant
masak but it's taking its time to mature, partly because we think it would be a mistake to let it mature too quickly. 16:38
TimToady
.oO(almost a teenager...)
Ulti I've been looking into making a macport file
masak is that the language definition or a useful implementation age?
also where has the last decade gone! :3
masak the Perl 6 effort was announced on 2000-07-19. strangelyconsistent.org/blog/happy-...ary-perl-6 16:41
16:41 icwiener joined
masak as to "where has the last decade gone", it seems to be a common question, or common point of ridicule. 16:41
I'd just like to counter that after *half* that decade, I could already write real Perl 6 code on top of Pugs.
and that it does take some time to re-invent parsing from scratch a la STD.pm6 -- I'm not sure I'd be able to do it in under a decade, if at all. 16:42
Ulti masak: I meant more life in general ;)
I'm happy to wait rather than see all the interesting but hard to implement features drop out 16:44
16:44 abercrombie joined
isBEKaml "We need a solution that makes us need less vodka." :D 16:45
16:46 kaare_ joined 16:47 Limbic_Region joined
isBEKaml jnthn++ for that comment and masak++ too (publishing it in a talk!) 16:48
Ulti what was the problem?
isBEKaml macros 16:49
masak specifically, a problem that showed up in macros, that also showed up with roles.
Ulti if it helps I can probably post some more vodka 16:50
16:52 icwiener left, icwiener joined 16:59 Limbic_Region left 17:00 thou joined
TimToady feels lucky to have tricked so many brilliant people into working on Perl 6... :) 17:23
17:34 rsimoes joined 17:39 MayDaniel left
gfldex perl6: sub postfix:<a>() is looser(&infix:<,>) {} 17:49
p6eval niecza v15-4-g1f35f89: OUTPUT«Potential difficulties:␤ &postfix:<a> is declared but not used at /tmp/N_yrtVBwZS line 1:␤------> sub postfix:<a>⏏() is looser(&infix:<,>) {}␤␤»
..rakudo 54e076: OUTPUT«===SORRY!===␤Cannot call 'trait_mod:<is>'; none of these signatures match:␤:(Attribute:D $attr, Any :rw(:$rw)!)␤:(Attribute:D $attr, Any :readonly(:$readonly)!)␤:(Attribute:D $attr, Any :box_target(:$box_target)!)␤:(Routine:D $r, Any :rw(:$rw)!)␤:(Routine:D $r, Any…
..pugs b927740: ( no output )
gfldex std: sub postfix:<a>() is looser(&infix:<,>) {} 17:50
p6eval std 1ad3292: OUTPUT«ok 00:01 117m␤»
gfldex niecza++ :)
how does my Date $birthday = 1978,03,01a; # look to you? 17:51
masak I'd... intuitively expect a postfix to bind much more tightly than list infix. 17:53
(because there can be no whitespace before the postfix)
gfldex perl6: sub postfix:<a>([Int $y, Int $m, Int $d]) is looser(&infix:<,>) { say "$y-$m-$d" }; 1978,03,01a; 17:54
p6eval pugs b927740: OUTPUT«*** ␤ Unexpected "["␤ expecting formal parameter or ")"␤ at /tmp/eKYdPpd1UC line 1, column 17␤»
..rakudo 54e076: OUTPUT«===SORRY!===␤Cannot call 'trait_mod:<is>'; none of these signatures match:␤:(Attribute:D $attr, Any :rw(:$rw)!)␤:(Attribute:D $attr, Any :readonly(:$readonly)!)␤:(Attribute:D $attr, Any :box_target(:$box_target)!)␤:(Routine:D $r, Any :rw(:$rw)!)␤:(Routine:D $r, Any…
..niecza v15-4-g1f35f89: OUTPUT«Potential difficulties:␤ Leading 0 does not indicate octal in Perl 6; please use 0o3 if you mean that at /tmp/2vBUB4Fkk_ line 1:␤------> (&infix:<,>) { say "$y-$m-$d" }; 1978,03⏏,01a;␤ Leading 0 does not indicate octal in Perl 6; please…
17:55 mj41 joined
gfldex well, on 2nd tought it seams like neat overkill :) 17:57
my Date $leapdays = .new(2,29); # not that much longer actually 17:58
17:59 sisar left
[Coke] no change on spec test run from yesterday. 17:59
felher masak++ #blog post, macro hacking 18:00
TimToady++ #for tricking many people 18:01
masak well, most of us working to make Perl 6 more of a reality are idealists. which is why, I guess, we like to point out that we have a really down-to-earth, practical streak. 18:24
moritz r: sub enum(*@args) { say @args.perl }; enum('a', 'b')
p6eval rakudo 54e076: OUTPUT«Array.new("a", "b")␤»
moritz why doesn't that work locally? 18:25
r: sub enum(*@args) { say @args.perl }; &enum('a', 'b')
p6eval rakudo 54e076: OUTPUT«Array.new("a", "b")␤»
masak 'cus you're in a branch, like JimmyZ was the other day? :)
moritz oh
because I'm in the sink2 branch
masak++
masak hah!
moritz I just realized at the same time as you did
masak is psychic
moritz nom: my %a; my $x = -1; $x = %a<foo> = $x.succ; say $x 18:39
p6eval rakudo 54e076: OUTPUT«0␤»
moritz again something that doesn'T work locally
and now I'm on nom :/
nom: my %a; $_= 'b'; my $x = -1; $x = %a{$_} = $x.succ; say $x 18:40
p6eval rakudo 54e076: OUTPUT«0␤»
18:42 icwiener left 18:44 icwiener joined
[Coke] ah, here we go. "port install hs-cabal" is now installing an OLD version of gcc via macports. 18:44
18:47 Trashlord left
arnsholt I've gone on to not like macports very much 18:49
Better than fink, certainly, but lots of weirdness going on
tadzik 'evening 18:53
masak tadzik! \o/ 18:56
tadzik \o/
18:59 MayDaniel joined 19:03 birdwindupbird joined 19:09 whiteknight joined 19:18 icwiener_ joined 19:19 icwiener left 19:20 proller_ joined, proller joined 19:21 proller left 19:22 icwiener_ left 19:23 icwiener_ joined, sporous left, sporous joined
sorear good * #perl6 19:24
tadzik hello sorear
sorear masak: My understanding of "where has last decade gone" is that it mostly involved TimToady++ wrestling with his own bugs 19:25
19:26 tokuhirom3 left
felher o/ sorear 19:27
[Coke] sorear: like Tom Selleck in _Runaway_ ? 19:28
sorear I don't know that reference and my brain augmentation system is not working very well atm 19:29
masak++ # blogging 19:31
mucker masak++ 19:32
moritz masak++ indeed 19:33
mucker git clone rakudo
sorear hello mucker. Are you new here? 19:37
dalek kudo/nom: 08417f8 | moritz++ | / (3 files):
implement anon enums

Not sure if we want to keep this factoring, it just reuses the old infrastructure for now. Passes the anon enum tests.
kudo/nom: bd6fdeb | moritz++ | docs/ChangeLog:
add anon enums to ChangeLog
[Coke] still haven't managed to build niecza on osx yet. 19:38
(sloooow)
mucker sorear: just a another lurker :) 19:39
sorear welcome 19:41
moritz wow, either I completely missed the point of anon enums, or they are much easier than I thought they would be
19:45 localhost left 19:46 tokuhirom3 joined, localhost joined 19:49 tyatpi joined
tyatpi perl6: hel 19:50
p6eval niecza v15-4-g1f35f89: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'hel' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1362 (die @ 3) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 33) ␤ at /home/…
..pugs b927740: OUTPUT«*** No such subroutine: "&hel"␤ at /tmp/mYuOzNkPz3 line 1, column 1 - line 2, column 1␤»
..rakudo 54e076: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&hel' called (line 1)␤»
tyatpi perl6: help
p6eval niecza v15-4-g1f35f89: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'help' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1362 (die @ 3) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 33) ␤ at /home…
..rakudo 54e076: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&help' called (line 1)␤»
..pugs b927740: OUTPUT«*** No such subroutine: "&help"␤ at /tmp/e27lQULjVw line 1, column 1 - line 2, column 1␤»
moritz perl6: say 'I can only handle Perl 6 code' 19:51
p6eval pugs b927740, rakudo 54e076, niecza v15-4-g1f35f89: OUTPUT«I can only handle Perl 6 code␤»
tyatpi ha ha 19:54
sorear maybe we need sub CORE::help { say 'perlcabal.org/syn' }
tyatpi new feature to add !
19:54 raiph joined
tyatpi sorear: Maybe just a mention of that URL in the MOTD? 19:55
sorear tyatpi: we don't control the motd
moritz sorear: I think tyatpi means the topic in here 19:58
but the better URL is really perl6.org/ which we already link to
20:00 Chillance left, Chillance joined
dalek ast: 6bc3067 | coke++ | S06-multi/syntax.t:
pugs fudge
20:08
gs.hs: 3201cc1 | coke++ | t/spectest.data:
run fudged test
20:10
20:13 lasse__ left
dalek ast: a1e589c | coke++ | S06-operator-overloading/sub.t:
*eyeroll*
20:21
20:22 bacek joined
lichtkind subrule prefixes are done 20:22
moritz [Coke]++
lichtkind do they deserve index entries?
can subrule prefixes be combined? 20:23
moritz what do you mean by that? 20:26
sorear What's a subrule prefix? 20:28
lichtkind www.perlfoundation.org/perl6/index....t#subrules 20:31
its eg the . which makes <.ws> none capturing 20:32
moritz then the answer is "no" 20:33
though note that the * isn't such a prefix
20:33 colomon left
moritz because the parser doesn't expect a rule name after <* 20:34
20:34 colomon joined
moritz I also don't see which two would make sense to combine 20:36
gfldex would sub foo( --> Bar|Any ) {...}# be valid Perl6 code? 20:38
moritz std: sub foo( --> Bar|Any ) {...} 20:39
p6eval std 1ad3292: OUTPUT«===SORRY!===␤Typename Bar must be predeclared at /tmp/wMyXUv4o1n line 1:␤------> sub foo( --> Bar⏏|Any ) {...}␤Parse failed␤FAILED 00:01 109m␤»
moritz std: class Bar { }; sub foo( --> Bar|Any ) {...} 20:40
p6eval std 1ad3292: OUTPUT«===SORRY!===␤Unable to parse signature at /tmp/9rQVA7HTWy line 1:␤------> class Bar { }; sub foo⏏( --> Bar|Any ) {...}␤Couldn't find final ')'; gave up at /tmp/9rQVA7HTWy line 1:␤------> class Bar { }; sub foo( --> Bar⏏…
moritz short answer: no
gfldex could it become valid Perl6 code? :->
moritz if you changed it to be valid Perl 6 code, yes 20:41
lichtkind moritz: ok thanks i change that 20:42
done 20:44
20:46 birdwindupbird left 20:50 havenn joined 20:57 icwiener_ left, icwiener_ joined, icwiener_ left, icwiener_ joined 21:12 icwiener_ left, icwiener_ joined
pmurias fglock: does perlito5 run any test from the orginal perl5? 21:13
21:19 GlitchMr left
TimToady std: class Foo {}; class Bar {}; sub foo ( --> Any where Foo|Bar ) {...} 21:25
p6eval std 1ad3292: OUTPUT«===SORRY!===␤Unable to parse signature at /tmp/rmxdRZOv6c line 1:␤------> class Foo {}; class Bar {}; sub foo ⏏( --> Any where Foo|Bar ) {...}␤Couldn't find final ')'; gave up at /tmp/rmxdRZOv6c line 1:␤------> Foo {}; class …
21:34 MayDaniel left
sorear o/ pmurias, fglock 21:36
21:37 lichtkind left
pmurias sorear: hi 21:38
21:38 am0c left
pmurias fglock: ping 22:10
22:13 am0c joined
pmurias fglock: I made perlito5.js pass all tests on node.js 22:13
fglock: hopefully i didn't break anything on d8, but I didn't test 22:14
22:22 havenn left 22:26 tyatpi left
masak sorear: I don't think "TimToady++ wrestling with his own bugs" quite covers it ;) 22:29
I see the past five years more as an effort to shrapen the spec against implementations, plugging as many eyes, hands, and brains into the process as we can find. 22:30
hi mucker-lurker. :) 22:31
jnthn is home :) 22:35
moritz: On anon enums, I think now we have bs we should use the anon enum builder to build the key/value pairs that we install for named enums. 22:36
22:36 havenn joined, benabik left
jnthn Rather than having two code paths. 22:36
So, having done anon enums is doubly good. moritz++
22:37 benabik joined
masak I'm guessing there will be more refactorings like that. 22:40
the "rather than having two code paths" kind, I mean.
22:44 icwiener_ left 22:45 icwiener_ joined
jnthn yes, it's generally a good direction to move in. 22:46
22:59 tokuhirom3 left 23:00 kaare_ left 23:07 havenn left
sorear bs was merged? 23:09
23:12 tokuhirom3 joined
masak about a week ago. 23:12
about at the time when Rakudo took a leap and put Niecza at 96%. 23:13
sorear rub it in, rub it in... :D
pmurias what's the current rakudo niecza ratio? 23:14
masak sorear: no, but that was why. 23:15
sorear still 96%, I think.
masak yeah.
sorear masak: I'm trying to act humorous - my feelings aren't *really* hurt. 23:16
pmurias sorear: we should integrate perlito5 and start passing perl5 (spec)tests ;)
sorear In fact I'm thrilled to think that I'm responsible for Rakudo regaining momentum
masak I think the statistics will do us good as long as we approach them un-seriously. 23:17
so I'm glad you're not really hurt ;)
Tene I actually have slower startup on the latest rakudo
on rakudo from approximately a month ago, i had consistent 0.4 second times for perl6 -e 1 23:18
jnthn Tene: Define "latest"
Tene jnthn: Date: Fri Mar 9 10:47:20 2012 +0100
a8086d403ba034687b03a91f5a2c487d8a0a540c
now the same test varies between 0.6s 0.9s 23:19
jnthn o.O
OK, then you're observing the exact opposite of what everybody else has. 23:20
Tene oh, uh... I have the 'nom' branch checked out, not 'master' 23:21
Oops.
sorear you have a master branch?
Tene Apparently?
jnthn OK, now I'm really confused... :)
Tene Maybe it's old.
I haven't pruned branches in my checkout in a very long time
ahh, 'nom' is the main branch now. 23:22
sorear Yes. 23:23
Tene so, no, I'm using the right branch
This is Parrot version 4.1.0-devel built for amd64-linux
jnthn: if you'd like a login on my laptop, let me know. 23:26
23:27 robinsmidsrod left 23:30 Trashlord joined 23:35 mj41 left 23:50 isBEKaml left 23:51 robinsmidsrod joined
jnthn Tene: Thanks, will do...gonna be pretty tied up in the coming days, though. 23:55
Time for some sleep &