»ö« 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.
lue timotimo: getting rid of the rw in cases where it's not used sounds like a good optimization, if it really affects performance. :) [though I've never used (or even really heard of) <-> , much less that a for loop has an implicit <-> $_ instead of -> $_] 01:15
timotimo r: my @a = <foo bar baz>; for @a { $_ .= uc }; say @a; 01:19
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«FOO BAR BAZ␤»
timotimo as you can see, the $_ is read-write-bound
lue yeah, didn't know that. 01:20
timotimo this is useful! :) 01:21
lue So I think what I'm wondering is, should <-> $_ be the default and optimized down to -> $_ when possible and necessary, or is <-> $_ (and/or <-> itself) uncommon enough that we can warrant making -> $_ default?
timotimo i'd say the former. 01:23
lue I for one never ran into a situation where I needed something like <->, but that's just me :) [I've probably done something in place of <-> at least once though...] 01:24
masak_ lue: for @a { $_++ } # I do that sometimes. 02:24
lue Didn't say it was useless, just that I've never personally needed it, so I tend towards "who needs implicit <-> anyway" :) [as a side note, I'll probably find bunches of places where <-> $_ is helpful now :P] 02:26
masak_ lue: on the design level, I've grown increasingly wearly of anything container-y over the years I've been involved with Perl 6. 02:27
lue: containers are kinda hard to explain, and don't give a very large benefit, IMO.
lue ? I fail to see how containers are relevant here :/ 02:29
masak_ hm, maybe you're right. 02:32
it's only the aliasing that's necessary here.
timotimo right 02:35
masak_: can you give better examples of where containers help only to confuse? 02:37
LLamaRider r: say time; say now; 02:40
camelia rakudo-parrot e50147: OUTPUT«1396147216␤Instant:1396147251.573820␤»
..rakudo-moar e50147: OUTPUT«1396147217␤Instant:1396147252.880821␤»
..rakudo-jvm e50147: OUTPUT«1396147217␤Instant:1396147252.477␤»
timotimo what's life like, being a llama rider?
LLamaRider r: say time(); say now(); 02:41
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routines:␤ now used at line 1␤ time used at line 1␤␤»
LLamaRider life is mostly about figuring why things that look like subroutines aren't :D
timotimo those are terms rather than functions
i don't know why they are that, though
lue my guess is because they represent a thing, rather than an amount of code. 02:42
LLamaRider in P5 foo and foo() used to be interchangable, so that's kind of a gotcha for me
lue (same as why you would write a term:sym<pi> instead of a sub pi)
timotimo hmm.
and since it's not really a constant \now, it might as well be an in-between?
LLamaRider only that these guys aren't constants. I guess "term" isn't "constant", the word is different, but boy. is rand a term?
timotimo that's ... at least interesting
r: say rand() 02:43
lue LLamaRider: yep
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unsupported use of rand(); in Perl 6 please use rand␤at /tmp/tmpfile:1␤------> say rand⏏()␤»
LLamaRider oh boy
timotimo the error message could very well be improved for now and time.
lue timotimo: that would be more of "terms in general" fix methinks.
timotimo in general, we could try to re-parse the sub that wasn't found as a term and see if that gets us any fruther
exactly
BenGoldberg Perhaps if someone attempts to use *any* subroutine, for which there's a term of the same name, should get that kind of error message.
LLamaRider the philosopher in me wonders - should all subroutines that return a term be terms?
timotimo subroutines that return a term? 02:44
BenGoldberg sub foo { pi } ?
timotimo that evaluates the term, though, doesn't it?
LLamaRider well rand/time/now return a simple scalar value, but they're really subroutines, they are not simple lookups
timotimo rather than pass around the term itself
lue r: sub time() { say "is an illusion." }; say time; say time();
camelia rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«1396147487␤is an illusion.␤True␤»
..rakudo-parrot e50147: OUTPUT«1396147485␤is an illusion.␤True␤»
lue BenGoldberg: no, erroring on any call with the same name as a term is a bad idea. 02:45
BenGoldberg I'm only saying to mention that a term exists with that name, *if* there's no such sub. 02:46
timotimo that's what i was proposing
LLamaRider having a function "time()" defined while the official use is "time" sounds like a bad idea to me. Definite source of hard to trace bugs.
lue BenGoldberg: you left out the "if there's no such sub" in your first statement. :)
BenGoldberg Oops
timotimo should rakudo warn when defining a sub which has the name of an already existing term and/or vice-versa?
lue LLamaRider: time() and time are unrelated.
BenGoldberg I meant to say that, and thought I did, but apparently my fingers forgot to type that bit ;) 02:47
LLamaRider ok, say you have a Perl5 subroutine which takes no arguments and always returns a single scalar value. Is that *always* a P6 term?
or rather "should it be"
timotimo huh
i can't build rakudo-m at the moment: failed to load library 'dynext/libperl6_ops_moar.so'
lue LLamaRider: no, terms have to be defined as such explicitly.
LLamaRider that i understand. I am trying to establish where do you draw the line between a subroutine and a term 02:48
BenGoldberg Or, putting it another way, suppose one wants to translate P5 code to P6, and has: use constant FOO => 3; # Should this become a term or a sub?
LLamaRider or "sub three { 3; }" 02:49
lue constants are different from terms.
timotimo i suppose the difference is that the optimizer would be allowed to replace multiple usages of a term with one local variable? :P
BenGoldberg ? 02:49
timotimo well, that's probably very false
BenGoldberg r: say rand, rand, rand
camelia rakudo-jvm e50147: OUTPUT«0.60402633257723310.060556006474625890.15032935025902616␤»
..rakudo-parrot e50147: OUTPUT«0.8173415047089920.6134314388419960.0679886903116724␤»
..rakudo-moar e50147: OUTPUT«0.4228974770181330.4492959784344860.0833680612930519␤»
timotimo r: &rand does pure; say rand + rand - rand - rand; 02:50
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ pure used at line 1␤␤»
lue I could be wrong on constants though, but I'm sure that term and constant aren't synonyms.
timotimo yeah
i was only partially serious 02:51
BenGoldberg The optimizer can replace the use of a constant, with the value of that constant. But the opposite is true of terms.
lue r: say pi; sub term:sym<pi> { 3.14 }; say pi;
camelia rakudo-jvm e50147: OUTPUT«3.141592653589793␤3.14␤»
..rakudo-parrot e50147, rakudo-moar e50147: OUTPUT«3.14159265358979␤3.14␤»
lue r: say pi; sub pi { 3.14 }; say pi; say pi(); 02:52
camelia rakudo-jvm e50147: OUTPUT«3.141592653589793␤3.141592653589793␤3.14␤»
..rakudo-parrot e50147, rakudo-moar e50147: OUTPUT«3.14159265358979␤3.14159265358979␤3.14␤»
timotimo the jvm has an additional 3 in there?
lue apparently.
LLamaRider there's also something fishy with operating on terms
example
r: my $start = time; say time-$start;
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ time used at line 1␤␤» 02:53
LLamaRider r: sub time {return time;}; my $start = time; say time()-$start;
timotimo r: say time - $start
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«0␤»
rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Variable '$start' is not declared␤at /tmp/tmpfile:1␤------> say time - $start⏏<EOL>␤ expecting any of:␤ post…»
timotimo er, oops :)
LLamaRider r: my $start = time; say time - $start;
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«0␤»
timotimo parsefail with LTA error in that case
LLamaRider ack
lue std: my $start = time; say time-$start;
LLamaRider i see
camelia std e347792: OUTPUT«ok 00:01 125m␤»
BenGoldberg Yay spaces?
timotimo i was about to do that!
well, we perl6ers like putting spaces around infixes anyway 02:54
makes them harder to pass as prefixes or postfixes on accident
lue std: say rand-5;
camelia std e347792: OUTPUT«ok 00:01 123m␤»
lue r: say rand-5;
camelia rakudo-jvm e50147: OUTPUT«-4.195459989072294␤»
..rakudo-parrot e50147: OUTPUT«-4.93575198543525␤»
..rakudo-moar e50147: OUTPUT«-4.28222834892175␤»
lue r: say now-5;
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ now used at line 1␤␤»
timotimo huh. so only when a $ sign is involved perhaps?
LLamaRider consistency, there is none 02:55
timotimo O_o
lue r: say pi-5;
camelia rakudo-parrot e50147, rakudo-moar e50147: OUTPUT«-1.85840734641021␤»
..rakudo-jvm e50147: OUTPUT«-1.8584073464102069␤»
lue r: say e-5;
camelia rakudo-jvm e50147: OUTPUT«-2.2817181715409545␤»
..rakudo-parrot e50147, rakudo-moar e50147: OUTPUT«-2.28171817154095␤»
lue only time and now hate the lack of spaces, it seems.
LLamaRider r: my $e = e; say $e-e; say e-$e;
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Variable '$e-e' is not declared␤at /tmp/tmpfile:1␤------> my $e = e; say $e-e⏏; say e-$e;␤ expecting any of:␤ …»
LLamaRider r: my $e = e; say e-$e;
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«0␤»
LLamaRider O_O
LLamaRider tilts his head in wonder 02:56
r: my $e = e; say time-$e;
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ time used at line 1␤␤»
timotimo well, $e-e is obviously refering to a variable named $e-e
BenGoldberg r: my $e-e = 42; say $e-e 02:57
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«42␤»
LLamaRider timotimo: yeah, sorry about that
timotimo :)
lue look at these QASTs from Actions.nqp: 02:58
make QAST::Op.new( :op('call'), :name('&rand'), :node($/) ); # for term rand, obviously
make QAST::Op.new( :op('call'), :name('&term:<now>'), :node($/) );
make QAST::Op.new( :op('call'), :name('&term:<time>'), :node($/) );
LLamaRider r: say rand(); 02:59
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unsupported use of rand(); in Perl 6 please use rand␤at /tmp/tmpfile:1␤------> say rand⏏();␤»
timotimo r: say &rand()
camelia rakudo-moar e50147: OUTPUT«0.139327001256136␤»
..rakudo-jvm e50147: OUTPUT«0.6465392721889555␤»
..rakudo-parrot e50147: OUTPUT«0.90589457386838␤»
LLamaRider O_O more wow
BenGoldberg r: sub rand { "very random!" }; say rand; say rand();
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unsupported use of rand(); in Perl 6 please use rand␤at /tmp/tmpfile:1␤------> d { "very random!" }; say rand; say rand⏏();[0…»
BenGoldberg r: sub rand { "very random!" }; say rand; say &rand(); 03:00
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«very random!␤very random!␤»
LLamaRider well... that doesn't seem right
lue r: say &term:<now>
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«sub term:<now>() { ... }␤»
lue r: say &term:<now>()
camelia rakudo-jvm e50147: OUTPUT«Instant:1396148490.773␤»
..rakudo-moar e50147: OUTPUT«Instant:1396148491.264420␤»
..rakudo-parrot e50147: OUTPUT«Instant:1396148489.290075␤»
lue r: say time-5; 03:01
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ time used at line 1␤␤»
lue r: say &term:<time>()-5;
timotimo r: sub term:<foobar> { "foo bar baz" }; say foobar;
BenGoldberg r: say &time()-5
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«1396148471␤»
rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«foo bar baz␤»
rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ &time used at line 1␤␤»
LLamaRider r: say &term:<now>("I am an undercover subroutine")
camelia rakudo-jvm e50147: OUTPUT«Wrong number of arguments passed; expected 0..0, but got 1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-moar e50147: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤ in sub term:<now> at src/gen/m-CORE.setting:14629␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot e50147: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤ in sub term:<now> at gen/parrot/CORE.setting:14830␤ in block at /tmp/tmpfile:1␤␤»
lue r: say &term:<time>()-5;
camelia rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«1396148492␤»
..rakudo-parrot e50147: OUTPUT«1396148491␤»
LLamaRider yay for subroutine signatures (in terms :D)
BenGoldberg r: say &time()-5
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ &time used at line 1␤␤»
BenGoldberg So the full name is needed, if one wants to use it with &...() 03:02
JimmyZ r: say time -5
camelia rakudo-moar e50147: OUTPUT«1396148559␤»
..rakudo-jvm e50147: OUTPUT«1396148558␤»
..rakudo-parrot e50147: OUTPUT«1396148557␤»
lue BenGoldberg: yes, because the name is term:<time>, not time :) 03:03
LLamaRider lue: and term: essentially introduces some alias?
for the &term:<time> subroutine?
lue well, Actions.pm interprets the occurrence of the term 'time' as a call to &term:<time>, so... huh, lemme look for something. 03:04
BenGoldberg r: sub term:<time> { 42 }; say time
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«42␤»
BenGoldberg r: sub term:<time> { 42 + $^a }; say time 03:05
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Calling 'term:<time>' requires arguments␤ Expected: :(Any $a)␤at /tmp/tmpfile:1␤------> sub term:<time> { 42 + $^a }; say ⏏[3…»
LLamaRider silently redefine core terms? why not! :D
personally, I'd appreciate if you could only do that with monkey patching enabled
lue timotimo: term:<time> and term:<now> are defined in the core, and also checked for by the grammar, which may be conflict?
BenGoldberg P5 lets you. IIRC, *CORE::print = sub { .... } is perfectly ok
lue (as defining your own term:<thing> handles the term interpretation for you in normal P6 code) 03:06
thus causing the now-5 weirdness, perhaps?
LLamaRider BenGoldberg: sure, but you need to grab that glob. "use warnings" at least warns you when subroutines get redefined
lue print isn't a term in Perl 6, it's a sub. :) 03:07
BenGoldberg Another difference: in P5, if you use a subroutine, and then define it with a prototype, you get a warning. 03:10
Redefining term:<anything> to take arguments is probably a bad thing 03:11
LLamaRider r: BEGIN { print("start "); }; sub print (Str $a) {say $a~" "~$a;}; print("end"); 03:12
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«start end end␤» 03:13
LLamaRider silently succeeding is somehow a step back from "use warnings" in P5
lue BenGoldberg: agreed. Terms are meant for things that are thought of as specific kinds of values (like the current time, or any random number) than as an amount of code to be executed. 03:14
(another way to put it is that terms are nouns, and functions are verbs) 03:16
LLamaRider you could say they are "common nouns" and constants are "proper nouns" and variables are pronouns then
kind of a stretch of an analogy, but it makes the intuition sensible somehow 03:17
lue
.oO(variables are just expression abbreviations)
03:19
LLamaRider so are pronouns :)
BenGoldberg hmms... 03:20
adjectives would be things like 'my Int $foo'?
. o O (That doesn't sound right, since that's only done when $foo is declared) 03:21
lue that's possible, traits count too though :) class Foo is Bar, for instance
LLamaRider stretchy analogies really 03:22
lue (Working on a Larry Wall language long enough teaches you that programming languages and natural languages aren't so different after all.)
don't forget our :adverbs of course :)
LLamaRider some filtering subroutines (e.g. grep-based ones) can be seen as adjectives
BenGoldberg is too sleepy to think about using natural language grammatical terms to describe perl features
LLamaRider "positive numbers" can be written as [email@hidden.address] > 0)' in pseudocode (my P6 isn't fluent)
BenGoldberg @nums.grep { $_ > 0 } 03:23
I think
lue r: my @numbers = 1, 2, -5, -1.3; say @numbers.grep({$_ > 0})
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«1 2␤»
LLamaRider nice
lue r: my @numbers = 1, 2, -5, -1.3; say @numbers.grep: {$_ > 0}
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«1 2␤»
BenGoldberg r: my @nums := ^Inf; my @pos := @nums.grep { $_ > 0 }; say @pos[^5]
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?)␤at /tmp/tmpfile:1␤------> my @nums := ^I…» 03:25
BenGoldberg r: my @nums := ^Inf; my @odd := @nums.grep: { $_ %% 2 }; say @odd[^5]
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«0 2 4 6 8␤»
LLamaRider Well that's odd :D 03:26
lue BenGoldberg: % or !%% get you odd numbers :)
JimmyZ r: say (1..10).grep:*%2 03:29
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> say (1..10).grep⏏:*%2␤ expecting any of:␤ method arguments␤ …»
lue r: say (1..10).grep: *%2 03:30
camelia rakudo-parrot e50147, rakudo-jvm e50147, rakudo-moar e50147: OUTPUT«1 3 5 7 9␤»
JimmyZ std: say (1..10).grep:*%2 03:32
camelia std e347792: OUTPUT«===SORRY!===␤Confused at /tmp/9GlcU0E68K line 1:␤------> say (1..10).grep:⏏*%2␤ expecting any of:␤ coloncircumfix␤ signature␤Parse failed␤FAILED 00:01 126m␤»
JimmyZ std: say (1..10).grep: *%2 03:32
camelia std e347792: OUTPUT«ok 00:01 125m␤»
lue [Coke]: Is it just me, or does perl6-roast-data not report the checkout of the compiler tested? 03:57
lue I get failed to load library 'dynext/libperl6_ops_moar.so' trying to compile latest rakudo :( 04:11
(trying to compile src/gen/m-BOOTSTRAP.nqp) 04:12
JimmyZ lue: needs s/MVMP6opaque_real_data/MVM_p6opaque_real_data/ in perl6_ops.c maybe 04:29
lue That got me past the bootstrap and to the CORE part :) 04:33
dalek kudo/nom: a699826 | lue++ | src/vm/moar/ops/perl6_ops.c:
Change MVMP6opaque_real_data to MVM_p6opaque_real_data

