»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! | tinyurl.com/p6contest Set by moritz_ on 28 December 2010. |
|||
drake1 | actually, ftp with a comment in the script like # $digest to authorize the executive | 00:00 | |
00:00
bluescreen joined,
alester left
00:01
bluescreen is now known as Guest66567
00:02
smash left
|
|||
drake1 | digest=`cat secret script| sha256`\necho "# $digest" >> script or something like that | 00:03 | |
00:05
kulp joined
00:06
shi joined
00:07
masak left,
pmurias joined
|
|||
pmurias | snarkyboojum: use a while loop, and have a bunch of calls in the loop to minimalise the looping overhead | 00:08 | |
00:08
kulp left
|
|||
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:10 | |
niecza: my $i = 0; while $i < 10 { say $i; $i++ } | 00:11 | ||
p6eval | niecza v1-82-gf7b008c: OUTPUT«0123456789» | ||
sorear | TimToady: actually it's .say I haven't implemented | 00:12 | |
00:12
dukeleto left
|
|||
TimToady | I figgered that out eventually :) | 00:12 | |
00:12
dukeleto joined
00:13
c1sung joined
|
|||
pmurias | sorear: how fast is it compared to Perl 5? | 00:13 | |
sorear | pmurias: it = sub calls? | 00:14 | |
00:14
yarp joined
|
|||
pmurias | yes | 00:14 | |
sorear | it was about 5x faster... the switch to interpreted binding might have eroded that some | ||
00:15
bacek__ left
|
|||
pmurias | sorear: what nam opcodes implement coroutines/continuations? | 00:17 | |
sorear | pmurias: take, cotake, and startgather | ||
pmurias | cotake does what? | ||
sorear | resumes a continuation | 00:18 | |
pmurias | and take? | ||
sorear | yields a value to the code that used cotake | ||
oh, rxend too | 00:19 | ||
00:19
c1sung left
|
|||
pmurias | are coroutines enough or are full continuations required? | 00:20 | |
00:21
pmurias left
00:23
silug left
00:25
envi joined
00:26
rgrau joined
00:29
masonkramer left
00:30
masonkramer joined
00:36
am0c^ joined,
arlinius| joined
00:51
felliott left
00:54
drake1 left
00:55
c1sung joined
00:57
felliott joined
01:02
QinGW joined
01:04
felliott left
01:05
roen joined
|
|||
dalek | lek-poller: b72de5a | sorear++ | push.psgi: Improve message after heuristic merge detection |
01:12 | |
lek-poller: 39e7ab0 | sorear++ | push.psgi: Fix UTF8 handling in push mode. |
|||
01:18
Vlavv left
01:23
V15170R left
01:24
icwiener left
|
|||
sorear | looks like pmurias is responsible for 1/2 of the modules in Niecza :/ | 01:25 | |
also looks like I've passed the halfway point by LOC | 01:28 | ||
and 3/4 of the remaining code is in the one file I'm tackling next | |||
01:31
Franek left,
Vlavv joined
01:35
shi left,
rgrau left
01:39
char00les joined
01:51
exoTek joined
02:02
noganex left
|
|||
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:02 | |
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"» | ||
flussence | buh? | ||
rakudo: my @a = (1,2,3); my $b = sub($c, $d) { ($c, $d).perl.say }; $b(|@a); | |||
p6eval | rakudo de98d1: OUTPUT«===SORRY!===Confused at line 22, near "my $b = su"» | ||
flussence | rakudo: my @a = (1,2,3); my $b = sub ($c, $d) { ($c, $d).perl.say }; $b(|@a); | ||
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» | ||
kent\n | flussence: you need a space after sub | ||
flussence | rakudo: my @a = (1,2,3); my $b = sub ($c, $d, @*) { ($c, $d).perl.say }; $b(|@a); | ||
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» | ||
kent\n learned that the hard way. | |||
flussence | argh, I keep forgetting things like this | 02:05 | |
rakudo: my @a = (1,2,3); my $b = sub ($c, $d, @*etc) { ($c, $d).perl.say }; $b(|@a); | |||
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
|
|||
flussence | I dunno about that error, but it's along those lines (with the right args) | 02:05 | |
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)» | ||
kent\n | *@ not @* | ||
flussence | I knew it was something obvious... /sigh | ||
kent\n | =p | ||
the magic is |@a then I see. | 02:07 | ||
flussence | yeah, the | means "don't squish this into one variable" | ||
TimToady | hmm, I can see @*foo is going to be a faq... | 02:12 | |
the | means cut a slit in the argument list here and slide these in :) | |||
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 | ||
snarkyboojum | someone with commit privileges needs to update the viv link on the homepage of perl6.org to github.com/perl6/std/raw/master/viv | 02:14 | |
TimToady | rakudo: say { a => 32, b => 45 }.WHAT | ||
p6eval | rakudo de98d1: OUTPUT«Hash()» | ||
kent\n | hrm. strange. | ||
TimToady | rakudo: say %( a => 32, b => 45 ).WHAT | ||
p6eval | rakudo de98d1: OUTPUT«Hash()» | ||
TimToady | rakudo: say %( a => 32, b => 45 ).keys | 02:15 | |
p6eval | rakudo de98d1: OUTPUT«ab» | ||
02:15
jaldhar joined
|
|||
kent\n | rakudo: { a => sub (){ 5; } }.perl | 02:15 | |
p6eval | rakudo de98d1: ( no output ) | ||
kent\n | rakudo: { a => sub (){ 5; } }.WHAT | ||
p6eval | rakudo de98d1: ( no output ) | ||
kent\n | TimToady: ^ | 02:16 | |
TimToady | rakudo: say { a => sub (){ 5; } } | ||
p6eval | rakudo de98d1: OUTPUT«a _block125» | ||
TimToady | rakudo: say { a => sub (){ 5; } }.WHAT | ||
p6eval | rakudo de98d1: OUTPUT«Hash()» | ||
TimToady | rakudo: say { a => -> { 5; } }.WHAT | ||
kent\n | oh. I was relying on perlbot's deparseing to help me -_-, | ||
p6eval | rakudo de98d1: OUTPUT«Hash()» | ||
TimToady | rakudo can't deparse blocks yet | 02:17 | |
rakudo: say { a => -> { 5; } }.<a>.() | 02:18 | ||
p6eval | rakudo de98d1: OUTPUT«5» | ||
02:19
felliott joined
02:24
yarp left
|
|||
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:27 | |
flussence | that's happened to me. Good reason to keep things simple in the first place :) | 02:30 | |
02:31
impious left
02:32
silug joined
|
|||
kent\n | too few positional arguments: 2 passed, 3 (or more) expected | 02:33 | |
<-- 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 | |||
cotto_work | kent\n: are you using Parrot master? | 02:34 | |
02:34
Chillance joined
|
|||
kent\n | no, I'm stuck on octobers release still, lazy. | 02:34 | |
cotto_work | ok | ||
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:35 | |
02:36
impious joined,
impious left
02:39
mtk left
|
|||
kent\n | paste.scsys.co.uk/77753 # replicates issue | 02:42 | |
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" | ||
strangely, take out all the \n,s put it into perl6 -e , and it works | 02:44 | ||
( ie: gives a useful error ) | |||
colomon | ah, yes. | ||
kent\n: that poor error message was fixed a couple of months back, after I complained about it. :) | 02:46 | ||
===SORRY!=== | |||
Symbol '$self' not predeclared in subdir (frip.pl:7) | |||
is the current message | |||
02:46
silug left
|
|||
colomon | the error message you got was actually something going wrong when trying to print out the real error message. | 02:47 | |
02:47
mtk joined
|
|||
kent\n | ah!. Awesome. | 02:47 | |
02:52
molaf_ joined
|
|||
colomon | You were absolutely right -- it was really, really annoying. | 02:52 | |
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 | |
02:54
cdarroch left
02:55
yarp joined,
molaf left
02:57
kanishka1 left
|
|||
kent\n | colomon: I'm assuming thats a rakudo error, not parrot? | 02:58 | |
colomon | yes | ||
kent\n files a bump request for gentoo to update their rakudo version | 03:00 | ||
03:06
exoTek_ joined
03:08
exoTek left,
exoTek_ is now known as exoTek
|
|||
flussence | less hassle to just ignore portage and compile manually, imo: gist.github.com/738980 | 03:10 | |
03:12
char00les left
03:14
kanishka joined
|
|||
kent\n | I'm fine with diying it up, but I still file bump reqs ;) | 03:15 | |
kent\n has his own scm-ebuild somewhere as well he has used occasionally | 03:16 | ||
sorear | you should also get another implementation | ||
usually if one gives a useless error message, another won't | |||
03:18
exoTek left
|
|||
colomon | sorear++ | 03:18 | |
flussence | does niecza name the executable "perl6", or just rakudo? | ||
sorear | niecza doesn't | ||
p6eval has two versions of Rakudo installed | |||
03:19
Guest66567 left
|
|||
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:20 | |
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:21 | |
flussence | I'd imagine that changing in the next few months :) | 03:22 | |
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:23 | |
( 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 | ||
kent\n | but what about things that will resort to needing PMC access to do their job? | 03:25 | |
( 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 | ||
as for the modules and stuff, each runtime can have its own module path for that sort of thing | 03:27 | ||
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:28 | |
VXZ | Does p6 has anything like p5's XS that requires binary compatibility? | 03:29 | |
s/has/have/ | |||
kent\n | ie: multiple ( slotted ) system perls are /doable/, but its an awful awful load of work. | ||
[particle] | flussence: better to get support in for alternatives before there are others and they won't work with and old rakudo. | 03:31 | |
VXZ: various perl6 implementations have ways of binding to c libs | 03:32 | ||
VXZ | [particle]: So, if a non-pure-perl module is written for one implimentation, it can't work in another? | 03:34 | |
Is there some way this can be added to the spec, to fix this problem? | |||
[particle] | that's almost certainly the case. | ||
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 | ||
TimToady | VXZ: how do you propose to fix it, other than maximizing the amount that can be written in pure perl? | 03:37 | |
serious question | 03:38 | ||
VXZ | I'm thinking about it... | ||
[particle] thunks about it | |||
TimToady calls [particle] by name | 03:39 | ||
diakopter | careful, you'll wave him away | 03:40 | |
[particle] makes a blatant reference | |||
TimToady | copycat | ||
[particle] | copycat | 03:41 | |
TimToady | you can say that again | ||
VXZ | I guess far more qualified people than me have probably already thought about this, huh? | ||
diakopter | don't point fingers, sez ceiling cat | ||
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 | ||
s/codes/goes | 03:43 | ||
TimToady | we can share the perl part and do the equivalant of #ifdef for the rest | ||
so at least the non-shareable bits are near each other so people have some hope of keeping them in sync | |||
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) | ||
VXZ | What do you do when you need to write a module that runs as fast as C code does, though? | ||
diakopter | improve the optimizer[s] ;) | 03:45 | |
TimToady | there're always tradeoffs | ||
kent\n | VXZ: Buy a supercomputer. | ||
TimToady | but hopefully, if you supply as much type info to Perl as you would to C, it can be almost as fast | ||
VXZ | Like...PDL...do they all of a sudden have to maintain a separate release for each p6 implimentation? | ||
diakopter | improve the optimizers (including the human ones), and use p6 native types | ||
TimToady | PDL is more or less built-in to Perl 6 | 03:46 | |
see S09 | |||
[particle] | if it's doing fancy dynamic stuff it C, it'll sure take a while to write... like writing a vm | ||
VXZ | Yeah, I know. Bad example. Vut you know what I mean. How about SDL? | ||
s/Vut/But/ | |||
[particle] | Ve guessed ;) | 03:47 | |
diakopter can say to use primitive types b/c ... *I* can | |||
kthakore | VXZ: SDL is good | ||
03:47
drbean left
|
|||
VXZ | kthakore: I agree. | 03:48 | |
[particle] | java solved this by writing an OS in java | ||
it's lattes all the way down | |||
kthakore | I already made a script in perl6 that works with SDL | ||
03:49
drbean joined
|
|||
TimToady | but the bindings are parrot bindings, ne? | 03:49 | |
VXZ | Good to know you're supporting p6, kthakore. SDL is kick-ass. | 03:51 | |
kthakore | TimToady: no using the module gist.github.com/744192 | 03:52 | |
VXZ: not yet but some time in the future | |||
TimToady: I will be trying to do parrot bindings but after I get it workign with NativeCall | 03:53 | ||
TimToady | well, but zavolaj is parroty currently | 03:54 | |
but yeah, NativeCall may work across platforms someday | 03:55 | ||
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 | ||
plobsing | parrot's NCI aims to make things possible, not necessarily pretty | ||
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 :) | ||
once that project gets going, anyway. | |||
[particle] | it's impossible to know without doing | ||
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 | ||
[particle] | javascript? tcl? | ||
kthakore | VXZ: for better games you will need the game loop to be tighter then even whaat p5 can do now. | ||
so writing critical sections in C/C++ should always be considered | 04:00 | ||
TimToady | or in the C/C++ subset of Perl 6 :P | 04:01 | |
[particle] remembers writing critical sections in assembly | |||
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? | ||
[particle] | so strictly that they can be implemented natively during compilation | 04:05 | |
diakopter | if your optimizer is good enough, effectively, maybe. | ||
VXZ | s/ c / machine code / # can't think today | ||
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. | ||
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 | |
and other "unmanaged" concepts | |||
diakopter | oooo | ||
TimToady | but Perl 6 is designed to be the mother of all languages, almost literally | ||
diakopter | like Babel, only higher | 04:11 | |
TimToady | so with enough declarations you can turn it into any other language | ||
I don't mind if my tower reaches to heaven--I'm already expected there. :) | |||
diakopter | apparently there's a language named nimrod | 04:12 | |
saaki | sign me up | ||
04:13
satyavvd joined
|
|||
TimToady | sign here -> ............. | 04:13 | |
snarkyboojum | or the ultimate nam-shub :D | 04:14 | |
kthakore | haha | 04:18 | |
TimToady: well my concern is being able to manage low level databanks (simple structs) with high level p6 scripts | 04:19 | ||
if this can be done | |||
with out too much of a overhead | |||
TimToady | simple structs should be pretty easy | ||
kthakore | then we don't need C++ | ||
game structs are usually very simple | 04:20 | ||
the hard part is getting them ready to render in a timely fashion | |||
TimToady | see S09:129 | 04:21 | |
diakopter waits for git clone of fission-edge mono to build on p6eval box | 04:24 | ||
kthakore | ok | ||
04:26
Su-Shee left
04:27
redicaps joined
04:28
Su-Shee joined
|
|||
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... | ||
diakopter | TimToady: which way does it depend | ||
TimToady | a value type can't have mutators | ||
so for a normal C struct that you can change the elements of, you wouldn't want it considered a value type | 04:30 | ||
crumb, have to set up a new public key for github due to the disk fiasco... | 04:43 | ||
[particle] | 12345 <-- here, i made you one! | 04:52 | |
diakopter | whee; perlesque runs just fine | 04:55 | |
(on mono trunk) | |||
(I'd been using .net 4.0) | |||
dalek | ecs: 9259016 | larry++ | S09-data.pod: structs come as either values or objects The treatement of a compact struct as a value or as an object depends on whether there are mutators. |
05:02 | |
TimToady | I guess it worked | 05:03 | |
05:13
satyavvd left
|
|||
sorear | diakopter: mono 2.8.0 supports .net 4 features | 05:16 | |
the main reason to use trunk is the garbage collector improvements | 05:17 | ||
VXZ | Btw, thanks for answering all my p6 questions, guys... | 05:20 | |
05:23
dalek left
05:24
mj41 left,
mj41_ joined,
[particle] left,
mj41_ is now known as mj41,
dalek joined,
ChanServ sets mode: +v dalek
|
|||
TimToady wishes someone would answer all my Perl 6 questions... | 05:31 | ||
sorear | heh. | 05:32 | |
05:32
lue joined
|
|||
lue | hello fellow denizebras o/ | 05:35 | |
05:35
nat2610_ joined
|
|||
snarkyboojum | helue | 05:36 | |
TimToady | lihue, hi | 05:37 | |
cotto | jnthn, ping | 05:43 | |
TimToady | which I own a piece of: maps.google.com/maps?client=ubuntu&...CBoQ8gEwAA | 05:45 | |
05:48
[particle] joined
|
|||
diakopter | sorear: right, of course. | 05:48 | |
sorear: but I couldn't find a mono 2.8 on that box | |||
so I built one | 05:49 | ||
lue | oh, you and your clever punnery, TIMTOWTDI :) | ||
05:49
rlinuxguy2 joined
|
|||
rlinuxguy2 | whats this channel about | 05:49 | |
diakopter | sorta like its name | 05:51 | |
TimToady | rlinuxguy2: what would you like to know about Perl 6? | 05:52 | |
rlinuxguy2 | i just googled, why make a new language with the same name as another only with a future edition | 05:53 | |
what happens when the real perl goes version 6? | 05:54 | ||
seems kinda messed up to me | |||
TimToady | then it's Christmas | ||
rlinuxguy2 | when I say goes version 6 | ||
I mean their own edition | |||
TimToady | what exactly do you mean by "real" perl? All old versions of perl are still "real" | ||
diakopter | Perl 6's older sibling won't ever increment to version 6 | 05:55 | |
rlinuxguy2 | how do you know | ||
and maybe im misunderstanding | |||
Perl 5 and Perl 6 are two languages in the Perl family, but of different lineages | |||
TimToady | because they're not insane, at least not that insane | ||
sjn | lim 5->6 Perl | ||
TimToady | they never incremented System V either... | 05:56 | |
rlinuxguy2 | why would them continuing the version numbering to 6 make them insane | ||
TimToady | because Perl 6 already means something else | ||
it would be culturally unlikely | |||
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 | ||
TimToady | I'm the perl train. :) | ||
rlinuxguy2 | is like me making an os called android 8 | ||
while they're on android 3 | |||
TimToady | and the perl train was already slowing down ten years ago | ||
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 | ||
TimToady | it's basically a done decision, for good or ill, so we'll make the best of it | ||
rlinuxguy2 | what is the name of the version after 5 you think they'll go with? | ||
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 | ||
TimToady | think of Perl as more of design philosophy, and the version a turn of the design crank | ||
sorear | rlinuxguy2: Perl 6 game first | ||
rlinuxguy2: Perl 6 was always supposed to be the next version of Perl | |||
diakopter | rlinuxguy2: 5.6, 5.8, 5.10, 5.12, 5.14 and so on | ||
TimToady | there's always 5.14, 5.15, 5.16, 5.17--they aren't going to run out of versions any time soon | ||
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 | ||
rlinuxguy2 | over grass roots versions | ||
diakopter | hee | ||
rlinuxguy2 | I thought the minor numbers were used for minor updates | ||
TimToady | well, depends on which grass gets more fertilizer and is healthier | ||
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 | ||
you guys could change whatever you want anytime you want, breaking things | |||
sorear | rlinuxguy2: I think we are the official Perl team | ||
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 | ||
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) | ||
diakopter summons Larry | |||
or should I say subpoenas | |||
rlinuxguy2 | oh you have larry himself on your guys etam? | ||
team | 06:03 | ||
sjn giggles | |||
cotto waits for it | |||
lue | .oO(I would think Larry was involved in Perl 5 as well) |
||
TimToady looks around and doesn't see Larry... | |||
snarkyboojum | the big L | ||
rlinuxguy2 | lue I thought perl 5 was made by the official site people | ||
whoever they are | |||
sjn | 7whois TimToady | ||
rlinuxguy2 | aren't you guys a different group? | ||
sorear | rlinuxguy2: understand that in 2002ish Perl (5) was quite stagnant; we needed either an evolution or a revolution | ||
rlinuxguy2: as it happened, both started in parallel | 06:04 | ||
TimToady | or both :) | ||
eventually, Perl 6 will supersede Perl 5, but we're talking a decade or two | |||
06:05
am0c^ left
|
|||
TimToady | Perl 6 is designed for the looooong teeeeeeeeerm | 06:05 | |
sjn is quite happy Perl 6 isn't a rush job | |||
[particle] | are you sure that what you perceive as long term isn't two terms in a row? | ||
diakopter | std: looooong: teeeeeeeeerm: ; | 06:07 | |
p6eval | std 625303c: OUTPUT«ok 00:01 117m» | ||
rlinuxguy2 | sounds like you guys are taking the .net route | ||
diakopter | well... | ||
TimToady | that's one of our routes | ||
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. | ||
TimToady | it's more like a flooding algorithm | ||
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 | ||
TimToady | you're confusing the parrot vision with the perl6 vision, like we did at the beginning | ||
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 | ||
(but also be mutable into any other language) | |||
so the two visions may re-unify someday | |||
rlinuxguy2 | is either matured yet? | 06:10 | |
[particle] | cerberus chases his tail | ||
rlinuxguy2 | or would you trust either in important apps? | ||
cotto | they're starting to do so already. The Parrot vision for Lorito is to have many backends. | ||
TimToady | well, I've written a real app in Perl 6 | ||
so have other people | |||
[particle] | there is more than one compiler written in perl 6 | 06:11 | |
TimToady | so yes, I've trusted rakudo that much | ||
there are 253 running examples of Perl 6 on rosettacode, see rosettacode.org/wiki/Category:Perl_6 | |||
so we're largely in the fine-tuning stages | 06:12 | ||
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 | ||
it's definitely getting well beyond the toy stage | 06:14 | ||
still fun though :) | |||
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 | |
it all depends on what it's used for | |||
coldhead | maturity | ||
TimToady | might be closer to Klingon at the moment... | ||
sjn | and the answer changes as time goes on | ||
TimToady | coldhead: matureness is a perfectly good word, especially if you're wanting to mean what people usually mean by "maturity" | 06:17 | |
s/mean/not mean/ | |||
coldhead | i was demonstrating immatureness, i'm sorry | 06:18 | |
TimToady | :) | ||
please be more maturenesslessnessless in the future :) | |||
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:22 | |
sjn | that would be a "stable" language :) | 06:23 | |
PerlJam | lue: how is that different from any other language? :) | ||
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) | ||
sorear | there is an inherent linguistic ambiguity between "Perl 6" and "Perl 6 as implemented by Rakudo in Jan 2011" | ||
"assembler", "assembler as implemented by the P4 Northwood" | 06:25 | ||
"English", "English as spoken by sorear in 2010" | |||
"Homo", "sorear" | |||
TimToady | we are 2010less now | ||
sorear | the first of all pairs can evolve, the second cannot | ||
PerlJam | sorear: you can't evolve? | 06:26 | |
[particle] | not the him in 2010 | ||
sorear | there are also questions of where to draw the line | ||
PerlJam | oh, you only mean in the genetic sense I guess. | ||
lue | "English as spoken by sorear in 2010" had expired 2011-01-01T00:00:00Z | ||
sorear | C++ is obviously a memetic descendant of C, but those who ask "does C evolve" often ignore C++ | ||
this is much like saying that H. erectus cannot evolve because its genetic descendants are called something else | 06:27 | ||
[particle] | long long | ||
sorear | tl;dr - your question sucks. | ||
TimToady | hugme: hug rlinuxguy2 | 06:28 | |
sorear | hugme is absent | ||
TimToady | ENOHUGS | ||
PerlJam | TimToady: you're free to hug sans bot :) | ||
TimToady hugs everyone, not necessarily in that order | 06:29 | ||
what's the proper package to install to get readline support in the repl? | |||
sorear | libreadline-dev | 06:30 | |
then reconfigure and recompile Parrot | |||
TimToady | thanks | ||
sorear | niecza: say 0b1010101 | 06:42 | |
p6eval | niecza v1-82-gf7b008c: OUTPUT«===SORRY!===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 | ||
../home/p6eval/niecza/src/Niecza/Actions.pm line … | |||
diakopter | niecza: say 0o1010101 | 06:43 | |
p6eval | niecza v1-82-gf7b008c: OUTPUT«266305» | ||
diakopter | cool | ||
sorear | niecza: "foo" ~~ /(.)*/; say ~@0 | ||
p6eval | niecza v1-82-gf7b008c: OUTPUT«f o o» | 06:44 | |
sorear | niecza: "foo" ~~ /(.)*/; say +[ @0 ] | ||
p6eval | niecza v1-82-gf7b008c: OUTPUT«1» | ||
06:44
rlinuxguy2 left,
cjk101010 joined
|
|||
sorear | guess I'll be using @$<foo> | 06:46 | |
TimToady | I suspect +[] is always 1, since [] behaves like $ | ||
rakudo: "foo" ~~ /(.)*/; say +[ @0 ] | 06:47 | ||
p6eval | rakudo de98d1: OUTPUT«1» | ||
TimToady | rakudo: say +[1,2,3] | ||
p6eval | rakudo de98d1: OUTPUT«3» | ||
TimToady | hmm | ||
well, maybe not | 06:48 | ||
rakudo: my @x = 1,2,3; say +[ @x ]; | 06:49 | ||
p6eval | rakudo de98d1: OUTPUT«3» | ||
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 | ||
..'Cool::Num' a… | |||
TimToady | rakudo: "foo" ~~ /(.)*/; say +[ @$0 ] | ||
p6eval | rakudo de98d1: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at line 22, near "@$0 ]"» | ||
TimToady | phooey on rakudo | ||
rakudo: "foo" ~~ /(.)*/; say +[ @($0) ] | |||
p6eval | rakudo de98d1: OUTPUT«3» | ||
TimToady | rakudo: "foo" ~~ /(.)*/; say +@($0) | 06:51 | |
p6eval | rakudo de98d1: OUTPUT«3» | ||
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» | ||
..niecza v1-82-gf7b008c: OUTPUT«Infinity» | |||
..rakudo de98d1: OUTPUT«Inf» | |||
sorear | rakudo: say (1 / 0).WHAT | ||
p6eval | rakudo de98d1: OUTPUT«Rat()» | 06:53 | |
diakopter | evalbot control restart | ||
06:53
p6eval left
06:54
wtw joined
|
|||
diakopter crosses keyboard keys | 06:54 | ||
zugh | |||
06:54
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
TimToady | zugh seems to be the magic word | 06:54 | |
kind of a cross between xyzzy and plugh | 06:55 | ||
coldhead | yo ChanServ can I get ops? | 06:56 | |
sorear | check the list | 06:58 | |
/msg chanserv access #perl6 list | |||
coldhead | ooh neat thanks | 06:59 | |
i'll just PM ChanServ about getting added to that list | |||
sorear | chanserv is a bot. | ||
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.043161200:00:00.140165600:00:00.281389400:00:00.4718993» | ||
TimToady | do you need ops for anything in particular? | ||
coldhead | i just think it would be a nice gesture to give them to me | ||
diakopter | it actually wouldn't; there's nothing to be done with them | 07:01 | |
coldhead | you can banish heretics! | ||
sorear | we hug heretics here. | 07:02 | |
coldhead | i could give heretics ops! | 07:03 | |
sorear | I get the feeling you haven't read the freenode manifesto | ||
TimToady | we'd rather give away Perl | ||
long term, Perl is much more discordian than ops | 07:05 | ||
coldhead | respekt | 07:06 | |
sorear | niecza: "" ~~ / <?> /; say ?$/ | 07:07 | |
p6eval | niecza v1-82-gf7b008c: OUTPUT«Bool::True» | ||
diakopter | sock it to me | ||
TimToady | it's not sock-it-to-me time | ||
diakopter | but it is Miller time | 07:08 | |
07:08
vladikoff joined
|
|||
TimToady | sock-it-to-me time is before most of yous was borned | 07:08 | |
diakopter | oh, I meant to type "sokk it to me" | 07:09 | |
I punfaild | |||
from respekt | |||
vladikoff | coldhead, it's my first day using Perl6 and i love it! | ||
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» | ||
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» | ||
sjn | vladikoff++ # For trying out Perl 6 :) | 07:13 | |
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» | ||
diakopter | 1 million recursions | ||
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); | |||
p6eval | perlesque: OUTPUT«00:00:01.7616573» | ||
TimToady | is it doing tr optimization? | ||
diakopter | no | ||
it's extremely pessimized | 07:19 | ||
07:19
temp01 joined
|
|||
diakopter | it's setting return slot values as a field in each frame object on every return | 07:19 | |
temp01 | found it | ||
diakopter | ewww, I know | ||
vladikoff | temp01, hi ! | ||
sorear | "tr" optimizations? | 07:21 | |
TimToady | tail recursion | ||
sorear | are vladikoff, temp01, and coldhead affiliated? | ||
ah | |||
vladikoff: temp01: welcome!! | |||
diakopter wonders how niecza does on such a loop | |||
sorear | diakopter: shouldn't be too bad | 07:22 | |
<100MB allocations, <5s | |||
diakopter | specifically, does the heftiness of the Ints outweigh the (probably) faster runloop | ||
vladikoff | sorear, we are the same person | ||
sorear | oh it'll definitely be slower. | 07:23 | |
diakopter | the runloop? or the additions/comparisons? | ||
sorear | the additions/comparisons | 07:24 | |
and maybe the recursions too | |||
niecza frames are quite fat (>20 words), they're designed to be reused | |||
diakopter | ah, oh yeah, I remember now | ||
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 | ||
diakopter | is it bad that I can't remember whether BigInteger is in this perlesque? ;) | 07:26 | |
ah, no it's not (yet) | |||
oh wait, mono has it | |||
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:27 | ||
p6eval | perlesque: OUTPUT«00:00:04.0556159» | 07:28 | |
diakopter | har | ||
that's not too great | |||
but, note that the nested evals have access to each's full lexical scope descendantry | 07:29 | ||
argh | |||
ancestry | |||
diakopter wonders about golfing the man-or-boy again for irc | 07:30 | ||
evalbot control restart | 07:34 | ||
07:34
p6eval left
07:35
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
diakopter | # remove extraneous/old entries | 07:35 | |
moritz_: sry about the non-committed changes to evalbot.pl :( | |||
lue | goodnight #perl6 o/ | ||
diakopter | nite | 07:36 | |
sorear | some form of time or now will be available in post-rewrite niecza | ||
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 | ||
diakopter | as you see, perlesque just has them all "preloaded". who knows how bad^Wwrong that is | 07:38 | |
obviously there are some name conflicts with Perl 6 types | 07:39 | ||
sorear | How many Perl 6 types start with Microsoft:: or System::? | ||
diakopter | heh | ||
well, the classname resolution thingie in perlesque tries those prefixes as fallbacks | 07:40 | ||
as well as others | |||
obviously user types take precendence | |||
precedence | |||
decommute& | 07:41 | ||
07:42
kaare joined,
kaare is now known as Guest32863
|
|||
dalek | ecza: 516fcee | sorear++ | / (6 files): [v6] Start on NieczaActions translation |
07:49 | |
sorear | sleep& | 07:50 | |
07:50
roobie| joined
|
|||
cotto | I get this with the latest parrot: nopaste.snit.ch/27567 . Should parrot be blamed for those failures? | 07:52 | |
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 | |
(not against the latest parrot, so it could be something breaking again under that.) | |||
cotto | it updated itself when I ran make spectest_regression | ||
I started that a couple hours ago, +/- | 07:59 | ||
colomon | okay, so that's not it. | ||
cotto | it looks like plobsing++ has at least taken care of the bulk of the breakage | 08:02 | |
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:04 | ||
08:07
satyavvd joined
|
|||
moritz_ | good morning | 08:15 | |
tadzik | good morning | ||
colomon | o/ | ||
08:20
justatheory left,
M_o_C joined
08:23
snearch joined
|
|||
clkao | 5/win 26 | 08:26 | |
08:29
snearch left,
snearch joined
08:32
pnu left
08:34
pnu joined
08:37
daxim joined
08:42
kensanata joined
|
|||
colomon | err... how to return two arrays from a function? I feel like I'm forgetting something really obvious... | 08:47 | |
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])» | ||
..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 | |||
..1064 (SAFE C381_A… | |||
colomon | actually, now thinking my problem was at the receiving end. | 08:49 | |
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 | |||
p6eval | niecza v1-83-g516fcee: OUTPUT«===SORRY!===Bogus statement at /tmp/72cO4SmiOB line 1:------> 5,6; return @o, @p }; my (@o, @p) = foo;⏏. say :@o.perl, :@p.perlParse failed» | ||
..rakudo de98d1: OUTPUT«===SORRY!===Confused at line 22, near ". say :@o."» | |||
..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» | |||
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" => []» | ||
colomon | yeah, that | ||
08:59
cogno joined
|
|||
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)» | ||
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 | ||
..(SAFE C381_ANO… | |||
moritz_ | niecza: sub f { return 1, 2 }; say f | ||
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 | ||
..(SAFE C381_ANO… | |||
moritz_ submits nieczabug | 09:04 | ||
rakudo: sub f { return 1, 2 }; say f | 09:05 | ||
p6eval | rakudo de98d1: OUTPUT«12» | ||
moritz_ | niecza: 10:03 < moritz_> niecza: sub f { return 1, 2 }; say f | 09:06 | |
p6eval | niecza v1-83-g516fcee: OUTPUT«===SORRY!===Confused at /tmp/BdsP7Ebp8u line 1:------> 10:⏏03 < moritz_> niecza: sub f { return 1,  expecting any of: coloncircumfix signatureParse failed» | ||
moritz_ | sorry | ||
niecza: say ?("a" ~~ /a/); say ?$/ | |||
p6eval | niecza v1-83-g516fcee: OUTPUT«Bool::TrueBool::True» | ||
09:13
masak joined
|
|||
masak | good morning, zebras. | 09:13 | |
moritz_ | good morning, mr. wombat | 09:14 | |
colomon | o/ mammals | 09:18 | |
colomon feels like crap, but is furiously upgrading his AI for p4 | 09:20 | ||
09:24
roobie| left
09:25
cogno left
09:26
PacoLinux left
09:37
hanekomu joined
09:43
dakkar joined
09:52
vladikoff left
09:54
roen left
|
|||
masak | <TimToady> I'm the perl train. :) | 09:54 | |
this made my day, and it's only 11 am. :) | |||
09:59
gimix joined
|
|||
diakopter | :) | 10:04 | |
10:05
cogno joined,
redicaps left
|
|||
masak | moritz_++ # submitting nieczabugs | 10:06 | |
10:08
roen joined
|
|||
diakopter tries out cpanminus on strawberry | 10:10 | ||
odd; strawberry's startup script doesn't put c:\strawberry\perl\site\bin in the %PATH% | 10:13 | ||
or maybe I broke it thusly | |||
10:14
roobie| joined
|
|||
dalek | albot: 18079f9 | (Perl 6 Evalbot)++ | evalbot.pl: disable some non-working targets |
10:15 | |
moritz_ | fwiw 'Perl 6 Evalbot' is a low security account that allows us to push changes from the p6eval server | 10:16 | |
diakopter | 18079f9 # also re-fixes the perlesque target ;) | 10:18 | |
i'll manually update it for now | |||
10:25
cogno left
10:26
mtk left
10:32
roobie| left
10:33
QinGW left
10:34
roobie| joined,
mtk joined
10:49
roobie| left
10:50
coldhead left,
coldhead joined
11:00
cogno joined
11:07
roobie| joined
11:10
coldhead left
11:25
cogno left
11:30
M_o_C left
11:39
redicaps joined
11:40
wamba joined
|
|||
diakopter | std: sub (-->) { } | 11:41 | |
p6eval | std 625303c: OUTPUT«===SORRY!===No type found after --> at /tmp/bKQfZ80loD line 1:------> sub (-->⏏) { } expecting any of: name param_sep routine_def signature type_constraintParse failedFAILED 00:01 119m» | ||
diakopter | drat | ||
11:45
satyavvd left
11:47
satyavvd joined
11:52
satyavvd left
12:02
roen_ joined
|
|||
diakopter | nm the drat :) | 12:05 | |
12:11
fhelmberger joined,
yarp left
12:12
roen left
|
|||
dalek | rixel: 586ec1c | diakopter++ | / (12 files): enable void-returning routines; somewhat less pessimized for tail recursion. |
12:13 | |
12:13
roen joined
|
|||
diakopter | yay; 1/8 reduction in time | 12:15 | |
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); | |||
p6eval | perlesque: OUTPUT«00:00:01.4218955» | ||
12:15
kensanata left,
roobie| left
12:21
roobie| joined
12:28
explorer__ left
12:30
masonkramer_ joined,
masonkramer left,
masonkramer_ is now known as masonkramer
12:31
Axius joined
12:36
kanishka left
12:37
masak left,
Axius_ joined
12:38
Axius left
12:40
Axius_ left,
Axius joined
12:42
jferrero joined
12:49
cogno joined,
Axius left
|
|||
dalek | rixel: de922f0 | diakopter++ | / (8 files): got post-increment and post-decrement working; shaved another x0% off the simple million-recursions toy benchmark. |
12:51 | |
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» | ||
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); | ||
p6eval | perlesque: OUTPUT«00:00:01.4203689» | ||
diakopter | sigh | ||
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» | ||
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); | ||
p6eval | perlesque: OUTPUT«00:00:04.8198533» | ||
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
|
|||
p6eval | perlesque: OUTPUT«00:00:04.7934038» | 12:56 | |
diakopter | ok, so, essentially equivalent. | 12:57 | |
12:57
yarp joined
|
|||
diakopter | whatevs | 12:57 | |
12:57
Guest32863 is now known as kaare_
|
|||
moritz_ | in perlesque, of what type is a literal like 10? | 12:58 | |
is it int? or Int? | |||
12:58
Gahrian left,
roen_ left
|
|||
diakopter | technically, all the declarations of variables should have type annotations | 12:58 | |
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 :) | ||
plus, there's no such thing as an Int | |||
moritz_ | so 10 is an int8? | ||
diakopter | well, no | 13:00 | |
hm | |||
moritz_ | or an int64 on 64bit machines? | ||
or a real int? | |||
13:00
jferrero left
|
|||
moritz_ | wait, lower case int probably isn't arbitrary precision in the spec | 13:01 | |
diakopter | no it's word size I think | ||
but .. | |||
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 | ||
..(sprixe… | |||
diakopter | perlesque: my byte $a = 256 | ||
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 | ||
..(sprixe… | |||
diakopter | hm | ||
13:03
cogno left
|
|||
diakopter | ah, I see my error | 13:04 | |
13:05
cogno joined
|
|||
diakopter | moritz_: which others would you like? :D | 13:06 | |
sbyte, uint, etc | 13:07 | ||
msdn.microsoft.com/en-us/library/hfa3fa08.aspx | |||
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
|
|||
diakopter | perlesque: my byte $a = 255; | 13:16 | |
p6eval | perlesque: ( no output ) | ||
diakopter | perlesque: my byte $a = 256; | ||
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 | ||
..op… | |||
diakopter | \o/ | ||
moritz_: to be precise, the only *user* of perlesque will be me, and the sprixel/viv compiler that targets it | 13:18 | ||
13:19
roobie| left,
MayDaniel joined
|
|||
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 | rixel: 63e1294 | diakopter++ | sprixel/src/ (2 files): add a bunch more default values for the built-in CLR value types |
||
moritz_ | :-) | ||
13:20
cogno joined
13:22
tzhs joined
|
|||
yarp | my $b = '哈'; | 13:24 | |
13:24
roobie| joined
|
|||
moritz_ | .u 哈 | 13:24 | |
phenny | U+54C8 CJK UNIFIED IDEOGRAPH-54C8 (哈) | ||
diakopter | perlesque: my $b = '哈'; Console.WriteLine($b) | 13:25 | |
p6eval | perlesque: OUTPUT«哈» | ||
diakopter | niecza: my $b = '哈'; say($b) | ||
p6eval | niecza v1-83-g516fcee: OUTPUT«哈» | ||
13:26
agentzh joined
|
|||
diakopter | hmm. it appears I've stayed awake all night. | 13:26 | |
morning alarm beepeth | 13:27 | ||
13:34
cogno left
13:36
MayDaniel left
13:39
cogno joined,
_twitch joined
13:44
snearch left,
cjk101010 left
13:45
lichtkind joined
13:46
PacoLinux joined
13:47
PacoLinux left
13:48
PacoLinux joined
|
|||
lichtkind | does the tk binding for rakudo really work? | 13:48 | |
moritz_ | lichtkind: I had a working tk windows through blizkost and the p5 Tk library at some point | 13:49 | |
dunno if it works at the moment | |||
13:50
PacoLinux left,
GinoMan joined,
PacoLinux joined
13:51
PacoLinux left,
PacoLinux joined
13:52
PacoLinux left,
PacoLinux joined
|
|||
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:55 | |
moritz_ | lichtkind: I thought it was aborted | 13:56 | |
lichtkind: got a link for me? | |||
lichtkind | news.perlfoundation.org/2011/01/tpf...-2010.html | ||
yes i had the feeling it was so i just was not sure | |||
moritz_ | news.perlfoundation.org/2010/03/gra...ss_in.html | 13:57 | |
the markup is totally borked, but with some patience one can read it | 13:58 | ||
[Coke] | completed was probably the wrong word there, but vadim's grant dates from the time when some $$ was paid up front. | 13:59 | |
moritz_++ #finding the original link | 14:00 | ||
moritz_ | I'll leave a comment | ||
[Coke] | danke. | 14:02 | |
14:06
plainhao joined
|
|||
lichtkind | thank you | 14:06 | |
14:07
GinoMan left
14:08
GinoMan_ joined,
agentzh left
14:09
GinoMan_ left
14:11
wamba left,
GinoMan joined
|
|||
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....tor_tablet | 14:17 | |
14:18
envi left
14:20
envi joined
|
|||
ggoebel | Folks interested in Perl6 concurrency may also be interested in linux kernel developer Paul McKenney's creative commons book on parallel programming: paulmck.livejournal.com/23027.html | 14:22 | |
14:24
cogno left
14:25
yarp left
|
|||
mathw | ooh | 14:32 | |
good title for it :) | 14:33 | ||
14:38
redicaps left
14:47
muixirt joined
|
|||
muixirt | while 1 {} munches memory slowly, again | 14:48 | |
moritz_ | :( | 14:51 | |
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 (?) | ||
s/is/are/ | |||
moritz_ | about 4 remain, on my machine | 14:53 | |
14:53
felliott left
|
|||
colomon | muixirt: you think the memory leak is the problem? | 14:53 | |
context? my last spectest run (with --gen-parrot) was perfect... | |||
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 | ||
muixirt | colomon: what memory leak are you talking about? | ||
colomon | muixirt: the memory leak you just reported? "while 1 {} munches memory slowly, again" | 14:55 | |
muixirt | it's maybe *a* problem (not really for me) | 14:56 | |
15:04
cogno joined,
Patterner left,
Psyche^ joined,
Psyche^ is now known as Patterner,
hanekomu left
15:05
xinming_ joined
15:08
xinming left
|
|||
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 | ||
muixirt: and bisecting finds you the last good / first bad version | |||
muixirt | the last good version I know for sure is version 2010.10 | 15:14 | |
would you first start with rakudo or with parrot? | |||
15:16
rgrau joined
|
|||
moritz_ | you bisect in rakudo, and use --gen-parrot every time | 15:18 | |
if the first bad version is a bump in PARROT_REVISION, you continue by bisecting parrot | |||
muixirt | would be easier if testcases were available in pir that resemble rakudo use cases (if that's feasible) | ||
moritz_ | that would be easier indeed | 15:19 | |
if you can reduce it to a pure PIR example, it'll be easier | |||
muixirt | once I had a test case for the while loop, looking... | 15:21 | |
15:24
roen_ joined
|
|||
muixirt | didn't work out :-( | 15:24 | |
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 | |||
moritz_ | and see if the result still runs, and if yes, still leaks | ||
15:25
cogno left,
plobsing left
15:27
gbacon joined
15:28
wtw left
|
|||
muixirt | moritz_: my old pir test case lacks that capture_lex $P91 \ $P91() fun | 15:29 | |
15:29
MayDaniel joined
15:33
kaare_ left
|
|||
muixirt | bind_llsig? Never heard of that... | 15:36 | |
moritz_ | the rakudo signature binder | 15:39 | |
muixirt | is the doc in src/ops/perl6.ops for bind_llsig still correct? | 15:43 | |
moritz_ | no idea | 15:44 | |
15:45
roobie| left
|
|||
muixirt | bind_llsig is nowadays a one arg op (?) | 15:45 | |
15:48
Maksim_ joined
15:49
Tedd1 left,
justatheory joined
|
|||
colomon | with MAIN, how does one specify an Int / Real argument? | 15:49 | |
TimToady | currently, using Str as Int | 15:50 | |
moritz_ | you can coerce | ||
TimToady | that's going to change though | ||
colomon | hmm? | ||
TimToady | we can't yet multi dispatch on types in MAIN | ||
15:51
pmurias joined
|
|||
colomon | something like $str where { +$str > 0 } ? | 15:51 | |
pmurias | sorear: ping | ||
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. | ||
TimToady | then multi MAIN (Int $i where $i > 0) will be possible | ||
colomon | for what it's worth, $long-run where { $long-run > 0 } seems to be working... | 15:53 | |
that's MAIN($long-run where { $long-run > 0 }) | |||
TimToady | std: multi MAIN (Int $i where $i > 0) { $i } | ||
p6eval | std 625303c: OUTPUT«ok 00:01 124m» | ||
TimToady | rakudo: multi MAIN (Int $i where $i > 0) { $i } | ||
p6eval | rakudo de98d1: OUTPUT«===SORRY!===Malformed multi at line 22, near "MAIN (Int "» | ||
colomon | rakudo: multi MAIN ($i where $i > 0) { $i | 15:54 | |
TimToady | rakudo is still more restrictive on where clauses | ||
p6eval | rakudo de98d1: OUTPUT«===SORRY!===Malformed multi at line 22, near "MAIN ($i w"» | ||
colomon | rakudo: multi MAIN ($i where $i > 0) { $i } | ||
p6eval | rakudo de98d1: OUTPUT«===SORRY!===Malformed multi at line 22, near "MAIN ($i w"» | ||
moritz_ | it wants a block | ||
TimToady | rakudo: multi MAIN (Int $i where ($i > 0)) { $i } | ||
p6eval | rakudo de98d1: OUTPUT«Usage:/tmp/ixxC0TVR4O i» | ||
colomon | rakudo: multi MAIN ($i where {$i > 0}) { $i } | ||
p6eval | rakudo de98d1: OUTPUT«Usage:/tmp/j1LjfIbFJn i» | ||
TimToady | no, i wants a term | ||
*it | |||
I think rakudo does not yet do precedence restricted EXPR | 15:55 | ||
STD requests any expression tighter than , there | |||
since, obviously, a comma would indicate the next parameter | 15:56 | ||
tadzik | Maksim_: yeah, take a look at blizkost | ||
Maksim_: it doesn't always work, but sometimes it does | |||
15:56
orafu left,
orafu joined
|
|||
Maksim_ | tadzik: Many thanks I will try to use it and see if it works. | 15:58 | |
15:58
muixirt left
15:59
gbacon left
|
|||
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! | ||
I knew there was something I was forgetting. | |||
TimToady | it's assignment that's the bad boy | 16:02 | |
16:03
dukeleto left
|
|||
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 | ||
colomon | in my defense, I was up programming because I felt too sick to sleep. :) | 16:04 | |
16:04
dukeleto joined
|
|||
TimToady knows that | 16:04 | ||
well, I new you were sick, and ircing at 4am, assuming you're EST | 16:05 | ||
*knew | |||
colomon | yes | ||
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
16:14
kanishka joined,
larsen_ is now known as larsen
16:15
felliott joined
16:19
pmurias left
16:20
hercynium joined
16:26
gbacon joined
|
|||
moritz_ just spent about 2 hours chasing a stupid bug | 16:27 | ||
turns out it was a floating point bug that would lead to some imaginary numbers | |||
and Mathematica's error reporting is just abyssmal | 16:28 | ||
flussence | ooh, FP bugs | 16:29 | |
I saw a thing yesterday where you can crash PHP with one of those. | |||
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... | ||
moritz_ | at least 3 examples are known | ||
TimToady | I don't know why sorear++ seems to think that FP is good enough for everything... | ||
I hope that just means "good enough for now" | |||
flussence | everything... including ints? | 16:33 | |
16:35
GinoMan left
16:37
cogno joined
|
|||
TimToady | sorear++ likes to hyperbolize at times, so I can't say for sure | 16:37 | |
moritz_ likes to parabolize at times :-) | 16:38 | ||
16:39
MayDaniel left,
tzhs left
|
|||
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
|
|||
moritz_ | perl5 scripts don't need blizkost | 16:42 | |
TimToady | more likely that rakudo is making blizkost slower, or blizkost is making rakudo slower, or both | 16:43 | |
16:43
vladikoff joined
|
|||
moritz_ | or that rakudo is slower than p5 | 16:43 | |
TimToady | まさか! | 16:44 | |
tadzik | phenny: "まさか!"? | 16:45 | |
phenny | tadzik: "No!" (ja to en, translate.google.com) | ||
16:45
jaldhar left
|
|||
TimToady | more like "Impossible!" | 16:45 | |
moritz_ | if it were "no", it would be quite bad huffman coding... at least by our usage frequency :-) | ||
TimToady | まさかmasakaNever!; Well, I never!; You don't say! | 16:46 | |
16:47
jlaire left
|
|||
PerlJam | "Inconceivable!" ? :-) | 16:48 | |
shortcircuit | That needs to be the release name of the first P6 implementation to be deemed Perfect. | 16:50 | |
16:51
jlaire joined
16:52
icwiener joined
16:54
wagnerf left,
cogno left
16:58
felliott left
16:59
felliott joined
|
|||
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:01 | |
17:02
koushi joined
|
|||
tadzik | Perl 5 scripts do not need Perl 6, that's moritz_'s point methinks | 17:02 | |
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 | |
17:03
koushi left
17:04
M_o_C joined
|
|||
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:06 | |
17:07
risou joined
|
|||
shortcircuit | Maksim_: In that case, I think blizkost is what you're looking for. | 17:07 | |
PerlJam | Maksim_: modules.perl6.org | ||
Maksim_: (for the rewritten modules) | 17:08 | ||
shortcircuit | Or native modules. :) | ||
Maksim_ | PerlJam, shortcircuit: thanks guys :) | ||
TimToady | but rakudo + blizkost + p5 is unlikely to run as fast as bare p5, at least in the near future | ||
shortcircuit | Trollish/seriousish question: Can Rakudo be benchmarked to be faster than bare P5 for anything trivial to both languages? | 17:10 | |
flussence | well, there's "writing code"... | 17:11 | |
PerlJam | rakudo: hash().perl.say; hash{}.perl.say; | ||
shortcircuit | Can that really be a property of the implementation? :P | ||
p6eval | rakudo de98d1: OUTPUT«{}()» | ||
PerlJam | I find that completely odd. | ||
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. | ||
flussence | shortcircuit: depends how your $dayjob treats programmers :) | ||
shortcircuit | I work at a company of nothing *but* programmers. | 17:12 | |
Which leads to all the headaches one might presume. | |||
17:12
gbacon left
|
|||
flussence | heh | 17:12 | |
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:13 | |
17:16
risou left
17:20
Trashlord left
17:21
Trashlord joined
17:22
envi left,
Trashlord left
17:23
Trashlord joined
|
|||
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:28 | |
shortcircuit | I think there's a recent blog post that answers this questions, providing reasons. | 17:32 | |
shortcircuit hunts | |||
17:32
cogno joined,
plobsing joined
|
|||
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
|
|||
shortcircuit | Maksim_: I guess you can try the prepackaged version. You might poke its maintainer to get him to update, too. | 17:35 | |
The other side of it...if something breaks, you should try updating to the latest release, and see if that fixes it. | |||
The obvious (to me) conclusion would be to just run the latest release. I hate hearing "that's fixed in svn" or equivalents. | 17:36 | ||
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 | ||
17:37
cogno left
|
|||
shortcircuit realizes that what he's doing doesn't qualify as lurking, and shuts up. | 17:37 | ||
TimToady | shortcircuit: we'll make you our Lurker Emeritus. :) | 17:38 | |
shortcircuit | Hehe | ||
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 | |
(in rakudo, not in niecza) | |||
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,
cdarroch left,
cdarroch joined
|
|||
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
|
|||
shortcircuit | *installing | 17:41 | |
[Coke] | ... you need to use cpanm, then. ;) | ||
17:41
kanishka joined
|
|||
PerlJam | shortcircuit: what of CPAN frightens you? | 17:41 | |
TimToady | IT HAZ A SINGLE POINT OF FAILUREZ!!! *cough* github *cough* | 17:42 | |
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:43 | |
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... | ||
PerlJam | shortcircuit: so ... you're saying Rakudo is great because it has few dependencies? :) | ||
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. | ||
PerlJam: Rakudo was great for me because it was easy to install. :) | 17:45 | ||
17:45
kanishka left
|
|||
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
|
|||
PerlJam | Welcome kanishka | 17:46 | |
17:46
plobsing left
|
|||
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:48 | |
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 | ||
I do remember going back and apologizing later. | |||
PerlJam | Hmm. | 17:52 | |
I do hope that #perl6 won't be making the same mistakes as #perl :) | |||
17:53
impious joined,
kensanata left,
impious left
17:54
impious joined,
pmurias joined
|
|||
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:55 | |
dalek | ecza: 0f63e1b | pmurias++ | / (3 files): the refactored driver build the setting an test.pl passes |
17:56 | |
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 | |
s/ate/at/ | |||
couple that with a dose of arrogance and the community loses some of its friendliness. | 17:58 | ||
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. | ||
diakopter | PerlJam: I AM NEVER INSENSITIVE, AND NEITHER AM I. DO NOT PROVOKE ME. ;) | 18:00 | |
not that I'm claiming to be helpful, either. | |||
</wink> | 18:01 | ||
18:02
plobsing joined
|
|||
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:02 | |
pmurias | isn't #phasers a rakudo specific channel? | 18:03 | |
PerlJam | pmurias: no. | ||
(at least, I've never thought of it as such) | |||
pmurias | the channel topic seems to imply otherwise | 18:04 | |
PerlJam | Well, perhaps I'm the only one then. | ||
I've always thought of it more about "Perl 6 implementations" and it just happens that Rakudo is the one most talked about. | |||
diakopter | yeah, it was originally rakudo, I think | ||
but quickly expanded | 18:05 | ||
pmurias | and isn't it a weekly thing? | ||
PerlJam | currently. | ||
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:06 | |
18:12
_twitch left
18:13
mtk left,
gbacon joined
|
|||
shortcircuit | So, #phasers is an IRC channel that's active weekly, and talks specifically about Perl 6 implementation development. | 18:14 | |
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. | ||
I'd add it to my reader list. | |||
PerlJam | shortcircuit: are you volunteering? irclog.perlgeek.de/phasers/2011-01-04 :-) | 18:16 | |
18:17
cogno joined
|
|||
shortcircuit | I can't even motivate myself to make time to set up public logging for #rosettacode. :-| | 18:17 | |
The PIR->C++ thing is a current fancy. | |||
18:18
dakkar left
|
|||
moritz_ | shortcircuit: do you want me to log it? | 18:19 | |
PerlJam | shortcircuit: ask ... never mind :) | ||
moritz++ | |||
shortcircuit | moritz_: That'd be pretty sweet. :) | ||
I've got three years of backlogs I could probably rope a couple guys into formatting consistently, if you can retroprocess. :) | |||
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
|
|||
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 :) | ||
shortcircuit | That's going to depend on a fairly documented barrier between where Rakudo uses PIR and where it uses NQP or similar. | ||
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. | ||
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. | ||
shortcircuit | PerlJam: I suspect the only relatively solid barrier sits between the parts implemented in Perl 6, and the parts implemented in NQP. | ||
PerlJam | shortcircuit: um ... not even that. NQP *is* Perl 6 :) | 18:26 | |
shortcircuit | Not Quite. :) | ||
PerlJam | Well ... is a subset of Perl 6 | ||
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 left
|
|||
shortcircuit | plobsing: I'm not doing it for any practical reason; I'm just curious. | 18:28 | |
18:28
_ilbot joined
|
|||
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. | ||
I think swapping out the PIR bits with JavaScript could have hilarious consequences. :) | |||
18:29
cogno left
|
|||
moritz_ | shortcircuit: irclog.perlgeek.de/rosettacode/today IWBN if you announced the logging inside the channel | 18:29 | |
diakopter | Su-Shee: ha | ||
moritz_ | shortcircuit: if you plan to migrate to another logging tool at some point, I can give you a DB dump then | ||
PerlJam | moritz_: does ilbot just log whichever channel it's in, or is there more to it? | ||
dalek | ast: 920cbea | (Kodi Arfer)++ | S32-scalar/defined.t: [defined.t] Added tests for RT #81352. |
18:30 | |
ast: 3c9b9b5 | (Kodi Arfer)++ | S02-builtin_data_types/instants-and-durations.t: [instants-and-durations.t] Removed some tests that are now incorrect or dubious. |
|||
moritz_ | PerlJam: it logs whatever it sees, even private messages (though they can't be retrieved via the web interface) | ||
dalek | kudo: 604e5dd | KodiB++ | src/cheats/object.pir: [cheats] Made &prefix:<defined> return a Bool. This fixes RT #81352. |
||
kudo: 244d0f6 | KodiB++ | src/core/Duration.pm: [core/Duration] Removed various restrictions as per specs 3104c5be9. Now, at least for the time being, Duration differs little from Rat. |
|||
18:32
fhelmberger left,
cogno joined
|
|||
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... | ||
problem is that I have to update row IDs from all later rows | |||
which breaks "deep" links to directly to rows | 18:36 | ||
so I basically only do it when I start logging a channel, never when I miss a few hours | |||
PerlJam | why do you have to update row IDs? | 18:37 | |
18:37
wamba joined
|
|||
moritz_ | because I have to order by something when displaying a page | 18:37 | |
PerlJam | okay, gotcha | ||
moritz_ | and since I only store integer timestamps, I sort by primary ID | 18:38 | |
18:38
mtk joined,
roen_ left
|
|||
pmichaud | good afternoon, #perl6 | 18:39 | |
moritz_ | I have a vision on how to write ilbot 2.0, "second irc logging system done right" | ||
which stores sub-second timestamp and orders by them | |||
oh hai pmichaud | |||
PerlJam | pmichaud: greetings. | ||
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 | ||
shortcircuit | Hackish, and unnecessary outside of edge cases, obviously. :-| | ||
allbery_b | mm? | 18:43 | |
moritz_ | btw there's one case where I massively imported old logs | 18:46 | |
I assigned negative IDs :-) | |||
18:47
masak joined
|
|||
masak | ahoy! | 18:47 | |
moritz_ | hello zebra! | ||
colomon | \o | ||
PerlJam | greetings masak | ||
masak | how are all my fellow zebras today? | 18:48 | |
colomon | surviving | ||
moritz_ | \ \ \ \ \ <-- zebra pattern! | ||
18:52
MayDaniel joined
|
|||
pmichaud | we have zebras? | 18:54 | |
TimToady | herds of 'em: 𡿭 | ||
[Coke] wonders if perl6 has an octopodes operator. | |||
moritz_ | «...» has 8 lines... does that count? | 18:55 | |
PerlJam | feline octopodes | ||
moritz_ | feline opcodes | ||
Su-Shee | bio perl gone rogue? ;) | ||
pmichaud | feline opcodes == "cat", I think. | ||
or even Cat | |||
TimToady | I like octopods much better than octopodes. | 18:57 | |
moritz_ | are those octophone or octophobe? | ||
TimToady | though, in fact, I have never seen an octopus with eight feet... | 18:58 | |
moritz_ | yeah, they don't have any feet | ||
just tentactles | |||
pmichaud | I have. It was frequently next to the purple dinosaur. | ||
18:58
daxim left
|
|||
TimToady | the purple dinosaur is frequently beside himself | 18:59 | |
pmichaud | oh, wait. I mean it was associated with that australian music group | ||
TimToady | which also makes eight legs, if not feet | 19:00 | |
PerlJam | pmichaud: you mean ~~ ? | ||
well, ~~ Su-Shee-style | |||
pmichaud | wiggles.wikia.com/wiki/Henry_the_Octopus | ||
19:00
MayDaniel left
|
|||
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. | ||
TimToady pictures a hula dancer signing "ocean" | |||
19:01
WonTu joined,
WonTu left
|
|||
Su-Shee | cool. the wiggles are even a group dressed in perl 6 colors. ;) | 19:01 | |
pmichaud | anyway, I apologize that my smart(?) matcher has dredged up these images into our midst. Can we return to the zebras? ;-) | 19:02 | |
actually, time for lunch here | 19:03 | ||
bbiaw | |||
19:05
kanishka left
19:07
JimmyZ left
|
|||
masak | interesting activity on p6u. | 19:07 | |
pmichaud | I suppose I should apologize for that also. :-) | ||
moritz_ | well, some of that is going off into the trolling direction | 19:08 | |
masak | aye. | ||
19:08
cogno left
|
|||
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. | ||
pmichaud | same here. | ||
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 | |||
dalek | rixel: 5b3b499 | diakopter++ | / (7 files): pre-increment, pre-decrement, logical not, stringify operators |
||
moritz_ | dalek: then you haven't missed anything, really | ||
diakopter | whee | ||
masak | diakopter: the thread is called "Production release" | ||
moritz_ | sorry, meant diakopter, not dalek | 19:10 | |
diakopter | :) | ||
pmichaud | diakopter: later messages in the thread starting at groups.google.com/group/perl.perl6....629a42c15a | 19:11 | |
(i.e., on page 2) | |||
but probably not worth the time/effort | |||
anyway, lunch. bbl | |||
19:12
am0c joined
|
|||
Su-Shee | *haha* the fortran comparison with examples is just cool. :) | 19:14 | |
moritz_ | regarding 'has $!foo handles TypeObject' | 19:15 | |
that currently doesn't work for classes | |||
because it overrides the .new method | 19:16 | ||
what about making it only adding method that aren't already available in the class? | |||
masak | Su-Shee: I really liked that one too. | 19:18 | |
people's memory in the programming language business is really awful. | 19:19 | ||
Su-Shee | masak: it's excellent and very enlightening. | ||
masak agrees | |||
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. | ||
Su-Shee | PerlJam: exactly. and in my fortran cliche it's still FORTRAN. | 19:21 | |
PerlJam | not ForTran ? | 19:22 | |
Su-Shee | "perl 6 is perl like fortran 90 is fortran" :) | ||
PerlJam | :) | ||
masak | maybe that's what people are thinking about when they talk about PERL -- archaic, badly structured Perl. :P | ||
Su-Shee | actually I think "office" then. ;) | ||
I think the fortran example is very quoteworthy on occasions... | 19:23 | ||
PerlJam | yeah, but that's the difference between 2 and 90, with perl we're only going from 5 to 6. ;) | 19:26 | |
Su-Shee | someone can surely construct some prove that the distance between 5 and 6 is larger than between 2 and 90. ;) | 19:28 | |
aeh proof. | |||
PerlJam | (though the fortran77 version would have looked remarkably like the fortran II version) | ||
moritz_ | Su-Shee: I'm sure masak could... just take a look at the yapsi release announcements... :-) | ||
masak | oh, piece of cake. :P | 19:29 | |
19:29
plobsing left,
jjore_ is now known as jjore
|
|||
Su-Shee | see? easily done. ;) | 19:29 | |
19:31
am0c left
19:32
plobsing joined
19:46
GinoMan_ joined
19:47
GinoMan_ left
19:48
cogno joined
|
|||
masak | moritz_: is there a known temporary workaround for the handles-typeobject-and-.new problem? | 19:49 | |
something like explicitly declaring a method .new in that class? | |||
Maksim_ | are there any other good references on perl6 other than using perl6 pdf? | 19:50 | |
PerlJam | Maksim_: perl6advent.wordpress.com | 19:51 | |
dalek | ecs: 7d7fdaf | diakopter++ | S09-data.pod: remove mentions of particular run-time systems from S09 |
||
PerlJam | Maksim_: perlgeek.de/blog-en/perl-6/ too | 19:53 | |
Maksim_: See perl6.org/documentation/ | |||
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:57 | |
Su-Shee | *hihi* who made the cheatsheet? :) | 19:58 | |
dalek | ecs: 606dba7 | diakopter++ | S19-commandline.pod: clarify implementation-specific sounding/implying examples in S19 with another example. |
20:01 | |
20:02
glow joined
|
|||
TimToady | Su-Shee: that depends on whether you liked it or not... :) | 20:03 | |
dalek | ecs: 3442396 | diakopter++ | S06-routines.pod: remove (implementation-specific) fossil from S06 |
||
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 :) | ||
Su-Shee | I _love_ well done cheatsheets and short references. | ||
TimToady | though I do see a fossil | ||
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... :) |
||
Su-Shee | very well. | ||
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 | ||
TimToady | in that case, I did it :) | ||
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:09 | |
dalek | : 3984b63 | larry++ | docs/Perl6/Cheatsheet/cheatsheet. (2 files): s/slice/lol/ in cheatsheets We change slice context to lol context (but other mention of slice subscripting is correct). |
20:12 | |
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:13 | |
moritz_ | masak: re workaround: yes, use a role | 20:14 | |
masak | :) | 20:15 | |
20:15
cogno left
|
|||
masak | why don't I ever see the simple workarounds? :P | 20:15 | |
20:16
zby_home_ joined
|
|||
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? | ||
I saw you suggest it in the ticket, but... | |||
moritz_ | nope, not sure at all | ||
it seems convenient, and easy to implement | |||
that's all | |||
dalek | ast: d6f41fb | moritz++ | S03-operators/so.t: test for RT #78788 |
20:17 | |
masak | ...seems to me it adds a new "layer" of semantics to C<handles>. | ||
20:17
zby_home_ left
|
|||
TimToady | Su-Shee: if it were complete, we wouldn't need the synopses :P | 20:17 | |
20:17
cogno joined
|
|||
masak | rakudo: class A { has @.foo handles <push>; method push(*@) { say "OH HAI" } }; given A.new { .push(42); say .foo.perl } | 20:18 | |
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. | ||
moritz_ | rakudo: class A { has @!a handles Array }; A.new | ||
p6eval | rakudo de98d1: OUTPUT«===SORRY!===A method named 'new' already exists in class 'A'. It may have been supplied by a role.» | ||
masak | I'd have thought explicitly provided methods would just override those in C<handles> declarations. | ||
moritz_ | huh. | ||
why? are they second class? | 20:20 | ||
PerlJam | Seems like carping is the right move there. | ||
masak | moritz_: I don't know for sure. when matching is done by a regex they sure are. | ||
as for type objects. | 20:21 | ||
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? | ||
masak | I think so, yes. | 20:23 | |
PerlJam | me too. | ||
masak | which is why I don't automatically like moritz_' suggestion. | ||
moritz_ doesn't like it either | |||
masak | good, so now we know no-one likes it :) | ||
preferably, I'd like for the original problem not to exist in the first place. | 20:24 | ||
failing that, I'd like for it to go away silently, in a way that surprises the programmer as little as possible :) | |||
moritz_ | well, I don't see how it can fail to exist in the first place | ||
PerlJam | moritz_: very conservatively disallow handles TypeObj entirely. :) | 20:25 | |
20:25
wamba left
|
|||
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 | ||
masak | PerlJam: that's certainly one solution. | ||
20:25
Maksim_ left
|
|||
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. | ||
moritz_ | but delegation requires an instance | ||
only instances have attributes to which you can delegate | 20:27 | ||
masak | oh, I see now what you mean. | ||
yeah, no, that's not fundamental enough :) | |||
I'm talking about our surprise at finding that .new shows up through the C<handle>d Array object. | |||
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
|
|||
masak | right. | 20:28 | |
moritz_ | or nobody has implemented it before :-) | ||
PerlJam | or both | ||
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 | |
the first sounds like a sad option. the second is unthinkable. | |||
and I'm not sure the third works. :) | |||
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. | ||
moritz_ | Tene: tha fails as soon as either the class or the attribute have a custom .new | ||
masak | even if they are, they're called on different objects. | ||
Tene | Alternately, some sort of expectation that new is only for classes, not instances, although that's actually false in Perl 6. | ||
moritz_: the question wasn't why it shouldn't fail, but why we didn't *expect* it to not fail. | 20:31 | ||
pmichaud | ETOOMANYNOTS | ||
moritz_ | well, it might make sense to generally only install delegated methods in instances, not classes | ||
Tene | You're completely right. That's still what I would have expected unless I looked at it closely. | ||
moritz_ | Tene: because we didn't think it through thorougly. | ||
Tene: so that question is answered... can we now move on to the interesting questions? | 20:32 | ||
PerlJam | moritz_: +1 I like that | ||
masak | moritz_: I like that. "only delegate in instances | ||
" | |||
PerlJam | it's very much like a role applied via C<but> | ||
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
|
|||
Tene | .new() is prefectly valid on instances, and it would be a pretty significant change to P6 OO if we changed that. | 20:35 | |
20:35
snearch joined
|
|||
moritz_ | I'm only talking about delegation | 20:35 | |
'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 | ||
20:36
coldhead left,
coldhead joined
|
|||
PerlJam | Tene's point is that the impetus problem still exists I think. We'll still have this problem with .new() | 20:37 | |
20:37
cogno left
|
|||
Tene | moritz_: you can call .new on instances... | 20:37 | |
moritz_ | Tene: if the class supports that, yes | ||
Tene | moritz_: Perl 6 doesn't have methods that you can't call on instances. | ||
moritz_ | it's supported by default, but it's not a must | ||
20:38
plainhao left
20:39
ggoebel joined
|
|||
moritz_ | other possible (but not very good) solutions: | 20:39 | |
* special-case .new | |||
* require the user to special-case .new | |||
* don't install methods from any(Cool, Any, Mu) | |||
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? | ||
masak | Tene: but that goes counter to how C<handles> usually works! | ||
PerlJam | So ... what's the use-case for "handles ClassName" ? | ||
or, why not restrict it to "handles RoleName"? | 20:41 | ||
masak | PerlJam: I actually wanted to do 'handles Array' the other day. | ||
PerlJam: it's Array that has pull, push et al. not Positional. | |||
moritz_ still thinks that inheriting from Array would be a solution | 20:42 | ||
PerlJam | indeed. | ||
moritz_ | rakudo: class A is Cool { has @!a handles Positional }; A.new.push(<foo bar>); say A.perl | ||
p6eval | rakudo 244d0f: OUTPUT«Method 'push' not found for invocant of class 'A' in main program body at line 22:/tmp/9bCP8eyeVA» | ||
masak | for whatever reason, I didn't even consider subclassing in that case. my class was an AST node in Yapsi. | 20:43 | |
that doesn't feel to me like a kind of Array. | |||
moritz_ | why not? | ||
it's a tree node, right? | |||
and a tree has children | |||
so it is a container | |||
masak | yes, but... | 20:44 | |
moritz_ | in fact, PAST nodes are captures (so they are both array and hash), iirc | ||
20:45
kst left
|
|||
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 | |
it made the inheritance hierarchy pretty wonky. something that nqp-rx later fixed. | |||
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. | ||
moritz_ | right, by introducing cursors that aren't Match | ||
masak | right. | ||
20:46
kst joined
|
|||
masak | and making those cursors do things that grammars peviously did. | 20:46 | |
moritz_ | ok, let's approach this from a different angle | 20:47 | |
masak | making the whole design clearer and easier to work with. | ||
moritz_ | what would be the technical advantage of faking the inheritance through handles? | ||
masak | I dunno. my PAST nodes wouldn't smartmatch on Array... :) | 20:48 | |
and I don't see it as "faking the inheritance". that feels like framing a good technique a bit negatively. | 20:51 | ||
I'm saying "this attribute here will handle all the Array-ish messages". | |||
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 | ||
PerlJam | masak: seems an apt description to me. | ||
moritz_ | actually ... | 20:52 | |
have you heard of structural types? | |||
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 | ||
moritz_ | where relations between types are not declared, but infered from behaviour | ||
20:52
plobsing left
|
|||
masak | ...corner case :) | 20:52 | |
moritz_: no, that doesn't sound immediately familiar. | 20:53 | ||
pmurias | structural types are duck typing when used in a dynamic setting | ||
masak | sounds a bit like browser sniffing. | ||
moritz_ | so it seems that 'handles Foo' is like inheritance in structural types | ||
pmurias | masak: browser sniffing? | 20:54 | |
browser sniffing is more like nominal typing | |||
masak | ok :) | ||
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. | |||
"feature detection", maybe. it sounds like that. | 20:55 | ||
flussence | that's the one | ||
moritz_ | introspection. | 20:57 | |
(didn't we talk about that the other day? :-) | |||
flussence | (perl6 feels a lot like writing webpage stuff... but without the IE6 part) | ||
PerlJam | Here's the relevant section from the Moose docs on delegation: gist.github.com/766993 | 20:58 | |
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 | ||
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 { } } # ?? | ||
TimToady | the other alternative is to require new to be declared as a submethod | ||
moritz_ | that sounds wrongish | 21:02 | |
TimToady | to the extent that new has sekrit knowledge of the current object, it ought to be a submethod | 21:03 | |
delegation certainly breaks that | |||
moritz_ doesn't follow, re sekrit knowledge | |||
TimToady | submethods have to know the internals of the current class instance, hence cannot be inherited | 21:05 | |
21:05
pmurias left
|
|||
TimToady | new is behaving like that with respect to the delegating object | 21:05 | |
21:06
REPLeffect joined,
coldhead left
|
|||
TimToady | delegation supersedes the sekrit knowledge, it doesn't augment it | 21:06 | |
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"? | ||
TimToady | I'd make new default that way | 21:11 | |
21:12
coldhead joined
21:13
pmurias joined
|
|||
TimToady | but the explicit mark might be :U or :_ | 21:13 | |
(on the invocant) | |||
[Coke] | :P | 21:14 | |
PerlJam | Hmm. | ||
TimToady | re your example, I think an explicit method declaration should override a delegation | 21:15 | |
PerlJam | TimToady: irrespective of multi-ness? | 21:16 | |
TimToady | you didn't put multi on the override | ||
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)++ | www.perlfoundation.org/perl6/index....dex_tablet | ||
TimToady | at least for generic type-based delegations | ||
presumably an explicit handles <new> would still bring it in | |||
so handles Array might only be search for methods that aren't any where in self's ancestry | 21:19 | ||
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) | ||
? | |||
TimToady | well, that depends on which model we choose | ||
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. | ||
TimToady | if outside, then you can really only delegate to a different proto | ||
I really think it'll be a nightmare to try to get a proto to manage pseudo-inheritance across delegation | 21:22 | ||
so I think we shouldn't delegate to multis, only to protos | |||
masak | does Mu.new really have sekkrit knowledge? seems to me it just does a bit of introspection. | ||
PerlJam | (and thus we get an error) | ||
masak takes an early night | |||
TimToady | if it doesn't do enough introspection to emulate Mu.new, then it is defective for general use | ||
masak | 'night, zebras! | ||
TimToady | o/ | 21:23 | |
PerlJam | masak: g'night! | ||
moritz_ | \o | ||
21:23
masak left,
spq1 left
|
|||
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 | ||
your own new is inside of Mu, the delegate's new is outside of it | 21:25 | ||
so it picks yours instead of the delegate's | 21:26 | ||
that works even if your new is the one from Mu | |||
sorear | good * #perl6 | 21:27 | |
TimToady | if you want the tighter semantics we have now, you should probably be using a mixin instead | ||
moritz_ | wfm | ||
TimToady | sorear: hi | ||
PerlJam | I'm not sure I understand all of the implications here, but I like the way things are fitting together :) | ||
TimToady | it's just another example of trying to hang things off the right peg instead of the wrong one :) | 21:28 | |
I don't profess to understand all the implications either; that's why we're prototyping all this to see how it works | |||
but wildcard as failover feels righter | 21:29 | ||
and it's a bit like the reformulation of CANDO on lexical scopes, which is also a failover now | |||
mixins and eval are very similar in their escape-hatchness wrt name visibility | 21:31 | ||
21:31
plobsing joined
|
|||
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:31 | |
TimToady is now thinking about the concept of using generic blocks for eval that don't have to be reparsed... | 21:33 | ||
pmurias | sorear: hi | 21:38 | |
21:42
meteorjay left,
M_o_C left
|
|||
sorear | pmurias: pong | 21:44 | |
PerlJam | TimToady: to prevent failover would I just provide my own most-generic method that just fails? | 21:45 | |
TimToady | sure | 21:46 | |
PerlJam | Still trying to think of problems but not coming up with any :) | ||
sorear | synced. | 21:55 | |
tadzik | oh, btw | 22:05 | |
about #80982, I have a patch to review/look at | 22:06 | ||
wklej.org/id/450996/ | |||
moritz_ | looks fine | 22:07 | |
moritz_ compiles and spectests | |||
tadzik | it passes for me. Shall I format-patch it? | ||
well, it passed when I wrote it few weeks ago, so I'd check again | |||
moritz_ | no need | 22:08 | |
tadzik | only the error message turns about to be a bit LTA | ||
> 0123 | |||
Leading 0 does not indicate octal in Perl 6; please use leading 0o if you mean that at line 1, near "\n" | |||
I mean, 'near "\n"' | |||
moritz_ | that's a general problem with the grammar atm | ||
std: 01.3e3 | 22:09 | ||
p6eval | std 625303c: OUTPUT«ok 00:01 118m» | ||
sorear | pmurias: ? | 22:10 | |
22:11
meteorjay joined
22:12
learning_perl6 joined
|
|||
tadzik | moritz_: looks like t/spec/S02-literals/string-interpolation.rakudo does not pass anymore | 22:13 | |
for it's panic, not worry (line 10) | |||
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 | ||
dalek | ecs: 75b4fff | larry++ | S12-objects.pod: Defer wildcard delegation to dispatch failover Wildcard delegation should not be used for methods that are in the object's own ancestry (especially .new). Use explicit delegation or mixins to acquire such methods. |
||
ecs: af947e9 | larry++ | S (3 files): Merge branch 'master' of github.com:perl6/specs |
|||
TimToady | hmm, not sure if that was the right thing... | ||
tadzik | moritz_: anyway, patch sent to RT | 22:15 | |
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 | ||
tadzik | learning_perl6: I'm afraid you'll have to write a module for that | ||
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 | ||
ie. scalar vs. array. vs. hash | |||
with that it should be doable | |||
sorear | if $value ~~ Hash { ... } | ||
learning_perl6 | ah ok | 22:20 | |
thanks! | |||
tadzik | or $val.WHAT | ||
moritz_ | tadzik: that should only be used for debugging | ||
tadzik | oh, ok | ||
moritz_ | it ignores subclassing | ||
tadzik | moritz_: should I mark those octal tests as TODO due to lack of worry? | ||
learning_perl6 | got it--thanks and goodbye | ||
22:20
learning_perl6 left
22:21
dju_ is now known as dju
|
|||
moritz_ | tadzik: yep | 22:21 | |
tadzik | moritz_: wklej.org/id/451011/ is that how it should look? | 22:24 | |
dalek | ecs: 9642ed9 | larry++ | S0 (2 files): apply val() semantics to <...> and MAIN Define a new dwimmer that is appropriate for use in situations where users are forced to enter text that might actually mean numbers or enums. |
22:25 | |
tadzik | is t/spec/S06-multi/syntax.rakudo known to have a failing test? | ||
22:25
Chillance left
|
|||
moritz_ | tadzik: looks fine here | 22:28 | |
tadzik | also 4 tests in t/spec/S14-roles/parameterized-type.t | ||
weird | 22:29 | ||
moritz_: should I push the roast changes? | |||
moritz_ | I now had "no subtests run" in two S32-temporal | ||
tadzik: what exactly are you changing? | 22:30 | ||
ah, Date.t uses a leading 0 | |||
22:30
kaare_ left
|
|||
moritz_ | as well as calendar.t | 22:30 | |
tadzik | moritz_: wklej.org/id/451011/ | 22:31 | |
ouch | |||
moritz_ | ... and your spectest passed? | ||
tadzik | no, I'm still reporting errors. Not sure how many of 'em are new | 22:32 | |
t/spec/S32-scalar/defined.t failed 10 | |||
and Date.t as you said, yes | |||
so maybe the ticket itself is not that good idea? | |||
moritz_ | well, it should only warn | 22:33 | |
tadzik | but as the Date example shows, it'd be quite annoying in everyday usage | ||
moritz_ | I wonder if we should implement <.worry> simply as a printing to STDERR | ||
tadzik | I tried | ||
wklej.org/id/451017/ | 22:34 | ||
gives very interesting issues ) | |||
:) | |||
or maybe not | 22:36 | ||
hrm | |||
TimToady | STD does duplicate suppression, and allows #OK pattern as well | 22:38 | |
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:------> 0123⏏<EOL>ok 00:01 118m» | ||
TimToady | std: 0123 #OK octal | ||
p6eval | std 625303c: OUTPUT«ok 00:01 118m» | ||
tadzik | a-ha | ||
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:------> 0123⏏ #OK Leading 0ok 00:01 118m» | ||
TimToady | std: 0123 #OK Leading | ||
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:------> 0123⏏ #OK Leadingok 00:01 118m» | ||
TimToady | std: 0123 #OK leading | ||
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:------> 0123⏏ #OK leadingok 00:01 118m» | 22:41 | |
TimToady | hmm | ||
std: 0123 #OK 0 | |||
p6eval | std 625303c: OUTPUT«ok 00:01 118m» | ||
tadzik | moritz_: wklej.org/id/451025/ shoudn't it work ok? | ||
TimToady | std: 0123 #OKLeading | 22:43 | |
p6eval | std 625303c: OUTPUT«ok 00:01 118m» | ||
TimToady | oopsie, kinda | ||
sorear | TimToady: how does that interact with compiler i18n? | 22:47 | |
22:50
felliott left
22:51
MayDaniel joined
|
|||
sorear | niecza: my %foo = a => 1, b => 2; say ~%foo<b a> | 22:52 | |
p6eval | niecza v1-83-g516fcee: OUTPUT«Parcel()<instance>» | ||
sorear | niecza: my %foo = a => 1, b => 2; say ~[ %foo<b a> ] | ||
moritz_ | tadzik: where is worry definedß | ||
p6eval | niecza v1-83-g516fcee: OUTPUT«2 1» | ||
moritz_ | s/ß/?/ | ||
tadzik | moritz_: wklej.org/id/451017/ | ||
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) | ||
moritz_ | tadzik: I guess it needs to return something to indicate that it matched 0 characters | ||
tadzik | yay works! | 22:54 | |
pmurias | sorear: pong | 22:56 | |
sorear: what's the problem with the last changeset? | |||
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
|
|||
TimToady | that's the intent, otherwise multi dispatch won't | 22:57 | |
dalek | ecza: ee1c32e | pmurias++ | src/NAMWriter.pm: add missing file |
||
tadzik | github.com/perl6/nqp-rx/issues/issue/11 filed | 22:58 | |
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 | |
(presuming they might want to ask for help outside their language group) | |||
or we can match on some kind of message id in that case | 23:01 | ||
but for many of these systems, the English message *is* the id | 23:02 | ||
23:03
felliott left
23:13
icwiener left
23:16
kulp joined,
kulp left,
kulp joined
|
|||
TimToady | nap & # resting up for long drive tomorrow | 23:20 | |
23:26
felliott joined
|
|||
dalek | ecza: 4365d61 | sorear++ | Niecza.proj: Use wildcart dependencies in build system |
23:27 | |
23:27
f00li5h left
|
|||
lue | hello fellow zebras and CONGRATULATIONS to David Tennant o/ | 23:32 | |
23:40
shi joined
23:43
MayDaniel left
|
|||
sorear | moritz_: seems to me like p6eval row ids might work better in an order domain where every interval can be subdivided infinitely | 23:44 | |
pmurias: do you mind if I impose my whitespace style on everything? | 23:49 | ||
diakopter | p6eval row ids? | 23:51 | |
sorear | ilbot, sorry. | 23:52 | |
diakopter | oh | ||
23:53
cdarroch left
|
|||
pmurias | sorear: no | 23:53 | |
feel free to even use perltidy if you want ;) | 23:54 | ||
23:58
roen left
|