»ö« 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.
00:07 bph left 00:09 p6eval left, bph joined, sorear left, TimToady left 00:10 TimToady joined 00:11 dalek joined, ChanServ sets mode: +v dalek, sorear joined 00:13 adriano86 joined
adriano86 anyone know perl 7? 00:13
00:14 p6eval joined, ChanServ sets mode: +v p6eval, bph left, plobsing left
sbp perl7 is like the speed of light 00:15
adriano86 and your coding in perl6
which makes you retarted by nature
:P
flussence_ hm, I thought perhaps the incident last night (irclog.perlgeek.de/perl6/2011-03-22#i_3413171) was a one-off. Guess not. 00:16
sbp . o O ( someone who formerly lost their tarts in a strange accident? )
adriano86 no
its not
im back!!
ah umm
flussence_ sbp: prosthetic tarts?
adriano86 hold!
00:16 adriano86 left, adriano86 joined
adriano86 tadaaa!! 00:17
00:17 tyatpi_ left
adriano86 guess whos back! 00:17
00:20 dalek left, dalek joined, ChanServ sets mode: +v dalek 00:26 marienz joined, RichiH joined
RichiH has adriano86 been spamming/trolling in here? 00:27
flussence_ today and yesterday. We have logs if you wanna see: irclog.perlgeek.de/perl6/2011-03-22#i_3413171 00:28
RichiH thanks 00:29
adriano86 uh?
00:35 noganex left 00:44 plobsing joined
diakopter adriano86: "i dont need a god damn hug; I got a problem that i need solved" isn't really a welcome attitude around here 00:46
also, name-calling ("idiots")
donri adriano86: jävlaranama, är du svennebanan också? 00:48
adriano86 uh? 00:50
donri guess you're using a proxy because you think you're being oh so naughty.
adriano86 im not following
i just talked to the network ops
and apologized about my behaviour
00:50 woosley joined
donri adriano86++ 00:51
adriano86 ye?
donri i was giving you positive karma :)
adriano86 ah
jävlaranama, är du svennebanan också?
RichiH basically, the deal is: let's give him another chance, but please poke marienz or me if there are problems
diakopter I thought there were no karmabots
adriano86 my answer is no :P
diakopter RichiH: okay 00:52
00:52 noganex joined
adriano86 RichiH wheres the good faith? :( 00:52
lol
thanks for second chance though
adriano86 taps RichiH
diakopter sigh
donri Well, we like to hug trolls and give them second chances -- perl6advent.wordpress.com/2010/12/2...ide-carol/ 00:56
adriano86 :D
take care donri ;P
gn
00:56 adriano86 left
donri Sleep tight. 00:56
01:01 bph joined 01:08 molecules joined, arlinius joined, Chillance left 01:09 stkowski left 01:22 molecules left 01:29 bph left, bph joined 01:40 bph left 01:43 Helios- left 01:44 arlinius left 01:48 Helios- joined 01:49 arlinius joined 02:02 whiteknight left 02:06 tyatpi_ joined 02:15 bph joined 02:26 bph left
dalek ast: b0d6bcf | (Martin Berends)++ | / (2 files):
remove S16-filehandles/io.t tempfile, and .gitignore *.niecza
02:30
02:40 icwiener left, icwiener_ joined
mberends interesting to read the Jikes JVM GSOC 2011 proposals: infrastructure, garbage collection, concurrency, native structs, ... Sound familiar? jikesrvm.org/Google+Summer+of+Code+2011 02:47
02:47 icwiener_ left 02:50 agentzh joined 02:51 tyatpi_ left, cls_bsd left 02:56 alim left 03:00 orafu left 03:02 GinoMan2440 left, orafu joined 03:11 tyatpi_ joined
sorear mberends: I think we could usefully pool certain efforts on JVM targetting 03:26
mberends oh yay, I am dreading the hugeness of that work :) 03:27
sorear I also need a Java component which can generate JVM code with gotos 03:28
I've historically thought of "I need a JVM port of the CLR bytecode emitter"
03:29 satyavvd joined
mberends it would be nice if the goto related part could be handled by some special code, and the rest handled by standard Java compilers, but I'm not sure if that is achievable. 03:29
the two bytecode dialects (JVM and CLR) are probably similar 03:30
sorear does the JVM have a managed class-file writer these days? 03:31
mberends no idea 03:32
sorear niecza relies on System.Reflection.Emit, which is on ~ the same level as ilasm
03:33 GinoMan joined
sorear wonders if a jvm version will necessarily entail 1 class per (un-deleted) Perl 6 sub 03:33
I haven't seriously studied the JVM since 1.1 days 03:35
mberends: should jNQP/jRakudo support gather? 03:41
mberends It Would Be Nice ;) 03:42
this may help: asm.ow2.org/ also Jasmin contains a B::JVM::Emit cpan.uwinnipeg.ca/htdocs/B-JVM-Jasm.../Emit.html 03:43
donri Jasmin? 03:44
mberends JVM Assembler
03:45 s1n joined
sorear mberends: not an option. choose carefully 03:46
the question of whether to use the native vm activation stack has very pervasive consequences
mberends good. I don't like blind alleys
yes, I do understand that stack management and concurrency are deeply intertwined. 03:47
if gather *demands* CPS, I would be happy to consign gather to the very long term TODO list. 03:49
03:49 satyavvd left
mberends life's too short to spend on goals like that, while far simpler problems are still unsolved, such as getting reasonable speed. 03:51
sorear niecza/.net uses CPS, and imho it gets reasonable speed. 03:56
mberends several serious Perl 5 users have told me they would not compile their current perl 5.12.x with threads enabled because of an approximate 15% performance penalty, so speed is a major issue to at least that group. 03:57
yes, I think niecza's speed is very nice, one of its nice attributes :) 03:58
04:02 nymacro joined 04:03 c9s joined
sorear Perl 5 relies heavily on global variables 04:05
the "threads penalty" is really a "thread local storage" penalty
for the same reason -fpic hurts perl5 quite a bit 04:06
sorear is reading the asm.ow2.org stuff
mberends I find it surprising that those users prefer a single thread that is 15% faster, to potentially maany more threads that are 15% slower. It shows the preferences and priorities of Perl used in heavy production work (ie most heavy work cannot yet profit from multithreading) 04:09
04:10 c9s left
sorear mberends: perl 5 threads are shared-nothing 04:10
mberends good!
sorear mberends: real Perl 5 programmers use UNIX, and on unix fork() is just as fast as pthread_create()
fork() gives you all of the benefits of Perl 5 threads without the performance penalty, and is heavily used in real-world p5 code 04:11
mberends oh yes, I sneaked a Unix fork into Perl 6 (Rakudo Zavolaj) for fun :) 04:12
it probably scales better today. The Parrot developers (bacek++ I believe) have done great work slimming down the size of the Rakudo perl6 process (now 50-60MB as the spectests are running here, was over 100MB) 04:13
donri Real Scotsmen use coroutines 04:14
mberends :)
sorear mberends: does core.pir still require 2000MiB to generate? 04:18
I stopped following rakudo when it became effectively unbuildable 04:19
mberends it was about 300MiB recently, I'll watch the next one build and let you know
coldhead scotsmen? 04:23
mberends en.wikipedia.org/wiki/No_true_Scotsman
coldhead no further questions, your honour! 04:25
04:25 starcoder2 left
mberends just use coroutines! 04:25
04:27 starcoder2 joined 04:29 flatwhatson left
sorear mberends: ASM is exactly what I need. Thank you. 04:29
04:29 flatwhatson_ is now known as flatwhatson
mberends sorear: great! 04:29
mberends thinks of stealing sorear++'s future niecza/jvm work for 6model/jvm ;) 04:31
sorear mberends: I ask about gather because a common jvm backend for niecza and 6model would benefit from them agreeing on whether to use CPS
mberends yes of course. 04:32
sorear I'm probably going to use CPS for niecza/jvm, just because I already know how to make a CPS niecza backend for JVM clones work
mberends I personally remain skeptical about the long term performance competitiveness of CPS versus stack-based.
sorear "CPS versus stack-based" is the wrong mental model 04:34
mberends it seems to me that in CPS the heap must be used to do much of the stack's job, and the heap is a performance drain. CPS kind of turns your memory into a heap of mini-stacks.
sorear the question is whether to use the VM's current continuation to model Perl 6's current continuation 04:35
mberends but please correct my mental model.
sorear or whether a different VM structure needs to be used
mberends I lack the knowledge to make a meaningful comment 04:36
sorear the JVM current continuation is fast but inflexible; stuff like gather/take and two-phase continuable exceptions are hard
a continuation is a data structure which holds a return path 04:37
mberends ok
sorear the JVM implements continuations using opaque stacks; it provides insufficient operations to handle Perl 6
Perl 6 is designed to be barely runnable using a stack for a language-level continuation, which in practice means that none of the existing implementations are up to the task 04:38
mberends to handle which parts of Perl 6 - gather, junctions I suppose, and what else? 04:39
sorear CATCH
$*FOO
mberends you're beginning to answer your own question, I think 04:40
sorear both require scanning up the call stack, which is possible on the CLR but incredibly inefficient (it's basically only designed to be used at breakpoints)
mberends: the question for you is how important these features are 04:41
mberends I've understood "walking the stack" before, but that was with native code, probably therefore a bit different.
sorear 6model/.net uses a hybrid model; the continuation is split into the return addresses (which are kept in the CLR stack) and the local variables (which are kept on the CLR heap) 04:42
naively, this is the worst of both worlds, but it could have some benefits if the CLR implementation is doing interprocedural optimizations
mberends sorear: to me personally, and the Perl 5 users I wrote about, speed is *almost* everything, and niceties like CPS would be welcome only if the perceived overhead is much less than 15%. 04:44
The Parrot docs state that CPS is an all or nothing architectural choice. I have always harbored a silent hope that this assertion is not entirely true, and that a hybrid system of flow control can be designed. 04:47
donri Child Protective Services? 04:49
mberends yes, that too
sorear CPS is a horrible misnomer but there's nothing better established 04:50
niecza has an interesting optimization that allows most code to run using very few frame allocations 04:51
04:57 donri left
diakopter likes it 05:00
sorear "it" ambiguous. 05:01
diakopter hee 05:02
the framepool
sorear mberends: do you have any other recommended Java libraries for this? 05:05
mberends sorear: afraid not. also, $work is beginning to beckon :(
05:05 aindilis left 05:06 aindilis joined
sorear once I get more tuits I'll look into alternate VMs some 05:06
I suspect dalvik will run fine on this machine :p 05:07
diakopter recalls pointing out asm.ow2 to mberends :P 05:12
I think. 05:13
sorear diakopter: you do java?
diakopter when asked to by my employers
oh btw, did you see? sfly is buying tiny prints 05:14
$333m 05:15
sorear I don't even know what sfly is. *fails* 05:17
diakopter oh, my employer's stock symbol
short for Shutterfly
someone please come work for us. I wrote this job description and posted this position: sfbay.craigslist.org/pen/sad/2270751187.html 05:20
mberends diakopter: Am I allowed to choose on which part of the planet I stay? ;) 05:22
diakopter actually, possibly. 05:25
stay long-term/mostly, anyway 05:26
email me @gmail for details, anyone. Sorry for somewhat [OT] 05:27
05:27 Lorn left 05:28 Lorn joined
mberends sorear: don't apply! come to (Netherlands|Sweden) instead! 05:28
diakopter sorear's too young to have 5-10 years experience supporting production UNIX environments :P
sorear I've heard rumours the Swedish immigration process is hell 05:29
mberends sorear must have a time machine that compresses 20 years of experience into 5
sorear diakopter: around 2007 I was supporting 3 production UNIX environments simultaneously. Can I count that as 3 years? 05:30
diakopter hm
05:44 ruslan joined, ruslan left
Tene "depends on negotiation ability" seems pretty unfortunate, but likely true almost anywhere. 05:45
diakopter yes :D
05:45 sftp joined
diakopter such a healthy qualifier 05:45
Tene I've got most of what's asked for there.
05:47 nulrsan joined
diakopter suggests taking such a convo to priv 05:47
Tene I'm not comfortable negotiating. In the past, when speaking with employers about compensation, I've told them that, and so far it's happened to work out well for me. "i'm not comfortable negotiating, and I'm underinformed and poorly calibrated about my value to the company and the job market in this area. If I'm going to work for you, I have to trust you anyway, so I trust you to make me a fair offer." 05:48
I guess I'm better-informed and better-calibrated these days, though.
TiMBuS im a metrologist. i will be the judge of that
its just rare for people to even say the word 'calibration' outside of my work so i get excited 05:49
Tene It's not very common in my workplace, but trying to have a sense of how well-calibrated I am on various tasks has been an important tool in my life. 05:51
sorear I use calibrated a lot but never with regards to people 05:52
I have a lot of improvised measuring devices in my life
Tene I somehow have a vague expectation that someday my habit of placing large amounts of trust in people will fail badly, but so far it's always worked out very well for me, so I'm probably going to keep it up at least until it fails. 05:53
TiMBuS can you trust me to hold your gold egg laying goose 05:54
Tene Sure. 05:55
diakopter hee 05:56
TiMBuS aw, you called my bluff. i wouldn't steal it because im too nice. i would just pet it 05:58
sorear Tene: how often do you turn your back on strangers? go out in public without a shotgun? 05:59
a lot of people are a lot more trusting than they realize. You are, relatively to the baseline, a lot less trusting than you say 06:00
diakopter I would make the goose eat its own eggs
mberends Tene: I have negotiated in a similar way to you before, with the added declaration that I am not averse to leaving if it the offer turns out to be unfair to me.
s/it//
Tene mberends: It's also relevant that money hasn't ever been the deciding factor in my employment choice. I've found places that I want to work at with a team that I like, and then the compensation details have been secondary to that. 06:04
I've always meant to try to start caring more about money, but I haven't been able to manage it yet.
mberends a healthy balance is the key 06:05
sorear Tene: you should think of being in an environment you actually want to work in as part of the benefits package 06:07
Tene sorear: Yes, I should. Effectively, though, it's been the deciding factor every time so far. 06:08
It would probably be useful to me if I could care about money more.
mberends we are probably not the kind of people who would have invented money, but since money is so pervasive it helps to manage it so that it doesn't manage us. 06:11
06:12 nulrsan left 06:14 sftp left
diakopter real money isn't invented; it comes to be as a measure of the medium of exchange. fiat money is invented. 06:16
and yes, I used one of the naughty words ('real', 'true', 'correct', 'actual', 'right')
06:16 mkramer1 joined, mkramer left 06:18 alim joined
mberends what makes me very sad is that modern financial systems have put many people into various situations of economic slavery, resulting in terrible actions such as even murder and suicide. 06:18
diakopter tooo 06:19
06:19 cosimo left
sorear wanted: 1x anarcho-socialist utopia 06:19
diakopter should note, I wasn't contradicting mberends' comment 06:20
wanted: 1x anarcho-capitalist utopia
"It would probably be useful to me if I could care about money more." -> 06:21
s/could/needed to/ s/money/where life essentials came from/ 06:22
mberends commute & # on-topic for once ;) 06:23
sorear I think that's the definition of "poor"
06:30 mberends left
sorear out 06:43
06:47 kaare_ joined 07:00 woosley1 joined 07:03 woosley left 07:09 wtw joined 07:28 alim left, noganex_ joined 07:31 noganex left, Axius joined 07:38 woosley1 left, [particle] left 07:46 tyatpi_ left 07:47 f00li5h left 07:49 Mowah joined 08:03 ilogger2 joined, ChanServ sets mode: +v ilogger2 08:14 woosley1 joined
dalek ok: edeee38 | (Patrick Donelan)++ | src/roles.pod:
s/does affect/does not affect/
08:16
08:19 fhelmberger joined, Axius joined 08:33 quester_ joined 08:35 alim joined 08:56 tzhs joined 09:02 Trashlord joined 09:06 f00li5h joined, Axius left 09:17 Axius joined 09:18 woosley1 left 09:23 quester_ left 09:51 dakkar joined
dalek ecs: cf855ee | moritz++ | S32-setting-library/IO.pod:
[S32::IO] bring INET stuff closer to reality
09:54
09:58 dual joined 10:04 tzhs left 10:19 Axius left
moritz_ mberends++ # roast commit b0d6bcf; those temp files were annoying, but somehow I always searched in the wrong places... 10:19
10:25 awoodland joined 10:28 Helios- joined 10:33 gfldex joined, bacek joined 10:38 ascent_ joined 10:50 Helios- left
moritz_ phenny: tell sorear FYI rakudo build mem usage currently peaks at ~600MB on a 64bit platform. ISTR that the GC threshold depends on available mem, so might be different on your machine 10:50
phenny moritz_: I'll pass that on when sorear is around.
10:51 Helios- joined 11:07 ggoebel joined 11:11 ggoebel left 11:17 ggoebel joined 11:21 ggoebel left 11:23 shi joined 11:27 ggoebel joined 11:34 awoodland left 11:58 plainhao joined 12:05 ab5tract joined
takadonet morning all 12:11
12:27 mtk joined
moritz_ hi takadonet 12:38
12:45 tyatpi_ joined 12:47 ab5tract left 12:55 nadim_ joined 12:56 mtk left 12:58 ascent_ left, ascent_ joined 12:59 tadzik left 13:03 mtk joined 13:06 bluescreen10 joined 13:08 estrabd joined 13:10 tzhs joined 13:14 [particle] joined 13:17 bluescreen10 left, mce_ro joined, bluescreen10 joined 13:19 MayDaniel joined 13:24 xhr joined 13:30 xhr left 13:33 MayDaniel left 13:39 nulrsan joined 13:49 kfo joined 13:56 tyatpi_ left 13:57 plobsing joined 14:11 spq joined 14:15 spq left 14:25 sftp joined, bluescreen10 left 14:30 alester joined
moritz_ phenny: tell mberends you might consider coming up with a NQP-on-JVM GSOC proposal 14:32
phenny moritz_: I'll pass that on when mberends is around.
colomon \o 14:44
jnthn o/ colomon 14:45
colomon jnthn! \o/
How goes it? 14:46
dalek p/ctmo: 81203dc | jonathan++ | src/Regex.pir:
Fix --target=pa[rse|st] - got broken at some point in this branch.
jnthn colomon: Nicely :-)
colomon: I'm in Taipei :)
colomon wheee!
jnthn City of nice noms :)
moritz_ how is the hacking climate over there?
14:46 alester left
jnthn The city is too distracting ;-) 14:46
14:46 alester joined
colomon got six inches of snow overnight, and it hasn't stopped yet. :( 14:47
jnthn I've settled down now to write a very small purely NQP language implementation to use in my talk on Sunday, which is about writing compilers :)
colomon is NQP the language to be implemented or the language supporting the implementation? ;) 14:48
jnthn The latter :)
The language being implemented is called TinyLang because I had a creativity fail
PerlJam jnthn: just implement lisp :)
moritz_ colomon: wow. It's quite sunny and warm here, it's the first day I didn't wear a coat while visiting lunch nom location (5 minutes walk or so)
colomon moritz_: we had a week or two of nice weather, but winter suddenly came back yesterday. 14:49
14:50 alester left, alester joined 15:00 tadzik joined 15:04 dukeleto joined 15:05 tyatpi_ joined, nick joined
nick whoami 15:05
moritz_ you're nick. Congratulations. 15:06
nick thank you, moritz
this is a quiet room
PerlJam nick: it's your imagination 15:07
moritz_ not generally, just today
nick so, what is the major purpose of this room for? 15:09
PerlJam nick: Discussion of all things Perl 6
moritz_ Perl 6 development, community and fan base :-)
PerlJam and sometimes things Not Perl 6
But mainly punning 15:10
moritz_ nick: btw that's what the /topic command is for
nick ok, i am sort of out of fashion using irc 15:11
moritz_ fashion is overrated 15:12
PerlJam nick: that's okay, we follow a very broad interpretation of the Postel principle around here. 15:13
nick maybe it is a stupid question, what is perl6 for? so many new script language, modern, fast, widely used, perfectly designed for internet age, like python, ruby, lua. perl6 even not compatible with it's prior versions. 15:15
15:16 pmurias joined
PerlJam nick: That's actually a very good question IMHO 15:16
mathw It sort of goes right to the heart of why we're here
PerlJam nick: Perl 5 did a lot of things right. But in the process it did a lot of things wrong. Perl 6 is about doing more things right. :) 15:17
nick: that's one slice of the answer
15:18 Psyche^ joined, Psyche^ is now known as Patterner
mathw nick: Python 3 is also not compatible with its prior versions, although the change is less dramatic than with Perl 6 I believe 15:18
PerlJam nick: Perl 5 is widely deployed and used. Since Perl 6 has been in the works, several features have been ported to work with Perl 5. So, in that sense, Perl 6 is a testbed for new ideas for Perl 5. 15:19
mathw Perl 6 also is intended to be a better language than Python, Ruby, Lua etc. (for some value of 'better'). Just because they exist is not a reason not to try something better. 15:20
nick yes, that is what i think and expect, but how does it compete with others? can it even take place of perl5? how long will it take to do so?
PerlJam nick: Why does it need to? 15:21
sbp nick: as probably more an observer than these guys, it might interest you to know that in my mind, perl6 is a hybrid of "cutting edge compsci" with "get-your-hands dirty practicality". so perl6 should allow you to make scripts that are easier to develop and yet more powerful (in certain ways) than with the other languages
PerlJam nick: Why were python and ruby and lua invented? Why didn't they just use an existing language? (like perl ;-)
sbp as for the relationship of perl5 to perl6, think of perl6 not as a backwards compatible predecessor, but more as perl5's spunky younger sister
er, *successor 15:22
mathw If Perl 6 does replace Perl 5, it would take a very long time to do so, just because of the vast amount of Perl 5 code that's out there
That kind of transition simply isn't feasible, and won't happen.
moritz_ for me, Perl 6 is the successor of all general scripting languages
sbp a spunky younger sister doesn't replace her elder sibling
moritz_ others disagree :-)
sbp but she might be more cooler and fun to go out with
mathw What I hope to see is new projects being written in Perl 6. 15:23
nick you know, history is burden, perl5 code is already deployed all over the world.
mathw yes, so is COBOL code
sbp perl6 is doing better than python3 at least :-)
mathw But other languages have come along since, and how much new code is written in COBOL now?
PerlJam mathw: people still write new COBOL code (mainly to support some old COBOL code in a new world) 15:24
sbp python3 shows nicely the danger of doing a sucessor to a major language in a more incremental way
mathw PerlJam: that doesn't really count
sbp (infuriatingly, because python is my work-a-day programming language still)
mathw PerlJam: they don't start a completely new project in COBOL... well, not many of them
sbp: From what I've see, Python 3 hasn't done much more than irritate people 15:25
PerlJam sbp: but python3 *will* replace python2 at some point soonish. (perhaps too soonish :)
15:25 nulrsan left
moritz_ where "soonish" is probably "half a decade" or so 15:26
PerlJam right
we're all about the long now here :)
sbp not for as long as they keep releasing 2.x versions at least :-)
PerlJam sbp: well, the other option is that the python community forks itself to keep the 2.x series alive. 15:27
sbp wouldn't surprise me at this rate
moritz_ would be a real pity, considering how small the difference between 2 and 3 is 15:28
sbp and the fact that 3 is actually better
it's just that the advantage vector is of a smaller magnitude than the backwards compat disadvantage vector 15:29
moritz_ at least in the short term
nick then, who is doing the blueprint work in perl6? larry wall anticipated?
PerlJam time changes everything :)
sbp by that time we'll all be using perl6
PerlJam nick: larry wall is our language designer, yes
tadzik hello zebras
moritz_ though others also contributed a lot to the language 15:30
moritz_ only tiny parts
15:30 hudnix joined
moritz_ hello panda herder, tadzik :-) 15:30
PerlJam moritz_: I don't know ... I think all of the discussion on #perl6 has contributed quite a bit the language over the years.
moritz_: so, in a way, we've all had "major influence" on the language
nick what is the status of perl6? any authorized major release? 15:32
PerlJam nick: The Rakudo compiler releases every month.
moritz_ and niecza has roughly regular releases too
both are usable for some applications, and pass parts of the official test suite
moritz_ -> commute 15:33
nick how about deployment, what is it's mainly used for and what is it designed for? 15:34
sbp github.com/rakudo/star/downloads
PerlJam nick: everything.
tadzik it's design for getting the work done, in my experience. And it's not widely used in "production", but e.g. masak-san's blog runs on Perl 6
strangelyconsistent.org I think 15:35
15:35 alim left, kaare_ joined
sbp a lot of language work depends on people having written billions of modules 15:35
but there's no perl6 cpan equivalent (yet) 15:36
PerlJam sbp: also, a good chunk of Perl 6 obviates the need for certain modules :)
15:36 hudnix left
sbp yup. depends what you're doing of course 15:36
say you want to parse a JSON file 15:37
tadzik "There's a module for that!" :)
15:37 hudnix joined
sbp of course, you could just write the p6 grammar for JSON... :-) 15:37
15:37 donri joined
nick sbp, yes, that is my major doubt, perl5 code everywhere, they may be a tough trouble to be overcame by perl6 15:37
sbp no trouble really 15:38
if there's perl5 and you want to use perl5, use perl5
nobody's going to shout at ya :-)
certainly people in the perl6 community will try to build better tools
tadzik Perl 6 is not the next version of Perl. It's a new language, and there's a reason for that 15:39
sbp consider anything with a grammar, say. even my JSON example 15:40
people are going to look at good perl6 JSON code and say, yeah, I trust that more than say python's json module (which I use as an example because I know from experience it has problems!)
and part of that will be based on the fact that grammars are a key, core feature of perl6
jnthn It turns out Perl 6 (or a subset of it, even) is quite nice for writing compilers in. :) 15:41
nick ok, understood your guy's opinion, perl6 is not successor of perl5, perl6 is new for modern use, perl6 is designed for no compatible with perl5, right?
tadzik right
well, it is a successor
sbp it's a successor but it doesn't replace
the spunky younger sister metaphor is really quite handy
nick ok, that make sense, i am sort more interested in perl6. 15:42
tadzik cool 15:43
nick any short tutorial for perl6's glory technique spot?
PerlJam nick: which one? ;)
tadzik nick: are you a Perl 5 programmer? 15:44
donri define compatible, you should be able to use Some::Module :from<perl5>;
nick i don't know, i just wanna have a glance at perl6 and taste it's famous flavor. 15:45
sbp here's a glance:
sub nonexistent-or-older($target, :than($source)!) {
return $target.IO !~~ :e
|| $target.IO.changed before $source.IO.changed;
tadzik check out the Advent Calendar then
nick mainly, i am php,python programmer
15:45 leprevost joined, fhelmberger left
tadzik nick: perl6advent.wordpress.com/ 15:45
sbp }
tadzik some "Perl 6 at it's awesomest" examples
PerlJam nick: github.com/perl6/book too 15:46
15:46 fhelmberger joined
nick great, thank alot to you guys all. 15:46
15:46 TimToady joined
donri also github.com/perl6/perl6-examples 15:46
PerlJam nick: I've been writing some various "introduction to X" articles for Perl 6 at github.com/perlpilot/perl6-docs/tr...ster/intro
donri also rosettacode.org/wiki/Category:Perl_6
PerlJam nick: *definitely* look at the rosettacode 15:47
nick btw i am not nick, it is a mistake, i am laurence.miao
tadzik no no, no perl6-examples
I don't think much of this code even runs
x3nU was fixing it some time ago, but I don't think he moved it any forward significantly 15:48
donri shouldn't rosettacode.org/wiki/JSON#Perl_6 use a % sigil?
tadzik rosettacode is nice if you want to see how practical solutions in Perl 6 compare to the others
PerlJam donri: why?
donri: I mean, it *could*, but why should it? :) 15:49
donri i duno
nick quite late my local time, have to hit bed
15:49 Rotwang joined
nick c u, perl6 guys 15:49
PerlJam donri: scalars are the ultimate polymorphic containers in Perl
sbp oh, you guys did make a JSON parser already
moritz_++ tadzik++
tadzik nick: see you soon :)
PerlJam sbp: modules.perl6.org is your friend :) 15:50
donri PerlJam: i thought they behaved differently for e.g. lists
but i suppose you can @($foo)?
tadzik moritz_++, I didn't do anything about JSON parser :)
15:50 nick left
sbp what is github.com/perl6/misc reserved for? 15:52
anything in particular?
donri why is 'is' used for export, rw, copy...?
flussence_ 'is' is a generic extendible adverb thing 15:53
donri i thought it was only inheritance
and that 'does' or 'but' would make more sense
flussence_ 'is native' uses it too
sbp I'd like to document the things that we just told nick/laurence.miao on Github somewhere
somewhere in the perl6 organisation namespace sounds like a good idea
on a wiki
PerlJam sbp: go for it! 15:54
sbp hence my asking what misc is for: would misc/wiki be a good place for it?
(using Github's built in wiki functionality)
PerlJam As good as any.
sbp okay, making it 15:55
PerlJam sbp: if you have the appropriate commit privs, no one is going to yell at you for using them :)
sbp: and if someone comes up with a better place, we can move it then
jnthn donri: is actually ends up calling trait_mod:<is>, which is multi-dispatch. That decides what actually happens. 15:56
donri intrusting 15:59
TimToady 'does' and 'but' have strictly circumscribed meanings; 'is' is allowed to do anything to the identity of the declarand 16:02
donri also, is it 'also is Foo;' or just 'is Foo;' inside blocks?
I see both used in examples
TimToady 'also' is newer, less ambiguous 16:03
16:03 shi left
TimToady "It's not what you does, but who you is." :) 16:03
donri :D 16:04
and you can use that inside arbitrary blocks?
TimToady only inside the block of a known declarand
which happens to be dynamically scoped in the parser 16:05
in fact, in STD it's called $*DECLARAND
it's convenient that the lexical scopes of your program can be represented by dynamic scopes in a recursive descent parser... 16:06
donri I should quote you on that on Facebook and see what grandma' thinks 16:07
16:08 tzhs left, ronoreck joined 16:10 hercynium joined
sbp .title github.com/perl6/misc/wiki/Get-Into-Perl6 16:19
phenny sbp: Get Into Perl6 - GitHub
tadzik sbp++ 16:20
tadzik adds this and that 16:22
moritz_ somebody please add this to perl6.org somewhere 16:25
tadzik github.com/perl6/misc/wiki/_compare/1a3a...17a8 -- my tunes 16:26
16:29 ymasory joined, dsp_ joined 16:31 bluescreen10 joined 16:32 dsp_ left, MayDaniel joined 16:34 dsp_ joined 16:37 xinming joined 16:42 ymasory left 16:45 bluescreen10 left, mce_ro left 16:55 cdarroch joined, cdarroch left, cdarroch joined 16:58 donri left 16:59 donri joined 17:00 bluescreen10 joined, icwiener joined 17:08 ymasory joined, fhelmberger left 17:22 donri left 17:24 plobsing left 17:34 ronoreck left 17:38 plobsing joined 17:40 donri joined, risou joined 17:45 ronoreck joined, pmurias left 17:50 snearch joined 18:05 impious joined 18:06 stkowski joined 18:11 [hercynium] joined, [hercynium] left, [hercynium] joined 18:12 [hercynium]_ joined, [hercynium]_ left, [hercynium]_ joined 18:14 hercynium left 18:15 [hercynium] left 18:22 qu1j0t3 joined 18:27 alim joined 18:31 alim left 18:43 MayDaniel left 18:45 alim joined 18:49 snearch left 18:51 dakkar left, alim left 18:56 alim joined 18:59 alim left 19:03 Chillance joined 19:07 dsp_ left 19:14 saaki joined 19:16 dsp_ joined 19:17 dsp_ left
donri How do I do this inline without subset? my Str where /^H/ $s = 'Hello' 19:22
19:26 dsp_ joined 19:27 impious left 19:29 mce_ro joined
colomon rakudo: my Str where { $_ ~~ /^H/ } $s = 'Hello; say $s 19:35
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤In "my" declaration, typename Str must be predeclared (or marked as declarative with :: prefix) at line 22, near " where { $"␤»
colomon std: my Str where { $_ ~~ /^H/ } $s = 'Hello; say $s
p6eval std 4608239: OUTPUT«===SORRY!===␤Multiple prefix constraints not yet supported at /tmp/wYlWxgatBP line 1:␤------> my Str ⏏where { $_ ~~ /^H/ } $s = 'Hello; say $s␤Malformed my at /tmp/wYlWxgatBP line 1:␤------> my Str ⏏where { $_ ~~ /^H/ } $s =
..'Hell…
19:37 awoodland joined
tadzik ...Hell... 19:44
19:46 bluescreen10 left
TimToady std: my 19:51
p6eval std 4608239: OUTPUT«===SORRY!===␤Malformed my at /tmp/la8cjjmMrv line 1 (EOF):␤------> my⏏<EOL>␤ expecting scoped declarator␤Parse failed␤FAILED 00:01 118m␤»
TimToady std: my Str $s where /^H/ = 'Hello'; say $s; 19:52
p6eval std 4608239: OUTPUT«ok 00:01 123m␤»
TimToady rakudo: my Str $s where /^H/ = 'Hello'; say $s;
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Confused at line 22, near "my Str $s "␤»
TimToady rakudo: my Str $s where (/^H/) = 'Hello'; say $s;
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Confused at line 22, near "my Str $s "␤» 19:53
TimToady rakudo: my (Str $s where /^H/) = 'Hello'; say $s;
p6eval rakudo d5ccf9: OUTPUT«Hello␤»
TimToady donri: ^^
19:54 plobsing left
colomon std: my (Str $s where /^H/) = 'Hello'; say $s; 19:57
p6eval std 4608239: OUTPUT«ok 00:01 126m␤»
colomon TimToady++ 19:58
PerlJam Though when it takes the language designer 3 tries to get it right, I have to wonder if there's a language misfeature lurking there. 19:59
:-)
sbp valid in std but not in rakudo means that rakudo is behind, doesn't it? 20:16
nyi?
tadzik I think it depends 20:19
can be a bug too
20:32 mce_ro left 20:33 leprevost left 20:42 jcowan joined
jcowan If you create a class using roles, what is the best way to get the attributes of those roles initialized appropriately? 20:43
20:44 dsp_ left
tadzik what do you mean: appropriately? 20:45
jcowan Appropriately relative to the class which does those roles. When I construct an instance, how do I communicate with the roles to tell them how to initialize their attributes? 20:46
s/the class/a class
20:47 leprevost joined 20:50 bluescreen10 joined
donri Not sure you want roles there, but don't trust me. 20:51
20:51 masak joined
masak hei hei zebras 20:51
jcowan For example, suppose that there's a role Breakable with methods break and fix and attribute broken. If Frobnitz (a class for representing various physical components) does Breakable, and I'm constructing a Frobnitz, I want to inform it of the current state of the (physical) frobnitz. 20:52
This is not the same as calling break if it's broken, since break represents a change of state. Nor do I want a public method set_broken in Breakable, since that allows you to corrupt the state without doing a proper change of state. 20:53
20:53 dsp_ joined
jcowan In some way I want to, as it were, pass the brokenness directly to the role. Any suggestions about that? 20:53
20:53 ymasory_ joined
jcowan s/break represents/calling break represents 20:54
donri: can you elucidate?
20:54 bluescreen10 left
masak this sounds interesting. 20:54
masak backlogs
20:56 mj41 joined
donri jcowan: can't you just have it be an argument to .new? 20:56
I'm probably misunderstanding :) 20:57
jcowan Sure. But the broken attribute belongs to Breakable, not to Frobnitz.
donri But if it does Breakable it mixes it in? 20:58
jcowan This, I think, is why classic traits don't allow state: all attributes live in classes only, and the traits just have required accessors and mutators. But it's much more compact to have the role keep state as Perl does.
donri Frobnitz.new(:broken) Frobnitz.new(:!broken) standard .new should permit this methinks? 20:59
jcowan Hmm. That may work, although I haven't seen things explained that way. Of course, you will be hosed if you have a conflict of attributes in different roles.
21:00 plobsing joined
colomon hmmm... I think the only time I've done a role with an attribute, I just initialized the role's attribute from the classes that "does" the role. 21:00
in .new, I mean.
donri But aren't attributes mixed in with the class doing the role?
colomon right, so you can treat them as if they are attributes of the class. 21:01
jcowan Ah, okay. In that case, how are conflicts between attribute names in different roles resolved?
donri And much of the point with roles *is* to get conflicts (as opposed to unpredictable overrides)
jcowan nods.
So what that means is that the attributes of a role are part of its public API. 21:02
donri Unless it's $!private, I guess
no idea if those behave differently from class-private attributes though
jcowan So then the question becomes: how do parts of the private state of the role get initialized? 21:03
masak <TimToady> "It's not what you does, but who you is." :)
TimToady++ 21:04
colomon jcowan: this might be closer to what you were looking for:
role Pet {
has $.collar = Collar.new(tag => Tag.new);
donri rakudo: role Breakable { has $!broken }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken).broken
p6eval rakudo d5ccf9: OUTPUT«Method 'broken' not found for invocant of class 'Frobnitz'␤ in main program body at line 22:/tmp/YzRwBHVmRi␤»
colomon but I don't know if that's implemented in Rakudo yet.
donri rakudo: role Breakable { has $!broken }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken)!broken
p6eval rakudo d5ccf9: OUTPUT«Method '!broken' not found for invocant of class 'Frobnitz'␤ in main program body at line 22:/tmp/zIApJhCfuR␤»
donri rakudo: role Breakable { has $.broken }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken).broken 21:05
p6eval rakudo d5ccf9: OUTPUT«Bool::True␤»
masak jcowan: I'm now caught up. the thing about roles is that after class composition, they barely exist.
jcowan: they've left most of "responsibilities" over to the class. 21:06
jcowan nods.
masak jcowan: they're mainly used just for method resolution.
IOW, the answer to what you first asked does indeed seem to be "it's already in the class, don't worry"
jcowan Which means that BadRole can reach in and mess with the state of GoodRole if it can induce you to create a class that does both BadRole and GoodRole.
masak your second question, about private state, I think is deeper. 21:07
jcowan i.e. roles are not units of encapsulation really.
masak jcowan: I suppose that's theoretically possible.
jcowan: but my guess is that I'd consider something along the way to making that happen bad coding.
donri jcowan: I think that's by design, mix in one role that depends on one of a set of other roles to be mixed in too?
21:08 leprevost left
donri or is that crazy, masak? :) 21:08
masak rakudo: role GoodRole { has $.attr is rw }; role BadRole { method be_bad { $.attr = 42 } }; class C does GoodRole does BadRole {}; given C.new { .be_bad; say .attr } 21:09
p6eval rakudo d5ccf9: OUTPUT«42␤»
masak jcowan: like that?
donri: things are usually crazy :P
donri how about role-privates, do they become class-privates in a shared namespace? 21:10
masak donri: I wouldn't have a role depend on another role without explicitly marking it somehow.
donri: yes. again, role composition.
jcowan I invented roles all by myself^W^W^W independently of the Perl community after reading the Smalltalk trait stuff and mixing it in with "Modular Reasoning in the Presence of Subtyping".
donri and how about class-privates and inheritance?
jcowan masak: Yes
masak jcowan: well, I'd consider that to be what the programmer asked for. namely trouble. :) 21:11
jcowan agrees.
masak donri: child classes can never see private attributes.
donri: unless, I guess, their parents 'trust' them.
donri masak: and you can have conflicting names, without, uh, conflicts?
masak aye. 21:12
jcowan I'm considering the merits of roles as a full replacement for inheritance; so far I like them MUCH better.
donri cool
21:12 qu1j0t3 left
donri take that python ("name mangling", hah!) 21:12
jcowan Mangling is an implementation detail.
donri jcowan: both are probably useful for different uses, and complete each other?
masak rakudo: class A { has $!f; method foo { say $!f } }; class B is A { has $!f }; say B.new(A{ :f(5) }, :f(42)).foo 21:13
p6eval rakudo d5ccf9: OUTPUT«flattened parameters must be a hash or array␤ in main program body at line 22:/tmp/P6lqekbOYG␤»
masak oh my, I've forgotten the syntax. :)
donri jcowan: name mangling is string programming :P
masak no, it seems that's right.
alpha: class A { has $!f; method foo { say $!f } }; class B is A { has $!f }; say B.new(A{ :f(5) }, :f(42)).foo
p6eval alpha : OUTPUT«42␤1␤»
masak alpha had a bug there. should say 5. 21:14
alpha: class A { has $!f; method foo { say $!f } }; class B is A { has $!f }; B.new(A{ :f(5) }, :f(42)).foo
p6eval alpha : OUTPUT«42␤»
jcowan (Noob question: Why am I seeing subscripted HLs in output?
)
donri it's "NL"
colomon NL, newline
masak jcowan: they're NL's. that's the symbol for "newline".
moritz_ .u ␤
phenny U+2424 SYMBOL FOR NEWLINE (␤)
donri rakudo: print 42
p6eval rakudo d5ccf9: OUTPUT«42» 21:15
moritz_ phenny is our Unicode expert
jcowan Oh, okay, must be the small font I'm stuck with in this idiot webclient I'm stuck with.
donri (Same as la_fen doi djan)
jcowan Yeah, I've been around her a long time. 21:16
donri jcowan: ctrl plus? :)
jcowan Screws up the carefully arranged XChat-simulation. 21:17
Hmm, it actually works now!
And yes, the ␤ works now. Must be a new release of the webchat client. 21:18
"works" in the sense "doesn't look like HL any more"
donri Oh, you can do 'my $!role-private', cool
jcowan So back to the semantic issue: if we want "broken" to be really truly private, nobody can corrupt it from outside the role (a) can we do that? (b) if we can, how can we initialize it safely? 21:20
colomon rakudo: role Breakable { my $.broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken).broken 21:21
p6eval rakudo d5ccf9: OUTPUT«Method 'broken' not found for invocant of class 'Frobnitz'␤ in main program body at line 22:/tmp/_uEWHz8lpo␤» 21:22
colomon rakudo: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken).broken
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Null PMC access in get_attr_str()␤»
colomon whee!
donri rakudo: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken)!broken
masak jcowan: you can use a my variable, with or without the twigil.
donri iswhatyoumeant
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Null PMC access in get_attr_str()␤»
masak jcowan: but then it will be per-role, not per-object.
colomon masak: if you don't use the twigil, is it per role composition or per object? 21:23
rakudo: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new().broken
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Null PMC access in get_attr_str()␤»
masak colomon: the 'my' goes on the scope, so it's per role.
donri my Frobnitz does Breakable[False] = .new; #? :D
colomon rakudo: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new() 21:24
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Null PMC access in get_attr_str()␤»
masak submits rakudobug
colomon masak++
masak rakudo: class Frobnitz {}; say Frobnitz.new().broken
p6eval rakudo d5ccf9: OUTPUT«Method 'broken' not found for invocant of class 'Frobnitz'␤ in main program body at line 22:/tmp/rC0X6OTubG␤»
colomon niecza: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new()
p6eval niecza v3-80-g3cc93a7: OUTPUT«===SORRY!===␤␤Twigil ! is only valid on attribute definitions ('has'). at /tmp/VIStGHz9bQ line 1:␤------> role Breakable { my $!broken ⏏= Bool::False; }; class Frobnitz does Br␤␤Action method trait_mod:does not yet implemented at
../tmp/VIStGHz9bQ…
colomon std: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new() 21:25
p6eval std 4608239: OUTPUT«ok 00:01 122m␤»
colomon interesting
masak colomon: was just going to do that :)
sorear: are you aware of the above? my guess is yes.
colomon the spec definitely has the my $!spleen; example in the section on roles
donri 'my $!spleen;' is the example in S14
masak sure.
donri what again was the syntax for calling a method of a particular parent? 21:30
moritz_ .Class::method
donri but you can't use that with roles eh? 21:31
for attributes or anything
moritz_ correct; roles flatten out
donri can you access lexical scope somehow?
moritz_ by being in it
donri :D 21:32
jcowan So it looks like roles aren't firewalled from one another when they are done by the same class. Bummer.
(in the sense that the private stuff of a superclass is firewalled from its subclasses)
donri jcowan: but classes do that 21:33
thus "Not sure you want roles there" 21:34
jcowan nods. 21:35
It's still better than inheritance, especially multiple inheritance.
(Another newb question: when a class does a role, does it get the option of renaming stuff brought in from the role?) 21:36
21:37 contempt joined
donri so how about parametric roles? 21:37
21:37 contempt left
donri rakudo: role Breakable[$state] { has $.broken = $state }; class Frobnitz {}; my Frobnitz does Breakable[False] .= new; say $f.broken 21:38
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤In "my" declaration, typename Frobnitz must be predeclared (or marked as declarative with :: prefix) at line 22, near " does Brea"␤»
donri No idea how you do values as parameters though
rakudo: role Breakable[$state] { has $.broken = $state }; class Frobnitz {}; my (Frobnitz does Breakable[False]) .= new; say $f.broken 21:39
PerlJam jcowan: re renaming-- yes
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Symbol '$f' not predeclared in <anonymous> (/tmp/VfsFlL1HVX:22)␤»
jcowan Okay, thanks. I think my questions are answered: roles are much better than superclasses, but they don't subsume them 100%. 21:41
donri rakudo: role Breakable[Bool $state] { has $.broken = $state }; class Frobnitz {}; my (Frobnitz does Breakable[False]) .= new; say $f.broken 21:42
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Symbol '$f' not predeclared in <anonymous> (/tmp/QQjqfLaCec:22)␤»
donri anyone?
rakudo: role Breakable[Bool $state] { has $.broken = $state }; class Frobnitz {}; my (Frobnitz does Breakable[False]) $f .= new; say $f.broken
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤Confused at line 22, near "my (Frobni"␤»
donri rakudo: role Breakable[Bool $state] { has $.broken = $state }; class Frobnitz {}; my Frobnitz does Breakable[False] $f .= new; say $f.broken 21:43
p6eval rakudo d5ccf9: OUTPUT«===SORRY!===␤In "my" declaration, typename Frobnitz must be predeclared (or marked as declarative with :: prefix) at line 22, near " does Brea"␤»
21:49 alester left
donri rakudo: role Breakable[Bool $state] { has $.broken = $state }; class Frobnitz {}; my Frobnitz $f does Breakable[False] .= new; say $f.broken 21:50
p6eval rakudo d5ccf9: OUTPUT«Method 'broken' not found for invocant of class 'Frobnitz'␤ in main program body at line 22:/tmp/3ybnPpsRN6␤»
21:51 [hercynium]_ is now known as hercynium 21:55 nymacro joined 22:00 poincare101 joined
poincare101 perl6: say3; 22:00
p6eval niecza v3-80-g3cc93a7: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'say3' used at line Any()1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 387 (CORE die @ 2)␤ at /home/p6eval/niecza/src/STD.pm6 line 1141 (STD P6.comp_unit @ 75)␤ at
../home/p6eval/niecza…
..pugs: OUTPUT«*** No such subroutine: "&say3"␤ at /tmp/PDlFmagzN9 line 1, column 1-5␤»
..rakudo d5ccf9: OUTPUT«Could not find sub &say3␤ in main program body at line 22:/tmp/T_AovOypHL␤»
poincare101 what the hell is that? 22:01
masak poincare101: it's a missing space between 'say' and '3'.
poincare101 perl6: say 3;
p6eval pugs, rakudo d5ccf9, niecza v3-80-g3cc93a7: OUTPUT«3␤»
poincare101 'perl6: say 3;' or rakudo:, niecza:, std:,
masak poincare101: digits are valid parts of identifiers, so Perl 6 tried to find the subroutine 'say3'.
poincare101 masak: I see.
22:03 tyatpi_ left 22:10 PZt joined
poincare101 I wish you guys would be done with Perl 6. I don't like python. everyone's dropping perl in favor of python and php. 22:11
donri :D
22:12 f00li5h left
masak poincare101: thanks for the encouragement. we'll try to finish quickly. ;) 22:12
donri ...five years later...
22:12 kaare_ left
masak poincare101: (oh, and please consider helping in one way or the other.) 22:13
donri "guys i implemented macros now"
poincare101 :) 22:14
masak: I'll try.
22:14 nerd6478 joined
tadzik poincare101: if someone's dropping anything for PHP there is no hope for him anyway 22:14
poincare101: are you a Perl 5 person? 22:15
22:16 nerd6478 left
masak tadzik: as much as I dislike PHP, I disagree. 22:17
tadzik: PHP is largely a badly written tool with insufficient community practices to prevent badly written code. but that doesn't mean there's not quality PHP code out there. 22:18
MediaWiki is one example.
at some point, MediaWiki was a Perl script, but it was rewritten in PHP. 22:19
...they seem to be doing pretty well... :)
donri Funny how a crappy language became to response to lack of nice web frameworks in existing languages
masak yeah.
PHP is easy to deploy.
donri And funny how the response to that was nice web frameworks in non-crappy languages. 22:20
22:20 mtk left
donri Python is dead-simple to deploy. :P 22:20
'epio upload' done :D
masak perhaps a nice language with a nice framework, being by definition two steps, will always somehow lose in ease-of-deployment.
until we ship our awesome Rakudo-for-web distribution, that is :)
tadzik masak: I don't say there is none 22:21
donri Perl 6 needs something like WSGI/PSGI I say
masak donri: agreed.
tadzik it has
masak well, it needs it at a massive scale.
donri What does it have?
I don't mean what I think Web.pm does
22:22 mj41 left
tadzik github.com/mberends/http-server-simple/ 22:22
I wrote a few apps for that
masak tadzik++
tadzik masak: Web.pm isn't a one, big monolith, but rather a set of tools, correct? 22:23
donri ok github.com/mberends/http-server-si...-small.pl6 22:24
but is that the best way to do it in p6?
masak tadzik: correct. it's an "incubator" for web-related projects. 22:25
donri: no.
donri i mean how about gather/take for example
masak what about it? :) 22:26
donri for lazy data without content-length perhaps?
or with content-length, for serving files/streams
tadzik masak: so it'd be doable to fix those modules, one at a time? 22:27
flussence_
.oO( PHP 5 is a usable language now, it's just a shame it took 7-8 years to get to that point... )
22:28 mtk joined, nymacro left
donri "or IO::Handle-like object" ok I guess that works for laziness? 22:29
masak tadzik: yes. I'm kinda hoping for that. I still believe some of them have merit. 22:31
notably, Hitomi and Squerl. 22:32
tadzik no tests for astaire? 22:34
donri no docs for web.pm? 22:36
22:36 whiteknight joined
donri found some pdfs 22:39
why does astaire use 'get path => block' rather than say, 'get path: block'? 22:40
tadzik how would that parse?
donri get(path, block) 22:41
hm but it'd end up path.get(block) right
poincare101 tadzik: (sorry, missed what you said) yeah, I'm a perl 5 person. Moved to Python because of crap OO though.
tadzik poincare101: there's a list of Most Wanted modules we want ported from Perl 5, so you might want to contribute there 22:42
github.com/perl6/misc/wiki/Get-Into-Perl6
poincare101 masak: I like ruby on rails. Its a very good web framework.
donri rakudo: sub foo { return 1, 2 }; say foo.WHAT 22:44
p6eval rakudo d5ccf9: OUTPUT«Parcel()␤»
donri can you return a Parcel for P6SGI?
sub app($env) { 200, {:content-type('text/plain')}, "OHAI" } 22:45
tadzik nope 22:47
donri how boring
tadzik It's supposed to be compatibile with Perl 5 22:48
donri o_O
tadzik but but, it'd be nice to return any Positional
patches welcome :)
masak poincare101: Rails has its good points. :)
Tene jcowan: You may also want to look into 'handles' for attributes. 22:54
22:54 tyatpi_ joined 23:00 silent_h_ joined
masak 'night, #perl6. 23:08
23:08 masak left 23:09 jcowan left 23:10 hercynium left 23:19 poincare101 left 23:31 risou left 23:41 Chillance left 23:49 ymasory_ left, ymasory_ joined 23:51 ymasory_ left 23:52 ymasory_ joined 23:59 awoodland left