Allows r-m's bootstrap to compile. JimmyZ++ for finding the bug.
04:36
lue I don't get why these are supposedly errors: github.com/perl6/roast/blob/master....t#L74-L77 04:51
grondilu r-m compilation failed after last commit 04:53
lue It also happens to contradict github.com/perl6/roast/blob/master...mber.t#L63
(I agree with L63, by the way) 04:54
grondilu: have you tried latest nqp and moar?
grondilu I did reconfigure, but maybe I should update manually. (not the first time that would have happened)
lue I didn't update NQP_REVISION or MOAR_REVISION, not quite sure how to go about that :/ 04:55
grondilu update nqp and moarvm manually 05:00
*updateS
lue uhh, if I update MOAR_REVISION, it would jump from 2014.03-51-g78f9ab0 to 2014.02-192-g0b08db7, which I would hope is wrong. 05:02
Ah, as I suspected, I (still?) have 2014.03 as a lightweight tag. 05:05
JimmyZ lua: git describe --tags
lue Ah. Is 2014.03 still not annotated for MoarVM ? 05:06
dalek p: b9f25b1 | lue++ | tools/build/MOAR_REVISION:
Update MOAR_REVISION for function name change.
05:13
kudo/nom: b126071 | lue++ | tools/build/NQP_REVISION:
Update NQP_REVISION for function name change in MoarVM.
05:16
lue hopefully I didn't mess up anything with those REVISION changes :) 05:17
JimmyZ My friend said TimToady is in beijing now 05:46
FROGGS_ morning 07:27
nwc10 welcome to DST
JimmyZ: irclog.perlgeek.de/perl6/2014-03-28#i_8506680 07:29
JimmyZ oh 07:29
lizmat morning #perl6!
nwc10 JimmyZ: strictly, that's "timtoady said 2 days ago that timtoady was in Bejing then" 07:30
lizmat seems we have a failure in t/spec/S17-concurrency/lock.t, reliably when run inside the test-suite 07:31
and only about once in 10 times when run separately
nwc10 JimmyZ: masak is somewhere else in China: irclog.perlgeek.de/perl6/2014-03-28#i_8508126 07:32
lizmat I did this change to the etst file:
- is @log.join(','), 'ale,porter,stout', 'Conditon variable worked';
+ diag "Saw {@log}" if !
+ is @log.join(','), 'ale,porter,stout', 'Condition variable worked';
JimmyZ Was there a Perl Conference in beijing?
lizmat and now get:
not ok 7 - Condition variable worked
# got: 'ale,porter'
# expected: 'ale,porter,stout'
# Saw ale porter stout
nwc10 JimmyZ: I don't know 07:33
lizmat jnthn: which leads me to suggest that the first thread is still running *after* the join() ?
afk& 08:29
FROGGS_ cosimo: I made a PR for Digest::MD5, so we will be able to ship that on a jvm-star 09:05
FROGGS_ damn, that Digest::MD5 does not work on parrot, at least not when precomped 09:42
moritz gaaah, more failing tests in m-spectest 09:55
4 S17 test files fail 09:56
no, 5
dalek ast: 39cafaf | moritz++ | S32-str/sprintf.t:
do not use # in test description

