»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by diakopter on 25 January 2010. |
|||
00:00
REPLeffect joined
00:07
orafu left
00:09
orafu joined
00:24
jferrero joined
00:26
colomon joined
00:27
rgrau left
|
|||
RandalSchwartz | drop.io/20_years_in_twenty_pages - add review comments to the file | 00:28 | |
colomon | RandalSchwartz: seems like a fair summary to me. | 00:35 | |
00:36
slavik left
00:37
slavik joined
|
|||
RandalSchwartz | thanks | 00:42 | |
00:45
athenot joined
|
|||
diakopter | ng: my $x; say $x.defined | 00:45 | |
p6eval | ng 1a9e76: OUTPUT«0» | ||
diakopter | ng: my $x; say $x.defined; say $x.WHAT | 00:46 | |
p6eval | ng 1a9e76: OUTPUT«0Mu()» | ||
diakopter | ng: my $x; say $x.defined; say $x.WHICH | ||
p6eval | ng 1a9e76: OUTPUT«047718958194720» | ||
diakopter | ng: my $x; say $x.defined; say $x.WHENCE | ||
p6eval | ng 1a9e76: OUTPUT«0» | ||
diakopter | ng: my $x; say $x.defined; say $x.WHERE | ||
p6eval | ng 1a9e76: OUTPUT«047953721288824» | ||
diakopter | ng: my $x; say $x.defined; say $x.WHOSOEVER | 00:47 | |
p6eval | ng 1a9e76: OUTPUT«0Method 'WHOSOEVER' not found for invocant of class ''current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
00:57
pmurias left
01:00
drbean left
|
|||
colomon | ng: my $str; say $str ~ "hello"; | 01:11 | |
p6eval | ng 1a9e76: OUTPUT«Mu()hello» | ||
colomon | jnthn: If we can get that one fixed, we get back while.t. | 01:12 | |
rakudo: my $str; say $str ~ "hello"; | 01:16 | ||
p6eval | rakudo 1d4928: OUTPUT«Use of uninitialized valuehello» | ||
colomon | On second thought, I reckon the test should initialize to "". It's not like that's the point of the test, and it is using an uninitialized value... | 01:18 | |
pugs_svn | r29696 | colomon++ | [t/spec] Initialize the collecting string so avoid tangential issues about what uninitialized variables stringify as. | 01:19 | |
01:24
p3tr0x joined
|
|||
p3tr0x | hi there | 01:24 | |
i've a little question | 01:25 | ||
colomon | yes? | ||
p3tr0x | i would like to know if it's possible (and how) to send a sig{int} to a subroutine and return to the main program... | ||
dalek | kudo/ng: ecd6840 | (Solomon Foster)++ | t/spectest.data: Turn on while.t. |
||
p3tr0x | does anyone know that ? | 01:26 | |
colomon | Hmmm... that's well out of my area of expertise, I fear. | 01:27 | |
My guess is nothing like that is implemented in Rakudo yet, and it's probably not in the Perl 6 specs yet either. | |||
But maybe someone else out there knows more. | |||
p3tr0x | anyone? | 01:28 | |
colomon | perlcabal.org/syn/S17.html is the relevant portion of the specs | ||
[particle] | p3tr0x: are you using perl 5 or perl 6? | 01:29 | |
colomon | and perlcabal.org/syn/S04.html#Control_Exceptions | ||
afk # exercise time | |||
p3tr0x | perl 5 particle | 01:30 | |
5.10 | |||
[particle] | then you'll want to wander over to #perl | ||
p3tr0x | but I'm unable to join #perl, so I tried here | ||
[particle] | try webchat.freenode.net/ | 01:31 | |
p3tr0x | thanks you really | 01:33 | |
[particle] | it is our pleasure | 01:34 | |
01:49
jferrero left
01:52
p3tr0x left
02:01
lestrrat is now known as lest_away
02:06
mssm left
02:11
meppl left
02:15
k23z__ left
02:21
drbean joined
02:23
ezgranny420 left
|
|||
colomon | ng: say (1i).Str | 02:29 | |
p6eval | ng ecd684: OUTPUT«0 + 1i» | ||
02:30
lest_away is now known as lestrrat
|
|||
colomon | ng: my $z = 0i; say "$z + 0 = $z" | 02:30 | |
p6eval | ng ecd684: OUTPUT«Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
02:31
justatheory left
|
|||
colomon | ng: my $z = 0i; say $z; | 02:33 | |
p6eval | ng ecd684: OUTPUT«0 + 0i» | ||
colomon | ng: my $z = 0i; say "$z " | ||
p6eval | ng ecd684: OUTPUT«Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'current instr.: '_block14' pc 29 (EVAL_1:0)» | 02:34 | |
colomon | ng: my $z = 0i; say $z ~ " " | ||
p6eval | ng ecd684: OUTPUT«0 + 0i » | ||
colomon | ng: my $z = 0i; say " $z " | 02:39 | |
p6eval | ng ecd684: OUTPUT« 0 + 0i » | ||
diakopter | ng: say 'There are 10 types of people in the world: those who understand hex ... F the rest' | 02:43 | |
p6eval | ng ecd684: OUTPUT«There are 10 types of people in the world: those who understand hex ... F the rest» | ||
diakopter | see google for the attribution. | 02:44 | |
colomon | ng: say 2/(3+1i) | 02:45 | |
p6eval | ng ecd684: ( no output ) | ||
colomon | rakudo: say 2/(3+1i) | 02:46 | |
p6eval | rakudo 1d4928: OUTPUT«0.6 + -0.2i» | ||
colomon | ng: say 2.Num/(3+1i) | 02:47 | |
p6eval | ng ecd684: OUTPUT«0.6 + 0.2i» | ||
colomon | ng: my $a = 2/(3+1i); say "hello"; say $a.perl; | 02:58 | |
p6eval | ng ecd684: OUTPUT«helloComplex.new(0.6, 0.2)» | ||
colomon | ng: my $a = 2/(3+1i); say "hello"; say $a.perl; say $a; | ||
p6eval | ng ecd684: OUTPUT«helloComplex.new(0.6, 0.2)» | ||
colomon | wow, I've never seen say do that before. | ||
ng: my $a = 2/(3+1i); say "hello"; say $a.perl; say $a.re; say $a.im; | 02:59 | ||
p6eval | ng ecd684: OUTPUT«helloComplex.new(0.6, 0.2)0.60.2» | ||
colomon | ng: my $a = 2/(3+1i); say "hello"; say $a.perl; say $a; say "$.re + {$.im}i"; | ||
p6eval | ng ecd684: OUTPUT«helloComplex.new(0.6, 0.2)Lexical 'self' not foundcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | ng: my $a = 2/(3+1i); say "hello"; say $a.perl; say $a; say "$a.re + {$a.im}i"; | 03:00 | |
p6eval | ng ecd684: OUTPUT«helloComplex.new(0.6, 0.2)Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | er, why are master and ng giving different results? | 03:02 | |
rakudo: say 2/(3+1i) | |||
p6eval | rakudo 1d4928: OUTPUT«0.6 + -0.2i» | ||
colomon | ng: say 2.Num/(3+1i) | ||
p6eval | ng ecd684: OUTPUT«0.6 + 0.2i» | ||
03:10
ShaneC left
|
|||
pugs_svn | r29697 | colomon++ | Add initial space to test descriptions to avoid concatenate bug. | 03:18 | |
dalek | kudo/ng: c8164f1 | (Solomon Foster)++ | src/core/Complex.pm: Restore the old, working definition of infix:</>($a, Complex $b). |
03:26 | |
kudo/ng: 46e2efe | (Solomon Foster)++ | t/spectest.data: Turn back on complex.t. |
|||
03:54
jaldhar joined
04:01
justatheory joined
04:02
stephenlb left
04:06
justatheory left
04:12
justatheory joined
04:16
Chillance joined
04:17
TimToady sets mode: +vvv buubot dalek hugme,
TimToady sets mode: +vv ilogger2 IRSeekBot,
TimToady sets mode: +vvv lisppaste3 p6eval phenny,
TimToady sets mode: +v pugs_svn
04:22
agentzh joined,
diakopter sets mode: +v diakopter
04:31
justatheory left
04:36
justatheory joined
|
|||
diakopter | O_O opp birthetheth | 04:45 | |
04:58
Khisanth left
04:59
Khisanth joined
05:40
athenot left
05:59
quietfanatic joined
|
|||
quietfanatic | rakudo: sub X (&sub) {&sub()}; X(&say.assuming(3)) | 06:00 | |
p6eval | rakudo 1d4928: OUTPUT«Nominal type check failed for parameter 'sub'; expected Callable but got Code insteadin Main (file src/gen_setting.pm, line 324)» | ||
quietfanatic | This is an issue. Code should do Callable. | ||
ng: sub X (&sub) {&sub()}; X(&say.assuming(3)) | |||
p6eval | ng 46e2ef: OUTPUT«Symbol '&say' not predeclared in <anonymous>current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)» | ||
quietfanatic | ng: sub X (&sub) {&sub()}; sub Y ($x) {say $x}; X(&Y.assuming(3)) | 06:01 | |
p6eval | ng 46e2ef: OUTPUT«3» | ||
quietfanatic | I guess I gotta be patient then | ||
ng: sub X {say caller}; sub Y {X}; Y | |||
p6eval | ng 46e2ef: OUTPUT«Could not find non-existent sub &callercurrent instr.: 'X' pc 135 (EVAL_1:57)» | ||
06:47
justatheory left
07:10
kaare joined,
kaare is now known as Guest25498
07:14
Chillance left
07:18
Su-Shee joined
|
|||
Su-Shee | good morning | 07:19 | |
07:21
clausi joined,
takadonet left
07:22
uniejo joined,
takadonet joined
07:34
drbean left
07:37
xinming_ left,
xinming joined
07:45
he_ left
|
|||
Trashlord | hey | 08:16 | |
08:22
fridim joined,
iblechbot joined
08:37
renormalist left,
renormalist joined
|
|||
moritz_ | rakudo: say caller | 08:50 | |
p6eval | rakudo 1d4928: OUTPUT«caller() is not yet implemented in Rakudo, sorryin sub » | ||
mathw | Good localtime | 08:53 | |
colomon | o/ | ||
08:53
drbean joined
|
|||
mathw prepares his segmentation fault hunting equipment | 08:54 | ||
09:07
mberends joined
|
|||
mberends | ng 46e2efe (current) ng comparison on Ubuntu 10.4 x86 vs amd64 | 09:07 | |
"Synopsis", "pass","fail","todo","skip","plan","spec" | |||
"S06", 227, 0, 10, 53, 290, 739 # x86 | |||
"S06", 199, 28, 10, 53, 290, 739 # amd64 | |||
"S16", 119, 0, 0, 2, 121, 246 # x84 | |||
"S16", 108, 11, 0, 2, 121, 246 # amd64 | |||
"S29", 466, 0, 3, 2, 471, 517 # x86 | 09:08 | ||
"S29", 124, 346, 1, 0, 471, 517 # amd64 | |||
"S32", 1941, 0, 30, 113, 2084, 3511 # x86 | |||
"S32", 1734, 17, 30, 105, 1876, 3303 # amd64 | |||
"total", 3820, 0, 77, 313, 4210, 16363 # x86 | |||
szbalint | hm | ||
mberends | "total", 3232, 402, 75, 303, 4002, 16155 # amd64 | ||
128 files, 3820 (23.3% of 16363) pass, 0 fail # x86 | |||
128 files, 3232 (20.0% of 16155) pass, 402 fail # amd64 | |||
errands, bbl & | |||
09:08
mberends left
|
|||
szbalint | drive-by-flood :) | 09:08 | |
colomon | huh, wonder if those are "real" errors for amd64 or just drive-by segmentation faults? (I'm consistently getting one of the later in S32-str/index.t on my MacBook Pro.) | 09:11 | |
09:20
drbean left
09:21
payload left
09:29
agentzh left
09:34
IllvilJa left
09:35
mberends joined
|
|||
colomon | at first glance I think the answer to my question is drive-by segmentation faults. I just built ng on 64-bit Linux, and I'm losing nearly 200 tests to a seg fault just in S32-num/unpolar.t. | 09:36 | |
lisppaste3 | colomon pasted "backtrace" at paste.lisp.org/display/94828 | 09:37 | |
mberends | there is also S29-conversions/ord_and_chr.rakudo: 346 tests aborted (missing ok/not ok) | 09:38 | |
planless testing would have missed those ;) | |||
mathw | isn't a drive-by segmentation fault still a segmentation fault though | 09:40 | |
colomon | errr... why? I didn't have any trouble finding the issue in unpolar.t despite its "plan *"... | ||
mathw | and thus, bad | ||
colomon | mathw: sure, it's definitely bad. | ||
mberends | because with plan * the harness would not know how many ok/notok to expect | ||
colomon | mberends: and then the problem is triggered by the lack of done_testing. | 09:41 | |
btw, S29-conversions/ord_and_chr.t works fine on my amd64 build. | 09:42 | ||
mberends | it could be the toolchain here, gcc 4.4.3-2ubuntu1 | 09:43 | |
colomon | mathw: the thing is, the "drive-by" failures don't represent a failure of the immediate code being tested, they represent a transient failure in the underlying engine. | 09:44 | |
Red Hat 4.1.2-42 here. | |||
mathw: that's better from the perspective of the person implementing the feature being tested, and much much worse from the overall perspective of Rakudo. | 09:45 | ||
mberends | S29-conversions/ord_and_chr.rakudo segfaults after ok 101 - ord() works for \82 == 'R' | 09:46 | |
colomon | mathw: we've had these semi-random seg faults for months now, and as far as I know, no one has even started to get close to figuring out what might be causing them, or even if its a Rakudo issue or a Parrot issue. | 09:48 | |
mberends | Rakudo doesn't generally cause segfaults, but it can trigger them in Parrot. There is very little C code in Rakudo. | 09:49 | |
moritz_ | which can still be wrong :-) | 09:50 | |
mathw | aaah okay | ||
mberends | yes. but this time, unlikely. | ||
mathw | that doesn't sound like a fun task | ||
mberends | much less fun if it works on colomon++'s amd64 anyway | 09:51 | |
mathw | definitely | 09:53 | |
means it's something subtler than this one I just found | |||
colomon | mathw: what makes it even worse from my perspective is that valgrind (my normal seg fault hunting tool) generates so many false errors in Parrot's GC that it is hopelessly noisy. | ||
mathw | I've got some code here which goes "mapListener[iID]->onMessage()" | ||
the simple problem being that mapListener[iID] is out-of-bounds | |||
just have to figure out why... but at least it's a straightforward wrong! | 09:54 | ||
09:54
payload joined
|
|||
mberends | mathw: the identifiers suggest it's a BBC political broadcast ;) | 09:54 | |
mathw | The ones I hate are the ones that result from some subtle thing somewhere else | ||
colomon | mathw: and at least half the time (at least in the older ones I looked at), running the test under valgrind makes the seg fault go away anyway. :( | ||
mathw | or which only happen on Tuesdays | 09:55 | |
colomon: oh yes, I've had that | |||
it's highly unpleasant | |||
and related to the other class of them which go away when you run it in a debugger | |||
And then there are the ones which only happen if certain other things happen in other threads in just the right order... | 09:56 | ||
As I keep saying to people at work, there has to be a better way to do this | |||
09:57
mssm joined
|
|||
colomon | huh. actually valgrind is pretty interesting on the unpolar.t crash. It's an invalid write past the end of an alloc'd block in the GC function compact_pool. | 09:58 | |
mathw | great | ||
at least that's definitively wrong | |||
and still showing up in valgrind! | |||
09:59
payload left,
cognominal joined
|
|||
lisppaste3 | colomon pasted "fatal error(s) in valgrind run on unpolar.t, amd64" at paste.lisp.org/display/94829 | 10:00 | |
10:00
pjcj left
|
|||
colomon | I should try going back to bed... | 10:02 | |
mathw | ouch | ||
that's messy | |||
I guess there's a reason why Parrot's GC still has bugs in it | |||
10:04
payload joined
10:07
masak joined
|
|||
masak | another glorious day in Perl 6 land! | 10:07 | |
moritz_ | \o/ | 10:10 | |
szbalint | ;-) | 10:12 | |
lisppaste3 | mberends pasted "fatal error(s) in valgrind run on S29-conversions/ord_and_chr.rakudo, amd64" at paste.lisp.org/display/94832 | 10:14 | |
mberends | that time it crashed after \60 == '<' instead of \82 == 'R' | 10:15 | |
letter R: you're forgiven | 10:16 | ||
masak | RandalSchwartz: page 40: s/begged the question/raised the question/, perhaps. | 10:19 | |
RandalSchwartz: also, the wording 'new releases nearly every few weeks' seems much less parsimonious than 'monthly releases'. is there a reason to choose the longer wording? | 10:21 | ||
save for those two comments, nice summary. | 10:22 | ||
10:23
IllvilJa joined
|
|||
mathw | Saluton, masak! | 10:24 | |
masak | Saluton, mathw! | 10:25 | |
masak got up fairly early today | |||
mathw didn't | 10:26 | ||
I didn't crawl out of bed until gone half past seven | |||
The cat was most put out with me | |||
masak | I got up at eight. with my recent track record, that's really early. | 10:28 | |
10:35
lestrrat is now known as lest_away
|
|||
szbalint | Let's start a petition for 28-32 hour variable length days | 10:35 | |
at least that's what my internal clock wants :S | |||
moritz_ | funnily when left alone without much social interaction and sun rythm, most people settle either on a 23h or a 25h day | 10:36 | |
mathw | I think we need to slow down the rotation of the Earth | 10:37 | |
just slightly | |||
masak | I did 28-h days a few months back. it's something I'd like to try again. | ||
szbalint | mathw: it is slowing down, just not fast enough | ||
masak | is the slowdown speeding up or slowing down? | 10:38 | |
szbalint | moritz_: there were a few outliers in a study I read about this, some french dude settled on 28h for example | ||
maybe a physicist knows :) | |||
I would assume slowing down, but that's just a guess | 10:39 | ||
moritz_ worked more with very small systems :-) | |||
masak laughs at that | 10:40 | ||
moritz_ | and my angular momenta where quantized => no slowing down :-) | ||
masak | convenient. | ||
to me, 'quantized' is one of those quantum suspension-of-disbelief terms. it goes "ok, we all know physical systems don't intuitively behave like that... but bear with us, OK?" | 10:41 | ||
moritz_ | actually there are very intuitive approaches to quantization | ||
mathw | nothing in quantum stuff is intuitive though | ||
mberends | eventually the friction due to tidal movements will slow the earth's rotation to a month, however long that will be | 10:42 | |
moritz_ | when you leave a plate along long enough, it's either on the table or on the floor | ||
mathw | not according to anything I've ever read - but then I have only a layman's overview | ||
moritz_ | that's a form of quantization | ||
mathw: intuition depends on how familiar you are with stuff. It's very possible to gain intuitive insight in some QM phenomena when you work with them long enough | 10:43 | ||
mathw | No doubt | ||
masak | moritz_: nice explanation. | ||
mathw | But when your only experience is with the world we directly observe, it looks like crazy shit | ||
fun though | |||
I rather like the idea that the universe is so strange underneath | 10:44 | ||
10:44
drbean joined
|
|||
moritz_ | one things that's not very intuitive is that baiscally all quantization comes from boundary conditions | 10:44 | |
masak | I rather like that biology can be reduced to digital processing. | ||
mathw | I rather like the probability thing | 10:45 | |
Oh, this atom? Yeah it might decay | |||
Or it might not | |||
masak | moritz_: as in standing waves? | ||
mathw | Just have to watch it and see | ||
moritz_ | for example in an atom, there are continuous solutions for the wave functions - but they don't decay in infinity | ||
szbalint | reality/physics is so scale dependent. That's beautiful. | ||
moritz_ | masak: as in standing waves, hard boundaries, or in knowning that wave functions often decay in large distances | ||
lunch& | |||
mathw | I read something about the electron energy levels being to do with there being no solutions to their wave functions in between those levels | 10:46 | |
I thought that was interesting | |||
What better reason to have those states with no inbetweens than it being simply impossible for the intermediate states to exist? | 10:47 | ||
mberends | It's a great reason, similar to: we have no solutions to equations at levels in between, therefore they *should* not exists. electrons do math, you know, effortlessly ;) | 10:52 | |
10:53
pjcj joined
|
|||
masak | exactly. things are quantized because the waves like it that way. non-standing waves make them confused. | 11:03 | |
mberends likes an ordered, well-documented Universe | 11:05 | ||
masak | don't know about ordered. we mislaid the Higgs billions of years ago, and still haven't found it. | 11:08 | |
mberends | oops. The LHC fill find it again though, won't it? | 11:09 | |
*will | 11:10 | ||
mathw | If it's still around | 11:11 | |
masak | it wouldn't be science if we could answer that question beforehand :) | 11:12 | |
11:12
finanalyst joined
|
|||
mathw | well | 11:13 | |
it might be | |||
but it could also be a spectacular waste of money | |||
masak | I hear that opinion now and then. | ||
I'm not really one to judge in that matter. | |||
mathw | I don't think it is | 11:14 | |
because we don't know that the Higgs boson even exists | |||
and it would be extremely useful to know that | |||
therefore it's worth building a machine to detect it | |||
And they'll get loads of other interesting data from it too | |||
mberends | we should spend lots of money trying to find it, because it creates jobs ;) | 11:15 | |
11:15
lest_away is now known as lestrrat
|
|||
mathw | And it might let us build cool stuff | 11:18 | |
stuff that's *gasp* even cooler than Perl 6! | 11:19 | ||
mberends | just think, without CERN there would be no http, no html, no www... | ||
masak | speaking of letting us build cool stuff. I got unstuck again with GGE last night. still need to find the tuits, but lookarounds are within reach now. I might still reach 100% PGE compat before ng becomes master! :) | 11:20 | |
mberends | \o/ masak++ | ||
frettled | w00t | ||
11:20
frettled sets mode: +oo masak mberends
|
|||
masak | based on what TimToady++ said the other day, PGE really does some cutting of corners in the case of lookarounds. then again, it doesn't need to make it more complicated than that either, since it's not aiming for doing LTM. | 11:21 | |
but I'm starting to really understand why pmichaud++ chose to start from scratch rather than extend PGE :) | 11:22 | ||
11:22
QC_OK joined
|
|||
masak | (and why he's been advising me not to try to change GGE into something more STD-compliant) | 11:22 | |
QC_OK | um should I learn perl6 or perl? | 11:23 | |
masak | QC_OK: I think you should. | ||
QC_OK | is perl6 even released properly yet? | ||
masak | QC_OK: yes. | ||
25 times, even. | |||
well, actually, that's just Rakudo. | |||
Pugs has been released a few times as well. | |||
proper, honest-to-blog releases. | 11:24 | ||
QC_OK | I learned a bit of Perl in a Java course once | ||
the lecturer just had to teach us | |||
even though it was java | |||
hehe | |||
masak | :) | ||
QC_OK | he uses perl in bioinformatics | 11:25 | |
masak too | |||
QC_OK | I might study that this year | ||
bio | |||
-informatics | |||
masak | cool. | ||
I'm in the field. | |||
QC_OK | cool | ||
:D | |||
masak | QC_OK: wanna see some Perl 6? | ||
QC_OK | You have to have done biology in first year, but the lecturer says he can waive that requirement | 11:26 | |
or something like that | |||
oik | |||
shoot | |||
masak | QC_OK: use.perl.org/~masak/journal/39238 | ||
mathw | Hello QC_OK | ||
QC_OK | hi | 11:27 | |
masak | rakudo: my $dna = "ttaagg"; sub translate($dna) { "FFLLSSSSYY!!CC!WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG".comb[map { :4($_) }, $dna.trans("tcag" => "0123").comb(/.../)] }; say translate($dna) | ||
p6eval | rakudo 1d4928: OUTPUT«LR» | ||
QC_OK | So you think perl6 is better than perl? | 11:28 | |
I guess | |||
? | |||
masak | QC_OK: no, I don't think a comparison can be made in that way. | ||
QC_OK | ah | ||
ok | |||
masak | QC_OK: but I know I have a warm buzz in my tummy from both. | ||
and slightly more with Perl 6. :) | |||
QC_OK | heh | ||
hmm I guess I'll learn Perl6, then Perl. | 11:29 | ||
I actally don't really know perl at all | |||
masak | gotta start somewhere. | ||
QC_OK | heh, the write only language meme stuck with me | 11:30 | |
I never bothered learning it | |||
mathw | It can be write only | ||
QC_OK | But I figure I should just for kicks | ||
masak | it's like this: sure, you can write a program without caring about readability. | ||
but what's the fun in that? | |||
mathw | But it doesn't take much care to ensure that it's readable | ||
QC_OK | yeah... | ||
masak | much better to write beatutiful code, that other people can read. | ||
mathw | And it's certainly better if you can comprehend your own code six months later | ||
QC_OK | People say perl is a "hack" kind of langauge | 11:31 | |
masak | QC_OK: well, it is. | ||
QC_OK | you can make disgusting, short code | ||
mathw | sure you can | ||
masak | you can throw things together if you want. | ||
QC_OK | that you can't read, but does what you want | ||
mathw | and sometimes that's just what you need to solve a problem quickly | ||
masak | and then later you can expand and clarify. | ||
mathw | but that doesn't mean it's the only way you can code in Perl | ||
masak | it sort of grows along with your solution. | ||
mathw | and the big non-secret is: no other popular language is any better | ||
masak | Perl 6 is, in my experience, slightly more verbose than Perl 5. | 11:32 | |
but only on the one-liner level. | |||
after that, it really picks up speed and blazes past Perl 5. | |||
um, except in terms of execution speed... :) | |||
mathw | so far | ||
masak | right. | ||
mathw | functionality, then speed | ||
masak | nod. | 11:33 | |
mathw | Perl 6 estas bona! | ||
masak | :) | ||
mathw | But really you can write terrible code in any language | ||
In some languages it's even compulsory | |||
Not in Perl, though | |||
QC_OK | heh | 11:34 | |
I learned the basics of ruby today | 11:35 | ||
But I don't like it | |||
mathw | There's some good stuff in Ruby | ||
Perl 6 'borrowed' most of it | |||
QC_OK | I'd rather learn perl | ||
masak | lots of nice projects, in my opinion. | ||
QC_OK | Ruby is like python and perl put together | ||
mathw | What about Ruby don't you like? | ||
QC_OK | which is fail in itself | ||
masak | mathw: don't know if 'most of it' is a good first approximation :) | ||
QC_OK | Clean + Messy = sorta clean | 11:36 | |
it's stupid | |||
Python + Perl | |||
= fail | |||
masak | QC_OK: I don't find that Ruby is much like Python, actually. but YMMV. | ||
mathw | masak: throwing parameterised blocks around at the drop of a hat, mixins... what else did we want? | ||
QC_OK | code blocks are eye cancer | ||
masak | QC_OK: I don't even know what that means. | ||
QC_OK | looks horrible | ||
anyhow | 11:37 | ||
I don't like the begin end crap, reminds me of VB | |||
mathw | Do you mean the 10.times { |x| print x; } stuff? | ||
QC_OK | eww | ||
mathw | because I really don't like the parameter syntax for those | ||
never have. Doesn't seem connected to the right bit of structural syntax. | 11:38 | ||
QC_OK | you can also write 10.times begin |x| print x end | ||
mathw | and that's even worse! | ||
QC_OK | I know | ||
It's fail | |||
anyhow | |||
my opinion only | |||
mathw | For blocks, I like brackets or indentation, not keywords | ||
masak | the |x| syntax is from Smalltalk, right? | ||
mathw | I think so | ||
QC_OK | I never learned smalltalk | ||
mathw | I don't much care for Smalltalk's syntax either | ||
QC_OK | I'm too young :) | ||
mathw | But I do like the view of OOP as message passing instead of method calls | 11:39 | |
which is something you also find in Objective-C | |||
QC_OK | !tutorial | 11:40 | |
@tutorial | |||
hmm | |||
Do you recommend a tutorial or book for perl6? | |||
mathw | The books haven't been written yet | 11:41 | |
masak | QC_OK: first off, I'd recommend you stick around. | ||
QC_OK: second, do check out the Advend Calendar! | |||
mathw | Oh yes, the Advent Calendar | ||
I'd forgotten about that | |||
Which is silly, since I wrote some of it | |||
masak | perl6advent.wordpress.com/2009/12/0...-calendar/ | ||
it tells a lot of the story. | |||
QC_OK | ok | 11:42 | |
since there are no books yet, are there any good tutorials for perl 6? | |||
masak | enjoy! | ||
QC_OK: what we just pointed you at. | |||
QC_OK | ok | ||
sorry | |||
that's it I guess | 11:43 | ||
masak | there are more, but this one is the most recent. | ||
and fairly complete, as I said. | |||
QC_OK | ok | ||
I guess I'll come back when 6 is ready | |||
In the meantime I'll learn Perl. | 11:44 | ||
and by ready I mean a book or tutorial is written. | |||
11:45
QC_OK left
|
|||
mathw | aawww | 11:46 | |
11:48
cognominal left
11:49
xdg left
11:50
snarkyboojum joined
11:58
synth left
12:03
macae joined
12:06
snarkyboojum left
|
|||
masak | guess we should focus on getting the book published. :) | 12:17 | |
12:19
lichtkind joined
|
|||
mathw | :) | 12:20 | |
12:20
ruoso joined
12:23
athenot joined
12:27
SmokeMachine joined
12:29
bluescreen joined
12:32
iblechbot left
|
|||
mberends | pmichaud: to make space for other emitters in future, would you consider renaming Perl6/Actions.pm to Perl6/Actions-Parrot.pm? | 12:42 | |
masak | Perl6/Actions/Parrot.pm, perhaps? | 12:43 | |
mberends | also fine, if preferred. but why, btw? | 12:44 | |
12:44
payload left
|
|||
masak | dunno. :: seems commoner in type names than - | 12:44 | |
and 'Actions' seems to "deserve" being a level on its own. | |||
moritz_ agrees with masak | |||
mberends prefers flatter directory hierarchies, but that's only personal taste | 12:45 | ||
masak | oh, definitely. it's a trade-off, no doubt. | 12:46 | |
mberends | I'm currently looking for where to instantiate @*ARGS. The startup sequence is not entirely clear, but the code is nicely readable. pmichaud++ | 12:51 | |
masak | rakudo: my @l = [1,2,3], [4,5,6], [7,8,9]; my (@a, @b, @c) = ...; # how do I make each new array contain one sub-array of @l? | 12:56 | |
p6eval | rakudo 1d4928: OUTPUT«Can't return outside a routinein Main (file <unknown>, line <unknown>)» | ||
13:03
drbean left
13:04
nacho joined
13:05
mssm left
13:07
nacho left
13:20
mssm joined
|
|||
masak | more generally, how do I assign a list of arrays in the RHS to a list of array variables in the LHS? | 13:20 | |
13:22
patspam left
|
|||
jnthn | hi folks | 13:24 | |
moritz_ | masak: do you want assignment or binding? | ||
masak | I'm not going to do any writing, so it doesn't really matter. | ||
moritz_ | (@a, @b, @c) := ([1, 2, 3], [4, 5, 6], [7, 8, 9]) should work | ||
masak | thanks. | 13:26 | |
takadonet | morning all | ||
masak | takadonet: \o | ||
rakudo: my (@a, @b, @c) := ([1,2,3], [4,5,6], [7,8,9]); say @a.perl | |||
p6eval | rakudo 1d4928: OUTPUT«rtype not setin Main (file <unknown>, line <unknown>)» | ||
masak | awww. | ||
rakudo: my (@a, @b) := ([1], [2]) | 13:27 | ||
p6eval | rakudo 1d4928: OUTPUT«rtype not setin Main (file <unknown>, line <unknown>)» | ||
masak submits rakudobug | |||
so exactly the use case I could have used doesn't work. | 13:28 | ||
colomon crawls out of bed and backlogs | 13:33 | ||
13:34
jaldhar left,
jaldhar joined
13:35
xomas joined
13:37
nacho joined
13:39
nacho left
|
|||
pugs_svn | r29698 | masak++ | [S26] checked in Damian's latest changes | 13:45 | |
r29698 | | |||
r29698 | It's the file from the email of 2009-08-16, except that I took the liberty | |||
r29698 | of removing some spaces at the end of lines. Hopefully all non-significant. | |||
masak | now I can reply to TheDamian on p6l with good conscience :) | 13:46 | |
jnthn | masak++ | 13:49 | |
Juerd | End-of-line whitespace should really always be non-significant. | ||
mathw | That's only just been done?? | ||
Juerd | (except when quoted or escaped) | ||
mathw | wow | ||
moritz_ | Juerd: except for the 'whitespace' programming language :-) | 13:50 | |
Juerd | moritz_: Grumble | ||
mberends | masak: thanks for the S26 update, I'd been unable to find it recently :) | ||
Juerd | I think it's time for a much narrower definition of "programming language". | ||
masak | mberends: then you need a better email client :P | 13:51 | |
mberends | true, I stay out of most mailing lists, the signal to noise ratio puts me off | 13:52 | |
masak | p6l has a funny kind of noise. :) | 13:53 | |
mathw | moritz_: Whitespace was invented primarily to be irritating though, surely | ||
masak | it's made up of the thinking-out-loud of type theorists, other theorists, and generally people who have both feet firmly planted in the air. | 13:54 | |
mathw | I used to be quite active on there | ||
A loooong time ago | |||
13:54
nacho joined
|
|||
jnthn | masak: Yeah, though they have probably led me to write a doc on the Perl 6 type system once I get a moment to do it in. | 13:56 | |
jnthn is tired of folks whining stuff isn't spec'd when in fact it's been spec'd well enough for me to implement the thing. :-/ | 13:57 | ||
masak | :P | ||
mberends | whining-- | 13:58 | |
jnthn: is it true that all :init subs get called in lexical order before :main ? | |||
colomon | jnthn: I think I made up for your lack of quantity in tests added back yesterday. ;) | ||
masak | jnthn: I didn't say all type theoretic stuff on Perl 6 is noise. | ||
colomon | jnthn: you still win for number of test files, of course. :) | ||
masak | but sometimes it does seem that things take off on a tangent and never really come back. | ||
13:58
iblechbot joined
|
|||
jnthn | mberends: Yes and no. | 13:59 | |
mberends | ugh | ||
jnthn | mberends: You usually want :load and :init | ||
mberends: :load = run this when the PBC is loaded as a library | |||
mberends: :init = run this when the PBC/PIR is run directory. | |||
*directly | |||
mberends: But yes, order should be lexical. | |||
mberends: We rely on that. | 14:00 | ||
masak | I suggest that we here on #perl6 get in a few nice commits to S26 before the p6l crowd gets any ideas. (yes, I say this partly tongue-in-cheek.) | ||
mberends | in Perl6/Compiler.pir, I'm thinking of where to create @*ARGS. Line 117, possibly. | ||
masak | it would be nice to set the tone of things, as Richard Hainsworth just wrote. | ||
colomon | masak: I'm thinking that's a fine idea. | ||
jnthn | colomon: Nice - let's see how I do today. I spent most of the night awake with bad stomach pains. On the upside, I then slept the whole morning. :-/ | 14:01 | |
colomon | masak: my rough impression of p6l is that it's where p6 gets it's "theoretical academic language" reputation.... | ||
jnthn: my wife left me sleep in, too. :) | 14:02 | ||
*let | |||
jnthn | masak: It's not all noise, no. I was more addressing my furstration with some of what gets posted there. | ||
mberends | masak: after Rakudo * lands, I'll revisit S26 and Pod::Parser etc. We'll see what of the spec is easily implementable. | 14:03 | |
jnthn | mberends: I'd like to keep Compiler.pir a bit lighter. | 14:05 | |
masak | colomon: I think so too. | ||
jnthn | mberends: Though it'd work there. | ||
mberends: I popped $*IN etc's init in src/cheats/setup-io.pm | |||
mberends | cheats! | ||
masak | colomon: in some ways, I see p6l as a honeypot for the worst pie-in-the-sky types. (with full respect for all the reasonable people also on that list.) | ||
jnthn | mberends: I think I then abused that file and set up $*OS in there too. | 14:06 | |
:-/ | |||
mberends: If cheats feels horrible then pop it somewhere in glue ;-) | |||
mberends | ok | ||
glue/run.pir looks too... clean ;) | 14:07 | ||
masak | mberends: revisiting Pod::Parser sounds very good. | ||
mberends | Pod::Parser stalled when Rakudo consumed 15KB RAM ber byte of POD file, I hope the memory management has improved in the last year. Somehow, I don't think so. | 14:08 | |
colomon | masak: :D | ||
mberends: actually, my impression is that memory management has indeed improved. | 14:09 | ||
jnthn | mberends: Gah, just stick it somewhere! :-P | ||
mberends | :-) cool! | ||
masak | speed has improved too. | ||
everything is just... better. | |||
14:10
clintongormley joined
|
|||
mberends | jnthn: stick it in glue? ok :P | 14:10 | |
colomon | I think laziness will make a huge difference in speed and memory in the very near future. | 14:11 | |
pmichaud | good morning #perl6 | ||
colomon | o/ | ||
jnthn | morning, pmichaud | 14:12 | |
mberends | colomon: agreed, laziness is the biggest optimization possible | ||
colomon | jnthn, pmichaud: do we have a place to list to-do / bug things for rakudo for the next few days? Seems like using RT is wasteful when things are changing so quickly. | ||
masak | good morning, pmichaud. | ||
jnthn | colomon: Maybe that "major ng features" wiki page? | 14:13 | |
pmichaud | 12:41 <mberends> pmichaud: to make space for other emitters in future, would you consider renaming Perl6/Actions.pm to Perl6/Actions-Parrot.pm? | ||
colomon | (and storing the ones I know about only in #perl6 logs and my head seems problematic.) | ||
pmichaud | it's far more likely that I'll want Actions.pm to become more generic | ||
(i.e., less PIR dependencies) | |||
jnthn | Agree. | ||
colomon | jnthn: I'm cool with that if that's what you guys would like. | 14:14 | |
jnthn | colomon: Or another wiki page | ||
The wiki seems a decent place for short-term lists. | |||
pmichaud | anywhere in Actions.pm that we currently have pir::*, :pirop, or :inline is somewhere that our abstraction level is wrong. Those have always been intended as "just get the job done" as opposed to "this is the way to do things." | ||
mberends | pmichaud: I'd considered a Sprixel style V8 engine as an -Ofun subproject, to shake loose the Parrot dependencies | 14:15 | |
pmichaud | in particular, I'm thinking that we should have a nqp:: space. | ||
then nqp can provide a level of abstraction | |||
so, instead of, say, pir::add($a, $b) we'd have nqp::add($a,$b) and it's up to nqp to map that to the appropriate backend | 14:16 | ||
mberends | fair enough | ||
pmichaud | then we can also more easily determine exactly what primitives we want/need our backends to provide | ||
jnthn | pmichaud: I'd actually started reading pir:: as vm:: :-) | ||
pmichaud | could be vm:: also. | 14:17 | |
14:17
athenot left
|
|||
mberends | anyhow, please don't waste time on that before Rakudo * | 14:17 | |
pmichaud | afk for a bit, I have to grab pictures of the incredible amount of snow we received here yesterday :) | ||
jnthn | mberends: I've got a good chunk of interest in additional backends, but R* is kinda my priority for now. :-) | 14:18 | |
mberends | 'course | ||
frettled | pmichaud: what about a JPEG of you shoveling snow? :) | ||
mberends | MPEG! | ||
frettled | that, too | 14:19 | |
masak | there's a close to 100% probability of such image material ending up in someone's Perl 6 presentation. | 14:20 | |
frettled | :D | ||
jnthn | :D | ||
frettled | One of my favourite places in Oslo hasn't had temperatures above freezing since 2009-12-13. | ||
masak | with the heading "Shuffling data" or similarly quippy. | ||
jnthn | "The Perl 6 devs are always shovelling cool stuff our way!" | ||
masak | :D | ||
frettled | jnthn: ooooh | 14:21 | |
masak | "When your problem space is filled with snow, every solution looks like a shovel." | ||
jnthn | Sledge is more -Ofun. | ||
mberends | jnthn: starting to "stick" the @*ARGS init into glue/run.pir, ok? | 14:22 | |
jnthn | mberends: wfm | ||
I suspect we'll want 'em there for MAIN handling too. | |||
pmichaud | shoveling snow? what's that? ;-) | ||
mberends | jnthn: and %*ENV init too | 14:23 | |
pmichaud | (and somehow you all seem to think I own a snow shovel. Or that I could even find a place to purchase a snow shovel. :-) | ||
masak | we'll simply have to add the snow shovel with Gimp, then. | 14:24 | |
jnthn | mberends: Aye. | ||
pmichaud | after other @family members get dressed I might see about having my picture took :) | ||
jnthn | mberends: Though that needs more...attention. ;-) | ||
(So assigning to it updates the environment :-)) | |||
That should be easier in ng than before though. | 14:25 | ||
mberends | jnthn: oh, you want a tied hash? | ||
jnthn | mberends: Eventually we will, I guess. | ||
mberends | ok, lemme see how hard it would be | 14:26 | |
jnthn | Feel free to just copy to a normal hash for now, though. | ||
Oh akshually | 14:27 | ||
mberends | copy - paste - compile - ship | ||
jnthn | mberends: One thing that may just work though it's evil if it does... | ||
Get the Parrot env hash | |||
$P0 = '&CREATE_HASH_LOW_LEVEL'(the_evn_hash) | 14:28 | ||
And install $P0 in the right place :-) | |||
It may work. :-) | |||
mberends | yes, sounds feasible | ||
jnthn | (Alternatively, it may explode. :-)) | ||
colomon | boom baby boom! | 14:29 | |
frettled | heh | ||
pmichaud | picasaweb.google.com/patrick.michaud/20100212 # snow photos. Undoubtedly "no big deal" to people who already live in snow-climates :) | 14:30 | |
suggestion: for %*ENV, use the code/approach that was used in master | 14:31 | ||
mberends | ok, thanks pm | ||
colomon | that's a pretty decent snowfall | 14:32 | |
pmichaud | it's huge for here | ||
jnthn | pmichaud: My only thought is that since our hashes now has-a Parrot hash which it uses for storage, we may get the write-semantics just by sticking the Parrot Env PMC in to our Perl 6 Hash as its backing storage. | ||
colomon | looks like enough to cross country ski | 14:33 | |
pmichaud | jnthn: yes, we might | ||
colomon: yes, it could very well be | |||
14:33
finanalyst left
|
|||
pmichaud | jnthn: I wasn't necessarily planning to do has-a Parrot hash for hashes... any particular reason it needs to be that way? | 14:33 | |
jnthn | pmichaud: Yes | 14:34 | |
pmichaud: Hash should be a role really. | |||
pmichaud | okay. | ||
jnthn | pmichaud: It works out quite nicely that way. | ||
pmichaud: I wrote pretty much the lot, including !STORE, in Perl 6. | |||
frettled | pmichaud: don't worry, we can commiserate anyway :D | 14:36 | |
jnthn | pmichaud: Nice snow! | 14:37 | |
Looks like about as much as I have here :-) | |||
pmichaud | !STORE looks like it'll be really slow though :) | ||
still, I'm okay with it. | 14:39 | ||
perhaps %!storage instead of $!storage ? | |||
jnthn | pmichaud: I'm a little wary of that. :-) | 14:40 | |
pmichaud: It'd probably be OK | |||
pmichaud | pir::new__Ps('Hash') probably needs to be pir::root_new | ||
jnthn | pmichaud: Yeah but...how to write a key in nqp? | ||
Agree in principle though. | 14:41 | ||
Slow - yeah. :-/ | |||
pmichaud: It'd sorta be nice to be able to write inline NQP in the setting. :-) | 14:42 | ||
pmichaud | there's still Q:PIR | ||
14:44
Guest25498 left
|
|||
mberends | so would it be better to build %*ENV with !STORE from core/Hash.pm (despite the slowness)? | 14:44 | |
pmichaud | mberends: I think jnthn was hinting earlier that one can get %*ENV fairly simply if we just create a Hash object where $!storage is set to a Parrot Env object | ||
jnthn | pmichaud: That's exactly what I wanted to avoid. :-| | ||
pmichaud | but I'm thinking that's not really the case, because Proxy objects tend to disappear once written to. | 14:45 | |
*now thinking | |||
jnthn | Oh. :-/ | 14:46 | |
pmichaud | let me review how we did things in master | ||
mberends | relying on the os process environment is going to be inefficient | ||
master uses hash_to_env(), eg in src/old/builtins-old/system.pir | 14:48 | ||
pmichaud | we somewhat have to rely on the os process environment, though. We can't assume that our copy of the environment is the "correct" one. | 14:49 | |
i.e., there's a synchronization problem. | |||
mberends | then we're back to a tied hash | ||
that is a more "normalized" way | |||
pmichaud | right. I'd suggest creating a Hash object where $!setting is initialized to a Parrot Env object... and then let's see what breaks or doesn't work. | 14:50 | |
14:50
athenot joined
|
|||
mberends | ok, thanks again | 14:50 | |
14:50
athenot left
|
|||
pmichaud | for the moment, this might be most easily done as an INIT { ... } block in the setting somewhere. | 14:50 | |
14:50
athenot joined
|
|||
frettled | pmichaud: Hmm, I don't think the OS allows other processes to modify the environment for running processes | 14:50 | |
pmichaud | frettled: libraries. | 14:51 | |
frettled: we could call out to a library (in the same process) that modifies the environment. | |||
mberends | frettled: you're correct, only child processes are affected | ||
14:51
synth joined
|
|||
mberends | ...and the current process | 14:52 | |
pmichaud | I'm fine if we go ahead and go with a "shadow hash" for the time being, and do a process like master did. | ||
mberends | the libraries use case is a valid point in favor of a tied hash | ||
pmichaud | all master did was have its own copy of the environment hash as a plain hash, and then re-set the OS environment whenever it was about to spawn a child process | ||
mberends | indeed | 14:53 | |
frettled | hmm | ||
pmichaud | right now "working code" is sufficient, we don't have to have "works in every possible case" code just yet. | ||
anyway, whoever writes the code gets to decide for now :) | |||
frettled | pmichaud: I believe that risk is something that the programmers just will have to live with. | 14:54 | |
mberends | let's try a tied hash first, and fallback to a shadow hash only as Plan B | ||
frettled | Hmm, I don't find any specification of the behaviour of %*ENV. | 14:59 | |
My Google-fu may be weak, of course. | |||
In any case, I think it's fair to use %*ENV as the environment at the time of process creation (as seen from P6's POV), and if libraries somehow modify environment without updating it inside the process -- I'm unsure how this could be expected to work in any language, anyway -- then that's a crying shame. | 15:01 | ||
Hmm. What does POSIX say? | |||
PerlJam | frettled: "like Perl 5" is probably as good as it gets for the spec on %*ENV | ||
frettled | mm | 15:04 | |
mberends | perldoc perlvar does not mention in-process behavior, only that it affects child processes | 15:05 | |
frettled | SUS v2 is a bit unclear here, hmm. | 15:07 | |
15:11
aesop joined
|
|||
frettled | I don't see any way in which POSIX allows environment variables to be set by anything but the main process, that is, you can trust that when you are the process, nothing will change your variables for you. | 15:15 | |
Not even your parent. | |||
15:15
clintongormley left
|
|||
frettled | If you're multi-threading, that's probably another beef, but then it would be sensible to keep local copies of the environment variables per thread or at least some sort of mutex to avoid race conditions. | 15:16 | |
(I don't see any mention of this in SUSv2, though) | |||
But I may just be too lousy at searching. | |||
mberends | correct. you could do such evil things in DOS, but never in Unix | 15:17 | |
what would we prefer in Perl 6 for the multi-threading case? | 15:18 | ||
frettled | A choice? | ||
mberends | :/ | ||
frettled | heh | ||
moritz_ | in Perl 6, all variables from outer scopes are shared | ||
only if a thread creates a new lexical variable, it is private | 15:19 | ||
frettled | I think there's a good case for that. For the case where a thread needs a local scope, the programmer can just copy. | ||
PerlJam | or use temp | 15:20 | |
15:20
uniejo left
|
|||
mberends | good, then it will be fun to try using jnthn++'s !STORE :) | 15:20 | |
15:20
clintongormley joined
|
|||
masak | bet it has lots of beer. :) | 15:21 | |
mberends | heh | ||
jnthn | :-) | ||
pmichaud decides that for today, Array and Seq will be eager. | 15:23 | ||
jnthn | masak: Bizzarely, the word "beer" can not be found anywhere in the Rakudo source. :-/ | ||
masak | .oO( "One flew over the eager Seq" ) |
||
jnthn | <groan> | ||
masak | jnthn: surely that's a mistake that needs fixing. | 15:24 | |
15:24
barney joined
|
|||
jnthn | masak: Quite! File RT! | 15:24 | |
:-) | |||
masak | my conscience won't allow me to do that :) | 15:25 | |
frettled | hehe | 15:27 | |
15:33
iblechbot left
15:35
justatheory joined
15:38
alester joined
15:42
clausi left
|
|||
masak | so binding is the only known way to assign a many-array RHS to a many-array LHS? | 15:43 | |
pmichaud | jnthn: ping | 15:44 | |
masak | I was hoping there was some way involving subsignatures or something... | ||
15:45
cognominal joined,
nihiliad joined
15:46
dual left,
wanradt_ joined
15:47
rgau joined
15:51
cognominal left
15:54
Psyche^ joined
|
|||
jnthn | pmichaud: pong | 15:54 | |
pmichaud | did we not implement setprophash ? I thought we did. | ||
jnthn | pmichaud: I remember discussing it. | ||
pmichaud | okay, guess we didn't. | ||
jnthn | pmichaud: Multiple times. | ||
pmichaud: I don't remember implementing it myself. | |||
It should be easy. | |||
pmichaud | I think I'll avoid it. | 15:55 | |
next question :-) | |||
jnthn | heh | ||
I can write it for you fairly quick if you want it. :-) | |||
pmichaud | after looking at Seq and Array more, I'm seriously considering making them array of Perl6Scalar | ||
15:55
cognominal joined
|
|||
jnthn | Heh. We've been back and forth on that one a few times too. :-) | 15:56 | |
The main argument against is just than it's extra GCables. | |||
pmichaud | I think we might actually end up with fewer GCables anyway, though. | ||
or roughly the same | |||
as it is, making copies of values is generating lots of GCables | 15:57 | ||
jnthn | That's a Good Point. | ||
pmichaud | it might be nice to make a stronger distinction between mutables (Perl6Scalar) and immutables (values) | ||
jnthn | Yes, true. | ||
I've no real objekshuns. | |||
pmichaud | I'm also thinking a bit in terms of targeting alternate backends | ||
jnthn | Hm | ||
15:57
uniejo joined,
Patterner left,
Psyche^ is now known as Patterner
|
|||
pmichaud | i.e., if we pick v8 or jvm or some other backend, I think it likely that aggregates will have to be array-of-container there too | 15:58 | |
jnthn | Yes, that is true | ||
The one that bothers me more... | |||
...is aggregates of native types. | |||
But we can cross that bridge when we come to it, I guess. | |||
pmichaud | that was discussed during the conference call | ||
TimToady++ says that after Rakudo * is out, we probably need to put some energy into array-of-int and compact structs | 15:59 | ||
(at least I think that's what he said :) | |||
pmichaud checks the minutes | |||
it didn't make it into the minutes | |||
jnthn | We need to re-do the way our objects work and store things too. | 16:00 | |
pmichaud | anyway, I agree, that one is a bit bothersome. but I'm also of the "bridge-when-we-come-to-it" mentality | ||
oh, yes, having to redo objects might be a pain. | |||
hm. | |||
jnthn | I think that's a related bridge. | ||
I want to re-do objects with a fuller picture of the alternative backend scene. | 16:01 | ||
That is, emerge with viable P6opaque and KnowHOW impls for Parrot + at least one other VM. | 16:02 | ||
pmichaud | okay, I'm going to try array-of-Perl6Scalar and see what sort of pain that brings | ||
jnthn | But I really feel that's something to focus on after R*. :-) | ||
OK, go for it. | |||
I need to spend an hour or so on $other-thing and then I can look more properly at some rakudo bits. | 16:03 | ||
pmichaud | one thing I haven't quite worked out | 16:04 | |
for $a = $b | |||
what I'd like to have happen is that $a and $b are Perl6Scalar, both referencing a common underlying immutable | |||
ummm, hmm. maybe that's not so good | |||
pmichaud waffles again. | |||
anyway, in that case, I'd need to descalarref $b to get to its underlying value | 16:05 | ||
but it needs to be only one level of descalarref | |||
jnthn | Yes, true. | ||
descalarref is relatively cheap anyway. | |||
pmichaud | right | ||
but the "only one level of descalarref" is the tricky part | 16:06 | ||
jnthn | Yeah :-/ | ||
How do we add extra constraints and all that lot. | |||
colomon | ng: my $z = 1i; say " $z"; | ||
jnthn | Takes more care. | ||
p6eval | ng 46e2ef: OUTPUT« 0 + 1i» | ||
colomon | ng: my $z = 1i; say "$z"; | ||
p6eval | ng 46e2ef: OUTPUT«0 + 1i» | ||
16:06
barney left
|
|||
colomon | ng: my $z = 1i; say " $z "; | 16:06 | |
p6eval | ng 46e2ef: OUTPUT« 0 + 1i » | ||
jnthn | pmichaud: Oh well, at least it's not as complex as what colomon++ is doing ;-) | 16:07 | |
pmichaud | :-) | ||
colomon | arrrgh. | ||
pmichaud | maybe I'll just spend an hour trying it out and see what happens. | ||
jnthn | :-) | ||
pmichaud: Go for it. | |||
colomon | dang it, this bug was easy to reproduce yesterday... | 16:08 | |
ng: my $a = 3/2; say "$a "; | |||
p6eval | ng 46e2ef: OUTPUT«Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | bingo | ||
jnthn | ewww | 16:09 | |
colomon | ng: my $a = 3/2; say " $a"; | ||
p6eval | ng 46e2ef: OUTPUT« 1.5» | ||
jnthn | ng: my $a = 3/2; say $a ~ " "; | ||
p6eval | ng 46e2ef: OUTPUT«1.5 » | ||
16:09
barney joined
|
|||
pmichaud | it's likely an issue with pir::join | 16:10 | |
jnthn | colomon: If we could get strings to use Perl 6's ~ to stitch things together, we'd not have the problem. | ||
pmichaud | oh, no, it's a problem with vtable concatenate | 16:11 | |
it doesn't know how to concatenate a Rat with a String (or maybe Str) | |||
maybe add a vtable in Mu | |||
jnthn | pmichaud: Right. Parrot's MMD values the left argument more, I think. :-/ | ||
colomon | pmichaud: but it does know how to concatenate a String with a Rat. | ||
pmichaud | colomon: sure, the underlying concatenate operation for String is much more forgiving | 16:12 | |
colomon | anyway, I've just made a page, and that's the first bug on it. | ||
wiki.github.com/rakudo/rakudo/ng-issues | |||
jnthn | pmichaud: Is there any way we could just use Perl 6's infix:<~>? | ||
pmichaud | jnthn: that'd be somewhat slow. And we're bound to miss some. | ||
colomon | ng: my $a; say $a.Str | ||
pmichaud | I'd rather fix concatenate. | ||
jnthn | OK. | ||
p6eval | ng 46e2ef: OUTPUT«Method 'Str' not found for invocant of class ''current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
jnthn | *nod* | ||
pmichaud | that's actually pretty simple -- let me create a patch. | 16:13 | |
colomon | ng: my $a; say $a ~ "hello" | ||
p6eval | ng 46e2ef: OUTPUT«Mu()hello» | ||
masak | jnthn: oh, by the way. I tried your suggested fix to my anon-enum patch yesterday. | ||
jnthn | masak: oh, did you? :-) | 16:14 | |
masak | jnthn: I'll nopaste the result. | ||
colomon | ng: my @a; @a.push: "a"; | ||
jnthn | And? Que passo? | ||
p6eval | ng 46e2ef: OUTPUT«Null PMC access in get_integer()current instr.: 'perl6;Seq;elems' pc 268002 (src/gen/core.pir:24115)» | ||
pmichaud | nopaste.snit.ch/19577 # try this | ||
masak | jnthn: gist.github.com/302697 | 16:15 | |
colomon | pmichaud: trying. | 16:17 | |
pmichaud | pmichaud@orange:~/ng$ ./perl6 | ||
> my $a = 3/2; say "$a "; | |||
too many positional arguments: 3 passed, 2 expected | |||
so, not quite. | |||
jnthn | masak: Right, so that means it parsed. | ||
masak | jnthn: oh! so good news? :) | ||
jnthn: where do I attempt to put in the actual stuff it should do, then? Actions.pm? | 16:18 | ||
jnthn | masak: I think it's just saying that you didn't have an action method that made a PAST node for the enum declarator. | ||
masak: Yes. | |||
masak | gotcha. will muddle on. :) | ||
colomon | pmichaud: why would it pass three arguments to concatenate? | 16:19 | |
pmichaud | =item C<PMC *concatenate(PMC *value, PMC *dest)> | ||
(self being an implied third argument) | |||
masak | that error message needs to go away. | 16:20 | |
or it will be at the top of the newbie FAQ. | |||
Trashlord | hello | ||
masak | Trashlord: yo! | ||
colomon | pmichaud: ah, that makes sense. | ||
jnthn | hi Trashlord | ||
Trashlord | how's it going? | ||
masak | Trashlord: forwards. and soon weekend, too! | 16:21 | |
Trashlord: how's going with you? | |||
pmichaud | I don't know how :vtable('concatenate') is supposed to work in that case, though. | ||
Trashlord | had work at 3am today, just woke up from resting after it, heh | ||
masak | Trashlord: working nights? | 16:23 | |
Trashlord | yeah, sometimes | ||
you get used to it eventually | |||
masak | yes. unfortunately. :/ | 16:24 | |
Trashlord | yeah :\ | ||
kinda ruins the rest of your day | |||
at least I got a day off tomorrow, so getting back from work at 10am today doesn't matter that much | 16:25 | ||
16:28
explorer__ joined,
payload joined
|
|||
pmichaud | colomon: okay, found it. patch coming. | 16:29 | |
colomon | pmichaud: \o/ | 16:30 | |
masak | doesn't this quote from Steele's "Gronwing a Language" sound like a very fit description of the Perl 6 community/process? gist.github.com/302714 | 16:31 | |
colomon | Gronwing: A Language :) | ||
masak | s/Gron/Gro/ :) | ||
pmichaud | nopaste.snit.ch/19580 # colomon, try this one | 16:32 | |
IllvilJa | masak: thanks for the encouraging FAQ regarding parrot error messages you blogged about earlier this week ;-). | 16:33 | |
masak | IllvilJa: you're welcome :) | ||
pmichaud | $ ./perl6 | ||
> my $a = 3/2; say "$a " | |||
1.5 | |||
masak always enjoys being the fly in the ointment, if there's a chance it has good side effects | 16:34 | ||
pmichaud | "Waiter! There's a fly in my ointment!" | ||
masak | :) | ||
IllvilJa | On a more serious note... has rakudo-ng (the one with the new regex engine and nqp stuff, if I'm not mistaken) become THE rakudo that get's downloaded when doing a 'git pull' for rakudo? | 16:35 | |
pmichaud | IllvilJa: not yet. very soon. | ||
moritz_ | not quite there yet | ||
Tene | I can't say that I really understood that blog post. | ||
pmichaud | IllvilJa: hopefully today, if I can get array and seq worked out. | ||
it's really really ugly code :-( | |||
IllvilJa | \o/ | ||
moritz_ | what about hashes? do they work again? | 16:36 | |
IllvilJa | Ugly code that does wonders still does wonders. | ||
pmichaud | fsvo "work" | ||
those will be working shortly thereafter, I'm sure. | |||
IllvilJa | I'll do a daily 'git pull' and see what comes down :-D | ||
pmichaud | it's again trying to deal with the mismatch between Parrot's PMC model and Perl 6's container/value model | ||
IllvilJa | Is rakudo-ng faster? | 16:37 | |
pmichaud | IllvilJa: should be, yes. I don't know that we have any direct comparisons. But under the hood it's doing a lot less work. | ||
Also, Parrot has done some significant speedups in the past month or so. | |||
IllvilJa | Ok... I got a dog slow experimental CGI script written in Rakudo Perl6, so once rakudo-ng hit's the main trunk, I suppose I can do a (very subjective) test. | 16:38 | |
pmichaud | well, when ng hits the main trunk, it'll still be a significant regression | ||
but I think we can prioritize a few features | |||
afk for a bit | 16:39 | ||
masak | Tene: the mistyped-class-in-a-namespace blog post? | 16:40 | |
jnthn | Hashes sorta work - slices don't and they're missing a bunch of built-ins. | ||
IllvilJa | Thanks for the info... I'll be back, but it's dinner time right now (and small kids we try to get to the table... interesting task at times). | 16:41 | |
Tene | masak: Yes. | ||
IllvilJa | Thanks for your hard work on rakudo and parrot! | ||
masak | Tene: it's basically about a bit of frustration I run into sometimes. | ||
Tene: I've been bitten by that error messages four or five times. | 16:42 | ||
Tene | masak: Right, I understood the content, but I couldn't work out whether you were saying "I'm frustrated." or "You guys all suck." or "Obviously nobody cares about usability" or "Other things are great, so this stands out notably as bad", or ... | ||
colomon | pmichaud: make spectest passes for me with that fix. | 16:43 | |
masak | Tene: actually, I tried to represent both the user side ("this is really not an acceptable error") and the dev side ("we know, and it's not always simple to fix") accurately. | ||
pmichaud | colomon: feel free to commit/push then, I'm a bit distracted here for a while | 16:44 | |
colomon | pmichaud: I'm on it. | 16:45 | |
masak | Tene: there's a clear component of "I'm frustrated" in the post, but I went to great lengths not to sound accusing. | ||
"I'm frustrated" is an undeniable part of the Rakudo user experience, as of 2008/2009/early 2010 :) | |||
jnthn | Clearly things were better in 2007! | 16:46 | |
PerlJam | jnthn++ | ||
masak | good old days :) | ||
Tene | masak: I guess I just felt like it was a mixed message, which you're saying it actually was, so I guess I understood it after all. :) | 16:47 | |
masak | it's deliberately mixed, yes. | ||
that's what it's like to write Perl 6 code, too. | |||
colomon | ack, I think I just borked my ng install. :( | 16:48 | |
masak | you kind of root for the good guys (the devs), but all the same you're getting these strange, inexcusable error messages sometimes :) | ||
s/inexcusable/LTA/ | |||
16:49
SmokeMachine left
|
|||
masak | also, I hope I blog positively often enough that I have some panic capital to burn on the occasional rant... :) | 16:50 | |
Tene | masak: Certainly. I wasn't objecting to you ranting, just trying to figure out if you actually were. | 16:51 | |
masak | guess I were. | ||
jnthn | .oO( "What it's like to be a Rakudo dev" could make a good blog post one day ) |
||
masak | jnthn: sure, why not? | 16:52 | |
jnthn | masak: Only the same reason as "why not" everything else - there's only so many hours in a day. :-) | ||
dalek | kudo/ng: bb80570 | (Solomon Foster)++ | src/builtins/Mu.pir: pmichaud++'s patch which adds Mu.concatenate and Mu.concatenate_str. |
16:53 | |
masak | "Hello, did you implement infinite-dimensional hashes yet?" -- "What, you didn't fix the bug that I submitted half a month ago yet?" -- "When's Perl 6 coming out?" | ||
colomon | I often find myself asking those same questions. ;) | 16:58 | |
masak | :) | ||
I don't so much anymore. | |||
I'm more like, "ok, here's what works today. what can we build with it?" | |||
17:00
dual joined
|
|||
pugs_svn | r29699 | colomon++ | [t/spec] Remove initial spaces in test description strings added yesterday as a workaround for a bug which has now been fixed. | 17:01 | |
moritz_ wishes a good weekend to everybody and says "ciao" | 17:03 | ||
masak | ciao, moritz_! | ||
17:03
athenot left
|
|||
colomon | moritz_: have a good weekend! | 17:05 | |
masak | by the way, I saw that rindolf showed up on the channel the other day, saying "ok, I'm ready to learn a bit of Perl 6 now". that's actually quite significant, considering his stance as of 2004. freshmeat.net/articles/critique-of-...is-heading | 17:10 | |
PerlJam | masak: just because he's ready to learn it doesn't mean he's changed his position :) | ||
masak | true. | 17:11 | |
but I think he has, too. | |||
the comments are interesting in themselves... first, tens of confused commenters trying to defend Perl 6 from a point of little information, then Schwern and Ovid commenting the living daylights out of the post... | |||
...then a lot of people agreeing with Schwern and Ovid, and finally, years later, two jerks assuming that Perl 6 is vapourware. | 17:12 | ||
I'm pondering whether a reasoned comment might help de-confuse people reading all the way down. | 17:13 | ||
anyway, not right now. I'm off to a housewarming party! o/ | 17:15 | ||
17:15
masak left
17:16
SmokeMachine joined
17:17
cotto_work left
17:18
cotto_work joined
17:22
barney left
|
|||
colomon | ng: (1..10).grep(say $_; 1;).eager | 17:30 | |
p6eval | ng bb8057: OUTPUT«Confused at line 1, near "(1..10).gr"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)» | ||
colomon | ng: (1..10).grep({say $_; 1;}) | 17:31 | |
p6eval | ng bb8057: ( no output ) | ||
colomon | ng: (1..10).grep({say $_; 1;}).eager | ||
p6eval | ng bb8057: OUTPUT«Mu()Mu()Mu()Mu()Mu()Mu()Mu()Mu()Mu()Mu()» | ||
jnthn | Epic fail. :-/ | ||
17:31
cotto_work left
|
|||
colomon | Just working on updating the issues wiki. ;) | 17:32 | |
actually, I was starting to look at sin.t, and then remembered these errors that should get added to the list. | |||
And now I'm hitting them! | 17:34 | ||
jnthn | ooh, trig! | ||
colomon | I won't really get to it today, I don't think, but I thought I'd take a peek and see where we are today. | ||
rakudo: say pi.Rat(1e-10); | 17:35 | ||
p6eval | rakudo 1d4928: OUTPUT«3.14159265361894» | ||
colomon | rakudo: say pi.Rat(1e-10).perl; | ||
p6eval | rakudo 1d4928: OUTPUT«312689/99532» | ||
17:38
pmurias joined
|
|||
colomon | If I take away the (now incorrect) Num in AngleAndResult.new, switch pi to (312689/99532) throughout, and $_ to $^a in greps, we pass 40 trig tests before seg faulting. | 17:39 | |
That's not as bad as I fear.ed. | |||
afk # running errands. | |||
17:45
lichtkind left,
cotto_work joined
17:50
payload left
17:52
pmurias left
|
|||
pmichaud | back again | 17:57 | |
what's the intended difference between "NG issues" and "NG major features needed" pages? | 18:01 | ||
18:01
SmokeMachine left
|
|||
colomon | pmichaud: just trying to dodge the "major features" label. | 18:01 | |
pmichaud | okay | ||
maybe just combine the two into "ng issues" then | |||
colomon | sort of "small scale but useful features". | ||
I've certainly no objection to that. | 18:02 | ||
mberends | I thought it meant short term buglets not worthy of trac reporting | 18:03 | |
18:03
wanradt_ left
18:04
jackyf joined
|
|||
colomon | mberends: my idea was that if they weren't fixed by this time next week they probably went into trac. | 18:04 | |
pmichaud | s/trac/rt ? | ||
18:05
stephenlb joined
|
|||
mberends | makes sense. s/trac/rt | 18:05 | |
colomon | s/trac/rt | ||
18:05
nacho left
|
|||
colomon | ack, I'm afraid the sin.t may be hitting the random seg fault bug. | 18:10 | |
Program received signal EXC_BAD_ACCESS, Could not access memory. | |||
Reason: KERN_INVALID_ADDRESS at address: 0x0873c000 | |||
0xffff07c7 in ?? () | |||
(gdb) bt | 18:11 | ||
#0 0xffff07c7 in ?? () | |||
#1 0x00c2fecc in ?? () | |||
Previous frame inner to this frame (gdb could not unwind past this frame) | |||
18:13
kaare_ joined
18:14
ShaneC joined
|
|||
colomon | That doesn't seem like the usual bt pattern for it. But it does change location depending on where I add "say" statements... | 18:15 | |
18:17
cognominal left,
cognominal joined
18:25
cognominal left,
explorer__ left
18:30
athenot joined
|
|||
pmichaud | jnthn: If you could put together a 'setprophash' opcode, I think that would be very useful. I'm guessing it will require a new vtable. | 18:35 | |
(I'm happy to be wrong about that, however :-) | |||
oh, I suppose it could be done with just a new opcode. Anyway, when one is available, I can probably use it for some efficiency gains. | 18:36 | ||
18:36
iblechbot joined
18:38
athenot left,
athenot joined
|
|||
jnthn | pmichaud: OK. I just had a nap, now I need to go and try to find something appealing to eat (my stomach is rather messed up :-|)...should be able to churn it out later today. :-) | 18:39 | |
pmichaud | that's fine, no rush. it's an optimization more than a "needed to make things work" | ||
jnthn | Will skip the new vtable and just stick it in our dynops for now. | ||
pmichaud | if it's in our dynops, I'd prefer it to not be named whatever we think the parrot opcode will be named, then | 18:40 | |
jnthn | Once we're satisfied we need it, we can get it into Parrot. | ||
Oh, good point. | |||
pmichaud | (avoids naming clashes if/when it goes into parrot) | ||
jnthn | experimental_setprophash :-) | ||
pmichaud | just x_setprophash is fine | ||
jnthn | yes, much finer :-) | ||
OK...supermarket time. | 18:41 | ||
pmichaud | I'm getting spectest failures on ng...expected? | ||
jnthn | nopaste? | ||
pmichaud | I'm re-running with a fresh ng checkout at the moment... will nopaste when that's ready | ||
(may take a few minutes) | |||
jnthn | OK | ||
pmichaud | anyway, I have my @a; @a[0]++; say @a[0]; running locally | 18:42 | |
jnthn | I'll glance 'em when I get back...I only am aware of some non-zero exit codes but without fails. | ||
18:42
cognominal joined
|
|||
jnthn | And problem with sign.t that is I think specific to my platform's handling of zeros or NaN or something. | 18:42 | |
back soonish... | |||
18:43
cognominal left
18:44
Maddingue joined
18:46
Maddingue left
18:47
cognominal joined,
Maddingue joined
18:56
wanradt_ joined
|
|||
pmichaud | jnthn: correct, all I'm getting are the non-zero wait status errors as well. | 19:04 | |
19:06
Trashlord left
19:08
jackyf left
19:12
Psyche^ joined
19:13
wanradt_ left
19:14
orafu left
19:16
orafu joined,
Patterner left
19:17
cjk101010 left
|
|||
jnthn | pmichaud: Yeah, they're kinda annoying. :-/ | 19:17 | |
19:17
Psyche^_ joined,
Psyche^_ is now known as Patterner
19:20
Psyche^ left
|
|||
uniejo | ng: (7 ~~ 5..10).Bool.say; (5..10 ~~ 7).Bool.say # Is this supposed to work both ways around? | 19:20 | |
p6eval | ng bb8057: OUTPUT«sh: ./perl6: No such file or directory» | ||
pmichaud | uniejo: no, ~~ isn't commutative. | 19:21 | |
uniejo | ok | ||
pmichaud | the first asks if 7 is in the range 5..10 (yes). The second asks if 5..10 smart matches with an Int 7 (it doesn't) | ||
dalek | kudo/ng: b577776 | pmichaud++ | src/builtins/ (2 files): Add Seq!elem and Array!elem as method for creating element PMCs some of the array issues, such as "my @a; @a[0]++; say @a[0];". |
19:22 | |
19:23
ash__ joined
|
|||
jnthn | pmichaud++ | 19:25 | |
pmichaud | now to restore list assignment | ||
jnthn | \o/ | 19:26 | |
19:29
ash__ is now known as help
19:30
help is now known as Guest72243,
Guest72243 is now known as ash__
19:31
Chillance joined
|
|||
dalek | kudo/ng: fb6d8a5 | pmichaud++ | src/builtins/assign.pir: Clean up assignment to scalars. |
19:34 | |
19:37
stephenlb left
19:38
snarkyboojum joined,
stephenlb joined
19:40
clausi joined
|
|||
ash__ | what is '::=' called? a read only bind? | 19:44 | |
PerlJam | compile-time bind | ||
pmichaud | it's now a read-only bind | ||
PerlJam | (well, that's what *I* call it :( | ||
er, :) | 19:45 | ||
pmichaud | ("compile-time bind" is outdated) | ||
in particular, it no longer happens at compile-time :) | |||
PerlJam | read-only bind means what exactly? After the bind the container is ro? | 19:46 | |
pmichaud | Yes. | ||
PerlJam | but you can still rebind, yes? | ||
pmichaud | not sure about that. | ||
> my ($a, $b) = 7, 9; say "$a $b" | |||
7 9 | |||
\o/ | |||
ash__ | yay, list assignment! | 19:47 | |
pmichaud | spectesting now, then push. | ||
ash__ | i was talking with someone in here the other day about custom indices on arrays, is that still practical? (or needed)? its in S09 under "User Defined array indexing" | 19:48 | |
it seems like it turns @arrays into effectively ordered hashes, unless i am completely wrong in my understanding of how that works | |||
PerlJam | ash__: "practical"? For whom? I think that practicality is kind of the point. | ||
ash__ | well, they seem like hashes at that point, so why not use a hash? | 19:49 | |
PerlJam | ash__: because you require the ordering. | ||
ash__ | unless they want to use them as ordered hashes, which i guess makes sense to have the distinct | ||
dalek | kudo/ng: bbcb6b0 | pmichaud++ | src/builtins/Parcel.pir: Add Parcel!STORE (list assignment). |
19:51 | |
PerlJam | ash__: one of the ways I look at it is that custom indices are very useful for domain-specific problems so that you don't have to manage the mapping from problem-domain identifier to array index yourself. | ||
pmichaud | okay, list assignment and arrays are now back in the ng branch. I'll be interested to see what's still broken about them. | 19:52 | |
I'll do slices next. | |||
PerlJam | pmichaud: and then merge? | 19:53 | |
pmichaud | fsvo "merge", yes. | ||
PerlJam | okay, how about "make ng master" then? | ||
pmichaud | yes. | ||
PerlJam | cool | ||
19:55
orafu left,
orafu joined
|
|||
takadonet | !!!! | 19:56 | |
20:01
justatheory left,
justatheory joined
|
|||
jnthn | pmichaud: Wow, that was quick! :-) | 20:04 | |
colomon | omg, I go away and there is amazing stuff pushed. \o/ | 20:06 | |
mberends | just curious, what files/code do .loadlib 'perl6_group', 'perl6_ops' and 'math_ops' load? | 20:09 | |
jnthn | mberends: dynpmcs and dynops | 20:10 | |
mberends: perl6_group refers to a DLL/SO from src/pmc/*.pmc | |||
perl6_ops.[dll|so] is from src/ops/perl6.ops | |||
mberends | thx, writing a few docs about Rakudo architecture (also for the coming talks) | ||
jnthn | \o/ | 20:14 | |
mberends: Commits to docs/ welcome, imo. :-) | 20:15 | ||
mberends | will do :) | ||
20:17
ruoso left
|
|||
pmichaud | perl6_group is the dynamic PMCs | 20:19 | |
perl6_ops are the dynamic ops | |||
math_ops are Parrot's dynamic math ops | |||
mberends | the =head1 DESCRIPTION \n =cut in Perl6/Compiler.pir looked so small and helpless, it desperately needed fulfilment ;) thx pmichaud | 20:20 | |
20:22
stephenlb left
|
|||
mberends | jnthn: thanks, docs/compiler_overview is a better place for what I was writing. I'll update that instead and refer the POD in Perl6/Compiler.pir to that. | 20:25 | |
20:26
orafu left,
orafu joined
20:28
bluescreen left
20:31
nacho joined
|
|||
jnthn | mberends++ | 20:38 | |
mberends | updating docs/compiler_overview.pod will take lots of forgiveness for misunderstandings ;) | 20:39 | |
20:41
bluescreen joined
|
|||
dalek | kudo/ng: f8ea414 | jonathan++ | src/ops/perl6.ops: Implement x_setprophash dynop for pmichaud++. |
20:43 | |
20:53
Trashlord joined
20:54
clausi left
|
|||
dalek | kudo/ng: 90ba35c | (Solomon Foster)++ | t/spectest.data: Turn back on S32-array/end.t, S32-array.pop.t, S32-array/shift.t, S32-list/end.t, and S32-list/first.t. pmichaud++ |
20:55 | |
kudo/ng: 1aa8acf | (Solomon Foster)++ | src/ops/perl6.ops: Merge branch 'ng' of [email@hidden.address] into ng |
|||
jnthn | Wow! | ||
mberends | colomon++ | ||
jnthn | colomon: I think I've worked out the grep issue. | ||
Just need to spectest to make sure I didn't break anything else while fixing it. | 20:56 | ||
20:56
simcop2387 left
|
|||
colomon | mberends: pmichaud++ gets all the credit for this one. All I did was have a notion that those tests were being blocked by the my @a; bug. | 20:57 | |
PerlJam | pmichaud: if you use "git pull --rebase" or put "rebase=true" in your .git/config under the appropriate branch, you won't see those "merge A into B" commits anymore. | 20:58 | |
colomon | I didn't count the exact number, but I think those 5 got us back well over 100 tests. | ||
mberends | :D | ||
colomon | PerlJam: that's my fault, I think. I thought it was git pull --ff ? | ||
jnthn does git pull --rebase | 20:59 | ||
colomon | --rebase sounds right to me, now that PerlJam++ has mentioned it. | ||
I just got out of the habit during the long dark tea-time of ng. | |||
PerlJam | --ff is the default behavior. It only doesn't generate a merge commit if it can fast-forward. | 21:00 | |
21:01
iblechbot left
|
|||
dalek | kudo/ng: 952d99e | jonathan++ | src/core/Block.pm: Fix Block.ACCEPTS, which was the problem at the root of the 'grep bug'. |
21:01 | |
colomon | \o/ | 21:02 | |
It's like Christmas! | 21:03 | ||
jnthn | ;-) | ||
pugs_svn | r29700 | jnthn++ | [t/spec] Untodo a test that ng passes. | 21:06 | |
pmichaud | I've heard conflicting views on the use of --rebase | ||
jnthn | Aren't there conflicting views on just about everything in git, apart from everyone agrees it's awesome? :-) | 21:08 | |
PerlJam | pmichaud: me too, but I've been using it for a couple of weeks now and it seems fine. | ||
colomon | I'm pretty sure I use --rebase all last fall for rakudo with no ill-effects I'm aware of. | 21:09 | |
PerlJam | pmichaud: the main "problem" with --rebase is that it could rewrite commits that you've already pushed. I haven't been able to make this happen though and I'm not sure how it could happen | ||
21:10
macae left
|
|||
PerlJam | for the type of workflow that most (all?) of us use, I don't think --rebase could be a problem. | 21:10 | |
colomon | I thought if there was a conflict rebase would just do a normal merge? | ||
21:12
tomaw_ left
|
|||
jnthn | pmichaud: ping | 21:13 | |
colomon | heh: www.viget.com/extend/only-you-can-p...e-commits/ | ||
pmichaud | jnthn: pong | 21:14 | |
jnthn | pmichaud: Just want to avoid a conflict... | ||
pmichaud: Are you working on slice stuff atm? | |||
pmichaud: I was pondering trying to get match object indexing working. | 21:15 | ||
pmichaud | atm, no, but I plan to "shortly" | ||
jnthn | But figure we might end up hitting on the same bit of code... | ||
pmichaud | I'd recommend leaving match object to me | ||
jnthn | OK, wfm | ||
pmichaud | I can do that real quick, aksually | ||
jnthn | OK, cool | ||
I may take a look at why mixins are broked then. | 21:16 | ||
They did work at one point :-/ | |||
oh gah | 21:19 | ||
iter correctly hands back a SeqIter | |||
21:19
vamped joined
|
|||
jnthn | But then vtable shift tries to call shift, not get. | 21:19 | |
And the code also needs to work on RPAs. | 21:20 | ||
pmichaud | I've been thinking that we should have :vtable entries for Iterator. | ||
(that then forward to .get) | |||
jnthn | Ooh, that'd work. | 21:21 | |
pmichaud | well, sort of. | ||
get_boolean is still going to be problematic | |||
I've been thinking that we may want/need a ParrotIterator type that converts any list/iterator into something that follows the Parrot iteration semantics | |||
and then :vtable('get_iter') returns one of those. | 21:22 | ||
the ParrotIterator can then do any lookahead to see if we've reached the end of the list and properly return bool true/false | 21:23 | ||
jnthn | oh yeah | ||
YOu're right, we can't just make it work by fixing up shit.] | |||
*shift | |||
... | |||
I'll have a crack at that. | 21:24 | ||
21:31
Su-Shee left
21:32
vamped left
21:35
meppl joined
21:37
cotto_work left
21:46
uniejo left
21:47
Trashlord left
21:54
athenot left
21:56
alanhuyle joined
21:57
alanhuyle left
|
|||
jnthn | pmichaud: ParrotIter idea works out very nicely. :-) And mix-ins work again. :-) | 21:58 | |
pmichaud | +1 | ||
even if I haven't been coding, I've been designing/thinking about things :) | |||
21:58
nacho left
|
|||
jnthn | That's important too :-) | 21:59 | |
Pushed. | |||
21:59
k23z__ joined
22:00
simcop2387 joined
|
|||
pmichaud | does find_method opcode work on role objects? | 22:00 | |
i.e., I want to get the (multi)method for postcircumfix:<[ ]> from the Positional role | 22:01 | ||
22:02
lichtkind joined
|
|||
jnthn | pmichaud: yes and no | 22:02 | |
It'll think you want to pun. | |||
pmichaud | punning is okay. | ||
22:02
fridim left
|
|||
pmichaud | at least, I think punning will be okay. | 22:02 | |
jnthn | Checking something... | 22:03 | |
dalek | kudo/ng: 400373d | jonathan++ | (3 files): Add ParrotIter, which provides Parrot iterator semantics in terms of the Perl 6 iterator semantics. Our get_iter vtable override hands that back. |
22:04 | |
jnthn | pmichaud: Gah. The one problem here is that postcircumfix:<[ ]> has been considered special for roles up to now. | ||
Becasue it's the way that you parameterize. | |||
22:04
pmurias_ joined
|
|||
jnthn | e.g. Positional[Int] | 22:04 | |
pmichaud | I don't have a problem with that, either. | ||
at least, I don't think I do. | 22:05 | ||
jnthn | pmichaud: I suggest that you: | ||
1) Get the Positional role and pun it | |||
pmichaud | I just need to get to the method object that normally responds to postcircumfix:<[ ]> | ||
jnthn | 2) find_method on the pun | ||
$P0 = get_hll_global 'Positional' | |||
pmichaud | right now I'm trying | 22:06 | |
$P0 = get_hll_global 'Positional' | |||
$P0 = find_method $P0, 'postcircumfix:<[ ]>' | |||
.tailcall invocant.$P0(args :flat) | |||
jnthn | Yeah, I don't think that'll work. | ||
pmichaud | what's the "pun" step, then? | 22:07 | |
or, perhaps I should just look up the method in the namespace for now? | |||
jnthn | Easiest way is $P0 = $P0.'new'() | ||
pmichaud | (not a big fan of that... but it might be easiest for now) | ||
22:08
clintongormley left
|
|||
jnthn | And find_method on that | 22:08 | |
pmichaud | hmmm. | ||
jnthn | I need to tidy up a bunch of this stuff after a discussion with TimToady++ | ||
pmichaud | I'll just try a namespace lookup for now. | ||
jnthn | That'll work for now | ||
pmichaud | creating a new object gets expensive on every .[] call | ||
(Yes, I could cache the result somewhere.) | |||
jnthn | Well, you can cache it. | ||
In many senses that should do the Right Thing, anyways. | 22:09 | ||
22:09
cotto_work joined,
clintongormley joined
22:10
clintongormley left
|
|||
pmichaud | > "abc" ~~ /a(.)c/; say $/[0]; | 22:23 | |
b | |||
colomon | \o/ | ||
pmichaud | > "abc" ~~ /a(.)c/; say $0; | 22:24 | |
Confused at line 1, near "say $0;\n" | |||
22:25
Trashlord joined,
Trashlord left,
Trashlord joined
22:26
Chillance left
|
|||
dalek | kudo/ng: adc7d3a | pmichaud++ | (3 files): Refactor !postcircumfix:<[ ]> into Positional.pir . |
22:33 | |
kudo/ng: 13e77a2 | pmichaud++ | src/builtins/Positional.pir: Update Positional.postcircumfix:<[ ]>(Int) to work with foreign objects. |
|||
kudo/ng: 141fa1a | pmichaud++ | (3 files): Merge branch 'ng' of [email@hidden.address] into ng |
|||
22:34
cotto_work left
|
|||
jnthn | pmichaud: Nice :-) | 22:36 | |
pmichaud: Are you popping back the $0 etc too? I can easily do those if not. | |||
jnthn figures with those, we win back a bunch of S05 tests. | 22:37 | ||
pmichaud | > "abc" ~~ /a(.)c/; say $0 | 22:38 | |
b | |||
22:39
payload joined
|
|||
jnthn | \o/ | 22:39 | |
colomon is very glad he has company coming over tonight, but kind of wishes he could hack on rakudo instead... exciting times! | 22:43 | ||
22:44
cotto_work joined
|
|||
jnthn yawns | 22:47 | ||
ash__ | '12ab' ~~ /<alpha>+/; say $/<alpha>; is probably next on the line then? | ||
pmichaud | I can work on Associative as well, yes. | ||
ash__ | do the named captures like that get set to anything? kinda how ( ) go to $1, $2, ... $n | 22:48 | |
pmichaud | they go to $<alpha>, $<digit>, etc. | ||
jnthn | You can use $<foo> | ||
Which saves....1 character. :-) | 22:49 | ||
22:49
athenot joined
|
|||
ash__ | ah, yeah, i forgot about that, you can omit the / | 22:49 | |
dalek | kudo/ng: 0a37674 | pmichaud++ | src/Perl6/ (2 files): Add implementation for $0, $1, $2, etc. |
22:50 | |
mberends | ooh! my buglet fixed! pmichaud++, and thanks on behalf of proto... | ||
pmichaud | yes, I should be able to stomp on quite a few buglets this weekend. | 22:52 | |
jnthn | wiki.github.com/rakudo/rakudo/ng-issues has only 3 issues left now :-) | ||
mberends | :D will try proto a bit more as well | ||
jnthn should have a reasonable amount of hacking time at the weekend | 22:53 | ||
mberends too | |||
22:58
kaare_ left
|
|||
pmichaud | ng: my @a = 4,5,6; say @a[1]; | 23:01 | |
p6eval | ng 0a3767: OUTPUT«5» | ||
pmichaud | ng: my @a = 4,5,6; say @a[-1]; | ||
p6eval | ng 0a3767: OUTPUT«Cannot use negative index on arrayscurrent instr.: '&die' pc 15509 (src/builtins/Junction.pir:169)» | ||
jnthn | :-) | ||
ng: my @a = 4,5,6; @a[1] = 42; say @a[1]; | |||
p6eval | ng 0a3767: OUTPUT«42» | ||
jnthn | \o/ | ||
jnthn is glad that one is fixed | |||
pmichaud | almost as good: | 23:02 | |
jnthn | ng: my %h = a => 4, b => 5; %h<a> = 42; say %h<a>; | ||
pmichaud | my @a; @a[5] = 42; say @a; | ||
p6eval | ng 0a3767: OUTPUT«42» | ||
pmichaud | my @a; @a[5] = 42; say ~@a; | ||
jnthn | pmichaud: Yay! Whatever you did also fixed the same issue hashes had. :-D | ||
pmichaud | ng: my @a; @a[5] = 42; say ~@a; | ||
p6eval | ng 0a3767: OUTPUT« 42» | ||
jnthn | :-) | ||
pmichaud | the hashes issue there was undoubtedly a list assignment issue or something. | ||
because I hadn't touched hashes yet (but touching them now :) | 23:03 | ||
jnthn | pmichaud: Possibly, yes. :-) | ||
pmichaud | ng: "abc123" ~~ /<digit>/; say $/<digit>; # expect fail | ||
p6eval | ng 0a3767: OUTPUT«Can't postcircumfix:<{ }> foreign objects yet.current instr.: '!postcircumfix:<{ }>' pc 322695 (src/gen/core.pir:43993)» | ||
pmichaud | fixing. | 23:04 | |
23:05
wasy_ joined
23:07
wasy left,
wasy_ is now known as wasy,
iblechbot joined
|
|||
jnthn | ng: sub foo { return 1, 2, :a<3>; }; my ($a, $b, $c) = foo(); say ($a, $b, $c)>>.perl | 23:09 | |
p6eval | ng 0a3767: OUTPUT«12Pair.new(:key("a"), :value("3"))» | ||
jnthn | \o/ | ||
pmichaud | something is weird with named captures.... | 23:10 | |
jnthn | Oh? | ||
pmichaud | rebuilding fresh to see if I can lock it down | 23:11 | |
but I'm getting "recursion depth exceeded" in the match itself. | |||
jnthn | :-/ | ||
That's...weird. | |||
pmichaud | and it's having something to do with role management :-( | ||
jnthn | Got a short example? | 23:12 | |
pmichaud | hmmm, not after I checked out fresh. | 23:14 | |
I must've done something wrong earlier -- trying again. | |||
23:15
bluescreen left
|
|||
jnthn may try and get Capture back in place tomorrow. | 23:17 | ||
And a bunch of coercions to it. And then nested signatures can work again, and I can get :(\$capture) working too. :-) | 23:18 | ||
pmichaud | ugh, looks like we have something incorrectly calling "postcircumfix:<{ }>" without the leading ! | 23:24 | |
or something else is happening when I try to add a postcircumfix:<{ }> into the Associative role. | |||
jnthn | What's the error? | 23:25 | |
23:25
iblechbot left
|
|||
pmichaud | maximum recursion depth exceeded. | 23:25 | |
In the match. | |||
jnthn | During the actual match itself? Ouch. That's...really strange. | 23:26 | |
pmichaud | yeah, I'm getting lots of calls to "&CREATE_HASH_LOW_LEVEL" and "Perl6;Metamodel;RoleToRoleApplier" | 23:27 | |
my code I'm running is "abc123" ~~ /<digit>/; | |||
jnthn | Ouch. | ||
23:28
ash__ left,
ShaneC left
|
|||
pmichaud | it's definitely the existence of "postcircumfix:<{ }>" in Associative[::T] that is causing the problem. | 23:28 | |
jnthn | Attempting to reproduce. | 23:29 | |
pmichaud | I'm trying a workaround where I call the method something else. | ||
jnthn | I have a nasty feeling of what it is though. | ||
Argh! | 23:31 | ||
pmichaud: *sigh* | |||
pmichaud: Yes, it is that. | |||
pmichaud: Something in the role compositon ends up calling a method defined in the Perl 6 setting. | 23:32 | ||
This method in turn has a slurpy named parameter. | |||
It thus tries to instantiate a Hash, meaning it tries to compose the Hash role, apart from... | |||
...we were already doing that, so we try again, and ... blah. | 23:33 | ||
pmichaud | > "abc456" ~~ /<digit>/; say $<digit>; | ||
4 | |||
jnthn | pmichaud: Just worked around it? | 23:34 | |
pmichaud | yes, I've named the method XXX-postcircumfix:<{ }> for now. | ||
jnthn | OK. | ||
pmichaud | but that's a problem that will have to be resolved if we want hash slices to work | ||
or hash keys based on WhateverCode | 23:35 | ||
jnthn | Right. | ||
23:35
ShaneC joined,
ShaneC left
|
|||
jnthn | It's a tricky problem. | 23:35 | |
pmichaud | ...is something calling postcircumfix:<{ }> as a method directly? | ||
jnthn | What I *think* is happening is... | 23:36 | |
You have a method that is in Associative, but also in EnumMap | |||
This makes the role applier take a different code path (needs to know not to use the one in Associative or some such) | |||
pmichaud | is EnumMap a role also? | ||
jnthn | And in doing so, it calls Mu.Bool | ||
Yeah | 23:37 | ||
This is to get the parametric-y stuff to work. | |||
pmichaud | what's the difference between Associative and EnumMap, then? | ||
jnthn | Associative just says "this thing does postcircumfix:<{ }>". It also provides .of | 23:38 | |
EnumMap is essentially a Hash minus !STORE | |||
pmichaud | does EnumMap have to have a postcircumfix:<{ }> then? Can it just use the one from Associative? | ||
jnthn | It could do | 23:39 | |
That may fix it. | |||
But I guess there's other ways to try and deal with it too. | |||
pmichaud | anyway, I'll test+push what I have working now, and head to dinner. | ||
jnthn | OK | ||
I'll try and look at that tomorrow - too tired to debug the role composer tonight. | |||
pmichaud | I need to review and understand EnumMap anyway, so perhaps this is best to wait for tomorrow | ||
I haven't read all of the spec changes relating to Enum/EnumMap. | |||
jnthn | In a nutshell, Enum just seems to be an immutable Pair. | 23:40 | |
I asked if the expectation was that Pair ~~ Enum and Hash ~~ EnumMap and was told that sounded reasonable. :-) | |||
pmichaud | EnumMap sounds analogous to a Seq | ||
jnthn | Yeah, I think so. | ||
Though with hashes there isn't the laziness angle. | 23:41 | ||
pmichaud | it's currently a role? | ||
jnthn | Yes | ||
pmichaud | maybe it should be a class, like Seq currently is. | ||
jnthn | The reason being that in theory we can then pass along the type parameters. | ||
Well | |||
That's the other question on Seq. | |||
How do we put back typed lists. | |||
pmichaud | how did we do it before? (did we do it before?) | ||
jnthn | We could just make them all classes and cheat like we do in master. | ||
pmichaud | right. | ||
jnthn | In master, we mix-in the role. | 23:42 | |
e.g. make an Array or whatever, and then do @thingy does Positional[Int] | |||
That always felt like a cheat to me. | |||
pmichaud | seems like Seq should mix-in Positional[<type>] and EnumMap should mix-in Associative[<type>] | ||
but yes, perhaps it's a cheat | |||
jnthn | But...maybe I can see it as less of one and make our lives easier. | ||
:-) | |||
23:42
payload left
|
|||
jnthn | I'm not sure. The thing is that it implies that all of those thingies want to be roles. | 23:43 | |
pmichaud | anyway, I'll look at it tomorrow. I do know that Seq's postcircumfix:<[ ]> needs to be able to override the one from Positional, and EnumMap's postcircumfix:<{ }> probably needs to override the one from Associative | ||
jnthn | Right. | ||
We maybe could switch Hash and EnumMap to classes for now. | |||
And carry on with the same approach as master. | 23:44 | ||
pmichaud | I'd be fine with that. | ||
jnthn | It just feels a tad cheaty, and one of those things that mighta been worth trying to get right from the start with hashes. | 23:45 | |
If not for lists. | |||
pmichaud | well, whatever we do for one we ought to do for the other. and slices + multi-method indexing are pretty important. | ||
jnthn | OTOH, maybe consistency in approach between them is better. | ||
pmichaud | pushing latest commit | 23:46 | |
and time for dinner | |||
bbl | |||
jnthn | OK, let's for now say they're classes. | ||
OK, I'll sleep pretty soon. | |||
dalek | kudo/ng: 0d86e31 | pmichaud++ | (3 files): Refactor !postcircumfix:<{ }> into Associative.pir . |
23:48 | |
kudo/ng: c0f4ccc | pmichaud++ | src/builtins/Associative.pir: Add in postcircumfix:<{ }> for foreign objects (especially match objects (by calling it "XXX-postcircumfix:<{ }>") to avoid an infinite recursion having to do with EnumMap. This will ultimately have to be fixed to get hash slices to work. |
|||
23:48
colomon left
|
|||
23:51
Schwern joined
23:52
payload joined
|
|||
jnthn -> rest | 23:53 |