»ö« 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.
timotimo may be on tuesday or shortly thereafter 00:03
r: class Timer { has &.cb; method do_it { &.cb() } }; my $t = Timer.new(:cb({ say "hi"; })); $t.do_it();
camelia ( no output )
timotimo i am confuse
isn't this supposed to work? 00:04
r: my &foo = { say "hi"; }; &foo()
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«hi␤»
timotimo ooooh duh 00:05
lue r: say LoL.new([["a", "b", "c"], "==", "de"], [["z", "b", ".l"], "==", "h;"]).flat.perl; # I'm not sure how to make this a recursive flattening :/ 00:11
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«([["a", "b", "c"], "==", "de"], [["z", "b", ".l"], "==", "h;"]).list␤»
lue r: say LoL.new([["a", "b", "c"], "==", "de"], [["z", "b", ".l"], "==", "h;"]).tree(*.Parcel, *).flat.perl; # if I grok .tree correctly 00:17
camelia rakudo-jvm ee7dbc: OUTPUT«Cannot call 'tree'; none of these signatures match:␤:(List:U: *%_)␤:(List:D: *%_)␤:(List:D: Cool $count, *%_)␤:(List:D: &c, *%_)␤ in any at gen/jvm/BOOTSTRAP.nqp:1212␤ in any at gen/jvm/BOOTSTRAP.nqp:1202␤ in method tree at gen/jvm/CORE.s…»
..rakudo-moar ee7dbc: OUTPUT«Cannot call 'tree'; none of these signatures match:␤:(List:U: *%_)␤:(List:D: *%_)␤:(List:D: Cool $count, *%_)␤:(List:D: &c, *%_)␤ in method tree at src/gen/m-CORE.setting:7809␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot ee7dbc: OUTPUT«Cannot call 'tree'; none of these signatures match:␤:(List:U: *%_)␤:(List:D: *%_)␤:(List:D: Cool $count, *%_)␤:(List:D: &c, *%_)␤ in any at gen/parrot/BOOTSTRAP.nqp:1219␤ in any at gen/parrot/BOOTSTRAP.nqp:1210␤ in method tree at gen/p…»
timotimo huh
no, i think .tree takes a number as argument?
r: .say for LoL.new([["a", "b", "c"], "==", "de"], [["z", "b", ".l"], "==", "h;"]).flat;
lue I base that off this part of S02: $p.tree(*.Array,*) # Turn all subparcels into item recursively
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«a b c == de␤z b .l == h;␤»
timotimo r: .say for @(LoL.new([["a", "b", "c"], "==", "de"], [["z", "b", ".l"], "==", "h;"]).flat);
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«a b c == de␤z b .l == h;␤»
lue timotimo: apparently .flat only works on Parcels, so that's what I'm trying to handle with .tree, but it appears that not all of tree is implemented :( 00:18
timotimo oh, huh.
TimToady .tree is kinda doing what .lol is supposed to do, and .lol isn't 00:19
timotimo r: my @foo = LoL.new([["a", "b", "c"], "==", "de"], [["z", "b", ".l"], "==", "h;"]).flat; say @foo.perl;
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«Array.new([["a", "b", "c"], "==", "de"], [["z", "b", ".l"], "==", "h;"])␤»
timotimo i'm going home
lue I wonder if I can get away with flattening the pieces as the array is being generated... 00:20
Flattening within the generator gets me to LoL.new(["a", "b", "c", "==", "de"], ["z", "b", ".l", "==", "h;"]) , but trying to call .flat on that similarly doesn't help :/ 00:22
Oh, wait, I actually want to keep those two subarrays distinct. Nevermind then, problem solved :) 00:23
lue r: say 1/0; # isn't this supposed to be NaN or something? 01:22
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Divide by zero␤»
..rakudo-jvm 0035fa: OUTPUT«Type check failed for return value; expected 'Int' but got 'Failure'␤ in method floor at gen/jvm/CORE.setting:10021␤ in method Str at gen/jvm/CORE.setting:10040␤ in method Str at gen/jvm/CORE.setting:1035␤ in method gist at gen/jvm/CORE.setting:…»
..rakudo-parrot 0035fa: OUTPUT«Type check failed for return value; expected 'Int' but got 'Failure'␤ in method floor at gen/parrot/CORE.setting:10043␤ in method Str at gen/parrot/CORE.setting:10060␤ in method Str at gen/parrot/CORE.setting:1038␤ in method gist at gen/parro…»
timotimo nah, it gives you a Failure object
r: say 1 / 0e0
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Divide by zero␤»
..rakudo-jvm 0035fa: OUTPUT«Divide by zero␤ in method gist at gen/jvm/CORE.setting:12414␤ in method gist at gen/jvm/CORE.setting:1053␤ in sub say at gen/jvm/CORE.setting:13327␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 0035fa: OUTPUT«Divide by zero␤ in method gist at gen/parrot/CORE.setting:12435␤ in method gist at gen/parrot/CORE.setting:1056␤ in sub say at gen/parrot/CORE.setting:13369␤ in block at /tmp/tmpfile:1␤␤»
timotimo r: say 1e0 / 0e0
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Divide by zero␤»
..rakudo-jvm 0035fa: OUTPUT«Divide by zero␤ in method gist at gen/jvm/CORE.setting:12414␤ in method gist at gen/jvm/CORE.setting:1053␤ in sub say at gen/jvm/CORE.setting:13327␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 0035fa: OUTPUT«Divide by zero␤ in method gist at gen/parrot/CORE.setting:12435␤ in method gist at gen/parrot/CORE.setting:1056␤ in sub say at gen/parrot/CORE.setting:13369␤ in block at /tmp/tmpfile:1␤␤»
TimToady that should probably be NaN 01:23
timotimo this doesn't seem to give you NaN either, though
lue It'd be nice if rakudo didn't blow up, I'm only printing the value of the division. 01:24
n: say 1/0;
camelia niecza v24-109-g48a8de3: OUTPUT«Inf␤»
TimToady IEEE would likely say that that *must* be NaN
timotimo r: say (1 / 0).WHAT 01:26
camelia rakudo-parrot 0035fa, rakudo-jvm 0035fa, rakudo-moar 0035fa: OUTPUT«(Rat)␤»
timotimo r: print 1 / 0
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Divide by zero␤»
..rakudo-parrot 0035fa: OUTPUT«Type check failed for return value; expected 'Int' but got 'Failure'␤ in method floor at gen/parrot/CORE.setting:10043␤ in method Str at gen/parrot/CORE.setting:10060␤ in method Str at gen/parrot/CORE.setting:1038␤ in method print at gen/parr…»
..rakudo-jvm 0035fa: OUTPUT«Type check failed for return value; expected 'Int' but got 'Failure'␤ in method floor at gen/jvm/CORE.setting:10021␤ in method Str at gen/jvm/CORE.setting:10040␤ in method Str at gen/jvm/CORE.setting:1035␤ in method print at gen/jvm/CORE.setting…»
TimToady reduces lazily
though since rats can degrade to nums, arguably that should also return NaN 01:27
lue I'd love to see what IEEE 754 says on the matter, but it's apparently one of those "not really" standards :/ 01:28
lue checks if IETF has an RFC on it
en.wikipedia.org/wiki/Division_by_...arithmetic <-- niecza++ appears to be correct here 01:33
according to IEEE in any case; the more mathematically sound result would be NaN (or some other representation of an undefined result) 01:35
TimToady m: say (1e0 / 0e0).WHAT 01:38
camelia rakudo-moar 0035fa: OUTPUT«(Failure)␤»
TimToady I think rakudo is trying to preserve the location of the error, which NaN doesn't do 01:39
lue ah, that does tend to be useful for tracking bugs :) 01:40
TimToady but by S03:764 it should at least be something that pretends to be NaN
synopsebot Link: perlcabal.org/syn/S03.html#line_764
TimToady m: say (1e0 / 0e0) + 42 01:41
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Divide by zero␤»
TimToady m: say (1e0 / 0e0) «+» 42
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Divide by zero␤»
TimToady arguably that at least should be a real NaN, since we don't want to blow up parallel computations due to div by 0 01:42
lue yeah, at least for floating point (if not for the other numeric types too) 01:43
TimToady and storing a fake NaN into a Num location should probably just make a normal NaN
lue
.oO(We should all use the real projective line and stop worrying about division by zero.)
BenGoldberg Perhaps a NaN class which is a subclass of Num? 01:47
TimToady it's more like a subset type 01:48
BenGoldberg Hmm... or a subclass of Failure, while 'do'ing the Numeric role
TimToady or an enum of Num
BenGoldberg r: say NaN
TimToady r: say NaN ~~ Num
camelia rakudo-parrot 0035fa, rakudo-jvm 0035fa, rakudo-moar 0035fa: OUTPUT«NaN␤»
rakudo-parrot 0035fa, rakudo-jvm 0035fa, rakudo-moar 0035fa: OUTPUT«True␤»
TimToady scared me
:)
but arguably Nan shouldn't match Num :) 01:49
lue imagines an Ofun::NaN that causes functions to immediately return a NaN when any given parameter is NaN 01:49
BenGoldberg IIRC, On some machines, there exists both a quite NaN and a signaling NaN. Maybe Perl 6 should also make such a distinction? 01:50
TimToady maybe that's the distinction we're trying for with scalar vs parallel computations
TimToady professes not to be an expert on IEEE fp 01:51
TimToady presumably a signaling NaN only signals if you try to use it 01:52
BenGoldberg Of course, deciding which type of NaN should be produced could be tricky. If this were perl5, I'd suggest a pragma which would (at compile time) set something in $^H or %^H, then floating point math at runtime would check (caller(1))[9 or 10, depending] to decide whether to signal or not. 01:54
s/signal or not/make a quite or signaling NaN/
s/quite/quiet/ # stupid fingers
lue "Signaling NaNs afford representations for uninitialized variables and arithmetic-like enhancements (such as complex-affine infinities or extremely wide range) that are not in the scope of this standard."
"Quiet NaNs should, by means left to the implementer’s discretion, afford retrospective diagnostic information inherited from invalid or unavailable data and results."
TimToady hah 01:55
TimToady that sounds like trying to track the identities of individual electrons 01:55
unless NaN is a category of values
lue From a quick skimming, that seems like the general definitions of each kind of NaN. 01:56
geekosaur NaN is a weird thing, and might best be described as a category. yes
TimToady an illegal bit pattern with reserveed parts that can carray a value
*carry
BenGoldberg If a double is bigger than a pointer, and there are enough bits available, one might concievably store into it a pointer to the address of the operation which produced the NaN 01:57
TimToady or a pointer to the Failure with as much info as you like 01:58
lue "When encoded, all NaNs have a sign bit and a pattern of bits necessary to identify the encoding as a NaN and which determines its kind (sNaN vs. qNaN).", if you were curious :)
TimToady with fewer bits it could be an offset into a table of recent failures
geekosaur well, except that the cpu's fp hardware may have meanings for some of them 01:59
BenGoldberg A table of recent failures makes more sence, since how would one free the Failure pointed ot?
TimToady I wonder how many architectures just say NaN is this bit pattern, deal with it
TimToady we have spin-up NaN, and spin-down NaN, and that's all we have :) 02:00
BenGoldberg Most of em probably one generate one bit pattern as qNaN, and a second one as sNaN... but they'll probably recognize anything with the first few bits set properly. 02:01
lue
.oO(On our FPU, qNaN is a number with bit pattern "qNaN", and sNaN the bit pattern "sNaN". These numbers must be negative.)
perigrin TimToady: no Garlic NaN? 02:07
perigrin is saddend. 02:08
TimToady is allergic to nan in south Asia, but not where nan means "south" :) 02:11
my favorite pun is to go into an Indian restaurant and say "Nan desu ka?" 02:12
TimToady m: BEGIN True and (require Test; import Test); ok True, "ok is ok" 02:27
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!=== Error while compiling /tmp/GkQY3wLkIr␤Could not find module Test to import symbols from␤at /tmp/GkQY3wLkIr:1␤------> EGIN True and (require Test; import Test⏏); ok True, "ok is ok"␤ expecting a…»
TimToady hmm
FROGGS: something like that ^^ 02:28
m: BEGIN True and (use Test); ok True, "ok is ok" 02:29
camelia rakudo-moar 0035fa: OUTPUT«ok 1 - ok is ok␤»
TimToady heh
m: BEGIN False and (use Test); ok True, "ok is ok"
camelia rakudo-moar 0035fa: OUTPUT«ok 1 - ok is ok␤»
TimToady oopsie :)
probably correct, need a require to be conditional
TimToady m: BEGIN True and (require Test); Test::ok True, "ok is ok" 02:30
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Could not find symbol '&ok'␤»
TimToady m: BEGIN True and (require Test <&ok>); ok True, "ok is ok"
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Lexical with name '&ok' does not exist in this frame␤»
TimToady m: require Test <&ok>; ok True, "ok is ok" 02:31
camelia rakudo-moar 0035fa: OUTPUT«ok 1 - ok is ok␤»
TimToady hmm
BenGoldberg Does 'use' in perl6 typically create lexical subs in the caller's context? If so, that's very cool :) 02:34
TimToady there's no extra lexical context there 02:35
since the BEGIN has no braces
BenGoldberg How does require work?
TimToady it's sort of like thunks, that are parasitic on the existing lexical scope rather than creating a new one 02:36
require is runtime
but has an optional argument for installing symbols at compile time
m: require Test <&ok>; ok True, "ok is ok"
camelia rakudo-moar 0035fa: OUTPUT«ok 1 - ok is ok␤»
TimToady why this one worked
m: require Test; ok True, "ok is ok" 02:37
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!=== Error while compiling /tmp/aQtQgwWSA_␤Undeclared routine:␤ ok used at line 1. Did you mean 'on'?␤␤»
BenGoldberg So if you pass arguments to require, it magically changes from runtime to compile time?
TimToady the compiler knows to recognize the arguments to require 02:38
it just makes the 'need' part of require lazy
so it doesn't happen till runtime
BenGoldberg So it's a bit like perl5's autouse module, or something... 02:40
TimToady well, not quite
but we'd like to be able to autouse stuff eventually
particularly for things in the setting that aren't necessarily going to be used in every program
just install the names with triggers, and load the semantics when we first see the name 02:41
BenGoldberg Well, obviously perl6's require doesn't delay loading of, say, Test, until &ok is called, but it predeclares &ok, and automatically attaches it to &Test::ok as soon as Test gets loaded at runtime.
TimToady yes, it's a step in the right direction, if you want lazy loading 02:42
BenGoldberg m: if( rand < Inf ) { require Test <&ok> }; ok True, "ok is ok"; 02:44
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Word 'if' interpreted as 'if()' function call; please use whitespace instead of parens␤at /tmp/bT1Cubd80a:1␤------> if⏏( rand < Inf ) { require Test <&ok> }; o␤Unexpected block in infix position (…»
BenGoldberg m: if ( rand < Inf ) { require Test <&ok> }; ok True, "ok is ok"; 02:45
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!=== Error while compiling /tmp/WXH7Ba3LMZ␤Undeclared routine:␤ ok used at line 1. Did you mean 'on'?␤␤»
BenGoldberg m: if ( rand < Inf ) { require Test <&ok>; ok True, "ok is ok" }
camelia rakudo-moar 0035fa: OUTPUT«ok 1 - ok is ok␤»
BenGoldberg The name is installed lexically... very cool.
TimToady timotimo: it's not at all clear that 'is rw' actually is going to be slow down a loop; better measure fist 02:48
TimToady measure fist first 02:53
one fist is about 10° if I recall 02:54
TimToady maybe there's enough bits in NaN to encode file and line# 02:59
lue TimToady: doesn't that S03 reference from earlier state that NaN and Inf in Perl 6 aren't exactly the same as IEEE's anyway? 03:02
(so NaN could be an object with file and lineno attrs.)
TimToady probably written at a time when it was assumed Int and such also support NaN 03:03
TimToady which hasn't happened yet, if it ever will 03:03
r: sub term:<time> { 42 + OUTER::term:<time> }; say time
camelia rakudo-parrot 0035fa: OUTPUT«use of uninitialized value of type Any in numeric context in sub term:<time> at /tmp/tmpfile:1␤␤42␤» 03:04
..rakudo-jvm 0035fa, rakudo-moar 0035fa: OUTPUT«use of uninitialized value of type Any in numeric context␤42␤»
TimToady r: sub term:<time> { 42 + OUTER::{'&term:<time>'}() }; say time
camelia rakudo-jvm 0035fa: OUTPUT«java.lang.RuntimeException: java.lang.StackOverflowError␤␤» 03:05
..rakudo-parrot 0035fa, rakudo-moar 0035fa: OUTPUT«(timeout)»
JimmyZ \o/ bug...
TimToady r: sub term:<time> { 42 + &OUTER::term:<time>() }; say time
camelia rakudo-parrot 0035fa, rakudo-moar 0035fa: OUTPUT«(timeout)» 03:06
..rakudo-jvm 0035fa: OUTPUT«java.lang.StackOverflowError␤␤»
TimToady yeah, some kinda bug
JimmyZ r: { sub term:<time> { 42 + &OUTER::term:<time>() }; say time } 03:08
camelia rakudo-parrot 0035fa, rakudo-moar 0035fa: OUTPUT«(timeout)»
..rakudo-jvm 0035fa: OUTPUT«java.lang.StackOverflowError␤␤»
TimToady r: sub term:<time> { 42 + &SETTING::term:<time>() }; say time 03:09
camelia rakudo-jvm 0035fa: OUTPUT«1396235386␤»
..rakudo-moar 0035fa: OUTPUT«Cannot find method 'Any'␤ in sub term:<time> at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 0035fa: OUTPUT«No such method 'Any' for invocant of type 'Parcel'␤ in any at gen/parrot/BOOTSTRAP.nqp:1685␤ in any at gen/parrot/BOOTSTRAP.nqp:1679␤ in any at gen/parrot/BOOTSTRAP.nqp:1674␤ in sub term:<time> at /tmp/tmpfile:1␤ in block at /tmp/tmpfi…»
TimToady o_O
lue IIRC rakudo doesn't always like the $PACKAGE::var form
(though I've yet to look for a pattern to it)
TimToady n: sub term:<time> { 42 + &SETTING::term:<time>() }; say time
camelia niecza v24-109-g48a8de3: OUTPUT«1396235443.7795949␤» 03:10
TimToady niecza++
n: sub term:<time> { 42 + &OUTER::term:<time>() }; say time
camelia niecza v24-109-g48a8de3: OUTPUT«(timeout)»
TimToady hmm
niecza-- :)
oh wait
that's correct 03:11
niecza++
TimToady--
n: sub term:<time> { 42 + &OUTER::OUTER::term:<time>() }; say time
camelia niecza v24-109-g48a8de3: OUTPUT«1396235527.458894␤»
TimToady r: sub term:<time> { 42 + &OUTER::OUTER::term:<time>() }; say time
camelia rakudo-jvm 0035fa: OUTPUT«No such method 'Any' for invocant of type 'Parcel'␤ in any at gen/jvm/BOOTSTRAP.nqp:1673␤ in any at gen/jvm/BOOTSTRAP.nqp:1668␤ in any at gen/jvm/BOOTSTRAP.nqp:1663␤ in sub term:<time> at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-moar 0035fa: OUTPUT«Cannot find method 'Any'␤ in sub term:<time> at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 0035fa: OUTPUT«No such method 'Any' for invocant of type 'Parcel'␤ in any at gen/parrot/BOOTSTRAP.nqp:1685␤ in any at gen/parrot/BOOTSTRAP.nqp:1679␤ in any at gen/parrot/BOOTSTRAP.nqp:1674␤ in sub term:<time> at /tmp/tmpfile:1␤ in block at /tmp/tmpfi…»
TimToady that's, not so correct
JimmyZ why OUTER::OUTER ... 03:12
lue r: sub term:<time> { 42 + SETTING::{'&term:<time>'}() }; say time
camelia rakudo-moar 0035fa: OUTPUT«Cannot find method 'Any'␤ in sub term:<time> at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 0035fa: OUTPUT«No such method 'Any' for invocant of type 'Parcel'␤ in any at gen/parrot/BOOTSTRAP.nqp:1685␤ in any at gen/parrot/BOOTSTRAP.nqp:1679␤ in any at gen/parrot/BOOTSTRAP.nqp:1674␤ in sub term:<time> at /tmp/tmpfile:1␤ in block at /tmp/tmpfi…»
..rakudo-jvm 0035fa: OUTPUT«1396235602␤»
lue The JVM gets it right for &PKG::var and PKG::<&var>, but the other backends don't. That's interesting. 03:13
TimToady lue: re octals, see S02:3523 03:19
synopsebot Link: perlcabal.org/syn/S02.html#line_3523
lue dang it, the stupid Twigils duplication bug messes up the synopsebot link :/ 03:20
TimToady: yeah, I'm just wondering if blocking the inclusion of 7 characters after a use of \0 is worthwhile (then again, it's 7 out of 0x10_FFFF chars, so it's not that bad. But then those 7 chars are ASCII, which is far more used than the rest of Unicode...) 03:22
TimToady the point is to keep C, C++, Perl 5, Java, etc. programmers from shooting themselves in the pinky toe 03:23
lue something for the eventual "I don't know Perl 5" switch to allow me to do, then :) 03:24
TimToady and then you're write non-portable code, eh? :P
*you'll
lue nah, it just needs a no perl5-knowledge at the top of the file :) 03:25
("switch" in the general sense, instead of the commandline thingy sense)
TimToady always misinterprets intentionally in the most aggravating way, in case you hadn't noticed :)
lue took me a minute to figure out your misinterpretation this time :) 03:26
TimToady it was admittedly subtle, but I did, in fact, think of your interpreation before I responded :) 03:27
lue
.oO( perl6 -U__NO_PERL_5__ ... )
TimToady *pret
lue er, -D rather :P
TimToady
.oO(no MONKEY_ANCESTRY)
03:28
no MONKEY'S-UNCLE 03:29
lue I imagine S23 will include a use MONKEY_SECURITY for when you want to live dangerously, unconditionally. (Assuming that kind of a careless act would ever be supported)
TimToady MONKEY_BUSINESS, surely 03:30
MONKEY_SEE_MONKEY_DO to allow cargo culting
MONKEY_AROUND
MONKEY_SHINE 03:31
more -Ofun than a BARREL_OF_MONKEYS
lue use 🐵_TYPING 03:32
TimToady but anyway, my point is it's not just P5 programmers that will make the \0777 mistake 03:34
lue yeah. I wonder who's smart idea it was to use a singular leading decimal digit to stop decimal interpretation anyhow. 03:36
TimToady "We can't fix that! We already have five users!" 03:36
lue A favorite historical (and nowadays useless/unhelpful) oddity has got to be C/C++'s digraphs and trigraphs. 03:38
TimToady which is why sometimes I still come down like a ton of bricks and fix something in the design of Perl 6 even though it breaks stuff
lue TimToady: Unicode could learn a thing or two from you, wrt to UTF-16 and the resulting 0x10_FFFF limit :)
TimToady yes, well, they'd've done it differently if they knew how popular UTF-8 was going to turn out to be 03:40
lue I still think UTF-16 should be remade into a 16-bit version of UTF-8, but I suppose I'd have better luck making ß.uc == ẞ 03:42
TimToady also, standards bodies think they can invent a NewThink language in which it is impossible to think bad thoughts
gotta go switch hotels now... 03:44
afk &
lue bye for now, TimToady o/
lue ooh, I just noticed RESTRICTED.setting isn't using a typed exception for restricted stuff. (A string-based die, instead of something like X::RESTRICTED) 04:52
xiaomiao bpaste.net/show/195812/ nqp failing with parrot-6.2.0, works with 6.1.0 05:43
FROGGS xiaomiao: rurban++ does a lot of changes to parrot, and pull requested changes to nqp that need to be applied when we switch to a newer version 05:44
xiaomiao: so please stick to 6.1.0 for nqp/rakudo 05:45
xiaomiao FROGGS: right, that's a little bit annoying (but not a big problem
FROGGS: would be even more awesome if nqp/rakudo would abort with "known-bad" versions, but I can live with the current state
FROGGS xiaomiao: true, but the mechanism is that nqp requires at least the specified version, and that usually works out 05:46
xiaomiao yes 05:47
little bit surprising because usually it's just all perfectly working
JimmyZ 中午好 05:50
FROGGS the rule of thumb is: if you are not a parrot/moarvm/whatever hacker, stick to the version in the PARROT_REVISION/MOAR_REVISION file
everything else is not guaranteed to work but cause of changes that need adjusting 05:51
lue nowadays I don't update Parrot until nqp complains :)
FROGGS lue: me too
well okay, unless I test PR's 05:52
PRs*
JimmyZ only use moarvm :)
lue Something tells me I fail at Perl 6 threads at the moment: gist.github.com/lue/9886068
xiaomiao I just try to keep everything up to date 05:54
lue In case you can't tell, I want to set up a pipeline where input to it is processed parallelly, instead of serially.
xiaomiao would be silly to not package new versions ;)
lue I'd be interested in seeing what improvements (if any) I can bring to syngen by multithreading various operations. (process many synopses at once, instead of waiting for one to go through the whole process, then another, then another...) 05:56
lue g'night, #perl6 o/ 06:06
FROGGS gnight lue 06:07
FROGGS m: BEGIN True and (require Test; import Test); ok True, "ok is ok" 06:36
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!=== Error while compiling /tmp/Diy1W9trDe␤Could not find module Test to import symbols from␤at /tmp/Diy1W9trDe:1␤------> EGIN True and (require Test; import Test⏏); ok True, "ok is ok"␤ expecting a…»
FROGGS I will fix that after fiddling with star 06:37
simula67 Does this look reasonable ? github.com/perl6/roast/pull/38 07:05
TimToady m: BEGIN True and (require Test); import Test; ok True, "ok is ok" 07:14
camelia rakudo-moar 0035fa: OUTPUT«ok 1 - ok is ok␤»
TimToady FROGGS: I think import is also compile time
so it happens before require if it isn't separated by a BEGIN level 07:15
FROGGS ahh, true 07:16
I stumbled at that a year ago or so 07:17
TimToady simula67: unfortuantely, the gfc appears to not let github.global.ssl.fastly.net through...
FROGGS m: BEGIN True and (require Test <&ok>); ok True, "ok is ok"
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!===␤Lexical with name '&ok' does not exist in this frame␤»
TimToady that's arguably a bug
FROGGS m: require Test <&ok>; ok True, "ok is ok"
camelia rakudo-moar 0035fa: OUTPUT«ok 1 - ok is ok␤»
FROGGS the latter is okay if you just export a handful subs or an object/type 07:18
hmmmm
star: require JSON::Tiny <JSON::Tiny>; say JSON::Tiny 07:19
camelia star 2013-09: OUTPUT«Trying to import from 'JSON::Tiny', but the following symbols are missing: JSON::Tiny␤ in sub REQUIRE_IMPORT at src/gen/CORE.setting:16228␤ in block at /tmp/j5uZm_CaOW:1␤␤»
FROGGS TimToady: am I supposed to be able to import a type? 07:20
TimToady that would seem to be an important capability 07:21
FROGGS .tell jnthn was the closure-o blorst fix supposed to fix the "p6captureouters target must be a CodeRef"? 07:22
yoleaux FROGGS: I'll pass your message to jnthn.
TimToady star: require JSON::Tiny; say JSON::Tiny
camelia star 2013-09: OUTPUT«Could not find symbol '&Tiny'␤ in method <anon> at src/gen/CORE.setting:12026␤ in any at src/gen/Metamodel.nqp:2671␤ in any find_method_fallback at src/gen/Metamodel.nqp:2659␤ in any find_method at src/gen/Metamodel.nqp:946␤ in block at /tmp/lnZ…»
TimToady I think you're supposed to get that symbol for free anyway
FROGGS TimToady: yes, this would help us with two modules that contain pir 07:23
because I did not use `require STRING`, aye
m: require JSON::Tiny; say JSON::Tiny
TimToady well, in a pinch you can write a routine to return a type
camelia rakudo-moar 0035fa: OUTPUT«Could not find JSON::Tiny in any of: /home/p6eval/rakudo-inst-1/languages/perl6/site/lib, /home/p6eval/rakudo-inst-1/languages/perl6/vendor/lib, /home/p6eval/rakudo-inst-1/languages/perl6/lib, /home/p6eval/.perl6/2014.03.01-48-g0035fad/lib␤ in any load_…»
FROGGS m: require Test; say Test
camelia rakudo-moar 0035fa: OUTPUT«===SORRY!=== Error while compiling /tmp/7rDLUz72_d␤Undeclared name:␤ Test used at line 1␤␤»
FROGGS yeah, everything of these workarounds are better than evaling heredocs :o) 07:24
bah, my english sucks :o( 07:25
TimToady S11:367 and following implies that should define the symbol 07:26
synopsebot Link: perlcabal.org/syn/S11.html#line_367
FROGGS yes, I remember
also it has to be this way or aliasing would not be possible 07:27
lizmat good *, #perl6!
FROGGS morning lizmat!
FROGGS puts a garlic necklace on 07:28
lizmat FROGGS: garlic NaN is much tastier :-) 07:32
FROGGS lizmat: the point is that I wanted to become much less tastier :P 07:34
but yeah, NaN++
lizmat found out yesterday that the Banca Transylvania isn't actually a blood bank 07:36
arnsholt o/ 07:36
FROGGS moin arnsholt 07:37
simula67 TimToady: gfc == Great Firewall of China ? 07:43
dalek kudo/nom: 5a1c937 | (Elizabeth Mattijsen)++ | docs/ChangeLog:
Update Changelog for features/fixes so far
07:44
dalek p: a2bb2db | (Arne Skjærholt)++ | src/HLL/Compiler.nqp:
Tweak how we handle --stagestats.