it is a comment character in TAP, so TODO messages after that are ignored by the harness
09:58
jnthn moritz: What fails do you see? lizmat added some more of the S17 tests after fudging yesterday; it's possible you're seeing some of the remaining instabilities in the Moar S17 support. 10:07
moritz jnthn: perlpunks.de/paste/show/5337ed57.674b.1f0 10:09
(that's on rakudo/nqp/moar on nom/master/master) 10:10
jnthn moritz: Oh, it looks like it's passing most of the tests and then exploding at exit. 10:11
vendethiel 2014 looks like a cool year for Perl 6 :)
jnthn bbi10 10:14
p6explorer rakudo: say "testing" 10:27
camelia rakudo-parrot b12607, rakudo-jvm b12607, rakudo-moar b12607: OUTPUT«testing␤»
JimmyZ www.csdn.net/article/2014-03-19/281...-interview 10:52
Rounin 你找到了比Perl難讀的事啊!不錯。 11:04
Time to whip out the old dictionary 11:05
Wait, I used the 了 incorrectly, didn't I
Better use two dictionaries 11:06
simula67 Money quote : "We intend to publish in a year or [two?] a product-level version of Perl 6." :)
simula67 would love to sneak this into work 11:10
Rounin :D
jnthn would love to sneak more people into working on this ;)
Rounin I just realized you could write Perl 6 entirely in Chinese
I guess that's the next step after Latin and Klingon! 11:11
The Analects of Computius
Rounin This site looks like it could be good Chinese practice 11:19
colomon lue: (very late answer) I believe I've used <-> exactly once in the last four years of p6 programming. :) 11:21
FROGGS_ jnthn: at least I got four or five ppl being more interesting in p6 and two of them actually installed perl6-m during gpw :o) 11:31
FROGGS_ jnthn: this is up-to-date btw: gist.github.com/FROGGS/0ea5537eb675588baaa2 11:32
though, I need to figure out why Digest::MD5 stops working when being precompiled
r: sub prefix:<¬>(\x) { (+^ x) % 2**32 }; constant FOO = -> \X, \Y { ¬X +& Z } 11:39
camelia rakudo-parrot b12607, rakudo-jvm b12607, rakudo-moar b12607: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ Z used at line 1␤␤»
FROGGS_ r: sub prefix:<¬>(\x) { (+^ x) % 2**32 }; constant FOO = -> \X, \Y { ¬X +& Y }
camelia ( no output )
FROGGS_ r: sub prefix:<¬>(\x) { (+^ x) % 2**32 }; constant FOO = -> \X, \Y { ¬X +& Y }; FGHI[0](1, 1) 11:40
camelia rakudo-parrot b12607, rakudo-jvm b12607, rakudo-moar b12607: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ FGHI used at line 1␤␤»
FROGGS_ r: sub prefix:<¬>(\x) { (+^ x) % 2**32 }; constant FOO = -> \X, \Y { ¬X +& Y }; FOO[0](1, 1)
camelia ( no output )
FROGGS_ this says "Could not find sub &prefix:<¬>"
FROGGS_ okay, chainging constant FOO to my \FOO helps 11:43
vendethiel r: if 5 { .say } 11:58
camelia rakudo-parrot b12607, rakudo-jvm b12607, rakudo-moar b12607: OUTPUT«Nil␤»
vendethiel r: if 5 -> $_ { .say }
camelia rakudo-parrot b12607, rakudo-jvm b12607, rakudo-moar b12607: OUTPUT«5␤»
vendethiel cool.
FROGGS_ r: if "" || "hi" && 5 -> $_ { .say } 12:13
camelia rakudo-parrot b12607, rakudo-jvm b12607, rakudo-moar b12607: OUTPUT«5␤»
FROGGS_ r: if "" || "hi" && 0 && 5 -> $_ { .say }
camelia ( no output )
FROGGS_ ahh, hmm, yeah :o)
vendethiel r: if "" || "hi" andthen 0 andthen 5 -> $_ { .say } 12:14
camelia rakudo-parrot b12607, rakudo-jvm b12607, rakudo-moar b12607: OUTPUT«5␤»
Rounin By the time I finish reading this interview, Perl 6 will be in production 14:20
Thanks for giving a man something to do on a Sunday, JimmyZ :D
FROGGS *g* 14:24
JimmyZ Rounin: 不客气 14:34
vendethiel backlogged, only to find it's not in english -- damn ! 14:37
JimmyZ use google translator :P 14:39
dalek p: 057593a | (Tobias Leich)++ | tools/build/gen-jvm-properties.pl:
add $Cfg{perllibs}, because $Cfg{libs} contains boilerplate
15:23
lichtkind my p6ops talks was sucess, several people came to me and said they want to try out p6 15:24
dalek kudo/nom: d381df4 | (Tobias Leich)++ | tools/build/NQP_REVISION:
bump nqp rev to get nativecall@jvm fix
15:25
FROGGS lichtkind++
:o)
lichtkind hai tobias :) 15:30
FROGGS hi 15:31
lichtkind you always talk to so many people at once that you almost never do a proper goodby 15:32
FROGGS well, yeah, that is the problem of a workshop of that size 15:33
vendethiel JimmyZ: google translate is bad :) 15:35
lichtkind hi lizzy _) 15:37
lizmat hello #perl6, from Cluj Romania 15:38
lichtkind is there a perl workshop
?
lizmat tomorrow, the Cluj.pm workshop
FROGGS hi lizmat 15:39
lizmat cluj.pm/pages/events.html 15:40
jnthn o/ lizmat, lichtkind 15:55
lizmat hi jnthn! 15:55
arnsholtAtHome Anyone else have trouble on JVM with t/spec/S17-concurrency/supply.t? 15:56
dalek volaj: f7422ef | (Tobias Leich)++ | t/CompileTestLib.pm:
use perllibs, because libs contains boilerplate

