»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:04
BenGoldberg joined,
hoverboard left
|
|||
dalek | ast: f57331b | (David Warring [email@hidden.address] | integration/advent2012-day06.t: adding advent 2013 day 06 |
00:10 | |
00:13
rurban joined
00:17
hoverboard joined,
rurban left
00:45
Mouq joined
|
|||
dalek | ast: 7b9c4db | Mouq++ | S32-list/uniq.t: Add test for RT #121434 |
00:46 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121434 | ||
Mouq | Oh... | 00:47 | |
Add another test :P | |||
I suppose more tests can't hurt… | |||
TimToady | better too many than too few :) | 00:50 | |
Mouq | : while my $x = $*IN.get { say $x; last if Bool.roll }; say $x | 00:55 | |
j: while my $x = $*IN.get { say $x; last if Bool.roll }; say $x | |||
camelia | rakudo-jvm 11a693: OUTPUT«(Str)» | ||
00:55
adu joined
|
|||
Mouq | :/ | 00:56 | |
adu | :\ | ||
timotimo | :| | 00:57 | |
Mouq | :╽ | 00:59 | |
01:08
klapperl_ joined
01:10
bluescreen10 left
01:11
klapperl left
|
|||
Mouq | method samespace(Str:D: Str:D $pat) { my @self-chunks = self.split(rx/\s+/, :all); | 01:12 | |
^^ Uhhm | 01:13 | ||
Is that correct? | |||
01:14
rurban joined
|
|||
Mouq | Actually.. how does that work in the first place? it returns @self-chunks.join | 01:14 | |
01:14
baest left,
baest joined
|
|||
Mouq | m: say "a b c".samespace("a b c") | 01:14 | |
camelia | rakudo-moar 11a693: OUTPUT«ab b c» | ||
Mouq | O_o | ||
01:15
anaeem1__ left
|
|||
Mouq | roast $ ack samespace | 01:15 | |
roast $ | |||
:( | |||
01:15
anaeem1_ joined
|
|||
lue | r: say "a b c".samespace("a b c") | 01:15 | |
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«ab b c» | ||
Mouq | m: say "a b c".split(/\s+/, :all) | 01:16 | |
camelia | rakudo-moar 11a693: OUTPUT«a 「 」 b 「 」 c» | ||
Mouq | m: say "a b c".split(/\s+/, :all).perl | ||
camelia | rakudo-moar 11a693: OUTPUT«(("a", Match.new(orig => "a b c", from => 1, to => 2, ast => Any, list => ().list, hash => EnumMap.new())), ("b", Match.new(orig => "a b c", from => 3, to => 4, ast => Any, list => ().list, hash => EnumMap.new())), "c").list» | ||
lue | At least it's Consistent across backends, and Strangely so ;) . | ||
Mouq tries stringifying the match… | 01:17 | ||
01:18
rurban left
|
|||
Mouq | m: sub SS ($orig, $space) {$orig.split(/\s+/, :all)[0,*+2..*] Z~ $space.split(/\s+/, :all)[1,*+2..*]} | 01:19 | |
camelia | ( no output ) | ||
Mouq | m: sub SS ($orig, $space) {$orig.split(/\s+/, :all)[0,*+2..*] Z~ $space.split(/\s+/, :all)[1,*+2..*]}; say SS "a b c", "a b c" | ||
camelia | rakudo-moar 11a693: OUTPUT«(timeout)» | 01:20 | |
timotimo | does the samespace modifier work on s/// or where-ever it may be appropriate? | ||
Mouq | timotimo: It works on ss/// | ||
lue | r: my $a = "a b c"; $a ~~ s:ss/[<.alpha> <.ws>?]+/d e f/; | 01:21 | |
camelia | ( no output ) | ||
lue | r: my $a = "a b c"; $a ~~ s:ss/[<.alpha> <.ws>?]+/d e f/; say $a; | ||
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«db e f» | ||
01:21
rurban joined
|
|||
lue | r: my $a = "a b c"; $a ~~ s:ss/[<.alpha> <.ws>?]+/d e f /; say $a; | 01:22 | |
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«db e f » | ||
lue | r: my $a = "a b c"; $a ~~ s:ss/[<.alpha> <.ws>?]+/d e f /; say $a; | ||
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«db e f » | ||
lue | Mouq: Looks like the first space substitution is messed up, and seemingly the rest are fine. | 01:23 | |
Mouq | m: sub SS ($orig, $space) {$orig.split(/\s+/, :all)[0,*+2...*] Z~ $space.split(/\s+/, :all)[1,*+2...*]}; say SS "a b c", "a b c" | ||
camelia | rakudo-moar 11a693: OUTPUT«ab » | ||
Mouq | Oh wait | 01:24 | |
lue | r: my $a = "α β γ"; $a ~~ s:ss/[<.alpha> <.ws>?]+/δ ε ζ /; say $a; | ||
Mouq | m: say "a b c".split(/\s+/, :all)[0] | ||
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«δβ ε ζ » | ||
rakudo-moar 11a693: OUTPUT«a 「 」» | |||
Mouq | ^^ *that's* what's causing the regression | 01:25 | |
lue | ah | ||
timotimo | huh ,ouchies! | ||
oh, these were in the source | |||
that's fine then %) | |||
lue | (me using greek characters was to make sure that the extraneous "b" was coming from the string, and not possibly some internal process) | 01:26 | |
01:26
rurban left
|
|||
Mouq tries a fix | 01:27 | ||
timotimo | i didn't look closely at all, so i thought that was garbage memory or something :) | ||
Mouq | :) timotimo++, jnthn++, people++ | 01:28 | |
Mouq hasn't been online much but has been excitedly watching the work being done recently | |||
01:29
vendethiel left
|
|||
Mouq abandons trying to fix .split, and just calls .flat on it in .samespace instead | 01:32 | ||
Mouq forgot to git pull -_- | 01:36 | ||
dalek | kudo/nom: e13671e | Mouq++ | src/core/Str.pm: Fix Str.samespace (and with it ss///) |
||
kudo/nom: 25c75c0 | Mouq++ | / (3 files): Merge branch 'nom' of github.com/rakudo/rakudo into nom |
|||
01:39
snarkyboojum joined
|
|||
dalek | ast: 5004da4 | Mouq++ | S05-substitution/subst.t: Unfudge ss/// test on Rakudo |
01:43 | |
lue | r: my @a = "a b c".split(/\s+/, :all); say @a.map: {"({$_.gist})"}; say "[" ~ @a[0].gist ~ "]" | 01:46 | |
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«(a) (「 」) (b) (「 」) (c)[a]» | ||
lue | r: say "a b c".split(/\s+/, :all).map: {"({$_.gist})"}; say "[" ~ "a b c".split(/\s+/, :all)[0].gist ~ "]" | 01:47 | |
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«(a) (「 」) (b) (「 」) (c)[a 「 」]» | ||
lue | Mouq: apparently, storing the split in a variable fixes @thing[0] (?) | ||
Mouq | lue: I think the problem may have been the binding | 01:48 | |
r: my @a := "a b c".split(/\s+/, :all); say @a.map: {"({$_.gist})"}; say "[" ~ @a[0].gist ~ "]" | |||
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«(a) (「 」) (b) (「 」) (c)[a 「 」]» | ||
01:49
hoverboard left
|
|||
lue | Using the commandline, I see now that split returns something in the form of (("thing", Match.new(what was split on)), ("thing2", Match.new()), ... "last thing") | 01:50 | |
r: say "a b c".split(/\s+/, :all)[0]; say "a b c".split(/\s+/, :all)[0][0] | |||
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«a 「 」a» | ||
lue | Huh, I think I just found out why this one script of mine broke all of a sudden a short while ago :) [it uses split(:all), so this is likely the issue] | 01:51 | |
timotimo | split :all gives you not only the pieces, but also the splittings? | 01:53 | |
lue | timotimo: yes | ||
timotimo | that's nice | ||
lue | Nope, not what broke my script though :/ | ||
timotimo | i remember being excited i can capture the part after the % operator | ||
(or even inside that part) | |||
Mouq | TimToady: Opinion wrt RT #71544 | 01:58 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=71544 | ||
Mouq | ? | ||
I.e., is that indeed the desired behaviour? | 01:59 | ||
01:59
adu left
|
|||
TimToady | looking | 01:59 | |
well, I could also argue for about 3 other behaviors... | 02:02 | ||
Mouq | Lurkers: LHF: rt.perl.org/Search/Results.html?Qu...sPerPage=0 | 02:03 | |
Hm | |||
yo.io/c2a | |||
^^ less godawful link | |||
lue | r: sub foo(@Y, @Z) { say @Y.perl; say @Z.perl }; my @a = [1,2],[3,4]; my @b = @a[0]; my @c = @a[1]; foo(@b, @c); foo(@a[0], @a[1]); | 02:05 | |
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«Array.new([1, 2])Array.new([3, 4])Array.new(1, 2)Array.new(3, 4)» | ||
TimToady | but that's probably a reasonable behavior for multi-arg grep, if we decide it should have one | 02:06 | |
lue | Please tell me I'm not wrong for thinking @b = @a[0] should DWIM ? (It used to work, in any case :/) | ||
TimToady | if the original was saved with a [], it's an item | ||
02:06
adu joined
|
|||
Mouq | TimToady: I imagine grep should at least complain when given a >1arity argument | 02:07 | |
TimToady just had to fix an RC entry for that | |||
lue | TimToady: The array ultimately is a return'd (@old, @new).lol | ||
(using := makes it DWIM, by the way) | 02:08 | ||
TimToady: I assume this newfangled behavior is the right one, correct? | 02:10 | ||
Mouq | r: sub foo(@Y, @Z) { say @Y.perl; say @Z.perl }; my @a = [1,2],[3,4]; sub n(\p) { p }; my @b = n(|@a[0]); my @c = n(|@a[1]); foo(@b, @c); foo(@a[0], @a[1]); | 02:12 | |
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«Too many positional parameters passed; got 2 but expected 1 in sub n at /tmp/tmpfile:1 in block at /tmp/tmpfile:1» | ||
Mouq | r: sub foo(@Y, @Z) { say @Y.perl; say @Z.perl }; my @a = [1,2],[3,4]; sub n(|p) { return |p }; my @b = n(|@a[0]); my @c = n(|@a[1]); foo(@b, @c); foo(@a[0], @a[1]); | ||
camelia | rakudo-parrot 11a693, rakudo-jvm 11a693, rakudo-moar 11a693: OUTPUT«Array.new(1, 2)Array.new(3, 4)Array.new(1, 2)Array.new(3, 4)» | ||
timotimo | isn't that what || is for? | ||
lue | @b := @a[0] does the trick | ||
Mouq | @b = |@a[0] should do it as ^^ above I think shows, but NYI :( | 02:13 | |
02:18
xenoterracide_ left
|
|||
dalek | ast: 1119261 | Mouq++ | S02-lexical-conventions/one-pass-parsing.t: Copy Brent Laabs' tests for RT #76988 |
02:20 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=76988 | ||
02:22
rurban joined
02:24
rurban1 joined
02:26
rurban left
02:28
rurban1 left
02:29
xragnar_ joined,
xragnar is now known as Guest65451,
Guest65451 left,
xragnar_ is now known as xragnar,
xenoterracide joined
02:34
hoverboard joined
02:41
hoverboard left
|
|||
dalek | ast: 27d6be5 | Mouq++ | S02-literals/adverbs.t: Add adverbs tests |
02:42 | |
ast: a503ffa | Mouq++ | S02-literals/adverbs.t: Add test for RT #74492 |
|||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=74492 | ||
02:43
kurahaupo left
|
|||
Mouq | r: say [foo => (1,2,3).map: {$_}].perl; say {foo => (1,2,3).map: {$_}}.perl # RT #120620 | 03:15 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120620 | ||
camelia | rakudo-jvm 25c75c: OUTPUT«(timeout)» | ||
..rakudo-parrot 25c75c: OUTPUT«["foo" => (1, 2, 3).list.item]{"foo" => (1, 2, 3).list.item}» | |||
..rakudo-moar 25c75c: OUTPUT«["foo" => (1, 2, 3).list.item]{"foo" => ().list.item}» | |||
Mouq | Looks like JVM gets it right too, locally | 03:16 | |
So, MoarVM bug :( | 03:17 | ||
Though if that bug was reported in November, it had to be failing on the other backends originally… hm | |||
(Obviously needs a test) | 03:18 | ||
(But I'm going to bed) | |||
((So g'night #perl6) | |||
) | |||
03:18
Mouq left
03:27
woolfy left,
plobsing left,
thou left,
Gothmog_ left,
sftp left,
FROGGS left,
simcop2387 left,
xenoterracide left,
anaeem1_ left,
klapperl_ left,
telex left,
molaf left,
Pleiades` left,
JimmyZ left,
sjn left,
salv0 left,
Ven_ left,
Guest97781 left,
xinming left,
bjz left,
Grrrr left,
ribasushi left,
jercos left,
itz_ left,
ilbot3 left,
perigrin left,
mls left,
sjohnson left,
nwc10 left,
Yappo__________8 left,
xragnar left,
baest left,
BenGoldberg left,
PerlJam left,
bcode left,
pecastro_ left,
dalek left,
lee_ left,
jtpalmer left,
[particle] left,
ldthien0 left,
Bucciarati left,
zacts left,
geekosaur left,
mkz left,
dylanwh left,
atrodo left,
tokuhirom left,
atta left,
amkrankruleuen left,
integral left,
frettled left,
camelia left,
Woodi left,
apejens left,
Rounin left,
rjbs left,
lue left,
crazedpsyc left,
Ulti left,
revdiablo left,
breinbaas left,
thilp left,
prammer left,
ggherdov left,
jnthn left,
sergot left,
Khisanth left,
ponbiki left,
sivoais left,
Alula_ left,
adu left,
snarkyboojum left,
Bryanstein left,
segomos left,
logie_ left,
larks left,
jlaire left,
Celelibi left,
Grimnir_ left,
xfix left,
synopsebot left,
yeltzooo left,
takesako____ left,
cosimo left,
go|dfish left,
mhasch left,
anocelot left,
mathw left,
araujo left,
ClarusCogitatio left,
cooper left,
lizmat left,
mtk left,
djanatyn left,
slavik left,
Exodist left,
effbiai left,
nebuchadnezzar left,
FOAD left,
pdcawley left,
cibs left,
ggoebel11119 left,
rurban_ left,
hummeleB1 left,
PZt left,
daxim_ left,
risou left,
itz left,
clkao left,
sorear left,
flussence left,
TimToady left,
aindilis left,
eternaleye left,
DarthGandalf left,
REPLeffect left,
labster left,
lestrrat left,
arnsholt left,
huf left,
retupmoca left,
yoleaux left,
Tene left,
raydiak left,
ivan`` left,
zamolxes left,
bowtie left,
erdic left,
isacloud__ left,
Juerd left,
yogan left,
brother left,
timotimo left,
hoelzro left,
pnu left,
_sri left,
eiro left,
Timbus left,
hugme left,
renormalist left,
yakudza left,
jdv79 left,
gfldex left,
felher left,
awwaiid left,
sunnavy left,
simula67 left,
ascent_ left,
eMBee left,
broquaint left,
cognominal left,
Alina-malina left,
mattp__ left,
Psyche^_ left,
mtj_ left,
IllvilJa left,
d^_^b left,
cxreg left,
Vlavv left,
dagurval_ left,
avar left,
clkaoud left
04:26
bonsaikitten left
05:16
salv0 joined,
sjn joined,
JimmyZ joined,
Pleiades` joined,
molaf joined,
telex joined,
klapperl_ joined,
xenoterracide joined,
Grimnir_ joined,
Celelibi joined,
jlaire joined,
larks joined,
logie_ joined,
segomos joined,
Bryanstein joined,
adu joined,
snarkyboojum joined,
anaeem1 joined,
obra_ joined,
simula67 joined,
sunnavy joined,
awwaiid joined,
felher joined,
gfldex joined,
ascent_ joined,
yakudza joined,
jdv79 joined,
renormalist joined,
hugme joined,
Timbus joined,
eiro joined,
breinbaas joined,
revdiablo joined,
Ulti joined,
lue joined,
Rounin joined,
rjbs joined,
apejens joined,
Woodi joined,
camelia joined,
frettled joined,
integral joined,
amkrankruleuen joined,
pdcawley joined,
FOAD joined,
nebuchadnezzar joined,
effbiai joined,
hitchcock.freenode.net sets mode: +vv hugme camelia,
Exodist joined,
slavik joined,
djanatyn joined,
mtk joined,
lizmat joined,
cooper joined,
araujo joined,
Juerd joined,
mathw_ joined,
cosimo_ joined,
brother joined,
ggoebel11119 joined,
rurban_ joined,
hummeleB1 joined,
PZt joined,
daxim_ joined,
risou joined,
itz joined,
clkao joined,
sorear joined,
flussence joined,
TimToady joined,
aindilis joined,
eternaleye joined,
DarthGandalf joined,
woolfy joined,
plobsing joined,
thou joined,
Gothmog_ joined,
sftp joined,
FROGGS joined,
simcop2387 joined,
clkaoud joined,
broquaint joined,
cognominal joined,
Alina-malina joined,
mattp__ joined,
Psyche^_ joined,
mtj_ joined,
IllvilJa joined,
d^_^b joined,
cxreg joined,
Vlavv joined,
dagurval_ joined,
avar joined,
kst joined,
pmichaud joined,
Maddingue joined,
felipe joined,
ingy joined,
moritz joined,
BooK joined,
rhr joined,
corecatcher joined,
BinGOs joined,
charsbar_______2 joined
05:18
BenGoldberg joined,
xragnar joined,
baest joined,
PerlJam joined,
bcode joined,
isacloud__ joined,
yogan joined,
timotimo joined,
pnu joined,
_sri joined,
Alula_ joined,
thilp joined,
prammer joined,
ggherdov joined,
jnthn joined,
sergot joined,
Khisanth joined,
ponbiki joined,
sivoais joined,
erdic joined,
pecastro_ joined,
dalek joined,
lee_ joined,
[particle] joined,
ldthien0 joined,
Bucciarati joined,
geekosaur joined,
mkz joined,
dylanwh joined,
tokuhirom joined,
hitchcock.freenode.net sets mode: +v dalek,
anaeem1 is now known as 14WACHE1C,
cotto joined,
anocelot joined,
masak joined,
xinming joined,
bjz joined,
Grrrr joined,
ribasushi joined,
jercos joined,
itz_ joined,
ilbot3 joined,
perigrin joined,
mls joined,
sjohnson joined,
nwc10 joined,
Yappo__________8 joined
05:21
14WACHE1C left
05:23
sivoais left
05:24
sivoais joined
05:27
xenoterracide left,
anaeem1 joined
05:30
cibs joined,
xfix joined,
mhasch joined,
go|dfish joined,
takesako____ joined,
yeltzooo joined,
synopsebot joined,
REPLeffect joined,
labster joined,
lestrrat joined,
arnsholt joined,
huf joined,
yoleaux joined,
Tene joined,
raydiak joined,
zamolxes joined,
bowtie joined,
hitchcock.freenode.net sets mode: +v yoleaux
05:31
xiaomiao joined
05:38
xiaomiao left,
xiaomiao joined
05:49
eMBee joined
05:50
Ven_ joined
05:54
ivan`` joined
06:03
rurban joined
06:08
rurban left
06:20
plobsing left
|
|||
masak | rule #1 of floating-point arithmetic: avoid floating-point arithmetic. | 06:48 | |
07:04
rurban joined
07:06
rurban1 joined,
darutoko joined
07:09
rurban left
07:11
rurban1 left
|
|||
adu | masak: lol | 07:13 | |
07:15
rurban joined
07:17
rurban left
07:18
xiaomiao is now known as Guest92459,
masak is now known as Guest34297,
sivoais left,
sivoais joined
07:19
rurban joined,
ClarusCogitatio joined
07:23
rurban left
07:30
erdic left,
erdic joined
07:33
naderghanbari joined
|
|||
naderghanbari | Hi all | 07:33 | |
Guest34297 | naderghanbari: hi! | 07:35 | |
07:35
Guest34297 is now known as masak,
Guest92459 left,
kurahaupo joined
07:37
xiaomiao joined
07:48
rurban joined
07:50
rurban1 joined
07:52
rurban left
07:54
rurban1 left
07:56
rindolf joined,
naderghanbari left
07:59
molaf_ joined
08:00
FROGGS left
08:02
molaf left
08:06
anaeem1 left
08:07
anaeem1 joined
08:10
Rotwang joined
08:15
hummeleB1 left
|
|||
adu | hi | 08:19 | |
masak | hi adu | 08:21 | |
adu | how goes? | ||
I'm having trouble building rakudo | 08:22 | ||
masak | building rakudo works fine here, thanks. | 08:24 | |
bbl | |||
xiaomiao | adu: what doesn't work? | ||
adu | pastie.org/9076678 | 08:25 | |
xiaomiao | segmentation fault? how rude | 08:26 | |
can you reproduce that? | |||
adu | I'm not sure, but nqp-[mpj] build fine | ||
xiaomiao: yes, every time | |||
xiaomiao | hmm, that's "nice" | ||
adu | but I'm trying to build perl6-[mpj] and that's not working so well | 08:27 | |
I could try to build each backend separate, to see if it's only one of them | |||
xiaomiao | what exactly segfaults? make ? | 08:29 | |
adu | i dunno | ||
it looks like ExtUtils::Command is the last to run | 08:30 | ||
xiaomiao | what platform are you on? linux? | 08:31 | |
adu | macosx | ||
10.9 | |||
xiaomiao | hmm, then I have to claim ignorance ;) | 08:33 | |
one of these platforms I have no idea how to debug | |||
08:38
tomaw joined
08:50
rurban joined
08:51
klapperl joined
08:53
klapperl_ left
08:55
rurban left
08:59
SamuraiJack__ joined
09:02
BenGoldberg left
09:18
xfix left,
synopsebot left,
yeltzooo left,
takesako____ left,
go|dfish left,
mhasch left,
cibs left,
REPLeffect left,
labster left,
lestrrat left,
arnsholt left,
huf left,
Tene left,
yoleaux left,
raydiak left,
zamolxes left,
bowtie left
09:19
cibs joined,
xfix joined,
mhasch joined,
go|dfish joined,
takesako____ joined,
yeltzooo joined,
synopsebot joined,
REPLeffect joined,
labster joined,
lestrrat joined,
arnsholt joined,
huf joined,
yoleaux joined,
Tene joined,
raydiak joined,
zamolxes joined,
bowtie joined,
hitchcock.freenode.net sets mode: +v yoleaux
09:40
klapperl_ joined
09:41
spider-mario joined
09:42
klapperl left
09:43
vendethiel joined
09:50
adu left
09:51
rurban joined
09:54
Rotwang left
09:56
rurban left
10:12
snarkyboojum left
10:17
SamuraiJack__ left
10:33
dmol joined
10:35
rurban joined
10:39
rurban left
10:45
bjz_ joined
10:48
bjz left
10:50
FROGGS[mobile] joined
11:02
anaeem1 left,
anaeem1 joined
11:12
kaare_ joined
11:16
anaeem1 left
11:22
vendethiel left,
anaeem1_ joined
11:25
vendethiel joined
|
|||
itz_ | I'm getting a MoarVM link error on NetBSD linking moar | 11:26 | |
./libmoar.so: undefined reference to `pthread_yield' | |||
I think that should be sched_yield on that platform | 11:27 | ||
jnthn wonders if that's a Moar or libuv thing. | 11:29 | ||
tadzik | seems like libuv's fault | ||
lizmat | wow: Files=801, Tests=31026, 173 wallclock secs ( 7.89 usr 3.52 sys + 1148.80 cusr 78.54 csys = 1238.75 CPU) | ||
itz_ | I think it's not linking a fixes file under libuv | ||
jnthn | ah | ||
lizmat | below 3 minutes! | ||
jnthn | No, it's ours I think... | ||
itz_: It may be that also | 11:30 | ||
itz_: But see src/platform/threads.h | |||
itz_: There's a #elif on line 3 that likely wants a netbsd or other appropriate entry too | 11:31 | ||
itz_ | ok I see | 11:32 | |
jnthn | lizmat: Latest Moar exits faster, so I suspect we got the win from there. :) | ||
lizmat | aha... ok :-) | ||
11:32
rindolf left,
spider-mario left,
spider-mario joined
|
|||
jnthn | lizmat: Still, nice you can do it in under 3 mins :) | 11:33 | |
lizmat | indeed :-) | 11:34 | |
although CPU usage has also dropped | |||
jnthn | Good for your battery? :) | 11:35 | |
lizmat | yesterday: 1317.74, now 1238.75 | ||
11:35
kurahaupo left
|
|||
itz_ | adding defined(__NetBSD__) to that line fixes it .. will run tests too | 11:35 | |
jnthn | Well, we're doing a lot less work at exit | ||
11:36
rurban joined
|
|||
jnthn | So that's probably why it's down :) | 11:36 | |
lizmat | and that's just way cool | ||
jnthn | The same work landed a fix for the "abort at exit" issue some threaded things ran into | 11:37 | |
m: Thread.start({ sleep 1; say 'kthxbai' }); say 'oh hai'; | |||
camelia | rakudo-moar 25c75c: OUTPUT«oh haikthxbai» | ||
jnthn | That also now works | ||
m: Thread.start({ sleep 1; say 'kthxbai' }, :app_lifetime); say 'oh hai'; | |||
camelia | rakudo-moar 25c75c: OUTPUT«oh hai» | ||
jnthn | And that. :) | ||
lizmat | cool cool cool! | ||
11:40
rurban left
|
|||
tadzik | took 6 minutes here, but failed some tests :( | 11:47 | |
11:47
G-one joined
|
|||
tadzik | gist.github.com/tadzik/10580661 | 11:47 | |
damn, I remember when it was close to an hour :D | |||
11:50
colomon joined
|
|||
lizmat | tadzik: same here | 11:51 | |
timotimo | o/ | 11:52 | |
lizmat | concurrency/lock is mine, I guess I will fudge / remove them | ||
main-usage I have no idea | |||
phasers/first apparently only happens on OSX | |||
tadzik | only happens positively? :) | ||
lizmat | not been able to golf it yet | ||
jnthn | I'm...thinking tadzik ain't on OSX? | ||
tadzik | nope | ||
lizmat | then it *can* be reproduced elsewhere | 11:53 | |
tadzik | :) | ||
jnthn | lizmat: And it was only failing sometimes, yes? | ||
tadzik | happy to help | ||
lizmat | it seems to fail more often now | ||
tadzik | when I run that individual test, it consistently passes | ||
lizmat | indeed, it only fails if part of a parallel spectest | ||
so it appears to be CPU load-related | |||
which is strange for a non-threaded feature | 11:54 | ||
jnthn | lizmat: nwc10++ gave me an ASAN backtrace and mentioned some things are giving those in spectest. | 11:55 | |
lizmat: I didn't managed to figure it out yet, but memory randomization is enough if we're reading stuff we shouldn't be. | |||
lizmat | ok | 11:56 | |
jnthn | Sadly, MSVC's heap analysis doesn't trigger it. | 11:57 | |
11:59
anaeem1__ joined
12:02
anaeem1_ left
|
|||
dalek | ar: de33c20 | jnthn++ | / (2 files): Switch over to FROGGS MIME::Base64 module. Has fixes for running on Moar/JVM. |
12:05 | |
tadzik | uh, Digest::MD5 :) | 12:11 | |
dalek | ar: e0657f2 | jnthn++ | modules/ (3 files): Bump various modules. With this, we can now build a Rakudo Star that passes module tests on MoarVM. |
12:12 | |
timotimo | ooooh yay :) | ||
jnthn | Oh!! | ||
tadzik: yeah...what was I thinking :) | |||
tadzik | aww yiss | ||
timotimo | then you can get even more optimizations into the star before it lands :D | ||
jnthn | Well, or we may want to look at the state of r-j :) | 12:13 | |
In Star. | |||
timotimo | oh, of course | ||
so, what's our stance on 32bit moarvm? | |||
jnthn | But this does mean we can at least have a distar. :) | ||
timotimo: 32-bit on what arch? | |||
timotimo | linux, intel | ||
12:13
denis_boyun joined
|
|||
jnthn | timotimo: I'd hope it'd work out on x86. | 12:13 | |
Yeah, shoudl work. If not, wants but hunging | |||
... | 12:14 | ||
bug hunting | |||
timotimo | someone on reddit pointed out that x86 gives trouble with NativeCall | ||
12:14
G-one left
|
|||
timotimo | the array tests are like "hey, you wanted a 5, but this is a 324985724309857, what gives?" | 12:14 | |
so kinda looks like two pieces of the puzzle have a different opinion on what an int is? | |||
jnthn | Ah, it's probably "long"... | 12:15 | |
Guess I'll need to try and get myself a 32-bit VM | |||
Oh, I may have one on my laptop... | |||
And I'm heading away from home soon anyway for teaching trip. So will look on that while I'm away. | |||
dalek | kudo/nom: 80171d8 | (Elizabeth Mattijsen)++ | docs/ChangeLog: Some Changelog additions |
12:16 | |
lizmat just spectested the 2014.03 release: 220 wallclock (vs 173 now), 1589.9 CPU versus 1238.75 now. | 12:22 | ||
We've come a long way in this month! | |||
jnthn | Well, especially if you remember that 2014.03 wasn't running the threads tests, or unival tests... :) | 12:23 | |
Anyway, yeah, productive month :) | 12:24 | ||
moritz | and it's not over yet :-) | 12:26 | |
though I notice that release day is early this month | |||
(on 17th, that is, this week; because 1st was a Tue) | 12:27 | ||
jnthn | I don't think we'll do anything too risky opt wise ahead of release. | ||
I've decided I'm going to focus on async stuff in the next week: getting timers working on Moar, then adding I/O event notification supplies and async socket I/O. | 12:28 | ||
(Not saying I'll manage it all in a week. otoh, stranger things have happened...) | |||
I should actually have some non-"oh look a contrived demo" things to show off related to reactive programming in Perl 6 for my nlpw talk... :) | 12:29 | ||
timotimo | when is that? | 12:30 | |
jnthn | Later this month... | ||
Couple of weeks or so. | |||
timotimo | and that'll be on HEAD? | ||
jnthn | yeah :) | ||
Well | |||
All my live demos ever done on Rakudo I think have run on HEAD | 12:31 | ||
timotimo | sounds wise | ||
jnthn | Well, no, it's dangerous, you never know what mighta sneaked in :P | ||
timotimo | well ... yeah | ||
that's why you write out your presentation in the form of tests before you do it :) | |||
jnthn | But generally things work out fine. We don't do too badly at keeping HEAD working well. | 12:32 | |
timotimo | aye | ||
masak | release day is on Thursday, by masak, jetlagged. :> | 12:34 | |
jnthn | ahaha | ||
That was some clever planning :P | |||
masak | :> | ||
clever or not, it *was* planning. | |||
12:36
rurban joined
12:40
klapperl_ left
12:41
rurban left,
zakharyas joined
12:42
denis_boyun left,
klapperl joined
|
|||
FROGGS[mobile] | that is compiler release day, right? | 12:46 | |
timotimo | are we going to bump parrot revision this month? | 12:47 | |
there was some performance improvements this month, no? | |||
FROGGS[mobile] | because I will have no time on monday and tuesday to fix things for r-j* | ||
jnthn | timotimo: Are there things there to make it worth it, and are we willing to do the testing? | ||
timotimo | did it get the environment fix? | ||
environment for qx? | |||
jnthn | That'd sound worth bumping for. | ||
12:48
xenoterracide joined
|
|||
FROGGS[mobile] | timotimo: no | 12:48 | |
timotimo | i think so. though the project i wanted it for is now fine to run on moar, so ... :P | ||
FROGGS[mobile] | there was just an issue, not working parrot and rakudo code and a discussion | ||
timotimo | who tried to fix it? it was rurban_, wasn't it? | 12:49 | |
FROGGS[mobile] | yes | ||
timotimo | and then pmichaud voted against the inclusion of more parrot-specific code to the core setting | ||
vetod* | |||
12:49
klapperl_ joined
|
|||
FROGGS[mobile] | yes, because it was the wrong approach | 12:49 | |
timotimo | aye | ||
jnthn | Ah, I recall now. I think there were multiple issues with that fix... | 12:50 | |
timotimo | nobody, not even me, came up with a proper fix yet, though | ||
jnthn | "use moar"? :P | ||
FROGGS[mobile] | *g* | ||
timotimo | yeah, i've been doing that for now | ||
nwc10 | it's not actually a state secret | ||
rn: class A{}; A::boom(:foo) | |||
camelia | rakudo-parrot 25c75c: OUTPUT«Could not find symbol '&boom' in method <anon> at gen/parrot/CORE.setting:12574 in any at gen/parrot/Metamodel.nqp:2710 in any find_method_fallback at gen/parrot/Metamodel.nqp:2698 in any find_method at gen/parrot/Metamodel.nqp:949 i…» | 12:51 | |
..niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in type Any at /tmp/tmpfile line 1 (mainline @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 4595 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4596 (module-CO…» | |||
..rakudo-jvm 25c75c: OUTPUT«Could not find symbol '&boom' in method <anon> at gen/jvm/CORE.setting:12553 in any at gen/jvm/Metamodel.nqp:2627 in any find_method_fallback at gen/jvm/Metamodel.nqp:2626 in any find_method at gen/jvm/Metamodel.nqp:948 in any at gen/j…» | |||
12:51
klapperl left
|
|||
camelia | ..rakudo-moar 25c75c: OUTPUT«===SORRY!===Could not find symbol '&boom'» | 12:51 | |
nwc10 | that's a read 1 beyond a malloc'd area, as reported by valgrind and ASAN on MoarVM | ||
yes, it's a Perl 6 runtime error | |||
masak | nwc10: looks fine above, though. | 12:52 | |
timotimo | well, you could be doing it in an eval, so that could still be problematic | ||
jnthn | nwc10: It goes away if MVM_SPESH_DISABLE=1 is set in the env? | ||
nwc10 | masak: run it under valgrind | ||
jnthn | nwc10: Or still there? | ||
That'll give a sizable clue... | |||
nwc10 | same error with MVM_SPESH_DISABLE=1 | ||
jnthn | ok, I didn't think it was gonna be that... | 12:53 | |
timotimo | doesn't valgrind also give you a stack trace for the wrong read? | ||
nwc10 | timotimo: yes. Here's one from ASAN: paste.scsys.co.uk/346819 | ||
it's trying to copy subroutine argument flags | |||
jnthn | nwc10: paste.scsys.co.uk/346819 | ||
oops, too slow :) | |||
nwc10 | arg_count is one more than it should be | ||
it is not clear how that happens | |||
jnthn | arg_count = 3, num_pos = 1, | 12:54 | |
That implies a positional and a named | 12:55 | ||
dalek | kudo/nom: f9c9487 | (Elizabeth Mattijsen)++ | src/core/Bag (2 files): Introduce direct .min/.max on Bags/BagHashes Actually inspired by a code example of TheDamian that looked hacky, since one of the more common uses of Bags/BagHashes are to find out the frequence of things, and hence you probably want to know the lowest/highest frequency quite often as well. |
||
nwc10 | the stacktrace is for something like | ||
m: class TestA { }; TestA::frobnosticate(3, :foo) | 12:56 | ||
camelia | rakudo-moar 25c75c: OUTPUT«===SORRY!===Could not find symbol '&frobnosticate'» | ||
jnthn | Yeah. That'd be a call with a positional and a named. | ||
nwc10 | it seems that it's only the named that matters | ||
timotimo | some part of the thing isn't noticing that the sub doesn't exist? :) | ||
jnthn | Well, what's also to note is that it's in the tweak_cs codepath. | 12:57 | |
timotimo | the callsite stuff has a potential source of confusion where the amount of flags is one less per named than the arg count | ||
clkao | w/win 7 | 12:58 | |
nwc10 | x | ||
:-) | |||
jnthn | yeah, and I think that's exactly what's happening | 13:00 | |
MVM_args_proc_to_callsite does the calc correctly. | 13:01 | ||
find_invokee_internal does it wrong | 13:02 | ||
nwc10: gist.github.com/jnthn/10583405 | 13:06 | ||
nwc10: That's to try, though not for applying; I'm going to factor the calc out into one place. | |||
nwc10: Actually, I can't; the two places are calc'ing on values from different types. | 13:20 | ||
nwc10: So if that patch helps I think it goes in :) | |||
dalek | kudo/nom: 4f3553d | (Elizabeth Mattijsen)++ | src/core/Set (2 files): Add .min/.max to Sets/SetHashes for consistency |
13:24 | |
kudo/nom: 3ba878f | (Elizabeth Mattijsen)++ | src/core/Mix (2 files): Add .min/.max to Mixes/MixHashes for consistency |
|||
13:24
rindolf joined
13:25
raiph joined
|
|||
moritz | m-spectest summary (2 test failures): perlpunks.de/paste/show/534a9046.1568.2cb | 13:25 | |
dalek | rl6-roast-data: 73c7e3e | coke++ | / (6 files): today (automated commit) |
13:26 | |
lizmat | moritz: again, the concurrency/lock.t, I have tests 6 or 8 fail, randomly | 13:30 | |
unfamiliar with S29-os/system: that's a new one to me | |||
moritz | same here | ||
it's fixed by 'make install' | 13:31 | ||
Unhandled exception: Missing or wrong version of dependency 'gen/moar/stage2/QRegex.nqp' at <unknown>:1 (/home/moritz/p6/rakudo/install/languages/perl6/runtime/perl6.moarvm::295) | 13:32 | ||
not ok 1 - run() to an existing program does not die (and returns something true) | |||
13:32
crazedpsyc joined
|
|||
moritz | seems that something prefers the installed libs over the local ones | 13:32 | |
13:32
guru joined
|
|||
lizmat | ah, I always do "make install" before "make spectest" | 13:32 | |
13:33
guru is now known as Guest93467,
Guest93467 is now known as ajr_
|
|||
FROGGS[mobile] | moritz: I merged a PR about the order of home and site or so | 13:33 | |
moritz | FROGGS[mobile]: I have no ~/.perl6/, so home shouldn't matter | 13:35 | |
jnthn | I've got a new failure in t\spec\S05-substitution\subst.rakudo.moar | 13:36 | |
moritz runs p-spectest now, and is amazed how long it takes (compared to m-spectest) :_) | 13:37 | ||
dalek | kudo/nom: fe27557 | (Elizabeth Mattijsen)++ | t/spectest.data: Add advent2012 tests that were sitting in roast |
13:38 | |
jnthn | nwc10: I gotta go catch a train soon, so pushed the patch anyway. Fairly sure it'll help. | ||
13:38
rurban joined
13:43
rurban left
13:44
telex left
13:46
telex joined
|
|||
vendethiel | r: class A { method ary { <a b c> } handles push; }; my $a = A.new; $a.push 1; say $a.ary; | 13:47 | |
camelia | rakudo-jvm f9c948: OUTPUT«(timeout)» | ||
..rakudo-parrot f9c948, rakudo-moar f9c948: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileTwo terms in a rowat /tmp/tmpfile:1------> class A { method ary { <a b c> } ⏏handles push; }; my $a = A.new; $a.push  expecting any o…» | |||
vendethiel | fair enough | ||
lizmat | r: class A { method ary { <a b c> } handles push; }; my $a = A.new; $a.push: 1; say $a.ary; | 13:48 | |
camelia | rakudo-parrot f9c948, rakudo-jvm f9c948, rakudo-moar f9c948: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileTwo terms in a rowat /tmp/tmpfile:1------> class A { method ary { <a b c> } ⏏handles push; }; my $a = A.new; $a.push:…» | ||
vendethiel | look at the error message :). The two terms is `} handles` | ||
lizmat | :-) | ||
vendethiel | not related to `.push` vs `.push:` | 13:49 | |
lizmat | well, that was wrong too: | ||
r: my @a; @a.push 1 | |||
camelia | rakudo-parrot f9c948, rakudo-jvm f9c948, rakudo-moar f9c948: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileTwo terms in a rowat /tmp/tmpfile:1------> my @a; @a.push ⏏1 expecting any of: method arguments …» | ||
lizmat | you need the : there or parens | ||
14:01
SamuraiJack__ joined
|
|||
jnthn | commute & | 14:01 | |
dalek | kudo/nom: dca5394 | (Elizabeth Mattijsen)++ | src/core/ (4 files): Inf/-Inf are not Int's but Num's |
14:02 | |
masak | 'night, #perl6 | 14:03 | |
14:04
pippo joined
14:05
jtpalmer joined
|
|||
masak | lizmat: why do .min and .max on a Set return a Num? isn't the type of Set elements more or less arbitrary? (including non-orderable things) | 14:05 | |
14:07
Alina-malina left
14:08
Alina-malina joined
|
|||
lizmat | an empty set returns Inf on .min | 14:08 | |
to be consistent | |||
and -Inf on .max | |||
the *number* of elements is always an integer | 14:09 | ||
moritz | shouldn't the return value be Real then? | ||
lizmat | in Sets, they can only be 1 | ||
moritz | then it can be Int or +-Inf | ||
lizmat | well, the error I git was: Type check failed in assignment to '$!min'; expected 'Int' but got 'Num' | ||
so I made it a Num | |||
masak | right, something is weird. Int !~~ Num. | ||
lizmat | *got | 14:10 | |
masak | so any non-infinite return value will not be a Num, but an Int. | ||
r: say Int ~~ Num | |||
camelia | rakudo-parrot f9c948, rakudo-jvm f9c948, rakudo-moar f9c948: OUTPUT«False» | ||
lizmat | hmmm.... | 14:11 | |
masak | 'sides, I'm pretty sure that the spec still is of the opinion that Inf *is* an Int. as well as a Num. and a Str, when it feels so inclined. | ||
now, I'm not saying that that's sane. but that's what it says currently. | |||
food for thought :) really 'night | 14:12 | ||
14:13
nebuchadnezzar is now known as nebu,
nebu is now known as nebuchadnezzar
|
|||
dalek | kudo/nom: 2a30681 | (Elizabeth Mattijsen)++ | src/core/ (4 files): We need Real to support Inf/-Inf right now |
14:16 | |
14:19
Rotwang joined
14:28
Sptsh joined
|
|||
Sptsh | Hello! | 14:28 | |
Say me pls, Learn perl6 as my first programing language is good idea? | 14:29 | ||
14:32
rurban joined
|
|||
jnthn | lizmat: Yes, Real seems like a righter choice there. | 14:34 | |
Sptsh: Probably not as a first one. Not because of the language, but because of a lack of good introductory-level material for new programmers. | |||
Sptsh | introductory-level material of? | 14:36 | |
pippo | m: say (a => 1.1, b => 2.2).MixHash (+) (a => 0.5).MixHash; | 14:38 | |
camelia | rakudo-moar f9c948: OUTPUT«bag(a, b(2))» | ||
pippo | ^^ why convert to bag? | 14:39 | |
jnthn | Sptsh: There's things to read if you're a Perl 5 programmer coming to Perl 6. There's things to read if you're coming to Perl 6 with knowledge of other languages. There's not really tutorials for those coming to Perl 6 who never programmed before. | ||
14:42
spider-mario left
|
|||
lizmat | pippo: that looks like a bug to me | 14:43 | |
cognominal | Sptsh, I agree with jnthn++. On the other hand, it provides an interactive shell to play with. That's a good way to learn small scale parts of the language. | ||
dalek | kudo/nom: 36e316d | (Elizabeth Mattijsen)++ | src/core/Set.pm: Fix two Num stragglers to Real |
14:45 | |
jnthn | cognominal: btw, it seems I may make the French Perl workshop after all this year... | ||
pippo | m: say (a => 1.1, b => 2.2).MixHash (|) (a => 0.5).MixHash; | 14:46 | |
camelia | rakudo-moar dca539: OUTPUT«bag(a, b(2))» | ||
pippo | lizmat: also to me :-) | 14:48 | |
cognominal | jnthn, you are welcome. Please submit talk proposals so we can advertise them soon enough. This suggestion goes for other people who want to talk about Perl 6. | ||
lizmat | pippo: must check spec first | ||
14:49
Sptsh left
|
|||
cognominal | I hope I can go too but my parents are often in hospitals these days and I may have to take care of them. | 14:49 | |
vendethiel | jnthn: where'd it be :-) ? | 14:51 | |
lizmat++: spacing in 36e316d9c0 seems off ? | |||
jnthn | vendethiel: The FPW? Thinks it's in a nice modern building of an ugly suburb of Paris, iirc :) | 14:52 | |
vendethiel | jnthn: I'll watch out then :) | 14:53 | |
lizmat | jnthn: the ugliness is mostly gone now, with even | 14:54 | |
a tram now stopping in front of the place | |||
jnthn | oh wow :) | ||
lizmat considers trams/trollies a sign of civilisation | |||
jnthn | I was gonna be going to the conf in Kiev instead. | ||
But it got moved to Russia. | |||
lizmat | indeed | ||
.oO( well, how things are going now, Kiev might be Russia anyway by the time of the Perl Mova) |
14:55 | ||
*sigh* | |||
jnthn | Let's hope not. :/ | 14:56 | |
vendethiel | r: class A { has Real$!max; } | ||
jnthn | Russia is quite big enough already, thanks. | ||
camelia | rakudo-jvm dca539: OUTPUT«(timeout)» | ||
( no output ) | |||
jnthn | I know 'cus I took the train end to end :P | ||
vendethiel just thinks it reads poorly | 14:57 | ||
jnthn | vendethiel: Yes, well, don't write it then :P | ||
vendethiel | jnthn: github.com/rakudo/rakudo/pull/256 | ||
this isn't a IHDWDDIT | 14:58 | ||
DIHWIDT* | 14:59 | ||
dalek | kudo/nom: 2837807 | Nami-Doc++ | src/core/Set.pm: Fix spacing |
||
kudo/nom: 7d2e554 | jonathan++ | src/core/Set.pm: Merge pull request #256 from Nami-Doc/patch-1 Fix spacing |
|||
jnthn | yeah, it's just unpretty :) | ||
15:00
hoelzro joined
|
|||
lizmat | hehe. almost simultaneous fix, vendethiel++ | 15:02 | |
dalek | ast: 02346c6 | (Elizabeth Mattijsen)++ | S02-types/ (6 files): Add tests for .min/.max on (Set|Bag|Mix)Hash |
15:04 | |
15:05
Rotwang left
|
|||
jnthn | vendethiel: journeesperl.fr/fpw2014/ | 15:06 | |
15:06
FROGGS joined
|
|||
vendethiel | and it's free ! | 15:07 | |
thanks jnthn :-) | 15:08 | ||
jnthn | I may only be able to make the Fridya evening/Saturday. | 15:13 | |
15:14
raiph left
|
|||
cognominal | jnthn, that would be great | 15:15 | |
jnthn | (My schedule currently suggest I have an evening lecture to do on Thursday in Sweden) | 15:17 | |
FROGGS | o/ from my couch! | ||
jnthn | FROGGS: o/ :) | ||
FROGGS | :o) | 15:18 | |
jnthn is on a train with FREE CAKE | |||
cognominal | jnthn, that's not a very nice part of Paris. But at last, most of the construction work is finished. Because of that, one year ago, going out of the subway, I thought first I was in the wrong place. | ||
jnthn | cognominal: Yes, it was under construction last time I was there. :) | ||
cognominal: Venue has always been a nice place, though. | |||
cognominal | yes, and it is free!! | ||
now, there is fablab there too. | 15:19 | ||
dalek | ecs: 9213b13 | (Elizabeth Mattijsen)++ | S32-setting-library/Containers.pod: Spec .min/.max on Bags |
15:20 | |
cognominal | lizmat, I hope you will come too to fpw and propose Perl 6 talks or do you have other engagements? | 15:22 | |
lizmat | we'll probably make it to FPW this year | 15:24 | |
but are not sure yet | |||
15:24
colomon left
|
|||
lizmat | as soon as we are, we will register and I will propose "How The Camel Is De-Cocooning" as a presentation | 15:24 | |
15:28
colomon joined,
zakharyas left
15:32
ajr_ left
|
|||
cognominal | With all the IO stuff going on, that could be "Perl 6 not autist anymore" | 15:33 | |
vendethiel | website says "[...] in bold (they paid their ticket or will be doing a presentation)" (?) | ||
15:34
guru joined,
guru is now known as Guest10100,
Guest10100 is now known as ajr_
|
|||
lizmat | some presenters insist on paying their ticket :-) | 15:35 | |
one of the few things that Damian discussed in Zürich and which didn't work (yet), was "is cached" | 15:38 | ||
cognominal | speaking of moving to Russia, that may happen to a forthcoming conference in Kiev. :( | ||
moritz | nr: try { say $_ } given 2 | ||
lizmat | cognominal: if you're referring to Mova, that *is* already moved, afak | ||
camelia | rakudo-jvm 7d2e55: OUTPUT«(timeout)» | 15:39 | |
..rakudo-parrot 7d2e55, niecza v24-109-g48a8de3: OUTPUT«2» | |||
..rakudo-moar 7d2e55: OUTPUT«Nil» | |||
lizmat | oops, that feels wrong | ||
moritz | RT 111704 | ||
passing TODO on p-spectest | |||
lizmat | r: given 2 { try { .say } } | 15:40 | |
camelia | rakudo-parrot 7d2e55, rakudo-jvm 7d2e55, rakudo-moar 7d2e55: OUTPUT«2» | ||
lizmat | seems only postfix given is affected | ||
jnthn | Ah, it's one of those broken thunk things I'll get. | ||
*bet | |||
cognominal | vendethiel, where in the site to you see a mention of paying? this is probably boilerplate from the ACT software that handles the conference. | ||
vendethiel | cognominal: journeesperl.fr/fpw2014/search | 15:41 | |
15:41
rurban left
|
|||
lizmat | cognominal: a free conference is where one has automatically paid when registered ? | 15:41 | |
dalek | ast: 64d2ee6 | moritz++ | S04-statements/try.t: refudge test for rakudo passes on parrot, so only needs TODOing on JVM and Moar |
15:42 | |
ast: 627aae5 | moritz++ | / (2 files): remove some outdated rakudo.parrot fudges |
15:46 | ||
kudo/nom: 3e1f329 | moritz++ | t/spectest.data: advent2013-day19.t is a concurrency test |
15:47 | ||
lizmat | moritz++ | 15:48 | |
moritz tries to get clean {m,p} spectest runs for the release | 15:49 | ||
FROGGS | moritz++ | 15:52 | |
cognominal | vendethiel, lizmat, fpw is free, even more though for people who do talks | 15:54 | |
vendethiel | cognominal, I'm registered :). Glad it's free, else I wouldn't be able to attend it | ||
cognominal | s/though/so/ | 15:55 | |
dalek | ast: caeebea | (Elizabeth Mattijsen)++ | S17-concurrency/lock.t: Fudge Thread stress test for now |
15:57 | |
lizmat | r: my $r = sub ($x) {}; say $r.signature.returns | 16:12 | |
camelia | rakudo-parrot 7d2e55, rakudo-jvm 7d2e55, rakudo-moar 7d2e55: OUTPUT«(Mu)» | ||
lizmat | shouldn't that be (Any) ? | ||
moritz | lizmat: no | 16:13 | |
lizmat: that'd mean you can't return junctions without explicit declaration | |||
lizmat | ah, ok I guess :-) | 16:14 | |
jnthn | yeah, Mu is right by spec, afaik | ||
lizmat | I'm trying to implement a production grade "is cached" :-) | 16:15 | |
I guess what I need is a .WHICH on the signature | 16:16 | ||
to be used as a key in the hash | |||
moritz | t/spec/S02-types/mixhash.rakudo.jvm .......................... Failed 1/199 subtests (less 26 skipped subtests: 172 okay) | ||
lizmat | am I on the right path here? | ||
moritz | why on the signature? | ||
vendethiel | moritz: shouldn't that "less" be "minus" ? | ||
moritz | vendethiel: where? | 16:17 | |
vendethiel | "less 26 skipped" | ||
lizmat | well, because that's where the parameters live ? | ||
moritz | lizmat: I still don't see why you need it | 16:18 | |
jnthn | lizmat: On the capture surely? | ||
lizmat | duh | ||
moritz | lizmat: you need to cache per routine and capture | ||
lizmat | that's what I meant :-) | ||
jnthn | It's the arguments you want to cache on, rather than the parameters :) | 16:19 | |
Anyway, yes, a Capture.WHICH sounds like a sane approac. | |||
*approach | |||
lizmat | parameters / arguments , what's the difference :-) | ||
moritz | property / debt, what's the difference :-) | 16:20 | |
jnthn | callee / caller, what's the difference :-) | ||
moritz | ugh, the j-spectest takes 2.5GB RAM | ||
(single process) | 16:21 | ||
16:21
thilp left
|
|||
lizmat | r: my $r = sub ($x) { say $r.Capture.perl }; $r("foo") # interesting | 16:22 | |
camelia | rakudo-jvm 7d2e55: OUTPUT«java.lang.NullPointerException in method list at gen/jvm/CORE.setting:6905 in method perl at gen/jvm/CORE.setting:6973 in sub at /tmp/tmpfile:1 in block at /tmp/tmpfile:1» | ||
..rakudo-parrot 7d2e55: OUTPUT«Null PMC access in clone() in method list at gen/parrot/CORE.setting:6909 in method perl at gen/parrot/CORE.setting:6977 in method perl at gen/parrot/CORE.setting:1060 in sub at /tmp/tmpfile:1 in block at /tmp/tmpfile:1» | |||
..rakudo-moar 7d2e55: OUTPUT«(signal )» | |||
vendethiel | r: say $*DIR; say $*EXECUTABLE; | 16:23 | |
camelia | rakudo-jvm 7d2e55: OUTPUT«Dynamic variable $*DIR not found in method gist at gen/jvm/CORE.setting:12548 in sub say at gen/jvm/CORE.setting:13461 in block at /tmp/tmpfile:1» | ||
..rakudo-moar 7d2e55: OUTPUT«===SORRY!===Dynamic variable $*DIR not found» | |||
..rakudo-parrot 7d2e55: OUTPUT«Dynamic variable $*DIR not found in method gist at gen/parrot/CORE.setting:12569 in method gist at gen/parrot/CORE.setting:1056 in sub say at gen/parrot/CORE.setting:13503 in block at /tmp/tmpfile:1» | |||
moritz | well, coercing a routine to a routine a Capture doesn't make much sense | ||
FROGGS | r: say $*CWD; say $*EXECUTABLE; | ||
camelia | rakudo-jvm 7d2e55: OUTPUT«IO::Path</home/p6eval_eval>IO::Path</home/p6eval/rakudo-inst-1/bin/perl6-j>» | 16:24 | |
..rakudo-parrot 7d2e55: OUTPUT«IO::Path</home/p6eval>IO::Path</home/p6eval/rakudo-inst/bin/perl6-p>» | |||
..rakudo-moar 7d2e55: OUTPUT«IO::Path</home/p6eval>IO::Path</home/p6eval/rakudo-inst-1/bin/perl6-m>» | |||
vendethiel | m: say $*CWD.Str; | ||
camelia | rakudo-moar 7d2e55: OUTPUT«/home/p6eval» | ||
16:24
thilp joined
|
|||
vendethiel | r: say "a\nb".lines; | 16:25 | |
camelia | rakudo-parrot 7d2e55, rakudo-jvm 7d2e55, rakudo-moar 7d2e55: OUTPUT«a b» | ||
vendethiel | r: say "a\nb".lines.perl; say "a\r\nb".lines.perl; | ||
camelia | rakudo-parrot 7d2e55, rakudo-jvm 7d2e55, rakudo-moar 7d2e55: OUTPUT«("a", "b").list("a\r", "b").list» | ||
vendethiel | r: say "a\nb".lines.perl; say "a\r\nb".subst("\r" -> "").lines.perl; | 16:26 | |
camelia | rakudo-parrot 7d2e55, rakudo-jvm 7d2e55, rakudo-moar 7d2e55: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUnable to parse expression in argument list; couldn't find final ')' at /tmp/tmpfile:1------> nb".lines.perl; say "a\r\nb".subst("\r" […» | ||
vendethiel | r: say "a\nb".lines.perl; say "a\r\nb".subst("\r" => "").lines.perl; | ||
camelia | rakudo-moar 7d2e55: OUTPUT«("a", "b").listCannot call 'subst'; none of these signatures match::(Cool: Any $matcher, Any $replacement, *%adverbs):(Str: Any $matcher, Any $replacement, Any :ii(:samecase($samecase)), Any :ss(:samespace($samespace)), Any :SET_CALLER_DOLLAR_SLAS…» | ||
..rakudo-parrot 7d2e55: OUTPUT«("a", "b").listCannot call 'subst'; none of these signatures match::(Cool: Any $matcher, Any $replacement, *%adverbs):(Str: Any $matcher, Any $replacement, Any :ii(:samecase($samecase)), Any :ss(:samespace($samespace)), Any :SET_CALLER_DOLLAR_SL…» | |||
..rakudo-jvm 7d2e55: OUTPUT«("a", "b").listCannot call 'subst'; none of these signatures match::(Cool: Any $matcher, Any $replacement, *%adverbs):(Str: Any $matcher, Any $replacement, Any :ii(:samecase($samecase)), Any :ss(:samespace($samespace)), Any :SET_CALLER_DOLLAR_SLASH…» | |||
lizmat | r: sub foo ($x) { say &?ROUTINE.Capture.list }; foo("bar") # moritz: should this work then? | ||
camelia | rakudo-parrot 7d2e55: OUTPUT«Null PMC access in clone() in method list at gen/parrot/CORE.setting:6909 in sub foo at /tmp/tmpfile:1 in block at /tmp/tmpfile:1» | ||
..rakudo-jvm 7d2e55: OUTPUT«java.lang.NullPointerException in method list at gen/jvm/CORE.setting:6905 in sub foo at /tmp/tmpfile:1 in block at /tmp/tmpfile:1» | |||
..rakudo-moar 7d2e55: OUTPUT«(signal )» | |||
moritz | lizmat: no | ||
lizmat | so how would I get at the values in the capture then? | 16:27 | |
moritz | lizmat: there's an nqp:: op for getting the arglist as capture | ||
jnthn | lizmat: |c in the parameter list. | ||
The capture is *about the current invocation*. | 16:28 | ||
moritz | that would have been my second suggestion | ||
jnthn | Not something static about the routine. | ||
moritz | m: sub f(|c) { say c.^name }; f 2 | ||
camelia | rakudo-moar 7d2e55: OUTPUT«Capture» | ||
moritz | lizmat: ^^ | ||
lizmat | but I need the current invocation to create a .WHICH from, to be used as a key? | ||
moritz | m: sub f(|c) { say c.WHICH }; f 2 | ||
camelia | rakudo-moar 7d2e55: OUTPUT«Capture|139644193353720» | ||
moritz | I'm just afraid you have to patch Capture.WHICH to be something more useful | 16:29 | |
lizmat | but that WHICH is just an type/address of the capture and not value based | ||
moritz | aye, that's what you have to change first | ||
lizmat | indeed, and that's what I'm trying to do | ||
jnthn | lizmat: Yes, that's what needs changing. | ||
moritz | Capture acts as a value type | ||
jnthn | Yes, but you do it by looking at $!list and $!hash inside of the Capture. | ||
lizmat | ok | ||
moritz | lizmat: just write a multi method WHICH (for :D invocant) in class Capture | ||
lizmat | yup, that far I was conceptually | 16:30 | |
now to turn the ... into something useful :-) | |||
jnthn | To a first approximation, just taking the WHICH of each of the things in list and hash togehter with the names for the hashes is the key | ||
moritz | and of course sort the hash keys | ||
lizmat | yup, similar to Set.WHICH :-) | 16:31 | |
jnthn | With that done, then the rest is sub trait_mod:<is>(Routine:D $r, :$cached!) { my %cache{Capture}; $r.wrap(-> |c { %cache{c} //= callsame }) } or so. | 16:32 | |
lizmat | yeah, I already copy pasted that from moritz++ blogpost a few years ago | ||
timotimo | jnthn: do you have ideas for making rakudo-debugger useful for multi-threaded things? | 16:35 | |
16:35
xinming left,
rurban joined
|
|||
timotimo | maybe it would be a good start to just check in what $*THREAD the hooks are being invoked and perhaps skipping them if it's not the right one? | 16:35 | |
i suspect the way it's currently doing things it'd try to run multiple prompts for commands that listen on the same stdin or something? | |||
jnthn | timotimo: I need to spend a good chunk of time thinking that through. | ||
16:35
ajr_ left
|
|||
timotimo | i feared as much | 16:36 | |
jnthn | I mean, what I really want is not the "just work" solution, but something useful and awesome. | ||
timotimo | aye | ||
a split terminal that offers one split for every thread ;) | |||
moritz | tmux integration! | ||
16:37
xinming joined,
guru joined
|
|||
timotimo | :3 | 16:37 | |
jnthn | :) | ||
16:37
guru is now known as ajr_
|
|||
timotimo | also, something that'd work on windows would be nice | 16:37 | |
jnthn | Well, the other thing I want to look at is how you can understand what things are in flight at a given point in time too | ||
timotimo | yeah, that seems like a particularly tricky aspect of the whole thing | 16:38 | |
16:38
colomon left
16:39
rurban left
16:40
colomon joined
|
|||
jnthn | Right, but if we can provide a really good debugging experience there then we get a strong offering. | 16:40 | |
One of the things .Net devs tell me is they find Rx queries hard to debug, because you can't trace an items progress through it. I'm wondering if we can do better with our supplies. | 16:41 | ||
timotimo | that would be fantastic | ||
hmpf. i really have to spend some time trying to grok Rx, i haven't done anything in that style so far | 16:42 | ||
jnthn | I'll have some Perl 6 sample programs in a couple of weeks, but if you're impatient I've some C# ones you can see now :) | 16:43 | |
timotimo | it'd certainly help to figure out where applying Rx is a good idea :) | ||
jnthn | Where you have things happening asynchronously and there's a stream of them. | 16:44 | |
timotimo | Rx don't introduce their own asynchrony, just like supplies, right? | 16:45 | |
jnthn | Right | 16:46 | |
timotimo | at each point where there's a fork in the chain, like two taps on the same supply, they't just be executed to completion in some order? | ||
16:46
plobsing joined
|
|||
vendethiel | m: my @foo = [loop { 1; last; }]; say @foo; | 16:46 | |
camelia | rakudo-moar 3e1f32: OUTPUT«WARNINGS:Useless use of constant integer 1 in sink context (line 1)True» | ||
jnthn | Yeah. It's things where time comes in, for example, where concurrency is introduced. | ||
timotimo | m: my @foo = [loop { LEAVE last; 1; }]; say @foo; | 16:47 | |
camelia | rakudo-moar 3e1f32: OUTPUT«True» | ||
vendethiel | m: my $last = False; my @foo = [loop { if ($last) last else { $last = True; 1 } }]; say @foo; | ||
camelia | rakudo-moar 3e1f32: OUTPUT«===SORRY!=== Error while compiling /tmp/UCNFIucJzkMissing blockat /tmp/UCNFIucJzk:1------> t = False; my @foo = [loop { if ($last) ⏏last else { $last = True; 1 } }]; say @f expecting any of: p…» | ||
vendethiel | m: my $last = False; my @foo = [loop { if $last { last } else { $last = True; 1 } }]; say @foo; | ||
camelia | rakudo-moar 3e1f32: OUTPUT«True» | ||
timotimo | o_O | ||
vendethiel is starting to feel dizzy | |||
brane hurts. Somebody mind explaining ? | 16:48 | ||
timotimo | m: my @foo = loop { LEAVE last; 1; }; say @foo; | ||
camelia | rakudo-moar 3e1f32: OUTPUT«===SORRY!=== Error while compiling /tmp/OUl9BVgkuMUndeclared routine: loop used at line 1» | ||
timotimo | m: my @foo = do loop { LEAVE last; 1; }; say @foo; | ||
camelia | rakudo-moar 3e1f32: OUTPUT«True» | ||
timotimo | m: my @foo = do loop { NEXT last; 1; }; say @foo; | ||
jnthn | vendethiel: Putting any loop other than a for loop in r-value context at present doens't make a huge amount of sense to Rakudo. | ||
camelia | rakudo-moar 3e1f32: OUTPUT«(timeout)» | ||
timotimo | it does not? huh. | ||
well, maybe if it's a gather-loop | |||
16:48
retupmoca joined
|
|||
jnthn | yeah, but then you're doing a gather. :) | 16:49 | |
vendethiel | m: my @foo = [while False {}]; say @foo; | ||
camelia | rakudo-moar 3e1f32: OUTPUT«False» | ||
16:49
punter joined
|
|||
timotimo | nobody commented on my number guessing game one-liner :( | 16:49 | |
vendethiel | k, just returns True if it actually ran | ||
jnthn | yes, but please don't rely on that | ||
vendethiel | I won't :-) | 16:50 | |
that's just from S04 | |||
lizmat | jnthn: just got a spurious error in spectest: | 16:51 | |
t/spec/S17-concurrency/thread.rakudo.moar (Wstat: 0 Tests: 25 Failed: 1) | |||
Failed test: 6 | |||
which is "Thread 1 got non-zero ID" | |||
jnthn | lizmat: hmm | ||
lizmat | can't reproduce | ||
but that should never ever fail, so I guess there is a path where it can | |||
jnthn | Right. | 16:52 | |
vendethiel | timotimo: how'd you search for "LEAVE", "NEXT" etc ? syn search won't help, doc.perl6 won't help, etc | 16:53 | |
timotimo | "phaser" | 16:54 | |
or this: perlcabal.org/syn/index_X.html | |||
perlcabal.org/syn/index_C.html i meant this | |||
vendethiel | should "LEAVE" get the same comment as "ENTER" wrt loops ? | 16:57 | |
timotimo | you mean "repeats on loop blocks"? | 16:58 | |
vendethiel | yes | ||
timotimo | hm, i don't see a big piece of text on the exact semantics of the LEAVE queue | 16:59 | |
vendethiel | m: my $i = 0; loop { NEXT $i++; say $i; }; | 17:00 | |
moritz | perlpunks.de/paste/show/534ac2bb.6b06.15d # j-spectest output, 2 fails | ||
camelia | rakudo-moar 3e1f32: OUTPUT«(timeout)0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051…» | ||
vendethiel | And what's the difference of `UNDO { stuff; }` vs `CATCH { stuff; }` ? | 17:01 | |
timotimo | the undo will not cause exceptions to be considered handled, or rethrow | ||
jnthn | CATCH catches an exception. UNDO runs when you leave a block unsuccessfully. | ||
vendethiel | well,`CATCH { stuff }` will not consider exceptions to be handled either, would it ? | 17:02 | |
jnthn | Depends on stuff :P | ||
timotimo | if you have a when inside, then yes | ||
oh, i've been meaning to ask | |||
vendethiel | yeah, *if you have a when inside* :p^ | ||
timotimo | what's the exact mechanism that makes that work? is it something that's defined only for catch blocks? is it "magical"? | ||
17:03
colomon left
|
|||
vendethiel | I'm asking if CATCH without a when/default is the same as UNDO | 17:03 | |
timotimo | i'm kind of not terribly fond of such cases of magic if they seem to come out of nowhere | ||
jnthn | timotimo: Not really. A CATCH has an implicit rethrow at the end of it. | ||
timotimo | ah, and the when, when it gets triggered, will skip the rest of its outer block | ||
jnthn | timotimo: If you write a when or a default, then you succeed out of the CATCH block. | ||
timotimo | great | 17:04 | |
jnthn | r: sub foo() { die 'omg a manatee'; CATCH { succeed; } }; foo() | ||
camelia | ( no output ) | ||
..rakudo-parrot 3e1f32: OUTPUT«succeed without when clause in block at gen/parrot/CORE.setting:559 in block at gen/parrot/CORE.setting:623 in sub foo at /tmp/tmpfile:1 in block at /tmp/tmpfile:1» | |||
timotimo | oh? | ||
well, that's certainly interesting | |||
jnthn | uh, dunno what's going on with Parrot there. I think JVM and Moar have it right. | ||
vendethiel | m: sub foo { die 'foo'; CATCH { default } }; foo | 17:05 | |
camelia | rakudo-moar 3e1f32: OUTPUT«===SORRY!=== Error while compiling /tmp/aCcLQqOObVMissing blockat /tmp/aCcLQqOObV:1------> sub foo { die 'foo'; CATCH { default ⏏} }; foo expecting any of: statement list scoped bloc…» | ||
vendethiel | m: sub foo { die 'foo'; CATCH { default {} } }; foo | ||
camelia | ( no output ) | ||
jnthn | vendethiel: UNDO is different; fail out of a block will trigger it also | ||
timotimo | right, like return Any? | 17:06 | |
jnthn | Or that. | ||
vendethiel | jnthn: that's very, very confuse in my mind, when you say, "fail out of a block", you mean using `fail` itself ? | ||
17:06
rindolf left
|
|||
timotimo | m: sub foo { return Any; UNDO { say "welp, that was fantastic." } }; foo(); | 17:06 | |
camelia | rakudo-moar 3e1f32: OUTPUT«welp, that was fantastic.» | ||
timotimo | m: sub foo { return 1; UNDO { say "welp, that was fantastic." } }; foo(); | ||
camelia | ( no output ) | ||
timotimo | perlcabal.org/syn/S04.html#Definition_of_Success | ||
^ vendethiel | |||
jnthn | vendethiel: fail(...) counts too, yes | 17:07 | |
vendethiel | timotimo++ | ||
timotimo | i don't think i understand the piece about list context in "Definition of Success" | 17:08 | |
vendethiel | r: try foo(); foo { fail "oh noes"; UNDO { say "alive" } } | ||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUndeclared routine: foo used at line 1» | ||
vendethiel | m: try foo(); sub foo { fail "oh noes"; UNDO { say "alive" } } | ||
camelia | rakudo-moar 3e1f32: OUTPUT«alive» | ||
17:08
japhb joined
|
|||
vendethiel | m: try { fail "oh noes"; UNDO { say "alive" } } | 17:08 | |
camelia | rakudo-moar 3e1f32: OUTPUT«aliveUnhandled exception: oh noes at <unknown>:1 (/home/p6eval/rakudo-inst-2/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295) from src/gen/m-CORE.setting:12613 (/home/p6eval/rakudo-inst-2/languages/perl6/runtime/CORE.setting.moarv…» | ||
vendethiel doesn't understand why this isn't catched | |||
jnthn | vendethiel: Because you didn't catch it. | 17:09 | |
UNDO is nothing to do with catching | |||
It's all about how you leave the block | |||
vendethiel | jnthn: I know, but in my previous code, I didn't CATCH it either | ||
jnthn | KEEP/UNDO are about transactionality. | ||
vendethiel | and there were no exceptions | ||
jnthn | vendethiel: You did, you wrote "try" | ||
vendethiel | I wrote try in my last one as well | 17:10 | |
jnthn | Oh... | ||
But you weren't inside a sub. | |||
vendethiel | yeah | ||
jnthn | fail is a kind of return. | ||
It's like return Failure.new(...) or so | |||
vendethiel | Hmm-mmh. I'm having a bit of a hard time trying for it to make sense, but this helps :D. | 17:11 | |
I tried to look for `fail`'s doc on doc.perl6, but with no luck | |||
japhb | So ... thoughts on debugging concurrent perl6. I have a mental image of having notional panels that can be filled with different things. Depending on the smarts of the UI driver class, this could be multiplexed screens, split screens, just plain scrolling panels into view as needed (for a dumb terminal), tabs in a tabbed UI, whatever. The point is panels can contain a debugging view of a particular task, similar to rakudo-debugger's current interface, but also | 17:15 | |
active state of I/O handles (and the things they are connecting to), state of each Supply tree and Channel, task -> thread mapping, etc. | 17:16 | ||
When a task puts something into a Supply or Channel, the user can see the item go to a given Supply or Channel ID, and then in the Supply/Channel panel, see the progress of the item as it moves through, gets forked on taps, and so on. | 17:18 | ||
When it exits a Supply/Channel, that panel shows which task ID it goes to, and the user can switch to that task's debugging panel to see it come in and get processed. | 17:19 | ||
17:19
rurban joined
|
|||
japhb | (And in a tiled UI with a small enough number of active tasks, you could just watch things move from panel to panel without having to switch manually.) | 17:19 | |
17:21
Rotwang joined,
Rotwang left,
pippo left
17:24
molaf_ left
17:26
kaare_ left
|
|||
japhb | I *think* this can be separated into layers relatively easily, but probably one more than we have now, where there is the debug binary and then a UI class. Perhaps something like this: the debug binary providing API and hooks, several panel-generation classes that can output a rectangular panel of a particular type (debug, task map, channels/supplies, etc.) to a particular backend (ANSI text, HTML, and so on), and a panel management and UI interaction class per b | 17:27 | |
Not sure that's ideal, but could do the job. | |||
jnthn | Hm, lots of good ideas :) | 17:28 | |
It needs some more sophisciated UI-building mechanism than we hav enow :) | |||
japhb | True. And I recognize it's a lot more work to do. I'm just trying to think from the point of view of A) a hopefully quite useful UI and interaction model for the poor bastard doing concurrent debugging, and B) not *horribly* painful to write | 17:30 | |
17:30
rindolf joined
17:32
Rotwang joined
17:34
raiph joined,
ajr_ left
|
|||
jnthn | japhb: aye. :) | 17:34 | |
timotimo | mhhh ... libcatui | ||
jnthn | Well, nice tools take effort | ||
17:34
guru joined
|
|||
timotimo | i should get started on the actual design of that bloody thing at some point | 17:34 | |
jnthn | timotimo: I...don't think we need to put cat pictures all over it :P | ||
timotimo | with all due respect | 17:35 | |
we totally do. | |||
17:35
guru is now known as Guest81413
|
|||
jnthn | :D | 17:35 | |
17:35
Guest81413 is now known as ajr_
17:38
ajr_ left
|
|||
japhb | .oO( cat panel for HTML backend is just a YouTube feed ) |
17:39 | |
timotimo | :D | ||
m: sub gimme_a_class { UNDO { say "undo triggered" }; my Mu \c := class Test { }; return c but role { method defined { True }; method unpack { c } }; }; gimme_a_class.unpack.new() | 17:40 | ||
camelia | rakudo-moar 3e1f32: OUTPUT«undo triggered» | ||
timotimo | :o | ||
17:40
rindolf left
|
|||
japhb | I took a quick glance at what Go is doing (not searching super hard yet, so I may have missed something) but it looks like they're just doing thin wrappers over gdb, so ... eww. | 17:40 | |
jnthn | ah crap...my train seems to have broken down :/ | 17:41 | |
japhb | Ouch, fail. | 17:42 | |
timotimo | you should call railside assistance to tow you to the next garage | 17:43 | |
17:43
rurban left
17:44
hoverboard joined
|
|||
jnthn | "have you tried turning it off and on again" | 17:44 | |
17:44
thou left
|
|||
timotimo | "are you sure it's plugged in?" | 17:46 | |
17:46
Mouq joined
|
|||
japhb | "Well, it's sitting on the electrified third rail, so ... yes." | 17:47 | |
jnthn | Overhead cable in this case | 17:48 | |
17:48
rindolf joined
|
|||
timotimo | .o( like in most of germany ) | 17:49 | |
17:50
colomon joined
|
|||
jnthn | yes, but your trains seem to run more reliably there :P | 17:50 | |
well, we're moving again, it seems | |||
17:51
kurahaupo joined
17:52
Alula_ left
|
|||
jnthn | But apparently can no longer achieve "full fart" | 17:52 | |
timotimo | hmm | 17:54 | |
17:54
anaeem1__ left
|
|||
japhb | halvfart is good enough for anyone | 17:54 | |
timotimo | twitter.com/selenamarie/status/455...8711326722 - not sure i understand correctly | ||
17:54
btyler joined
|
|||
Mouq | .tell adu FWIW I use osx 10.9 and am not having issues (just built [rakudo|nqp|moarvm]-HEAD). Usually if the build segfaults, it's because I needed to reconfigure something, so you may want to doublecheck that | 17:56 | |
yoleaux | Mouq: I'll pass your message to adu. | ||
vendethiel | timotimo: basically, the guy can't even handle hearing about perl6 (I think) | 17:58 | |
(if you tell him p6 is good, he wont get any sleep from the horror) | |||
timotimo | why would gvr say something like that? | ||
vendethiel | timotimo: because he hates perl6, probably ? | 17:59 | |
oh, and python 2.7 until 2020. haha | |||
17:59
xenoterracide left,
anaeem1 joined
|
|||
timotimo | oh well. can't win 'em all. | 17:59 | |
Mouq | lizmat++: While you're adding things to Bag, would you consider a method that replicates the keys by their values? Right now you have to do .pick(*).sort, which is kinda silly IMO | ||
cognominal | there is many ways to do it, now including the choice between Perl 5 and Perl 6. The nightmare gets even worse. | 18:00 | |
Mouq | It came up writing this: codegolf.stackexchange.com/a/25716/15012 (note that the sort is necessary anyway here, but the .pick(*) doesn't feel right) | 18:01 | |
vendethiel | timotimo: some ppl are answering (to the 2.7 => 2020 extention) "Python 2.7 is the Perl 5 of Python" | ||
timotimo | strange. | 18:02 | |
well, i'm going to head out for now | |||
be back in a few | |||
geekosaur | but it's probably true. and like perl 5, it's gonna stick around whether the cool kids want it to or not, because somehow cool has yet to trump operational | ||
vendethiel | which is why some people wanted to change perl6's name, I guess | 18:05 | |
geekosaur | (also the flip side of that comparison might not be something they want to think about: that python3 is python's perl6...) | 18:06 | |
18:06
punter left
|
|||
Mouq | geekosaur: As if python3 were that cool ;) :P | 18:06 | |
18:07
ajr joined,
ajr is now known as Guest83500
|
|||
cognominal | to their credit python3 is already there; but apparently does not bring enough to justify compatibility breaking. | 18:07 | |
18:07
Guest83500 is now known as ajr_
|
|||
geekosaur | well, I get the impression that for many python2 folks, python3 is *not* realy there yet, at least not to the point that it's worth adopting | 18:08 | |
cognominal | so that's even worse than I thought | 18:09 | |
geekosaur | so you might see python3 as their rakudo-star | ||
18:10
colomon left
|
|||
cognominal | And it will stay so if they want to copy nice Perl 6 features... before realizing it is easier to adopt Perl 6 wholesale than steal from it. | 18:11 | |
_sri | problem is that all the good stuff has been backported to python2 | ||
vendethiel | cognominal: what did they steal ? | 18:13 | |
_sri | if p5p was in a better state perl6 would be in trouble too | 18:14 | |
cognominal | I don't know but once Perl 6 will be a reality they will have to react. Maybe that the meaning of the Guido quote. He can't ignore Perl 6 anymore? | ||
vendethiel | cognominal: hard to judge without context. | 18:15 | |
_sri: p5p ? perl5 in perl5 ? | |||
btyler | perl5 porters, vendethiel | 18:16 | |
vendethiel | oh, alright | ||
cognominal | we will see if we get a link to his presentation. | ||
vendethiel | tbh, from an outsider point of view, perl is dead. I did a lot of web before coming here (~ 6 months ago), php, then mostly ruby and js, and nobody even considers perl (in its global state) a threat or anything. It just doesnt exist anymore | 18:17 | |
moritz | S04-phasers/first.t aborted on rakudo-moar | ||
geekosaur | it also occurs to me that, considering that perl 5 is picking up stuff form perl 6, maybe he's responding to the fact that python 2.7 is backporting stuff from python3 in the same way | ||
vendethiel | I just came to know perl6 because a core coffeescript contributor is a really big perl fan, has a fork with many features, etc | ||
Well, I certainly don't believe p6 people are in their own little world, but it's really how it felt from outside | 18:18 | ||
cognominal | vendethiel, you mean, he is forking coffeescript to make it more Perl 6 like? | 18:19 | |
vendethiel | cognominal: he forked it a long time ago and added perl-ish features to it. I consider him to know more about coffee/coffee codebase than the creator. | ||
and I got interested in perl 6 because he uses it as an exemple often enough. | 18:20 | ||
cognominal | what the name of the fork? | ||
vendethiel | cognominal: github.com/satyr/coco | ||
moritz has trouble taking coffeescript seriously; if you want to *improve* on a language, relying on implicit scoping (esepecially if there are closures) seems like sarcasm to me | 18:22 | ||
vendethiel | autovivification, trying to take * where it's possible (like for array indexing), do, and something that's even more perl-ish than perl 6 has (like `a('foo')b'key here'`) | 18:23 | |
moritz: I agree people should try to stop wanting to "improve lexical scoping" :-) | |||
(this fork has a kinda-fixed scoping, though) | |||
cognominal | moritz, that's indeed my main critic against coffeescript. | 18:24 | |
vendethiel | (and that's the main reason why I don't use coffee as well, although I'm a team member as well. In reality, it doesn't often bit you, but when it does ...) | 18:25 | |
(mutability is bad anyway :D.) | |||
btyler | vendethiel: there's actually a lot of super awesome web stuff in perl5. mojo is like node.js done right | ||
vendethiel | btyler: I believe it ! But nobody knows about it ! that's my point :). | 18:26 | |
btyler | fair enough | ||
vendethiel | perl has no "visibility" these days | ||
for most people, perl is a relic from ancient time; hard to understand and to work with, with few people still using it (*for web*). That's the way it felt to me, at least. | 18:27 | ||
Mouq only discovered mojo relatively recently, because of #perl6, and my father is a diehard perl5 user :( | |||
vendethiel discovered mojo the same ay | |||
_sri | significant whitespace is just not cool... you can pry my curly brackets from my cold, dead hands! | ||
vendethiel | way* | 18:28 | |
Mouq | s/my/his/ is I suppose | ||
cognominal | I am ashamed to say I don't even know the differences between the various Perl web toolkits. | ||
Mouq | s/is// | ||
vendethiel | Mouq: who's father then ? | 18:29 | |
cognominal: actually, for the tweet, maybe guido thinks they "failed" "in the same sense as perl 6" | |||
_sri | python3 changed too little, perl6 changed too much... ruby2 got it just right | 18:30 | |
_sri doesn't get how pypy and rubinius have not surpassed cpython and mri yet though | 18:33 | ||
dalek | ast: 9906142 | moritz++ | S (4 files): JVM unfudges |
18:34 | |
cognominal | Perl 6 regex question. what is the way to transform a grouping into a negated assertion? | ||
moritz | cognominal: example? | ||
Mouq | cognominal: Depends on what you're trying to do | 18:35 | |
moritz | negated assertion is <!before ...> | ||
Mouq | <-[…]> might be what you're looking for though | ||
(Although that's just "<!before <[…]> > ." I guess) | 18:36 | ||
cognominal | No, that's a negated character class. | ||
Mouq | cognominal: Ah, true | ||
cognominal | but, I think <!before ... > is what I really need. thx Mouq++ | 18:37 | |
vendethiel | _sri: the "breaking version" of ruby was 1.9 tho | ||
FROGGS | <!before [ foo | bar ]> or just <!before foo | bar > | ||
18:38
darutoko left
|
|||
Mouq | (moritz++) | 18:38 | |
cognominal | FROGGS++, indeed | ||
18:40
Adriaaan joined,
SamuraiJack__ left
|
|||
_sri has high hopes for mojolicious on perl6 btw. (poor parallelism in perl5 is holding us back atm.) | 18:40 | ||
dalek | ast: 67a7d45 | moritz++ | S04-blocks-and-statements/let.t: JVM-fudge a failing test (with ticket number) |
||
18:41
kivutar joined
|
|||
vendethiel | (would love to see mojo-perl6 with perl6-to-js :-).) | 18:42 | |
moritz | m: (1,2,3,2,2,2,2).MixHash.kv.perl | 18:43 | |
camelia | ( no output ) | ||
moritz | m: say (1,2,3,2,2,2,2).MixHash.kv.perl | ||
camelia | rakudo-moar 3e1f32: OUTPUT«((1, 1), (2, 5), (3, 1)).list» | ||
timotimo | watch out, though, !before will not consume any characters | ||
<-[ … ]> on the other hand will | |||
moritz | that's the nature of assertions | 18:44 | |
timotimo | aye | ||
18:44
rurban joined
|
|||
timotimo | to be fair, it's kind of hard to express both non-matching and consuming characters | 18:45 | |
without going insane | |||
moritz | well, you can do stuff like [ <!before ...> . ]* | ||
which is "match any characters up to ... | 18:46 | ||
dalek | ast: 2053bb2 | moritz++ | S02-types/mixhash.t: make MixHash.kv test more robust |
18:47 | |
Mouq | moritz++ | ||
18:49
rurban left
|
|||
japhb | What are the prereqs for ipython support? ZeroMQ? | 18:50 | |
Anything else? | |||
timotimo | basic threading | 18:51 | |
we can fortunately do without HMAC | 18:52 | ||
there needs to be a heartbeat service | |||
18:52
xenoterracide joined
|
|||
japhb | Do we need SSL? | 18:53 | |
timotimo | no | ||
and if we did, i think zmq would have an abstraction in place fo rus | |||
18:53
colomon joined
|
|||
timotimo | maybe | 18:53 | |
japhb | OK, fair enough. So given that r-m and r-j both have basic threading, we just need a NativeCall ZeroMQ binding and then it's just a plain old module?? | 18:55 | |
s:1st/'?'// | |||
timotimo | it would appear to be the case, yeah | 18:56 | |
japhb | Has anybody already looked at whether NativeCall on both r-m and r-j supports everything ZeroMQ needs at this point? | 18:57 | |
18:57
rindolf left
|
|||
japhb | timotimo: Oh, before I forget (again), thanks for making GH issues for perl6-bench. | 18:57 | |
timotimo | yw :) | ||
Mouq | r: $_ = "a b c"; s:ss/[<.alpha> <.ws>?]+/d e f/; .say | ||
18:57
pmurias joined
|
|||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«d e f» | 18:57 | |
moritz | in m-spectest run, t/spec/S04-phasers/first.t aborts with exit code 139 after test 1; it runs fine on its own | 18:58 | |
Mouq | r: $_ = "a\n\nb\t\nc"; s:ss/[<.alpha> <.ws>?]+/d e f/; .say | ||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«de f» | ||
jnthn | moritz: Does it work out with MVM_SPESH_DISABLE=1 ? | ||
moritz | jnthn: lemmi try | ||
pmurias | re coffescript scoping wouldn't fixing that be a trivial (although backward incompatible) change? | ||
jnthn | moritz: A fix that just landed in oarvm head may deal with it | 18:59 | |
moritz | jnthn: ok, I'll try with latest moar first | 19:00 | |
jnthn: I suppose I don't need to recompile nqp and rakudo for it? | |||
19:01
rindolf joined
|
|||
jnthn | moritz: nope | 19:02 | |
vendethiel | pmurias: it'd :-). we're currently discussing improving it a bit | 19:03 | |
moritz | "use strict"; | 19:04 | |
vendethiel | moritz: already something in JS land ;-) | ||
moritz | vendethiel: I know | ||
it's just ironic if language A is an attempt to fix some design flaws in language B, and now language A would benefit from the same hacks that langauge B has introduced years ago... | 19:05 | ||
vendethiel | (or has had since the beginning) | 19:06 | |
"if it's not broken, don't fix it", right ? | |||
jnthn | detrain, dinner; bbl & | 19:07 | |
19:07
xenoterracide left
|
|||
moritz | "if you think it's not broken, maybe you are?" :-) | 19:07 | |
pmurias | the coffescript scoping still seems much saner the javascript one | ||
vendethiel | really ? `lst = (a i for i in [1..10]); a = -> i = 0;` #what happens here ? | 19:09 | |
imho, let > var > coffee's scoping | 19:10 | ||
moritz | oh, and make use-before-declaration (compare hoisting) a compile time error | ||
vendethiel | moritz: globals | 19:11 | |
do you specify each of them ? | |||
moritz | vendethiel: which globals are you talking about? | ||
vendethiel: then ones I introduce myself? I sure hope I do | |||
vendethiel | moritz: `window` properties | 19:12 | |
like, `$ ->` is "use-before-declaration", right ? | |||
19:12
uppompey joined
|
|||
moritz | function () { a(); function a() { } }; # use before declaration | 19:12 | |
vendethiel | I thought you meant in coffee, which doesnt have that :) | ||
moritz | I actually don't know coffescript :-) | 19:13 | |
vendethiel | but yeah, I agree. Lots of quirks. Another "weird hoisting" behavior : | ||
moritz | jnthn: MVM_SPESH_DISABLE=1 helped, updating to a new moar didn't | ||
vendethiel | `function foo(a) { var a; alert(a); }; foo(5);` actually alerts 5. | ||
19:19
adu joined
19:20
Sqirrel joined
19:27
zakharyas joined
19:32
rindolf left
19:34
Mouq left
19:39
raiph left
19:41
hummeleB1 joined
19:43
FROGGS[mobile] left
19:44
dwarring joined
19:46
rurban joined
19:50
rurban left
|
|||
vendethiel | could you override the "add_method" to apply decorators to it ? I'm thinking of the ruby lib github.com/michaelfairley/method_decorators | 19:53 | |
19:54
xenoterracide joined
|
|||
dalek | ast: 6b23c08 | moritz++ | S29-os/system.t: refude test for rakudo-m that depends on rakudo being installed better to get a passing TODO than to get test failures |
19:55 | |
19:57
kivutar left
19:59
xenoterracide left
20:01
xenoterracide joined,
colomon left,
FROGGS left
20:02
molaf joined
20:04
uppompey left
20:05
BenGoldberg joined
20:14
adu left,
Alula_ joined
20:15
denis_boyun joined
20:16
adu joined
20:18
aindilis` joined
20:20
aindilis left
20:21
Rotwang left
20:27
denis_boyun left,
denis_boyun joined
20:34
pippo joined
20:35
zby_home_ joined
|
|||
jnthn | vendethiel: Yeah, I think I even wrote a demo of that once... | 20:46 | |
vendethiel: See slides of my meta-programming in Perl 6 talk | |||
20:47
rurban joined
20:49
Mouq joined
20:51
rurban left
|
|||
lizmat | Mouq: re "While you're adding things to Bag, would you consider a method that replicates the keys by their values? " | 20:54 | |
I'm not sure what you're getting at | |||
doesn't .keys work ? | 20:55 | ||
Mouq | r: say (bag <a a a c b>).keys | ||
camelia | rakudo-jvm 3e1f32: OUTPUT«b a c» | ||
..rakudo-parrot 3e1f32, rakudo-moar 3e1f32: OUTPUT«a c b» | |||
Mouq | r: say (bag <a a a c b>).pick(*).sort | ||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«a a a b c» | ||
20:55
ajr_ left
|
|||
lizmat | ah, you mean multiplied by their replication fcator | 20:56 | |
Mouq | lizmat: Yeah | ||
r: say (bag <a a a c b>).pairs.map: {.key xx .value} | |||
camelia | rakudo-jvm 3e1f32: OUTPUT«b a a a c» | ||
..rakudo-parrot 3e1f32, rakudo-moar 3e1f32: OUTPUT«a a a c b» | |||
Mouq | Something like that | 20:57 | |
jnthn | .keyses ) | ||
lizmat | maybe we need an adverb on .keys ? | 20:58 | |
jnthn | No, that feels a bit smelly | ||
Mouq | It only really makes sense on Bags, not so much Sets and really not Mixes | ||
lizmat | maybe .flat ? | 21:00 | |
21:00
virtualsue joined
|
|||
lizmat | or .list ? | 21:00 | |
21:00
zby_home_ left
|
|||
Mouq | r: say (bag <a a a c b>).list.perl | 21:00 | |
lizmat | r: say (bag <a a a c b>).list # seems broken | ||
camelia | rakudo-jvm 3e1f32: OUTPUT«("b", "a", "c").list» | ||
..rakudo-parrot 3e1f32, rakudo-moar 3e1f32: OUTPUT«("a", "c", "b").list» | |||
rakudo-jvm 3e1f32: OUTPUT«b a c» | |||
..rakudo-parrot 3e1f32, rakudo-moar 3e1f32: OUTPUT«a c b» | |||
Mouq | I think .list should stay as it is, honestly, for consistency with Set and Mix | 21:01 | |
r: say (bag <a a a c b>).hash.list.perl | |||
camelia | rakudo-parrot 3e1f32, rakudo-moar 3e1f32: OUTPUT«("a" => 3, "c" => 1, "b" => 1).list» | ||
..rakudo-jvm 3e1f32: OUTPUT«("b" => 1, "c" => 1, "a" => 3).list» | |||
Mouq | m: say (mix <a a a c b>).hash.list.perl | 21:02 | |
camelia | rakudo-moar 3e1f32: OUTPUT«("a" => 3, "c" => 1, "b" => 1).list» | ||
lizmat | .spread ? | 21:03 | |
Mouq | m: say (mix <a a a c b>).flat.perl | ||
camelia | rakudo-moar 3e1f32: OUTPUT«(("a"=>3,"c"=>1,"b"=>1).Mix,).list» | ||
Mouq | m: say (bag <a a a c b>).flat.perl | ||
camelia | rakudo-moar 3e1f32: OUTPUT«(("a"=>3,"c"=>1,"b"=>1).Bag,).list» | ||
21:04
pippo2 joined
21:05
pippo2 left
|
|||
Mouq | .k×v | 21:06 | |
21:06
pippo2 joined
|
|||
jnthn | .kxxv? :) | 21:07 | |
It's quite fun to try and say that one out loud. | |||
And yet quite clear what it will do it you stare at it for a bit :) | 21:08 | ||
21:09
kurahaupo left
21:11
zakharyas left
|
|||
vendethiel | jnthn: not really the same, though :-) | 21:11 | |
but yeah, kinda look-alike | |||
I guess I'll need macros | 21:12 | ||
21:14
adu left
21:16
adu joined
|
|||
lizmat | .kxxv it will be (for now) | 21:16 | |
jnthn | haha :D | 21:17 | |
timotimo | i don't understand it :( | 21:18 | |
jnthn | timotimo: .k xx .v | 21:19 | |
timotimo: Where the keys are the things in the bag and the values are the number of times they are in there | |||
timotimo | ah | ||
jnthn | timotimo: and xx is the list repetition operator | ||
timotimo | okay | ||
21:22
Vlavv left
21:23
pippo2 left,
pippo2 joined,
pippo2 left
|
|||
dalek | kudo/nom: 91f41bd | (Elizabeth Mattijsen)++ | src/core/Baggy.pm: Add Bag.kxxv (preliminary name) |
21:25 | |
lizmat | $ perl6 -e '<a b b c c c>.Bag.kxxv.perl.say' | ||
("a", "b", "b", "c", "c", "c").list | |||
Mouq++ | |||
vendethiel | that'll be awkward to say out loud :-) | ||
lizmat++ | |||
21:27
brrt joined
|
|||
Mouq | lizmat++ :) | 21:28 | |
jnthn | vendethiel: Yes, next time I'm in a Perl 6 talk I'm going to ask somebody if there's an opertor to do what it does, jus tto hear them try :) | ||
vendethiel | jnthn: wrt that ruby stuff, I think I actually need to macro `class A` to `reset_decorators(); "class A"` then I'd want to parse stuff like | 21:30 | |
21:30
Ben_Goldberg joined,
BenGoldberg left,
Ben_Goldberg is now known as BenGoldberg
|
|||
vendethiel | `+mydecorater method foo {}` (which can't parse right now), to just the method but storing the associated decorator, and decorating every method at the end of the class declaration. No idea how it'd look like | 21:31 | |
(definitely feels forced) | |||
jnthn | yeah, that's ew | ||
Also the call inserted before class A feels very bogus | |||
vendethiel | github.com/rakudo/rakudo/pull/257#...-40320398, funny one :) | ||
jnthn | Since that's runtime | ||
vendethiel | yeah I mean at BEGIN time | 21:32 | |
jnthn | Yeah | ||
but the way to do that is to write a module exporting a different ClassHOW | |||
And then method foo is decorated(...) { } or so | |||
vendethiel | I might not even need to do that, since I can just reset a "decorator table" every time I add a function | ||
is decorated looks much better ! if I'm able to chain them, definitely go with that ! | 21:33 | ||
dalek | ecs: 89cc32d | (Elizabeth Mattijsen)++ | S32-setting-library/Containers.pod: Spec Bag.kxxv |
||
vendethiel | thanks jnthn, I'll try that tomorrow :-) | ||
21:34
Vlavv joined
|
|||
jnthn chuckles at the confusion in the pr | 21:34 | ||
21:35
hoverboard left
|
|||
lizmat | if captures are to be by value, then: | 21:36 | |
r: my @a = (1,2,3); my @b = (1,2,3); say \@a === \@b # should be True ? | |||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«False» | ||
21:36
btyler left
|
|||
lizmat | jnthn, moritz: ^^^ | 21:37 | |
Mouq | m: my \a = (1,2,3); my \b = (1,2,3); say \@a === \@b | ||
camelia | rakudo-moar 3e1f32: OUTPUT«===SORRY!=== Error while compiling /tmp/LVoOgy6DCmVariable '@a' is not declaredat /tmp/LVoOgy6DCm:1------> y \a = (1,2,3); my \b = (1,2,3); say \@a⏏ === \@b expecting any of: postfix» | ||
Mouq | m: my \a = (1,2,3); my \b = (1,2,3); say \a === \b | ||
camelia | rakudo-moar 3e1f32: OUTPUT«False» | ||
Mouq | :( | ||
jnthn | lizmat: No, though @a.Capture === @b.Capture probably should. | ||
lizmat: \@a is, iirc, like \(@a), which is a capture with one positional arg @a, and arrays are not value types | 21:38 | ||
21:39
Adriaaan left
|
|||
lizmat | but that would mean that when the .WHICH of the Capture is to be used as a key for caching | 21:40 | |
that (@a) and (@b) would give different results ? | 21:41 | ||
jnthn | Yes | ||
lizmat | as in: not use the same cache key ? | ||
jnthn | Right, which is what I'd expect givne array is a reference type. | ||
lizmat | that feels wrong to me | ||
jnthn | Why? | 21:42 | |
r: say [1,2] == [1,2] | |||
uh | |||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«True» | ||
jnthn | r: say [1,2] === [1,2] | ||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«False» | ||
jnthn | Using a mutable thing as a cache key is always gonna be bad design. | 21:43 | |
lizmat | we're talking about implementing "is cached" | 21:44 | |
where the .WHICH of the Capture is to be the key in the cache, right ? | |||
jnthn | Right. | ||
lizmat | and now you're saying that doing that would be a bad idea ? | 21:45 | |
lizmat is confused | |||
jnthn | No, Capture is immutable. | ||
I'm saying the WHICH of a Capture should be defined in terms of the WHICH of things inside of it. | |||
And the WHICH of an Array is dependent on its identity, *not* its contents. | |||
lizmat | yes, that is what I'm doing | ||
jnthn | OK | 21:46 | |
lizmat | then maybe the .WHICH of Array is wrong atm | ||
jnthn | So | ||
lizmat | $ perl6 -e 'my @a = (1,2,3); say (\@a).WHICH' | ||
Capture|(Int|1)(Int|2)(Int|3) | |||
jnthn | Oh, hang on... | ||
lizmat | $ perl6 -e 'my @a = (1,2,[3,4,5]); say (\@a).WHICH' | ||
Capture|(Int|1)(Int|2)(Array|4494462984) | |||
voila, the problem | 21:47 | ||
jnthn | r: my @a = 1,2; my \c = \@a; say c.perl | ||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«Capture.new( list => (1, 2).list, hash => EnumMap.new())» | ||
jnthn | r: my @a = 1,2; my \c = \(@a); say c.perl | ||
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«Capture.new( list => (1, 2).list, hash => EnumMap.new())» | ||
lizmat | I guess that should be fixed :-) | ||
jnthn | those are differnt | ||
21:48
rurban joined
|
|||
jnthn | lizmat: what should be fixed? | 21:48 | |
lizmat | sorry, nothing, the EnumMap.new got me confused | ||
jnthn | Ah, ok | ||
You agree @foo.WHICH, where @foo is Array, has a WHICH basd on its identity, not its contents? | |||
lizmat | so: you're saying they are different, but the .perl doesn't see any difference | 21:49 | |
21:49
brrt left
|
|||
lizmat | yes | 21:49 | |
jnthn | No, .perl won't | ||
But | |||
21:50
rurban1 joined
|
|||
jnthn | r: class Person { has $.name }; say Person.new(name => 'Dave').perl; say Person.new(name => 'Dave').perl; | 21:50 | |
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«Person.new(name => "Dave")Person.new(name => "Dave")» | ||
jnthn | the .perl of those two is the same, but there's more than one Dave in the world. :) | ||
lizmat | yeah, got ya | ||
21:51
denis_boyun left
|
|||
lizmat | so this basically means I can *not* use .WHICH as the key for "is cached" | 21:51 | |
Mouq | jnthn: Should this be so, however: | ||
m: say List.new.WHICH | |||
camelia | rakudo-moar 3e1f32: OUTPUT«List|140655207615040» | ||
lizmat | as any Capture with an array ref, would calculate things anew | 21:52 | |
21:52
rurban left
|
|||
Mouq | Oh, Lists are mutable, nevermind... | 21:52 | |
lizmat | r: my @a = (1,2,3); say @a.WHICH; @a.push(4); say @a.WHICH | ||
camelia | rakudo-parrot 3e1f32: OUTPUT«Array|-4362720946514231530Array|-4362720946514231530» | ||
..rakudo-jvm 3e1f32: OUTPUT«Array|632880711Array|632880711» | |||
..rakudo-moar 3e1f32: OUTPUT«Array|139965116036808Array|139965116036808» | |||
jnthn | lizmat: No, if you pass in two different arrays *even if they have the same contents* I'd expect them to calculate things anew, because I passed in a different reference type. | ||
Mouq | m: my \a = List.new; say a.WHICH; a.push(5); say a.WHICH | 21:53 | |
camelia | rakudo-moar 3e1f32: OUTPUT«List|139723787273464List|139723787273464» | ||
jnthn | lizmat: I don't think you can use "is cached" in ignorance of the incoming argument types. | ||
lizmat | even then, if I change the array from one invocation to the next, I would get the same result when I probably shouldn't | ||
jnthn | lizmat: Well, it depends what you want. :) | ||
lizmat | eh, no what the spec wants :-) | 21:54 | |
21:54
rurban1 left
|
|||
jnthn | Well, I'd hope the spec wants to keep value types and reference types straight. | 21:54 | |
lizmat | S06:2122 | ||
synopsebot | Link: perlcabal.org/syn/S06.html#line_2122 | ||
21:55
raiph joined
|
|||
jnthn | lizmat: Nothing in there seems to contradict what I'm saying. | 21:55 | |
lizmat | well, your explanation doesn't match my expectation of memoization | 21:56 | |
jnthn | lizmat: It doesn't make what I'm saying explicit either. | ||
21:56
adu left
|
|||
lizmat | in my world, it's the input values that determine what the output value is going to be (for an "is cached" sub) | 21:57 | |
note: *values* | |||
jnthn | Yes, and the key word there is *value* | ||
And array is an entity, *not* a value. | |||
lizmat | so foo(@a) and foo(@b) should give the same result, if @a == @b | 21:58 | |
21:58
adu joined
|
|||
jnthn | lizmat: perlcabal.org/syn/S02.html#Immutable_types perlcabal.org/syn/S02.html#Mutable_types | 21:59 | |
Of note, the first sentence in the second link. | 22:00 | ||
adu | jnthn! | ||
yoleaux | 17:56Z <Mouq> adu: FWIW I use osx 10.9 and am not having issues (just built [rakudo|nqp|moarvm]-HEAD). Usually if the build segfaults, it's because I needed to reconfigure something, so you may want to doublecheck that | ||
jnthn | o/ adu | 22:01 | |
adu | Mouq: thanks | ||
lizmat | well, ok: but then maybe there's something wrong with \@a | ||
jnthn | Maybe | 22:02 | |
nore that \@ and \(@a) behave differently at the moment | |||
lizmat | as that gets a flattend @a in $!list, rather than a single Array in $!list | ||
jnthn | Of note, they behave like @a.Capture and (@a,).Capture respectively. | ||
That may be too surprising. | |||
Lemme see if I can find some spec language on it... | 22:03 | ||
lizmat | that's why: | ||
$ perl6 -e 'my @a = (1,2,3); say (\@a).WHICH' | |||
Capture|(Int|1)(Int|2)(Int|3) | |||
and that's not saying "Capture|(Array:76278692)' | |||
jnthn | Yeah | 22:04 | |
I think that our \@a behavior may be wrong | |||
In S02 is this: | |||
You may retrieve parts from a Capture object with a prefix sigil operator: | |||
$args = \3; # same as "$args = \(3)" | |||
timotimo | huh? | ||
jnthn | S06 doesn't add much. | 22:06 | |
I can't find a single case of \@foo and \%foo in either S02 or S06 or S08 | |||
So yeah, I'm suspecting our \@a behavior is just wrong. | |||
And it should be made consistent with \(@a) | 22:07 | ||
Mouq | my \a = (1,2,3); my \b = (1,2,3); say a === b; # shouldn't this be True, though? | ||
m: my \a = (1,2,3); my \b = (1,2,3); say a.WHICH; say b.WHICH; say a === b; # shouldn't this be True, though? | 22:08 | ||
camelia | rakudo-moar 3e1f32: OUTPUT«Parcel|140040520206696Parcel|140040520212936False» | ||
jnthn | Mouq: Yes, I think that one probably should | ||
Givne it's under S02's Immutable Types section | |||
Mouq | Also | 22:09 | |
jnthn | I'm a little bit surprised to see LoL under Immutable Types, however... | ||
Mouq | m: say LoL.^mro # should probably be more like (LoL) (Parcel) (Cool) (Any) (Mu) | ||
jnthn | Curious about Exception there too. :) | ||
camelia | rakudo-moar 3e1f32: OUTPUT«(LoL) (List) (Iterable) (Cool) (Any) (Mu)» | ||
jnthn | Mouq: tbh, LoL is not clearly enough defined in my mind to be sure where it falls :) | 22:10 | |
Mouq | Oh, wait mebbe not | 22:11 | |
22:11
hoverboard joined
22:16
adu left
|
|||
jnthn | lizmat: On unrelated matters: I'm planning to make .cue on scheduler return a Cancellation object of some kind. | 22:16 | |
lizmat: Especially useful for timer based things; you can stop them. But will support it for the non-timer caes too | 22:17 | ||
lizmat | that feels good | ||
jnthn | lizmat: Sound OK? | ||
lizmat | yup | ||
but don't you have something like that already with e.g. :app_lifetime ? | |||
jnthn | I'm pondering them a bit 'cus I'm gearing up to give Moar support for them, which means I'm looking at the nqp:: op API for such things. | ||
No, app_lifetime is at the thread lvel | |||
*level | |||
Timers don't make a thread each. | |||
lizmat | ah, yes | 22:18 | |
jnthn | Otherwise if you have thousands of them...ouch. :) | ||
lizmat | yup | ||
we don't want that | |||
jnthn | Aye. | ||
Well, the JVM thing we use manages them as a heap, and libuv also does now, iirc. | |||
So both should be able to cope with thousands. | |||
lizmat | .oO( the new trend: thread bombs instead of fork bombs ) |
||
jnthn | m: Thread.start({ }) while 1; # curious :) | 22:19 | |
camelia | rakudo-moar 3e1f32: OUTPUT«Type check failed in binding &code; expected 'Callable' but got 'Hash' in method start at src/gen/m-CORE.setting:17669 in block at /tmp/Z3Rmg2Hw0Q:1» | ||
jnthn | ahaha | ||
m: Thread.start(-> { }) while 1; # curious :) | |||
camelia | rakudo-moar 3e1f32: OUTPUT«(signal )» | ||
BenGoldberg | That was quick | ||
jnthn | Really | ||
22:19
xenoterracide left
|
|||
BenGoldberg | m: Thread.start(-> { }); | 22:19 | |
camelia | ( no output ) | ||
BenGoldberg | m: Thread.start(-> { }) for 1..5; | ||
camelia | ( no output ) | ||
BenGoldberg | m: Thread.start(-> { }) for 1..99; | ||
camelia | ( no output ) | 22:20 | |
BenGoldberg | m: Thread.start(-> { }) for 1..9999; | ||
camelia | rakudo-moar 3e1f32: OUTPUT«(signal )» | ||
BenGoldberg | m: Thread.start(-> { }) for 1..999; | ||
camelia | rakudo-moar 3e1f32: OUTPUT«(signal )» | ||
BenGoldberg wonders if it's worthwhile to debug that, though | |||
lizmat | $ perl6 -e 'Thread.start(-> { }) for 1..999' | ||
Segmentation fault: 11 | |||
jnthn | Probably, yes. :) | ||
m: Thread.start(-> { }).finish while 1; # wonder if this is OKer :) | |||
camelia | rakudo-moar 3e1f32: OUTPUT«(signal )» | 22:21 | |
BenGoldberg | Now that, on the other hand... | ||
jnthn | Hmm...that one certainly wants debugging. | ||
lizmat | $ perl6 -e 'Thread.start(-> { }).finish while 1' | ||
Segmentation fault: 11 | |||
jnthn | I'm not gonna try it with j because I'll bring down the evalbot. | ||
well, the r-j one anyway | |||
BenGoldberg | Poor bot ;) | ||
jnthn | oh, curious | 22:22 | |
On my (Windows) box the "Thread.start(-> { }).finish while 1" is not segv-ing at all | |||
However, it is using plenty of memory :) | 22:23 | ||
(not growing, mind) | |||
22:24
xenoterracide joined
|
|||
jnthn | The non-.finish case also doesn't segv for me, it just keeps on trucking. | 22:24 | |
lizmat | r: my $a = \3; my $b = \3; say $a === $b # shouldn't this be True ? | 22:27 | |
camelia | rakudo-parrot 3e1f32, rakudo-jvm 3e1f32, rakudo-moar 3e1f32: OUTPUT«False» | ||
jnthn | lizmat: Yes. | 22:28 | |
lizmat | ok, then the test for that is wrong | ||
jnthn | Does your work on Capture.WHICH make it so? | ||
lizmat | that makes it return True | 22:29 | |
jnthn | yeah, sounds right to me. | ||
22:29
adu joined
|
|||
lizmat | $ perl6 -e 'my $a = \3; my $b = \3; say $a === $b' | 22:29 | |
True | |||
jnthn | \o/ | ||
lizmat | spectest is expecting False | ||
jnthn | OK, then I think spectest is out of line with spec :) | ||
lizmat | so the test s wrong | 22:30 | |
jnthn | ooh, it's going to be sunny here this week rather than soaking me on the walk to/from teaching :) | ||
Mouq | lizmat++ | ||
lizmat | m: say \3 === \3 | 22:31 | |
camelia | rakudo-moar 91f41b: OUTPUT«False» | ||
22:31
xenoterracide left,
pmurias left
|
|||
lizmat | $ perl6 -e 'say \3 === \3' | 22:31 | |
True | |||
22:31
xenoterracide joined
|
|||
lizmat | same thing, I think, fixing spectest | 22:31 | |
BenGoldberg | n: say \3 === \3 | ||
camelia | niecza v24-109-g48a8de3: OUTPUT«False» | ||
22:35
rurban joined
22:36
xenoterracide left
22:37
colomon joined
|
|||
jnthn | Teaching tomorrow...guess I should sleep :) | 22:37 | |
'night o/ | |||
Mouq | night jnthn! | 22:38 | |
adu | good night | ||
dalek | kudo/nom: c855a0f | (Elizabeth Mattijsen)++ | src/core/ (2 files): Implement Capture.WHICH |
22:39 | |
ast: 2cde4fb | (Elizabeth Mattijsen)++ | S03-operators/value_equivalence.t: Unfudge TODO's passing / fudge test for \@a The value is probably wrong, because \@a gets flattened into Capture.$!list rather than having a single Array object in Capture.$!list[0] |
|||
22:39
rurban left
|
|||
lizmat | gnight jnthn! | 22:39 | |
Mouq | r: .say for <j m p> Z=> (<29205 29573 29115> Z/ <31342 31567 31155>) | 22:46 | |
dalek | kudo/nom: 442cdf8 | (Elizabeth Mattijsen)++ | src/core/ (2 files): Naively implement "is cached" on Routines |
||
camelia | rakudo-parrot 91f41b, rakudo-jvm 91f41b, rakudo-moar 91f41b: OUTPUT«"j" => <29205/31342>"m" => <29573/31567>"p" => <1941/2077>» | ||
Mouq | m: say ($_*100).Int for <j m p> Z=> (<29205 29573 29115> Z/ <31342 31567 31155>) | 22:47 | |
camelia | rakudo-moar 91f41b: OUTPUT«Cannot call 'Numeric'; none of these signatures match::(Mu:U \v: *%_) in sub infix:<*> at src/gen/m-CORE.setting:4154 in block at /tmp/nnoP4rsZ8s:1» | ||
Mouq | -_- | ||
22:47
xenoterracide joined
|
|||
Mouq | Oh | 22:47 | |
m: .say for <j m p> Z=> ((<29205 29573 29115> Z/ <31342 31567 31155>) »*» 100)».Int | 22:48 | ||
camelia | rakudo-moar 91f41b: OUTPUT«"j" => 93"m" => 93"p" => 93» | ||
Mouq | m: .say for <j m p> Z=> ((<29205 29573 29115> Z/ <31342 31567 31155>) »*» 100) | ||
camelia | rakudo-moar 91f41b: OUTPUT«"j" => <1460250/15671>"m" => <2957300/31567>"p" => <194100/2077>» | ||
Mouq | m: .say for <j m p> Z=> ((<29205 29573 29115> Z/ <31342 31567 31155>) »*» 100).Num | ||
camelia | rakudo-moar 91f41b: OUTPUT«"j" => 3e0» | ||
Mouq | Hmm | ||
m: .say for <j m p> Z=> ((<29205 29573 29115> Z/ <31342 31567 31155>) »*» 100)».Num | 22:49 | ||
camelia | rakudo-moar 91f41b: OUTPUT«"j" => 93.1816731542339e0"m" => 93.6832768397377e0"p" => 93.4520943668753e0» | ||
dalek | kudo-star-daily: 1f3b2ea | coke++ | log/ (5 files): today (automated commit) |
22:51 | |
rl6-roast-data: 30f4207 | coke++ | / (6 files): today (automated commit) |
|||
22:52
Mouq left,
xenoterracide left
|
|||
[Coke] | (mojo6) i knew work made me forget something :) | 22:57 | |
dalek | ast: 840d421 | (Elizabeth Mattijsen)++ | S02-names/is_cached.t: Add tests for "is_cached" |
||
22:58
colomon left
22:59
colomon joined
23:00
aindilis` left
23:03
aindilis joined
23:06
robinsmidsrod left,
robinsmidsrod joined
|
|||
dalek | kudo/nom: 3aa101a | (Elizabeth Mattijsen)++ | t/spectest.data: Add "is_cached" tests to roast |
23:07 | |
kudo/nom: 79167a1 | (Elizabeth Mattijsen)++ | docs/ChangeLog: Some more Changelog updates |
23:09 | ||
lizmat | and sleep& | ||
cognominal | lizmat, how come %cache is lexical _into_ the trait_mod sub? /me suspects he should go to sleep too | 23:11 | |
it should be outside to cache anything? | |||
23:21
pippo left
23:26
anaeem1 left
23:32
hoverboard left
23:35
dmol left
23:36
rurban joined
23:40
rurban left
23:41
ponbiki left
23:43
ponbiki joined,
ponbiki is now known as Guest13666
23:45
Guest13666 is now known as ponpon
23:46
Alula_ left,
Alula_ joined
|
|||
cognominal | r: sub a(|a) { say a.WHICH }; a 1; a 1 | 23:54 | |
camelia | rakudo-parrot 3aa101, rakudo-jvm 3aa101, rakudo-moar 3aa101: OUTPUT«Capture|(Int|1)Capture|(Int|1)» | ||
cognominal | r: sub a(|a) { say ~a.WHICH }; a 1; a 1 | 23:56 | |
camelia | rakudo-parrot 3aa101, rakudo-jvm 3aa101, rakudo-moar 3aa101: OUTPUT«Capture|(Int|1)Capture|(Int|1)» |