Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2011-01-05

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:00 drake1 actually, ftp with a comment in the script like # $digest to authorize the executive
00:00 bluescreen joined #perl6
00:00 alester left #perl6
00:01 bluescreen is now known as Guest66567
00:02 smash left #perl6
00:03 drake1 digest=`cat secret script| sha256`\necho "# $digest" >> script or something like that
00:05 kulp joined #perl6
00:06 shi joined #perl6
00:07 masak left #perl6
00:07 pmurias joined #perl6
00:08 pmurias snarkyboojum: use a while loop, and have a bunch of calls in the loop to minimalise the looping overhead
00:08 kulp left #perl6
00:10 sorear pmurias: sub a{}; sub b{a;a}; sub c{b;b}; etc <- pure subcall benchmark, I've run it on niecza up to 2^27 in the past
00:11 sorear niecza: my $i = 0; while $i < 10 { say $i; $i++ }
00:11 p6eval niecza v1-82-gf7b008c: OUTPUT«0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤»
00:12 sorear TimToady: actually it's .say I haven't implemented
00:12 dukeleto left #perl6
00:12 TimToady I figgered that out eventually :)
00:12 dukeleto joined #perl6
00:13 c1sung joined #perl6
00:13 pmurias sorear: how fast is it compared to Perl 5?
00:14 sorear pmurias: it = sub calls?
00:14 yarp joined #perl6
00:14 pmurias yes
00:14 sorear it was about 5x faster... the switch to interpreted binding might have eroded that some
00:15 bacek__ left #perl6
00:17 pmurias sorear: what nam opcodes implement coroutines/continuations?
00:17 sorear pmurias: take, cotake, and startgather
00:17 pmurias cotake does what?
00:18 sorear resumes a continuation
00:18 pmurias and take?
00:18 sorear yields a value to the code that used cotake
00:19 sorear oh, rxend too
00:19 c1sung left #perl6
00:20 pmurias are coroutines enough or are full continuations required?
00:21 pmurias left #perl6
00:23 silug left #perl6
00:25 envi joined #perl6
00:26 rgrau joined #perl6
00:29 masonkramer left #perl6
00:30 masonkramer joined #perl6
00:36 am0c^ joined #perl6
00:36 arlinius| joined #perl6
00:51 felliott left #perl6
00:54 drake1 left #perl6
00:55 c1sung joined #perl6
00:57 felliott joined #perl6
01:02 QinGW joined #perl6
01:04 felliott left #perl6
01:05 roen joined #perl6
01:12 dalek dalek-poller: b72de5a | sorear++ | push.psgi:
01:12 dalek dalek-poller: Improve message after heuristic merge detection
01:12 dalek dalek-poller: review: https://github.com/sorear/dalek-poller/commit/b72de5a86a
01:12 dalek dalek-poller: 39e7ab0 | sorear++ | push.psgi:
01:12 dalek dalek-poller: Fix UTF8 handling in push mode.
01:12 dalek dalek-poller: review: https://github.com/sorear/dalek-poller/commit/39e7ab0826
01:18 Vlavv left #perl6
01:23 V15170R left #perl6
01:24 icwiener left #perl6
01:25 sorear looks like pmurias is responsible for 1/2 of the modules in Niecza :/
01:28 sorear also looks like I've passed the halfway point by LOC
01:28 sorear and 3/4 of the remaining code is in the one file I'm tackling next
01:31 Franek left #perl6
01:31 Vlavv joined #perl6
01:35 shi left #perl6
01:35 rgrau left #perl6
01:39 char00les joined #perl6
01:51 exoTek joined #perl6
01:54 lopaway is now known as lopnor
02:02 noganex left #perl6
02:02 kent\n If I want to call a coderef using a list of parameters, whats the way to do that? ( ie: like p5  $coderef->( @args ) )
02:04 flussence rakudo: my @a = 1,2,3; my $b = sub($c, $d) { ($c, $d).perl.say }; $b(|@a);
02:04 p6eval rakudo de98d1: OUTPUT«===SORRY!===␤Confused at line 22, near "my $b = su"␤»
02:04 flussence buh?
02:04 flussence rakudo: my @a = (1,2,3); my $b = sub($c, $d) { ($c, $d).perl.say }; $b(|@a);
02:04 p6eval rakudo de98d1: OUTPUT«===SORRY!===␤Confused at line 22, near "my $b = su"␤»
02:04 flussence rakudo: my @a = (1,2,3); my $b = sub ($c, $d) { ($c, $d).perl.say }; $b(|@a);
02:04 p6eval rakudo de98d1: OUTPUT«Too many positional parameters passed; got 3 but expected 2␤  in <anon> at line 2:/tmp/mGrSdalpPm␤  in main program body at line 22:/tmp/mGrSdalpPm␤»
02:04 kent\n flussence: you need a space after sub
02:04 flussence rakudo: my @a = (1,2,3); my $b = sub ($c, $d, @*) { ($c, $d).perl.say }; $b(|@a);
02:04 p6eval rakudo de98d1: OUTPUT«Nominal type check failed for parameter '@*'; expected Positional but got Int instead␤  in <anon> at line 2:/tmp/Xvf2H8TtYN␤  in main program body at line 22:/tmp/Xvf2H8TtYN␤»
02:04 * kent\n learned that the hard way.
02:05 flussence argh, I keep forgetting things like this
02:05 flussence rakudo: my @a = (1,2,3); my $b = sub ($c, $d, @*etc) { ($c, $d).perl.say }; $b(|@a);
02:05 p6eval rakudo de98d1: OUTPUT«Nominal type check failed for parameter '@*etc'; expected Positional but got Int instead␤  in <anon> at line 2:/tmp/g7yulLx9Os␤  in main program body at line 22:/tmp/g7yulLx9Os␤»
02:05 noganex joined #perl6
02:05 flussence I dunno about that error, but it's along those lines (with the right args)
02:06 kent\n rakudo: my @a = (1,2,3); my $b = sub ($c, $d, *@etc){ ($c, $d).perl.say }; $b(|@a);
02:06 p6eval rakudo de98d1: OUTPUT«(1, 2)␤»
02:06 kent\n *@ not @*
02:06 flussence I knew it was something obvious... /sigh
02:06 kent\n =p
02:07 kent\n the magic is |@a then I see.
02:07 flussence yeah, the | means "don't squish this into one variable"
02:09 lopnor is now known as lopaway
02:12 TimToady hmm, I can see @*foo is going to be a faq...
02:12 TimToady the | means cut a slit in the argument list here and slide these in :)
02:13 kent\n how do you make an anonymous hash? I cant see it being done anywhere and when I try it, I get a useless error with no line reference :(
02:13 TimToady show us the code
02:14 snarkyboojum someone with commit privileges needs to update the viv link on the homepage of perl6.org to http://github.com/perl6/std/raw/master/viv
02:14 TimToady rakudo: say { a => 32, b => 45 }.WHAT
02:14 p6eval rakudo de98d1: OUTPUT«Hash()␤»
02:14 kent\n hrm. strange.
02:14 TimToady rakudo: say %( a => 32, b => 45 ).WHAT
02:14 p6eval rakudo de98d1: OUTPUT«Hash()␤»
02:15 TimToady rakudo: say %( a => 32, b => 45 ).keys
02:15 p6eval rakudo de98d1: OUTPUT«ab␤»
02:15 jaldhar joined #perl6
02:15 kent\n rakudo:  { a => sub (){ 5; } }.perl
02:15 p6eval rakudo de98d1:  ( no output )
02:15 kent\n rakudo:  { a => sub (){ 5; } }.WHAT
02:15 p6eval rakudo de98d1:  ( no output )
02:16 kent\n TimToady: ^
02:16 TimToady rakudo: say { a => sub (){ 5; } }
02:16 p6eval rakudo de98d1: OUTPUT«a _block125␤␤»
02:16 TimToady rakudo: say { a => sub (){ 5; } }.WHAT
02:16 p6eval rakudo de98d1: OUTPUT«Hash()␤»
02:16 TimToady rakudo: say { a => -> { 5; } }.WHAT
02:16 kent\n oh. I was relying on perlbot's deparseing to help me -_-,
02:16 p6eval rakudo de98d1: OUTPUT«Hash()␤»
02:17 TimToady rakudo can't deparse blocks yet
02:18 TimToady rakudo: say { a => -> { 5; } }.<a>.()
02:18 p6eval rakudo de98d1: OUTPUT«5␤»
02:19 felliott joined #perl6
02:20 lopaway is now known as lopnor
02:24 yarp left #perl6
02:27 kent\n strange. in the act of trying to adjust my broken code to a minimal broken subset, I somehow squashed what was causing the bug...
02:30 flussence that's happened to me. Good reason to keep things simple in the first place :)
02:31 impious left #perl6
02:32 silug joined #perl6
02:33 kent\n too few positional arguments: 2 passed, 3 (or more) expected
02:33 kent\n <-- I really have no idea what causes this, because when I try simplify what I have to make pasteable code, the problem goes away, or returns a different error
02:34 cotto_work kent\n: are you using Parrot master?
02:34 Chillance joined #perl6
02:34 kent\n no, I'm stuck on octobers release still, lazy.
02:34 cotto_work ok
02:35 kent\n for instance, one thing that causes that error is  method foo { [ $self ] }  , when I use the same code on the cli, it returns something useful because $self doesn't exist.
02:36 impious joined #perl6
02:36 impious left #perl6
02:39 mtk left #perl6
02:42 kent\n http://paste.scsys.co.uk/77753  # replicates issue
02:43 colomon Should be self instead of $self, maybe?
02:43 kent\n yes, but the issue is more "it doesn't give the right error"
02:44 kent\n strangely, take out all the \n,s put it into perl6 -e , and it works
02:44 kent\n ( ie: gives a useful error )
02:44 colomon ah, yes.
02:46 colomon kent\n: that poor error message was fixed a couple of months back, after I complained about it.  :)
02:46 colomon ===SORRY!===
02:46 colomon Symbol '$self' not predeclared in subdir (frip.pl:7)
02:46 colomon is the current message
02:46 silug left #perl6
02:47 colomon the error message you got was actually something going wrong when trying to print out the real error message.
02:47 mtk joined #perl6
02:47 kent\n ah!. Awesome.
02:52 molaf_ joined #perl6
02:52 colomon You were absolutely right -- it was really, really annoying.
02:54 kent\n having a few dozen errors simpy die with the equivalent of "Hurp, something went wrong, shoot somebody!" is not at all useful ;)
02:54 cdarroch left #perl6
02:55 yarp joined #perl6
02:55 molaf left #perl6
02:57 kanishka1 left #perl6
02:58 kent\n colomon: I'm assuming thats a rakudo error, not parrot?
02:58 colomon yes
03:00 * kent\n files a bump request for gentoo to update their rakudo version
03:06 exoTek_ joined #perl6
03:08 exoTek left #perl6
03:08 exoTek_ is now known as exoTek
03:10 flussence less hassle to just ignore portage and compile manually, imo: gist.github.com/738980
03:12 char00les left #perl6
03:14 kanishka joined #perl6
03:15 kent\n I'm fine with diying it up, but I still file bump reqs ;)
03:16 * kent\n has his own scm-ebuild somewhere as well he has used occasionally
03:16 sorear you should also get another implementation
03:16 sorear usually if one gives a useless error message, another won't
03:18 exoTek left #perl6
03:18 colomon sorear++
03:18 flussence does niecza name the executable "perl6", or just rakudo?
03:18 sorear niecza doesn't
03:18 sorear p6eval has two versions of Rakudo installed
03:19 Guest66567 left #perl6
03:20 flussence Gentoo's rakudo ebuild is pretty shoddy for that reason - it should install to /usr/bin/rakudo and manage it with an eselect-perl6 module as it does for other multiple-implementation languages.
03:21 kent\n flussence: I'll suggest that to the maintainers, but for now it seems pointless as there are no alternatives in tree ( at least, not that I know of )
03:22 flussence I'd imagine that changing in the next few months :)
03:23 kent\n also, are the implementations purely switchable? ie: can you realistically just re-symlink it and not require all the dendents to change or be dual-built ?
03:24 kent\n ( ie: for this reason we don't have a switchable perl, because the maintenance overhead is atm overwhelming )
03:24 flussence that's the idea. write to the spec, not to one runtime; like HTML
03:25 kent\n but what about things that will resort to needing PMC access to do their job?
03:26 kent\n ( ie: the problem with switchable perls is mostly a problem with the C-level bindings )
03:26 flussence those should probably be using "#!/usr/bin/env rakudo" eventually
03:27 flussence as for the modules and stuff, each runtime can have its own module path for that sort of thing
03:28 kent\n yes, but that is the problem. Unless the modules have a way of installing modules for all existing runtimes, regardless of which runtimes are installed, we have to do some lovely jiggerpokery and run the install/compile phase for each and every runtime
03:29 VXZ Does p6 has anything like p5's XS that requires binary compatibility?
03:29 VXZ s/has/have/
03:29 kent\n ie: multiple ( slotted ) system perls are /doable/, but its an awful awful load of work.
03:31 [particle] flussence: better to get support in for alternatives before there are others and they won't work with and old rakudo.
03:32 [particle] VXZ: various perl6 implementations have ways of binding to c libs
03:34 VXZ [particle]: So, if a non-pure-perl module is written for one implimentation, it can't work in another?
03:34 VXZ Is there some way this can be added to the spec, to fix this problem?
03:34 [particle] that's almost certainly the case.
03:35 flussence well... putting inline PIR in a perl6 file will make it about as portable as inline gcc asm in C :)
03:35 [particle] just like icc-built and gcc-built c binaries won't always work together
03:37 TimToady VXZ: how do you propose to fix it, other than maximizing the amount that can be written in pure perl?
03:38 TimToady serious question
03:38 VXZ I'm thinking about it...
03:38 * [particle] thunks about it
03:39 * TimToady calls [particle] by name
03:40 diakopter careful, you'll wave him away
03:40 * [particle] makes a blatant reference
03:40 TimToady copycat
03:41 [particle] copycat
03:41 TimToady you can say that again
03:41 VXZ I guess far more qualified people than me have probably already thought about this, huh?
03:41 diakopter don't point fingers, sez ceiling cat
03:42 TimToady VXZ: we can at least find ways to maximize the amount that can be shared, to the extent that a module is mixed perl and non-perl
03:42 flussence as far as avoiding implementation-specific code codes, I think NativeCall's already the best thing since sliced @bread
03:43 flussence s/codes/goes
03:43 TimToady we can share the perl part and do the equivalant of #ifdef for the rest
03:43 TimToady so at least the non-shareable bits are near each other so people have some hope of keeping them in sync
03:44 TimToady and so that people can see the common factors, and perhaps pull out more of them into the perl implementation
03:44 [particle] where that makes sense (perhaps for portability instead of speed)
03:44 VXZ What do you do when you need to write a module that runs as fast as C code does, though?
03:45 diakopter improve the optimizer[s] ;)
03:45 TimToady there're always tradeoffs
03:45 kent\n VXZ: Buy a supercomputer.
03:45 TimToady but hopefully, if you supply as much type info to Perl as you would to C, it can be almost as fast
03:45 VXZ Like...PDL...do they all of a sudden have to maintain a separate release for each p6 implimentation?
03:45 diakopter improve the optimizers (including the human ones), and use p6 native types
03:46 TimToady PDL is more or less built-in to Perl 6
03:46 TimToady see S09
03:46 [particle] if it's doing fancy dynamic stuff it C, it'll sure take a while to write... like writing a vm
03:46 VXZ Yeah, I know.  Bad example.  Vut you know what I mean.  How about SDL?
03:46 VXZ s/Vut/But/
03:47 [particle] Ve guessed ;)
03:47 * diakopter can say to use primitive types b/c ... *I* can
03:47 kthakore VXZ: SDL is good
03:47 drbean left #perl6
03:48 VXZ kthakore: I agree.
03:48 [particle] java solved this by writing an OS in java
03:48 [particle] it's lattes all the way down
03:48 kthakore I already made a script in perl6 that works with SDL
03:49 drbean joined #perl6
03:49 TimToady but the bindings are parrot bindings, ne?
03:51 VXZ Good to know you're supporting p6, kthakore.  SDL is kick-ass.
03:52 kthakore TimToady: no using the module https://gist.github.com/744192
03:52 kthakore VXZ: not yet but some time in the future
03:53 kthakore TimToady: I will be trying to do parrot bindings but after I get it workign with NativeCall
03:54 TimToady well, but zavolaj is parroty currently
03:55 TimToady but yeah, NativeCall may work across platforms someday
03:56 plobsing zavolaj (or something like it) is what most people *should* be using to do native library bindings on parrot.
03:56 TimToady to the the extent apis defined by .so, .dll, .jar, etc, can be reconciled
03:57 plobsing parrot's NCI aims to make things possible, not necessarily pretty
03:58 VXZ Will p6 be able to go fast enough, if I write my code correctly, to not need something like p5's xs to get similar speeds?  How fast do we think it could go in the end?
03:58 flussence as fast as GCC-compiled code :)
03:58 flussence once that project gets going, anyway.
03:58 [particle] it's impossible to know without doing
03:59 [particle] will ruby go as fast as p5?
03:59 TimToady but the design is such that you can get there someday, with enouth type annotation, we hope
03:59 [particle] javascript? tcl?
03:59 kthakore VXZ: for better games you will need the game loop to be tighter then even whaat p5 can do now.
04:00 kthakore so writing critical sections in C/C++ should always be considered
04:01 TimToady or in the C/C++ subset of Perl 6  :P
04:01 * [particle] remembers writing critical sections in assembly
04:04 * diakopter sets up perlesque on p6eval
04:04 VXZ So the theory is, we'll be able to define things (vars, functions, whatever) in p6, so strictly that they can be completely translated into C in the compilation phase?
04:05 [particle] so strictly that they can be implemented natively during compilation
04:05 diakopter if your optimizer is good enough, effectively, maybe.
04:05 VXZ s/ c / machine code / # can't think today
04:07 kthakore TimToady: would that work?
04:07 diakopter VXZ: a lot of work remains on the optimizers in every implementation, although niecza has a particular focus on that aspect.
04:10 TimToady kthakore: probably depends on how much your tight loop depends on low-level references/pointers and intimate knowledge of the machine code
04:10 TimToady and other "unmanaged" concepts
04:10 diakopter oooo
04:10 TimToady but Perl 6 is designed to be the mother of all languages, almost literally
04:11 diakopter like Babel, only higher
04:11 TimToady so with enough declarations you can turn it into any other language
04:11 TimToady I don't mind if my tower reaches to heaven--I'm already expected there.  :)
04:12 diakopter apparently there's a language named nimrod
04:12 saaki sign me up
04:13 satyavvd joined #perl6
04:13 TimToady sign here -> .............
04:14 snarkyboojum or the ultimate nam-shub :D
04:18 lopnor is now known as lopaway
04:18 kthakore haha
04:19 kthakore TimToady: well my concern is being able to manage low level databanks (simple structs) with high level p6 scripts
04:19 kthakore if this can be done
04:19 kthakore with out too much of a overhead
04:19 TimToady simple structs should be pretty easy
04:19 kthakore then we don't need C++
04:20 kthakore game structs are usually very simple
04:20 kthakore the hard part is getting them ready to render in a timely fashion
04:21 TimToady see S09:129
04:24 * diakopter waits for git clone of fission-edge mono to build on p6eval box
04:24 kthakore ok
04:26 Su-Shee left #perl6
04:27 redicaps joined #perl6
04:28 Su-Shee joined #perl6
04:29 TimToady hmm, not sure the verbiage about compact structs being value types is accurate; probably depends on whether there are mutators or not
04:29 VXZ Cool, so a class containing only low level types can get optimized down to just a struct...
04:29 diakopter TimToady: which way does it depend
04:29 TimToady a value type can't have mutators
04:30 TimToady so for a normal C struct that you can change the elements of, you wouldn't want it considered a value type
04:43 TimToady crumb, have to set up a new public key for github due to the disk fiasco...
04:52 [particle] 12345 <-- here, i made you one!
04:55 diakopter whee; perlesque runs just fine
04:55 diakopter (on mono trunk)
04:55 diakopter (I'd been using .net 4.0)
05:02 dalek specs: 9259016 | larry++ | S09-data.pod:
05:02 dalek specs: structs come as either values or objects
05:02 dalek specs:
05:02 dalek specs: The treatement of a compact struct as a value or as an
05:02 dalek specs: object depends on whether there are mutators.
05:02 dalek specs: review: https://github.com/perl6/specs/commit/92590165ab
05:03 TimToady I guess it worked
05:13 satyavvd left #perl6
05:16 sorear diakopter: mono 2.8.0 supports .net 4 features
05:17 sorear the main reason to use trunk is the garbage collector improvements
05:20 VXZ Btw, thanks for answering all my p6 questions, guys...
05:21 mj41_ joined #perl6
05:22 [particle] left #perl6
05:24 dalek left #perl6
05:24 mj41 left #perl6
05:24 mj41_ is now known as mj41
05:24 dalek joined #perl6
05:27 nat2610_ left #perl6
05:31 * TimToady wishes someone would answer all my Perl 6 questions...
05:32 sorear heh.
05:32 lue joined #perl6
05:35 lue hello fellow denizebras o/
05:35 nat2610_ joined #perl6
05:36 snarkyboojum helue
05:37 TimToady lihue, hi
05:43 cotto jnthn, ping
05:45 TimToady which I own a piece of: http://maps.google.com/maps?client=ubuntu&amp;channel=fs&amp;q=lihue,+hi&amp;oe=utf-8&amp;um=1&amp;ie=UTF-8&amp;hq=&amp;hnear=Lihue,+HI&amp;gl=us&amp;ei=xQMkTYWQKI2CsQPTupinDw&amp;sa=X&amp;oi=geocode_result&amp;ct=title&amp;resnum=1&amp;ved=0CBoQ8gEwAA
05:48 [particle] joined #perl6
05:48 diakopter sorear: right, of course.
05:48 diakopter sorear: but I couldn't find a mono 2.8 on that box
05:49 diakopter so I built one
05:49 lue oh, you and your clever punnery, TIMTOWTDI :)
05:49 rlinuxguy2 joined #perl6
05:49 rlinuxguy2 whats this channel about
05:51 diakopter sorta like its name
05:52 TimToady rlinuxguy2: what would you like to know about Perl 6?
05:53 rlinuxguy2 i just googled, why make a new language with the same name as another only with a future edition
05:54 rlinuxguy2 what happens when the real perl goes version 6?
05:54 rlinuxguy2 seems kinda messed up to me
05:54 TimToady then it's Christmas
05:54 rlinuxguy2 when I say goes version 6
05:54 rlinuxguy2 I mean their own edition
05:54 TimToady what exactly do you mean by "real" perl?  All old versions of perl are still "real"
05:55 diakopter Perl 6's older sibling won't ever increment to version 6
05:55 rlinuxguy2 how do you know
05:55 rlinuxguy2 and maybe im misunderstanding
05:55 rlinuxguy2 Perl 5 and Perl 6 are two languages in the Perl family, but of different lineages
05:55 TimToady because they're not insane, at least not that insane
05:55 sjn lim 5->6 Perl
05:56 TimToady they never incremented System V either...
05:56 rlinuxguy2 why would them continuing the version numbering to 6 make them insane
05:56 TimToady because Perl 6 already means something else
05:56 TimToady it would be culturally unlikely
05:57 TimToady it would make as much sense for them to rename it Windows 7
05:57 rlinuxguy2 kind of messed up IMO, they had the perl train going
05:57 TimToady I'm the perl train.  :)
05:57 rlinuxguy2 is like me making an os called android 8
05:57 rlinuxguy2 while they're on android 3
05:57 TimToady and the perl train was already slowing down ten years ago
05:58 sjn rlinuxguy2: don't worry, the Perl 6 idea has been around for a few years now, noone's going to make trouble with version numbers like that ;)
05:58 rlinuxguy2 ok, still seems abit confusing, but I guess because i'm out of the loop
05:58 TimToady it's basically a done decision, for good or ill, so we'll make the best of it
05:58 rlinuxguy2 what is the name of the version after 5 you think they'll go with?
05:59 sjn and if they do, we can always say "cool! does your Perl 6 work with the official test suite?" :)
05:59 rlinuxguy2 to avoid confusion with your project
05:59 TimToady think of Perl as more of design philosophy, and the version a turn of the design crank
05:59 sorear rlinuxguy2: Perl 6 game first
05:59 sorear rlinuxguy2: Perl 6 was always supposed to be the next version of Perl
05:59 diakopter rlinuxguy2: 5.6, 5.8, 5.10, 5.12, 5.14 and so on
05:59 TimToady there's always 5.14, 5.15, 5.16, 5.17--they aren't going to run out of versions any time soon
06:00 rlinuxguy2 timtoady no offense but companies and users that are gonna use a scripting language are going to go with the "official" ones
06:00 sorear rlinuxguy2: the sister languages thing came about when some people revived Perl 5 independantly of our attempts to make a successor
06:00 rlinuxguy2 over grass roots versions
06:00 diakopter hee
06:00 rlinuxguy2 I thought the minor numbers were used for minor updates
06:00 TimToady well, depends on which grass gets more fertilizer and is healthier
06:01 TimToady it's all relative
06:01 rlinuxguy2 the official perl team has more to lose and bigger players using their version so they won't radically change anything
06:01 rlinuxguy2 you guys could change whatever you want anytime you want, breaking things
06:01 sorear rlinuxguy2: I think we are the official Perl team
06:02 rlinuxguy2 I don't know, i've bad mixed experiences with public domain projects, where people contribute as a hobby
06:02 sorear rlinuxguy2: insofar as we have Larry, and #p5p doesn't
06:02 sjn rlinuxguy2: that's the whole point with Perl 6 (well, not anytime, but to allow some breakage in order to allow cooler stuff to happen)
06:02 * diakopter summons Larry
06:02 diakopter or should I say subpoenas
06:02 rlinuxguy2 oh you have larry himself on your guys etam?
06:03 rlinuxguy2 team
06:03 * sjn giggles
06:03 * cotto waits for it
06:03 lue .oO(I would think Larry was involved in Perl 5 as well)
06:03 * TimToady looks around and doesn't see Larry...
06:03 snarkyboojum the big L
06:03 rlinuxguy2 lue I thought perl 5 was made by the official site people
06:03 rlinuxguy2 whoever they are
06:03 sjn 7whois TimToady
06:03 rlinuxguy2 aren't you guys a different group?
06:03 sorear rlinuxguy2: understand that in 2002ish Perl (5) was quite stagnant; we needed either an evolution or a revolution
06:04 sorear rlinuxguy2: as it happened, both started in parallel
06:04 TimToady or both :)
06:04 TimToady eventually, Perl 6 will supersede Perl 5, but we're talking a decade or two
06:05 am0c^ left #perl6
06:05 TimToady Perl 6 is designed for the looooong teeeeeeeeerm
06:05 * sjn is quite happy Perl 6 isn't a rush job
06:05 [particle] are you sure that what you perceive as long term isn't two terms in a row?
06:07 diakopter std: looooong: teeeeeeeeerm: ;
06:07 p6eval std 625303c: OUTPUT«ok 00:01 117m␤»
06:07 rlinuxguy2 sounds like you guys are taking the .net route
06:07 diakopter well...
06:07 TimToady that's one of our routes
06:07 rlinuxguy2 The vision for Perl 6 is more than simply a rewrite of Perl 5. By separating the parsing from the compilation and the runtime, we're opening the doors for multiple languages to cooperate.
06:07 TimToady it's more like a flooding algorithm
06:08 lue TimToady: Will you wait until P5 is stagnant again, or eventually say "That's it, time for Perl 6!" and invoke whichever rule applies?
06:08 rlinuxguy2 You'll be able to write your program in Perl 6, Perl 5, TCL, Python, or any other language that there's a parser written for. Interchangable runtime engines let you interpret your bytecode or convert it to something else
06:08 TimToady you're confusing the parrot vision with the perl6 vision, like we did at the beginning
06:09 rlinuxguy2 yeah it's all confusing
06:09 TimToady parrot's vision is to run many language on one runtime; perl6's vision is to run the same language on many different runtimes
06:09 TimToady (but also be mutable into any other language)
06:09 TimToady so the two visions may re-unify someday
06:10 rlinuxguy2 is either matured yet?
06:10 [particle] cerberus chases his tail
06:10 rlinuxguy2 or would you trust either in important apps?
06:10 cotto they're starting to do so already.  The Parrot vision for Lorito is to have many backends.
06:10 TimToady well, I've written a real app in Perl 6
06:10 TimToady so have other people
06:11 [particle] there is more than one compiler written in perl 6
06:11 TimToady so yes, I've trusted rakudo that much
06:11 TimToady there are 253 running examples of Perl 6 on rosettacode, see http://rosettacode.org/wiki/Category:Perl_6
06:12 TimToady so we're largely in the fine-tuning stages
06:13 sjn rlinuxguy2: if you're asking about "mature" in the sense "regular" people would claim (not language designers and hackers, but regular Joes that just want to do their job then go home), then I'd claim the answer to your question is "it depends" :)
06:13 TimToady that's on rakudo; the other implementations are not quite to the same point, but showing promise
06:14 TimToady it's definitely getting well beyond the toy stage
06:14 TimToady still fun though :)
06:15 sjn rlinuxguy2: that kind of matureness is rather vaguely defined, imo. it's like asking "do you think Esperanto is a mature language?"
06:15 sjn it all depends on what it's used for
06:15 coldhead maturity
06:15 TimToady might be closer to Klingon at the moment...
06:15 sjn and the answer changes as time goes on
06:17 TimToady coldhead: matureness is a perfectly good word, especially if you're wanting to mean what people usually mean by "maturity"
06:17 TimToady s/mean/not mean/
06:18 coldhead i was demonstrating immatureness, i'm sorry
06:18 TimToady :)
06:18 TimToady please be more maturenesslessnessless in the future :)
06:22 lue Right now, I see Perl 6 as like a natural language. The only time it stops evolving is when no-one uses it anymore.
06:23 sjn that would be a "stable" language :)
06:23 PerlJam lue: how is that different from any other language? :)
06:24 TimToady we've tried to build in more productive features, like -less and -ness
06:24 lue Last time I checked, assembler doesn't evolve without changing the CPU (in the real world, changing the people who process it. Obviously, there isn't likely to be a natural language like assembler)
06:24 sorear there is an inherent linguistic ambiguity between "Perl 6" and "Perl 6 as implemented by Rakudo in Jan 2011"
06:25 sorear "assembler", "assembler as implemented by the P4 Northwood"
06:25 sorear "English", "English as spoken by sorear in 2010"
06:25 sorear "Homo", "sorear"
06:25 TimToady we are 2010less now
06:25 sorear the first of all pairs can evolve, the second cannot
06:26 PerlJam sorear: you can't evolve?
06:26 [particle] not the him in 2010
06:26 sorear there are also questions of where to draw the line
06:26 PerlJam oh, you only mean in the genetic sense I guess.
06:26 lue "English as spoken by sorear in 2010" had expired 2011-01-01T00:00:00Z
06:26 sorear C++ is obviously a memetic descendant of C, but those who ask "does C evolve" often ignore C++
06:27 sorear this is much like saying that H. erectus cannot evolve because its genetic descendants are called something else
06:27 [particle] long long
06:27 sorear tl;dr - your question sucks.
06:28 TimToady hugme: hug rlinuxguy2
06:28 sorear hugme is absent
06:28 TimToady ENOHUGS
06:28 PerlJam TimToady: you're free to hug sans bot :)
06:29 * TimToady hugs everyone, not necessarily in that order
06:29 TimToady what's the proper package to install to get readline support in the repl?
06:30 sorear libreadline-dev
06:30 sorear then reconfigure and recompile Parrot
06:30 TimToady thanks
06:42 sorear niecza: say 0b1010101
06:42 p6eval niecza v1-82-gf7b008c: OUTPUT«[31m===[0mSORRY![31m===[0m␤Action method binint not yet implemented at /home/p6eval/niecza/src/Niecza/Actions.pm line 55.␤Attribute (value) does not pass the type constraint because: Validation failed for 'Num' with value undef at
06:42 p6eval ../home/p6eval/niecza/src/Niecza/Actions.pm line …
06:43 diakopter niecza: say 0o1010101
06:43 p6eval niecza v1-82-gf7b008c: OUTPUT«266305␤»
06:43 diakopter cool
06:43 sorear niecza: "foo" ~~ /(.)*/; say ~@0
06:44 p6eval niecza v1-82-gf7b008c: OUTPUT«f o o␤»
06:44 sorear niecza: "foo" ~~ /(.)*/; say +[ @0 ]
06:44 p6eval niecza v1-82-gf7b008c: OUTPUT«1␤»
06:44 rlinuxguy2 left #perl6
06:44 cjk101010 joined #perl6
06:46 sorear guess I'll be using @$<foo>
06:46 TimToady I suspect +[] is always 1, since [] behaves like $
06:47 TimToady rakudo: "foo" ~~ /(.)*/; say +[ @0 ]
06:47 p6eval rakudo de98d1: OUTPUT«1␤»
06:47 TimToady rakudo: say +[1,2,3]
06:47 p6eval rakudo de98d1: OUTPUT«3␤»
06:47 TimToady hmm
06:48 TimToady well, maybe not
06:49 TimToady rakudo: my @x = 1,2,3; say +[ @x ];
06:49 p6eval rakudo de98d1: OUTPUT«3␤»
06:50 diakopter rakudo: my @x = 1,2,3; say +|[ @x ];
06:50 p6eval rakudo de98d1: OUTPUT«maximum recursion depth exceeded␤  in 'Cool::Numeric' at line 1845:CORE.setting␤  in 'Cool::Numeric' at line 1845:CORE.setting␤  in 'Cool::Num' at line 7380:CORE.setting␤  in 'Cool::Numeric' at line 1845:CORE.setting␤  in 'Cool::Numeric' at line 1845:CORE.setting␤  in
06:50 p6eval ..'Cool::Num' a…
06:50 TimToady rakudo: "foo" ~~ /(.)*/; say +[ @$0 ]
06:50 p6eval rakudo de98d1: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at line 22, near "@$0 ]"␤»
06:50 TimToady phooey on rakudo
06:50 TimToady rakudo: "foo" ~~ /(.)*/; say +[ @($0) ]
06:50 p6eval rakudo de98d1: OUTPUT«3␤»
06:51 TimToady rakudo: "foo" ~~ /(.)*/; say +@($0)
06:51 p6eval rakudo de98d1: OUTPUT«3␤»
06:52 sorear perl6: say 1 / 0
06:52 p6eval pugs: OUTPUT«*** Illegal division by zero␤    at /tmp/CcUpdwrh1P line 1, column 5 - line 2, column 1␤»
06:52 p6eval ..niecza v1-82-gf7b008c: OUTPUT«Infinity␤»
06:52 p6eval ..rakudo de98d1: OUTPUT«Inf␤»
06:52 sorear rakudo: say (1 / 0).WHAT
06:53 p6eval rakudo de98d1: OUTPUT«Rat()␤»
06:53 diakopter evalbot control restart
06:53 p6eval left #perl6
06:54 wtw joined #perl6
06:54 * diakopter crosses keyboard keys
06:54 diakopter zugh
06:54 p6eval joined #perl6
06:54 TimToady zugh seems to be the magic word
06:55 TimToady kind of a cross between xyzzy and plugh
06:56 coldhead yo ChanServ can I get ops?
06:58 sorear check the list
06:58 sorear /msg chanserv access #perl6 list
06:59 coldhead ooh neat thanks
06:59 coldhead i'll just PM ChanServ about getting added to that list
06:59 sorear chanserv is a bot.
07:00 diakopter perlesque: my $t = Diagnostics::Stopwatch.StartNew();sub say(object $a-->int) { Console.WriteLine($a) }; loop (my $b=1;$b<5;$b=$b+1) {loop (my $a=1;$a<10000000*$b;$a=$a+1) {}; say($t.Elapsed) }
07:00 p6eval perlesque: OUTPUT«00:00:00.0431612␤00:00:00.1401656␤00:00:00.2813894␤00:00:00.4718993␤»
07:00 TimToady do you need ops for anything in particular?
07:00 coldhead i just think it would be a nice gesture to give them to me
07:01 diakopter it actually wouldn't; there's nothing to be done with them
07:01 coldhead you can banish heretics!
07:02 sorear we hug heretics here.
07:03 coldhead i could give heretics ops!
07:03 lopaway is now known as lopnor
07:03 sorear I get the feeling you haven't read the freenode manifesto
07:04 TimToady we'd rather give away Perl
07:05 TimToady long term, Perl is much more discordian than ops
07:06 coldhead respekt
07:07 sorear niecza: "" ~~ / <?> /; say ?$/
07:07 p6eval niecza v1-82-gf7b008c: OUTPUT«Bool::True␤»
07:07 diakopter sock it to me
07:07 TimToady it's not sock-it-to-me time
07:08 diakopter but it is Miller time
07:08 vladikoff joined #perl6
07:08 TimToady sock-it-to-me time is before most of yous was borned
07:09 diakopter oh, I meant to type "sokk it to me"
07:09 diakopter I punfaild
07:09 diakopter from respekt
07:09 vladikoff coldhead, it's my first day using Perl6 and i love it!
07:11 diakopter perlesque: my $t = Diagnostics::Stopwatch.StartNew();sub say(object $a-->int) { Console.WriteLine($a) }; loop (my $a=1;$a<100000000;$a=$a+1) {}; say($t.Elapsed)
07:11 p6eval perlesque: OUTPUT«00:00:00.4518848␤»
07:12 diakopter perlesque: my $t = Diagnostics::Stopwatch.StartNew();sub say(object $a-->int) { Console.WriteLine($a) }; loop (my int $a=1;$a<100000000;$a=$a+1) {}; say($t.Elapsed) # explicitly marking *int*, to be kosher
07:12 p6eval perlesque: OUTPUT«00:00:00.4511890␤»
07:13 sjn vladikoff++ # For trying out Perl 6 :)
07:18 diakopter perlesque: my $t = Diagnostics::Stopwatch.StartNew();sub say(object $a-->int) { Console.WriteLine($a) }; my int $a=1; sub foo (-->int) { if ($a < 1000000) { $a=$a+1; foo(); } }; foo(); say($t.Elapsed);
07:18 p6eval perlesque: OUTPUT«00:00:02.1654583␤»
07:18 diakopter 1 million recursions
07:18 diakopter perlesque: my $t = Diagnostics::Stopwatch.StartNew();sub say(object $a-->int) { Console.WriteLine($a) }; my int $a=1; sub foo (-->int) { if ($a < 1000000) { $a=$a+1; foo(); } }; foo(); say($t.Elapsed);
07:18 p6eval perlesque: OUTPUT«00:00:01.7616573␤»
07:18 TimToady is it doing tr optimization?
07:18 diakopter no
07:19 diakopter it's extremely pessimized
07:19 temp01 joined #perl6
07:19 diakopter it's setting return slot values as a field in each frame object on every return
07:19 temp01 found it
07:19 diakopter ewww, I know
07:19 vladikoff temp01, hi !
07:21 sorear "tr" optimizations?
07:21 TimToady tail recursion
07:21 sorear are vladikoff, temp01, and coldhead affiliated?
07:21 sorear ah
07:21 sorear vladikoff: temp01: welcome!!
07:21 * diakopter wonders how niecza does on such a loop
07:22 sorear diakopter: shouldn't be too bad
07:22 sorear <100MB allocations, <5s
07:22 diakopter specifically, does the heftiness of the Ints outweigh the (probably) faster runloop
07:22 vladikoff sorear, we are the same person
07:23 sorear oh it'll definitely be slower.
07:23 diakopter the runloop? or the additions/comparisons?
07:24 sorear the additions/comparisons
07:24 sorear and maybe the recursions too
07:24 sorear niecza frames are quite fat (>20 words), they're designed to be reused
07:24 diakopter ah, oh yeah, I remember now
07:25 diakopter I remember you got something like a 30% speedup from making your own factory/cache
07:25 sorear also niecza will be doing all the math in FP, though the effect of that is probably insignificant
07:26 diakopter is it bad that I can't remember whether BigInteger is in this perlesque? ;)
07:26 diakopter ah, no it's not (yet)
07:26 diakopter oh wait, mono has it
07:27 diakopter perlesque: my $t = Diagnostics::Stopwatch.StartNew();sub say(object $a-->int) { Console.WriteLine($a) }; my int $a=1; sub foo (-->int) { if ($a < 1000) { eval '$a=$a+1; foo()' } }; foo(); say($t.Elapsed);
07:28 p6eval perlesque: OUTPUT«00:00:04.0556159␤»
07:28 diakopter har
07:28 diakopter that's not too great
07:29 diakopter but, note that the nested evals have access to each's full lexical scope descendantry
07:29 diakopter argh
07:29 diakopter ancestry
07:30 * diakopter wonders about golfing the man-or-boy again for irc
07:34 diakopter evalbot control restart
07:34 p6eval left #perl6
07:35 p6eval joined #perl6
07:35 diakopter # remove extraneous/old entries
07:35 diakopter moritz_: sry about the non-committed changes to evalbot.pl :(
07:35 lue goodnight #perl6 o/
07:36 diakopter nite
07:36 sorear some form of time or now will be available in post-rewrite niecza
07:37 diakopter sorear: will you add the ability to call out to clr builtin libraries?
07:37 sorear diakopter: yes, once I figure out the best way to handle overloading and newslot
07:38 diakopter as you see, perlesque just has them all "preloaded".  who knows how bad^Wwrong that is
07:39 diakopter obviously there are some name conflicts with Perl 6 types
07:39 sorear How many Perl 6 types start with Microsoft:: or System::?
07:39 diakopter heh
07:40 diakopter well, the classname resolution thingie in perlesque tries those prefixes as fallbacks
07:40 diakopter as well as others
07:40 diakopter obviously user types take precendence
07:40 diakopter precedence
07:41 diakopter decommute&
07:42 kaare joined #perl6
07:42 kaare is now known as Guest32863
07:49 dalek niecza: 516fcee | sorear++ | / (6 files):
07:49 dalek niecza: [v6] Start on NieczaActions translation
07:49 dalek niecza: review: https://github.com/sorear/niecza/commit/516fcee939
07:50 sorear sleep&
07:50 roobie| joined #perl6
07:52 cotto I get this with the latest parrot: http://nopaste.snit.ch/27567 .  Should parrot be blamed for those failures?
07:53 lopnor is now known as lopaway
07:58 colomon cotto: do you have the latest t/spec?  I pushed a patch to t/spec/integration/advent2009-day18.t a day or two ago...
07:58 colomon (not against the latest parrot, so it could be something breaking again under that.)
07:58 cotto it updated itself when I ran make spectest_regression
07:59 cotto I started that a couple hours ago, +/-
07:59 colomon okay, so that's not it.
08:02 cotto it looks like plobsing++ has at least taken care of the bulk of the breakage
08:04 cotto that test dies with "too many named arguments: 1 passed, 0 used".  I don't know if that's a Rakudo think but it looks a lot like an error related to a recent Parrot change.
08:07 satyavvd joined #perl6
08:15 moritz_ good morning
08:15 tadzik good morning
08:15 colomon o/
08:20 justatheory left #perl6
08:20 M_o_C joined #perl6
08:23 snearch joined #perl6
08:26 clkao 5/win 26
08:29 snearch left #perl6
08:29 snearch joined #perl6
08:32 pnu left #perl6
08:34 pnu joined #perl6
08:37 daxim joined #perl6
08:42 kensanata joined #perl6
08:47 colomon err... how to return two arrays from a function?  I feel like I'm forgetting something really obvious...
08:48 daxim perl6:  sub foo { my @o = 1,2,3; my @p = 4,5,6; return @o, @p }; say foo.perl  # let's try the obvious
08:48 p6eval pugs, rakudo de98d1: OUTPUT«([1, 2, 3], [4, 5, 6])␤»
08:48 p6eval ..niecza v1-83-g516fcee: OUTPUT«Unhandled exception: Excess arguments to SAFE return, used 1 of 2 positionals␤  at /home/p6eval/niecza/lib/SAFE.setting line 0 (SAFE return @ 0)␤  at (eval) line 1 (MAIN foo @ 8)␤  at (eval) line 1 (MAIN mainline @ 1)␤  at /home/p6eval/niecza/lib/SAFE.setting line
08:48 p6eval ..1064 (SAFE C381_A…
08:49 colomon actually, now thinking my problem was at the receiving end.
08:49 colomon perl6:  sub foo { my @o = 1,2,3; my @p = 4,5,6; return @o, @p }; my (@o, @p) = foo;. say :@o.perl, :@p.perl
08:49 p6eval niecza v1-83-g516fcee: OUTPUT«[31m===[0mSORRY![31m===[0m␤Bogus statement at /tmp/72cO4SmiOB line 1:␤------> [32m5,6; return @o, @p }; my (@o, @p) = foo;[33m⏏[31m. say :@o.perl, :@p.perl[0m␤Parse failed␤»
08:49 p6eval ..rakudo de98d1: OUTPUT«===SORRY!===␤Confused at line 22, near ". say :@o."␤»
08:49 p6eval ..pugs: OUTPUT«*** ␤    Unexpected " say"␤    expecting ".", "\187", ">>", "=", "^", operator name, qualified identifier, variable name, "...", "--", "++", "i", array subscript, hash subscript or code subscript␤    at /tmp/ssv1uhqe51 line 1, column 77␤»
08:50 colomon rakudo:  sub foo { my @o = 1,2,3; my @p = 4,5,6; return @o, @p }; my (@o, @p) = foo;  say :@o.perl, :@p.perl
08:50 p6eval rakudo de98d1: OUTPUT«"o" => [1, 2, 3, 4, 5, 6]"p" => []␤»
08:50 colomon yeah, that
08:59 cogno joined #perl6
09:00 colomon rakudo:  sub foo { my @o = 1,2,3; my @p = 4,5,6; return \@o, \@p }; my ($o, $p) = foo;  say :$o.perl, :$p.perl
09:00 p6eval rakudo de98d1: OUTPUT«"o" => \(1, 2, 3)"p" => \(4, 5, 6)␤»
09:03 moritz_ niecza: sub f { return [1, 2], [3, 4] }; say f
09:03 p6eval niecza v1-83-g516fcee: OUTPUT«Unhandled exception: Excess arguments to SAFE return, used 1 of 2 positionals␤  at /home/p6eval/niecza/lib/SAFE.setting line 0 (SAFE return @ 0)␤  at (eval) line 1 (MAIN f @ 6)␤  at (eval) line 1 (MAIN mainline @ 1)␤  at /home/p6eval/niecza/lib/SAFE.setting line 1064
09:03 p6eval ..(SAFE C381_ANO…
09:03 moritz_ niecza: sub f { return 1, 2 }; say f
09:03 p6eval niecza v1-83-g516fcee: OUTPUT«Unhandled exception: Excess arguments to SAFE return, used 1 of 2 positionals␤  at /home/p6eval/niecza/lib/SAFE.setting line 0 (SAFE return @ 0)␤  at (eval) line 1 (MAIN f @ 2)␤  at (eval) line 1 (MAIN mainline @ 1)␤  at /home/p6eval/niecza/lib/SAFE.setting line 1064
09:03 p6eval ..(SAFE C381_ANO…
09:04 * moritz_ submits nieczabug
09:05 moritz_ rakudo: sub f { return 1, 2 }; say f
09:05 p6eval rakudo de98d1: OUTPUT«12␤»
09:06 moritz_ niecza: 10:03 < moritz_> niecza: sub f { return 1, 2 }; say f
09:06 p6eval niecza v1-83-g516fcee: OUTPUT«[31m===[0mSORRY![31m===[0m␤Confused at /tmp/BdsP7Ebp8u line 1:␤------> [32m10:[33m⏏[31m03 < moritz_> niecza: sub f { return 1, [0m␤    expecting any of:␤ coloncircumfix␤ signature␤Parse failed␤»
09:06 moritz_ sorry
09:06 moritz_ niecza: say ?("a" ~~ /a/); say ?$/
09:06 p6eval niecza v1-83-g516fcee: OUTPUT«Bool::True␤Bool::True␤»
09:13 masak joined #perl6
09:13 masak good morning, zebras.
09:14 moritz_ good morning, mr. wombat
09:18 colomon o/ mammals
09:20 * colomon feels like crap, but is furiously upgrading his AI for p4
09:24 roobie| left #perl6
09:25 cogno left #perl6
09:26 PacoLinux left #perl6
09:37 hanekomu joined #perl6
09:43 dakkar joined #perl6
09:52 vladikoff left #perl6
09:54 roen left #perl6
09:54 masak <TimToady> I'm the perl train.  :)
09:54 masak this made my day, and it's only 11 am. :)
09:59 gimix joined #perl6
10:04 diakopter :)
10:05 cogno joined #perl6
10:06 redicaps left #perl6
10:06 masak moritz_++ # submitting nieczabugs
10:08 roen joined #perl6
10:10 * diakopter tries out cpanminus on strawberry
10:13 diakopter odd; strawberry's startup script doesn't put c:\strawberry\perl\site\bin in the %PATH%
10:13 diakopter or maybe I broke it thusly
10:14 roobie| joined #perl6
10:15 dalek evalbot: 18079f9 | (Perl 6 Evalbot)++ | evalbot.pl:
10:15 dalek evalbot: disable some non-working targets
10:15 dalek evalbot: review: https://github.com/perl6/evalbot/commit/18079f97f6
10:16 moritz_ fwiw 'Perl 6 Evalbot' is a low security account that allows us to push changes from the p6eval server
10:18 diakopter 18079f9  # also re-fixes the perlesque target ;)
10:18 diakopter i'll manually update it for now
10:25 cogno left #perl6
10:26 mtk left #perl6
10:32 roobie| left #perl6
10:33 QinGW left #perl6
10:34 roobie| joined #perl6
10:34 mtk joined #perl6
10:49 roobie| left #perl6
10:50 coldhead left #perl6
10:50 coldhead joined #perl6
11:00 cogno joined #perl6
11:07 roobie| joined #perl6
11:10 coldhead left #perl6
11:25 cogno left #perl6
11:30 M_o_C left #perl6
11:39 redicaps joined #perl6
11:40 wamba joined #perl6
11:41 diakopter std: sub (-->) { }
11:41 p6eval std 625303c: OUTPUT«[31m===[0mSORRY![31m===[0m␤No type found after --> at /tmp/bKQfZ80loD line 1:␤------> [32msub (-->[33m⏏[31m) { }[0m␤    expecting any of:␤  name␤   param_sep␤      routine_def␤    signature␤      type_constraint␤Parse failed␤FAILED 00:01 119m␤»
11:41 diakopter drat
11:45 satyavvd left #perl6
11:47 satyavvd joined #perl6
11:52 satyavvd left #perl6
12:02 roen_ joined #perl6
12:05 diakopter nm the drat :)
12:11 fhelmberger joined #perl6
12:11 yarp left #perl6
12:12 roen left #perl6
12:13 dalek sprixel: 586ec1c | diakopter++ | / (12 files):
12:13 dalek sprixel: enable void-returning routines; somewhat less pessimized for tail recursion.
12:13 dalek sprixel: haven't yet tested with methods.
12:13 dalek sprixel: review: https://github.com/diakopter/sprixel/commit/586ec1c4eb
12:13 roen joined #perl6
12:15 diakopter yay; 1/8 reduction in time
12:15 diakopter perlesque: sub say(object $z) {Console.WriteLine($z)};my $t = Diagnostics::Stopwatch.StartNew();my int $a=1; sub foo () { if ($a < 1000000) { $a=$a+1; foo(); } }; foo(); say($t.Elapsed);
12:15 p6eval perlesque: OUTPUT«00:00:01.4218955␤»
12:15 kensanata left #perl6
12:15 roobie| left #perl6
12:21 roobie| joined #perl6
12:28 explorer__ left #perl6
12:30 masonkramer_ joined #perl6
12:30 masonkramer left #perl6
12:30 masonkramer_ is now known as masonkramer
12:31 Axius joined #perl6
12:36 kanishka left #perl6
12:37 masak left #perl6
12:37 Axius_ joined #perl6
12:38 Axius left #perl6
12:40 Axius_ left #perl6
12:40 Axius joined #perl6
12:42 jferrero joined #perl6
12:49 cogno joined #perl6
12:49 Axius left #perl6
12:51 dalek sprixel: de922f0 | diakopter++ | / (8 files):
12:51 dalek sprixel: got post-increment and post-decrement working; shaved another x0% off the simple million-recursions toy benchmark.
12:51 dalek sprixel: review: https://github.com/diakopter/sprixel/commit/de922f0c37
12:55 diakopter perlesque: sub say(object $z) {Console.WriteLine($z)};my $t = Diagnostics::Stopwatch.StartNew();my int $a=1000000; sub foo () { if ($a--) { foo(); } }; foo(); say($t.Elapsed);
12:55 p6eval perlesque: OUTPUT«00:00:01.6389214␤»
12:55 diakopter perlesque: sub say(object $z) {Console.WriteLine($z)};my $t = Diagnostics::Stopwatch.StartNew();my int $a=1000000; sub foo () { if ($a = $a - 1) { foo(); } }; foo(); say($t.Elapsed);
12:55 p6eval perlesque: OUTPUT«00:00:01.4203689␤»
12:55 diakopter sigh
12:56 diakopter perlesque: sub say(object $z) {Console.WriteLine($z)};my $t = Diagnostics::Stopwatch.StartNew();my int $a=5000000; sub foo () { if ($a--) { foo(); } }; foo(); say($t.Elapsed);
12:56 p6eval perlesque: OUTPUT«(timeout)8120130␤»
12:56 diakopter perlesque: sub say(object $z) {Console.WriteLine($z)};my $t = Diagnostics::Stopwatch.StartNew();my int $a=3000000; sub foo () { if ($a--) { foo(); } }; foo(); say($t.Elapsed);
12:56 p6eval perlesque: OUTPUT«00:00:04.8198533␤»
12:56 diakopter perlesque: sub say(object $z) {Console.WriteLine($z)};my $t = Diagnostics::Stopwatch.StartNew();my int $a=3000000; sub foo () { if ($a = $a - 1) { foo(); } }; foo(); say($t.Elapsed);
12:56 kensanata joined #perl6
12:56 p6eval perlesque: OUTPUT«00:00:04.7934038␤»
12:57 diakopter ok, so, essentially equivalent.
12:57 yarp joined #perl6
12:57 diakopter whatevs
12:57 Guest32863 is now known as kaare_
12:58 moritz_ in perlesque, of what type is a literal like 10?
12:58 moritz_ is it int? or Int?
12:58 Gahrian left #perl6
12:58 roen_ left #perl6
12:58 diakopter technically, all the declarations of variables should have type annotations
12:59 moritz_ that doesn't quite answer my question
12:59 diakopter but perlesque's assumption is that all literals are as primitively-typed as possible :)
12:59 diakopter plus, there's no such thing as an Int
12:59 moritz_ so 10 is an int8?
13:00 diakopter well, no
13:00 diakopter hm
13:00 moritz_ or an int64 on 64bit machines?
13:00 moritz_ or a real int?
13:00 jferrero left #perl6
13:01 moritz_ wait, lower case int probably isn't arbitrary precision in the spec
13:01 diakopter no it's word size I think
13:01 diakopter but ..
13:02 diakopter perlesque: my byte $a
13:02 p6eval perlesque: OUTPUT«␤Unhandled Exception: System.ArgumentNullException: Argument cannot be null.␤Parameter name: op␤  at sprixel.CodeGen.EmitGetHelper (sprixel.Operand op, System.Type desiredType, Boolean allowExplicitConversion) [0x00000] in <filename unknown>:0 ␤  at sprixel.FieldGen.EmitSet
13:02 p6eval ..(sprixe…
13:02 diakopter perlesque: my byte $a = 256
13:02 p6eval perlesque: OUTPUT«␤Unhandled Exception: System.ArgumentNullException: Argument cannot be null.␤Parameter name: op␤  at sprixel.CodeGen.EmitGetHelper (sprixel.Operand op, System.Type desiredType, Boolean allowExplicitConversion) [0x00000] in <filename unknown>:0 ␤  at sprixel.FieldGen.EmitSet
13:02 p6eval ..(sprixe…
13:02 diakopter hm
13:03 cogno left #perl6
13:04 diakopter ah, I see my error
13:05 cogno joined #perl6
13:06 diakopter moritz_: which others would you like? :D
13:07 diakopter sbyte, uint, etc
13:07 diakopter http://msdn.microsoft.com/en-us/library/hfa3fa08.aspx
13:08 moritz_ diakopter: if I remember/understand your goals for perlesque correctly, I'm not likely to be a user and don't really care
13:08 diakopter true..
13:16 cogno left #perl6
13:16 diakopter perlesque: my byte $a = 255;
13:16 p6eval perlesque:  ( no output )
13:16 diakopter perlesque: my byte $a = 256;
13:16 p6eval perlesque: OUTPUT«␤Unhandled Exception: System.InvalidCastException: Cannot convert type from 'System.Int32' to 'System.Byte'␤  at sprixel.Conversion+Invalid.Emit (sprixel.CodeGen g, System.Type from, System.Type to) [0x00000] in <filename unknown>:0 ␤  at sprixel.CodeGen.Convert (sprixel.Operand
13:16 p6eval ..op…
13:16 diakopter \o/
13:18 diakopter moritz_: to be precise, the only *user* of perlesque will be me, and the sprixel/viv compiler that targets it
13:19 roobie| left #perl6
13:19 MayDaniel joined #perl6
13:19 diakopter I'm guessing that no one will actually write in the language, but if I'm successful in my goal(s), the new viv backend for Cursor/STD should be sufficient.
13:19 dalek sprixel: 63e1294 | diakopter++ | sprixel/src/ (2 files):
13:19 dalek sprixel: add a bunch more default values for the built-in CLR value types
13:19 dalek sprixel: dedicated to moritz_++, though he doesn't really care.  ;)
13:19 dalek sprixel: review: https://github.com/diakopter/sprixel/commit/63e1294e04
13:19 moritz_ :-)
13:20 cogno joined #perl6
13:22 tzhs joined #perl6
13:24 yarp my $b = '哈';
13:24 roobie| joined #perl6
13:24 moritz_ .u 哈
13:24 phenny U+54C8 CJK UNIFIED IDEOGRAPH-54C8 (哈)
13:25 diakopter perlesque: my $b = '哈'; Console.WriteLine($b)
13:25 p6eval perlesque: OUTPUT«哈␤»
13:25 diakopter niecza: my $b = '哈'; say($b)
13:25 p6eval niecza v1-83-g516fcee: OUTPUT«哈␤»
13:26 agentzh joined #perl6
13:26 diakopter hmm. it appears I've stayed awake all night.
13:27 diakopter morning alarm beepeth
13:34 cogno left #perl6
13:36 MayDaniel left #perl6
13:39 cogno joined #perl6
13:39 _twitch joined #perl6
13:44 snearch left #perl6
13:44 cjk101010 left #perl6
13:45 lichtkind joined #perl6
13:46 PacoLinux joined #perl6
13:47 PacoLinux left #perl6
13:48 PacoLinux joined #perl6
13:48 lichtkind does the tk binding for rakudo really work?
13:49 moritz_ lichtkind: I had a working tk windows through blizkost and the p5 Tk library at some point
13:49 moritz_ dunno if it works at the moment
13:50 PacoLinux left #perl6
13:50 GinoMan joined #perl6
13:50 PacoLinux joined #perl6
13:51 PacoLinux left #perl6
13:51 PacoLinux joined #perl6
13:52 PacoLinux left #perl6
13:52 PacoLinux joined #perl6
13:55 lichtkind moritz_: i just read on tpf page about the tk on rakudo grant and was curious if its finished like the article says
13:56 moritz_ lichtkind: I thought it was aborted
13:56 moritz_ lichtkind: got a link for me?
13:56 lichtkind http://news.perlfoundation.org/2011/01/tpf-programs-in-2010.html
13:56 lichtkind yes i had the feeling it was so i just was not sure
13:57 moritz_ http://news.perlfoundation.org/2010/03/grants_failure_tcltk_access_in.html
13:58 moritz_ the markup is totally borked, but with some patience one can read it
13:59 [Coke] completed was probably the wrong word there, but vadim's grant dates from the time when some $$ was paid up front.
14:00 [Coke] moritz_++ #finding the original link
14:00 moritz_ I'll leave a comment
14:02 [Coke] danke.
14:06 plainhao joined #perl6
14:06 lichtkind thank you
14:07 GinoMan left #perl6
14:08 GinoMan_ joined #perl6
14:08 agentzh left #perl6
14:09 GinoMan_ left #perl6
14:11 wamba left #perl6
14:11 GinoMan joined #perl6
14:17 dalek tpfwiki: (Herbert Breunung)++ | http://www.perlfoundation.org/perl6/index.cgi?perl_6_operator_tablet
14:18 envi left #perl6
14:20 envi joined #perl6
14:22 ggoebel Folks interested in Perl6 concurrency may also be interested in linux kernel developer Paul McKenney's creative commons book on parallel programming: http://paulmck.livejournal.com/23027.html
14:24 cogno left #perl6
14:25 yarp left #perl6
14:32 mathw ooh
14:33 mathw good title for it :)
14:38 redicaps left #perl6
14:47 muixirt joined #perl6
14:48 muixirt while 1 {} munches memory slowly, again
14:51 moritz_ :(
14:52 moritz_ if you want to do something about it, find a parrot+rakudo combination where it doesn't leak, and then bisect
14:52 muixirt on the other hand: the problems with lots of spectest failures is solved (?)
14:52 muixirt s/is/are/
14:53 moritz_ about 4 remain, on my machine
14:53 felliott left #perl6
14:53 colomon muixirt: you think the memory leak is the problem?
14:53 colomon context?  my last spectest run (with --gen-parrot) was perfect...
14:54 muixirt moritz_: t/spec/S14-roles/crony.t *** t/spec/S14-roles/mixin.rakudo *** t/spec/integration/advent2009-day18.rakudo
14:54 moritz_ colomon: rakudo on newest parrot
14:54 muixirt colomon: what memory leak are you talking about?
14:55 colomon muixirt: the memory leak you just reported?  "while 1 {} munches memory slowly, again"
14:56 muixirt it's maybe *a* problem (not really for me)
15:04 cogno joined #perl6
15:04 Patterner left #perl6
15:04 Psyche^ joined #perl6
15:04 Psyche^ is now known as Patterner
15:04 hanekomu left #perl6
15:05 xinming_ joined #perl6
15:08 xinming left #perl6
15:13 muixirt moritz_: w.r.t. bisecting: what do you do if you don't know exactly the last good version?
15:13 moritz_ muixirt: you start with any known good version
15:13 moritz_ muixirt: and bisecting finds you the last good / first bad version
15:14 muixirt the last good version I know for sure is version 2010.10
15:14 muixirt would you first start with rakudo or with parrot?
15:16 rgrau joined #perl6
15:18 moritz_ you bisect in rakudo, and use --gen-parrot every time
15:18 moritz_ if the first bad version is a bump in PARROT_REVISION, you continue by bisecting parrot
15:18 muixirt would be easier if testcases were available in pir that resemble rakudo use cases (if that's feasible)
15:19 moritz_ that would be easier indeed
15:19 moritz_ if you can reduce it to a pure PIR example, it'll be easier
15:21 muixirt once I had a test case for the while loop, looking...
15:24 roen_ joined #perl6
15:24 muixirt didn't work out :-(
15:25 moritz_ what you can try is use --target=pir and then remove all rakudoisms from the PIR
15:25 * shortcircuit starts learning PIR by way of Rosetta Code, with an aim toward figuring out how best to replace Rakudo's foundation
15:25 moritz_ and see if the result still runs, and if yes, still leaks
15:25 cogno left #perl6
15:25 plobsing left #perl6
15:27 gbacon joined #perl6
15:28 wtw left #perl6
15:29 muixirt moritz_: my old pir test case lacks that capture_lex $P91 \ $P91() fun
15:29 MayDaniel joined #perl6
15:33 kaare_ left #perl6
15:36 muixirt bind_llsig? Never heard of that...
15:39 moritz_ the rakudo signature binder
15:43 muixirt is the doc in src/ops/perl6.ops for bind_llsig still correct?
15:44 moritz_ no idea
15:45 roobie| left #perl6
15:45 muixirt bind_llsig is nowadays a one arg op (?)
15:48 Maksim_ joined #perl6
15:49 Tedd1 left #perl6
15:49 justatheory joined #perl6
15:49 colomon with MAIN, how does one specify an Int / Real argument?
15:50 TimToady currently, using Str as Int
15:50 moritz_ you can coerce
15:50 TimToady that's going to change though
15:50 colomon hmm?
15:50 TimToady we can't yet multi dispatch on types in MAIN
15:51 pmurias joined #perl6
15:51 colomon something like $str where { +$str > 0 }  ?
15:51 pmurias sorear: ping
15:52 TimToady I'll be speccing the "figure out types from text" semantics when I decide what name to call it
15:52 Maksim_ helo, can I use perl5 modules in perl6? I use Device::SerialPort in my scripts and was thinking of trying perl6.
15:52 TimToady then multi MAIN (Int $i where $i > 0) will be possible
15:53 colomon for what it's worth, $long-run where { $long-run > 0 } seems to be working...
15:53 colomon that's MAIN($long-run where { $long-run > 0 })
15:53 TimToady std: multi MAIN (Int $i where $i > 0) { $i }
15:53 p6eval std 625303c: OUTPUT«ok 00:01 124m␤»
15:53 TimToady rakudo: multi MAIN (Int $i where $i > 0) { $i }
15:53 p6eval rakudo de98d1: OUTPUT«===SORRY!===␤Malformed multi at line 22, near "MAIN (Int "␤»
15:54 colomon rakudo: multi MAIN ($i where $i > 0) { $i
15:54 TimToady rakudo is still more restrictive on where clauses
15:54 p6eval rakudo de98d1: OUTPUT«===SORRY!===␤Malformed multi at line 22, near "MAIN ($i w"␤»
15:54 colomon rakudo: multi MAIN ($i where $i > 0) { $i }
15:54 p6eval rakudo de98d1: OUTPUT«===SORRY!===␤Malformed multi at line 22, near "MAIN ($i w"␤»
15:54 moritz_ it wants a block
15:54 TimToady rakudo: multi MAIN (Int $i where ($i > 0)) { $i }
15:54 p6eval rakudo de98d1: OUTPUT«Usage:␤/tmp/ixxC0TVR4O i␤»
15:54 colomon rakudo: multi MAIN ($i where {$i > 0}) { $i }
15:54 p6eval rakudo de98d1: OUTPUT«Usage:␤/tmp/j1LjfIbFJn i␤»
15:54 TimToady no, i wants a term
15:54 TimToady *it
15:55 TimToady I think rakudo does not yet do precedence restricted EXPR
15:55 TimToady STD requests any expression tighter than , there
15:56 TimToady since, obviously, a comma would indicate the next parameter
15:56 tadzik Maksim_: yeah, take a look at blizkost
15:56 tadzik Maksim_: it doesn't always work, but sometimes it does
15:56 orafu left #perl6
15:56 orafu joined #perl6
15:58 Maksim_ tadzik: Many thanks I will try to use it and see if it works.
15:58 muixirt left #perl6
15:59 gbacon left #perl6
16:01 TimToady colomon: if you want to return two arrays you need to use binding, not assignment, on the returned value, since assignment flattens and slurps
16:01 colomon TimToady: ooooo, binding!
16:01 colomon I knew there was something I was forgetting.
16:02 TimToady it's assignment that's the bad boy
16:03 dukeleto left #perl6
16:03 TimToady Assignment is Awful, Binding is merely Bad.
16:03 tadzik Maksim_: if the module is basically a wrapper for a C code, you can try writing your own bindings in Perl 6, using Zavolaj
16:04 colomon in my defense, I was up programming because I felt too sick to sleep.  :)
16:04 dukeleto joined #perl6
16:04 * TimToady knows that
16:05 TimToady well, I new you were sick, and ircing at 4am, assuming you're EST
16:05 TimToady *knew
16:05 colomon yes
16:07 * moritz_ wishes colomon a swift recovery
16:07 colomon knock on wood, I seem to be okay at the moment.   seemed like it was some sort of stomach bug...
16:10 kaare_ joined #perl6
16:14 kanishka joined #perl6
16:14 larsen_ is now known as larsen
16:15 felliott joined #perl6
16:19 pmurias left #perl6
16:20 hercynium joined #perl6
16:26 gbacon joined #perl6
16:27 * moritz_ just spent about 2 hours chasing a stupid bug
16:27 moritz_ turns out it was a floating point bug that would lead to some imaginary numbers
16:28 moritz_ and Mathematica's error reporting is just abyssmal
16:29 flussence ooh, FP bugs
16:29 flussence I saw a thing yesterday where you can crash PHP with one of those.
16:30 moritz_ yep, there FP parser hangs on certain architectures
16:30 flussence to be fair, it's only one of those out of 2**80, so it's pretty hard to find...
16:30 moritz_ at least 3 examples are known
16:30 TimToady I don't know why sorear++ seems to think that FP is good enough for everything...
16:30 TimToady I hope that just means "good enough for now"
16:33 flussence everything... including ints?
16:35 GinoMan left #perl6
16:37 cogno joined #perl6
16:37 TimToady sorear++ likes to hyperbolize at times, so I can't say for sure
16:38 * moritz_ likes to parabolize at times :-)
16:39 MayDaniel left #perl6
16:39 tzhs left #perl6
16:39 TimToady on the other extreme, I tend to ellipsize.
16:39 Maksim_ tadzik: it is great to hear about Zavolaj but I do not think it can help in my case.. while blizkost seems to make perl5 scripts slower.. But I will make few more tests..
16:41 pyrimidine joined #perl6
16:42 moritz_ perl5 scripts don't need blizkost
16:43 TimToady more likely that rakudo is making blizkost slower, or blizkost is making rakudo slower, or both
16:43 vladikoff joined #perl6
16:43 moritz_ or that rakudo is slower than p5
16:44 TimToady まさか!
16:45 tadzik phenny: "まさか!"?
16:45 phenny tadzik: "No!" (ja to en, translate.google.com)
16:45 jaldhar left #perl6
16:45 TimToady more like "Impossible!"
16:45 moritz_ if it were "no", it would be quite bad huffman coding... at least by our usage frequency :-)
16:46 TimToady まさかmasakaNever!; Well, I never!; You don't say!
16:47 jlaire left #perl6
16:48 PerlJam "Inconceivable!"  ?  :-)
16:50 shortcircuit That needs to be the release name of the first P6 implementation to be deemed Perfect.
16:51 jlaire joined #perl6
16:52 icwiener joined #perl6
16:54 wagnerf left #perl6
16:54 cogno left #perl6
16:58 felliott left #perl6
16:59 felliott joined #perl6
17:01 Maksim_ moritz_: perl5 scripts don't need blizkost? So I can use perl5 modules within perl6? can you please provide me with any link with more details?
17:02 koushi joined #perl6
17:02 tadzik Perl 5 scripts do not need Perl 6, that's moritz_'s point methinks
17:03 moritz_ Maksim_: perl5 scripts need Perl 5. Perl 6 scripts needs rakudo (or another compiler). Only if you want to use 5 and 6 you need blizkost
17:03 koushi left #perl6
17:04 M_o_C joined #perl6
17:06 Maksim_ moritz_: I guess my original question was misunderstood, I use few P5 modules in my scripts, I was thinking of trying to use perl6 and wondered if we can use perl5 modules in perl6 or if some have been re-written for perl6.
17:07 risou joined #perl6
17:07 shortcircuit Maksim_: In that case, I think blizkost is what you're looking for.
17:07 PerlJam Maksim_: modules.perl6.org
17:08 PerlJam Maksim_: (for the rewritten modules)
17:08 shortcircuit Or native modules. :)
17:08 Maksim_ PerlJam, shortcircuit: thanks guys :)
17:08 TimToady but rakudo + blizkost + p5 is unlikely to run as fast as bare p5, at least in the near future
17:10 shortcircuit Trollish/seriousish question: Can Rakudo be benchmarked to be faster than bare P5 for anything trivial to both languages?
17:11 flussence well, there's "writing code"...
17:11 PerlJam rakudo:  hash().perl.say;  hash{}.perl.say;
17:11 shortcircuit Can that really be a property of the implementation? :P
17:11 p6eval rakudo de98d1: OUTPUT«{}␤()␤»
17:11 PerlJam I find that completely odd.
17:11 Maksim_ I understand.. I will try them just for fun on my weekends.. I will make a chart of results and if speed was 5-10 slower I will consider it as ok since speed is not very important in all my scripts.
17:11 flussence shortcircuit: depends how your $dayjob treats programmers :)
17:12 shortcircuit I work at a company of nothing *but* programmers.
17:12 shortcircuit Which leads to all the headaches one might presume.
17:12 gbacon left #perl6
17:12 flussence heh
17:13 shortcircuit The only way to get buy-in around here is to figure out how to get everyone curious about something for their own reasons. :)
17:16 risou left #perl6
17:20 Trashlord left #perl6
17:21 Trashlord joined #perl6
17:22 envi left #perl6
17:22 Trashlord left #perl6
17:24 Trashlord joined #perl6
17:28 Maksim_ I have a question, there is a prepacked version of Rakudo for FreeBSD and Fedora, do you recommend using them or building it from source and why? Note the prepacked version are one version away from the latest.
17:32 shortcircuit I think there's a recent blog post that answers this questions, providing reasons.
17:32 * shortcircuit hunts
17:32 cogno joined #perl6
17:32 plobsing joined #perl6
17:32 shortcircuit Ah. I was mistaken; the blog post talks about something that runs on Rakudo.
17:32 tadzik is there a nice, printable version of the CLA?
17:34 vladikoff left #perl6
17:35 shortcircuit Maksim_: I guess you can try the prepackaged version. You might poke its maintainer to get him to update, too.
17:35 shortcircuit The other side of it...if something breaks, you should try updating to the latest release, and see if that fixes it.
17:36 shortcircuit The obvious (to me) conclusion would be to just run the latest release. I hate hearing "that's fixed in svn" or equivalents.
17:37 shortcircuit I know there have been bugfixes in that timeframe. Don't remember what they were, though. I just overhear stuff by lurking in here.
17:37 cogno left #perl6
17:37 * shortcircuit realizes that what he's doing doesn't qualify as lurking, and shuts up.
17:38 TimToady shortcircuit: we'll make you our Lurker Emeritus.  :)
17:38 shortcircuit Hehe
17:39 TimToady Maksim_: if you can get within one order of magnitude slower I will be very surprised.  Most code runs several orders of magnitude slower so far.
17:39 TimToady (in rakudo, not in niecza)
17:39 Maksim_ shortcircuit: I guess I will just build from source and keep manually update with every new release.. Actually I have already just started doing that on my machines..
17:40 cdarroch joined #perl6
17:40 cdarroch left #perl6
17:40 cdarroch joined #perl6
17:40 Maksim_ TimToady: I will be satisfied with 5-10 magnitudes "for now"
17:40 shortcircuit I found manually building and installilng Rakudo surprisingly easy. It's much less terrifying to me than CPAN...
17:41 kanishka left #perl6
17:41 shortcircuit *installing
17:41 [Coke] ... you need to use cpanm, then. ;)
17:41 kanishka joined #perl6
17:41 PerlJam shortcircuit: what of CPAN frightens you?
17:42 TimToady IT HAZ A SINGLE POINT OF FAILUREZ!!!  *cough* github *cough*
17:43 shortcircuit PerlJam: A year or two ago, I wound up in an emergency scenario where a CPAN module I was using depended on the JSON module, and the LTS ubuntu release I was running had a version of the JSON module with a completely different API.
17:44 TimToady .oO(which is why modules in P6 have :auth and :ver)
17:44 flussence ooh, that's a fun one. I get to maintain an Ancient Perl webapp that relies on a billion different deprecated APIs...
17:44 PerlJam shortcircuit: so ... you're saying Rakudo is great because it has few dependencies?  :)
17:44 shortcircuit So I had to pull in a bunch of packages from CPAN without really knowing what I was doing. A massive dependency set to keep things working as I'd thought they were. Hit circular dependencies, too. Didn't know the difference between pure-perl XML and XS.
17:45 shortcircuit PerlJam: Rakudo was great for me because it was easy to install. :)
17:45 kanishka left #perl6
17:46 shortcircuit That JSON/CPAN experience is also what led me to really, really dislike #perl.
17:46 PerlJam shortcircuit: really?  Whyfor?
17:46 kanishka joined #perl6
17:46 PerlJam Welcome kanishka
17:46 plobsing left #perl6
17:48 shortcircuit PerlJam: Like I said, I was really, really new to a lot of it, was under a major time crunch, and the few folks who responded to my questions at that time of night...well, there's was a bidirectional incompatibility. :-|
17:51 shortcircuit They got fed up with my not knowing what I was doing, and I was frustrated that they weren't answering the questions I needed answered, or providing useful reference. Somewhere in there, I got a bruised ego from something one of them said, but I don't remember the specifics.
17:51 shortcircuit I do remember going back and apologizing later.
17:52 PerlJam Hmm.
17:52 PerlJam I do hope that #perl6 won't be making the same mistakes as #perl  :)
17:53 impious joined #perl6
17:53 kensanata left #perl6
17:53 impious left #perl6
17:54 impious joined #perl6
17:54 pmurias joined #perl6
17:55 TimToady We'll need to think about how this will scale up though.  I suspect #perl6 will become/continue to be the help channel, and #phasers will become the devs channel.
17:56 dalek niecza: 0f63e1b | pmurias++ | / (3 files):
17:56 dalek niecza: the refactored driver build the setting an test.pl passes
17:56 dalek niecza: review: https://github.com/sorear/niecza/commit/0f63e1b0db
17:57 PerlJam the only problem is that Perl seems to attract very helpful people who are also very abrasive  (or perhaps just somewhate insensitive)
17:57 PerlJam s/ate/at/
17:58 PerlJam couple that with a dose of arrogance and the community loses some of its friendliness.
17:59 diakopter dalek might need to move to #phasers if/when #phasers is more dev-ish
17:59 PerlJam tchrist was a good example of that on IRC back in the 1990s.
18:00 diakopter PerlJam: I AM NEVER INSENSITIVE, AND NEITHER AM I. DO NOT PROVOKE ME. ;)
18:00 diakopter not that I'm claiming to be helpful, either.
18:01 diakopter </wink>
18:02 plobsing joined #perl6
18:02 PerlJam now, if you could just spontaneously produce a voluminous output of text on the smallest of provocations regarding the most minor nits, I'll have to question your identity  ;)
18:03 pmurias isn't #phasers a rakudo specific channel?
18:03 PerlJam pmurias: no.
18:03 PerlJam (at least, I've never thought of it as such)
18:04 pmurias the channel topic seems to imply otherwise
18:04 PerlJam Well, perhaps I'm the only one  then.
18:04 PerlJam I've always thought of it more about "Perl 6 implementations" and it just happens that Rakudo is the one most talked about.
18:04 diakopter yeah, it was originally rakudo, I think
18:05 diakopter but quickly expanded
18:05 pmurias and isn't it a weekly thing?
18:05 PerlJam currently.
18:06 Maksim_ TimToady: first 2 scripts appeared to be around 30 times slower.. but still I enjoyed the test! :) I will re-write all of my p5!
18:12 _twitch left #perl6
18:13 mtk left #perl6
18:13 gbacon joined #perl6
18:14 shortcircuit So, #phasers is an IRC channel that's active weekly, and talks specifically about Perl 6 implementation development.
18:15 PerlJam shortcircuit: yep
18:15 shortcircuit It sounds to me like one could take the day's IRC logs for the channel, perform some sanitization, and lump it out as a weekly 'blog' post.
18:15 shortcircuit I'd add it to my reader list.
18:16 PerlJam shortcircuit: are you volunteering?  http://irclog.perlgeek.de/phasers/2011-01-04  :-)
18:17 cogno joined #perl6
18:17 shortcircuit I can't even motivate myself to make time to set up public logging for #rosettacode. :-|
18:17 shortcircuit The PIR->C++ thing is a current fancy.
18:18 dakkar left #perl6
18:19 moritz_ shortcircuit: do you want me to log it?
18:19 PerlJam shortcircuit: ask ... never mind  :)
18:19 PerlJam moritz++
18:19 shortcircuit moritz_: That'd be pretty sweet. :)
18:19 shortcircuit I've got three years of backlogs I could probably rope a couple guys into formatting consistently, if you can retroprocess. :)
18:21 shortcircuit moritz_: I can set up a CNAME off of, e.g. irc.rosettacode.org, if that's not too inconvenient...
18:21 plobsing shortcircuit: do you have anyplace you've documented how you might go about PIR->C++?
18:22 JimmyZ joined #perl6
18:23 shortcircuit plobsing: No. I'm not doing a programmatic conversion, either. I'm just reading the PIR docs, implementing RC tasks in PIR, and then I'll go through the Rakudo source code and figure out how to flexibly drop in something in place of the .pir files Rakudo's currently using.
18:23 TimToady it's good that #rosettacode is already logged, so you don't have to fight the folks who are ashamed of what they want to say :)
18:23 shortcircuit That's going to depend on a fairly documented barrier between where Rakudo uses PIR and where it uses NQP or similar.
18:24 moritz_ shortcircuit: I can offer you irclog.perlgeek.de/rosettacode/today - you can do a redirect there
18:24 shortcircuit TimToady: Yeah, I always tried to emphasize that the stuff in said #rosettacode should be assumed to be read by arbitrary people.
18:25 TimToady it really helps keep things civil
18:25 PerlJam shortcircuit: AFAIK, there is no "documented barrier" between Rakudo and PIR, though abstracting the PIR bits out has been talked about before.
18:25 shortcircuit PerlJam: I suspect the only relatively solid barrier sits between the parts implemented in Perl 6, and the parts implemented in NQP.
18:26 PerlJam shortcircuit: um ... not even that.  NQP *is* Perl 6  :)
18:26 shortcircuit Not Quite. :)
18:26 PerlJam Well ... is a subset of Perl  6
18:27 Su-Shee it's a quarter to six perl. ;)
18:27 plobsing shortcircuit: while that sounds like an interesting idea on the surface, I'd hazard a guess (without appropriate benchmarks to back me up) that it would not have a significant performance increase. NQP/Rakudo generate much more PIR and with much less insight.
18:28 _ilbot joined #perl6
18:28 Topic for #perl6 is now »ö« Welcome to Perl 6! | http://perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: http://irc.perl6.org/ | UTF-8 is our friend! | http://tinyurl.com/p6contest
18:28 plobsing shortcircuit: OK, so long as you don't expect too much
18:28 shortcircuit More the trollish, "wouldn't it be funny if..." side of things.
18:28 shortcircuit I think swapping out the PIR bits with JavaScript could have hilarious consequences. :)
18:29 cogno left #perl6
18:29 moritz_ shortcircuit: http://irclog.perlgeek.de/rosettacode/today IWBN if you announced the logging inside the channel
18:29 diakopter Su-Shee: ha
18:29 moritz_ shortcircuit: if you plan to migrate to another logging tool at some point, I can give you a DB dump then
18:29 PerlJam moritz_: does ilbot just log whichever channel it's in, or is there more to it?
18:30 dalek roast: 920cbea | (Kodi Arfer)++ | S32-scalar/defined.t:
18:30 dalek roast: [defined.t] Added tests for RT #81352.
18:30 dalek roast: review: https://github.com/perl6/roast/commit/920cbea58a
18:30 dalek roast: 3c9b9b5 | (Kodi Arfer)++ | S02-builtin_data_types/instants-and-durations.t:
18:30 dalek roast: [instants-and-durations.t] Removed some tests that are now incorrect or dubious.
18:30 dalek roast: review: https://github.com/perl6/roast/commit/3c9b9b5282
18:30 moritz_ PerlJam: it logs whatever it sees, even private messages (though they can't be retrieved via the web interface)
18:30 dalek rakudo: 604e5dd | KodiB++ | src/cheats/object.pir:
18:30 dalek rakudo: [cheats] Made &prefix:<defined> return a Bool.
18:30 dalek rakudo:
18:30 dalek rakudo: This fixes RT #81352.
18:30 dalek rakudo: review: https://github.com/rakudo/rakudo/commit/604e5ddf7e
18:30 dalek rakudo: 244d0f6 | KodiB++ | src/core/Duration.pm:
18:30 dalek rakudo: [core/Duration] Removed various restrictions as per specs 3104c5be9.
18:30 dalek rakudo:
18:30 dalek rakudo: Now, at least for the time being, Duration differs little from Rat.
18:30 dalek rakudo: review: https://github.com/rakudo/rakudo/commit/244d0f621c
18:32 fhelmberger left #perl6
18:32 cogno joined #perl6
18:35 PerlJam moritz_: do you have a way to parse/input shortcircuit's previous logs?
18:35 moritz_ PerlJam: I've written an irssi log parser...
18:35 moritz_ problem is that I have to update row IDs from all later rows
18:36 moritz_ which breaks "deep" links to directly to rows
18:36 moritz_ so I basically only do it when I start logging a channel, never when I miss a few hours
18:37 PerlJam why do you have to update row IDs?
18:37 wamba joined #perl6
18:37 moritz_ because I have to order by something when displaying a page
18:37 PerlJam okay, gotcha
18:38 moritz_ and since I only store integer timestamps, I sort by primary ID
18:38 mtk joined #perl6
18:38 roen_ left #perl6
18:39 pmichaud good afternoon, #perl6
18:39 moritz_ I have a vision on how to write ilbot 2.0, "second irc logging system done right"
18:39 moritz_ which stores sub-second timestamp and orders by them
18:39 moritz_ oh hai pmichaud
18:39 PerlJam pmichaud: greetings.
18:41 * shortcircuit wonders how to do a 'sort by X first, then by Y' in SQL. "sort by timestamp, then by autonumber field"
18:41 PerlJam shortcircuit: order by timestamp, id
18:41 shortcircuit Hackish, and unnecessary outside of edge cases, obviously. :-|
18:43 allbery_b mm?
18:46 moritz_ btw there's one case where I massively imported old logs
18:46 moritz_ I assigned negative IDs :-)
18:47 masak joined #perl6
18:47 masak ahoy!
18:47 moritz_ hello zebra!
18:47 colomon \o
18:47 PerlJam greetings masak
18:48 masak how are all my fellow zebras today?
18:48 colomon surviving
18:48 moritz_ \ \ \ \ \    <-- zebra pattern!
18:52 MayDaniel joined #perl6
18:54 pmichaud we have zebras?
18:54 TimToady herds of 'em: ????
18:54 * [Coke] wonders if perl6 has an octopodes operator.
18:55 moritz_ «...» has 8 lines... does that count?
18:55 PerlJam feline octopodes
18:55 moritz_ feline opcodes
18:55 Su-Shee bio perl gone rogue? ;)
18:55 pmichaud feline opcodes == "cat", I think.
18:55 pmichaud or even Cat
18:57 TimToady I like octopods much better than octopodes.
18:58 moritz_ are those octophone or octophobe?
18:58 TimToady though, in fact, I have never seen an octopus with eight feet...
18:58 moritz_ yeah, they don't have any feet
18:58 moritz_ just tentactles
18:58 pmichaud I have.  It was frequently next to the purple dinosaur.
18:58 daxim left #perl6
18:59 TimToady the purple dinosaur is frequently beside himself
18:59 pmichaud oh, wait.  I mean it was associated with that australian music group
19:00 TimToady which also makes eight legs, if not feet
19:00 PerlJam pmichaud: you mean ~~ ?
19:00 PerlJam well, ~~ Su-Shee-style
19:00 pmichaud http://wiggles.wikia.com/wiki/Henry_the_Octopus
19:00 MayDaniel left #perl6
19:01 PerlJam aye, and ~~ are "the wiggles" :)
19:01 pmichaud "Henry the Octopus is a fun-loving octopus with purple skin. He wears tartan clothes, a straw hat, and black polished shoes on".  I suppose one could have shoes and no feet.
19:01 * TimToady pictures a hula dancer signing "ocean"
19:01 WonTu joined #perl6
19:01 WonTu left #perl6
19:01 Su-Shee cool. the wiggles are even a group dressed in perl 6 colors. ;)
19:02 pmichaud anyway, I apologize that my smart(?) matcher has dredged up these images into our midst.  Can we return to the zebras?  ;-)
19:03 pmichaud actually, time for lunch here
19:03 pmichaud bbiaw
19:05 kanishka left #perl6
19:07 JimmyZ left #perl6
19:07 masak interesting activity on p6u.
19:07 pmichaud I suppose I should apologize for that also.  :-)
19:08 moritz_ well, some of that is going off into the trolling direction
19:08 masak aye.
19:08 cogno left #perl6
19:08 moritz_ I've decided not to reply to anything there for now
19:08 masak my brain wanted to hit "Reply" to a few of the emails, but was overruled by my troll bait detector.
19:08 pmichaud same here.
19:09 pmichaud I thought about troll hugging, but decided it wasn't a good expenditure of tuits.
19:09 * diakopter doesn't know which emails these are
19:09 dalek sprixel: 5b3b499 | diakopter++ | / (7 files):
19:09 dalek sprixel: pre-increment, pre-decrement, logical not, stringify operators
19:09 dalek sprixel: review: https://github.com/diakopter/sprixel/commit/5b3b499b7c
19:09 moritz_ dalek: then you haven't missed anything, really
19:09 diakopter whee
19:09 masak diakopter: the thread is called "Production release"
19:10 moritz_ sorry, meant diakopter, not dalek
19:10 diakopter :)
19:11 pmichaud diakopter: later messages in the thread starting at http://groups.google.com/group/perl.perl6.users/browse_thread/thread/cc4ad0629a42c15a
19:11 pmichaud (i.e., on page 2)
19:11 pmichaud but probably not worth the time/effort
19:11 pmichaud anyway, lunch.  bbl
19:12 am0c joined #perl6
19:14 Su-Shee *haha* the fortran comparison with examples is just cool. :)
19:15 moritz_ regarding 'has $!foo handles TypeObject'
19:15 moritz_ that currently doesn't work for classes
19:16 moritz_ because it overrides the .new method
19:16 moritz_ what about making it only adding method that aren't already available in the class?
19:18 masak Su-Shee: I really liked that one too.
19:19 masak people's memory in the programming language business is really awful.
19:19 Su-Shee masak: it's excellent and very enlightening.
19:19 * masak agrees
19:19 PerlJam It made me realize that I probably haven't seen any fortran90 code really as I would have only identified the first one as "fortran" and the other as something else.
19:21 Su-Shee PerlJam: exactly. and in my fortran cliche it's still FORTRAN.
19:22 PerlJam not ForTran ?
19:22 Su-Shee "perl 6 is perl like fortran 90 is fortran" :)
19:22 PerlJam :)
19:22 masak maybe that's what people are thinking about when they talk about PERL -- archaic, badly structured Perl. :P
19:22 Su-Shee actually I think "office" then. ;)
19:23 Su-Shee I think the fortran example is very quoteworthy on occasions...
19:26 PerlJam yeah, but that's the difference between 2 and 90, with perl we're only going from 5 to 6.  ;)
19:28 Su-Shee someone can surely construct some prove that the distance between 5 and 6 is larger than between 2 and 90. ;)
19:28 Su-Shee aeh proof.
19:28 PerlJam (though the fortran77 version would have looked remarkably like the fortran II version)
19:28 moritz_ Su-Shee: I'm sure masak could... just take a look at the yapsi release announcements... :-)
19:29 masak oh, piece of cake. :P
19:29 plobsing left #perl6
19:29 jjore_ is now known as jjore
19:29 Su-Shee see? easily done. ;)
19:31 am0c left #perl6
19:32 plobsing joined #perl6
19:46 GinoMan_ joined #perl6
19:47 GinoMan_ left #perl6
19:48 cogno joined #perl6
19:49 masak moritz_: is there a known temporary workaround for the handles-typeobject-and-.new problem?
19:49 masak something like explicitly declaring a method .new in that class?
19:50 Maksim_ are there any other good references on perl6 other than using perl6 pdf?
19:51 PerlJam Maksim_: perl6advent.wordpress.com
19:51 dalek specs: 7d7fdaf | diakopter++ | S09-data.pod:
19:51 dalek specs: remove mentions of particular run-time systems from S09
19:51 dalek specs: review: https://github.com/perl6/specs/commit/7d7fdaf631
19:53 PerlJam Maksim_: http://perlgeek.de/blog-en/perl-6/  too
19:53 PerlJam Maksim_: See http://perl6.org/documentation/
19:57 Maksim_ thanks, it nice to see that few nice titles are in progress now (learning perl6 ,programming perl6) hopefully we will see a complete nice references for perl6 soon.
19:58 Su-Shee *hihi* who made the cheatsheet? :)
20:01 dalek specs: 606dba7 | diakopter++ | S19-commandline.pod:
20:01 dalek specs: clarify implementation-specific sounding/implying examples in S19 with another example.
20:01 dalek specs: See S02:2985 for another example of multiplicity.
20:01 dalek specs: review: https://github.com/perl6/specs/commit/606dba7ea8
20:02 glow joined #perl6
20:03 TimToady Su-Shee: that depends on whether you liked it or not...  :)
20:03 dalek specs: 3442396 | diakopter++ | S06-routines.pod:
20:03 dalek specs: remove (implementation-specific) fossil from S06
20:03 dalek specs: review: https://github.com/perl6/specs/commit/3442396767
20:05 Su-Shee TimToady: well I've just tried wether or not the space left (which looked deliberately..) makes an image of a camel or butterfly or something.. :)
20:05 TimToady it's not that demented :)
20:05 Su-Shee I _love_ well done cheatsheets and short references.
20:05 TimToady though I do see a fossil
20:06 Su-Shee well it might have been a rakudo rohrschach test.. :)
20:06 TimToady .oO(she still hasn't said whether she thinks this is well done... :)
20:06 Su-Shee very well.
20:06 diakopter there's a mention of pugs in S17:514, "Numify to TIDs (as in pugs)", but I don't get it, nor do I know whether that Syn is canonized yet
20:06 TimToady in that case, I did it :)
20:09 Su-Shee how complete is it? (besides all the basic/core methods/functions which probably can go on the backside of the sheet I'm going to print this..)
20:12 dalek mu: 3984b63 | larry++ | docs/Perl6/Cheatsheet/cheatsheet. (2 files):
20:12 dalek mu: s/slice/lol/ in cheatsheets
20:12 dalek mu:
20:12 dalek mu: We change slice context to lol context (but other mention of
20:12 dalek mu: slice subscripting is correct).
20:12 dalek mu: review: https://github.com/perl6/mu/commit/3984b63343
20:13 36DAAYG1R left #perl6
20:13 masak I have now backlogged over the last #phasers meeting. nice. I only have two general comments: (1) I, too, would like to see work being done on STD_P5. (2) I don't think we should base or choice of rakudo.org CMS on any country's censorship policies.
20:15 moritz_ masak: re workaround: yes, use a role
20:15 masak :)
20:15 cogno left #perl6
20:15 masak why don't I ever see the simple workarounds? :P
20:16 zby_home_ joined #perl6
20:16 moritz_ we could spec that handles + TypeObject only adds methods that the original class doesn't .^can
20:16 masak are you sure that's what we should do?
20:16 masak I saw you suggest it in the ticket, but...
20:16 moritz_ nope, not sure at all
20:16 moritz_ it seems convenient, and easy to implement
20:16 moritz_ that's all
20:17 dalek roast: d6f41fb | moritz++ | S03-operators/so.t:
20:17 dalek roast: test for RT #78788
20:17 dalek roast: review: https://github.com/perl6/roast/commit/d6f41fbb1b
20:17 masak ...seems to me it adds a new "layer" of semantics to C<handles>.
20:17 zby_home_ left #perl6
20:17 TimToady Su-Shee: if it were complete, we wouldn't need the synopses  :P
20:17 cogno joined #perl6
20:18 masak rakudo: class A { has @.foo handles <push>; method push(*@) { say "OH HAI" } }; given A.new { .push(42); say .foo.perl }
20:19 p6eval rakudo de98d1: OUTPUT«===SORRY!===␤A method named 'push' already exists in class 'A'. It may have been supplied by a role.␤»
20:19 masak hm.
20:19 moritz_ rakudo: class A { has @!a handles Array }; A.new
20:19 p6eval rakudo de98d1: OUTPUT«===SORRY!===␤A method named 'new' already exists in class 'A'. It may have been supplied by a role.␤»
20:19 masak I'd have thought explicitly provided methods would just override those in C<handles> declarations.
20:19 moritz_ huh.
20:20 moritz_ why? are they second class?
20:20 PerlJam Seems like carping is the right move there.
20:20 masak moritz_: I don't know for sure. when matching is done by a regex they sure are.
20:21 masak as for type objects.
20:22 masak when they're explicitly given like in my example, maybe it makes sense to complain at compile time.
20:22 PerlJam Would you expect a method name given in C<handles> to override a method of the same name from a parent class?
20:23 masak I think so, yes.
20:23 PerlJam me too.
20:23 masak which is why I don't automatically like moritz_' suggestion.
20:23 * moritz_ doesn't like it either
20:23 masak good, so now we know no-one likes it :)
20:24 masak preferably, I'd like for the original problem not to exist in the first place.
20:24 masak failing that, I'd like for it to go away silently, in a way that surprises the programmer as little as possible :)
20:24 moritz_ well, I don't see how it can fail to exist in the first place
20:25 PerlJam moritz_: very conservatively disallow handles TypeObj entirely.  :)
20:25 wamba left #perl6
20:25 masak I think we need to step back and ask the fundamental question: *why* is this a corner case that we didn't expect?
20:25 moritz_ currently Rakudo behaves differently than I remembered, but the conceptual problem is still there, methinks
20:25 masak PerlJam: that's certainly one solution.
20:25 Maksim_ left #perl6
20:26 moritz_ masak: because it runs before an instance is created
20:26 masak huh? of course it does. all class init code runs before the first instance is created.
20:26 moritz_ but delegation requires an instance
20:27 moritz_ only instances have attributes to which you can delegate
20:27 masak oh, I see now what you mean.
20:27 masak yeah, no, that's not fundamental enough :)
20:27 masak I'm talking about our surprise at finding that .new shows up through the C<handle>d Array object.
20:28 masak it's the want-two-things-to-be-true-at-once scenario.
20:28 moritz_ I guess the reason is that nobody reall thought this case through
20:28 coldhead joined #perl6
20:28 masak right.
20:28 moritz_ or nobody has implemented it before :-)
20:28 PerlJam or both
20:29 masak PerlJam's solution is one of three possible that I see: (1) disallow 'handles TypeObj', (2) remove .new and similar methods, (3) do something smart to resolve things.
20:29 masak the first sounds like a sad option. the second is unthinkable.
20:29 masak and I'm not sure the third works. :)
20:30 Tene Looking at my assumptions, I assumed that they were the "same" &new, so it shouldn't have mattered.
20:30 PerlJam Tene: but they may not be.
20:30 moritz_ Tene: tha fails as soon as either the class or the attribute have a custom .new
20:30 masak even if they are, they're called on different objects.
20:30 Tene Alternately, some sort of expectation that new is only for classes, not instances, although that's actually false in Perl 6.
20:31 Tene moritz_: the question wasn't why it shouldn't fail, but why we didn't *expect* it to not fail.
20:31 pmichaud ETOOMANYNOTS
20:31 moritz_ well, it might make sense to generally only install delegated methods in instances, not classes
20:31 Tene You're completely right.  That's still what I would have expected unless I looked at it closely.
20:31 moritz_ Tene: because we didn't think it through thorougly.
20:32 moritz_ Tene: so that question is answered... can we now move on to the interesting questions?
20:32 PerlJam moritz_: +1 I like that
20:32 masak moritz_: I like that. "only delegate in instances
20:32 masak "
20:32 PerlJam it's very much like a role applied via C<but>
20:34 Tene rakudo: class A { method foo { say "lol" } }; my $a = A.new(); my $b = $a.new(); $b.foo;
20:34 p6eval rakudo 244d0f: OUTPUT«lol␤»
20:34 ggoebel left #perl6
20:35 Tene .new() is prefectly valid on instances, and it would be a pretty significant change to P6 OO if we changed that.
20:35 snearch joined #perl6
20:35 moritz_ I'm only talking about delegation
20:36 moritz_ 'has $!a handles Foo' would only install those methods from Foo that you can call on an instance (or on both instance and type objects), and only install it into instances
20:36 coldhead left #perl6
20:36 coldhead joined #perl6
20:37 PerlJam Tene's point is that the impetus problem still exists I think.   We'll still have this problem with .new()
20:37 cogno left #perl6
20:37 Tene moritz_: you can call .new on instances...
20:37 moritz_ Tene: if the class supports that, yes
20:37 Tene moritz_: Perl 6 doesn't have methods that you can't call on instances.
20:37 moritz_ it's supported by default, but it's not a must
20:38 plainhao left #perl6
20:39 ggoebel joined #perl6
20:39 moritz_ other possible (but not very good) solutions:
20:39 moritz_ * special-case .new
20:39 moritz_ * require the user to special-case .new
20:39 moritz_ * don't install methods from any(Cool, Any, Mu)
20:40 masak ...which is the same as saying "special-case Cool, Any and Mu"
20:40 Tene Don't install methods that are present in common ancestors, whether or not they've been overridden?
20:40 masak Tene: but that goes counter to how C<handles> usually works!
20:40 PerlJam So ... what's the use-case for "handles ClassName"  ?
20:41 PerlJam or, why not restrict it to "handles RoleName"?
20:41 masak PerlJam: I actually wanted to do 'handles Array' the other day.
20:41 masak PerlJam: it's Array that has pull, push et al. not Positional.
20:42 * moritz_ still thinks that inheriting from Array would be a solution
20:42 PerlJam indeed.
20:42 moritz_ rakudo: class A is Cool { has @!a handles Positional }; A.new.push(<foo bar>); say A.perl
20:42 p6eval rakudo 244d0f: OUTPUT«Method 'push' not found for invocant of class 'A'␤  in main program body at line 22:/tmp/9bCP8eyeVA␤»
20:43 masak for whatever reason, I didn't even consider subclassing in that case. my class was an AST node in Yapsi.
20:43 masak that doesn't feel to me like a kind of Array.
20:43 moritz_ why not?
20:43 moritz_ it's a tree node, right?
20:43 moritz_ and a tree has children
20:43 moritz_ so it is a container
20:44 masak yes, but...
20:44 moritz_ in fact, PAST nodes are captures (so they are both array and hash), iirc
20:45 kst left #perl6
20:45 masak in PGE, everything is a Match, which are just generic array-hash objects. it mostly felt like a way to say "we want lots of flexibility, so let's make everything an array-hash".
20:45 masak it made the inheritance hierarchy pretty wonky. something that nqp-rx later fixed.
20:46 moritz_ 'has @!a handles Array' is basically like inheritance, but without the good parts (like C3)
20:46 masak I fear making FUTURE::Node inherit from Array will be the first step of making that hierarchy wonky, too.
20:46 moritz_ right, by introducing cursors that aren't Match
20:46 masak right.
20:46 kst joined #perl6
20:46 masak and making those cursors do things that grammars peviously did.
20:47 moritz_ ok, let's approach this from a different angle
20:47 masak making the whole design clearer and easier to work with.
20:47 moritz_ what would be the technical advantage of faking the inheritance through handles?
20:48 masak I dunno. my PAST nodes wouldn't smartmatch on Array... :)
20:51 masak and I don't see it as "faking the inheritance". that feels like framing a good technique a bit negatively.
20:51 masak I'm saying "this attribute here will handle all the Array-ish messages".
20:51 moritz_ masak: I have the feeling that there's not really anything to be gained here. handling a class is just like inheritance except (1) it is hidden from the type system and (2) is actually like multiple inheritance, because your class still inherits from Any (or whatever else) and (3) flattens the method hierarchy
20:51 PerlJam masak: seems an apt description to me.
20:52 moritz_ actually ...
20:52 moritz_ have you heard of structural types?
20:52 masak moritz_: I'm neither praising the practice nor condemning it. it was just what came to mind when I wanted it. and it seems to have uncovered an interesting cor
20:52 moritz_ where relations between types are not declared, but infered from behaviour
20:52 plobsing left #perl6
20:52 masak ...corner case :)
20:53 masak moritz_: no, that doesn't sound immediately familiar.
20:53 pmurias structural types are duck typing when used in a dynamic setting
20:53 masak sounds a bit like browser sniffing.
20:53 moritz_ so it seems that 'handles Foo' is like inheritance in structural types
20:54 pmurias masak: browser sniffing?
20:54 pmurias browser sniffing is more like nominal typing
20:54 masak ok :)
20:54 masak there's a practice recommended instead of browser sniffing, where you check for the presence of the functions you want to use. I don't remember if it has a name.
20:55 masak "feature detection", maybe. it sounds like that.
20:55 flussence that's the one
20:57 moritz_ introspection.
20:57 moritz_ (didn't we talk about that the other day? :-)
20:57 flussence (perl6 feels a lot like writing webpage stuff... but without the IE6 part)
20:58 PerlJam Here's the relevant section from the Moose docs on delegation: https://gist.github.com/766993
20:59 PerlJam They use special-casing
20:59 TimToady I think delegation should never delegate to submethods, and .new should be considered an honorary submethod for this purpose
21:01 moritz_ so... this begin an "honorary submethod"... how is that determined? by name?
21:01 PerlJam TimToady: any thoughts on class A { multi method foo { } }; class B { has $!.blah handles A;  method foo { } }   #  ??
21:01 TimToady the other alternative is to require new to be declared as a submethod
21:02 moritz_ that sounds wrongish
21:03 TimToady to the extent that new has sekrit knowledge of the current object, it ought to be a submethod
21:03 TimToady delegation certainly breaks that
21:03 * moritz_ doesn't follow, re sekrit knowledge
21:05 TimToady submethods have to know the internals of the current class instance, hence cannot be inherited
21:05 pmurias left #perl6
21:05 TimToady new is behaving like that with respect to the delegating object
21:06 REPLeffect joined #perl6
21:06 coldhead left #perl6
21:06 TimToady delegation supersedes the sekrit knowledge, it doesn't augment it
21:09 moritz_ I see what you mean
21:09 PerlJam TimToady: so you'd special-case .new for delegation?  Without some declarational stuff that says "don't delegate to this method"?
21:11 TimToady I'd make new default that way
21:12 coldhead joined #perl6
21:13 pmurias joined #perl6
21:13 TimToady but the explicit mark might be :U or :_
21:13 TimToady (on the invocant)
21:14 [Coke] :P
21:14 PerlJam Hmm.
21:15 TimToady re your example, I think an explicit method declaration should override a delegation
21:16 PerlJam TimToady: irrespective of multi-ness?
21:16 TimToady you didn't put multi on the override
21:18 TimToady another way forward is to think about delegation as something that happens outside the current object's ISA, so it would pick the object's new or the delegate's
21:18 dalek tpfwiki: (Herbert Breunung)++ | http://www.perlfoundation.org/perl6/index.cgi?perl_6_index_tablet
21:18 TimToady at least for generic type-based delegations
21:18 TimToady presumably an explicit handles <new> would still bring it in
21:19 TimToady so handles Array might only be search for methods that aren't any where in self's ancestry
21:20 TimToady this is perhaps a safer default than treating delegated wild methods as part of the current class
21:20 PerlJam TimToady: So, had the override been multi, would the delegate simply have been added to the list of methods for dispatch  (assuming there were no conflicts)
21:20 PerlJam ?
21:21 TimToady well, that depends on which model we choose
21:21 TimToady if the delegate is inside the proto or outside of it, it changes things
21:21 PerlJam right.  I'm thinking outside makes the most sense.
21:21 TimToady if outside, then you can really only delegate to a different proto
21:22 TimToady I really think it'll be a nightmare to try to get a proto to manage pseudo-inheritance across delegation
21:22 TimToady so I think we shouldn't delegate to multis, only to protos
21:22 masak does Mu.new really have sekkrit knowledge? seems to me it just does a bit of introspection.
21:22 PerlJam (and thus we get an error)
21:22 * masak takes an early night
21:22 TimToady if it doesn't do enough introspection to emulate Mu.new, then it is defective for general use
21:22 masak 'night, zebras!
21:23 TimToady o/
21:23 PerlJam masak: g'night!
21:23 moritz_ \o
21:23 masak left #perl6
21:23 spq1 left #perl6
21:24 PerlJam TimToady: so ... If I've defined my own .new on class C, how do I tell Perl not to delegate to it when someone does has $!foo handles C;  #??
21:24 TimToady but I'm wondering whether wildcard delegation (including to a type) should probably be handled as a failover when normal dispatch fails
21:25 TimToady your own new is inside of Mu, the delegate's new is outside of it
21:26 TimToady so it picks yours instead of the delegate's
21:26 TimToady that works even if your new is the one from Mu
21:27 sorear good * #perl6
21:27 TimToady if you want the tighter semantics we have now, you should probably be using a mixin instead
21:27 moritz_ wfm
21:27 TimToady sorear: hi
21:27 PerlJam I'm not sure I understand all of the implications here, but I like the way things are fitting together  :)
21:28 TimToady it's just another example of trying to hang things off the right peg instead of the wrong one :)
21:28 TimToady I don't profess to understand all the implications either; that's why we're prototyping all this to see how it works
21:29 TimToady but wildcard as failover feels righter
21:29 TimToady and it's a bit like the reformulation of CANDO on lexical scopes, which is also a failover now
21:31 TimToady mixins and eval are very similar in their escape-hatchness wrt name visibility
21:31 plobsing joined #perl6
21:31 TimToady a mixin can "eval" a new object on the end of an inheritance chain much like eval can add a new lexical scope to the lexical chain
21:33 * TimToady is now thinking about the concept of using generic blocks for eval that don't have to be reparsed...
21:38 pmurias sorear: hi
21:42 meteorjay left #perl6
21:42 M_o_C left #perl6
21:44 sorear pmurias: pong
21:45 PerlJam TimToady: to prevent failover would I just provide my own most-generic method that just fails?
21:46 TimToady sure
21:46 PerlJam Still trying to think of problems but not coming up with any  :)
21:55 sorear synced.
22:05 tadzik oh, btw
22:06 tadzik about #80982, I have a patch to review/look at
22:06 tadzik http://wklej.org/id/450996/
22:07 moritz_ looks fine
22:07 * moritz_ compiles and spectests
22:07 tadzik it passes for me. Shall I format-patch it?
22:07 tadzik well, it passed when I wrote it few weeks ago, so I'd check again
22:08 moritz_ no need
22:08 tadzik only the error message turns about to be a bit LTA
22:08 tadzik > 0123
22:08 tadzik Leading 0 does not indicate octal in Perl 6; please use leading 0o if you mean that at line 1, near "\n"
22:08 tadzik I mean, 'near "\n"'
22:08 moritz_ that's a general problem with the grammar atm
22:09 moritz_ std: 01.3e3
22:09 p6eval std 625303c: OUTPUT«ok 00:01 118m␤»
22:10 sorear pmurias: ?
22:11 meteorjay joined #perl6
22:12 learning_perl6 joined #perl6
22:13 tadzik moritz_: looks like t/spec/S02-literals/string-interpolation.rakudo does not pass anymore
22:13 tadzik for it's panic, not worry (line 10)
22:14 learning_perl6 hi--I'm new to perl6, I was wondering if there's a way to dump out variables such that they can be read into a perl5 program
22:14 tadzik so that'd have to be TODO until we have .worry
22:14 dalek specs: 75b4fff | larry++ | S12-objects.pod:
22:14 dalek specs: Defer wildcard delegation to dispatch failover
22:14 dalek specs:
22:14 dalek specs: Wildcard delegation should not be used for methods that are in
22:14 dalek specs: the object's own ancestry (especially .new).  Use explicit delegation
22:14 dalek specs: or mixins to acquire such methods.
22:14 dalek specs: review: https://github.com/perl6/specs/commit/75b4fff7d8
22:14 dalek specs: af947e9 | larry++ | S (3 files):
22:14 dalek specs: Merge branch 'master' of github.com:perl6/specs
22:14 dalek specs: review: https://github.com/perl6/specs/commit/af947e981c
22:14 TimToady hmm, not sure if that was the right thing...
22:15 tadzik moritz_: anyway, patch sent to RT
22:18 learning_perl6 is anyone able to help? I tried print %obj.perl; but Mu and array notation, () instead of [], seems incompatible -_-
22:18 sorear pmurias: I have issues with your last changeset
22:18 tadzik learning_perl6: I'm afraid you'll have to write a module for that
22:19 tadzik or rather: you have an exciting opportunity, go for it!
22:19 learning_perl6 heh, I was thinking of doing that--the main thing I couldn't find was how to determine the type of a variable
22:19 learning_perl6 ie. scalar vs. array. vs. hash
22:19 learning_perl6 with that it should be doable
22:19 sorear if $value ~~ Hash { ... }
22:20 learning_perl6 ah ok
22:20 learning_perl6 thanks!
22:20 tadzik or $val.WHAT
22:20 moritz_ tadzik: that should only be used for debugging
22:20 tadzik oh, ok
22:20 moritz_ it ignores subclassing
22:20 tadzik moritz_: should I mark those octal tests as TODO due to lack of worry?
22:20 learning_perl6 got it--thanks and goodbye
22:20 learning_perl6 left #perl6
22:21 dju_ is now known as dju
22:21 moritz_ tadzik: yep
22:24 tadzik moritz_: http://wklej.org/id/451011/ is that how it should look?
22:25 dalek specs: 9642ed9 | larry++ | S0 (2 files):
22:25 dalek specs: apply val() semantics to <...> and MAIN
22:25 dalek specs:
22:25 dalek specs: Define a new dwimmer that is appropriate for use in situations where
22:25 dalek specs: users are forced to enter text that might actually mean numbers or enums.
22:25 dalek specs: review: https://github.com/perl6/specs/commit/9642ed9725
22:25 tadzik is t/spec/S06-multi/syntax.rakudo known to have a failing test?
22:25 Chillance left #perl6
22:28 moritz_ tadzik: looks fine here
22:29 tadzik also 4 tests in t/spec/S14-roles/parameterized-type.t
22:29 tadzik weird
22:29 tadzik moritz_: should I push the roast changes?
22:29 moritz_ I now had "no subtests run" in two S32-temporal
22:30 moritz_ tadzik: what exactly are you changing?
22:30 moritz_ ah, Date.t uses a leading 0
22:30 kaare_ left #perl6
22:30 moritz_ as well as calendar.t
22:31 tadzik moritz_: http://wklej.org/id/451011/
22:31 tadzik ouch
22:31 moritz_ ... and your spectest passed?
22:32 tadzik no, I'm still reporting errors. Not sure how many of 'em are new
22:32 tadzik t/spec/S32-scalar/defined.t failed 10
22:32 tadzik and Date.t as you said, yes
22:32 tadzik so maybe the ticket itself is not that good idea?
22:33 moritz_ well, it should only warn
22:33 tadzik but as the Date example shows, it'd be quite annoying in everyday usage
22:33 moritz_ I wonder if we should implement <.worry> simply as a printing to STDERR
22:33 tadzik I tried
22:34 tadzik http://wklej.org/id/451017/
22:34 tadzik gives very interesting issues )
22:34 tadzik :)
22:36 tadzik or maybe not
22:36 tadzik hrm
22:38 TimToady STD does duplicate suppression, and allows #OK pattern as well
22:39 tadzik std: 0123
22:39 p6eval std 625303c: OUTPUT«Potential difficulties:␤  Leading 0 does not indicate octal in Perl 6; please use 0o123 if you mean that at /tmp/90KlYyKGFN line 1:␤------> [32m0123[33m⏏[31m<EOL>[0m␤ok 00:01 118m␤»
22:39 TimToady std: 0123 #OK octal
22:39 p6eval std 625303c: OUTPUT«ok 00:01 118m␤»
22:39 tadzik a-ha
22:40 TimToady std: 0123 #OK Leading 0
22:40 p6eval std 625303c: OUTPUT«Potential difficulties:␤  Leading 0 does not indicate octal in Perl 6; please use 0o123 if you mean that at /tmp/Rx_Dm8cstQ line 1:␤------> [32m0123[33m⏏[31m #OK Leading 0[0m␤ok 00:01 118m␤»
22:40 TimToady std: 0123 #OK Leading
22:40 p6eval std 625303c: OUTPUT«Potential difficulties:␤  Leading 0 does not indicate octal in Perl 6; please use 0o123 if you mean that at /tmp/xQiz7kkmrL line 1:␤------> [32m0123[33m⏏[31m #OK Leading[0m␤ok 00:01 118m␤»
22:40 TimToady std: 0123 #OK leading
22:41 p6eval std 625303c: OUTPUT«Potential difficulties:␤  Leading 0 does not indicate octal in Perl 6; please use 0o123 if you mean that at /tmp/zwpjuwvKW3 line 1:␤------> [32m0123[33m⏏[31m #OK leading[0m␤ok 00:01 118m␤»
22:41 TimToady hmm
22:41 TimToady std: 0123 #OK 0
22:41 p6eval std 625303c: OUTPUT«ok 00:01 118m␤»
22:41 tadzik moritz_: http://wklej.org/id/451025/ shoudn't it work ok?
22:43 TimToady std: 0123 #OKLeading
22:43 p6eval std 625303c: OUTPUT«ok 00:01 118m␤»
22:43 TimToady oopsie, kinda
22:47 sorear TimToady: how does that interact with compiler i18n?
22:50 felliott left #perl6
22:51 MayDaniel joined #perl6
22:52 sorear niecza: my %foo = a => 1, b => 2; say ~%foo<b a>
22:52 p6eval niecza v1-83-g516fcee: OUTPUT«Parcel()<instance>␤»
22:52 sorear niecza: my %foo = a => 1, b => 2; say ~[ %foo<b a> ]
22:52 moritz_ tadzik: where is worry definedß
22:52 p6eval niecza v1-83-g516fcee: OUTPUT«2 1␤»
22:52 moritz_ s/ß/?/
22:52 tadzik moritz_: http://wklej.org/id/451017/
22:53 tadzik maybe it's bad that it doesn't return anything
22:53 diakopter TimToady: I fixed psq to better allow void routines (no return slot created, stored, or accessed for the callsite)
22:53 moritz_ tadzik: I guess it needs to return something to indicate that it matched 0 characters
22:54 tadzik yay works!
22:56 pmurias sorear: pong
22:56 pmurias sorear: what's the problem with the last changeset?
22:57 moritz_ TimToady: regarding your latest change, does ('1' but 1) ~~ Int?
22:57 TimToady it's supposed to, though rakudo doesn't yet
22:57 felliott joined #perl6
22:57 TimToady that's the intent, otherwise multi dispatch won't
22:57 dalek niecza: ee1c32e | pmurias++ | src/NAMWriter.pm:
22:57 dalek niecza: add missing file
22:57 dalek niecza: review: https://github.com/sorear/niecza/commit/ee1c32e251
22:58 tadzik https://github.com/perl6/nqp-rx/issues/issue/11 filed
23:00 TimToady sorear: I think #OK only takes English, but an i18n should still have access to the English text, and should arguably be displaying both English and native anyway
23:00 TimToady (presuming they might want to ask for help outside their language group)
23:01 TimToady or we can match on some kind of message id in that case
23:02 TimToady but for many of these systems, the English message *is* the id
23:03 felliott left #perl6
23:13 icwiener left #perl6
23:16 kulp joined #perl6
23:16 kulp left #perl6
23:16 kulp joined #perl6
23:20 TimToady nap &  # resting up for long drive tomorrow
23:26 felliott joined #perl6
23:27 dalek niecza: 4365d61 | sorear++ | Niecza.proj:
23:27 dalek niecza: Use wildcart dependencies in build system
23:27 dalek niecza: review: https://github.com/sorear/niecza/commit/4365d61503
23:27 f00li5h left #perl6
23:32 lue hello fellow zebras and CONGRATULATIONS to David Tennant o/
23:40 shi joined #perl6
23:43 MayDaniel left #perl6
23:44 sorear moritz_: seems to me like p6eval row ids might work better in an order domain where every interval can be subdivided infinitely
23:49 sorear pmurias: do you mind if I impose my whitespace style on everything?
23:51 diakopter p6eval row ids?
23:52 sorear ilbot, sorry.
23:52 diakopter oh
23:53 cdarroch left #perl6
23:53 pmurias sorear: no
23:54 pmurias feel free to even use perltidy if you want ;)
23:58 roen left #perl6

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

Perl 6 | Reference Documentation | Rakudo