On my ubunto box nativecall.libs contains -lgdbm which is not needed, and is not found by the linker for some reason.
  $ perl -MConfig -E 'say $Config{libs}'
  -lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
  $ perl -MConfig -E 'say $Config{perllibs}'
  -ldl -lm -lpthread -lc -lcrypt
volaj: b211b80 | jonathan++ | t/CompileTestLib.pm:
Merge pull request #35 from FROGGS/patch-3

use perllibs, because libs contains boilerplate
jnthn arnsholtAtHome: What kind of trouble are you having? 15:57
FROGGS .oO( I'd say he is looking for trouble! )
jnthn arnsholtAtHome: Test 14 fails for me on Moar
arnsholtAtHome Hangs, apparently
dalek p/jastcompiler: 5044b3e | (Arne Skjærholt)++ | src/vm/jvm/stage0/ (10 files):
Update bootstrap compiler to have direct JAST compilation.
p/jastcompiler: 4bce8b5 | (Arne Skjærholt)++ | src/vm/jvm/ (3 files):
Remove old JAST compilation functionality.
arnsholtAtHome No output after test 11 when I run the file directly 15:58
Both on master and jastcompiler
jnthn Hm
ok 12 - # SKIP hangs
here
lizmat not ok 14 - merging taps works# TODO merging apparently does *not* work
jnthn Are you running fudged version?
lizmat I todoed it yesterday for moar
jnthn lizmat: yeah, my t/spec was beind.
*behind 15:59
lizmat maybe there's a deeper problem with merging taps
also, would be nice if sleep sort would be working on moar tomorrow :-) 16:00
timotimo jnthn: what's your intuition on the relative performance of <-> and -> for for loops? 16:02
at first i thought -> ought to be faster, but now i think that <-> could just "re-use" the existing thing and -> might have to create a new thing 16:03
jnthn timotimo: Yeah, there's probably not much in it, and in the long run it's probably all open to analysis/optimization anyway. 16:05
timotimo fair enough
woolfy Cluj! 16:10
moritz bless you! 16:11
FROGGS *g* 16:12
woolfy :-) 16:13
cluj.pm/pages/events.html
Liz will talk about Perl 6! 16:14
(well, yeah, about what else, maybe world peace, we do need that too)
lizmat m: Promise.allof: start( {1} ), start( {2} ); 16:34
camelia rakudo-moar b12607: OUTPUT«(signal ABRT)Unhandled exception in code scheduled on thread 139787364566784␤»
lizmat jnthn: that's the sleep sort problem golfed down
moritz looks like a fun event
jnthn I'm dubious about that thread ID. :)
lizmat: Just working on a few other bits at the moment, but will look at it this evening. 16:35
moritz m: say log(139787364566784, 2) 16:36
camelia rakudo-moar b12607: OUTPUT«46.9902272892746␤»
moritz m: say 139787364566784.fmt('%b')
camelia rakudo-moar b12607: OUTPUT«11111110010001011001000001101011000011100000000␤»
moritz m: Promise.allof: start( {1} )
camelia rakudo-moar b12607: OUTPUT«(signal ABRT)»
moritz golfed even further :-) 16:37
timotimo m: Promise.allof()
camelia rakudo-moar b12607: OUTPUT«Can only use allof to combine other Promise objects␤ in method allof at src/gen/m-CORE.setting:17918␤ in block at /tmp/x_eU1ET4l8:1␤␤»
moritz m: Promise.allof: start( {} )
camelia rakudo-moar b12607: OUTPUT«Type check failed in binding &code; expected 'Callable' but got 'Hash'␤ in sub start at src/gen/m-CORE.setting:17948␤ in block at /tmp/LVTruef6QL:1␤␤»
timotimo this fails, too!
lizmat that's odd: it never bombed for me with just a single promise
moritz m: Promise.allof: start( {;} )
timotimo {;}?
camelia rakudo-moar b12607: OUTPUT«(signal ABRT)»
timotimo you made *one* promise, rakudo!
moritz f*cking keep it! 16:38
timotimo hey now
watch the language, mister
there might be pupa around
... pupae?
lizmat jnthn: fwiw, I've also seen a small stacktrace: 16:40
Cannot find method 'Mu'
in block at src/gen/m-CORE.setting:17660
moritz makes a mental note to clean the public IRC logs of this swearing when $first-daughter starts to learn English (and reading) 16:41
timotimo will english or reading be first? :)
punter perl6: say 3; 16:51
camelia rakudo-parrot d381df, rakudo-jvm d381df, rakudo-moar d381df, niecza v24-109-g48a8de3: OUTPUT«3␤»
FROGGS perl6: say 3 16:52
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Digit <3> too large for radix 10␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 line 147 (from_base @ 24) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 …»
..rakudo-parrot d381df, rakudo-jvm d381df, rakudo-moar d381df: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤'3' is not a valid number␤at /tmp/tmpfile:1␤------> say 3⏏<EOL>␤»
FROGGS interesting... 16:53
.u 3
yoleaux U+FF13 FULLWIDTH DIGIT THREE [Nd] (3) 16:53
lizmat perl6: say 3.Num 16:55
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Digit <3> too large for radix 10␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 line 147 (from_base @ 24) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 …»
..rakudo-parrot d381df, rakudo-jvm d381df, rakudo-moar d381df: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤'3' is not a valid number␤at /tmp/tmpfile:1␤------> say 3⏏.Num␤»
cognominal ouch 16:56
lizmat perl6: say 3.WHAT
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Digit <3> too large for radix 10␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 line 147 (from_base @ 24) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 …»
..rakudo-parrot d381df, rakudo-jvm d381df, rakudo-moar d381df: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤'3' is not a valid number␤at /tmp/tmpfile:1␤------> say 3⏏.WHAT␤»
FROGGS p6: say 𝟛 16:57
camelia rakudo-parrot d381df, rakudo-moar d381df: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤'𝟛' is not a valid number␤at /tmp/tmpfile:1␤------> say 𝟛⏏<EOL>␤»
..rakudo-jvm d381df: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> say ⏏𝟛␤ expecting any of:␤ argument list␤ prefix or term␤ prefix or meta-prefix␤ …»
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/tmpfile line 1:␤------> say⏏ 𝟛␤␤Confused at /tmp/tmpfile line 1…»
FROGGS not that I would need that :o) 16:58
timotimo which function gives us the "value" of a unicode character? 17:03
lizmat not sure there is one atm 17:03
FROGGS m: say GLOBAL::.grep(/uni/)
camelia rakudo-moar d381df: OUTPUT«␤»
jnthn Hm...unival? 17:06
timotimo m: say GLOBAL::.keys.grep(/uni/)
camelia rakudo-moar d381df: OUTPUT«␤»
FROGGS jnthn: no
timotimo i think unival is it, yeah
no?
FROGGS m: say unival("3")
camelia rakudo-moar d381df: OUTPUT«3␤»
FROGGS m: say unival("3")
camelia rakudo-moar d381df: OUTPUT«3␤»
FROGGS m: say unival("A")
camelia rakudo-moar d381df: OUTPUT«NaN␤»
lizmat perl6: say 3.unival
camelia rakudo-parrot d381df, rakudo-jvm d381df, rakudo-moar d381df: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤'3' is not a valid number␤at /tmp/tmpfile:1␤------> say 3⏏.unival␤»
..niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Digit <3> too large for radix 10␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 line 147 (from_base @ 24) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 …»
FROGGS timotimo: ahh, you actually meant that :o) 17:07
timotimo yup, that's the one i'm refering to 17:10
timotimo lizmat: you can't use the fullwidth 3 in any of these contexts, you're always getting a parse error at compile time :) 17:10
lizmat that last one should have worked, btw, according to S15:490 17:10
synopsebot Link: perlcabal.org/syn/S15.html#line_490
lizmat timotimo: why wouldn't that be possible? 17:11
FROGGS it should work, yes, but when a single 3 explodes, calling a method on it won't help 17:14
timotimo lizmat: but but but ... unquoted? 17:25
d'oh, that link 404s
lizmat odd, the link seems correct (compare e.g. with S16 17:27
perl6: say '3'.unival 17:28
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Unable to resolve method unival in type Str␤ at /tmp/tmpfile line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4595 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4596 (module-CORE @ 576) ␤…» 17:29
..rakudo-parrot d381df, rakudo-jvm d381df, rakudo-moar d381df: OUTPUT«No such method 'unival' for invocant of type 'Str'␤ in block at /tmp/tmpfile:1␤␤»
lizmat that would seem like LHF then
timotimo not .&unival? 17:32
lizmat timotimo: not according to spec 17:52
dalek kudo/nom: ee7dbc1 | (Elizabeth Mattijsen)++ | src/core/Str.pm:
Implement univals() and Str.unival(s)

According to S15:490 and following, without the Unicodey role though.
17:57
synopsebot Link: perlcabal.org/syn/S15.html#line_490
lizmat afk while sampling the local bere& 17:58
timotimo OK 18:12
univals and unival?
moritz m: say univals(2).perl 18:18
camelia rakudo-moar d381df: OUTPUT«===SORRY!=== Error while compiling /tmp/u8hTiiNEGi␤Undeclared routine:␤ univals used at line 1. Did you mean 'unival'?␤␤»
moritz m: say unival(2).perl
camelia rakudo-moar d381df: OUTPUT«NaN␤»
moritz m: say unival('2'.ord).perl 18:19
camelia rakudo-moar d381df: OUTPUT«2␤»
timotimo m: say 2.ord 18:22
camelia rakudo-moar d381df: OUTPUT«50␤»
timotimo Could not download module metadata: Failed to connect: permission denied 18:24
o_O
timotimo feather seems down or something? 18:33
well, at least whatever was listening on port 3000
FROGGS ewww 18:34
timotimo at least that let me fix something else that was not very good :)
a very old PATH setting for perl6
FROGGS that it the thing that delivers projects.json :/ 18:35
timotimo yes, it is.
timotimo is it the same as this? modules.perl6.org/proto.json 18:35
FROGGS timotimo: looks like, yes 18:38
FROGGS hmmm, I'd guess that "badge_panda_nos11" is not in the projects.json 18:39
timotimo evidently not, though
FROGGS so the structure seems to differ
timotimo it explodes when i try to give it to that
Cannot call 'postcircumfix:<{ }>'; none of these signatures match:
in the ecosystem's "add-project" method
FROGGS yeah 18:40
r: say "\c[MATHEMATICAL ITALIC SMALL N]"
camelia rakudo-jvm ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unrecognized character name MATHEMATICAL ITALIC SMALL N␤at /tmp/tmpfile:1␤------> say "\c[MATHEMATICAL ITALIC SMALL N⏏]"␤» 18:41
..rakudo-parrot ee7dbc, rakudo-moar ee7dbc: OUTPUT«𝑛␤»
timotimo panda refuses to do anything if it doesn't have the projects file 18:42
FROGGS timotimo: do you need one from yesterday? 18:45
gist.githubusercontent.com/FROGGS/...jects.json
timotimo it's fine, i'm using ufo now
FROGGS mkay
:o)
timotimo hey listen
something's odd with ADT 18:46
FROGGS which backend?
timotimo moarvm
FROGGS mkay
timotimo hold on
FROGGS holds on
timotimo r: my \Foo = Metamodel::ClassHOW.new_type("Hello"); 18:46
camelia ( no output )
..rakudo-moar ee7dbc: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in any new_type at src/gen/m-Metamodel.nqp:2416␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm ee7dbc: OUTPUT«Wrong number of arguments passed; expected 1..1, but got 2␤ in block at /tmp/tmpfile:1␤␤»
timotimo huh? :( 18:47
AFK for a bit now.
FROGGS .u ≴ 18:48
yoleaux U+2274 NEITHER LESS-THAN NOR EQUIVALENT TO [Sm] (≴) 18:48
FROGGS r: say "\c[NEITHER LESS-THAN NOR EQUIVALENT TO]"
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«≴␤»
lue I was eyeing [Coke]'s test data last night, when I noticed these tests are skipped: github.com/perl6/roast/blob/master....t#L74-L77 my question is, why are those supposed to be errors? 18:51
(and why does it contradict github.com/perl6/roast/blob/master...ber.t#L63) 18:52
moritz lue: I'm pretty sure \0 is correct 18:59
lue: so just remove those tests
FROGGS .u 🃟
yoleaux U+1F0DF PLAYING CARD WHITE JOKER [So] (🃟) 18:59
FROGGS r: say "\c[PLAYING CARD WHITE JOKER]"
camelia rakudo-jvm ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unrecognized character name PLAYING CARD WHITE JOKER␤at /tmp/tmpfile:1␤------> say "\c[PLAYING CARD WHITE JOKER⏏]"␤»
..rakudo-parrot ee7dbc, rakudo-moar ee7dbc: OUTPUT«🃟␤»
moritz std: "\0" 19:00
camelia std e347792: OUTPUT«ok 00:01 121m␤»
lue moritz: the test makes sure that you can't try to use an octal value leading-zero style. I'm assuming then that "\010" would always be "\x[0]10", no warning ? 19:03
moritz std: "\01" 19:04
camelia std e347792: OUTPUT«ok 00:01 121m␤»
moritz lue: since std doesn't warn or error, I'm pretty sure implementations shouldn't 19:05
lue nod
moritz (unless you can quote a piece of spec that contradicts it) 19:06
oh wait
The old C<\123> form is now illegal, as is the C<\0123> form. 19:07
Only C<\0> remains, and then only if the next character is not in
the range C<'0'..'7'>. Octal characters must use C<\o> notation.
Note also that backreferences are no longer represented by C<\1>
and the like--see S05.
so the test in line 63 is actually wrong 19:08
lue thinks the spec is wrong, but oh well
moritz let's wait what TimToady++ has to say 19:09
dwarring mortiz, lue: leave codepoint validation off in chr() for the moment? 19:11
lue moritz: agreed. I can see good reasons for both arguments :)
dwarring ie surrogates and range > 0x10ffff
moritz I can see why \<digits> without any (at least implied) unit would be wrong 19:12
lue isolated surrogates and > 10_ffff are good check, imo
*checks
timotimo moritz: you know about feather's panda project list server thingie?
FROGGS star: my MIME::Base64 $mime .= new(MIME::Base64::Perl); say $mime.decode('DDADJnQiowM=').decode('UTF-16') 19:14
camelia star 2013-09: OUTPUT«===SORRY!===␤Type 'MIME::Base64' is not declared␤at /tmp/WDdVsa8L1l:1␤------> my MIME::Base64⏏ $mime .= new(MIME::Base64::Perl); say $␤Malformed my␤at /tmp/WDdVsa8L1l:1␤------> my MIME::⏏Base64 …»
FROGGS star: use MIME::Base64; my MIME::Base64 $mime .= new(MIME::Base64::Perl); say $mime.decode('DDADJnQiowM=').decode('UTF-16')
camelia star 2013-09: OUTPUT«Could not find symbol '&Perl'␤ 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/jzk…»
moritz timotimo: not much; I know that it runs at tadzik's user account
timotimo: what about it? 19:15
dwarring: I don't really know; just that it caused too much spectest fallout the last time 19:16
dwarring I'll let it sit for now 19:16
timotimo aha! so tadzik is at fault! :P
the problem with it is that it doesn't seem to be up at the moment :)
jnthn timotimo: The type name for new_type is passed as the :name named paremeter 19:27
moritz timotimo: please check again 19:34
timotimo: I've restarted the server
moritz FROGGS: re github.com/FROGGS/perl6-lwp-simple...bc64c3eaad why the anchor in the URL? 19:40
FROGGS moritz: just to not have the domain in it 19:41
not only*
moritz FROGGS: does that work? I mean, does LWP::Simple strip the anchor before sending it over the wire?? 19:45
cognominal what is the url of the site with rakudo * roasts?
moritz s/\?// 19:46
cognominal: github.com/coke/rakudo-star-daily/
cognominal I mean the site that displays the results
vendethiel seems like it got slower ? from rakudo-star-daily report 19:47
Actually, some stuff got slower, some other stuff got faster.
(maybe it's previously skipped tests that made it slower, actually ...)
FROGGS moritz: it passes the tests but I'm not sure it actually strips the anchor 19:48
jnthn I think it's probably noise.
moritz vendethiel: the stuff runs on the same VM as camelia, and more importantly, the rakudo rebuilds for camelia 19:49
vendethiel: which alone can cause lots of timing jitter
vendethiel I'll remember not to take it too seriously then :) thanks for the clarification
jnthn It's also nice'd, I think.
Rounin Finally... Now I know what Larry Wall was planning to do in China ¦| 19:50
Apparently he likes Chinese characters, too 19:51
FROGGS ¦) 19:54
timotimo time for some lightweight monitoring to be installed for perl6 related services 20:00
kanla.zekjur.net/ 20:01
timotimo if someone points me at many interesting services that could be monitored, i could very well set that up 20:07
timotimo hmm 20:13
not very helpful of Perl6::CommandLine::UI to be putting "..." way before the thing that's supposed to be shown to the user :P
jnthn timotimo: Context? 20:14
timotimo parsing a grammar 20:15
timotimo investigates
jnthn It's meant to show those if you're parsing a long string, and show the part around where you are. 20:16
The whole thing's written in Perl 6 so should be fairly accessible to improve :)
Not seen it do anything weird there, though...
timotimo it's not showing the piece of the grammar that's currently matching against the text :) 20:20
but it does turn one of the dots yellow
jnthn if it turns it yellow...that's probably where it is, no? :) 20:21
timotimo yeah, well ... 20:24
timotimo | rule definition { 20:24
| $<constructor>=<.ident> [ $<typedecl>=<.ident><parameters> $<a...
| }
here the last . in the second line and the } are marked yellow
timotimo that's not terribly helpful :P 20:25
ah of course 20:26
@!lines is initialised to have abbreviated lines
not really willing to mess with that right now :|
jnthn ah...yeah 20:28
write shorter lines! :P
timotimo :) 20:30
could certainly do that
timotimo i think i just made the debugger throw an exception due to an improper use of some substr 20:42
jnthn Congrats :P 20:47
timotimo but now i have proper code that i could just have
like, could just use and no longer care about the debugger
dalek ast: 192b52c | (Arne Skjærholt)++ | S17-concurrency/supply.t:
Refudge hanging concurrency test on Rakudo/JVM.
20:48
dalek nqp: 7e6d19f | (Arne Skjærholt)++ | src/vm/jvm/QAST/Compiler.nqp: 20:49
nqp: Make sure all handler indices are ints.
nqp:
nqp: Prior to this, some indices would be nums; one because the construct "$a+$b"
nqp: returns a num, even if both variables are ints (fixed by using logical or
arnsholtAtHome And I murdered dalek. Whoops
Anyways, just merged jastcompiler into master
jnthn \o/
FROGGS \o/
timotimo yaaaay
jnthn arnsholt++ 20:50
FROGGS arnsholt++ 20:50
jnthn That's a very nice improvement.
timotimo arnsholt++
jnthn April's release should be a very nice one at this rate.
FROGGS btw, r-p* would be clean if two or three PR's get applied 20:51
vendethiel so that means no ast re-parsing :) ?
arnsholtAtHome Yup 20:52
vendethiel arnsholt++
FROGGS src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:55: error: cannot find symbol 20:53
import org.perl6.nqp.jast2bc.JASTCompiler;
I do something rong?
FROGGS ahh, got it 20:53
my fault 20:54
[Coke] lue; you're right - no one asked for it! ;) 20:55
lue [Coke]: I just figured I should start using your test data, at least enough so that I don't have to run the spectest twice per fix; knowing what checkout of the compiler you used would be helpful, but not critical. 21:09
timotimo guess what 21:37
i couldn't open that image file because i linked against SDL_image rather than SDL2_image
jnthn 2 bad...
dalek ecs: 4e6f85f | lue++ | S26-documentation.pod:
[S26] Stop interpreation of =config in formatting code in code blocks.