Now, the stage name is printed *before* the stage starts, and time spent doing it once it's done. Useful for those who can never remember the order of the stages.
07:50
FROGGS ahh, nice 07:52
lizmat r: say (foo => "bar").perl 08:19
camelia rakudo-parrot 0035fa, rakudo-jvm 0035fa, rakudo-moar 0035fa: OUTPUT«"foo" => "bar"␤» 08:20
lizmat wonders why .perl on a Pair quotes the lefthand side
would:
foo => "bar"
be more .perl ish ?
or even: 08:22
:foo<bar>
in this case?
jnthn morning o/ 08:24
yoleaux 07:22Z <FROGGS> jnthn: was the closure-o blorst fix supposed to fix the "p6captureouters target must be a CodeRef"?
FROGGS morning jnthn
jnthn lizmat: If it's meant to round-trip, then depending on context the unquoted version may not actually produce a Pair. 08:25
FROGGS: No, it was to fix the "No method Mu" thingy in the scheduler.
lizmat jnthn: but the :foo<bar> version would, no? 08:26
FROGGS ahh, kthx 08:28
jnthn lizmat: No, func(:foo<bar>) also serves as a named arg
lizmat ack, you're right
jnthn lizmat: Did you get a working sleep sort locally? 08:30
lizmat no, seems I have trouble getting Moar up to HEAD and then using it in a standard --gen-nqp --gen-moar setup 08:31
jnthn Well, yeah, --gen-moar will try to generate the revision specified in MOAR_REVISIOn 08:33
jnthn --gen-moar=master # or so 08:33
nwc10 back to work, and my computer clearly hates me 08:34
we *started* with the network connection not wokring
(bodged that by routing via my laptop and the office wifi, as there are no spare ports, and the phone won't do it for some reason)
but then after the second software update of the day, the X server has decided that the monitor is only capable of 19bah x 1200 08:35
FROGGS jnthn: updated to HEAD/HEAD/HEAD: gist.github.com/FROGGS/0ea5537eb675588baaa2
nwc10 it's feeling like xkcd.com/349/
jnthn nwc10: Monday! 08:39
nwc10 aye 08:40
(currently) the coffee machine still works 08:41
(I assume that the second coffee machine also still works, but I did not test it)
coffee machines not on UPS [yet :-)]
jnthn FROGGS++ # clean Parrot star! 08:44
nwc10 is wondering if the X server is no longer able to probe the monitor to ask it "who are you? what can you go up to?" 08:49
lizmat jnthn: thanks for the --gen-moar=master trick: can confirm sleep sort test works now 08:50
let me know when it's part of the general version, so I can unfudge the test
jnthn lizmat: You can make it so just by bumping revisions ;) 08:51
lizmat jnthn: updating nqp/tools/build/MOAR_REVISION, right ? 08:55
jnthn FROGGS: Have any of the fixes needed to get clean on r-p been in Rakudo or NQP? Or were they just in module space?
lizmat: Yes, with output to git describe --tags in Moar
FROGGS jnthn: modules only 08:56
jnthn FROGGS: OK. 08:57
FROGGS: Cutting a tristar release for this month is looking a bit painful. We'd need point releases of Rakudo and NQP with appropriate patches cherry-pick'd in. 08:58
FROGGS jnthn: true
FROGGS it is even unlikely doable until tomorrow evening/midnight 08:58
to get jvm clean, I mean 08:59
jnthn Yeah, quite.
dalek p: 08e997a | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION to get sleep sort fixes in
08:59
jnthn Trouble is, this prep work kinda needed to have started a week or two before it did. 08:59
While I'm grateful to FROGGS++ and timotimo++ for jumping in and doing a bunch of work on tristar, it's kinda come a bit later than it was needed. 09:00
FROGGS jnthn: yeah, I keep working on it so the next release will be possible 09:04
btw, that is an image of my talk at the gpw last week :P i.imgur.com/UUB7cJO.jpg 09:05
jnthn FROGGS: Yes, I think we could cut a Parrot one this month 09:06
jnthn FROGGS: And then make sure that the Star tests on all 3 are clean *by Rakudo's release date*. 09:07
FROGGS: So we can actually cut a tristar right after.
jnthn FROGGS: ooh, are the whole slides online somewhere? :) 09:07
FROGGS jnthn: can you handle .odp? froggs.de/perl6/v321.odp 09:08
and froggs.de/perl6/use-v5.odp
there is not much text on it anyway :o) 09:09
jnthn FROGGS: yes, I can :) 09:11
FROGGS k :o)
FROGGS damn, that URI "java.lang.IndexOutOfBoundsException" bug is a precomp one :/ 09:25
err, "java.lang.NullPointerException", really 09:26
xiaomiao NPE in a language without pointers, it still amuses me so much 09:27
FROGGS it is again about an exported our-sub that accesses a lexical 09:29
jnthn Java. The language where they call them references until they go wrong, and then they're pointers :P 09:34
FROGGS: huh, I fixed that one :/ 09:35
FROGGS: I thought I did anyway.
FROGGS I thought so too 09:36
lizmat jnthn: apparently the bump in MOAR_REVISION was not enough :-( 09:40
$ perl6 -e '(^10).pick(*).map: { start { sleep $_; .say } }'
Segmentation fault: 11
FROGGS m: (^10).pick(*).map: { start { sleep $_; .say } }
camelia rakudo-moar 5a1c93: OUTPUT«(signal SEGV)0␤Unhandled exception: Missing hll slurpy hash type␤Unhandled exception: Missing hll slurpy array type␤Unhandled exception: Missing hll slurpy array type␤ at <unknown>:1 (/home/p6eval/rakudo-inst-2/languages/perl6/runtime/CORE.setti…»
FROGGS lizmat: did you bump the nqp rev in rakudo? 09:41
lizmat no, but git describe gave me the same as already in NQP_REVISION
FROGGS then pull, and do the git describe again 09:42
your commit was 08e997a, and that should be in there
coffee &
lizmat ack, see it now , duh
dalek kudo/nom: b777559 | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION:
Bump NQP_REVISION to get sleep sort fixes in
09:43
ast: 2f754e1 | (Elizabeth Mattijsen)++ | S17-concurrency/promise.t:
Unfudge sleep sort test
09:49
jnthn lizmat: So, all happy now? :)
lizmat almost: the test now passes, but the simpler one line version still segfaults :-(
jnthn lizmat: Oh...what's your one-line version? 09:50
lizmat $ perl6 -e '(^10).pick(*).map: { start { sleep $_; .say } }'
0
Segmentation fault: 11
jnthn My one-line version was mine
lizmat I guess it is a problem because of the .say inside the thread ?
jnthn No, I suspect it blows up at exit, which still isn't handled too well.
If you gdb it we can confirm that 09:51
The problem is that you start a bunch of things off, but don't await anywhere.
We don't wait for outstanding tasks to complete before exit.
There needs to be an explicit "await"
Or .result, or whatever. 09:52
lizmat indeed: $ perl6 -e 'await (^10).pick(*).map: { start { sleep $_; .say } }' works just fine
jnthn I know that exit time is dodgy as heck at the moment, so I imagine it blows up trying to tear down the VM while things still want to run.
lizmat I guess we need an implicit await on any unkept Promises ? 09:53
jnthn No.
I'd rather not go that way, anyway.
In fact, I think it's really important this simple example does *not* work if you don't await. 09:54
Because people will then quickly learn, "oh, I should always check things worked out"
Or at least they get a chance to.
FROGGS backtrace: gist.github.com/FROGGS/d4c3a1443430b6fc90cd
lizmat well, maybe not segfault, but year, I get your drift :-)
jnthn It's not just about making sure stuff gets done. It's about handling asynchronous failure.
lizmat *yeah
jnthn That is, if you don't await them somewhere, you lose the exception. 09:55
FROGGS ohh, that is not a dabug build :/
debug*
jnthn We could of course do something about promises that silently fail...
But it's really tricky.
You can't just say "well, if there's no 'then'", because then it's a race. 09:56
lizmat yup
FROGGS backtrace on a debug build: gist.github.com/FROGGS/d4c3a1443430b6fc90cd 09:57
jnthn FROGGS: Thanks. I'll get the main thread just ripped the rug out from under a running one. 09:58
*bet
jnthn (like, freed all its objects) 09:59
FROGGS jnthn: can I check something with that thingy in gdb to confirm that?
jnthn FROGGS: Well, you can check where the main thread is at... 10:00
If you can get a bt on that
cognominal I have the perl6 interactive shell that loops on printing the prompt. What gives? 10:03
jnthn cognominal: What versions of stuff, exactly? There was an old bug that did that which was - afaik - fixed... 10:04
cognominal I compiled yesterday from the latest git
jnthn Hmm
cognominal using moarvm
jnthn wonders if somehow the linenoise submodule is behind...
Shouldn't be, though.. 10:05
cognominal strange because I think I have seen a patch from about that in the #perl6 log
jnthn Right.
What platform?
cognominal mac 10:09
yesterday, I have seen there is some code for pir for linenoise that was apparently missing from the moar side. But I did not understand how things fitted together so I may be wrong. 10:11
s/pir/parrot/
jnthn lizmat: You're on Mac also iirc? Does the repl on r-m work for you? 10:13
lizmat check
$ perl6 10:14
> say "foo";
^C
seems not
cognominal not the problem I describe though. 10:15
FROGGS >/usr/bin/SciTE -grep ~~~~ "*" "num_user_threads"
/home/froggs/dev/star/work-m/rakudo-star-2014.03/MoarVM/src/moar.c:27: instance->num_user_threads = 0;
/home/froggs/dev/star/work-m/rakudo-star-2014.03/MoarVM/src/core/instance.h:91: MVMuint16 num_user_threads;
/home/froggs/dev/star/work-m/rakudo-star-2014.03/MoarVM/src/gc/orchestrate.c:432: while (tc->instance->num_user_threads) {
jnthn No... 10:15
FROGGS jnthn: there is nothing that increases the num_user_threads?
lizmat doesn't use a REPL like ever 10:15
jnthn FROGGS: Uh...maybe not :)
FROGGS: So *that's* why it doesn't hang at exit. 10:16
:)
I suspect it should be a num_foreground_threads though. 10:17
Since those are the ones we want to wait for.
cognominal ho, I was running in an emacs window running a shell. It is a very degenerate terminal. When I run in a more normal terminal, I don't have the problem 10:24
I am curious what assumption makes it to break under emacs 10:25
lizmat, do you use the shell in emacs?
lizmat is a vim user on OS X 10:27
I don't need another operating system :-)
using standard Terminal
FROGGS jnthn / lizmat: now that I increase the thread counter, I see output (like ten numbers), but then it hangs 10:29
cognominal yea, I agree, I am trying to stop my addiction to emacs but I always go back to it. :(
jnthn FROGGS: Right.
jnthn FROGGS: Thing is, we go to a lot of effort at exit time to clear up "properly" 10:30
FROGGS: Thing is, the OS can do that way faster.
FROGGS: What I *want* is a flag to Configure --cleanup-at-exit or so, that you can use if you really want a Moar that tries the cleanup.
FROGGS: But otherwise it'll just exit(0) 10:31
jnthn FROGGS: We still should wait for non-app-lifetime threads at exit, mind. 10:31
FROGGS: If you can put the flag in and get something into config.h, that's a great start in that direction
FROGGS: I bet we can get faster spectests thanks to the faster exit too. 10:32
FROGGS ahh wait, only increasing that counter is not enough, I have to decrease it also *g* 10:32
I will look at a proper implementation after lunch
jnthn FROGGS: Yeah but I think we don't want a threads counter, but a foreground threads counter. 10:33
FROGGS yeah, I understand that
jnthn OK, nice :)
(Thread pool ones are background threads, to be clear. Or "app lifetime" as we've called them.)
lizmat is looking forward to even faster spectests 10:41
lizmat given this code: 11:01
for ^10 { sleep rand; .print }
wouldn't the "race" prefix: 11:02
race for ^10 { sleep rand; .print }
lizmat not just simply transmogrify that to: 11:02
await do for ^10 { start { sleep rand; .print } }
??
aka: put an "await do" in front, and put a start {} around the body of the loop ? 11:03
(at the AST level of course)
jnthn lizmat: No, it's a form of hyper 11:06
lizmat: And it'll want implementing differently, given it's a data-parallel operation 11:07
lizmat: Which menas it'll want to divide the data space in a more effective way that task-per-item, which gets really costly if you've thousands of items.
lizmat: Also "await" is less than awesome 'cus you block until you have all the results, whereas you tend to want to give them back as soon as availble.
lizmat ah, duh, race / hyper should return a lazy list :-) 11:14
jnthn lizmat: Well, it's eager, but it's an iterator still so yeah, it can be consumed as it produces. 11:16
lizmat: Pm has figured out how to re-organize lists to deal with this stuff.
lizmat: And now we actually have concurrency support in two backends it can actually be done properly. :) 11:17
lizmat yeah!
looking forward to it! :-)
jnthn Me too! ;) 11:18
Hunger trikes...
uh, strikes..
jnthn lols at the mental image of hungry trikes...
shop &
masak .oO( CHAAAAAAINS ) 11:20
colomon Auth::PAM::Simple, MIME::Base64, and Math::ThreeD are currently failing their prerequisites? Time::Duration just failing. 12:10
FROGGS can't believe it wrt MIME::Base64 12:11
FROGGS colomon: MIME::Base64 has no dependencies 12:18
colomon hmm, yes, the exact failure point is a bit wonky in emmentaler. Let me see... 12:19
FROGGS colomon: what is new im M::B64 is that it does some magic with a Build.pm which gets parrot specific code in place for parrot, or falls back to a pure perl version 12:20
colomon did you do that?
FROGGS no
colomon well, somebody++ 12:21
been saying something needed to be done there… :)
FROGGS I was just involved in the discussion
colomon Anyway, it just went fine when I tried it by hand in pandabrew
so I dunno why it is failing in emmentaler. but it has for the last two days. 12:22
FROGGS see github.com/perl6/Perl6-MIME-Base64...its/master
Build.pm changes are exactly two days old
hoe does emmentaler install stuff?
colomon using panda… hmmm... 12:23
FROGGS hmmm, weird
colomon it calls into panda 12:24
$panda.resolve, I think
github.com/tadzik/emmentaler/blob/master/smoker 12:25
colomon maybe emmentaler doesn't properly support modules overriding Build.pm or something? 12:26
FROGGS I dunno 12:37
nothing obvious there that would explain it
dalek kudo-star-daily: d6c4eb9 | coke++ | log/ (5 files):
today (automated commit)
13:09
kudo-star-daily: 59e1ed4 | coke++ | log/ (5 files):
today (automated commit)
[Coke] weird. no commits in the other repo since friday. :( 13:11
FROGGS :/
[Coke] it's running now, last commit was friday, no unpushed commits. 13:12
I'll double check it after the run today to make sure something goes out.
[Coke] wonder if i should change it so it auto commits. (right now it needs me to enter a password for the keys before it can push) 13:14
FROGGS +1 for autocommit :o) 13:15
masak TheDamian's email about 'where' matching in signatures is intriguing. 13:17
has someone made a rakudo branch yet trying out that change? 13:18
FROGGS I've not seen commits in that direction... and I wonder how much impact this change would have
I guess not too much will break
jnthn Well, what is missed in the email is the reason that they are inferred today. 13:19
multi fac(Int $x) { $x * fac($x - 1) }
multi fac(0) { 1 }
masak moritz: feels like an eval line is missing to camelia in rt.perl.org/Ticket/Display.html?id=121518
jnthn That will break with what Damian is suggesting.
masak jnthn: indeed. 13:19
FROGGS ohh, in that case panda will break
masak :/
FROGGS it has something like: multi method stage('Compiling', ...) 13:20
jnthn (It breaks 'cus we'll take the type as Any on the second candidate and multi-dispatch is primarily on types, and then on constraints as a fallback)
(And Int is more specific than Any)
jnthn should reply to the Damian post noting this. 13:22
masak aye. 13:26
jnthn As trade-offs go, Damian is probably on the right side of usefulness. 13:27
His DWIM just gets us a new WAT. :)
(Much as the current DWIM gets other WATs...) 13:28
cognominal WAT?
FROGGS DWIM! 13:29
masak WIT? DWAM! 13:30
FROGGS WDID? BAMM! 13:32
arnsholt jnthn: Is there anything I'm missing in NQP #145? (Beyond the fact that there's a fair chunk of code that'll have to be changed) 13:43
It seems like a leftover from ye olden days 13:44
jnthn " (we have to keep using the old way in the NQP code because of the stage0 compiler)" 13:45
Not sure that's entirely true any more.
s/any more//
Since stage0 will have its own HLL::Grammar etc.
arnsholt Oh. Troo dat
jnthn So I think the bootstrap probably doesn't come into it at all :)
Which is nice.:) 13:46
arnsholt That's a very good point!
jnthn API wise, I'd look to how STD has it.
But yeah, it's a hash-y hting.
*thing
arnsholt I'll do that
Or else, just keep the API more or less as-is, but with a slurpy named argument rather than a string that's processed into a hash 13:47
FROGGS jnthn: the NPE in URI does not seem to be related to accessing a lexical, it even explodes when I just put a "say 1; 443" in the sub's body 14:06
FROGGS when I strip the say it works 14:06
jnthn FROGGS: say is a lexical 14:07
FROGGS >:<
jnthn Try nqp::say('foo') and you're see
FROGGS err >.<
jnthn ll
FROGGS jnthn: nqp::say works :/ 14:09
jnthn So it's lexical after all
FROGGS yeah
[Coke] moritz: VM should be multi-select now. 14:11
FROGGS ohh, that was quick 14:12
lizmat off for some presenting& 14:16
FROGGS[mobile] jnthn: I am going home now and will stare more at URI, but I have no Cluj how to debug this... 14:38
jnthn FROGGS[mobile]: Well, if we can't find a real fix we can just put in a Cluj... 14:39
FROGGS[mobile] *g*
timotimo i seem to be missing a font from froggs slides 15:00
FROGGS timotimo: I've uploaded the files as .pdf too, perhaps the font is embedded in these 15:02
timotimo: and there seems to be a bug in libreoffice that swallows the unicode chars in presentation mode
(only the shadow is correct)
timotimo yikes. 15:10
[Coke] anyone know if the PM support team hangs out on IRC anywher? 15:11
FROGGS [Coke]: what is that? 15:15
masak FROGGS: url?
timotimo FROGGS: the background image seems very distracting to me, fwiw
but since it's only a few words per slide, that's fine i guess 15:16
FROGGS froggs.de/perl6/v321.odp - froggs.de/perl6/use-v5.odp
timotimo sadly that also makes the slides less than helpful to read on their own :P
FROGGS froggs.de/perl6/v321.pdf - froggs.de/perl6/use-v5.pdf
*g*
timotimo where did you get these pretty pictures, btw?
FROGGS I know
there is a memegenerator
ahh wait
you mean the background? 15:17
timotimo yes
FROGGS hold on
jugga-lizzle.deviantart.com/art/Rai...I-51825680 15:18
masak FROGGS:++ # slides 15:20
FROGGS thanks!
masak FROGGS: on the second one, slides 27 and 28 appear to be identical.
FROGGS masak: it is all your fault :o)
retupmoca panda on rakudo-moar HEAD (+nqp/moar HEAD) seems to be hanging once bootstrapped
FROGGS :o( 15:21
masak: the color of "use v5" hanges
changes*
masak oh!
retupmoca almost feels like it's hanging when trying to download projects.json, but I'm not sure
wget gets projects.json fine
timotimo the color changes are very mild
FROGGS timotimo: I know, and I think I won't do that again, sine it is even worse using a beamer 15:22
timotimo mhm 15:24
"projector" is the proper english term :)
FROGGS ahh, okay :o) 15:25
arnsholtAtHome o/ 15:28
FROGGS o/
arnsholtAtHome jnthn: We still don't have any syntax for hash literals in NQP, do we? 15:29
[Coke] FROGGS: PM == perl mongers
btyler when iterating over a simple list (my @abc = ('a' .. 'z'), for example), what's the best way to have both the list item and its index available in the for loop block? is it something like for @abc Z 0 .. @abc -> $letter, $index { } ?
FROGGS [Coke]: ahh, hmmm, no idea, sorry :/
TimToady a "beamer" isa BMW in the US
FROGGS TimToady: here too in some areas 15:30
cognominal FROGGS, a multicolor background may not the best idea
perlpilot btyler: for @abc.kv -> $i, $v { ... }
FROGGS btyler: for ('a' .. 'z').kv -> $i, $v { say "$i $v" }
cognominal * may not be
btyler ah ha, awesome, thanks. perlpilot++, FROGGS++
I was going through rosetta code and perl6 maven thinking "there must be an easier way than zipping" 15:31
jnthn arnsholtAtHome: No, just nqp::hash(...), which isn't really syntax... :)
retupmoca re: panda: it does indeed hang when attempting to get projects.json, rolling back to moarvm fe0962fcb89b3b66deb3170da0faa2f9f13ce4ea fixes it
FROGGS cognominal: that was no problem, because the background was dark enough and so the contrast
retupmoca moarvm 1261936ddb75e91c78a91d830dad3a575d17ffe3 looks like the bad commit
cognominal FROGGS, happy to hear that 15:32
retupmoca jnthn: possibly a deadlock or something?
jnthn retupmoca: I'm guessing it tries to double-acquire a mutex by accident.
retupmoca: Well, the patch says "first pass at.." for a reason
FROGGS cognominal: but yeah, it is not really needed/useful because it is either disturbing or you can't see the background 15:33
retupmoca oh indeed, I'm not expecting HEAD/HEAD/HEAD to work properly in general
jnthn retupmoca: It was hastily written late at night to unbust something lizmat++ wanted for her talk today :)
retupmoca: I did spectest it, and it failed to show problesm there.
retupmoca: Do the socket tests look good for you on HEAD/HEAD/HEAD?
retupmoca jnthn: how do I run one spectest file? 15:34
jnthn perl6-m -Ilib t/spec/S32-blah/blah.t
Or .rakudo.moar instead of .t if it's a fudged one
arnsholtAtHome jnthn: Oh, right. But that one takes arbitrary numbers of arguments, which is close enough for me! =) 15:35
I just wanted to avoid my %hash; %hash<foo> := "bar"; etc, etc, etc 15:36
jnthn ah, yes
timotimo oh, a recent commit ended in "junction autothreading still seems broken. i hope timotimo fixes it" 15:37
do we have some code that shows the problem? i'm not sure what's wrong with that 15:38
retupmoca jnthn: IO-Socket-INET.t has 11 fails for me: gist.github.com/retupmoca/9895132
jnthn retupmoca: OK, I'll have to do it on my linux VM, then. 15:39
retupmoca: On Windows mutexes are reentrant for free. pthread ones ain't.
So my Windows spectest wasn't good enough to catch all bugs I guess.
btyler playing with promises on moar, jnthn++, this is super fun 15:40
btyler they were super fun on perl6-j too, just more of a case of delayed gratification :) 15:40
retupmoca jnthn: gotcha. And yes, jnthn++ for threads and bughunting 15:41
jnthn I suspect I should actually pull the locking out of syncstream entirely...and have it in the io.c functions. And have the release stack for if exceptions happen... 15:43
perlpilot I just(re)built rakudo and from the REPL, it seems to just hang on the first statement. 15:45
jnthn :/
perlpilot Is that a known-but-sono-to-be-fixed thing?
jnthn liblinenoise is seriously on the chopping block at this rate. 15:46
btyler perlpilot: OSX 10.9, same here
JimmyZ o_O
btyler assuming we mean perl6-m
perlpilot oh, yes, it's just perl-m
er, perl6-m
jnthn If somebody writes us a probe for readline so we can automatically detect its availability, then I'll be happy to toss linenoise. 15:47
Ulti im building atm on OSX 10.9.2
jnthn It's better to have a REPL with no readline support than a busted one.
perlpilot (I'm on ubuntu 12.04 fwiw) 15:47
JimmyZ jnthn: you mean libreadline? 15:48
jnthn JimmyZ: Yes. The one that most things used that tends to actually work ;)
We already ahve a configure option for it.
It just has to be set manually at present. 15:49
JimmyZ yeah
Ulti yeah mine hangs too :/ so readline might be to blame? 15:50
jnthn This is the nth time we've had some problem linenoise related. I've kinda had enough of it.
btyler the infinispew was fairly amusing :)
"you want a prompt? have some prompts! all the prompts!"
Ulti tries from a file 15:51
jnthn Oh, I wonder if the hang this time is related to the mutex thing instead of linenoise though...
In which case, it's not linenoise's fault after all...
...this time. :)
Ulti yeah from a file its all good
jnthn OK.
I'll have a look at the locking stuff in a bit. 15:52
timotimo tries to run from a file
jnthn timotimo: IT'S CATCHING UP WITH YOU! RUN FASTER!
timotimo actually, it seems like the file isn't running at all 15:53
huh. interesting.
where's the presentation lizmat is doing right now? in Cluj?
JimmyZ would like to improve linenoise, we will have something like Jline with nativecall :) 15:55
timotimo right, cluj 15:56
timotimo and TimToady is touring china to do lots of presentations on Perl 6, too? :) 15:56
vendethiel preaching people 15:57
timotimo preaching perl? 15:59
[Coke] retupmoca: jnthn's command to run the file won't fudge it if it needs fudging. 16:00
t/fudgeandrun path/to/file.t works, as does "make path/to/file.t" - those both fudge as needed (to run for a specific backend, pass --backend to fudgeandrun 16:01
retupmoca [Coke]: Ah, much nicer. I just did make spectest to get everything fudged, then did ^C to run the one I wanted 16:02
FROGGS retupmoca: I do exactly that too :o)
timotimo FROGGS: you said you'll have something cool to show off WRT S11 16:10
is there something i can link to for today's p6weekly?
jnthn Ooh, p6weekly :) 16:12
timotimo i kind of think the current version of the weekly is falling short of what actually happened 16:13
jnthn timotimo: I guess you already got the moar-conc merge in there? 16:14
FROGGS timotimo: hmmm, the only cool thing would be that panda will connect to CPAN, but we are not there yet
timotimo p6weekly.wordpress.com/?p=102&s...994608e4cf
timotimo jnthn: yup 16:14
jnthn timotimo: Could be worth making clear the textfiled thing at the JVM level is a representation of the bytecode, not the source code. 16:16
timotimo ah, yes good point
jnthn timotimo: And the reason for it was to use a JVM library to generate bytecode.
Also could say what merging moar-conc gives: promises, channels, supplies, threads... 16:17
timotimo will do
jnthn also, grammar-o in the final thing 16:19
"he'll something"
timotimo ah yes, that whole section is incomplete
(only one bullet point? that's not good style)
FROGGS: is the cpanda stuff something i should point up in the "upcoming" section of the post? 16:20
or would you rather i wait another week?
moritz masak: (re eval line missing in RT #121518) fixed, thanks 16:21
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121518
moritz moritz.faui2k3.org/images/ida-1.jpg # our second daughter, Ida, was born today 16:25
arnsholtAtHome Congrats!
timotimo congrats \o/
moritz thanks
vendethiel congrats :)! 16:27
jnthn moritz: Awww! Congrats! :) 16:29
moritz thanks
perlpilot moritz: Congrats! 16:30
arnsholtAtHome Whoa. <O()> refactor works on the first try, apparently \o/ 16:32
simula67 congrats moritz
moritz arnsholtAtHome: that's suspicious :-)
arnsholtAtHome I know! 16:33
Still, it's a mostly-deleting-things refactor, so I might actually have gotten it right on the first try ^_^
moritz arnsholtAtHome: expect subtle misparses when multiple right-associative operators with the same precedence have an adverb, or something
arnsholtAtHome Still, we'll see what happens when I apply the matching changes to Rakudo 16:34
Pretty happy with 70 insertions and 152 deletions though 16:35
moritz
.oO( but don't expect to get paid for -82 lines of code! )
16:36
jnthn I'm sure we can afford to pay for -82 lines of code exactly what the going rate for +82 lines of code is around here :P 16:36
arnsholtAtHome =D 16:37
cognominal congrats, moritz 16:38
timotimo arnsholtAtHome: what's your intuition, will this give performance improvements? 16:40
less memory usage?
jnthn Less string operations/parsing surely. 16:41
timotimo at startup time, compile time or run time? 16:42
jnthn compile time
arnsholtAtHome Slightly less compile time, maybe 16:46
Mostly it's just unneeded complexity, I think 16:47
jnthn Aye
I won't miss the hack parser :) 16:48
arnsholtAtHome Me neither. I suspect it dates back to PGE 16:56
cognominal it does 17:02
timotimo published 17:03
timotimo i've already had 61 visitors and 85 views on the blog today even though i hadn't published the weekly post yet 17:05
interesting
[Coke] moritz++ # congrats! 17:16
vendethiel timotimo, so, you fixed that SDL bug :D ? 17:21
jnthn Dinner time, then Perl 6 time :) 17:21
FROGGS timotimo: I'd wait 17:27
moritz: \o/
FROGGS r: my \bits = 8*56; sub little-endian($w, $n, *@v) { (@v X+> ($w X* ^$n)) X% (2 ** $w) }; say little-endian(32, 2, bits); 17:56
camelia rakudo-parrot b77755, rakudo-jvm b77755: OUTPUT«448 0␤»
..rakudo-moar b77755: OUTPUT«448 448␤»
FROGGS nr: say (8*56) +> 32 17:58
camelia rakudo-moar b77755, niecza v24-109-g48a8de3: OUTPUT«448␤»
..rakudo-parrot b77755, rakudo-jvm b77755: OUTPUT«0␤»
FROGGS ??
now that is interesting 17:59
retupmoca r: say (8*56) +> 31 18:02
camelia rakudo-parrot b77755, rakudo-jvm b77755, rakudo-moar b77755: OUTPUT«0␤»
FROGGS nr: say 448 +> 33 18:04
camelia rakudo-moar b77755, niecza v24-109-g48a8de3: OUTPUT«224␤»
..rakudo-parrot b77755, rakudo-jvm b77755: OUTPUT«0␤»
retupmoca r: my $x = 8*56; my int $y = 8*56; say $x +> 32; say $y +> 32; 18:05
FROGGS I see
camelia rakudo-moar b77755: OUTPUT«448␤0␤»
..rakudo-parrot b77755, rakudo-jvm b77755: OUTPUT«0␤0␤»
timotimo FROGGS: too late! =o 18:12
FROGGS for what?
timotimo i've published the post and it says you'll have something with panda + cpan + pause some time soon 18:13
FROGGS too late, like in sleeping until 3 p.m.? :P
ahh, yeah, that's cool :o)
timotimo
FROGGS timotimo: btw, the gpw was mostly boring 18:14
FROGGS especially when you are not familiar with Perl 5 (or interested in its use/development) 18:15
timotimo oh
i thought you were about to say "especially when you were not around" 18:16
nwc10 aha, this explains why FROGGS was mostly in a laptop, or dealing with the FROGGSlets
FROGGS nwc10: one reason was that I had a bad headache on wednesday or thursday and the sound system had this feedback problem 18:17
there was a talk about static languages I wanted to attend but I missed it because I talked to somebody :/ 18:18
timotimo i'm hoping for good recordings some time soon
FROGGS the talks of saywerx++ and ovid++ where very entertaining though 18:18
FROGGS and the lightning talks are always good 18:19
FROGGS timotimo: I hope so too 18:19
ahh, mst++'s talk was very nice also
timotimo i'm kind of spoiled by the CCC events i've attended so far
a friend of mine is part of the video team and they've got a quite nice setup with a Flight Case that contains a desktop, laptop, camera and network equipment so that you can basically plug them all together and have instant event recording 18:20
and streaming
additionally, there's usually a person on site to monitor the stream and recording for any audio issues that may arise 18:24
FROGGS in hannover was a guy that looked like he knows what he is doing, so I really think the quality is okay and they will be up soon 18:25
moritz was GPW a single track? 18:27
FROGGS yes 18:28
moritz that makes recording kinda easier 18:29
jnthn back from noms 18:38
arnsholtAtHome o/ 18:39
Making Rakudo work with refactored O is non-trivial
jnthn Now that we have a clean p-*, is anybody up for taking this release? I'd put my name down 'cus I expected it'd be the first tristar one and wanted to make sure it happened. But now it'll be off master...it doesn't have to be me, and if I don't have to do it I can do other stuff... :) 18:40
FROGGS yeah, I can imagine
arnsholt++ # stage printing is way nicer now :o)
jnthn: I can do that 18:41
jnthn stage printing?
FROGGS I had some sort of practice the last days...
jnthn: it prints "Parse: "
jnthn FROGGS++
FROGGS and after a while the numbers 18:42
jnthn Oh!
nice!
moritz won't that mess it up even more for concurrent builds? :-)
jnthn ///o\
moritz can always find a grain of disagreement
jnthn Not you don't!
FROGGS I love moar soo much! it takes ages for perl6-p to compile the modules in star, and it even takes longer for perl6-j 18:43
arnsholtAtHome moritz: No, it'll simply be clearer that the stagestats shouldn't be looked at too much when you're doing a parallel build =) 18:44
FROGGS yay, Digest::MD5 now works on moar :o) 18:44
moritz ponders doing the star release, but realizes he's too tired 18:51
FROGGS I just need someone that uploads the release thingy
but when I do that today, it will already be midnight 18:52
cognominal nbc? 18:53
what is the nbc state? 18:54
* stage
FROGGS do you mean mbc?
cognominal yes, oops, time to rest 18:55
moritz moar bytecode 18:55
cognominal no wonder I can't ack it
FROGGS that is when it write down the file as .moarvm, which is --target=mbc
cognominal how come mast stage is just after pare state when ranked in decreasing time. What can be so costly? 18:57
moarvm++ 18:58
moritz cognominal: it operates on the AST, which is pretty big
FROGGS it is about translating the ast to the moarvm specific ast
it takes a while to iterate over a tree structure that is several megabytes in size 18:59
(and there happens more than iterating of course) 19:00
cognominal but ast generation is not even mesurable on my laptop, so I would expect mast stage time would be negligible as wel 19:01
benabik IIRC, stage ast is a misnomer, as most of the AST generation actually happens during the parse.
FROGGS the ast generation time is included in the parse stage
cognominal ha, that's why!
make sense now 19:02
benabik I think stages AST is just `$match.ast`
timotimo that's correct 19:04
we could add a random sleep to it if you like
jnthn doesn't like :P
moritz m: use 5.014;
camelia rakudo-moar b77755: OUTPUT«===SORRY!=== Error while compiling /tmp/TctdPx_ATM␤Undeclared routine:␤ use used at line 1␤␤»
moritz that's... less than awesome 19:05
benabik m: use v5.014;
camelia ( no output )
benabik That is also LTA in a different way…
FROGGS benabik: install v5 :o) 19:05
moritz benabik: yes, but not unexpected 19:05
benabik FROGGS: Apparently I don’t have to. ;-)
FROGGS *g* 19:06
[Coke] OH. 19:12
[Coke] There's a hanging java test. 19:12
S17-concurrency/channel.t..........................
jnthn Moar HEAD should now fix the sockets test regression and REPL hang on non-Windows. Confirmation welcome. :) 19:15
[Coke] jnthn: any word on the channel.t hang on jvm? (this is, of course, the one backend that I am not running through ulimit, because reasons.) 19:16
moritz builds all the backendses
[Coke] s/word/thought/
jnthn [Coke]: Yeah, japhb said a hang showed up for him too in something he'd built using channels. 19:17
[Coke]: Don't know the root cause yet, but I suspect it was one of the changes made going from Java interop to nqp:: ops as part of the portable concurrency work. 19:18
[Coke]: Will investigate in a moment.
Just wanted to fix the I/O thing first. :)
[Coke] ok. that's likely the source of the issues over no roast runs completing this weekend. (combined with the lack of ulimiter for that backend.) 19:19
no worries.
jnthn Got a latest JVM build going now. 19:20
[Coke] I killed the run for today.
will add a ulimit and restart shortly.
... and killed the saturday & sunday runs, too. whoops. :)
jnthn Use all the CPUs! 19:21
[Coke] hurm. because jvm ran last, I can probably salvage all the other runs for the weekend. 19:22
btyler rebuilding everything to check out the REPL fix
jnthn btyler: moar should be enough 19:23
btyler: Just point it at the same install location as you already had it.
[Coke] ... bah. no, they got confused because they were running simultaneously. adios. 19:23
btyler jnthn: already about halfway through my hacky little 'pull and update moar/nqp/rakudo for -m and -j' script. noted for next time though 19:25
retupmoca jnthn: I had to rebuild nqp/rakudo - I got a segfault if I just did moarvm 19:26
jnthn: spectest is passing now though
jnthn retupmoca: hm, curious 19:27
retupmoca: Oh, I changed a struct or two.
[Coke]: Yeah, I've got it hanging here
jnthn Seems test 11 or 12 hang it. 19:29
lue hello world o/
FROGGS hi lue
timotimo hellue
retupmoca jnthn: and now panda works again! \o/ 19:30
jnthn retupmoca: \o/ 19:31
[Coke] huh. looks like both rakudo.parrot and rakudo.jvm are not ulimited (but I left it in for moar? weird.) 19:32
ssutch anyone seen this trying to make in the rakudo directory after --gen-moar --backends=moar "make: write error"
[Coke] I'm at dayjob. anyone wants to submit a pull request for coke/perl6-roast-data that ulimits rakudo.jvm and rakudo.parrot, ++them (otherwise I'll do it tonight) 19:33
ssutch: I get that on OS X all the time.
ssutch: never on linux.
benabik I see it building nqp. Just re-running make seems to work. I’ve never bothered to try to fix it.
(on OS X)\
btyler jnthn: REPL on perl6-m seems to be in order now, OSX 10.9.2
ssutch yeah it fails in making nqp 19:34
timotimo oh hey ssutch
nice to see you again :)
btyler ssutch: I get that all the time. you can 'make install' again and it'll complete successfully, or ignore it, it doesn't seem to break anything
ssutch ok cool
this is the log for reference gist.github.com/samuraisam/3e159740c4ab00c73558 19:35
timotimo Segmentation fault (core dumped)
make: *** [CORE.setting.pbc] Error 139
:(
jnthn timotimo: make clean
timotimo can do
will p-clean be enough?
jnthn oh wait
Parrot?
timotimo i think?
jnthn I thought you'd just pulled latest Moar...
OK, then no idea. 19:36
timotimo i did 19:36
i perl Configure.pl'd, fwiw
that should cause the same effect as a make clean would, no?
btyler nice, latest moar fixes the hang that prevented panda rebootstrap from finishing 19:38
timotimo jnthn: re-running make install seems to get around the problem this time 19:38
dalek p: cf3bdf1 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Fix app-lifetime thread regression on JVM backend.

The thread pool scheduler wants its threads to be background ones, but they were not marked as such. This caused hangs at process end.
19:41
jnthn [Coke], japhb: ^^ should fix the hangs the two of you reported :) 19:42
FROGGS jnthn: btw, I stopped earlier hacking on the moar threads because I didn't see how to distinguish background from foreground threads 19:43
[Coke] jnthn++
FROGGS $ ./perl6 -e 'say $*EXECUTABLE' 19:44
IO::Path</home/froggs/dev/star/work-m/rakudo-star-2014.03/perl6-m>
moritz: you might like that
btyler can postfix 'for' loops have block-scoped variables? like 'say "$letter is letter number $index") for ('a' .. 'z').kv -> $index, $letter;' ? rakudo doesn't seem to like that
er, excuse the extra paren after $index 19:45
moritz FROGGS++ 19:46
FROGGS btyler: no, because the thing starting with "->" is a pointy block 19:47
[Coke] can't postfix that, I don't think. works fine in a block, though.
FROGGS like a sub with a signature
you cannot omit its block
moritz: I think I am going to commit it, even if it is not specced yet 19:48
btyler hm, ok. so how do I get at the variables generated by .kv in a postfix for? $_ works for single values (ie say "hi $letter" for ('a' .. 'z');) 19:49
er * "hi letter $_"
jnthn m: { say "$^a and $^b" } for 1..10; 19:52
camelia rakudo-moar b77755: OUTPUT«1 and 2␤3 and 4␤5 and 6␤7 and 8␤9 and 10␤»
btyler ah, got it. wrapping it in a block and using $^a/$^b does the trick. less readable, but nice for quickly expressing an idea
jnthn ah, you found it just as I wrote it :)
btyler heh, yep :) thanks 19:53
FROGGS m: ->$a, $b { say "$a and $b" } for 1..10; 19:55
camelia rakudo-moar b77755: OUTPUT«1 and 2␤3 and 4␤5 and 6␤7 and 8␤9 and 10␤»
FROGGS m: -> $a, $b { say "$a and $b" } for 1..10;
camelia rakudo-moar b77755: OUTPUT«1 and 2␤3 and 4␤5 and 6␤7 and 8␤9 and 10␤»
FROGGS m: sub ($a, $b) { say "$a and $b" } for 1..10;
camelia ( no output )
FROGGS m: do sub ($a, $b) { say "$a and $b" } for 1..10;
camelia ( no output )
FROGGS ohh, yeah, well
:o)
m: sub ($a, $b) { say "$a and $b" }() for 1..10; 19:56
camelia rakudo-moar b77755: OUTPUT«Not enough positional parameters passed; got 0 but expected 2␤ in sub at /tmp/yGpwzPG1L9:1␤ in block at /tmp/yGpwzPG1L9:1␤␤»
FROGGS w/e :P
jnthn By that point you might as well have map 1..10, sub ...'d it :P 19:56
FROGGS the pointy in front of the for is nie though 19:57
nice*
jnthn *nod*
btyler neat neat neat :) FROGGS++, jnthn++ 19:57
[Coke] I find the pointy on the front evil! 19:58
FROGGS O.o
I like pointies in every position :o)
[Coke] m: -> $a { "eek" }
camelia ( no output )
[Coke] m: ->{} 19:59
camelia ( no output )
lue Looking at S32::Str, I'm not quite sure how .wordcase is necessary (instead of a normal .subst, which the documentation helpfully provides for what .wordcase does) 20:05
BenGoldberg m: -> $a, $b { say "$a and $b" } for 1..11; 20:08
camelia rakudo-moar b77755: OUTPUT«1 and 2␤3 and 4␤5 and 6␤7 and 8␤9 and 10␤Not enough positional parameters passed; got 1 but expected 2␤ in block at /tmp/14ODZeJPaE:1␤␤»
timotimo i'm still not quite understanding where the $(PREFIX) comes from that NativeCall seems to be plopping into its test suite 20:12
jnthn timotimo: MoarVM's configure output, I think. 20:13
timotimo: could always s/// it away if it's making trouble
timotimo okay, and now i'm not sure how to properly fix it :)
fortunately, on my shell it evaluates to "" and a message on stderr 20:14
jnthn Oh, for where to fix it, see t/CompileTestLib.pm or so 20:15
bbi10
timotimo oh
well, in that case that would be acceptable
FROGGS yeah, I tried to fix that one too but gave up 20:20
timotimo is doing some inconsequential stuff instead 20:21
timotimo somehow panda install . infiniloops 20:23
panda install ./panda, too 20:24
(the first one was running panda install inside panda/)
huh 20:25
when i strace it, it ends prematurely 20:26
moritz measurement collapses wave functions 20:26
timotimo yeah >_> 20:27
moritz and sometimes infinite loops :-)
timotimo oh 20:28
it did work
it just took crazy long
dalek kudo/nom: e9b185c | (Tobias Leich)++ | src/core/terms.pm:
add $*EXECUTABLE, an absolute IO::Path to the perl6 runner

  $*EXECUTABLE_NAME is nice, but when it just contains "perl6-m" then you
