»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by lichtkind on 5 March 2010. |
|||
diakopter | TimToady: q about STD.pm6 ^^ this morning | 00:00 | |
jnthn | rakudo: say &[+] | 00:03 | |
p6eval | rakudo 35bcd5: OUTPUT«Unable to parse postcircumfix:sym<[ ]>, couldn't find final ']' at line 11current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)» | ||
colomon | jnthn++ | 00:06 | |
lue | o hai | 00:07 | |
jnthn | hellue! | 00:08 | |
colomon: o/ | |||
00:08
kensanata left
00:17
daemon joined
|
|||
jnthn | > say sort(&[<=>], <1 10 2 3>).perl | 00:20 | |
("1", "2", "3", "10") | |||
lue | that's a good thing, right? | 00:22 | |
rakudo: say sort(&[<=>], <1 10 2 3>).perl | |||
p6eval | rakudo ba1943: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''current instr.: '!postcircumfix:<[ ]>' pc 10733 (src/builtins/Role.pir:90)» | ||
pugssvn | r30412 | lwall++ | [S02] define the term 'now' | 00:23 | |
r30412 | define math on instants and durations | |||
jnthn | lue: Yeah, just implmented that work. | 00:24 | |
gah | |||
*form | |||
00:25
baisong joined
|
|||
TimToady | diakopter: dunno, probably depends on the position of the type | 00:25 | |
diakopter | mostly the contextuals | 00:26 | |
TimToady | gimme5 will parse --> but do the wrong thing with it currently | ||
well, p5's my and our accept a typename but (last I heard) ignore it | |||
diakopter | well, the contextuals and all the scalar/list declarations without initializers | ||
O_O | |||
TimToady | bbl & | 00:29 | |
diakopter | std: (now)() | ||
p6eval | std 30412: OUTPUT«===SORRY!===Undeclared routine: 'now' used at line 1Check failedFAILED 00:01 107m» | ||
dalek | kudo: f162a26 | jonathan++ | src/glue/subset.pm: Correc the order we do checks of subtypes from most general to most specific, so we at least always consider type first before the extra conditions. |
00:45 | |
kudo: 1f9b1dd | jonathan++ | src/Perl6/ (2 files): Implement &[+] shortcut form for infix ops. |
|||
colomon | oh, that's &[+] instead of &infix:<+>? | 00:46 | |
00:47
ash_ joined
|
|||
colomon | (and hi back to the hi's earlier, I got shanghai'd into reading good night stories for a while there. | 00:48 | |
) | |||
00:50
yinyin joined
|
|||
jnthn | colomon: Yes :-) | 00:51 | |
lue | of course ya did :) | ||
jnthn | colomon: Heh, it was your ticket. ;-) | ||
colomon | The &[+] was? | ||
(I saw that you did Rat.new.Str, which was mine...) | |||
jnthn | colomon: Yes :-) | 00:52 | |
colomon | Dang, I totally don't remember that. | ||
Please tell me it was from last year, at least. :) | 00:53 | ||
jnthn | Date: Wed, 29 Jul 2009 08:55:54 -0400 | ||
rt.perl.org/rt3/Ticket/Display.html?id=65588 | |||
std: say "\123" | |||
p6eval | std 30412: OUTPUT«===SORRY!===Unrecognized backslash sequence: '\1' at /tmp/aQmtsVrzvv line 1:------> say "\1⏏23"Check failedFAILED 00:01 107m» | ||
colomon | crazy! nine months ago, seems like a lifetime. | 00:54 | |
jnthn | We're back under 630 tickets. | 00:57 | |
colomon | \o/ | ||
jnthn | I musta given moritz++ about ten or so of them to write or check we have tests for too. | ||
lue | Yay! | ||
jnthn | (or anyone who fancies writing tests of course) | 00:58 | |
colomon | any chance you'll have some time to look at my role issues? (wants a pleading face smiley...) | 00:59 | |
jnthn | colomon: It's like 3am and I"m kinda meant to work tomorrow. Harrass me about it tomorrow. | 01:00 | |
colomon | jnthn++ | ||
sure thing. | |||
jnthn | Tonight I just wanted to finsih my hash slice patch which has been sitting half-done on my computer for about a week. | ||
And then got sucked into LHF and reviewing RT. :-) | |||
colomon | ah, I thought the check-in early was it. | ||
(misread, obviously it was it.) | |||
lue | what is LHF? | 01:01 | |
colomon | low-hanging fruit, the kind that is easy to pick. | ||
jnthn | colomon: Yes, I did finish it. :-) | 01:02 | |
Then got sucked in. ;-) | |||
colomon | sucked into the bug-fixing vortex! | 01:03 | |
jnthn++ | |||
should I try to get chromatic looking at the memory usage of the mandelbrot script? | 01:04 | ||
lue | *slurp* | ||
jnthn | 627. :-) | ||
colomon: Maybe, yeah...he may be able to determine at least if it leaks or is just having a hungry. | 01:05 | ||
lue | the stalled ones bug me :) | 01:06 | |
pugssvn | r30413 | lwall++ | [STD] implement now term | 01:07 | |
r30413 | [CORE.setting] a few more time-related names | |||
lue | those 5 stalled bugs. Let's do something about them :) | 01:08 | |
jnthn didn't know we only had 5 of them :-) | |||
lue | the numbers are coming up... | 01:09 | |
#52242 #58922 #62068 #62224 #67064 | 01:11 | ||
01:11
gurjeet joined
|
|||
dalek | kudo: b05155e | (Martin Berends)++ | src/cheats/setup-io.pm: [src/cheats/setup-io.pm] implement $*PID and make the source code even more cheaty. Parrot TT#1564 requests a less cheaty feature. |
01:11 | |
lue | .oO( oh, and get rid of the cheating at some point :) ) |
01:12 | |
jnthn | Wow. I've trawled through the whole RT queue tonight. :-) | 01:13 | |
lue | :O | 01:14 | |
rakudo: my @a = (1); @a[0] := @a; @a.perl # starting with #58922 | |||
p6eval | rakudo ba1943: OUTPUT«:= binding of variables not yet implementedcurrent instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)» | ||
lue | Ah! D: | 01:15 | |
01:16
orafu left
|
|||
lue | that is really annoying at this point | 01:16 | |
01:16
orafu joined
01:17
alester left
|
|||
jnthn | Aye. | 01:17 | |
lue | It's a problem with self-referent structures and how .perl should handle them | 01:18 | |
jnthn | Ok, I think I'm done for tonight. I didn't plan to stay up until 3:20am! | ||
lue | good night then o/ | ||
jnthn has quite a lot of $dayjob tasks tomorrow. :-) | |||
night o/ | |||
lue | afk (but _not_ goodnight) | 01:19 | |
01:22
gurjeet left
01:23
wknight8111 left
|
|||
diakopter | sorear: ping | 01:38 | |
diakopter ponders how to implement contextuals | 01:41 | ||
diakopter considers a very hacky thing | 01:42 | ||
sigh. a bunch of dynamic checks will have to suffice until I or someone else can think of a more elegant/efficient implementation. | 01:46 | ||
01:50
bacek_at_work left
|
|||
diakopter | does rakudo do contextuals? | 01:56 | |
(i've forgotten) | |||
01:57
Psyche^ joined
|
|||
diakopter | TimToady: if a routine assigns to a contextual more than once in a single code path, to which value does it revert when the routine returns? | 01:58 | |
I guess the original? | |||
diakopter figures out an efficient way to solve it. whee. | 02:01 | ||
contextuals coming right up. | |||
02:01
Patterner left,
Psyche^ is now known as Patterner
02:03
nihiliad left
02:04
sail0r joined
02:06
awwaiid joined
02:07
sail0r left
02:23
gurjeet joined,
snarkyboojum joined
|
|||
diakopter | the only check at runtime will be 1 int comparison for each contextual that could possibly have been assigned-to in the routine at the end of the routine. | 02:25 | |
02:26
huf left
02:27
huf joined
02:29
dual left,
nihiliad joined
02:33
gurjeet left
02:36
dual joined
02:39
agentzh joined
03:03
nadim left
03:06
molaf joined
03:08
snarkyboojum left
03:25
gfx joined
|
|||
diakopter | this is taking quite a long time to code up. | 03:33 | |
03:36
nihiliad left
03:46
justatheory left
|
|||
sorear | diakopter: pong | 03:46 | |
hejki | usually when something takes longer than estimated it's either caused by bad design or too much simultaneous ircing while working | 03:47 | |
sorear | don't plan to throw one away | 03:48 | |
plan for 8 | |||
03:50
ash_ left
|
|||
diakopter | hejki: :D but I didn't estimate... | 03:56 | |
no srsly it's a lot of coding. I can't think of a more efficient design.... | 03:58 | ||
sorear | oh wow | 04:00 | |
bug closings! | 04:01 | ||
04:19
alester joined
04:24
meppl joined
04:35
stephenlb left
04:47
molaf left
04:49
quester_ joined
|
|||
CokeBot9000 | szabgab: ping. | 04:55 | |
szabgab | CokeBot9000, reping | ||
hmm, is this really a bot? | |||
diakopter | almost there.. | 04:56 | |
"stay on target..." | |||
04:58
hicx174 joined
|
|||
CokeBot9000 | szabgab: no, it's Coke. | 04:58 | |
szabgab: are you still having trouble building rakudo on windows? | 04:59 | ||
rt.perl.org/rt3/Ticket/Display.html?id=67574 ? | |||
Looks like you were trying to build it without a parrot in your path. | |||
szabgab | I have built it since then I am quite sure | ||
04:59
ReiniUrban joined
|
|||
szabgab | so from my pov that ticket is irrelevant | 05:00 | |
CokeBot9000 | Danke. Closing... | ||
szabgab | ty | ||
05:01
rurban left
|
|||
szabgab | what happened to the real Coke? | 05:01 | |
05:01
ReiniUrban is now known as rurban
|
|||
CokeBot9000 | someone on freenode stole my nick! | 05:01 | |
or, you know, registered it several years before I bothered to show up. | |||
szabgab | oh | ||
CokeBot9000 | question on rt.perl.org/rt3/Ticket/Display.html?id=68662 - shouldn't that test be checking for $frew == 5 instead of 15? | 05:03 | |
rakudo build question - why dump all the .pm files into the giant core.pm ? why not just build those pms individually? | 05:06 | ||
(68662) - nevermind, test was fixed, ticket is still borked. | 05:08 | ||
05:08
rv2733 left
|
|||
CokeBot9000 | rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -= | 05:09 | |
$b } | |||
p6eval | rakudo b05155: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 11current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)» | ||
CokeBot9000 | rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -= $b} | ||
p6eval | rakudo b05155: ( no output ) | ||
CokeBot9000 | rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -= $b}; my $joe = 10; $joe += 4; say $joe; | ||
p6eval | rakudo b05155: OUTPUT«Cannot assign to readonly valuecurrent instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)» | 05:10 | |
CokeBot9000 | rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a = $a - $b}; my $joe = 10; $joe += 4; say $joe; | ||
p6eval | rakudo b05155: OUTPUT«Cannot assign to readonly valuecurrent instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)» | ||
CokeBot9000 | I can't build rakudo-current. getting complaints on Undef. | 05:11 | |
invoke() not implemented in class 'Undef' | |||
05:13
finanalyst joined
|
|||
finanalyst | alpha: $_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say | 05:15 | |
p6eval | alpha 30e0ed: OUTPUT«["b", "c"]a» | ||
finanalyst | rakudo:$_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say | ||
rakudo: _="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say | |||
p6eval | rakudo b05155: OUTPUT«Could not find sub &_current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
finanalyst | rakudo: $_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say | 05:16 | |
p6eval | rakudo b05155: OUTPUT«[["b", "c"]]a» | ||
aesop | perl 5.12!! | 05:17 | |
finanalyst | rakudo: $_="a\tb\tc"; my $k,@f = map { .trim }, .split("\t"); @f.perl.say;$k.say | 05:20 | |
p6eval | rakudo b05155: OUTPUT«Symbol '@f' not predeclared in <anonymous>current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)» | ||
05:21
Kyril left
|
|||
diakopter | perlesque: my $*a = 5; say($*a); my $b = sub int () { $*a = 7; say($*a); return 1 }; $b(); say($*a) | 05:23 | |
p6eval | perlesque: OUTPUT«575» | ||
diakopter | perlesquel: . | ||
p6eval | perlesquel: OUTPUT«575real 0.04user 0.05sys 0.00» | ||
diakopter | and, I present to you, contextuals. | 05:24 | |
quester_ | rakudo: multi sub infix:<+=> (Num $a is rw, Num $b) { $a = $a - $b}; my $joe = 10; $joe += 4; say $joe; | 05:26 | |
p6eval | rakudo b05155: OUTPUT«6» | ||
diakopter | heh | 05:27 | |
05:28
kaare joined
|
|||
quester_ | CokeBot9000: your infix:<+=> just needs "is rw" on $a. | 05:28 | |
05:28
kaare is now known as Guest76758
05:32
Guest76758 is now known as kaare_
|
|||
finanalyst | alpha: $_ = "a\tb\tc\td"; my @f=map { .trim }, .split("\t"); my %h; %h{@f[0]} = @f[1 ..^ +@f]; %h.perl.say | 05:33 | |
p6eval | alpha 30e0ed: OUTPUT«{"a" => ["b", "c", "d"]}» | ||
finanalyst | rakudo: $_ = "a\tb\tc\td"; my @f=map { .trim }, .split("\t"); my %h; %h{@f[0]} = @f[1 ..^ +@f]; %h.perl.say | ||
p6eval | rakudo b05155: OUTPUT«{"a" => Seq.new()}» | ||
finanalyst | alpha: my @a = 1,2,3,4; my %h= @a[0] => @a[1 ..^ +@a]; %h.perl.say | 05:35 | |
p6eval | alpha 30e0ed: ( no output ) | ||
finanalyst | alpha: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.perl.say | 05:36 | |
p6eval | alpha 30e0ed: OUTPUT«{"1" => [2, 3, 4]}» | ||
finanalyst | rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.perl.say | ||
p6eval | rakudo b05155: OUTPUT«{"1" => Seq.new()}» | ||
CokeBot9000 | quester_: can you patch the spectest for that? | 05:37 | |
Actually I guess I can. =-) | 05:38 | ||
diakopter | rakudo: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a) | ||
p6eval | rakudo b05155: OUTPUT«577» | ||
diakopter | perlesque: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a); | ||
p6eval | perlesque: OUTPUT«575» | ||
diakopter | pugs: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a); | ||
p6eval | pugs: OUTPUT«77» | ||
quester_ | Cokebot9000: Oh. Good thing, I don't have a commit bit. | ||
pugssvn | r30414 | coke++ | Since we're modifying the LHS, it needs to be rw. | 05:40 | |
r30414 | | |||
r30414 | quester++ on #perl6 | |||
diakopter | oh, it's 'my' on the inner contextual. oh yeah... | ||
heeeeee | |||
finanalyst | rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.say | ||
p6eval | rakudo b05155: OUTPUT«1 2 3 4» | ||
05:40
jhuni left
|
|||
diakopter | oh, that's easier. SIGH | 05:41 | |
quester_ | finanalyst: I think the .perl method is the culprit: | ||
finanalyst | Yes just come to that conclusion | ||
quester_ | rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h<1>.eager.perl.say | ||
diakopter | hejki: you were right; incorrect design :) | ||
p6eval | rakudo b05155: OUTPUT«(2, 3, 4)» | ||
hejki | diakopter: not preplanning all logical steps usually leads to that :> | ||
diakopter | I guess I could bother to read the spec, too, instead of relying on faulty memory | 05:42 | |
hejki | :P | ||
quester_ | finanalyst: .perl could call .eager at each structure level, although that would cause other mischief with real lazy list. | ||
diakopter | ah well; I should be able to make the change quickly now that the reversion structure is in place. | ||
after all, it's a syntactic difference only | |||
quester_ | ... err, s/list/lists/ | ||
sorear | diakopter: you ping me, then you ignore me. :( | ||
finanalyst | is this worth a bug report? | 05:43 | |
diakopter | sorear: o hai | ||
quester_ | finanalyst: Yes... I'm not sure how it's speced though. | ||
diakopter | sorear: sry. I was just going to ask if you've implemented dynamically scoped variables before | 05:44 | |
merely curious. | |||
finanalyst | rakudo: my @a= ^5; say @a[1 ..^ *] | ||
sorear | yes | ||
p6eval | rakudo b05155: ( no output ) | ||
sorear | perl 6 contextuals are a little weird though | ||
finanalyst | alpha: my @a= ^5; say @a[1 ..^ *] | 05:45 | |
p6eval | alpha 30e0ed: OUTPUT«1234» | ||
sorear | because they aren't just dynamically scoped - they're also thread-local | ||
does CLR support TLS? | |||
diakopter | ? | ||
diakopter will have to read up on that. | 05:46 | ||
I bought "Concurrent Programming on Windows" a few weeks ago, and have barely cracked it. | |||
it covers both CLR stuff and C++ | |||
and most of the CLR stuff applies to linux/mono | 05:47 | ||
sorear | what does C++ have to do with concurrent programming | ||
diakopter | that's kindof a combative question | ||
05:48
alester left
|
|||
sorear | not really | 05:49 | |
diakopter | I mean, how would I know? | ||
sorear | C++ is one of many programming languages | ||
and it's not a programming language designed to research concurrency issues (like CSP) | |||
diakopter | the book is not a research book. | ||
sorear | so... why is it treated as part of "concurrent programming" | ||
diakopter | the book has nothing to do with academia | 05:50 | |
feel free to read about it on Amazon if you're curious. | |||
sorear: to answer your question, I assume the book focuses on C++ and the CLR because those are the languages/environmenets most Windows programmers use. | 05:52 | ||
05:57
uniejo joined
05:59
finanalyst left
06:00
snarkyboojum joined
06:03
|Jedai| joined
|
|||
diakopter | I'll correct the contextual semantics tomorrow night. | 06:05 | |
06:06
jonasbn joined
06:08
|Jedai| left
06:20
clintongormley joined
06:31
gfx left
06:45
jaldhar_ left
06:51
yinyin left
|
|||
quester_ | Does anyone have an opinion on what "my $a=(1,1,* + * ... *); $a.perl.say;" should print? Does 'GatherIterator(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ???)" look about right? | 06:54 | |
moritz_ | quester_: not quite, since evaling it back doesn't return the original sequence | 06:55 | |
TimToady | I'd think it should say "1, 1, *+* ... *" | 06:56 | |
moritz_ | problem is, currently we don't serialize closures | ||
or any type of code objects, for that matter | |||
TimToady | well, 1,1,<mumble>...* for now :) | ||
moritz_ | 1,1,{...}...* probably | 06:57 | |
TimToady | looks like a mumble to me :) | ||
quester_ | Umm, well, yes, it would be nice if it were that intelligent, but if the seqence is, say, an IO object, that's going to be much, much, more difficult. | ||
I was thinking we could print the first n values, for some value of n, and it would be of some help in debugging. | 06:58 | ||
Moreover, it would finish in finite time, unlike the current implementatio. | |||
TimToady | that would be something other than .perl | ||
moritz_ | quester_: well, it would be an improvement | ||
pugssvn | r30415 | moritz++ | [t/spec] unfudge some tests that rakudo now passes | 06:59 | |
r30415 | | |||
r30415 | <rant>A test file with all tests fudged for the same implementation doesn't | |||
r30415 | really make sense - who does such a thing?</rant> | |||
quester_ | Okay... does the first ten values strike you as reasonable, and add {???} at the end if there are more? | ||
moritz_ | I think it's an improvement, but it's not quite correct | 07:00 | |
TimToady | I think that's a reasonable thing for *say* to do with an infinite list | ||
moritz_ | std: 1 [+] 2 | ||
p6eval | std 30414: OUTPUT«ok 00:01 109m» | ||
sorear | quester_: it's perfectly legal to form a sequence where computing the 10th value requires 15 billion years | 07:02 | |
pugssvn | r30416 | moritz++ | [t/spec] more tests for &[+] and [+] short forms | ||
TimToady | but I'd say first thirty or forty values in that case | ||
sorear | so I don't really think "just the first ten" makes much sense | ||
personally I support TimToady's initial proposal | |||
I played with FORTH once, my favorite feature was the integrated decompiler | |||
quester_ | TimToady: So... in your opinion, and perhaps just as a stopgap measure until [some] code can be serialized, (1,1,* + * ... *).perl.say should print...? | 07:03 | |
sorear | 1, 1, {...} .. * ? | ||
moritz_ | '1, 1, {...} ... *' | ||
sorear | rakudo: (* + *).perl.say | ||
p6eval | rakudo b05155: OUTPUT«{ ... }» | ||
quester_ | Oh. Hmm. Okay, but I can't write a patch that sophisticated... | 07:04 | |
moritz_ | isn't there an internal interface for finding out which values are already evaluated? | 07:05 | |
07:05
clintongormley left
|
|||
TimToady | that's what I keep saying, a list is just like an array, in the sense that it has a reified part and an imaginary part | 07:06 | |
07:06
clintongormley joined
|
|||
TimToady | I'd think the reified part of a list would (internally) look very much like an array | 07:06 | |
(a reified array) | |||
the difference between a list and an array is in the | 07:07 | ||
API | |||
but the internals are almost identical | |||
moritz_ | TimToady: and you still believe people listen to you, just because you're the language designer? :-) | ||
TimToady | well, sometimes I have to repeat myself till either I change my mind or everyone else does... | 07:08 | |
moritz_ | rakudo: sub foo($a?, $b) { } | ||
p6eval | rakudo b05155: OUTPUT«Can't put required parameter after optional parameters at line 11, near ") { }"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
clintongormley | it's almost like believing that the french listen to the les immortels | ||
TimToady | std: sub foo($a?, $b) { } | ||
p6eval | std 30414: OUTPUT«===SORRY!===Can't put required parameter after optional parameters at /tmp/BZjReZ3qDN line 1:------> sub foo($a?, $b⏏) { }Check failedFAILED 00:01 108m» | ||
TimToady | std: sub foo($a?, $b) { }; 42 43 | 07:09 | |
p6eval | std 30414: OUTPUT«===SORRY!===Can't put required parameter after optional parameters at /tmp/A6w5xbl3K9 line 1:------> sub foo($a?, $b⏏) { }; 42 43Two terms in a row at /tmp/A6w5xbl3K9 line 1:------> sub foo($a?, $b) { }; 42 ⏏43 | ||
..expecti… | |||
spinclad | sorear: 'perl 6 contextuals [are] thread-local' -- as i recall the spec, it's rather that they are easily thread-localized, with a 'my'. | ||
moritz_ | jnthn++ # giving me 15 tickets last night | ||
07:09
gfx joined
|
|||
spinclad | the les immortels -- is that like the hoi theoi? | 07:10 | |
quester_ | rakudo: my $a=(1,2,4...*); $a.get.say; $a.get.say; $a.get.say; | ||
p6eval | rakudo b05155: OUTPUT«124» | ||
clintongormley | en.wikipedia.org/wiki/Les_Immortels - the members of the académie francaise, who decide what is allowable french and what is not | ||
otherwise known as the last bastion against the english | 07:11 | ||
quester_ | The "get" method is the only public method I see in src/cheats/gatheriterator.pir | ||
moritz_ | quester_: you can still use private methods internally | 07:12 | |
TimToady | std: now now | ||
p6eval | std 30414: OUTPUT«===SORRY!===Two terms in a row at /tmp/JbW6uR8mFO line 1:------> now ⏏now expecting any of: bracketed infix infix or meta-infix statement modifier loopParse failedFAILED 00:01 107m» | ||
moritz_ | TimToady: re latest spec changes, now + 300 # isn't that precisely what you wanted to discourage, because it's wrong in the presence of leap seconds? | 07:13 | |
quester_ | So no, unless I'm missing somethngi, there doesn't appear to be any notion of reified (cached?) values in the GatherIterator. | ||
dalek | kudo: 027ff40 | moritz++ | t/spectest.data: [t/spec] enable S03-operators/nesting.t |
||
spinclad | clintongormley: sorry, just snarking on the double article. | ||
quester_ | moritz_: True, but !gather_coroutine and !GATHER don't look very useful in this context... | 07:14 | |
TimToady | moritz_: instants and durations have no $#@#$ clue about leap seconds | ||
clintongormley | oh did i? :) i was about to write the immortals, then changed it :) | ||
TimToady | leap seconds are civil time, not atomic | ||
moritz_ isn't civil :-) | |||
-> decommute & | 07:15 | ||
spinclad | 11:59:00 + 120 over a leap second = 12:00:59, because the 120 is true seconds | ||
/is/are | |||
oop, /11/23/ and /12/00/ | 07:16 | ||
TimToady | yes, you don't want the X-ray machine running an extra second merely because there happened to be a leap second in the middle | 07:17 | |
civil time is like having a number system in which 2 sometimes equals 3 | 07:18 | ||
sorear | quester_: if it's in /cheats/, all is not how it appears | ||
TimToady | if all iterators eventually allow unget, then all iterators will eventually require a reified part, at least optionally | 07:19 | |
sorear | there's a lot of monkeypatching and clandestine cooperation in /cheats/, the dark underworld of Rakudo | ||
spinclad: Contextuals in Perl 6 are defined in terms of walking up the call stack, which is always a thread-local structure | 07:20 | ||
quester_ | sorear: No doubt.... I've noticed that almost everything I've looked at in rakudo, not just /cheats/. | ||
sorear | the stack is the mother of all thread-local structures | ||
TimToady | sorear: whatever spawned your thread is the caller of the thread | 07:21 | |
so all threads eventually converge on the same outer scopes | |||
sorear | yes | ||
TimToady | they all see the same $*PID, for instance, unless the thread itself redefines is | ||
*it | |||
sorear | fun implementation trick of the day: On Linux (i386 kernel mode), stacks are 8kb in size and 8kb aligned. To access thread local data, the top N-13 bits of the stack pointer are masked off, and the TLS block is located at a fixed offset from the stack bottom | 07:22 | |
TimToady | for readonly values, it makes no difference whether values are copied into the thread (as env vars are into Unix processes), or if you just keep walking up the call stack | ||
sorear | user TLS doesn't use quite such a clever implementation, mostly because user stacks can grow | 07:23 | |
TimToady | for rw values, locking or some such will be needed outside of a thread | ||
sorear | values are bound into the thread, then | ||
TimToady | the value of a rw var is its container's identity | ||
that can be copied in, but the contained value is shared by all dynamic scopes, incl threads | 07:24 | ||
if one thread changes is, they all see it | |||
a thread can explicitly copy in the current value, of course | 07:25 | ||
spinclad | 'the lvalue of a rw var'? | ||
TimToady | and make its own thread-local version at the top scope of the thread | ||
07:25
iblechbot joined
07:26
jaldhar_ joined
|
|||
TimToady | currently 'temp $*PID;' at the top of the thread would make the thread have its own copy | 07:26 | |
that's short for something like 'my $*PID = DYNAMIC::<$*PID>;' | 07:27 | ||
07:27
riffraff joined
|
|||
TimToady | unless that finds the new one by accident :) | 07:27 | |
IllvilJa | o/ | 07:29 | |
spinclad | \p | ||
spinclad to bed lest he fall asleep on channel & | 07:31 | ||
TimToady 2 & | |||
quester_ afk | 07:34 | ||
07:34
quester_ is now known as quester--away--
07:35
jaldhar_ left
07:36
jaldhar_ joined,
hercynium left
|
|||
sorear wonders if temp $*PID; is Perl6 for fork() | 07:36 | ||
07:36
Intensity left
07:37
hercynium joined
|
|||
sorear | hmm, S17 looks very drafty | 07:41 | |
moritz_ | draftiness is a nearly monotonic function of the synopsis number | 07:43 | |
07:57
ejs joined
|
|||
sorear | wait, Date is in the /setting/ | 08:01 | |
? | |||
no 'need Date;'? | |||
moritz_ | right | ||
08:02
ejs left
08:03
ejs joined
|
|||
sorear | src/core/Date.pm looks like a good application for an anonymous module | 08:04 | |
moritz_ | how so? | 08:05 | |
the helper subs maybe just need to go inside the class | 08:06 | ||
haven't tried that yet | |||
sorear | import (module { sub private { ... }; sub public is export { ... }; }) | 08:07 | |
actually this could have ramifications on the separate setting compilation project | 08:08 | ||
put all the /core/ bits in named modules, and make the setting 'use Rakudo::Any; use Rakudo::Num; use Rakudo::Date; ...; YOU_ARE_HERE" | |||
moritz_ | I think the bigger problem is currently how to handle traits | 08:09 | |
sorear | is Rakudo::Date supposed to export anything beyond 'Date'? | ||
How so? | |||
moritz_ | because they are defined in the setting | ||
and needed by the setting | |||
so maybe we need to add another compilation stage | 08:10 | ||
mberends | fwiw, to reduce the size of the main executable when Date is not used, I would like Date.pm to be a separate file that the application "use"s, and that is always installed with Rakudo. | ||
it would be a first experiment with system components loadable at runtime, an important technique for scalability | 08:11 | ||
moritz_ | mberends: what would happen then when you don't use Date, and say DateTime.now.Date? | ||
would it blend? :-) | 08:12 | ||
mberends | moritz_: I'll figure that answer out later, I'm sure it's solvable | ||
it may fall out of a to-be-specced pluggable locale design | 08:14 | ||
hopefully Rakudo can load Date.pbc or Date.pir quite efficiently | 08:15 | ||
also there should be a complementary Time.pm for symmetry | 08:16 | ||
sorear | rakudo: $*PID.say | 08:17 | |
p6eval | rakudo 027ff4: OUTPUT«22600» | ||
mberends | moritz_: I would spec it that if you want Date only without time, the program *must* contain "use Date;", and then DateTime.now.Date would cease to exist. | 08:19 | |
moritz_ | that would be very sad | 08:21 | |
if DateTime and Date didn't integrate properly | |||
also if we move Date out of core (and make available as a module), then I'd love to see that for lots of other stuff too | 08:22 | ||
DateTime, KeyBag, KeySet, ... | |||
mberends | moritz_: it's one of those "where to draw the line" questions. I'm for a compact (and faster) core. | ||
08:23
quester--away-- is now known as quester_
|
|||
moritz_ | I'd be fine with that - you have to get consensus from TimToady here | 08:23 | |
mberends | sure :-) | ||
08:24
snarkyboojum left
|
|||
mberends | btw, TimToady++'s X-ray scanner example at 07:17 of why civil time is so dumb is really good irclog.perlgeek.de/perl6/2010-04-20#i_2243817 | 08:25 | |
08:26
riffraff left
|
|||
mberends | unfortunately most computers rely on a CMOS clock that is set to civil time, and Parrot knows no more than that. | 08:27 | |
08:28
masak joined
|
|||
masak | oh hai, #perl6 | 08:33 | |
m6locks | oh hai | ||
mathw | oh hai masak | ||
masak | nice to see jnthn++ cause a lot of closages in RT :) | ||
moritz_ | he transferred 15 tickets to me | 08:35 | |
08:35
dakkar joined
|
|||
mathw | closages? | 08:35 | |
masak | sorry, I meant closifications. | ||
mathw | ah that's okay then | 08:36 | |
masak | jnthn: ah, yes #71478 was the one I thought of in my kitchen a few weeks back. the scary one :) | ||
thanks for closifying that. | |||
sorear | civil time should be called astronomical time | 08:42 | |
civil time is about taking real time, and fudging it so that the revolution of the Earth, Moon, and Earth-around-Sun are all "neat" | |||
it's important to some people that the Sun be directly overhead at 12:00 | 08:43 | ||
huf | which is ultimately silly, as the entire situation is temporary | ||
the earth isnt the center ;) | |||
sorear | but you can't get that with real time, because the earth is randomly speeding up and slowing down like one of those chaos pendulum toys | ||
it basically /is/ one | 08:44 | ||
mberends | hence leap seconds | ||
huf | just count seconds with the usual prefixes | 08:45 | |
sorear | atomic time should be called proper time | 08:46 | |
proper time is a relativity concept - time measured by a perfect clock in a sealed box | |||
your X-ray machine gives off radiation by the proper-second | |||
time, as observed by the machine | 08:47 | ||
under normal circumstances (computer and operator are ~ at relative rest), proper time is likely to be what the user expects too | |||
CPU clocks count in proper time | |||
proper time has the annoying disadvantage that you can't meaningfully compare it | 08:48 | ||
proper time measured on Earth does not tick synchronously with proper time in orbit | |||
when Perl 6 starts being used for programming on spacecraft and satellites, this is going to be a lot more important | 08:49 | ||
moritz_ | and you think those people will use the built-in time mechanisms? | 08:50 | |
sorear | only if we let them | ||
only if we force them to | |||
no, let was correct | 08:51 | ||
mberends | internet connected computers often use NTP which is based on UTC, which is offset from TAI by the leap seconds. en.wikipedia.org/wiki/Network_Time_Protocol | ||
moritz_ | Perl 6 never tries to force anybody to do anything in a particular way :-) | ||
sorear | if we use built-in time mechanisms that are stuck in the first millenium, then yes spacecraft engineers will NIH time | ||
I think it would be awesome if Perl 6 was the first mainstream programming language to embrace the distinctions between proper, civil, and coordinate time | 08:52 | ||
we're already mostly there | |||
moritz_ | I don't think there are sufficiently many use cases for built-in relativistic time diletation calculations :-) | ||
mathw | Just as long as I don't have to say my $f = DateTime::Gregorian::Civil::Factory.new; my $time = $f->time(DateTime::TimeZone::SYSTEM); to get the time. | 08:53 | |
sorear | we don't even need to calculate, we can let the user do that | ||
but we should draw lines in the sand | |||
"this Time is a ProperTime" | |||
earthbound people can treat ProperTime as Interval and things will work | 08:54 | ||
jnthn | morning o/ | ||
moritz_ | \o jnthn | ||
sorear | we can't automatically translate between ProperTime and CoordinateInterval, anyway | ||
the conversion factors depend on your trajectory | |||
moritz_ | jnthn: will you fix the two regressions in syntax.t before the release tomorrow, or should I fudge them out? | ||
masak | jnthn++: mroing! :) | 08:55 | |
jnthn | moritz_: Feel free to fudge, I'd *like* to fix 'em but didn't actually get down to the root cause of them yet. | 08:58 | |
moritz_: Please file a ticket so we don't forget. :-) | |||
masak: oh hai | |||
moritz_ | sure, will do | 09:00 | |
masak | std: now | 09:01 | |
moritz_ | www.perlmonks.org/?node_id=835731 chromatic++ | ||
p6eval | std 30416: OUTPUT«ok 00:01 109m» | ||
jnthn | moritz_++ # thanks | ||
moritz_ | std: then | ||
p6eval | std 30416: OUTPUT«===SORRY!===Undeclared routine: 'then' used at line 1Check failedFAILED 00:01 107m» | ||
jnthn | std: later | ||
p6eval | std 30416: OUTPUT«===SORRY!===Undeclared routine: 'later' used at line 1Check failedFAILED 00:01 107m» | ||
masak | std: laterz | ||
p6eval | std 30416: OUTPUT«===SORRY!===Undeclared routine: 'laterz' used at line 1Check failedFAILED 00:01 107m» | 09:02 | |
masak | chromatic++ indeed | 09:04 | |
jnthn | chromatic++ | 09:05 | |
That *is* a good post. | |||
masak | sorear: sounds like a good idea for a module. | ||
(the relativistic stuff) | |||
"You just need to be a little bit patient, a little bit stubborn, a lot interested, and humble enough to be willing to learn and to experiment." -- that puts it better than I've ever managed. | 09:06 | ||
mathw | the second comment, however, is astonishing | 09:17 | |
and kind of insulting | |||
and also displays great ignorance | 09:18 | ||
it's not like the perl 6 grammar engine is a simple instance of a context-free parser | |||
most of us could write one of those without too much difficulty | |||
excellent node though | |||
chromatic++ | |||
masak | mathw: AFAIU pmichaud's background, he has just that, skills 'acquired in universities(preferably good ones) where professors teach courses like "Formal Languages and Automata" or "Compiler theory"'. | 09:28 | |
he even taught such courses himself. | |||
oh! moritz_++ says as much in a reply. | 09:29 | ||
mathw | quite | 09:32 | |
and I've done those courses at least... | |||
not that I'd really care to take on the perl 6 grammar engine by myself | |||
because pmichaud's a lot cleverer than me :) | |||
and as you point out, has much greater experience as well | |||
mathw -> meeting/argument | |||
moritz_ | rakudo: say <a b c>.Seq.perl | 09:35 | |
p6eval | rakudo 027ff4: OUTPUT«Seq.new()» | ||
moritz_ | seems like a LHF to improve that | ||
masak | it does. | 09:36 | |
interesting to see how many comments are written by 'Anonymous Monk' in the www.perlmonks.org/?node_id=835419 thread. feels like a much higher ratio than usual on perlmonks. | 09:40 | ||
moritz_ | and there are at least two different anon monks | ||
masak | aye. | ||
moritz_ | one full of FUD, and one genuinely interested | ||
probably more than one of the latter category | 09:41 | ||
masak | I count at least two of the latter category. | 09:42 | |
09:44
jaldhar_ left
09:47
snarkyboojum joined
|
|||
sorear | does "my method" currently make sense? | 09:48 | |
jnthn | yes | ||
sorear | what does it do? | ||
masak | install the method in the lexical scope. | 09:49 | |
sorear has just had a revelation on how to solve most of our hll interop problems using a new notion of lexical methods, henceforth termed methodicals | |||
masak: what does a method that's not installed in a class mean? | 09:50 | ||
masak | that's a good question. | 09:51 | |
quester_ | masak and moritz_: I'm working on a patch for Seq.perl (and also GatherIterator.perl, although that one is too deep to take more that a superficial swipe at.) | ||
sorear | and where should I talk about methodicals? p6l? | ||
masak | aye. or here. | ||
rakudo: class A { my method foo() { say "OH HAI" }; A::foo(A) } | |||
p6eval | rakudo 027ff4: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'perl6;Failure;' pc 15153 (src/builtins/Array.pir:77)» | 09:52 | |
masak | rakudo: class A { my method foo() { say "OH HAI" }; A::foo() } | ||
p6eval | rakudo 027ff4: OUTPUT«Can not find sub A::foocurrent instr.: 'perl6;Perl6Exception;throw' pc 14719 (src/builtins/Seq.pir:41)» | ||
jnthn | The second is what I expected | ||
The first is...er...oops :-) | |||
Anyway | 09:53 | ||
write "our" for that. | |||
masak | jnthn: first one if a bug, that's what you mean? | ||
masak grins | |||
s/if/is/ | |||
rakudo: class A { method foo() { say "OH HAI" }; A.foo } | 09:54 | ||
p6eval | rakudo 027ff4: OUTPUT«OH HAI» | ||
sorear | masak: I need more space to explain what they are and why they're awesome. At least a few paragraphs. | 09:55 | |
09:55
gfx left
|
|||
sorear | so I'll pitch them on p6l tomorrow. | 09:56 | |
I've had lots of nice insights about interop and blizkost tech today... expect interesting things tomorrow | |||
jnthn | masak: Yes, it's a bug and I know why too. | ||
masak submits rakudobug | |||
jnthn | (the thingy that throws the "OMFG that doesn't exist!!1!!" thing gets upset about arguments :-)) | 09:57 | |
sorear | jnthn: can you give me a /working/ example of what my method needs now? | ||
10:00
Patterner left
|
|||
jnthn | rakudo: class A { method foo() { say 42 }; foo() } # won't find it | 10:00 | |
p6eval | rakudo 027ff4: OUTPUT«Could not find sub &foocurrent instr.: 'perl6;A;_block45' pc 302 (EVAL_1:136)» | ||
jnthn | rakudo: class A { my method foo() { say 42 }; foo() } # will | ||
p6eval | rakudo 027ff4: OUTPUT«Not enough positional parameters passed; got 0 but expected 1current instr.: 'perl6;A;foo' pc 387 (EVAL_1:172)» | ||
moritz_ | just needs an invocant, no? | ||
jnthn | rakudo: class A { my method foo() { say 42 }; foo(A) } # but of course needs something passed as invocant | ||
p6eval | rakudo 027ff4: OUTPUT«42» | ||
jnthn | Note you're doing sub dispatch there | 10:01 | |
Not method dispatch. | |||
sorear | my method installs into the namespace /as well as/ the class, then? | ||
jnthn | But the method itself is just a routine. It doesn't really care how you call it. | ||
NO *not* the namespace! | |||
sorear | but installs it as a sub? | ||
jnthn | That's what our does. | ||
sorear | lexical namespace | ||
jnthn | my puts it in the *lexpad8 | ||
sorear | not package namespace | ||
a namespace is something that maps names to values | 10:02 | ||
jnthn | I'm not sure I've really heard it called a "lexical namespcae" before. | ||
lexpad is the more common terminology. :-) | |||
moritz_ | a lexpad also maps names to values | ||
jnthn | namespace has too much connotation of package. | ||
moritz_ | but only from the inside | ||
masak | my:lexpad :: our:package :: has:vtable -- correct? | ||
sorear | I've never heard the term 'lexpad' used outside Parrot. Also, I'm tired. | ||
masak | sorear: 'lexpad' just means 'the thing that binds names in your lexical scope to things'. even if the term isn't the same in other languages, it's a very common thing. | 10:03 | |
'environment' is another common term for the same thing. | |||
jnthn | masak: Correct | ||
masak | \o/ | ||
jnthn | BTW, if anyone is in the Malmö area and a member of Dataföreningen, I'll be giving a talk for the user group a week today on Perl (with some focus on Perl 6 too). | 10:05 | |
10:06
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
jnthn hopes that flights will be back in order in time for the Nordic Perl Workshop too. | 10:07 | ||
10:11
yinyin joined,
yinyin_ joined,
yinyin_ left,
yinyin left
|
|||
colomon | morning! | 10:14 | |
moritz_ | c\olo/mon! | ||
colomon | :) | 10:15 | |
jnthn | o/ colomon | ||
colomon | I did send the mandelbrot script to chromatic++ last night. | 10:16 | |
jnthn | k | ||
colomon | I suspect that if he can unravel what is going on, it will be a big win all around. | 10:18 | |
10:19
baisong left
10:22
pmurias joined,
JimmyZ joined
|
|||
jnthn | Indeed. | 10:23 | |
10:28
riffraff joined
10:31
JimmyZ left
10:33
riffraff left
10:34
Intensity joined
10:49
agentzh left
10:54
araujo joined
10:56
jaldhar_ joined
11:09
REPLeffect joined,
PacoLinux left
11:12
muixirt joined
11:15
iblechbot left
11:18
molaf joined
11:19
meppl left
11:25
molaf left,
XaeroOne joined
11:30
[particle]1 joined
11:31
jaldhar_ left
11:33
[particle] left
|
|||
moritz_ | paste-it.net/public/bc8442c/ # build failure of latest rakudo | 11:33 | |
reported by alexn_org++ on #parrot | |||
somehow this seems vaguely familiar to me, but I'm not sure | 11:34 | ||
mberends | I'll try a build with my recent $*PID code commented out | 11:35 | |
jnthn | oh noes | 11:41 | |
mberends: I suggest wrapping the $*PID setup code in an exception handler. | 11:42 | ||
Just in case it accidentally the fejl. | |||
moritz_ | mberends: I've asked the reporter to do the same | ||
11:43
XaeroOne left
|
|||
mberends | ok, after I learn how to wrap code in an exception handler (istr something about begin_eh) | 11:44 | |
jnthn | masak: Your ticket is wrong. | ||
74520 | |||
moritz_ | a bug in a rakudobug! | ||
masak looks | |||
jnthn | The bug is not that it didn't find the sub | ||
It shoudln't | 11:45 | ||
The bug is it gave an internals error rather than a good one. | |||
11:45
renormalist joined
|
|||
jnthn | I guess more succinct is: | 11:45 | |
rakudo: A::foo # right error | |||
p6eval | rakudo 027ff4: OUTPUT«Can not find sub A::foocurrent instr.: 'perl6;Perl6Exception;throw' pc 14719 (src/builtins/Seq.pir:41)» | ||
jnthn | rakudo: A::foo(42) # I think this is what is broken | ||
p6eval | rakudo 027ff4: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'perl6;Failure;' pc 15153 (src/builtins/Array.pir:77)» | ||
masak | ok, I'll add that to the ticket. | ||
jnthn | Yeah, that's the thing I was saying to submit | 11:46 | |
masak | so next question: how *does* one call a 'my' method? | ||
jnthn | We're right to fail, just wrong the fail in that way | ||
foo() | |||
masak | o.O | ||
jnthn | ? | ||
masak | not foo(self) or something? | ||
jnthn | well, yes with args | ||
masak | oh phew. | ||
jnthn | My point was not the package qualifier out front. | ||
masak | right. | ||
quester_ submitted RT #74526: [PATCH] Fix Seq.perl to not say Seq.new(). Interim fix for Iterator.perl to fix infinite loops | 11:47 | ||
jnthn | That is, class A { my method foo() { }; foo(A) } # should work | ||
masak | because it's not associated with the package, it's associated with the lexpad. | ||
jnthn | That is, class A { my method foo() { }; A::foo(A) } # rightly should not work | ||
Correct | |||
masak | rakudo: class A { my method foo() { say "OH HAI" }; foo(A) } | ||
p6eval | rakudo 027ff4: OUTPUT«OH HAI» | ||
masak | \o/ | ||
rakudo: class A { my method foo() { say "OH HAI" }; foo(42) } | |||
p6eval | rakudo 027ff4: OUTPUT«OH HAI» | ||
masak | no invocant checking :P | 11:48 | |
jnthn | Yeah, I knows. | ||
That's already ticketed though. :-) | |||
masak | I knows. :) | ||
jnthn | omgzlaundry! | ||
brb | |||
11:53
christine joined,
jaldhar_ joined
11:54
leon joined,
leon is now known as Guest95301
11:55
Guest95301 is now known as leont
11:57
sorear left,
s1n left
|
|||
leont | Anyone care to give me some feedback on this before I go post it on reddit & co? : blogs.perl.org/users/leon_timmerman...erent.html | 11:57 | |
masak looks | 11:58 | ||
mberends | leont++: it's great exactly as is stands | 11:59 | |
*it stands | |||
quester_ | leont: great, but... macro's with an apostrophe? That's unusual. | ||
mberends | leon is Dutch, that's why ;) | 12:00 | |
leont | Yup, that's why | ||
But I just fixed that | |||
masak | 'but Perl 6 that to a new level' missing 'takes' or equiv. | 12:01 | |
'it is build' -> 'it is built' | |||
12:03
sorear joined,
s1n joined,
ascent_ joined
|
|||
mberends | 'overstate the profound' -> 'overstate how profound' | 12:04 | |
pmichaud | good morning, #perl6 | ||
masak | 'Perl 6ys' -> "Perl 6's" | ||
pmichaud: \o | |||
mberends | good morning pmichaud | ||
leont | Good morning | ||
frettled | pmichaud: \o/ | ||
masak | hm, actually, s/Perl 6ys 's/Perl 6's/ | ||
frettled | pmichaud: How are you doing? /me worries. | ||
masak | leont: very nice article. I fully agree with the sentiment. | 12:05 | |
jnthn | morning, pmichaud | ||
quester_ | leont++ | ||
jnthn reads leont's article | |||
12:05
bluescreen joined
|
|||
leont blushes | 12:05 | ||
12:06
bluescreen is now known as Guest51887
|
|||
pmichaud | leont++ # good article! | 12:06 | |
masak | granted, modifying the language/grammar is probably not something that you do every day, even in a language where that is made easy like Perl 6. (though I'm willing to state in five years or so that I was wrong on that point.) | 12:07 | |
jnthn | leont++ | ||
masak | thing is, even if it isn't, it might still mean a lot for everyday module consumers. | ||
pmichaud | p6eval: rakudo: my $a = 'hello'; say "$a.chars"; | 12:09 | |
p6eval | pmichaud: rakudo 027ff4: OUTPUT«hello.chars» | ||
pmichaud | oops | ||
oooh, nice | |||
p6eval: rakudo: my $a = 'hello'; say "$a.chars()"; | |||
p6eval | pmichaud: rakudo 027ff4: OUTPUT«5» | ||
mberends | rakudo: my $a = 'hello'; say "{$a.chars}"; | 12:11 | |
p6eval | rakudo 027ff4: OUTPUT«5» | ||
leont | Thanks all for your feedback :-) | ||
12:11
alexn_org joined,
gurjeet joined
|
|||
pmichaud | rakudo: my $a = 'hello'; say "$a.chars.chars()" | 12:12 | |
p6eval | rakudo 027ff4: OUTPUT«1» | ||
alexn_org | hi people ... is anyone else having this bug? ... rt.perl.org/rt3/Ticket/Display.html?id=74524 | ||
frettled | leont: inspiring, thanks for writing that! | 12:13 | |
12:14
alexn_org left
|
|||
pmichaud | rakudo: my $a = 'hello'; say "$a.chars.chars" | 12:18 | |
p6eval | rakudo 027ff4: OUTPUT«hello.chars.chars» | 12:19 | |
pmichaud | rakudo: my $a = 'hello'; say "$a.chars.chars.()" | ||
p6eval | rakudo 027ff4: OUTPUT«invoke() not implemented in class 'Integer'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
jnthn | rakudo: my $a = 'hello'; say $a.chars.chars.() | ||
p6eval | rakudo 027ff4: OUTPUT«invoke() not implemented in class 'Integer'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
jnthn | Ah, not specific to interpolation at lesat. | 12:20 | |
pmichaud | rakudo: my $a = 'hello'; say "$a.chars().chars()" | ||
p6eval | rakudo 027ff4: OUTPUT«1» | ||
jnthn | mberends: Did you figure out the exception thingy? | ||
pmichaud | rakudo: my $a = 'hello'; say "$a.chars().chars" | ||
p6eval | rakudo 027ff4: OUTPUT«5.chars» | ||
pmichaud | how/where does it know to look for the trailing ()? | ||
jnthn | pmichaud: See, iirc, termish | ||
And $*QSIGIL | |||
mberends | jnthn: no, but it *is* possible to reproduce the error by putting in a wrong function name | ||
jnthn | mberends: Actually | 12:21 | |
You have a line like $P0 = dlfunc ... | |||
12:21
snarkyboojum left
|
|||
jnthn | mberends: After it just do a | 12:21 | |
unless $P0 goto skip_pid | |||
mberends: I mean, if we can't find it, what can we do...but we shouldn't crash. :-) | |||
But that's cheaper/easier than an exception handler to catch it if it does go wrong. | |||
mberends | jnthn: thanks. It means OS X will not get a $*PID though :-( | 12:22 | |
jnthn | pmichaud: Yes, certainly it's termish. | ||
pmichaud | jnthn: yes, I see it now. Icky, but I guess it works. | ||
jnthn | pmichaud: Our factoring is pretty much the same as STDs, modulo a hack because we don't have <afer> yet | ||
*after | |||
pmichaud: But otherwise it follows STD. | |||
pmichaud | STD doesn't seem to use after | 12:23 | |
jnthn | mberends: Well, they have other shiny things. | ||
leont posted it to reddit programming, hopes it doesn't get snowed in | |||
pmichaud | afk, school trip | ||
jnthn | pmichaud: here: | 12:24 | |
|| <?{ $*QSIGIL eq '$' }> [ [<!before '\\'> <POST>]+! <?after <[ \] } > ) ]> > ]? | |||
|| [<!before '\\'> <POST>]+! <?after <[ \] } > ) ]> > | |||
pmichaud | oh, there it is. | ||
jnthn | ooh, I think the <!before '\\'> in STD is new since I copied from it though. | ||
pmichaud | what about » ? | 12:25 | |
afk | |||
jnthn | Yeah, adding » to the list could also be sane. | ||
I almost wonder if we should just generalize it to <!after \w> | 12:26 | ||
12:27
envi^home left
12:29
SmokeMachine joined
12:30
envi^home joined
12:31
gurjeet left
|
|||
quester_ | Good night, #perl6. sleep & | 12:33 | |
mberends | jnthn++: your suggestion worked. Testing a bit more before committing... | 12:34 | |
12:35
quester_ left
|
|||
jnthn | \o/ | 12:36 | |
mberends | does any OS X user know the Darwin equivalent of the Linux 'getpid' in 'libc' (or of the MSWin32 'GetCurrentProcessId' in 'kernel32') ? | ||
masak has no idea | 12:38 | ||
what does Google say? | |||
leont | It really should have getpid | ||
pmichaud | I would expect getpid, if it's posix-like. | 12:39 | |
masak | over lunch, since I'm so into scoping of different kinds right now, we got to talking about class-bound variables again. my colleague jonalv, whose home language is Java, thought that it was a shocking omission not to have class-based variables. | ||
I explained how 'my' and 'our' didn't do what was intended, since lexpads and packages are orthogonal to OO inheritance. | 12:40 | ||
mberends | google says other people are asking the same question :/ | ||
leont | developer.apple.com/mac/library/doc...pid.2.html | ||
masak | when I talked about 'state' variables, he was a bit mollified and admitted that the need wasn't as great for class-bound variables. | 12:41 | |
and when I explained about the non-need for class-level methods due to type objects, I had almost convinced myself that we don't need class/static variables :) | 12:42 | ||
12:43
snarkyboojum joined
|
|||
masak | but one use case that I can see is something akin to a constant defined in a class, which ought to be reachable from all its methods and the methods in derived classes. | 12:43 | |
same with enums. sometimes that might be useful. | |||
snarkyboojum: hi! | |||
snarkyboojum | hello masak-san | 12:44 | |
o/ :) | |||
masak | I've started in on blocks in Yapsi. | ||
snarkyboojum | you're a machine :) | 12:45 | |
masak | no, just single and obsessive :P | ||
12:45
REPLeffect left
|
|||
arnsholt | masak: There's a difference? O=) | 12:46 | |
masak | github.com/masak/yapsi/commits/blocks | ||
mberends | thanks leont. Nevertheless, cheats/setup-io.pm uses it fine on Linux but not on OS X :-( I have just pushed a default to 0 if the function cannot be found. | ||
snarkyboojum | masak: heh | ||
masak | snarkyboojum: 'started in on' here means that it parses and runs the blocks. | ||
snarkyboojum | masak: perusing the blocks branch atm | ||
masak | snarkyboojum: but it currently runs *all* blocks, even the non-immediate ones. | 12:47 | |
snarkyboojum | masak: heh - interesting | ||
masak | I'll have to put in some restrictions there, because I don't want to handle the complexity of non-int values just yet. | ||
dalek | kudo: d0e93e5 | (Martin Berends)++ | src/cheats/setup-io.pm: [cheats/setup-io.pm] set $*PID to 0 if the getpid() function cannot be |
12:48 | |
masak | but currently, this works: 'my $a = 42; { say $a }' | ||
12:48
iblechbot joined
|
|||
snarkyboojum | I'm going to have to build alpha on my new laptop I see :) | 12:48 | |
masak | and this runs but prints when it shouldn't: 'my $a = 42; my $b = { say $a }' | ||
and this runs and prints a warning though it shouldn't: 'my $a; { my $a }' | 12:49 | ||
and this runs and prints the wrong thing: 'my $a = 42; { my $a; say $a }' | |||
basically, it's aware of blocks syntactically, but not semantically yet. | |||
snarkyboojum | sounds pretty cool to me :) | 12:50 | |
masak | the next step is kinda the big one. | 12:52 | |
breaking the SIC up into sub-like units, like PIR. | |||
but the road ahead seems clear, at least. | |||
snarkyboojum | what's next? | ||
masak | after that? probably if statements and while loops. | 12:54 | |
CokeBot9000 | moritz_: hio. | 12:55 | |
pmichaud | mberends what does dlfunc return if the requested library function isn't found? | 12:56 | |
this line looks suspicious: | |||
+ unless $P0 goto setup_io_no_getpid_func | |||
mberends | pmichaud: null or 0, I think. | 12:57 | |
I tested it with a bogus function name and it followed the goto path | |||
pmichaud | if so, then the test needs to be "if null" | ||
masak | snarkyboojum: but it'd be really nice to have yapsi and tardis talking to each other by the 2010-05-01 release, too. :) | ||
pmichaud | hmmmm | ||
traditionally, boolean tests on null cause a "Null PMC" error. | 12:58 | ||
mberends | I'll check the parrot opcode docs | ||
pmichaud | :docs don't seem to say :-( | ||
12:58
REPLeffect joined
|
|||
jnthn | It gives Undef | 12:58 | |
snarkyboojum | masak: :) | ||
pmichaud | okay, Undef works. | 12:59 | |
masak | snarkyboojum: I'll see if I can do the Yapsi part of that, i.e. write the calls to the hooks in the runtime. | ||
12:59
ReiniUrban joined
|
|||
mberends | pmichaud: would that be better written: if undef $P0 goto ... ? | 13:00 | |
pmichaud | nope, "undef" isn't a valid PIR keyword | ||
if dlfunc returns undef (which it does), then what you have written is probably okay for now. | |||
13:00
rurban left
13:01
ReiniUrban is now known as rurban
|
|||
pmichaud | at least, as long as NCI PMCs return "true" for boolean-ness :-) | 13:01 | |
mberends crosses fingers | |||
pmichaud | feels like $*PID should return a Failure object if we weren't able to find the PID, though. | 13:02 | |
instead of 0. | 13:03 | ||
PerlJam | good morning | ||
mathw | That seems fairly sensible | ||
CokeBot9000 | even though it's just NYI? | 13:04 | |
pmichaud | CokeBot9000: yes. Better to return an error value than to return something that could be considered valid. | ||
*explicit error value | |||
CokeBot9000 | hurm. can you mark a Failure with a NYI attribute? | 13:05 | |
pmichaud | sure, the Failure can carry a NYI message | ||
so that "say $*PID" results in a warning of "$*PID not yet implemented on this system" | 13:06 | ||
CokeBot9000 | gnifty. | ||
mberends | good idea. I'm doing something else, but I can add that shortly. | ||
pmichaud | CokeBot9000: Failures are one of the neat pieces of Perl 6 -- we're no longer limited to failure sentinel values; we can actually return Failure objects that contain the explanation of the failure | 13:07 | |
arnsholt | mberends: IIRC the correct PIR incantation to check for Null PMC is isnull | ||
pmichaud | arnsholt: it is, but dlfunc doesn't return null PMCs, it appears. | ||
arnsholt | Oh, right. How convenient | 13:08 | |
jnthn | Yeah, I was a tad surprised they gave Undef rather than Null | 13:10 | |
(Since Parrot often uses Null to indicate failure/non-existence) | |||
arnsholt | Maybe something that can be changed? | ||
pmichaud | probably pre-dates the exposure of pmcnull to PIR | ||
13:11
REPLeffect left,
leont left
|
|||
pmichaud | early versions of parrot tended to try to hide PMCNULL from PIR programmers as much as possible | 13:11 | |
13:11
rgrau joined
|
|||
jnthn | True | 13:11 | |
arnsholt: Heh, if they change it we gotta go patch up a load of code. :-/ | |||
pmichaud | arnsholt: could be changed yes, but needs a deprecation cycle :) | ||
arnsholt | Yeah, there is that | 13:12 | |
pmichaud | jnthn: do we use dlfunc all that much? | ||
CokeBot9000 | best bet is probably to add a new opcode that DTRT /now/ and deprecate the old one. | ||
pmichaud | I wouldn't think it'd be a lot of code to fix. | ||
jnthn | pmichaud: No | ||
pmichaud: Zavolaj uses it though, of course. :-) | |||
pmichaud | CokeBot9000: Yeah. OTOH, since NCI handling itself seems to be deprecated, we can just wait for that. | ||
CokeBot9000 | I'm just glad that we're down to Null & Undef. (Used to also have None) | ||
pmichaud: there you go. | 13:13 | ||
jnthn | NCI itself had best not be deprecated! | ||
CokeBot9000 | there will be nci. | ||
jnthn | phew. :-) | 13:14 | |
pmichaud | okay, not NCI itself, but NCI signatures. | ||
jnthn | Current state sucks though. | ||
pmichaud | TT #1565 | ||
jnthn | The previous frame builder but ripped out. | ||
arnsholt | I'd guess that means the current implementation is being deprecated | ||
jnthn | *got | ||
pmichaud | I meant ... what arnshold++ said | ||
arnsholt | Hopefully in favour of something shinier | ||
pmichaud | *arnsholt++ | ||
(argh, can't type today.) | 13:15 | ||
mberends | (Whatever)arnsholt++ ? | ||
13:15
jjames joined
|
|||
jnthn can't believe it's *that* hard to write one that works on the major platforms. | 13:15 | ||
Tricky and annoying to write, though. | 13:16 | ||
CokeBot9000 | jnthn: kind of like writing perl6? ;) | ||
jnthn | Yes, but more tricky than annoying in Perl 6. ;) | ||
Whereas a frame builder is annoying in that various platforms want things *slightly* different. :-) | 13:17 | ||
13:20
[particle]1 is now known as [particle]
13:21
Lorn joined,
astinus joined
|
|||
CokeBot9000 | is there a need for all the various .pm files to be combined into core.pm or could that be done after they were individually compiled to pir? | 13:23 | |
(I'm just wondering if that would be a temporary speed up for compilation.) | |||
pmichaud | CokeBot9000: they're not entirely independent | 13:24 | |
13:24
REPLeffect joined
|
|||
pmichaud | some files want to know the definitions coming from previous files | 13:24 | |
moritz_ | CokeBot9000: mberends and I have been working on branches to split the compilations | ||
mberends | CokeBot9000: moritz_++ and I have tried to do separa... | ||
moritz_ | CokeBot9000: it seems doable, but not trivial | ||
CokeBot9000 | hokay. | ||
PerlJam | alternatively ... parrot could just be made faster ;) | 13:25 | |
mberends | moritz_: the state of those branches is quite out of date, it might be easier to just delete them and start afresh | ||
jnthn | The other problem is that they all need to form a coherent outer lexical scope | 13:26 | |
We could go down the "export and then import them into one lexpad" thing I guess. | 13:27 | ||
moritz_ | and then there's the problem with traits being defined in the setting, and later on needed in the setting... | ||
jnthn | That too. | ||
CokeBot9000 | So, "not trivial". that's all I needed. =-) | 13:29 | |
13:30
REPLeffect left,
kaare_ left
13:37
ejs left
|
|||
masak | Alias: ping | 13:39 | |
std: [+] | |||
p6eval | std 30416: OUTPUT«===SORRY!===Prefix requires an argument at /tmp/cGbaRKgDuD line 1 (EOF):------> [+]⏏<EOL>Parse failedFAILED 00:01 110m» | ||
13:39
araujo left
|
|||
masak | TimToady: [+] no longer parses as a listop? | 13:39 | |
moritz_ | mberends++ # fixing $*PID on Mac | 13:40 | |
13:40
araujo joined
13:41
learnperl6 joined,
dalek left
13:42
the_raven joined
|
|||
pugssvn | r30417 | moritz++ | [t/spec] some unfudges for rakudo | 13:42 | |
the_raven | righto | ||
pugssvn | r30418 | moritz++ | [t/spec] fudge failing tests for rakudo in syntax.t - the ticket on RT is re-opened for them | ||
13:43
dalek joined,
the_raven left,
REPLeffect joined
|
|||
colomon | "Why Perl 6 is different" is at the top of Hacker News at the moment... :) | 13:44 | |
jnthn | masak: Matches my expectations from sTD, where it's parsed as a prefix. | 13:45 | |
masak | ISTR it was once parsed as a listop. | ||
jnthn | see token PRE | ||
masak | what about `[+] 1, 2, 3` ? | ||
jnthn | Me too, but not before Rakudo copied it from current STD | ||
? | 13:46 | ||
Still a prefix | |||
13:46
PacoLinux joined
|
|||
masak | ah, I guess it comes down to precedence. | 13:46 | |
moritz_ also thought that [+] parses as listop | |||
masak | and why shouldn't it? it feels perfectly natural. | ||
masak raises the 'formal protest' flag | 13:47 | ||
:) | |||
jnthn | It's an operator, it should parse in one of the operator categories. | ||
moritz_ | listop = list operator (isn't that an operator category?) | ||
jnthn | And yes, it has %list_prefix precedence so it sucks up da whole list. | ||
moritz_: There's no syntactic category listop afaik. | 13:48 | ||
masak | the practical difference between listop and list prefix is that 'say [+];' gets disallowed. | ||
I wonder why that choice was made. | 13:49 | ||
jnthn | I consider that a benefit. | ||
masak | I don't. | ||
I liked it :) | |||
jnthn | It looks too close to say &[+] | ||
Which means something quite different. | |||
masak | meh. | ||
jnthn | Anyway | ||
You can do say [+] () | |||
masak | yes, but why would I need parens there and nowhere else? :( | ||
13:50
ruoso joined
|
|||
masak | *that's* the exception, and that's what I don't like. | 13:50 | |
13:51
Cristina_ joined
|
|||
jnthn | Why would you want to write such a thing anyway? | 13:51 | |
masak | as the limit case of a series of example expressions? | 13:53 | |
[+] 1, 2 | |||
[+] 1 | |||
[+] | |||
13:53
uniejo left
|
|||
dalek | kudo: 5a0581f | moritz++ | t/spectest.data: one more passing test file |
13:53 | |
colomon | should >>.= work? | ||
masak | sure, why not? | 13:54 | |
jnthn | I think it maybe even does work | ||
rakudo: my @a = 1,-2,3,-4; @a>>.=abs; say @a.perl | |||
colomon | rakudo: my @a = -5..5; @a >>.= abs; say @a.perl | ||
p6eval | rakudo d0e93e: OUTPUT«[1, 2, 3, 4]» | ||
rakudo d0e93e: OUTPUT«Missing << or >> at line 11, near " abs; say "current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | |||
jnthn | No, you can't put the space there. | ||
colomon | great minds think alike, but mine is a little buggy. | 13:55 | |
jnthn | std: my @a = 1,-2,3,-4; @a>>.=abs; say @a.perl | ||
p6eval | std 30416: OUTPUT«ok 00:01 109m» | ||
masak | one can never have space before ops in the postfix or postcircumfix categories. | ||
jnthn | std: my @a = -5..5; @a >>.= abs; say @a.perl | ||
p6eval | std 30416: OUTPUT«===SORRY!===Missing << or >> at /tmp/mxIDkTACbt line 1:------> my @a = -5..5; @a >>.=⏏ abs; say @a.perl expecting infix_circumfix_meta_operator__S_267LtLt_GtGtParse failedFAILED 00:01 109m» | ||
jnthn | The error is...not the most helpful in a sense... | ||
...but we at least match STD. | |||
colomon | I just used >>.= for work. :) | 13:57 | |
afk | |||
13:59
masak left
14:00
jjames left,
learnperl6 left
14:01
sorear left
14:02
sorear joined,
alester joined
14:05
meppl joined
|
|||
dalek | kudo: e135f23 | moritz++ | docs/ChangeLog: [docs] update ChangeLog |
14:06 | |
moritz_ | jnthn: I'm thinking about names for the upcoming release... what was the conference in Russia you were attending? was Moscow.pm involved? | 14:08 | |
CokeBot9000 | .u degree | ||
phenny: .u degree | |||
moritz_ | ENOPHENNY | 14:09 | |
jnthn | moritz_: It was a commercial one, RIT | ||
Though I did have beer with Moscow.pm | |||
;-) | |||
Actually I think I've had beer with Moscow.pm folks a few times by now | 14:10 | ||
But never actually spoken at a YAPC::Russia or Moscow.pm meeting. | |||
moritz_ | hm, maybe then it's LTA as a release name | 14:11 | |
jnthn | Beer is awesome! | ||
But yes. | |||
:-) | |||
moritz_ | jnthn: any other ideas? .pm groups you have visited lately? | ||
jnthn | We already used all the ones I've been to recently. | 14:12 | |
14:12
masak joined
|
|||
jnthn ponders | 14:12 | ||
lolitstakak | 14:13 | ||
masak | Firefox is stable yet again. | 14:16 | |
jnthn | masak: How many tabs this time? :-) | 14:22 | |
masak | jnthn: I think I lost some in the reboot, so I'm down to 1.5k | ||
14:22
sorear left
|
|||
masak | Firefox starts to become really unreliable around 2k. | 14:22 | |
14:23
sorear joined
|
|||
dalek | kudo: ad01dca | moritz++ | docs/announce/2010.04: first draft for 2010.04 release announcement |
14:23 | |
moritz_ still thinks that masak's workflow might benefit from having a queue of URLs, rather than having the full page open for each to-be-read article | 14:24 | ||
but of course I wouldn't try to impose any "work"flow on masak++ :-) | |||
masak | moritz_: that's basically what it boils down to, though. | 14:26 | |
moritz_ | I know | ||
masak | since I start up Firefox and pull the ethernet cable, so only the URLs actually load. | ||
14:27
sahadev joined
|
|||
moritz_ | it just feels like having a whole memory page for each byte, or so | 14:27 | |
masak .oO( sounds like Parrot ) | 14:28 | ||
masak hides | |||
jnthn | masak: I...thought that and wasn't going to say it! :-P | 14:29 | |
14:29
ejs joined
|
|||
masak | great teases think alike. | 14:30 | |
jnthn | The rain is teasing me at the moment. | 14:32 | |
Keeps looking like it'll stop, then doesn't. | |||
colomon | rakudo: sub postfix:<!>($n) { $n > 0 ?? $n * ($n - 1)! !! 1 }; say 7! | ||
p6eval | rakudo 5a0581: OUTPUT«5040» | ||
colomon | rakudo: sub postfix:<!>($n) { $n * ($n - 1)! }; sub postfix:<!>(0) { 1; }; say 7! | 14:33 | |
p6eval | rakudo 5a0581: OUTPUT«maximum recursion depth exceededcurrent instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:98)» | ||
jnthn | rakudo: multi postfix:<!>($n) { $n * ($n - 1)! }; multi postfix:<!>(0) { 1 }; say 7! # I like this formulation a little more ;-) | ||
p6eval | rakudo 5a0581: OUTPUT«5040» | ||
masak | rakudo: say 7!; sub postfix:<!>($n) { $n > 0 ?? $n * ($n - 1)! !! 1 } | ||
p6eval | rakudo 5a0581: OUTPUT«Confused at line 11, near "say 7!; su"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
jnthn | Win. | ||
colomon | rakudo: multi postfix:<!>($n) { $n * ($n - 1)! }; multi postfix:<!>(0) { 1; }; say 7! | 14:34 | |
p6eval | rakudo 5a0581: OUTPUT«5040» | ||
jnthn | colomon: multi. But Rakudo shoulda complained. | ||
masak | so... the grammar changes after the parsing of the sub? | ||
jnthn | masak: Exactly. | ||
How godis that? | |||
colomon | \o/ | 14:35 | |
moritz_ | there's a ticket for that :-) | ||
(though not for operators specifically) | 14:36 | ||
14:36
molaf joined,
PacoLinux left
|
|||
jnthn | moritz_: Aye, I spotted the ticket yesterday when I was going through the whole RT | 14:37 | |
colomon | the grammar doesn't change after parsing a normal sub, does it? | ||
jnthn | colomon: no | 14:38 | |
colomon | rakudo: multi postfix:<!>($n) { $n * ($n - 1)! }; multi postfix:<!>(0) { 1; }; ((1..10)>>!).perl.say | 14:39 | |
p6eval | rakudo 5a0581: OUTPUT«Could not find sub &postfix:<!>current instr.: '' pc -1 ((unknown file):-1)» | ||
colomon | rakudo: our multi postfix:<!>($n) { $n * ($n - 1)! }; our multi postfix:<!>(0) { 1; }; ((1..10)>>!).perl.say | 14:40 | |
p6eval | rakudo 5a0581: OUTPUT«maximum recursion depth exceededcurrent instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)» | ||
colomon | :\ | ||
jnthn | :-/ | ||
dalek | kudo: cf4eb89 | Coke++ | docs/announce/2010.04: untypo |
||
jnthn | I know we have the our bug | 14:41 | |
er, bug that means we need our | |||
But I expected that to work. | |||
our multi postfix:<!>($n) { $n * ($n - 1)! }; our multi postfix:<!>(0) { 1; }; ((1..10).Seq>>!).perl.say | |||
rakudo: our multi postfix:<!>($n) { $n * ($n - 1)! }; our multi postfix:<!>(0) { 1; }; ((1..10).Seq>>!).perl.say | |||
p6eval | rakudo 5a0581: OUTPUT«[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]» | ||
jnthn | Ah | ||
colomon | rakudo: our sub postfix:<!>($n) { [*] 1..$n; }; ((1..10)>>!).perl.say | ||
p6eval | rakudo 5a0581: OUTPUT«maximum recursion depth exceededcurrent instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)» | ||
jnthn | Needs .Seq for some inexpelicable reason. | 14:42 | |
Submit rakudobug. | |||
colomon | rakudo: our sub postfix:<!>($n) { [*] 1..$n; }; ((1...10)>>!).perl.say | ||
p6eval | rakudo 5a0581: OUTPUT«[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]» | ||
colomon | jnthn: I think you need to say masakbot: submit rakudobug. ;) | 14:43 | |
I've got it. | |||
14:43
pyrimidine joined
|
|||
jnthn | :-) | 14:44 | |
colomon | unless you meant to say "submits rakudobug", ala masakbot. | ||
jnthn | Anyway, yes, once that works properly...quite. | ||
no, no | |||
I was trying to invoke masakbot | |||
colomon | rakudo: our sub postfix:<!>($n) { [*] 1..$n; }; (-<<(1..10)).perl.say | 14:45 | |
p6eval | rakudo 5a0581: OUTPUT«maximum recursion depth exceededcurrent instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)» | ||
jnthn | It's just rnages and >> I think | ||
rakudo: say (1..10)>>.say | |||
p6eval | rakudo 5a0581: OUTPUT«123456789101111111111» | ||
jnthn | oh. | ||
colomon | just trying to find a simpler example. | ||
rakudo: (-<<(1..10)).perl.say | |||
p6eval | rakudo 5a0581: OUTPUT«maximum recursion depth exceededcurrent instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)» | ||
jnthn | ah | ||
colomon | rakudo: (-<<(1...10)).perl.say | ||
p6eval | rakudo 5a0581: OUTPUT«[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10]» | ||
jnthn | rakudo: (-<<(1..10)) | ||
p6eval | rakudo 5a0581: OUTPUT«maximum recursion depth exceededcurrent instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)» | 14:46 | |
jnthn | rakudo: (-<<(1..10)); say "omg I live!" | ||
p6eval | rakudo 5a0581: OUTPUT«maximum recursion depth exceededcurrent instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)» | ||
masak | should I submit a rakudobug above? sorry for the lag :) | 14:47 | |
colomon | I just did. | ||
using the shorter version (no need to muck about with factorial) | |||
[particle] | colomonbug++ | ||
pugssvn | r30419 | pmurias++ | [mildew] add missing file | 14:48 | |
pmurias | diakopter: hi | 14:49 | |
masak | the "Perl 6 is different" is making my Twitter client vibrate with "Perl 6" live search results. leont++ | ||
colomon++ | |||
jnthn | IIRC, we moved #rakudosketch to be Tuesday, yes? | 14:51 | |
Can anyone remember what time? :) | |||
[particle] | it used to overlap the sixperl call by half an hour, so i'm guessing now it overlaps parrotsketch by half an hour :/ | 14:52 | |
jnthn | I'm not sure attendance hugely overlaps. | 14:53 | |
[particle] | i see last tuesday's started at 12p pdt | ||
i think i'm -8 utc | |||
jnthn | I think I'm +2 utc | ||
[particle] | er, utc - 8 of course | ||
jnthn | .oO( my timezone did +2 utc ) |
||
14:54
PacoLinux joined
|
|||
[particle] wonders if there's a foxclocks equivalent for chrome | 14:54 | ||
jnthn | That'd mean 10pm here for me. I'm not sure that's right. | ||
14:54
justatheory joined
14:55
jonasbn left
|
|||
colomon | Wasn't the old time four hours from now? | 14:56 | |
jnthn | That sounds righter to me. | 14:57 | |
That's 9pm my time. | |||
Let's go for that. | |||
colomon | is anyone over there right now? I just got strange results when I tried to join the room... | 15:00 | |
jnthn appears to be in #rakudosketch | |||
colomon | ah, that's better. danke. | 15:01 | |
jnthn | :-) | ||
colomon | not sure what I did wrong the first time. | ||
15:03
rurban left
15:05
rurban joined
|
|||
jnthn bbiab | 15:06 | ||
15:08
ejs left
15:12
ejs joined
|
|||
snarkyboojum | std: ; | 15:19 | |
p6eval | std 30419: OUTPUT«ok 00:01 108m» | ||
masak | :) | 15:20 | |
moritz_: autarch++ has a nice message about Date.daycount on p6l. | |||
15:26
Kyril joined
|
|||
sunnavy | re | 15:30 | |
15:35
rv2733 joined
|
|||
jnthn back | 15:37 | ||
15:55
masak left
15:57
REPLeffect left,
iblechbot left
16:04
muixirt left
16:11
REPLeffect joined
16:13
snarkyboojum left
16:16
ejs left
16:17
Cristina_ left,
hercynium left
16:19
IllvilJa left
16:21
REPLeffect left
16:32
IllvilJa joined
|
|||
TimToady | std: has constant $.pi = 3; | 16:33 | |
p6eval | std 30419: OUTPUT«ok 00:01 110m» | ||
jnthn | o.O | ||
16:34
REPLeffect joined
|
|||
TimToady | masak++ was conjecturing class-based constants, but it already falls out | 16:34 | |
in fact, that was one of the reasons the constant declarator moved from being a scope_declarator to being a type-declarator, so we could use it in arbitrary scopes | 16:36 | ||
jnthn | ...I guess I missed the change where constant stopped being a scope declarator. | ||
TimToady | well, but I think you know that constants "default" to our | 16:37 | |
what can that mean, other than that you can put other scopes? | |||
but anyway, no one to blame but myself, for putting constants in the wrong place to begin with :) | 16:38 | ||
jnthn | I guess it wants to do something like $*SCOPE ||= 'our' or something. | 16:39 | |
Hmm. I don't see STD doing anything there. | 16:40 | ||
oh, but maybe doesn't need to. | |||
TimToady | there's probably a bug in there somewhere, but maybe only for add_name, which seems to default to 'my' | 16:44 | |
add_variable seems to default to 'our' | |||
16:45
nihiliad joined
|
|||
TimToady | it's really something that should be specified on all type_declarator:*, but we don't have our protos set up for that yet | 16:47 | |
we need a way to write our proto block such that it functions as a wrapper around the dispatch to various specific rules | 16:48 | ||
that would simplify the 'is endsym' stuff too | 16:49 | ||
well, maybe not | |||
jnthn | :/ | ||
That sounds...weird. | |||
16:50
leon__ joined
|
|||
TimToady | well, internally, (in STD at least), the type_declarator proto is the routine you're actually calling to dispatch to all its alternatives | 16:50 | |
so there's no magic in the <type_declarator> call itself, only lower down | |||
jnthn | Ah, I see. | 16:51 | |
TimToady | and certainly the current default is fine, where an empty proto defaults to the redispatch | ||
16:51
REPLeffect left
|
|||
TimToady | but if we could have a way to say "insert sub-dispatch here" then we get more power | 16:51 | |
currently gimme5 just rewrites any proto into a sub-dispatcher directly | 16:52 | ||
16:52
REPLeffect joined
16:53
batta joined
|
|||
TimToady | hmm, I made up a <...> assertion, but that's completely redundant, when you can write {...} just about as easily | 16:54 | |
also, you might want to write some proto rules as methods rather than as regexen | 16:55 | ||
such as in this case, where you want to throw in a 'my $*SCOPE //= "our"' | |||
16:56
batta left
|
|||
jnthn | s/my/temp/ ? | 16:56 | |
diakopter | pmurias: after another hour thinking about it, I figured out how to do the contextuals correctly & efficiently; I'll make the changes in 8 hours or so. | ||
TimToady | well, actually, it's $*SCOPE ||= 'our' | 16:57 | |
jnthn | ah, ok | ||
TimToady | no declarator, since $*SCOPE is rw and already scoped to the statement | ||
jnthn | nod | ||
TimToady | and is already defined to '', in fact | ||
well, scoped to the current declaration, anyway | 16:59 | ||
declarations are terms, not statements | |||
diakopter | sorear: re TLS, Perl 6 contextuals will not be implemented directly by perlesque contextuals. | 17:00 | |
17:00
pmurias left
|
|||
diakopter | sorear: and the STD-from-STD won't be multithreaded :P | 17:01 | |
17:01
REPLeffect left,
dakkar left
17:02
nihiliad left
17:06
sunnavy left
|
|||
sorear | pmichaud: ping | 17:07 | |
17:07
sunnavy joined
17:12
hercynium joined
17:15
sunnavy left,
sunnavy joined
17:17
szabgab joined
17:20
thowe joined
|
|||
sorear | Jonathan Worthington — Perl 6 talk in Malmö | 17:21 | |
(re-escaping escaped text)-- | |||
thowe | I am curious if there is a page that explains the canonical way of licensing ones own software under the Artistic 2.0 license. Something that says what's normal to do like "include the file here, named this. add the license to these files" etc... Is there such a document? | ||
jnthn | sorear: ugh, fail. | ||
thowe | like, don't the GPL people like a file called "COPYING" | 17:23 | |
diakopter | thowe: no page that I know of. usually there is a file named COPYING that has any copyright notification and also says something like "you can redistribute the source code of this software under the terms of the license found in the file named LICENSE" | ||
afaicg | |||
that's what I would do, anyway | 17:24 | ||
thowe | OK. My practice with ISC code was to always include it in the header file and point the source file there (for C/C++) but the artistic license is long... | ||
That sounds like the way to go. | 17:25 | ||
Thanks | |||
diakopter | I think the parrot source includes a copyright notice at the top of every source file | ||
17:26
hercynium left
|
|||
sorear | all software licenses are used in the same way | 17:26 | |
personally, I don't like the whole license boilerplate on every file thing | 17:27 | ||
PerlJam | sorear: me either. But there's liking something and then there's something that's legally defensible. | ||
17:27
pjcj joined
|
|||
plobsing | apparently rakudo will see a huge startup improvement if parrot gets a fix for freeze/thaw of complex PMCs. Can someone describe what needs work in that area? | 17:30 | |
17:31
iblechbot joined
|
|||
oskie | i get a little scared when i see that the perl6 binary on my system is 22 MB... i mean, the perl5 binary is only 7K, and the libperl so is 1.5 MB | 17:33 | |
anyone know why that is? | 17:34 | ||
17:34
stephenlb joined
|
|||
plobsing | oskie: parrot bytecode (which gets baked into perl6.exe) isn't very compact ATM. it does compress well however. | 17:34 | |
17:35
astrojp joined
|
|||
jnthn | It's been in theory more optimized for fast reading (machine sized ints) and immediately mmap-n-run than it has for being compact. | 17:35 | |
oskie | ah, I see. it compressed to 700K (basic test with bzip2)! that's pretty good | 17:36 | |
jnthn | plobsing: While that is in some senses true (on the freeze/thaw), it's probably not so much just that Parrot can do the work and suddently we're faster. Rakudo would need changes to catch up with it too. | 17:37 | |
plobsing: In a sense, we almost need to be able to say "freeze everything that's currently in memory" or something close to that. | |||
And then thaw it and run from there. | |||
Part of the issue is with dynpmcs. | 17:38 | ||
Which I think you can't freeze/thaw at all today. | |||
plobsing | jnthn: so this is about pre-calculating the language prelude? | ||
TimToady | s/prelude/setting/ these days, at least for Perl 6 | 17:39 | |
17:39
hercynium joined
|
|||
jnthn | plobsing: Right | 17:39 | |
TimToady | a setting establishes one or more outer lexical scopes | 17:40 | |
jnthn | plobsing: Modulo terminology as TimToady pointed out. ;-) | ||
Well, a little more than terminology in some senses. | |||
But probably not in a way that affects what we need to be able to freeze. | |||
TimToady | depends on whether you need to be able to freeze a lexical scope and then compile inside that :) | 17:41 | |
plobsing | So if I were able to "freeze everything in this namespace" (including dynpmcs, methods with dynops, other nastiness) rakudo could get a startup improvement? | ||
jnthn | TimToady: There's a way in Parrot to take something and dynamically set its outer scope | ||
TimToady: That's how we do it today. | |||
plobsing: Well, lexpads too. | 17:42 | ||
We store a decreasing amount in the namespace. | |||
TimToady | but you need to be able to freeze a lexical scope in order to pull it in and link to it | ||
package freezes aren't quite up to that | 17:43 | ||
jnthn | TimToady: Right. | ||
plobsing | er... ok. It boils down to "freeze this continuation" then? | ||
jnthn | Hmm. :-) | ||
Just about I guess. :-) | 17:44 | ||
Well | |||
TimToady | that's perhaps...overkill...but only slightly | ||
jnthn | We don't actually care about where the program counter is. | ||
TimToady | if you *could* freeze a continuation, that would do very well for freezing a setting :) | ||
jnthn | A Closure has a pointer to a lexpad which is the one it was last invoked with. | 17:45 | |
TimToady | though it's still not quite right | ||
jnthn | So we'd need to freeze the lexpad hanging off there. | ||
That'd *probably* do it. | |||
TimToady | if you have a setting like for -p with an outer loop, you don't actually want to freeze a continuation at the YOU_ARE_HERE, I think | 17:46 | |
jnthn | No, probably not | ||
I don't think we want it to be continuation-y | |||
TimToady | you really want the setting's compilation frozed at approximately its CHECK time | ||
*zen | |||
jnthn | Sounds about right. | 17:47 | |
diakopter | *dao | ||
*tao | |||
sigh | |||
YApunfail | |||
TimToady | so the while loop in the setting is compiled, and the lexical scope inside is remembered, but we don't actually start running the while loop till the user's program runs | ||
otherwise how would we know which file to open? | 17:48 | ||
actually I think the spec currently requires such a loop to be written in a MAIN sub | |||
that defers it already | |||
diakopter | my head spins | ||
what was the question? | 17:49 | ||
TimToady | what mechanisms are necessary to compile settings as specced | ||
plobsing | what would I have to do to be able to store the setting library? | ||
diakopter | oh | 17:50 | |
jnthn | I'm not quite sure I follow the question. | ||
I expect we'd get a PBC file out, if that's what you mean. | |||
That has the frozen PMCs and the code in it. | |||
17:50
masak joined
|
|||
diakopter | oh; I don't see a way to get around the toplevel of the setting being executed directly on every run | 17:51 | |
plobsing | yup, thats it exactlly. I'm thinking it would get rolled into the main rakudo exe | ||
masak | TimToady++ # has constant | ||
jnthn | plobsing: Yes. | ||
TimToady | diakopter: yes, but if the setting is all declarations, there's nothing much to run | ||
(at INIT time, I presume) | |||
probably before INIT time, actually | 17:52 | ||
diakopter | ok. 'tis straightforward in perlesque realm, afaict | ||
plobsing | jnthn: is there any gradual way to do this? or is this a 2 step thing with 1) make it work in parrot 2) make rakudo use it? | ||
TimToady | given that loops can go into MAIN, we might actually be able to run the setting at compile time and take a continuation if we hit a YOU_ARE_HERE that isn't hidden in a sub | 17:53 | |
but that's conjectural for now | |||
masak | plobsing: hi; are you a Parrot person? | 17:54 | |
TimToady | esp. since we don't require continuations in Perl 6 :) | ||
17:54
nihiliad joined
|
|||
plobsing | masak: yes. | 17:54 | |
masak | nice. | ||
PerlJam | He's very parroty | ||
jnthn | plobsing: I'm not sure about a gradual way tbh. | ||
masak | I like it when Parrot people hang out on #perl6. | 17:55 | |
jnthn | plobsing: I mean, you can certainly build up a set of tests. | ||
plobsing: Trying to persist and resurect more and more complex things. | |||
17:55
astrojp left
|
|||
TimToady | masak: even if they later sneak off to #parrot and complain about how much we talk :) | 17:55 | |
jnthn | plobsing: We could then start a Rakudo branch. | ||
plobsing: And try it, iterate until it works. :-) | 17:56 | ||
plobsing | I guess that's what I'll do. I'll get back to you when I've got either lexpads or continuations with dynpmcs and dynops freezeable/thawable | ||
PerlJam | plobsing++ | ||
jnthn | plobsing++ | ||
If you can do that, then, well, wow. :-) | |||
plobsing: Any news on NCI frame building? | 17:59 | ||
masak | TimToady: there's something quite odd about #parrot complaining how much others talk... :) | 18:00 | |
diakopter | TimToady: given that perlesque supports reified continuations, would you speculate on how that might be syntaxified in Perl 6? call/cc? let/cc? both? some crazy symbol sequence? | ||
plobsing | not much to speak of. I did sneak some hooks into 2.3 so a library could be created at a later time to support more signatures. | ||
also tons of deprecations of blockers | |||
diakopter | masak: I just repeat what I hear | ||
masak | diakopter: $SNAPPY_COMEBACK :) | 18:01 | |
TimToady | maybe just goto $continuation; # :D | 18:02 | |
plobsing | jnthn: I'm thinking of updating zavolaj after I make some of the improvements | ||
18:02
uniejo joined
|
|||
TimToady | errands & | 18:03 | |
18:03
meppl left
|
|||
jnthn | plobsing: OK, cool! :-) | 18:07 | |
plobsing: It's the limit on what signatures are possible that makes Zavolaj less useful today really. | |||
diakopter | TimToady: ok, but how to create them, seeing as how a continuation savepoint needs to be statically recognizable by the compiler | 18:08 | |
(there's always COMEFROM) | 18:09 | ||
o_O | |||
or RETURNHERE | 18:10 | ||
or RETURN_TO_ME (David Duchovny/Minnie Driver/Bonnie Hunt) | 18:11 | ||
18:13
batta joined
18:14
batta left
|
|||
plobsing | jnthn: If you want more signatures, you can compile a dynlib for parrot using the nci_thunk_gen tool. After loading that library, parrot will have the additional signatures available. Not as good as a JIT, but maybe it'll help you. | 18:20 | |
PerlJam slightly increases the odds that plobsing will be a mentor this summer | 18:25 | ||
jnthn noms, #rs in 30 | 18:29 | ||
18:29
uniejo left
18:30
masak left,
hercynium left,
xinming_ left
18:32
xinming joined
18:41
finanalyst joined
18:53
PacoLinux left
19:06
smash_ joined,
clintongormley left
|
|||
smash_ | hello everyone | 19:06 | |
pmichaud | #rs is on tuesday now? | 19:07 | |
[particle] | pmichaud: yes, that's new. it's going on now. | 19:08 | |
jnthn | pmichaud: Yes, after a bunch of people couldn't do Wednesday | ||
19:10
ShaneC joined,
ShaneC left
19:20
gurjeet joined
|
|||
gurjeet | moritz_: Good afternoon | 19:21 | |
A quick question.. | |||
Do you think there's any uptake of the IRC logs you have been generating? | |||
diakopter | gurjeet: uptake? | 19:24 | |
gurjeet | I mean, do people go back an look up past conversations? Or are the search engine results helping people find useful info? | ||
19:24
nihiliad left
|
|||
diakopter | all the time | 19:24 | |
lots of people backlog using the web irclog | |||
incl me | |||
gurjeet | Thanks.. that'd help me make a case at #postgresql . | 19:25 | |
How about people finding info via google etc.? | 19:26 | ||
arnsholt | I've occasionally found the logs with google | ||
CokeBot9000 | google is helpful. being able to throw links to convos on tickets++. | 19:27 | |
mberends too, I posted the url of a home webserver in #perl6 and google and yahoo came to crawl it every 6 hours. | |||
19:28
christine left
19:29
obra joined
19:30
hercynium joined
19:34
rgrau left
19:37
M_o_C joined
|
|||
rurban | Will the new rakudo release not complain about parrot -r0? | 19:40 | |
(installed parrot-2.3.0) | |||
19:44
M_o_C left
19:50
hercynium left
|
|||
rurban | docs/announce/2010.04 contains March, not April | 19:51 | |
mberends | rurban: that's normal when getting Parrot from a tarball instead of svn. | ||
rurban | I known, but I want to release it properly :) | 19:52 | |
mberends | although it does look a bit silly in perl6 -v | ||
rurban | A normal version check is better than a svn rev check. | ||
Even if the reality parrot-wise is different | |||
19:53
jaldhar_ left
|
|||
rurban | But at least the monthly releases are matching the parrot version exactly | 19:53 | |
BTW: When will it be released? | 19:54 | ||
[particle] | usually thursday following parrot tuesday | 19:57 | |
rurban | Hmm, I get PMC has attributes but no auto_attrs or manual_attrs ... | ||
In PMCEmitter:744 for the p6 pmc's | 19:58 | ||
CokeBot9000 | is that with svn-latest or the released version of parrot? | ||
rurban | 2.3.0 release | 19:59 | |
That's what I'm testing and releasing | |||
19:59
christine joined
|
|||
CokeBot9000 | easy enough fix: the perl6 pmcs need one of those in the pmclass def. | 20:00 | |
slavik | kids, don't upgrade a DB unless you have a backup | 20:02 | |
Guest52061 | i think even kids know that :> | 20:03 | |
20:04
h_ joined,
Guest52061 left
|
|||
rurban | FWIW All tests and spectests pass on cygwin with current rakudo-git, released parrot-2.3.0 | 20:12 | |
TODO passed: 4-6, 11-13, 544-546, 550 | |||
20:12
h_ is now known as hghgd,
finanalyst left
|
|||
jnthn | rurban: which fail? | 20:12 | |
er | 20:13 | ||
file? | |||
rurban | t/spec/S05-mass/properties-general.rakudo for the TODO | ||
jnthn | Ah, OK | ||
20:14
M_o_C joined,
leon__ left
20:15
ash__ joined
|
|||
rurban | Is there a plan to remove the final . from @*INC? | 20:17 | |
moritz_ | rurban: it seems it's not passing them on all platforms | ||
20:19
nihiliad joined
|
|||
rurban | I have it at first on cygwin | 20:19 | |
(speaking of security riscs) | |||
moritz_ | yes, will be removed in the long run | ||
rurban | you cannot do a build-time check to add it temporarily? | 20:21 | |
moritz_ | the question is not "you cannot" :-) | ||
rurban | ok, it gets slower | ||
20:22
SmokeMachine left
|
|||
pmichaud | ('cool' branch review) overall looks good. I'm not sure why we need src/core/Cool.pm, it appears to be empty. | 20:23 | |
jnthn | Empty? | ||
jnthn is a tad surprised by that | |||
pmichaud | well, it's essentially "augment class Cool { }" | 20:24 | |
20:24
envi^home left
|
|||
jnthn | I thought all the Cool methods would be in it? | 20:24 | |
Oh. Are the methods in PIR? | |||
pmichaud | they tend to go in Cool-str, Cool-num, etc. | ||
jnthn | oh, I see! | ||
Maybe it's for the benefit of the export code-gen. | |||
moritz_ | pmichaud: I wanted to add a postcircumfix:<{ }> method there | ||
pmichaud: but I forgot | |||
20:24
M_o_C left
|
|||
jnthn | Ah, OK. | 20:24 | |
pmichaud | I don't believe postcircumfix:<{ }> belongs in Cool. | ||
colomon | I forgot we almost have Cool! \o/ | 20:25 | |
jnthn | If it's doing auto-viv, no, I agree not. | ||
moritz_ | it does not | ||
it just returns self if the argument is 0, and Nil otherwise | |||
so that <foo bar>[0] and <foo>[0] both work | |||
pmichaud | do you mean perhaps postcircumfix:<[ ]>, then? | ||
moritz_ | erm, yes | 20:26 | |
sorry | |||
20:26
alexn_org joined
|
|||
lisppaste3 | colomon pasted "Roles and multis" at paste.lisp.org/display/98058 | 20:26 | |
moritz_ | you're right, { } doesn't have a place in Cool | ||
pmichaud | <foo>[1] should probably return a failure | ||
alexn_org | hei ... I'm trying to play with Rakudo ... does perl 6 has an equivalent "perldoc" ? | ||
pmichaud | although I suppose Nil is possible | 20:27 | |
moritz_ | alexn_org: not really yet | ||
pmichaud | I'm not sure Parameter should inherit from Cool. | ||
20:27
SmokeMachine joined
|
|||
alexn_org | moritz_: how can I discovers the methods available on an object? | 20:28 | |
moritz_ | rakudo: say 5.^methods(:local)».names.join(', ') | 20:29 | |
p6eval | rakudo cf4eb8: OUTPUT«Method 'names' not found for invocant of class 'Perl6MultiSub'current instr.: '!dispatch_method_parallel' pc 359 (src/glue/dispatch.pir:72)» | ||
jnthn | colomon: Is that nopaste The Bug? | ||
pmichaud | other than those two items, my quick-scan didn't see any major flags with the cool branch | ||
moritz_ | rakudo: say 5.^methods(:local)».name.join(', ') | ||
p6eval | rakudo cf4eb8: OUTPUT«get_attr_str() not implemented in class 'Sub'current instr.: 'perl6;Code;name' pc 13209 (src/builtins/Str.pir:68)» | ||
moritz_ | alexn_org: buy guessing; or introspection when it works; or reading source code | ||
alexn_org: or by implementing perldoc, and using it :-) | |||
alexn_org | :) | ||
colomon | jnthn: I don't know if it's The Bug, but it's certainly A Bug. Doing different things got different bad reactions, but that's the first one I've been able to easily isolate. | ||
alexn_org | moritz_: thanks | 20:30 | |
jnthn | colomon: If you mark them all multi does it work out any better? | ||
colomon: In this case though, the only method in the class should probably just win. | |||
20:30
_buno_ joined
|
|||
moritz_ | pmichaud: I couldn't think of any reason why Paramater should not be Cool | 20:30 | |
it's a builtin type after all | 20:31 | ||
pmichaud | It just feels weird. It's not a normal "value type" | ||
colomon | jnthn: nope, same get_attr_str error. | ||
jnthn | colomon: OK | ||
colomon: Debugging. | |||
pmichaud | I'd tend to keep things out of Cool until we have a good reason for them to be in. | ||
colomon | \o/ | ||
jnthn | Parameters just ain't Cool enough. | ||
pmichaud | as opposed to assuming they're Cool until we decide they shouldn't be. | ||
moritz_ | pmichaud: afaict the idea was that all builtin types are Cool, unless they have a very good reason not to | 20:32 | |
pmichaud | I think that's more for value types than "all types" | ||
I can be argued into it, yes. | 20:33 | ||
moritz_ | what definition of "value types" are you currently using? | ||
pmichaud | but from a deprecation perspective, it's much easier to put things into Cool than it is to take them out. | ||
moritz_ | $thing eq $thing.WHICH | ||
pmichaud | Num, Str, Array, Hash, etc. tend to be "value types" to me | ||
and we expect them to automagically work in other contexts | 20:34 | ||
Parameter (as an object) doesn't feel to me like something that should behave like a numeric just whenever it wants | |||
20:34
_buno_ left
|
|||
jnthn buys pmichaud's argument | 20:34 | ||
moritz_ | I'll spectest with having 'is Cool' removed from Parameter | ||
pmichaud | i.e., I wouldn't expect to be able to do: my Parameter $x = &sub.signature.whatever; say $x.sin; | 20:35 | |
doing .sin on a Parameter object doesn't feel Cool. :-) | |||
whereas I would expect "3.14".sin to work, because Str is Cool | |||
20:37
alexn_org left
20:38
molaf left
|
|||
colomon | I thought delegation to Cool was supposed to be automatic, rather than through normal subclassing? | 20:40 | |
jnthn | No, it's just subclassing | 20:41 | |
moritz_ | colomon: nope, only the conjectural fallback mechanism is magical | ||
japhb | pmichaud or jnthn: could we get one of you for a couple minutes in #ps? | ||
jnthn | There is some spec-ulation that there's some fallback mechanism too. | ||
pmichaud | japhb: I'm in. | ||
colomon | subclassing++, magic-- | ||
jnthn | pmichaud++ | ||
jnthn doesn't even appear to be on that IRC server | |||
jnthn reads the logs | 20:42 | ||
japhb | thanks, pmichaud | ||
jnthn | pmichaud: +1 | ||
pmichaud | jnthn/others: any reason to believe that the Rakudo release won't target Parrot 2.3.0 ? | 20:43 | |
i.e., it's okay for Parrot to start merges? | |||
jnthn | pmichaud: Can they hold for 10 mins? | ||
pmichaud: My spectest run against 2.3.0 will be done then. | 20:44 | ||
pmichaud | jnthn: have you had any errors yet? | ||
jnthn | No. | ||
[particle] | heh, you're asking a lot ;) | ||
pmichaud | that's good enough for me. | ||
jnthn | But I'm only down to S05. ;-) | ||
pmichaud | in other words, we're not going to be doing things against parrot trunk until after the release | ||
moritz_ | jnthn: I've already spectested successfully a revision *very* close to parrot 2.3.0, only doc and test changes since then | ||
jnthn | moritz_: And passed? | ||
moritz_ | jnthn: yes :-) | 20:45 | |
jnthn | pmichaud: Right, jsut normal procedure. | ||
moritz_ | would have screamed if not | ||
jnthn | moritz_++ | ||
OK, in that case I'm happy to give Parrot folks the go-ahead. | |||
pmichaud | I just did. :) | 20:46 | |
they're merging in the immutable_strings branch. | |||
moritz_ | \o/ | ||
[particle] | and the line numbering fix | ||
moritz_ | oh, that exists? | ||
20:47
PacoLinux joined
|
|||
[particle] | (1:14:50 PM) chromatic: I worked on line numbering and have a branch ready to merge there. That should fix up a lot of problems. | 20:47 | |
chromatic++ | |||
moritz_ still looks for a release name for #28 | |||
pmichaud | Moscow.pm | 20:48 | |
jnthn | \o/ | ||
moritz_ | pmichaud: why? | ||
pmichaud | they invited me to present at their conference. jnthn++ went in my place :) | ||
jnthn++ can add more reasons why :) | |||
moritz_ | I thought it wasn't their conference... | ||
well, wfm | 20:49 | ||
pmichaud | okay, it wasn't their conference, but they made sure Perl 6 was represented :) | ||
*well represented | |||
jnthn | It wasn't, but I rather suspect that Moscow.pm did help...right, what pmichaud++ said. | ||
Plus they have had Perl conferences before, and are Perl 6 friendly. | |||
*and* they took me for beer. | |||
pmichaud | more to the point, they made sure Rakudo was well represented :) | ||
20:49
nihiliad left
|
|||
moritz_ | do you know any web page of that conference? | 20:49 | |
[particle] | should you name it in cyrillic? | ||
jnthn | ;-) | 20:50 | |
moritz_ | [particle]: I actually thought about that... | ||
[particle] | fear not utf-8 | ||
pmichaud | anyway, I vote for Moscow.pm . :-) | ||
slavik | Москва.пм | ||
jnthn | Just don't ask me for the translation. ;-) | ||
moritz_ | [particle]: but since I don't read cyrillic very well, I was afraid to mis-spell it | ||
jnthn | moritz_: What slavik++ said :-) | ||
20:50
pmurias joined,
nihiliad joined
|
|||
[particle] | yes, we'd hate for it to translate to 'pants.pm' | 20:50 | |
pmichaud | if we do use cyrillic, be sure to tag the ascii version also :-) | ||
moritz_ | pmichaud: I'll use the ASCII version, but mention the "real" name in the announcement | 20:51 | |
pmichaud | and we might want to go back and fix any other names we've anglicized | ||
moritz_: +1 | |||
jnthn | пиво.пм | ||
slavik | when?! | ||
I want | |||
pmurias | diakopter: get_continuation()? | ||
jnthn | It *would* be an awesome PM group! | ||
moritz_ | so... link to that conference? | ||
pmichaud | wfm | 20:52 | |
slavik | not as awesome as Водка.пм | ||
Еслиб было море водки, я бы стал подводной лодкой. | 20:54 | ||
moritz_ | was it DevConf? | ||
slavik | Еслиб было море пиво, яб дельфином стал красивым. | ||
:) | |||
jnthn | moritz_: RIT | ||
moritz_: But IIRC masak++ is going to speak at DevConf | |||
moritz_: So essentially Perl 6 is represented at two conferences in Moscow! | |||
Has been at one, and will be at another. :-) | 20:55 | ||
20:55
hercynium joined
|
|||
jnthn | slavik: I'd even take up swimming! | 20:55 | |
slavik | :) | 20:56 | |
moritz_ | ok, merging master into Cool makes just t/spec/S12-introspection/parents.t fail | 20:57 | |
(I remvoved Cool.pm and Cool from Parameter.pm) | 20:58 | ||
should I merge? | |||
jnthn | Yes, unless pmichaud++ has any objections. | ||
pmichaud | no objections | ||
jnthn | colomon: I have a fix for you. | ||
20:59
lumi_ joined,
lumi_ left
21:00
ReiniUrban joined
21:01
scheriii joined,
rurban left,
ReiniUrban is now known as rurban
|
|||
scheriii | hallo? | 21:03 | |
moritz_ | monster commit coming up | 21:04 | |
erm, s/monster/merge/ | |||
colomon | jnthn: \o/ | ||
m6locks | omg | 21:05 | |
dalek | kudo: 10b0ff4 | jonathan++ | build/PARROT_REVISION: Bump PARROT_REVISION to 2.3.0. |
||
kudo: 698ba87 | jonathan++ | src/builtins/Multi.pir: Add a .name method to Multi. Fixes various issues with introspection and also role composition, which uses this introspection. |
|||
m6locks | gettin ready | ||
to build my rakudo | |||
pugssvn | r30420 | moritz++ | [t/spec] in inheritance hirarchies, take Cool into account; also remove some test for parents of builtins, they are underspecced | 21:06 | |
ash__ | you can have anonymous classes right? | ||
scheriii | ok.. somebody there who could help me? perhaps? i have no idea about irc, but no idea about perls either ;) but i have to solve an easy (for me quite difficult) problem with perls... | ||
ash__ | scheriii: what kind of problem? | 21:07 | |
moritz_ | scheriii: if it's a Perl 6 problem, we can try | ||
ash__ | rakudo: my $a = (class { has $.a; has $.b; }).new; # should work? | ||
p6eval | rakudo cf4eb8: OUTPUT«Invalid namespace key in set_pmc_keyedcurrent instr.: 'perl6;ClassHOW;new' pc 3809 (src/metamodel/ClassHOW.pir:27)» | ||
moritz_ | ash__: yes, should work. There's also a ticket for that in RT | 21:08 | |
ash__ | cool, was going to add one if there weren't any | ||
moritz_ | masak++ took care of that :-) | 21:09 | |
colomon | jnthn: afk on walk, but will see where role patch gets us asap. | 21:10 | |
pmurias | diakopter: get_continuation()? | 21:11 | |
colomon | after that, I mean | ||
jnthn | ash__: NYI, in my plans for $soon :-) | ||
ash__ | rakudo: multi foo(Int $a) { say $a; nextwith("and then..."); }; multi foo(Str $a) { say $a }; foo(1); | 21:12 | |
p6eval | rakudo cf4eb8: OUTPUT«1Null PMC access in clone()current instr.: '&nextwith' pc 17662 (src/builtins/assign.pir:34)» | ||
ash__ | is that in the bug tracker? i didn't see it from my searching... but i might be using the wrong keywors | ||
scheriii | :D ok dont know if it works... tried to write moritz... hm ... i'll try to explain ;) doing an internship and its my first day i got a own webserver to "play" with and an exercise to write a pearls programm... i'm a little bit lost ;) | ||
ash__ | you probably mean perl 5... i'd guess | ||
moritz_ | scheriii: doesn't sound like Perl 6 - www.perlmonks.org/?node=SoPW might be a good address for your questions | ||
scheriii: or /join #perl | |||
scheriii | ah ok... thank you... | 21:13 | |
21:14
clintongormley joined
21:15
gurjeet left
|
|||
jnthn | ash__: That is tracked iirc. It's also...debatable how to fix that. | 21:15 | |
dalek | kudo: aa12544 | moritz++ | (3 files): a wee bit uncooling |
21:17 | |
kudo: 77b52fd | moritz++ | (24 files): Merge branch 'cool' |
|||
kudo: d3b8168 | moritz++ | docs/ (2 files): next release will be named "Moscow" |
|||
kudo: bdc5dca | moritz++ | (3 files): Merge branch 'master' of github.com:rakudo/rakudo |
|||
moritz_ | rakudo: sub infix:<@@> ($x, $y) { $x + $y }; say 3 @@ 4 | ||
p6eval | rakudo cf4eb8: OUTPUT«A method named '>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role.current instr.: 'parrot;P6metaclass;add_method' pc 422 (runtime/parrot/library/P6object.pir:326)» | 21:18 | |
moritz_ | weird | ||
pugssvn | r30421 | moritz++ | [t/spec] test that subs without an "our" are not entered into the namespace | ||
21:18
railk joined
|
|||
moritz_ | fwiw the error above is trigged by a fudged-out test in t/spec/S06-advanced_subroutine_features/lexical-subs.t | 21:19 | |
ash__ | rakudo: sub infix:<@!> ($x, $y) { $x + $y }; say 3 @! 4 | ||
p6eval | rakudo cf4eb8: OUTPUT«A method named '!>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role.current instr.: 'parrot;P6metaclass;add_method' pc 422 (runtime/parrot/library/P6object.pir:326)» | ||
ash__ | does @ mean something like escape? | ||
or is it happening to mean something like escape by accident? | 21:20 | ||
moritz_ | it should not | ||
21:22
scheriii left
|
|||
ash__ | something odd is happening with @, i am trying it in different ways, and @ seems to be the common denominator... | 21:24 | |
railk | i was reading through A05 and something puzzles me with the rule that is supposed to be equivalent to <%hash> (under section variable interpretation), it states `$val := <%hash.prop{valuematch}> # find value <( $val eq %hash{$val} )> # assert eq` but wouldn't that second part have to be `<( $val eq %hash{$key} )>`? am i missing something? | 21:25 | |
moritz_ | railk: don't read A05, but rather S05 | ||
railk | oh | ||
moritz_ | railk: the Apocalypses documents are long out of date, and not maintained anymore | 21:26 | |
ash__ | the A## are a bit older, and probably not the same as S## | ||
moritz_ | railk: and we've abandoned hash interpolation in favor or proto regexes, iirc | ||
pugssvn | r30422 | moritz++ | [t/spec] test various rakudo oddities when overloading postcircumfix:<{ }> | 21:31 | |
jnthn | colomon: OK, great, let me know how it goes when you get to it. :-) | 21:32 | |
moritz_: That @ thing - I've hit that before somewhere. | 21:33 | ||
moritz_ goes to bed | 21:34 | ||
jnthn | I think it's because masak++ bakes every @ he sees. | ||
;-) | |||
moritz_ | :-) | ||
'night | |||
jnthn | moritz_++ # nice test stuff! | ||
o/ | |||
dalek | kudo: 5530662 | moritz++ | t/spectest.data: run S06-operator-overloading/methods.t |
||
diakopter | pmurias: well yeah :) | 21:39 | |
21:40
Guest51887 left
|
|||
pugssvn | r30423 | jnthn++ | [t/spec] Fudge a chunk of S12-methods/multi.t; going to start working through getting more of these working again, but good to test the bunch that do work. | 21:42 | |
21:44
mberends left
|
|||
dalek | kudo: cdb2b8f | jonathan++ | t/spectest.data: Turn on S12-methods/multi.t. |
21:46 | |
diakopter | std: sub infix:<' '> ($x, $y) { $x + $y }; say 3' '4 # TimToady infinite loop? | 21:47 | |
p6eval | std 30421: OUTPUT«ok 00:01 111m» | ||
diakopter | oh. | ||
rakudo: sub infix:<' '> ($x, $y) { $x + $y }; say 3' '4 | |||
p6eval | rakudo bdc5dc: OUTPUT«7» | ||
pmurias | diakopter: the runtime will be written in perlesque | ||
? | |||
s/will/should | |||
diakopter | yeah, but that doesn't mean contextuals will be *implemented* using perlesque conditionals. | ||
contextuals. | |||
pmurias | contextuals are not the first think i'm worried about when writting a backend | 21:48 | |
diakopter: what are the other uses of pelesque contextuals? | 21:49 | ||
diakopter | STD/Cursor use them heavily | ||
so yes, STD's compilation of itself to perlesque would use perlesque contextuals directly. | |||
pmurias | how did you implement them | ||
21:49
astrojp joined,
smash_ left
|
|||
pmurias | ? | 21:49 | |
diakopter | they're not correct yet | ||
but ..., | |||
each frame that assigns to a contextual gets a slot for it | 21:50 | ||
pmurias | and a lookup for a contextual walks the call chain? | 21:51 | |
diakopter | and the first assignment in that frame that occurs, sets another flag slot for that contextual, and it's reverted when the frame returns | ||
no | |||
each variable, contextual or not is at most 2 pointers away | |||
so effectively, a contextual is a global | |||
but the frames themselves reset the values upon return | 21:52 | ||
pmurias | so where are the contextuals kept? | ||
diakopter | slots in the top-level frame, always | ||
no matter where they are initially declared | |||
pmurias | and the flags? | 21:53 | |
diakopter | each frame | ||
per-contextual | |||
a machine word, 0 or non0 | |||
pmurias | that breaks with concurency | ||
diakopter | yes, like I said to sorear, STD's compilation of itself to perlesque doesn't need concurrency., | 21:54 | |
pmurias | perlesque isn't intended to be generall purpose? | ||
diakopter | no, it's not intended to grow into Perl 6 | 21:55 | |
it's just a subset. | |||
Perl 6 will have to be implemented *in it*, using STD/viv(/mildew) as a front-end. | |||
(or rakudo/nqp-rx/past) | 21:56 | ||
colomon | jnthn: "Currently, adding multiple methods of the same name is not supported." :\ | ||
pmurias | what i meant in general purpose was that if it was supposed to be a backend for a full compiler or a special cased viv translator | ||
colomon | That's with multis on each instance. | ||
with multi on just the first, it works. | |||
jnthn | colomon: Aha. | ||
diakopter | pmurias: yes, special case viv runtime. | ||
or rakudo/nqp-rx/past runtime. | |||
jnthn | colomon: OK, I suspected we may hit that one... | ||
diakopter | using Perl6-ish and Perl5-ish features | 21:57 | |
colomon | jnthn: at the very least, a much nicer fatal error. ;) | ||
jnthn | colomon: Well, yes. :-) | ||
colomon: The one you were meant to get to before. | |||
So now I guss my task is the NYI feature. :-) | |||
colomon | well, let me see how this works on real code. (sic) | ||
diakopter | pmurias: but the thing is, the entire compiler framework is exposed to perlesque code as an API (since it's just .NET classes also), so yes, entire compilers can be implemented on it. | 21:58 | |
but the contextual implementation is so brain-dead easy (because of the multi-stage compilation in csmeta) that it could be done just as easily in perlesque. | |||
jnthn | colomon: I did just fudge a bunch of S12-methods/multi.t so I could at least see what is passing and what is not. | ||
diakopter | probably even easier, in fact. | 21:59 | |
jnthn | colomon: And certainly there's todos in there. :-) | ||
colomon | :) | 22:00 | |
pmurias | diakopter: done just as easily in perlesque - what do you mean by that? | ||
diakopter | the implementation of contextuals. | 22:01 | |
22:01
iblechbot left
|
|||
diakopter | just as easily in perlesque as I did in "C#" | 22:01 | |
pmurias | you mean if perlesque was written itself in perlesque? | ||
22:02
snarkyboojum joined
|
|||
diakopter | it'll need another level of indirection for thread-local storage, but that's smop. | 22:02 | |
pmurias: no. | |||
if Perl 6 contextuals were written in perlesque. | |||
22:02
SmokeMachine left
|
|||
pmurias | so why add them to perlesque? | 22:03 | |
colomon | jnthn: if I add method "abs" to Numeric, perl 6 builds, but you get "Null PMC access in find_method('!select')" when you try to run it. | ||
diakopter | pmurias: b/c the first stage is to directly translate STD to perlesque. | 22:04 | |
not "implement Perl 6" | |||
transliterate, I should say. | |||
pmurias | why is that the first step? | ||
diakopter | what are the other options? | ||
pmurias | implement enough Perl6 to run STD | 22:05 | |
diakopter | that's not feasible. | ||
it's already in enough of a Perl5 subset that gimme5 can more-or-less directly transliterate it to p5. | |||
jnthn | colomon: Got a patch I can try locally? | 22:06 | |
colomon: Did you remove it from elsewhere, or? | |||
colomon | one sec. | ||
jnthn | OK | 22:07 | |
jnthn is hacking on another patch ATM too, though not a multi/role one... | |||
lisppaste3 | colomon pasted "jnthn++ add this to Numeric.pm (warning: breaks p6)" at paste.lisp.org/display/98066 | ||
jnthn | colomon: Ah, that'll be very easy for me to try and test. :-) | 22:08 | |
pmurias | diakopter: one you have a transliterated STD what will you do? | ||
diakopter | compile it to CIL using csmeta/perlesque. | ||
then run it in mono. | |||
eternaleye | rakudo: grammar Test { regex TOP { <foo><bar> }; regex foo { foo }; regex bar { bar }; }; class TestActions { method TOP { say 'TOP'; }; method foo { say 'foo'; }; method bar { say 'bar'; }; method baz { say 'baz' }; }; Test.parse( 'foobar', :actions(TestActions.new); | ||
p6eval | rakudo bdc5dc: OUTPUT«Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 11current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)» | 22:09 | |
eternaleye | rakudo: grammar Test { regex TOP { <foo><bar> }; regex foo { foo }; regex bar { bar }; }; class TestActions { method TOP { say 'TOP'; }; method foo { say 'foo'; }; method bar { say 'bar'; }; method baz { say 'baz' }; }; Test.parse( 'foobar', :actions(TestActions.new) ); | ||
p6eval | rakudo bdc5dc: OUTPUT«Too many positional parameters passed; got 2 but expected 1current instr.: 'perl6;TestActions;foo' pc 1677 (EVAL_1:618)» | ||
pmurias | diakopter: what i meant what's the next step after that | 22:10 | |
eternaleye | Hm. I was tring to figure out what happened when an action object defined a method with no corresponding regex in its grammar, but this doesn't tell me much. | ||
*trying | |||
jnthn | colomon: afk for a little bit, back soonish | 22:11 | |
diakopter | pmurias: oh; I'll write action routines (in perlesque) that build up csmeta's internal AST (runsharp's), and start writing the Perl 6 runtime (in strongly-typed perlesque) to support it. | 22:12 | |
so, there will be a viv-equivalent in CIL | |||
eternaleye | The reason I want to know this is that I'm thinking of writing a group of syntax hilighters, which output using actions. However, some languages (say, brainf***) don't have some components, like variables, and therefore the grammar for it won't define a 'variable' regex. I want to know if I can use the same actions object for all hilighters | ||
bkeeler | It shouldn't hurt anything to have methods which never get called | 22:14 | |
eternaleye | Okay, good | 22:15 | |
pmurias | diakopter: so you want to write a Perl 6 compiler in perlesque? | ||
(firstly hacking together a STD.pm to perlesque translator) | 22:16 | ||
diakopter | yes :) | ||
pmurias | :( | ||
diakopter | why? | 22:17 | |
22:17
hatseflats is now known as confis-ca-tive
|
|||
diakopter | yes, if by "hacking together", you mean "using STD to parse/compile itself" | 22:17 | |
it's actually the most direct route to bootstrap, imho. | 22:18 | ||
instead of implementing a full duplicate front-end and a full-blown backend, implement three front-ends and a backend for a much less complex language. | 22:19 | ||
diakopter hopes he's communicating clearly | 22:21 | ||
pmurias | so you would have to make perlesque a proper language if you want to write a Perl 6 compiler in it | ||
diakopter | what do you mean by "proper language"? | ||
(as opposed to ... what?) | |||
pmurias | error message that don't make you want to kill someone | ||
* messages | |||
diakopter | :/ | 22:22 | |
ok ok, I'll make them all say "parsefail" :P | |||
pmurias | the error messages in perlesque would make sure that noone would use it again | ||
22:23
pyrimidine left
|
|||
pmurias | diakopter: parsefail plus position in source is acceptable | 22:23 | |
diakopter | whew. :) that's doable. | 22:24 | |
pmurias | if you don't output the postition you'll have to read STD.perlesque to search for the syntax error the translator did | ||
s/did/produced | 22:25 | ||
diakopter | yeah | ||
22:26
Spreadsheet_ joined
|
|||
Spreadsheet_ | When will Perl6 be released? | 22:26 | |
pmurias | the reason why i don't like the translate STD and write the compiler in perlesque is that seems like a tons of work that's likely to fail | ||
Spreadsheet_ | Is it too late to suggest new features | ||
pmurias | diakopter: like elf did | 22:27 | |
diakopter | oh | ||
the thing is, there's already a complete compiler toolkit/framework in csmeta | |||
type-checking and everything | |||
pmurias | type-checking? for Perl 6 | 22:28 | |
ash__ | Spreadsheet_: perl6 doesn't have a scheduled release date, but it should come out on christmas, eventually | 22:29 | |
Spreadsheet_: and if you have any comments on the current spec's then by all means send an email to the perl6-language mailing list or ask here | |||
pmurias | diakopter: you mean at runtime? | 22:30 | |
diakopter | pmurias: compile time. | 22:31 | |
AST generation time. | |||
22:31
quester_ joined
|
|||
pmurias | diakopter: so that would be useless for Perl 6 | 22:32 | |
diakopter | (eye roll) | ||
there are several layers of type systems. | |||
pmurias | as Perl 6 is a dynamic language | ||
diakopter | (eye roll) | ||
everything's a strongly-typed language at one level or another. | |||
or more. | 22:33 | ||
for instance, rakudo's runtime objects *behind*the*scenes* don't just up and change type. | 22:34 | ||
pmurias | you want to check that | 22:35 | |
diakopter | ? | ||
want to check what? | |||
pmurias | you want to type check a perl 6 program | ||
diakopter | no. you want to type check the code the perl 6 program is being JITted to. | 22:36 | |
pmurias | that will only give you some guaranties about the correctness of the compiler | 22:37 | |
diakopter | yes. the Perl6-level type-checking is at a higher level, yes. | ||
or not-very-existent. | |||
but definitely existent for variables that have type annotations. | |||
pmurias | at runtime | 22:38 | |
ash__ | some things are type checked, for instance, all multi-methods, and operators | ||
diakopter | yeah, of course. that's a runtime thing. | ||
Spreadsheet_ | ash__: thanks | ||
ash__ | but some of that can happen at runtime, you can also have type inference on some things too | 22:39 | |
diakopter | but (luckily) the native types in Perl 6 map nicely to CLR vm native types. | ||
so, the native types are type-checked | |||
ash__ | like, if you use a infix:<+> operator, you know both sides will be at least Num's and the result is a num (assuming its using the built in +) | ||
oops | 22:40 | ||
i said runtime, i meant compile time | |||
pmurias | ash__: type inference is a very different thing from type checking | 22:41 | |
you try to infer some type info, rather then prove that all the type info is correct | |||
22:42
clintongormley left
|
|||
ash__ | yes, but you can use that to do some type checking at compile time, if someone did "my Str $a = 1 + 2"; you can check that at compile time | 22:42 | |
you don't have to get to execution time to figure out that they just assigned a Num-like object to a Str | |||
pmurias | thats correct | ||
perl6: my Str $a = 1 +2; | 22:43 | ||
p6eval | elf 30423, pugs: ( no output ) | ||
..rakudo cdb2b8: OUTPUT«Type check failed for assignmentcurrent instr.: '&die' pc 17223 (src/builtins/Junction.pir:404)» | |||
pmurias | hm? | ||
ash__ | rakudo is doing that at runtime | ||
diakopter | I don't think so | ||
not certain | |||
oh, I'm wrong | |||
jnthn | Rakudo is doing that check at runtime. | ||
(Which is fine) | 22:44 | ||
In the future, we should be able to spot that one at compile time. | |||
ash__ | perl 6 doesn't say you have to do it at compile time, but a compile time check might be useful for optimization and/or error checking | ||
jnthn | Right | ||
pmurias | diakopter: will the translated STD be fully correct (to the extent STD.pm5 is)? | 22:46 | |
diakopter | hopefully :) | 22:47 | |
I mean, that's the goal, yes. | |||
colomon | afk # dinner | ||
pmurias | and faster? | ||
diakopter | wishful thinking, but yeah, maybe :P | 22:48 | |
jnthn | clockan öl \o/ | 22:49 | |
22:52
wknight8111 joined
|
|||
Spreadsheet_ | So where can I read a draft of Perl 6? It seems really interesting | 22:55 | |
Will it have concurrency? Concurrency is trendy now | |||
Will I be able to read my code after writing it? | 22:56 | ||
22:56
ruoso left
|
|||
pmurias | Spreadsheet_: that depends only on you | 22:56 | |
and the quality of your screen | |||
Spreadsheet_ | What about concurrency? | ||
pmurias | yes | 22:57 | |
diakopter | :) | ||
jnthn | Spreadsheet_: There's various things to read, and even compilers to download and play with. :-) | 22:58 | |
Spreadsheet_: www.perl6.org has links to many things, including spec, where to get a Perl 6 implementation, etc. :-) | |||
Spreadsheet_ | Will there be a Programmming Perl (camel book) for 6? | ||
diakopter | so the rumors say, yes | 22:59 | |
ash__ | Spreadsheet_: perlcabal.org/syn/ is a good site too | 23:00 | |
thowe | Is pugs stil under development? | ||
ash__ | no, its still maintained so it will compile with current version of ghc, but its not actively developed | ||
23:01
christine left
|
|||
pmurias | diakopter: got the private msg? | 23:02 | |
23:03
christine joined,
Spreadsheet_ left
|
|||
cj | cotto_work, diakopter: do we have a decision on the p6 on dlr thing? miguel and mhutch are asking me if I'd be willing to work on a different project with them. | 23:04 | |
23:09
orafu left,
orafu joined
|
|||
pmurias | sleep& | 23:10 | |
23:10
pmurias left
23:17
eternaleye left
23:22
quester_ left
23:26
[synth] joined
23:29
synth left
|
|||
lue | hello there! | 23:29 | |
jnthn | hellue! | 23:30 | |
lue | rakudo: my @a = 1,2,3; my @b := @a; say @b | 23:32 | |
p6eval | rakudo cdb2b8: OUTPUT«:= binding of variables not yet implementedcurrent instr.: '&die' pc 17223 (src/builtins/Junction.pir:404)» | ||
lue | ah! D: | 23:33 | |
I'd fix it myself, but I haven't learnt the deep magic yet :) | |||
ash__ | rakudo: my &infix:<:=> = &infix:<=>; my $a := 5; say $a # lol i am bad peoples | 23:35 | |
p6eval | rakudo cdb2b8: OUTPUT«5» | ||
ash__ | does nqp := mean the same as perl6 := ? | 23:36 | |
bkeeler | Semantically yes, but I think things are more complex under the hood in p6 | 23:39 | |
23:40
spreadsheet joined
|
|||
spreadsheet | Will there be an interactive interpreter for perl 6? is there one for perl 5? | 23:40 | |
Something like Python interactive or IRB | |||
jnthn | ash__, bkeeler: Both correct. :-) | 23:41 | |
lue | for rakudo at least, there is the REPL | ||
jnthn | spreadsheet: We kinda have one in Rakudo already but it's not great. | ||
lue | but it's not very good | ||
jnthn | spreadsheet: We plan to improve it soonish. | ||
spreadsheet: But it exists at lesat. :-) | |||
lue | i.e. if you type: my $a = 3 <Return> say $a | 23:42 | |
you get an error | |||
spreadsheet | I think it should be more like ipython (if you have heard of that) | 23:43 | |
ipython is a much better version of the standard python interactive prompt | |||
jnthn | spreadsheet: I haven't; what do you like about it? | 23:44 | |
spreadsheet | It has tab completion, auto-formatting, and you can scroll back in history one function (subroutine) at a time, instead of line by line | ||
lue | REPL, by the way, is what you get when you type `perl6'. It's not separate, like ipython. | ||
jnthn | spreadsheet: Ah, interesting. | ||
lue | The one crummy thing about the standard python interpreter is that you automagically forget about indentation. | ||
ash__ | there are lots of good things with can do with a commandline interface, and many of them will be worked on eventually, but i don't think they are high priority | 23:45 | |
like readline support would be nice | |||
jnthn | ash__: I think that if you manage to get a Parrot built with readline support, Rakudo's command line will use it. | 23:46 | |
afaik anyway. | |||
ash__ | with readline you could do a bunch of new things, like have a history, and with cursres or ncurses you could add tab competition | ||
jnthn | ash__: I already get history here, fwiw. | ||
Ooh. I have a patch for anonymous class support. | 23:47 | ||
ash__ | oh, it works here too, never noticed it before | ||
jnthn | That gets it a bunch more right than we did in alpha. | ||
ash__: yay :-) | |||
spreadsheet | jnthn: whoa | ||
pugssvn | r30424 | jnthn++ | [t/spec] Tweak and unfudge some more of the anonymous class tests. | 23:48 | |
23:48
eternaleye joined
23:49
jhuni joined
|
|||
TimToady | std: [+]; | 23:50 | |
p6eval | std 30423: OUTPUT«ok 00:01 109m» | ||
jnthn | std: [+] | ||
TimToady | putting whitespace after it causes it to want arguments | ||
p6eval | std 30423: OUTPUT«===SORRY!===Prefix requires an argument at /tmp/WoHRF4KviA line 1 (EOF):------> [+]⏏<EOL>Parse failedFAILED 00:01 108m» | ||
jnthn | TimToady: Oh, I thought it was just verboten outright. | ||
TimToady | not sure why | ||
jnthn | (Thought and hoped ;-)) | 23:51 | |
TimToady | rakudo: say [*]; # should be 1 | ||
p6eval | rakudo cdb2b8: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class 'Bool'current instr.: '!postcircumfix:<[ ]>' pc 10752 (src/builtins/Role.pir:90)» | ||
jnthn | wtf. | ||
ash__ | lol | ||
jnthn | Well. That's a bug. | ||
ash__ | alpha: say [*]; | ||
p6eval | alpha 30e0ed: OUTPUT«say requires an argument at line 10, near " [*];"in Main (file src/gen_setting.pm, line 2593)» | ||
TimToady | rakudo: say [*](); # should be 1 | 23:52 | |
jnthn | TimToady: What tells the OPP not to want a term after a prefix? | ||
p6eval | rakudo cdb2b8: OUTPUT«1» | ||
jnthn | ...after *that* prefix, I mean? | ||
[ <?before '('> || <?before \s+ [ <?stdstopper> { $<O><term> = 1 } ]? > || { $<O><term> = 1 } ] | |||
TimToady | ; is supposed to be a terminator | ||
23:52
railk left
|
|||
jnthn | Is it that bit? | 23:52 | |
TimToady: We seem to be missing that piece from Rakduo's reduce parsing. | 23:53 | ||
TimToady | rakudo: say [*] ; # should be 1 | ||
p6eval | rakudo cdb2b8: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class 'Bool'current instr.: '!postcircumfix:<[ ]>' pc 10752 (src/builtins/Role.pir:90)» | ||
jnthn | TimToady: I think because I didn't understand what it did at the time, and also ain't too sure how to translate $<O><term> to rakudo-speak. | ||
TimToady | std: say [*] ; | 23:54 | |
p6eval | std 30423: OUTPUT«ok 00:01 107m» | ||
TimToady | a week or two ago I removed the implied ; at EOF | ||
jnthn | ah. | ||
TimToady | not sure why stdstopper doesn't count $ as a terminator, hmm | 23:55 | |
std: say ([*] ) | 23:56 | ||
p6eval | std 30423: OUTPUT«ok 00:01 108m» | ||
dalek | kudo: 7f8397d | jonathan++ | src/Perl6/Grammar.pm: Bring our morename rule more in line with STDs. |
||
kudo: 22805bd | jonathan++ | src/glue/role.pir: A nudge in the direction of getting anonymous roles working (they don't yet, this is just part one :-)). |
|||
kudo: ea1760c | jonathan++ | src/ (4 files): Get anonymous classes (mostly) working. Passes all the anonymous class tests apart from those that depend on Numeric and Stringy. Also we can remove some hacky stuff I put in earlier. |
|||
23:56
thowe left
|
|||
kudo: 07fd77b | jonathan++ | t/spectest.data: Turn on S12-class/anonymous.t. |
|||
TimToady | anyway, the fact that bare [+] doesn't work is an accident | 23:57 | |
jnthn | TimToady: OK. I'd taken it to mean it shouldn't. :-) | ||
I (or some other enterprising soul) will fix Rakudo up at some point, I'm sure. | 23:58 | ||
lue | parrot came out today, correct? | 23:59 |