This allows the formatting code to work properly.
21:56
[Coke] gist.github.com/coke/9880574 ^^ wierdness with sets and MAIN 21:58
if I make that not a MAIN, and call it as a sub directly, the resulting set is (-)'d correctly.
[Coke] (but as MAIN, the (-) doesn't seem to be done.) 21:59
LLamaRider r: <15 4 9123 2 31>.sort({<=>}).say; 22:01
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«15 4 9123 2 31␤»
LLamaRider 1) why does this work? 2) why is it a no-op? 22:02
I was trying to find the briefest way to ask for a numeric comparison in sort
r: <15 4 9123 2 31>.sort({[<=>] @_}).say; 22:03
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«2 4 15 31 9123␤»
LLamaRider this at least works, but I just have the feeling there might be a way around using @_ that i am missing 22:03
[Coke] r: <15 4 9123 2 31>.sort({*<*}).say 22:05
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unable to parse quote-words subscript; couldn't find right angle quote␤at /tmp/tmpfile:1␤------> <15 4 9123 2 31>.sort({*<*}).say⏏…»
timotimo LLamaRider: look at this: 22:07
r: say <=>.perl
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«"="␤»
timotimo r: say <= = =>.perl
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«("=", "=", "=")␤»
LLamaRider O_O 22:08
but it sometimes treats it as an operator
lue r: <15 4 9123 2 31>.sort(* <=> *).say;
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«2 4 15 31 9123␤»
BenGoldberg r: say <===>.perl 22:09
timotimo r: <15 4 9123 2 31>.sort(&[<=>]).say
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«"==="␤»
rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«2 4 15 31 9123␤»
lue LLamaRider: it only works as an operator when you use it like one :)
timotimo yeah, only in infix position, not in term position :)
BenGoldberg r: say &[<=>].perl
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«sub+{<anon>} infix:<<=>>(Any, Any $?) { ... }␤»
lue r: <15 4 9123 2 31>.sort({cmp}).say;
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ cmp used at line 1␤␤» 22:10
LLamaRider ah, & is the magic I was hoping for
timotimo well, &[...] really
BenGoldberg r: &+.say
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unsupported use of &+ variable␤at /tmp/tmpfile:1␤------> &⏏+.say␤ expecting any of:␤ infix noun␤»
BenGoldberg You cannot omit the []
LLamaRider right. I already half-figured out I'd need [] to apply to the implicit slurpy argument list (or whatever the right way of calling it is) 22:12
LLamaRider r: <some words here>.sort(&[<=>]).say 22:12
camelia rakudo-parrot ee7dbc: OUTPUT«Cannot call 'Real'; none of these signatures match:␤:(Mu:U \v: *%_)␤ in any at gen/parrot/BOOTSTRAP.nqp:1219␤ in any at gen/parrot/BOOTSTRAP.nqp:1210␤ in method Real at gen/parrot/CORE.setting:1032␤ in method Real at gen/parrot/CORE.setti…» 22:13
..rakudo-jvm ee7dbc: OUTPUT«Cannot call 'Real'; none of these signatures match:␤:(Mu:U \v: *%_)␤ in any at gen/jvm/BOOTSTRAP.nqp:1212␤ in any at gen/jvm/BOOTSTRAP.nqp:1202␤ in method Real at gen/jvm/CORE.setting:1029␤ in method Real at gen/jvm/CORE.setting:3607␤ in …»
..rakudo-moar ee7dbc: OUTPUT«Cannot call 'Real'; none of these signatures match:␤:(Mu:U \v: *%_)␤ in method Real at src/gen/m-CORE.setting:1029␤ in method Real at src/gen/m-CORE.setting:3607␤ in method Real at src/gen/m-CORE.setting:1029␤ in sub infix:<<=>> at src/gen/m-…»
LLamaRider oh, i can't cheat
jnthn LLamaRider: use leg for strings
LLamaRider: or cmp for magic
LLamaRider r: leg.perl 22:14
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ leg used at line 1. Did you mean 'log'?␤␤»
BenGoldberg r: say <some words here>.sort { +* <=> +* }
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?)␤at /tmp/tmpfile:1␤------> say <some word…»
BenGoldberg r: say <some words here>.sort: { +* <=> +* }
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«some words here␤»
timotimo r: enum Foobar <One Two Three>; my Foobar $a; say $a.perl; 22:23
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«Foobar␤»
timotimo yay for getting typed "null" values for free
LLamaRider Is Perl6 introspection, such as .^methods new as a programming language feature, or was it borrowed from somewhere conceptually? The languages I know don't have anything similar, so I'm unsure. 22:24
jnthn LLamaRider: Many langauges have such capabilities so far as introspection goes. In Java and C# they call it reflection, for example. 22:25
LLamaRider oh wow, even Java has it. Thanks, will read up on that
jnthn LLamaRider: Perl 6 goes a bit further than many languages in that it has a MOP, meaning you can not only look at types, but construct them using the same set of fetures. This isn't a new idea either; Smalltalk and CLOS and Perl 5's Moose all inspired what we have in Perl 6 today. 22:26
dalek kudo-debugger: ef18b17 | timo++ | README.markdown:
this repo is now only for the frontend
kudo-debugger: 30c8475 | jonathan++ | README.markdown:
Merge pull request #18 from timo/patch-2