cannot spawn a shell with it when "perl6-m" is not in PATH.
20:29
timotimo that's interesting 20:34
i just, on a whim, ran perf record -- panda list
MVM_frame_dec_ref gets the third spot in the list of time spent
23% time spent in MVM_interp_run, which i suppose is okay? 20:36
jnthn Yes, that's the main interpreter runloop. 20:39
timotimo that's what i figured, ay
aye
lue correct me if I'm wrong, but after reading/skimming the pack tutorial for Perl 5, it seems to me that pack/unpack would really only be useful in Perl 6 for interchange with lower-level systems, and not all the stuff doable with grammars etc.
timotimo that seems about accurate, i suppose? 20:41
FROGGS I'd say so
timotimo i'm not sure how to interpret this output, the cmp instruction of MVM_frame_dec_ref has a high number next to it 20:42
FROGGS unpacking is about getting from a text/buf to a structure, but you have a plan beforehand and you don't have that when you parse something
lue I mean, perlpacktut shows how utterly unmaintainable the regex version of a table processor is, but I imagine grammars make it sooo much easier :)
timotimo table processor? 20:43
lue well, processing a table with fixed-width columns.
timotimo oh
well, fair enough
lue perldoc.perl.org/perlpacktut.html#Packing-Text
timotimo you should check out the pod table stuff :P
lue I'm just going through S32::Str, because it's due for an S15-influenced rewrite, and it's kinda surprising to see how old and crufty it really is (once you read more than summaries of what each function does, that is :P) 20:45
timotimo oh 20:46
does panda --verbose list work well for anyone here? :) 20:49
lue looks good from here. (Unless there was a very recent panda update changing it, then I don't know) 20:51
timotimo okay
yeah, i just saw how i broke it :)
lue I assume StrPos and StrLen are still a part of Perl 6, just a very NYI one? 20:52
timotimo not 100% sure 20:53
i *think* they would be?
PerlJam What would the alternative be? :)
timotimo integers! 20:54
PerlJam great! What would they mean? ;)
lue Yeah, just re-read S02's take on the matter, and being able to track independent of abstraction level sounds useful. However, the different NFs are now their own types, and encodings are usually the realm of Bufs, so...
timotimo mhm 20:55
lue Something more informative than a bare integer sounds good to me; it's just hard to see where that's needed, because apparently no-one's needed StrPos and StrLen for all these years :) 20:56
timotimo mhh 20:57
people have not been using Perl 6 terribly much during that time, though :P 20:58
not enough dogfooding going on :P
PerlJam also, people may have been avoiding instances where they would use StrPos/StrLen because they aren't implemented 20:58
lue ech, "If a StrPos or StrLen is forced into a numeric context, it will assume the units of the current Unicode abstraction level." doesn't make sense anymore.
(conclusion: propagating S15 throughout the rest of the synopses is quite an important thing for me to be doing right now ☺) 20:59
timotimo 21:00
vendethiel .u All
yoleaux U+0613 ARABIC SIGN RADI ALLAHOU ANHU [Mn] (◌ؓ)
U+2200 FOR ALL [Sm] (∀)
U+224C ALL EQUAL TO [Sm] (≌)
lue Unless there's a way to make the idea of "lazy string" work with S15, I think I should get rid of the Cat type in the process. 21:02
timotimo hmm 21:04
no easy way to get at the logotype without having intimate knowledge of github
BenGoldberg p6: say chr 0xd800 21:06
camelia niecza v24-109-g48a8de3: OUTPUT«\x{D800}␤» 21:07
..rakudo-moar b77755: OUTPUT«Error encoding UTF-8 string near grapheme position 0 with codepoint 55296␤ in method print at src/gen/m-CORE.setting:13585␤ in method print at src/gen/m-CORE.setting:13583␤ in sub say at src/gen/m-CORE.setting:13384␤ in block at /tmp/tmpfile:1…»
..rakudo-parrot b77755: OUTPUT«Invalid character for UTF-8 encoding␤␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm b77755: OUTPUT«java.nio.charset.MalformedInputException: Input length = 1␤ in method print at gen/jvm/CORE.setting:13528␤ in method print at gen/jvm/CORE.setting:13526␤ in sub say at gen/jvm/CORE.setting:13327␤ in block at /tmp/tmpfile:1␤␤»
BenGoldberg hopes that that will, at some point in the future, produce a consistent exception on all VMs 21:08
timotimo huh. 21:11
Unhandled exception: Method 'Stringy' not found for invocant of class 'NQPMu'
at <unknown>:1 (/home/timo/perl6/rakudo/../install/languages/perl6/runtime/CORE.setting.moarvm:print_exception:4294967295)
this is me trying to install Imlib2 21:12
retupmoca timotimo: the Build.pm in that package is wrong. Possibly panda used it a little differently when it was written 21:16
timotimo mhm 21:17
are you able to fix that and PR it?
retupmoca later tonight I might be able to look at it 21:18
I think the $*VM<config><...> things have changed as well
retupmoca or are different for moarvm at least 21:18
FROGGS they are different on each backend, yes 21:19
retupmoca I tried using this Build.pm as a template for something else I did, and ended up giving up and writing one from scratch
timotimo i'm unhappy about how annoying it is to compile native stuff to use with NativeCall
time to build Yet Another Build System 21:20
FROGGS no!
BenGoldberg YABS? 21:22
timotimo not overly fond of the idea at all 21:22
[Coke] dammit, what's wrong with make? ;) 21:23
retupmoca what if we just taught Build.pm how to call make?
[Coke] (seriously, though, make is ubiquitous and horrible and we can make it do what we want.)
BenGoldberg The issue probably isn't make it self, obviously, but whatever is creating the makefile for it 21:24
pmurias isn't generating Makefiles horrible?
BenGoldberg It depends on the generator, I suppose 21:25
lue make is awesome if you use something like cmake :P 21:27
lue & 21:28
timotimo oh wow 21:31
the performance difference between %foo<a b c> = (1, 2, 3); and %foo<a> = 1; %foo<b> = 2; %foo<c> = 3; is huge 21:32
jnthn timotimo: So, is it the slicing or the assignment? 21:33
timotimo good question
but it's 4 seconds vs 75 seconds
timotimo tries more different codes 21:34
the slicing alone makes a difference of 10x, too
the difference of just assigning $a = 1; $b = 2; $c = 3; vs assigning ($a, $b, $c) = (1, 2, 3); is big, too 21:36
timotimo 31s for 409600 times the tuple assignment, 1s for the same amount of times three simple assignments 21:37
timotimo oh wow. 21:39
my @l = (1, 2, 3); $a = @l[0]; ... is 77s for the same amount of assignments
so that's not a likely optimization :P
BenGoldberg I would expect the tuple to be a little slower than the simple assignments, but not that much slower. 21:40
How slow is simply doing 'my @l = (1, 2, 3)' (for the same amount of assignments) without doing '$a = @l[0]...'? 21:42
BenGoldberg And, if you've got @l initialized outside of the timing loop, how slow is doing '$a = @l[0]; $b = @l[1]; $c = @l[2]' ? 21:43
timotimo takes 30 seconds
BenGoldberg Also, '($a, $b, $c) = @l'
timotimo the for loop without anything in it takes 0.9 seconds
with the definition of @l outside the for loop it takes ... 21:44
17 seconds instead
having ($a, $b, $c) = @l inside the for and the definition outside gives me ...
37 seconds 21:45
timotimo so doing (...) = @foo assignment is a bit slower than using @l[0], @l[1] and @l[2] 21:45
timotimo i wonder if this is a case where the signature binder lowering could theoretically work? 21:47
jnthn That's not processed through the binder 21:48
timotimo hm, the ($a, $b, $c) doesn't end up as a WVal, it becomes a callstatic &infix:<,>
but that's probably not a big part of the problem
FROGGS damn, have to rebuild star again because I picked rakudo-2014.03 and not 2014.03.01 -.- 21:52
timotimo so the method STORE, it gets called on the result of p6parcel for p6argvmarray
timotimo it seem slike p6argvmarray seems to expect arguments, but when it gets none, it still does some kind of loop 21:54
so maybe i'll be able to optimize p6argvmarray()
no noticable change in performance for this particular test case, though 21:59
timotimo well, the numbers are marginally lower, but it's probably all measurement noise 22:01
timotimo not seeing anything obviously optimizable in method STORE of Parcel, which is what I believe is doing the assignment work here 22:05
the only thing i can think of is to do some detection at compile-time and dispatch to a dumber STORE method variant if possible and we know we'll be getting a parcel there. 22:06
well, rather than creating a new method, it could just as well generate code in-line 22:07
FROGGS jnthn: tomorrow morning I'll see if r-p* went out well, and then I'll push, tag and provide a tarball one can upload 22:10
gnight #perl6
timotimo gnite FROGGS
jnthn FROGGS++ 22:12
'night
timotimo jnthn: would you think the necessary amount of analysis would be worth it for tuple assignment? 22:16
jnthn timotimo: I think trying to do something in Optimizer for it is probably the wrong way to go... 22:17
timotimo could very well be. 22:18
should i stop barking up this tree then? :) 22:22
jnthn Well, it needs addressing, but it's one of the bits of info that probably should feed into Pm's list related work...once he has tuits. 22:24
timotimo ah
that sounds good
i wonder if i'll even recognize the language after that ;) 22:26
jnthn The language, yes. The list guts maybe less so ;) 22:27
jnthn Time for some rest 22:54
'night, #perl6
timotimo gnite jnthn
timotimo if someone ends up fixing imlib2, mrhdias also has a binding to gd that could probably use the same Build.pm treatment 23:10
lue Hrm. With separate types for NFC, NFD, etc., and various encoding schemes not a part of strings at all, I really can't say if C<StrPos> and C<StrLen> are useful anymore. 23:28
(Since C<StrPos> and C<StrLen> are explicitly not markers, i.e. they don't track changes to the string, doing something like $nfc-str.NFD would ruin any C<StrPos>es and C<StrLen>s you had.) 23:29
lue So, as far as I can see, StrPos and StrLen hold greater semantic meaning than a plain number ("position in string" or "length of substring" vs. "number"), but I don't see much use beyond that. 23:31
(The closest thing I can think of to these two that gets use is Instant and Duration; though they aren't tied to specific DateTime objects, like StrPos and StrLen are effectively tied to a particular string object) 23:33
lue Yeah, I don't see how the two types can carry the ideal of "view into a string, regardless of abstraction level" when the type system has separated all those out now. They'd really just be for the semantics, though we manage without things like ListPos or ParcelLen. 23:39
lue experimentally drops StrPos and StrLen from his rewrite of S32::Str(ingy) 23:48
TimToady that's probably fine; those are pre-NFG concepts 23:57
lue Really? They predate NFG? That's surprising. 23:58