this repo is now only for the frontend
jnthn LLamaRider: for more on that see handle->body.mutex 22:27
uh
jnthn jnthn.net/papers/2012-gpw-meta-programming.pdf 22:27
that one :)
LLamaRider programs writing programs? Acme::Skynet is called for :D 22:28
simula67 well there is definitely a bug in moar if you supply double crlf as input-delimiter for a socket.get pastebin.com/KtEd5P7t 22:29
LLamaRider jnthn++ thanks for the link to the talk!
jnthn simula67: Oh, I know that area of the code...
LLamaRider I've promised to give a Perl6 talk to a bunch of excited undergraduate students in mid-May, so I am trying to find the sexiest topics to mention 22:30
jnthn simula67: It's not really impressed with multi-char delims at the moment...
jnthn simula67: It's on my todo list, but it turns out we had no spectests that care... 22:30
simula67 i can write one tomorrow 22:32
simula67 i ran into some wierdish behavior last time i tried :( 22:32
vendethiel "has @!tasks handles :tasks<elems>;" that's renaming ? 22:36
punter It would be nice if the how-to-get-rakudo contained a .deb of the most recent Rakudo, made for Ubuntu 22:37
the .deb link there links to packages.debian.org, which is (a) for debian, and (b) not the most recent version
(talking about the rakudo) 22:38
LLamaRider r: "something".split("").map(*.wordcase).join("").say 22:40
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«SOMETHING␤» 22:41
LLamaRider r: Str.^methods.grep(/case/).say; 22:42
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«samecase wordcase␤»
LLamaRider r: "something".samecase("AaAaAa").say 22:45
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«SoMeThing␤»
LLamaRider rather curious method :)
I see how it generalizes uc, lc, ucfirst and lcfirst from P5 22:46
thumbs up
though it might be slower in terms of runtime
timotimo r: say Str.^methods.grep /same/ 22:47
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> say Str.^methods.grep /same/⏏<EOL>␤ expecting any of:␤ argument…»
timotimo r: say Str.^methods.grep: /same/
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«samecase samespace␤»
jnthn It's a power tool for when you need it :)
vendethiel: The colonpair is doing renaming, yeah. 22:48
vendethiel r: "a".samecase 22:53
camelia rakudo-jvm ee7dbc: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method samecase at gen/jvm/CORE.setting:6333␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot ee7dbc: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method samecase at gen/parrot/CORE.setting:6333␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-moar ee7dbc: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method samecase at src/gen/m-CORE.setting:6329␤ in block at /tmp/tmpfile:1␤␤»
vendethiel :D
timotimo i think we should let the conditional compilation thingie create empty line fillers for the pieces that got removed 22:54
so that the line numbers match up
LLamaRider r: my $foo = "some string"; $foo.samecase("A" x $foo.chars).say 22:59
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«SOME STRING␤»
LLamaRider it's a bit more difficult than uc($foo)
LLamaRider oh wait, uc is a valid method 23:00
r: "some string".uc.say; Str.^methods.say;"
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unable to parse expression in double quotes; couldn't find final '"' ␤at /tmp/tmpfile:1␤------> "some string".uc.say; Str.^methods.say;"[…»
LLamaRider r: "some string".uc.say; Str.^methods.say;
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«SOME STRING␤BUILD Int Num chomp chop substr pred succ match ords lines samecase samespace trim-leading trim-trailing trim words encode wordcase trans indent codes path unival univals WHICH Bool Str Stringy DUMP AC…»
jnthn lizmat: I've got local patches taht fix sleep sort 23:01
And probably a bunch of other things.
But need to spectest. 23:02
LLamaRider Last annoying question for the night from me. Str.^methods doesn't tell me about .uc, but "something".uc indeed works
why? 23:03
timotimo try .methods(:all)
methods will by default hide inherited methods or stuff 23:04
LLamaRider r: Str.^methods(:all).grep(/uc/).say
camelia rakudo-parrot ee7dbc, rakudo-moar ee7dbc: OUTPUT«succ uc ucfirst reduce duckmap␤»
..rakudo-jvm ee7dbc: OUTPUT«succ ucfirst uc duckmap reduce␤»
LLamaRider timotimo++ it all makes sense now. Thanks
and good night to all
jnthn It's not inherited, it's Mu/Any/Cool that are hidden.
'night, LLamaRider
timotimo ah, thanks
LLamaRider jnthn++ ah then it's even trickier, I'll definitely write that down 23:05
LLamaRider so all Cool things can be messed with in terms of upper/lower case :) interesting 23:06
jnthn Cool = convenient OO loopbacks 23:07
Actually I'm surprised uc is *implemented* in Cool
It should be implemented in Str and Cool should just coerce and delegate.
Otherwise we pay the price of a coercion when it's unrequired.
LLamaRider On first glance, it makes sense that the stringy implementation of uc resides in Str. But I have no idea if there are other Str-like classes in P6 23:09
jnthn We'll perform better if it can go there. 23:10
dalek kudo/nom: 0035fad | jnthn++ | src/Perl6/Actions.nqp:
Fix blorst closure-o.

This in turn fixes try { ... } usage in multiple threads, and maybe other similar bugs.
23:14
vendethiel r: for ({a => 1, b => 2}, {a => 5, b => 5}) -> (:$a, :$b) { say $a + $b } 23:16
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«3␤10␤»
jnthn lizmat: nom/master/master should give you a working sleep sort on r-m
lue r: say "a;b;c".split(";", :limit(1)).perl; # should limit do what I think it should do? 23:17
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«("a", "b", "c").list␤»
lizmat jnthn: just back from bere tasting, will try, thanks! 23:18
jnthn lizmat: I see bere is good for your typing... :P 23:19
Oh wait, is that Romainian for beer? :)
lizmat that's what I thought :-)
lue (that is, limit, uh, limits the number of splits)
vendethiel r: say '| ' ~ ' ' x 5; 23:21
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«| ␤»
lue Oh, I'm silly. It's not a named parameter :P 23:22
vendethiel r: class A { method foo { say "hello ! im a turtle" } }; class B does A { method foo { my $m := callsame; say "hello !"; $meth; } }; B.new.foo;
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤A is not composable, so B cannot compose it␤at /tmp/tmpfile:1␤------> ␤»
lizmat jnthn: alas, t/spec/S17-concurrency/promise.t now seems to hang on the sleep sort
vendethiel r: class A { method foo { say "hello ! im a turtle" } }; class B is A { method foo { my $m := callsame; say "hello !"; $meth; } }; B.new.foo;
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Variable '$meth' is not declared␤at /tmp/tmpfile:1␤------> my $m := callsame; say "hello !"; $meth⏏; } }; B.new.foo;␤ …»
vendethiel r: class A { method foo { say "hello ! im a turtle" } }; class B is A { method foo { my $m := callsame; say "hello !"; $m; } }; B.new.foo;
jnthn lizmat: Did you get HEAD of Moar too?
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«hello ! im a turtle␤hello !␤»
vendethiel oooh.
lizmat ah, eh no
jnthn lizmat: perl6-m -e "await (1..10).pick(*).map({ start { sleep $_; say $_ } })" # works nice for me.
lue r: say "a;b;c".split(";", 1); # somehow I didn't expect limit to mean this, though 23:23
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«a;b;c␤»
vendethiel perl6++
jnthn lizmat: semtryacquire accidentally had semantics more like semacquire which are...different ;)
lizmat ack :-) 23:24
vendethiel r: class A { method foo { say "hello ! im a turtle" } }; class B is A { method foo { my $m := callsame; say "hello !"; $m; $m; } }; B.new.foo;
camelia rakudo-parrot ee7dbc, rakudo-jvm ee7dbc, rakudo-moar ee7dbc: OUTPUT«hello ! im a turtle␤hello !␤» 23:25
vendethiel perl6++ # sane
jnthn lizmat: yeah, that test was prolly vuln to that bug, and it does pass here now 23:26
lizmat ok, I'm not seeing it straight anymore... too tired... will look again after some sound sleep 23:28
in any case, thanks jnthn!
jnthn lizmat: Sleep well!
lizmat you too! :-) 23:29
jnthn Thanks! See you tomorrow!
'night, #perl6 23:31
timotimo gnite!
masak morning, #perl6 :) 23:56
cxreg wondering when jnthn++ next blog post will be 23:58