»ö« 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.
dalek ast: 637d31a | Mouq++ | S03-metaops/cross.t:
Label test as corresponding to RT #77660
01:38
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77660
dalek : 567cca0 | Mouq++ | docs/Perl6/Cheatsheet/cheatsheet. (2 files):
Update collection types
01:55
dalek ecs: e7c777d | (David Warring [email@hidden.address] | S05-regex.pod:
grammar inheritance typo
02:24
dalek ast: a98a8e0 | (David Warring [email@hidden.address] | integration/advent2012-day09.t:
adding advent 2012 day 09
02:33
dalek p: 74875ba | (Andrew Egeler)++ | src/HLL/Compiler.nqp:
Add support for REPL multiline input

When an input line ends with '\', wait for more code before executing.
02:58
lue Huh, running syngen is suddenly much faster at backlink generation and synopses retrieval than the last time I ran it. Who knows what did it :) . (my rakudo and nqp are still from 12 April, with the absolute latest MVM) 03:28
[Coke] MuEvent fails to build on r0m 04:34
rakudo-moar
Error while compiling op p6box_n: To compile on the MoarVM backend, QAST::VM must have an alternative 'moar' or 'moarop'
FROGGS_ [Coke]: is there pir code somewhere? 05:29
moritz good morning 06:47
jnthn lue: Nice that syngen is faster from the recent performance work too. :) 06:49
morning, all
moritz tests donaldh++'s rakudo-j patches 06:56
dalek kudo/nom: 626fd39 | (Donald Hunter)++ | tools/build/Makefile-JVM.in:
On JVM, CORE.setting now compiles comfortably in 800m heap.
07:19
kudo/nom: 9b9ca14 | (Donald Hunter)++ | src/vm/jvm/runtime/org/perl6/rakudo/ (2 files):
Suppress unused warnings for constants. Remove unused local.
moritz t/spec/S02-types/sethash.rakudo.jvm (Wstat: 0 Tests: 191 Failed: 2) Failed tests: 186-187 08:01
lizmat: ^^ is that your doing?
moritz and on moar, I get 08:30
t/spec/S02-types/mix.rakudo.moar (Wstat: 0 Tests: 169 Failed: 1) Failed test: 124
timotimo o/ 09:09
lizmat moritz, timotimo o/
moritz: checking 09:10
lizmat moritz: re t/spec/S02-types/mix, not seeing any test failerues myself :-( 09:13
nor on t/spec/S02-types/sethash :-(
however, the t/spec/S02-types/sethash failing tests relate to minpairs/maxpairs 09:14
the t/spec/S02-types.mix fail is related to .roll(*), and I didn't change anything there 09:15
firing up a jvm build
jnthn Is .WHICH involved in these in some way? 09:16
lizmat checking 09:18
nope, unless role composition is... minpairs/maxpairs live in the QuantHash role 09:20
jnthn We may be vulnerable to .WHICH for things changing over time, is all.
For reference types, I mean.
sergot hi o/ 09:21
jnthn o/ sergot
sergot: Polish Perl Workshop is not far away! \o/ :)
lizmat: On JVM and Moar, .WHICH is based on the address of the object (on JVM because we use .hashCode(), which in turn is typically based on it for JVM). And unlike on Parrot, both Moar and JVM's GCs will move objects over their lifetime. 09:22
lizmat so a .WHICH of an object can change ? 09:23
jnthn yes
lizmat that feels... eh... action at a distance ?
which also means you cannot use .WHICH as a key in a hash to identify an object? 09:24
which basically means that typed hashes are not reliable ?
or sets for that matter ?
or bags / mixes ?
moritz then .WHICH shouldn't be based on memory address on moar/jvm
jnthn lizmat, moritz: Java manages to have object hashes, despite its hashCode() having this property. 09:25
sergot jnthn: that's right! I can't wait. :) 09:26
lizmat maybe .WHICH should be based on mem addr of creation + creation time ?
jnthn lizmat: Well, here's the problem: you need a way to do this without making every object bigger to store taht.
The CLR has a way. We too can manage one, but it's going to be non-trivial. It involves weak references and similar. 09:27
need to take @student for lunch, bbiab
moritz Java's hashCode changes over time?
urks
jnthn moritz: yes
stackoverflow.com/questions/4178997...my-classes
bbiab
lizmat S02:633: "Every object can produce a "WHICH" value that uniquely identifies the object for hashing and other value-based comparisons" 09:30
synopsebot Link: perlcabal.org/syn/S02.html#line_633
lizmat I read this as .WHICH to be immutable for an object
and since everything in Perl 6 is an object... 09:31
timotimo the RAM is an object
lizmat moritz: can reproduce the sethash fail on JVM 09:32
lizmat indeed, there was a .sort missing 09:36
moritz++
dalek ast: baace2c | (Elizabeth Mattijsen)++ | S02-types/sethash.t:
We can't rely on order in which pairs are returned
09:37
timotimo my blog's already had more views this week than it had last week; probably thanks to 6guts mentioning me 09:38
thanks jnthn :)
Ven o/, #perl6 09:42
timotimo neV \o
Ven I think there was the debian perl6 guy here, yesterday or so ? 09:43
(wrt to the segfault I had, doing `aptitude install perl6 && perl6`)
dalek kudo/nom: 3648d3d | (Elizabeth Mattijsen)++ | src/core/asyncops.pm:
Provisionally add "is cas" trait to $@%

Just so I can mark the variables in tests that need to be marked this way.
10:11
colomon is cas? 10:12
tadzik compare and swap? 10:13
timotimo yeah 10:14
assignments to these variables should be attempted atomically
however that'll be possible
lizmat S17:854
synopsebot Link: perlcabal.org/syn/S17.html#line_854
lizmat it's Perl6's equivalent to ":shared" from Perl5's ithreads
colomon ah 10:15
lizmat one could argue that we don't need this if we have sufficient other primitives for queuing up reads/writes 10:17
colomon lizmat++ timotimo++ tadzik++
lizmat to variables from different threads
timotimo much like the parrot threading model? ;)
tadzik :D
lizmat it's just that I realised some of the S17 tests assume "is cas" in some cases
so I would like to mark them as sich
*such 10:18
jnthn How many more times do I have to say it's operations that want to be transactional... :/ 10:22
An "is monitor" or "is actor" could *maybe* make sense
"is cas" really, really does not. 10:23
(where "is monitor" means "implicitly hold a lock during the method call"
)
lizmat okok
it's just that I specced it last November, and nobody complained :-) 10:24
jnthn I'll try and remember to complain more :P 10:26
dalek kudo/nom: f1f30d2 | (Elizabeth Mattijsen)++ | src/core/asyncops.pm:
Revert "Provisionally add "is cas" trait to $@%"

This reverts commit 3648d3d63e8e8d071c131517da4572c21c27f7da.
jnthn I think any of these we spec really, really need to have a strong description of their semantics.
dalek ecs: c71f130 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
"is cas" is no more
10:27
lizmat the only thing I'm still worried about is naive programmers with a threads background 10:29
writing wrong programs that will be unreliable in the Perl 5.005 threads way 10:30
timotimo www.youtube.com/watch?v=KhbUvoxjxIg - this will be a tricky game
lizmat as in random strange effects / segfaults, etc
lizmat we *need* a solution for that, otherwise Perl 6 concurrency will get a bad name 10:30
jnthn lizmat: I don't think you get to be naive and have a threads background :P
lizmat even if it doesn't deserve that
timotimo heh heh. 10:31
moritz with MoarVM, I now have a lock in t/spec/S17-concurrency/promise.rakudo.moar
worked on the first spectest run though
jnthn need to teach, bbl
lizmat well, you'd be surprised the questions I got when I was still maintaining forks.pm
jnthn Maybe I'll do a blog post on this stuff on the train home tonight... I promised lizmat++ one ages ago...
lizmat hehe :-)
moritz: it should be busy for ~ 10 seconds (sleep sort test) 10:32
Ven 5.14 should be enough to build rakudo, right ?
lizmat plenty, I would think 10:33
moritz lizmat: I killed it after it consume >1h CPU time
Ven can't get rakudo to build under debian, but has no idea why
lizmat ah, not good
moritz: any idea at which test it hangs? 10:34
Ven "set_pmc_keyed_str() not implemented in class 'ResizablePMCArray' current instr.: 'main' pc 15 (frontend/parrot2/build.pir:12) make: *** [frontend/parrot2/prt0.pbc.c] Error 1" 10:35
Command failed (status 512): make install-dev :(
Ven (following the steps in rakudo.org/how-to-get-rakudo/) 10:35
lizmat hmmm... is there a reason you want to run rakudo with parrot? why not MoarVM ? 10:36
Ven I just tried to generate every backend. I got a similar, though different error with moar 10:37
moritz Ven: looks like a parrot bug to me :(
Ven I got a missing .so error later
lizmat fwiw, it feels like a rakudo / parrot version mismatch, but I'm no expert on that
moritz that's weird, moarvm works fine for me on debian
Ven actually, `aptitude install perl6` from the VM makes it work in the supervisor, but it segfaults instantly on the vms ... 10:39
Ven m: multi sub MAIN(Str $foo, Str :$add = 'default', Bool :$force) {}; multi sub MAIN() {} # usage ? 10:40
camelia ( no output )
FROGGS Ven: that ResizablePMCArray error sounds like you either built a newer Parrot then 6.1.0, or you have an older parrot in PATH
m: multi sub MAIN(Str $foo, Str :$add = 'default', Bool :$force) {}; multi sub MAIN($bar) {} # usage ? 10:41
camelia rakudo-moar 9b9ca1: OUTPUT«Usage:␤ /tmp/5xnvafQOyL [--add=<Str>] [--force] <foo> ␤ /tmp/5xnvafQOyL <bar> ␤»
Ven I used the other one
FROGGS the other one?
of what?
Ven I mean. I only used the snippet from the blog -- it should take the correct parrot version. No other parrot in my path.
Seems like Moar built, though
FROGGS m: multi sub MAIN(Str $foo, Str :$add! = 'default', Bool :$force) {}; multi sub MAIN($bar) {} # usage ? 10:42
camelia rakudo-moar 9b9ca1: OUTPUT«===SORRY!=== Error while compiling /tmp/s6dwfZGvhX␤Cannot put default on required parameter $add␤at /tmp/s6dwfZGvhX:1␤------> ub MAIN(Str $foo, Str :$add! = 'default'⏏, Bool :$force) {}; multi sub MAIN($bar)␤ …»
FROGGS ahh
m: multi sub MAIN(Str $foo, Str :$add!, Bool :$force) {}; multi sub MAIN($bar) {} # usage ?
camelia rakudo-moar 9b9ca1: OUTPUT«Usage:␤ /tmp/S4Nu35i3JK --add=<Str> [--force] <foo> ␤ /tmp/S4Nu35i3JK <bar> ␤»
FROGGS Ven: do you have another parrot in PATH?
Ven no, I don't
m: sub MAIN($foo, $bar) {} 10:43
camelia rakudo-moar 9b9ca1: OUTPUT«Usage:␤ /tmp/IMrvlEzURx <foo> <bar> ␤»
Ven `make install`ing moar ...
FROGGS m: my $*PROGRAM_NAME = 'camelia.pl'; multi sub MAIN(Str $foo, Str :$add = 'default', Bool :$force) {}; multi sub MAIN($bar) {} # <-- a bit nicer output here 10:44
camelia rakudo-moar 9b9ca1: OUTPUT«Usage:␤ camelia.pl [--add=<Str>] [--force] <foo> ␤ camelia.pl <bar> ␤»
FROGGS that .so error would be interesting to know more abot 10:45
about*
Ven Seems like it's working now. Uh. 10:46
FROGGS hmmm
weird
lizmat m: sub a ($a,&c) { $_ := $a; c }; my $b=1; a($b,{.say; $_++}); say $b # hoping for 1,2 10:52
camelia rakudo-moar 9b9ca1: OUTPUT«Nil␤1␤»
lizmat so what is the canonical way to set $_ for a given block to be an alias to something outside ?
Ah! S06:1971 10:55
synopsebot Link: perlcabal.org/syn/S06.html#line_1971
lizmat m: sub a ($a is rw,&c) { c($a) }; my $b=1; a($b,{.say; $_++}); say $b
camelia rakudo-moar 9b9ca1: OUTPUT«1␤2␤»
lizmat sub a (\a,&c) { c(a) }; my $b=1; a($b,{.say; $_++}); say $b # better, as it allows @ and % as well :-) 10:57
m: sub a (\a,&c) { c(a) }; my $b=1; a($b,{.say; $_++}); say $b
camelia rakudo-moar 9b9ca1: OUTPUT«1␤2␤»
timotimo m: my $foo is parcel; 10:59
camelia rakudo-moar 9b9ca1: OUTPUT«===SORRY!=== Error while compiling /tmp/VbyOAISviX␤Can't use unknown trait 'is parcel' in a variable declaration.␤at /tmp/VbyOAISviX:1␤------> my $foo is parcel⏏;␤ expecting any of:␤ TypeObject␤ …»
timotimo we may want to change S06:1971 to say "is rw" instead?
synopsebot Link: perlcabal.org/syn/S06.html#line_1971
timotimo or is "is parcel" yet to be implemented on rakudo? 11:00
lizmat it is atm an alias for "is rw"
lizmat there was a subtle difference between "is rw" and "is parcel", which I currently cannot remember :-( 11:00
timotimo OK 11:02
m: sub foo { say self }; 1.&foo; 11:03
camelia rakudo-moar 9b9ca1: OUTPUT«===SORRY!=== Error while compiling /tmp/DrdqYv5tnn␤'self' used where no object is available␤at /tmp/DrdqYv5tnn:1␤------> sub foo { say ⏏self }; 1.&foo;␤ expecting any of:␤ argument list␤ p…»
timotimo mhm mhm
lizmat afk for a few hours& 11:07
JimmyZ How did I see it as 'new house'? 11:09
Woodi hallo :) 11:15
Woodi but if Perl is dead but apparently is still moving so it must be a zombie or vampire and they are hard to kill... 11:17
but about concurent debugging: maybe something like "bash -x" which echo every command before execution but per thread/thunk. threads could write to stddebug file descriptor or have one fd per active thread ? 11:21
also: apps eg. db's usually have configs to change number of used threads but hypers and for @a { start(...) } are under-language surface, apps can't change anything. and if app looks like: hyper --> hyper --> hyper --> ... then some parts can be starved or work can be arranged not optimal. maybe each such paraller block could have name and admin could configure how many threads need to be used per named block ? such config isn't just standard app config 11:46
timotimo you can set $*SCHEDULER 11:48
jnthn And, generally, modern scheduler designs can normally do better than a human's guesswork. 11:49
By adapting number of threads not only to the available hardware, but also to the system's current load. 11:50
The Rakudo built-in one doesn't do so yet. 11:51
But there's no reason it can't learn to.
But yeah, if you must, set $*SCHEDULER.
Note that start is also sugar for Promise.start(...), which can take a per-promise level scheduler, so you can get fine-grained control if needed. 11:52
timotimo looking for a good short snippet of code i could explain on video 11:53
i could start with the super-compact pascal's triangle from RC
jnthn say "Hello, world!"; 11:54
timotimo not much to explain there, except if i go crazy into depth :P
jnthn sub mean(*@a) { [+ 11:55
oops
sub mean(*@a) { [+
arse, this keyboard
timotimo heh heh :)
jnthn sub mean(*@a) { [+](@a) / @a }
jnthn timotimo: Maybe some simple class example also is nice 11:57
timotimo raiph suggested to keep it below 100 chars so it'll fit twitter with url and hashtags
jnthn class Log { has @.msgs handles :log<push>; } # :P 11:58
timotimo that's already cute :) 11:59
Ven some p6weekly code 12:00
Ven I mean -- p6advent :-+ 12:03
Woodi jnthn: ok. I was just guessing from apps I know, not quite modern 12:07
Woodi timotimo: looks I must 3rd+ read about SCHEDULERs :) 12:09
timotimo hmm. obs-studio will not be the way to record my screen on my laptop, as it requires an opengl extension i don't have there yet 12:11
jnthn <jnthn> OK, time to go and get cake! <group> * keeps programming 12:12
geez, cake folks :)
timotimo :D 12:13
tadzik :D
jnthn At least the exercise I set must be some amount of fun :)
timotimo: Dunno if you are running in a VM, but I noticed virtualbox provides some kind of screen recording feature. 12:15
timotimo oh
that could be helpful
i'd like to have a somewhat sterile environment to record in rather than my cluttered desktop and such :)
jnthn Didn't try it, just noticed it while trying to make opengel happy in my linux mint vm the other day...
Ven
.oO(is opengel cold to you ?)
12:16
jnthn uh, opengl :P
.oO( I'm so open source, I shower with opengel... )
12:17
FROGGS >.< 12:20
retupmoca I'm not sure if we want this in CORE.setting, or if it should be a module, but: github.com/rakudo/rakudo/pull/261 12:21
(exposes the REPL readline library to perl6 code)
timotimo oh yay 12:24
colomon would totally accept that pull request, except he's not sure about the name... 12:31
FROGGS yeah 12:32
retupmoca what name should it have? 12:33
colomon I dunno
retupmoca I was thinking readline-interactive or something maybe, but I hav no experience naming things on the setting level 12:34
s/hav /have /
colomon consider the IO::Prompter module (github.com/colomon/io-prompter) 12:36
AFK # exercise, yay!
Ven r: role IntConversionHelper { method Num { self.Numeric }; method Numeric { self.Num }; method Int { self.Num.Int }; method Integral { self.Int }; }; class Foo does IntConversionHelper { has Int $.val; method Num { +$.val; } }; say Foo.new(:5val).Integral; 12:41
Ven is trying to define Num and such in terms of others
camelia rakudo-jvm f1f30d: OUTPUT«(timeout)»
..rakudo-parrot f1f30d, rakudo-moar f1f30d: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Malformed radix number␤at /tmp/tmpfile:1␤------> method Num { +$.val; } }; say Foo.new(:5⏏val).Integral;␤ expecting any of:␤ nu…»
Ven m: role IntConversionHelper { method Num { self.Numeric }; method Numeric { self.Num }; method Int { self.Num.Int }; method Integral { self.Int }; }; class Foo does IntConversionHelper { has Int $.val; method Num { +$.val; } }; say Foo.new(:val(5)).Integral;
camelia rakudo-moar f1f30d: OUTPUT«5␤»
Ven this looks better to me than defining each operator 12:42
Ven could very well make this a module
moritz Ven: this is #perl6, not #java :-)
Ven moritz: github.com/colomon/io-prompter/blo...ter.pm#L12
Ven timotimo: actually, I remember asking a similar question few days/weeks ago, "what is the rosettacode example you'd use to demonstrate p6's power to somebody 12:52
timotimo did you get good results? :) 12:53
Ven I'm trying to find what TimToady++ answered me 12:54
timotimo: rosettacode.org/wiki/Function_composition#Perl_6 12:55
maybe rosettacode.org/wiki/Odd_word_problem#Perl_6
meowmixdeath ki 12:59
Ven r: foo(*%a) { say %a.perl }; foo(:a(True), :!b); 13:00
camelia rakudo-parrot f1f30d, rakudo-jvm f1f30d, rakudo-moar f1f30d: 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␤------> foo(*%a) …»
timotimo virtualbox seems to have a problem with my graphics or something
Ven m: sub foo(*%a) { say %a.perl }; foo(:a(True), :!b) # I should know better by now ... 13:01
camelia rakudo-moar f1f30d: OUTPUT«("a" => Bool::True, "b" => Bool::False).hash␤»
Ven m: sub foo(*%a) { say %a.perl }; foo(:a(True), :b!) # I should know better by now ...
camelia rakudo-moar f1f30d: OUTPUT«===SORRY!=== Error while compiling /tmp/oTnPfjs8qt␤Negation metaoperator not followed by valid infix␤at /tmp/oTnPfjs8qt:1␤------> (*%a) { say %a.perl }; foo(:a(True), :b!⏏) # I should know better by now ...␤ …»
Ven m: sub foo(*%a) { say %a.perl }; foo(:a(True), :b)
camelia rakudo-moar f1f30d: OUTPUT«("b" => Bool::True, "a" => Bool::True).hash␤»
FROGGS timotimo: in what way?
timotimo black screen after login
Ven sent timotimo a few examples
Ven btw, it seems that `open :rw` is NYI ? 13:02
timotimo oh? 13:03
Ven I tried to use it doing a p6demo but it blew up :p
timotimo huh.
FROGGS this could be right, and it will be refactored anyway 13:04
or... maybe I am thinking of open :rwp
Ven Cannot call 'open'; none of these signatures match: :(Any $path, Any :r($r), Any :w($w), Any :a($a), Any :p($p), Any :bin($bin), Any :chomp($chomp) = { ... }, Any :enc(:encoding($encoding)) = { ... }) in block at <unknown file>:1 13:05
FROGGS ahh 13:06
, and open( ..., :r, :w ) ?
Ven works :)
FROGGS k
is :rw mentioned in the spec?
Ven I'm not even sure :rw is needed ...
Yep. github.com/perl6/specs/blob/master...ary/IO.pod 13:07
FROGGS: do you think it's necessary ?
FROGGS hmmm, maybe we should add :rw because it is used often enough?
kinda 13:08
Ven `:rw` vs `:r, :w`, really ?
Ven That's like, 2 chars different :p 13:08
FROGGS well, it is specced for some reason... and it is easy to implement and might be handy 13:10
Ven $r = $w = True if $rw; 13:11
though if you want to do that properly, you'll probably want to check if the user provided another `:r` or `:w` with it, at which point ... 13:12
Ven FROGGS: the "easy" way : github.com/rakudo/rakudo/pull/262 13:15
dalek kudo/nom: e572536 | Nami-Doc++ | src/core/IO.pm:
Implement IO.read :rw as specced
13:20
kudo/nom: 0c11bcb | (Tobias Leich)++ | src/core/IO.pm:
Merge pull request #262 from Nami-Doc/patch-2

Implement IO.read :rw as specced
Ven Definitely true that having p6 written in p6 makes it easier for "outsiders" to contribute 13:25
moritz eeks, that's only for the method, the sub form should get :rw as well
Ven whoopsie - thought this was an `is export` 13:27
FROGGS still a method
moritz we don't do 'is export' on methods in the setting
Ven moritz: should I change it in other places ?
FROGGS (but I havn't seen it anyway)
moritz Ven: not that I'm aware of 13:28
FROGGS Ven: you need to adjust this: rakudo/src/core/IO.pm:608:multi sub open($path, :$r, :$w, :$a, :$p, :$bin, :$chomp = Bool::True, :enc(:$encoding) = 'utf8') { 13:28
Ven yeah I know :) I had the commit window opened already 13:29
FROGGS :o)
Ven just wanted to make sure I wasnt missing yet another one ...
FROGGS but yeah, having the compiler in nqp/perl6 is a big plus... I am not that good at writing Haskell
Ven moritz: #263 :) 13:30
dalek kudo/nom: 22db812 | Nami-Doc++ | src/core/IO.pm:
#262 fixup - Add :$rw to `open` sub
13:31
kudo/nom: 8bac4dd | (Tobias Leich)++ | src/core/IO.pm:
Merge pull request #263 from Nami-Doc/patch-3

  #262 fixup - Add :$rw to `open` sub
moritz FROGGS++ Ven++
Ven moritz++ 13:32
FROGGS Ven++
(enough now!!)
:P
Ven FROGGS++ :)
FROGGS gah! 13:33
jnthn The karma ran over the dogma? :) 13:34
moritz and the dog barked "ma"
[Coke] there's a "your mom" joke in there somewhere. 13:35
jnthn There's a joke somewhere in your mom...
jnthn goes to do the final bit of teaching for the week :)
Ven didn't get the dogma part 13:36
FROGGS jnthn: I hope that I am productive on the easter holidays... (fri-mon) 13:37
I have to kick myself somehow to grok CPAN
Timbus erm, is it possible to assign to $r and $w if they are params? 13:38
FROGGS ohh 13:39
good that PR's are kinda cheap :o) 13:40
[Coke] oh, there is PIR code in MuEvent...
sub clock { nqp::p6box_n(pir::time__N)
}
tadzik ah :)
that explains it
FROGGS [Coke]: yes, the message you got is a very good indicator about PIR
tadzik now there's an nqp thing that's even easier to type :) 13:41
moritz nqp::time_n
[Coke] do you need a PR?
FROGGS nothing else triggers it from user code
Ven Timbus: wat?
tadzik though I should actually rewrite MuEvent into something that uses our asyncy-concurency-y thingys
FROGGS Ven: $r and $w need "is copy"
Ven r: sub fu-()
camelia rakudo-parrot f1f30d, rakudo-jvm f1f30d, rakudo-moar f1f30d: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Missing block␤at /tmp/tmpfile:1␤------> sub fu⏏-()␤ expecting any of:␤ statement list␤ prefix or te…»
Ven I'll just stop touching stuff
FROGGS m: sub foo(:$r, :$w) { $r = $w = True }; foo() 13:42
camelia rakudo-moar f1f30d: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub foo at /tmp/9dIDx4xZgZ:1␤ in block at /tmp/9dIDx4xZgZ:1␤␤»
Timbus no. press more buttons
Ven yeah yeah, I got it, I'm just fu-'ing
Ven Timbus: That doesn't seem to help ! 13:43
FROGGS m: sub foo(:$r is copy, :$w is copy) { $r = $w = True }; foo() 13:44
camelia ( no output )
Timbus lol
moritz :r($r || $rw), :w($w || $rw)
Timbus i was thinking something along those lines moritz 13:45
cognominal Is there a double quoted string adverb to allow stray spaces in a string? Let's call it :u for unspace. qq :u ": {self.named} < $!value >" would mean ":{self.named}<$!value>|
Ven m: sub open(:$rw, :r($r || $rw), :w($w || $rw)) { say ($r, $w).perl }; open(:r); open(:rw); open(:rw, :!w);
camelia rakudo-moar f1f30d: OUTPUT«===SORRY!=== Error while compiling /tmp/rmhT0LYwBw␤Unable to parse named parameter; couldnt find right parenthesis␤at /tmp/rmhT0LYwBw:1␤------> sub open(:$rw, :r($r ⏏|| $rw), :w($w || $rw)) { say ($r, $w).p␤ …»
Timbus yet you also want them to be true if they arent defined.. hmm 13:46
cognominal This would permit to use double quotes where we generally use infix ~
Ven that's dealt with later in the code, though
moritz cognominal: I prefer join, personally 13:46
Timbus would be cooler if it was all in one! 13:46
moritz <<: {self.named} < $!value > >>.join 13:47
moritz ($r // True) || $rw 13:47
.oO( rod logic! )
cognominal moriz, ho, I did not know the << .. >> That's nice. 13:48
Ven moritz: you can't actually `sub foo(:r($r || 'a'))`, right ? 13:49
moritz Ven: no, you can sub foo(:$r) { bar( :r($r || 'a') } }
Ven moritz: ah, yeah, but that's not fixing the method 13:50
cognominal so, now, I can advocate my :u adverb only for the the sake of there should be one way to do it as a modifier of the first way one thin of. After all TMTOWTDI is not gratuitous.
cognominal Also it would be for free on nqp where the .join does not exists. I am writing that in nqp btw. 13:52
moritz nqp::join exists. 13:56
(iirc nqp doesn't support quote adverbs anyway)
cognominal yes but that's get verbose.
moritz nqp is more verbose than p6. Live with it.
cognominal nope, my very point is to make less verbose to tend toward Perl 6 style. Eventally, Perl 6 has to be written in Perl 6 if we want people to write compilers for their own language. 13:59
* to make NQP less verbose 14:00
cognominal I am working on write a slang to generate AST. 14:01
Teratogen what? 14:02
cognominal I am working on writing a slang to generate AST. 14:03
Teratogen I don't understand
what is AST?
cognominal An early spec gist.github.com/cognominal/10880617
PerlJam Teratogen: ast == abstract syntax tree
FROGGS abstract syntax tree
Teratogen ah, cool
tadzik maybe we should get S-last into a wtf-compatible database and teach synopsebot to use it :) 14:04
cognominal I am writing the dumper to see how it looks on a real AST.
PerlJam Teratogen: When people here say something weird that you don't understand, have a look at perlcabal.org/syn/S99.html to see if it's in the glossary :)
Teratogen cool I will 14:05
cognominal in this doc, I use the present tense where it should be a future 14:06
Ven m: sub foo($bar is rw) { $bar = True; }; sub baz($bar) { foo($bar) }; baz(my $a); 14:13
camelia rakudo-moar f1f30d: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub foo at /tmp/PItqck4GeJ:1␤ in sub baz at /tmp/PItqck4GeJ:1␤ in block at /tmp/PItqck4GeJ:1␤␤» 14:13
Ven FROGGS: I'd rather have you fix this, because I'm 100% gonna miss something else and it's been enough PRs already 14:15
PerlJam wonders what needs fixing? 14:17
Ven PerlJam: rakudo/rakudo#26{2,3} 14:18
retupmoca (re: my readline patch) Should my new nqp::readlineintfh thing replace the existing prompt sub in CORE.setting? 14:29
instead of being a new function?
retupmoca like so: github.com/rakudo/rakudo/pull/261/files 14:40
colomon, FROGGS: ^ 14:42
FROGGS retupmoca: the difference is that prompt returns when you hit enter and readlinethingy does not, right?
retupmoca readlinethingy should return when you hit enter, yes 14:43
it just allows line editing, where prompt does not
colomon +1
FROGGS hmmm, then +1 to sell it as prompt 14:44
(in case it also prints a text like prompt does)
retupmoca indeed it does
FROGGS (and also takes a default)
retupmoca current prompt has no default - the text is required
unless I misunderstand? 14:45
[Coke] gives tadzik a pull request.
... and another ticket.
FROGGS retupmoca: forget about the default, prompt has none
would be nice if it has one though :o) 14:46
retupmoca FROGGS: what would you like the default to be? :)
colomon retupmoca: one issue: the old prompt worked with $*OUT and $*IN, while yours (I think) only works with stdout and stdin?
FROGGS .oO( say prompt "Do you like coffee?", "Yes" ---> Do you like coffee? [Yes] _ ) 14:47
retupmoca true. nqp::readlineintfh doesn't give an option to change the output fh 14:47
so idk if that's doable easily
Ven r: grammar G { proto token string {*}; token string:sym<"> { \" ~ \" [ <str> | \\ <str=.str_escape> ]* }; token string:sym<'> { \' ~ \' [ <str> | \\ <str=.str_escape> ]* } }; token TOP { <string> * } }; say G.parse('"foo"'); 14:49
camelia rakudo-jvm 8bac4d: OUTPUT«(timeout)»
..rakudo-parrot 8bac4d, rakudo-moar 8bac4d: OUTPUT«Useless declaration of a has-scoped method in mainline (did you mean 'my token TOP'?)␤===SORRY!=== Error while compiling /tmp/tmpfile␤Unexpected closing bracket␤at /tmp/tmpfile:1␤------> scape> ]* } }; t…»
retupmoca FROGGS: refresh the PR for default prompt message :)
Ven m: grammar G { proto token string {*}; token string:sym<"> { \" ~ \" [ <str> | \\ <str=.str_escape> ]* }; token string:sym<'> { \' ~ \' [ <str> | \\ <str=.str_escape> ]* }; token TOP { <string> * } }; say G.parse('"foo"');
camelia rakudo-moar 8bac4d: OUTPUT«No such method 'str' for invocant of type 'G'␤ in regex string:sym<"> at /tmp/0yezbRXF7G:1␤ in any !protoregex at gen/moar/stage2/QRegex.nqp:791␤ in regex string at /tmp/0yezbRXF7G:1␤ in regex TOP at /tmp/0yezbRXF7G:1␤ in method parse at src…»
colomon wonder if there's a way to check if $*IN and $*OUT are set to stdin / stdout and use your new code if they are3?
retupmoca I don't think I know nqp well enough to do that 14:51
is there an easy way to convert $*IN and $*OUT to nqp filehandles to do a comparison?
FROGGS retupmoca: instead of nqp::getstdin you just pass $*IN
retupmoca FROGGS: $*IN doesn't work with nqp::eoffh 14:52
FROGGS does it work to print the $msg to $*OUT, and then prompt using an empty string as second arg?
ohh
retupmoca and without nqp::eoffh, nqp/perl6 will segfault if you ^D
FROGGS: also, my build of r-m acts slightly odd with a '' prompt (it seems to think the prompt is at least 1 character) 14:53
FROGGS hmmm 14:54
retupmoca so if prompt needs to respect $*IN and $*OUT, I think we need a way to fall back to the old code 14:54
FROGGS I dunno how to do that... 14:55
retupmoca I *think* we can do it if we can get $!PIO out of $*IN/$*OUT 14:58
so if we added a IO::Handle.nqpfh method or something? 15:00
jnthn No! Don't leak it.
You can check it's an IO::Handle, and nqp::getattr it out.
retupmoca ah, nqp::getattr sounds like what I needed to know
jnthn And then fall back to something else if it's not an IO::Handle
That said, you may need to go further and ensure that the handles are really stdin/stdout or so 15:02
I mean, it expects a tty I guess
s/expects/needs/
JimmyZ nqp::istty?
jnthn No, doubt we need to go that far... 15:03
FROGGS m: say nqp::getattr($*IN, IO::Handle, '$!PIO') # or so
camelia rakudo-moar 8bac4d: OUTPUT«P6opaque: no such attribute '$!PIO'␤ in block at /tmp/jpK1dFr7SV:1␤␤»
FROGGS m: say nqp::getattr($*IN.IO, IO::Handle, '$!PIO') # or so 15:03
camelia rakudo-moar 8bac4d: OUTPUT«P6opaque: no such attribute '$!PIO'␤ in block at /tmp/2LKjZAWWDH:1␤␤»
FROGGS hmm
jnthn nqp::decont the $*IN maybe
FROGGS m: say nqp::getattr(nqp::decont($*IN), IO::Handle, '$!PIO') # or so
camelia rakudo-moar 8bac4d: OUTPUT«P6opaque: no such attribute '$!PIO'␤ in block at /tmp/38hg0Y7jPM:1␤␤»
FROGGS m: say nqp::getattr($*ERR, IO::Handle, '$!PIO') 15:05
camelia rakudo-moar 8bac4d: OUTPUT«P6opaque: no such attribute '$!PIO'␤ in block at /tmp/mYuX9q4xDQ:1␤␤»
FROGGS m: say nqp::getattr(nqp::decont($*ERR), IO::Handle, '$!PIO')
camelia rakudo-moar 8bac4d: OUTPUT«P6opaque: no such attribute '$!PIO'␤ in block at /tmp/D3IdaSZmu2:1␤␤»
FROGGS damnit
jnthn r: say $*IN.WHAT
Ven Grammars are hard to evalbot
camelia rakudo-parrot 8bac4d, rakudo-jvm 8bac4d, rakudo-moar 8bac4d: OUTPUT«(IO::Handle)␤»
jnthn Ven: gist it and give evalbot the gist url
FROGGS $PROCESS::ERR = IO::Handle.new;
nqp::bindattr(nqp::decont($PROCESS::ERR),
IO::Handle, '$!PIO', nqp::getstderr());
it looks like one could access it as we did 15:06
Ven jnthn: I actually have a perl6-m at hand right here ! Arguably better :-)
jnthn True ;)
Time to head to the station and get my train home
bbl
FROGGS o/ 15:07
retupmoca I think I got it 15:13
testing locally
FROGGS retupmoca++
retupmoca FROGGS, colomon, *: refresh the PR and see if that looks better 15:16
FROGGS I thought the plan would be to pass nqp::getattr(nqp::decont($*IN), IO::Handle, '$!PIO') to nqp::eoffh 15:18
retupmoca hmm
the problem is that nqp::readlineintfh will still print to nqp::getstdout instead of $*OUT
and on my machine, it doesn't really like empty string prompt 15:19
(it doesn't break, it just behaves slightly oddly)
dalek p: 6135feb | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
map nqp::seekfh op for moarvm
15:22
dalek kudo/nom: fbf3873 | (Tobias Leich)++ | / (2 files):
use nqp::seekfh on moar and $!PIO.seek on jvm/parrot
15:23
retupmoca FROGGS: would it make sense to make sure $*OUT is nqp::getstdout (since we can't change that), and then just use $*IN for the user input to readline? 15:32
FROGGS I dunno 15:33
and my brain is not capable to think about it atm
retupmoca I shall await additional feedback from jnthn or someone else then :) 15:33
FROGGS yeah, in general, I am more on the side of implementing/fixing stuff, rather than deciding how it should act 15:35
lizmat is back but has no feed(back) 15:42
Ven doesnt like to see himself at home getting relogging like that oO 15:46
lizmat Stage mast : Error while compiling op seekfh: No registered operation handler for 'seekfh' 15:51
do we need a version bump somewhere?
retupmoca looks like we need a NQP_VERSION bump 15:52
lizmat is building from scratch to make sure
retupmoca err, NQP_REVISION
lizmat hmmm.... nothing that a rebuild from scratch didn't fix 15:56
dalek kudo/nom: 15c145b | (Elizabeth Mattijsen)++ | src/core/asyncops.pm:
Naive implementation of cas()
15:57
lizmat m: $_ ~ "foo"; .say # there must be shorter way to append to $_, no? 16:02
camelia rakudo-moar 8bac4d: OUTPUT«WARNINGS:␤Useless use of "~" in expression "$_ ~ \"foo\"" in sink context (line 1)␤Nil␤»
lizmat m: $_ ~= "foo"; .say # there must be shorter way to append to $_, no?
camelia rakudo-moar 8bac4d: OUTPUT«foo␤»
geekosaur mm, that's a too fiddly, right? 16:07
m: .~=: "foo"; .say 16:08
camelia rakudo-moar 8bac4d: OUTPUT«===SORRY!=== Error while compiling /tmp/lTdfjM2RWv␤Bogus statement␤at /tmp/lTdfjM2RWv:1␤------> .⏏~=: "foo"; .say␤ expecting any of:␤ dotty method or postfix␤»
geekosaur doesn't even remember how to do an operator that way. need sleeeep
lizmat std: ~= "foo"
camelia std e347792: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix = instead at /tmp/Anc1q0SVpL line 1:␤------> ~⏏= "foo"␤Parse failed␤FAILED 00:00 121m␤»
TimToady m: $_~="foo";.say # shorter :P
camelia rakudo-moar 8bac4d: OUTPUT«foo␤»
lizmat hehe 16:09
grondilu m: s/$$/foo/; .say 16:24
camelia rakudo-moar 8bac4d: OUTPUT«foo␤»
lizmat maybe we should have some syntactic sugar for "cas $foo, {$_++}" 16:25
TimToady grondilu: you just want $ there 16:26
grondilu m: s/$/foo/; .say
camelia rakudo-moar 8bac4d: OUTPUT«===SORRY!=== Error while compiling /tmp/_dDWO_1OC0␤Malformed replacement part; couldn't find final /␤at /tmp/_dDWO_1OC0:1␤------> s/$/foo/; .say⏏<EOL>␤ expecting any of:␤ statement list␤ p…»
grondilu std: s/$/foo/; .say
camelia std e347792: OUTPUT«ok 00:01 123m␤»
grondilu j: s/$/foo/; .say 16:27
camelia ( no output )
TimToady rakudobug
n: s/$/foo/; .say
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Unable to resolve method subst in type Any␤ at /tmp/JwT5W2q6lI 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) …»
lizmat grondilu: will you file it ?
or else I can :-)
grondilu please
do
grondilu is not quite accustomed to these stuff
TimToady well, it reasonably complains about $_ not being a string 16:28
lizmat just sending a mail to "rakudobug" with the discussion pasted, is what I do :-)
grondilu m: $_ = "foo"; s/$/bar/; .say
TimToady Any is not Cool
camelia rakudo-moar 8bac4d: OUTPUT«===SORRY!=== Error while compiling /tmp/PFDr2rHY1C␤Malformed replacement part; couldn't find final /␤at /tmp/PFDr2rHY1C:1␤------> $_ = "foo"; s/$/bar/; .say⏏<EOL>␤ expecting any of:␤ postfix␤ …»
TimToady m: $_ = "foo"; s/$ /bar/; .say 16:29
camelia rakudo-moar 8bac4d: OUTPUT«foobar␤»
lizmat 1, select discussion
2. paste to a new email
3. add a descriptive subject
4. send to [email@hidden.address]
TimToady it's not properly taking $ as end of string because it's trying to parse $/
lizmat 5. wait until fix :-)
grondilu lizmat: you forgot 0. check it has not been reported yet. 16:30
TimToady std properly values / as a delimiter more highly than / as a variable name (as does P5 too)
lizmat well, I'd rather see something like this reported twice then forgotten because someone did not take the trouble to find that out :-) 16:31
grondilu ok
TimToady n: $_ = "foo"; s/$/bar/; .say
camelia niecza v24-109-g48a8de3: OUTPUT«foo␤»
TimToady as does niecza
grondilu lizmat: I'll report it, to prove my good will :-)
lizmat cool, thank you!
it's your itch :-)
TimToady p6: $_ = "foo"; say so m/$/ 16:33
camelia ( no output )
..rakudo-parrot 8bac4d, rakudo-moar 8bac4d, niecza v24-109-g48a8de3: OUTPUT«True␤»
TimToady funny that it works there
grondilu reported the bug 16:39
lizmat grondilu++ 16:40
TimToady it wins in STD because token metachar:sym<$> does lookahead for <.stopper> to include it in LTM, and it's a more-derived rule than special_variable:<$/> 16:41
jnthn lizmat: That naive cas is, uh, so naive it doesn't even have the right signature? :) 16:49
lizmat ah? 16:50
jnthn oh, sorry 16:51
lizmat seems to do what I want it to do so far ?
jnthn it does
TimToady and token metachar:sym<rakvar> appears to be winning in rakudo, since there's no metachar:<$>
jnthn It needs to read val = code(val), surely?
lizmat I'm not sure about that, really
I was going by the example at S17:848 16:52
synopsebot Link: perlcabal.org/syn/S17.html#line_848
lizmat and interpreted that incorrectly, I now realize 16:53
jnthn cas $a, { $_.succ };
.succ is not in-place
If you in-place update the thing then cas can't cas ;)
That'd actually be an infinite loop :)
benabik … That’s a terrible signature for cas. Don’t you need an expected value?
jnthn well, cas $a, { $a++ } would; 16:54
benabik: See the spec.
benabik Ah. There’s a var, old, new version too.
jnthn benabik: It's just one overload.
Though perhaps we should give the implicit-retry-loop one a better name.
dalek kudo/nom: fae1d09 | (Elizabeth Mattijsen)++ | src/core/asyncops.pm:
Slightly less naive implementation of cas()

  jnthn++
16:55
jnthn It's just that a load of my real-life uses of such things do the loop, and I get bored of writing it again and a gain, so tend to end up defining myself something that does what cas $a, {...} does. 16:55
casloop could perhaps be better
Then we needn't make it a multi 16:56
benabik cas($var, &code) is more like do { my $old, $new = $var, code($var) } until cas($var, $old, $new)?
jnthn Pretty much, yeah.
retupmoca jnthn: can you take a look at my updated PR (rakudo#261) for prompt? Hopefully it's sane now.
jnthn prompt?
Oh, did we decide to endow that with readline?
benabik jnthn: Seems akin to the general fetch-and-phi from CS lit.
retupmoca jnthn: that's my proposal, anyway 16:57
jnthn benabik: I'm pretty sure I don't want the Perl 6 sub to be called fetch-and-phi ;)
Teratogen: Hmm. It's not a bad one...
oops
lizmat I just realize that I was using cas() more as a protect()
jnthn That was a bad mis-tab though :) 16:58
lizmat protect %h, {$_{foo}++}
benabik jnthn: You can certainly call it something different, although it’s probably most useful if it returns the old value.
lizmat basically create a lock on the .WHICH of given container 16:59
but I guess that just carries the danger of deadlocks again :-(
benabik jnthn: And calling it something akin to fetch-and-phi will mean someone looking for that could find it. The first cas-code version is literally fetch-and-increment.
benabik *example 17:00
benabik Although I suppose if I was going to try to use FA* and couldn’t find it, my next step would be to look at CAS. 17:01
Teratogen hi jnthn 17:02
jnthn benabik: Depends on what literature. Back at uni it was decidedly introduced as CAS, or atomic compare and swap.
jnthn And .Net calls it CompareExchange 17:03
libatomic follows the fetch naming, though.
lizmat: yeah, cas ain't that.
lizmat: "I looks like you want STM" :)
(ut
*it
TimToady we should call it Fred, or Barbara, or some such
jnthn wfm :) 17:04
benabik jnthn: They’re two different things. CAS can be used to implement Fetch-and-Φ, or vice versa.
jnthn Ah
benabik jnthn: Typically FAΦ is actually a generic term for the category of operations like fetch-and-increment, fetch-and-set, etc. 17:05
jnthn Fair enough.
benabik The casloop is the implementation of all FAΦ for platforms that only have CAS. Which isn’t uncommon. 17:05
TimToady we should charge everyone a Φ for its use 17:06
(can you tell how I pronounce that Greek letter? :)
thou Hi! I built perl6-m nom HEAD yesterday (awesome!), and notice that perl6 --doc /path/to/Str.pod (or others) behaves odd when piped (to less, or cat -v). OS X 10.9.2 iTerm. Known issue? Text displays OK w/ no pipe, but is truncated or slightly jumbled when piped. 17:07
benabik I think x86 may be the only common platform with an atomic fetch-and-increment instruction. Turns out to be useful in a number of lock-free data structures.
jnthn x86 doing something well? Wow! :) 17:08
TimToady ((inconsistenly, I do not pronounce π as "pee"))
*tent
benabik Well, more like x86 having everything and the kitchen sink...
lizmat $ perl6 -e 'my %h; cas %h<foo>, {$_.succ}; say %h'
No such method 'succ' for invocant of type 'Any'
jnthn Clearly we should run Perl 6 on the x86!
TimToady thou: almost certainly a failure to flush an IO buffer 17:09
lizmat seems we're going to have a problem doing this to hashes, or am I missing something?
benabik Hm. Oddly, I geta TTIAR error parsing Str.pod
lizmat I mean, initializing the hash element would also be a race condition
jnthn lizmat: You're *always* going to have a problem if you try to mix auto-viv with atomicity.
thou TimToady: Yes, seems it should be easy to fix. I couldn't find where it's actually printed.
TimToady did the recent change to let exit() cleanup bypass a needed buffer flush? 17:10
jnthn TimToady: It's possible, I guess
thou FYI I haven't tried rakudo for a while, so no idea if this is recent or not.
jnthn TimToady: That'd explain truncated, though not slightly jumbled, though? 17:11
Wonder if I can reproduce it in my Linux VM....
thou benabik: I did: make install; perl6 panda-bootstrap; panda install p6doc; p6doc Str # noticed issue; perl6 --doc /path/install/.../site/lib/Str.pod 17:12
jnthn lizmat: btw, if you're interested in getting a real CAS impl in place, I'm happy to give pointers.
benabik Oh, I probably lack the Pod libraries.
jnthn (will need a bit of C work)
lizmat well, I'm interested, I'm not sure I have the Moar/C Fu to do that
definitely not for this month's release :-) 17:13
jnthn ok, np
lizmat which would be tomorrow, right?
jnthn yes :)
timotimo has absolutely no clue how to build a robust CAS for moarvm
lizmat I'll just keep it with the naive cas for now, so I can at least mark all of the S17 tests appropriately 17:14
jnthn ok
thou slightly jumbled == hard to describe, but: in less, first page looks ok, scroll down 1 line, exposing at bottom a long text line, at which point the last 4 or 5 lines shift up, covering up end of previously-visible text. scroll up and it redisplays. Probably term size and doc content dependent behavior.
timotimo tomorrow already? wow! 17:15
jnthn timotimo: 3rd Thursday comes early this month.
timotimo right
thou btw, it's thrilling to have panda just work, very nice!
jnthn and it's not even the 3rd Thursday
timotimo need me to work on anything in particular for moar or nqp/rakudo before the release?
jnthn It's the thursday after the third tuesday... 17:16
vendethiel needs to fix his previous prs... 17:16
TimToady thou: that sounds more like a stupid pager
jnthn timotimo: Well, we should look at what thou just reported, I suspect.
timotimo TimToady: or mixed stderr and stdout output?
TimToady could be
jnthn If I really have busted paging stuff on stdout that's kinda bad.
thou TimToady: I agree, but it's less ... very odd; I did try perl6 --doc ...Str.pod 2>&1 | less, no different 17:17
timotimo weird!
TimToady what's your TERM set to? 17:18
jnthn Does anybody else get it, btw?
TimToady and does stty -a report the right dimensions?
thou and if I redirect to a file, then less file.txt, it's fine
TimToady less shouldn't get confused merely by a long line unless it's terminal settings are inaccurate, or maybe you've got a weird scroll setting in the screen 17:19
try resetting the terminal?
sometimes printing garbage sets the scroll region oddly
timotimo oh yeah, garbage can be any combination of valid but non-helpful commands for your terminal in it 17:20
vendethiel m: sub foo($a is copy) { bar($a); }; sub bar($a is copy) { say $a }; foo(5);
camelia rakudo-moar 15c145: OUTPUT«5␤»
kurahaupo thou: when you redirect to a file, does anything show at the same time, on stderr? 17:21
TimToady kurahaupo++ 17:22
thou I opened a new iTerm window. Tried TERM=xterm-256color (my default), vt100, xterm, ansi. Different TERM settings do affect it slightly, but still is weird. stty -a ($LINES $COLUMNS, too) matches actual dimensions. When redirect to file, no stderr output 17:22
TimToady I guess the scroll region explanation wouldn't explain the redirect working right
jnthn fwiw (not much, probably), on Windows piping it to more works out :) 17:23
timotimo what in the ... ?!
TimToady maybe someone fed the IO to a hyper... 17:24
and the output buffer size makes a difference
benabik thou: Do you have R in your $LESS env? Could be that some bit of output is an unwanted terminal control code.
TimToady is stretching...
timotimo in general, i think calling print to a FH multiple times is less expensive than concatenating the text before doing a single call, eh? 17:25
tadzik heh
maybe print yes, say no :D
TimToady is true in P5, but depends on how pessimal the IO invocation is
kurahaupo if you run under "script" to capture the output, does it differ from what's written with redirection? 17:26
TimToady well, except join is optimized in P5, so both ways are fast :)
thou Maybe iterm related, but i've never seen anything else behave wonky. 'p6doc Str | tail' works ok. But 'p6doc Str | cat' consistently shows wrong stuff at the end. Example: pastee.org/h6gde 17:28
timotimo huh, could the line wrapping be wrong if there's no newline at the very end? 17:30
thou I tried Terminal.app, too. Same thing.
TimToady how could piping to cat vs tail make a difference?!? 17:31
thou head has same issue
timotimo well, less probably does its own line wrapping
and the others would leave it to the terminal?
jnthn Just tried the Moar build I had on my Linux VM and it was OK piping Str.pod to less
Building a latest now.
thou i.e.: perl6 --doc ... > skr.txt; head -n 50 skr.txt # OK; perl6 --doc ... | head -n 50 # Broken 17:32
timotimo what repo do i find that file in?
thou perl6/doc 17:32
panda install perl6doc
timotimo thanks
thou s/perl6doc p6doc
thou (Str.pod is not the only one -- it's all files i've seen) 17:33
TimToady does changing your screen width change the behavior?
jnthn *sigh* train wifi is busted, and my 3G connection is really LTA on this bit of the line :/
thou I compiled nom 7814401b72945ee738e27707c4b3466edafa5c73
thou If no one else can get it, it's possibly some broken thing in my homebrew; after uprade of OS X to 10.9 I've had various issues there..... 17:34
I tried with both a wide window (253 cols) and standard 80x24 17:35
thou cat vs. tail: problem only shows if long lines near end of output 17:36
timotimo wtf, unix? :)
dalek ast: 2b72453 | (Elizabeth Mattijsen)++ | S17-concurrency/ (3 files):
Cassify S17 tests
17:37
jnthn Can't reproduce it on my Linux VM, fwiw. 17:43
thou OK. I think this may be OS X termcap related or something like that :-/ 17:45
I'll just drop it. It's very odd, though.
thou thanks for investigating, and sorry for the distraction! 17:45
geekosaur that doesn't look like terminal type to me, that looks like an unflushed buffer 17:52
jnthn thou: No, thanks for reporting. It's not a distraction. 17:52
thou: Just that nobody else can reproduce it yet.
Mebbe somebody else on OSX can...
[Coke] tadzik: ping 17:53
tadzik [Coke]:
yep
[Coke] there's a pull request and a new issue on muevent. 17:55
thou I'm going to try building jvm backend and check w/ that
[Coke] I agree it would be nifty to write it with promises and not the poll/select trick.
(I want to use moar for the project I'm doing that needs a muevent.) 17:56
benabik I’ll see if I can reproduce the output thing… But I have to install panda first...
jnthn [Coke]: What are you trying to do in the project? 17:59
dalek ast: 6ef4a7c | (Elizabeth Mattijsen)++ | S17-concurrency/thread.t:
Fudge thread stress test

Cassifying made it randomly segfault more often
18:01
benabik Hm. 18:02
Less looked fine, but I get “cat: stdout: Resource temporarily unavailable” when trying |cat
And now truncated output without an error. But only intermittently. 18:03
geekosaur ohhh 18:04
geekosaur the filehandls is nonblocking, and tty devices and pipes can be slow and need to block 18:04
*filehandle is
[Coke] jnthn: TL;DR - redo github.com/tlily/tigerlily in perl 6
it's a extensible chat client for a chat server that only a few hundred people in the world use. (I'd like to port the bot that I wrote in it to both perl 6 and to IRC) 18:05
so async IO events would be most nice.
[Coke] one day I'll finish a project instead of trying to do 30 diffe -SQUIRREL! 18:08
jnthn geekosaur: I at a guess imagined that that's what github.com/MoarVM/MoarVM/blob/mast...ops.c#L321 is doing 18:11
benabik lists.nongnu.org/archive/html/bug-c...00008.html 18:12
geekosaur the question might be whether that's actually doing the right thing at the lowest level (also... literal values for such things?)
benabik It /looks/ like stdout is getting set non-blocking and OS X doesn’t like it.
jnthn geekosaur: I don't know. I didn't put it in there :) 18:14
geekosaur that's not just an os x thing 18:15
benabik From the comment, the code seems to think that setting the flag makes it non-blocking. Evidence suggests that’s not enough.
geekosaur it's every unixlike out there that considers non-blocking an attribute of a ssytem file table entry and not just an individual process's handle
benabik Perhaps setting the flag is enough on Linux but not OS X? Why don’t all platforms just use uv_stream_set_blocking? 18:16
jnthn uv_stream_set_blocking is only implemented on Windows, iirc :/
benabik Ahhhhh...
jnthn So I put it in there and was happy and othrs were like "omg you broke it" :) 18:17
benabik libuv seems to be lacking a bit in “cross platform"
TimToady well, how hard can it be to add one bit? :) 18:19
benabik uv_stream_set_blocking appears to be in libuv/{include/uv.h,src/unix/stream.c}
_sri famous last words
benabik Ohhhhh.... 18:20
But it’s just an abort in unix. D'oh.
FROGGS benabik: github.com/MoarVM/MoarVM/blob/mast...ops.c#L309 18:21
doesn't this what uv_stream_set_blocking does for Win32?
do*
benabik Judging from effects, no.
FROGGS k
it had effects on my box when I added it though 18:22
IIRC it made a hang go away
benabik FROGGS: Linux?
FROGGS yes
thou It seems the root cause has been found. Good! perl6-j doesn't suffer from the same problem (too late to be useful) 18:25
benabik Well, there appears to be a large amount of `#if defined(__APPLE__)` in libuv. 18:26
I’m not familiar enough with the code here to know what part is going to be important. :-/
benabik Well, error diagnosed. I don’t really have the time to dig further. :-/ 18:31
jnthn To be fair, if we'd just hacked up all the stuff ourselves in Moar, we'd not be more portable. :) And there's not a huge selection of alternatives. 18:32
("We'd not be a lot portable" here meaning "we'd probably be less ortable and have spent longer getting there") 18:33
benabik libuv HEAD has removed the abort from set_blocking in unix. But it just returns an error instead of doing anything useful.
I’m guessing that set_blocking should probably set the flag in most Unix and maybe the Apple specific stuff needs to do something special. If we find a solution it probably should get punted upstream. 18:34
jnthn aye 18:35
timotimo jnthn: are we actually ready for a tristar for this month? 18:39
jnthn timotimo: Well, a bistar at least. 18:40
timotimo parrot and moar?
jnthn timotimo: I got Moar clean on module install and tests.
FROGGS me too 18:41
jnthn FROGGS: Got a recen tJVM report?
timotimo that sounds lovely
FROGGS wait...
jnthn: no, but I can update this tonight: gist.github.com/FROGGS/0ea5537eb675588baaa2
jnthn: you even got DBIish clean?
jnthn FROGGS: Yeah 18:42
FROGGS cool!
jnthn FROGGS: that needed a Rakudo bug fix.
FROGGS ahh
jnthn Well, NQP one
Code-gen fix, of all things... )
lizmat is glad to see so many Perl 6 talks at PLPW: act.yapc.eu/plpw2014/schedule?day=2014-05-17 18:42
timotimo are there video recordings from GPW available? 18:43
jnthn oooh yay, my talk is on day 1 :) 18:44
FROGGS I have a talk on every day \o/ 18:45
timotimo: it seems so... I get the link in a sec
jnthn And not first thing in the morning :)
FROGGS: I was lazy and only submat one. 18:46
FROGGS and I hope that I can show off with CPAN for Perl6 by then... 18:47
timotimo lizmat submat, too
lizmat only once, though
timotimo and stuff like generating executables that will look for the right compunit repo and version and stuff
jnthn :) 18:48
lizmat I wonder if we could have a Perl6 hackathon on the Fri before? 18:49
jnthn I'm pretty sure I can't.
I think I might actually have to fly from somewhere != home to get there.
oh, no. 18:50
lizmat oh no?
timotimo does that mean there actually will be a hackathon? :) 18:51
jnthn My schedule did once have it so I was gonna have to do that.
I guess my "I'll teach that day if you work out how to get me to Poznan that evening" led to me not teaching that day. :)
I'm teaching mon-wed that week.
May have some stuff to do on the Thu. 18:52
But could do an evening flight on Thu or early flight on Fri. 18:53
dalek kudo-star-daily: 0e06f71 | coke++ | log/ (5 files):
today (automated commit)
rl6-roast-data: dc53d16 | coke++ | / (6 files):
today (automated commit)
lizmat would be very nice if all the stakeholders on S11/S22 would be sitting together in the same room :-)
[Coke] yay, rakudo.moar is now the only rakudo with failures. 18:54
benabik yay?
vendethiel 6 perl6 talks ? or is sergot also gonna talk about p6 ?
[Coke] benabik: we've had failures on all 3 for weeks.
benabik [Coke]: Well, it’s an improvement at least. I’d be happier if Moar wasn’t the one with the failures though. ;-) 18:55
jnthn It does also pass the most tests :P
benabik yay! 18:56
jnthn lizmat: Yeah. I think I can make it.
jnthn realizes that he'll be away from home at least half the nights in May. 18:57
sjn_ \o 18:58
jnthn o/ sjn_
lizmat jnthn: looks like that for woolfy and me as well 18:59
sjn_ jnthn: sitting with one of the guys working on the JavaZone talk schedule; he's asking if someone from #perl6 would like to give a talk. Know of anyone interested? :) 19:02
JVM angle optional but appreciated 19:04
javazone.no/
jnthn Well, you're asking in the right channel... :) 19:07
PerlJam sjn_: Are there often non-Java talks at JavaZone? 19:11
lizmat jnthn: should this work? 19:15
for (CurrentThreadScheduler, ThreadPoolScheduler) {
$*SCHEDULER = .new;
dalek rlito: 66a686c | (Flavio S. Glock)++ | / (6 files):
Perlito5 - rename module Perlito5::Grammar::Regex to Perlito5::Grammar::Regex6
19:15
jnthn lizmat: Maybe; I can't remember if the latter one demands args saying how many thrads. 19:16
*threads
m: ThreadPoolScheduler.new 19:17
camelia ( no output )
jnthn Seems not.
lizmat ok, thanks for the sanity check 19:18
sjn_ PerlJam: yes, they have several non-java tracks 19:20
lizmat m: say $SCHEDULER.WHAT; say "{$*SCHEDULER.WHAT}" # some scoping issue ? 19:21
camelia rakudo-moar fae1d0: OUTPUT«===SORRY!=== Error while compiling /tmp/yiS0CDIfrQ␤Variable '$SCHEDULER' is not declared␤at /tmp/yiS0CDIfrQ:1␤------> say $SCHEDULER.WHAT⏏; say "{$*SCHEDULER.WHAT}" # some scopi␤ expecting any of:␤ …»
lizmat m: say $*SCHEDULER.WHAT; say "{$*SCHEDULER.WHAT}" # some scoping issue ?
camelia rakudo-moar fae1d0: OUTPUT«(ThreadPoolScheduler)␤use of uninitialized value of type ThreadPoolScheduler in string context␤␤»
sjn_ what they want is interesting talks :)
lizmat hmmm..... I guess not
PerlJam nice. JavaZone++ 19:22
jnthn lizmat: No, just .Str vs .gist
lizmat m: say Int.WHAT; say "{Int.WHAT}" # indeed :-)
camelia rakudo-moar fae1d0: OUTPUT«(Int)␤use of uninitialized value of type Int in string context␤␤»
vendethiel (being able to change $*OUT and $*IN (being able to choose dynamic scoping), like in plt/scheme is a really, really powerful tool) 19:26
r: my $*OUT = ""; say "foo"; # is it STORE ? 19:27
camelia rakudo-moar fae1d0: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method print at src/gen/m-CORE.setting:1051␤ in sub say at src/gen/m-CORE.setting:13554␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm fae1d0: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method print at gen/jvm/CORE.setting:1051␤ in sub say at gen/jvm/CORE.setting:13497␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot fae1d0: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method print at gen/parrot/CORE.setting:1054␤ in sub say at gen/parrot/CORE.setting:13539␤ in block at /tmp/tmpfile:1␤␤»
benabik vendethiel: I think say ‘foo’ is just $*OUT.say ‘foo’
vendethiel benabik: not what I want :-) 19:28
I would like to store in a variable the output
jnthn There's a module for that I think
benabik You want a string buffer then.
jnthn github.com/sergot/IO-Capture-Simpl.../Simple.pm 19:29
that shows how to do it.
vendethiel yep, ty 19:30
vendethiel oh, just .print >_> 19:30
benabik You don’t want say to be $*OUT = something, because then trying to set $*OUT to something to redirect is going to just result in output. ;-)
vendethiel I didn't understand what benabik meant >_>
benabik: what?
benabik vendethiel: .STORE is used when you assign to something. So if say used STORE, redirecting $*OUT would be a pain. 19:31
vendethiel ah, yeah :-).
I'll just override .print :-)
hoelzro ugh, I really need to put some time into that Kate syntax file 20:03
timotimo yes please :)) 20:19
vendethiel would like a standart highlighting format ... 20:21
dalek rlito: e6b0e42 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Regex5.pm:
Perlito5 - new module Perlito5::Grammar::Regex5 wip
20:31
sjn_ btw; deadline for submitting talks to JavaZone is April 28th (in a week or so) 20:36
hoelzro vendethiel: I'm thinking of unifying the pygments, kate, and vim highlighting in a single repo 20:38
and possibly generating pieces of each from a common spec
lizmat jnthn: am I correct in understanding that Supply.for will "more" all the values on *each* tap? 20:43
even if a tap is created after another tap has consumed all the "more"s ? 20:44
timotimo i don't think it even *can* more values to some taps but not others 20:46
so if you tap something later, it won't be able to send only the first few there again
lizmat there is a test for specifically that, and it passes 20:48
where a second tap doesn't see the first value, and the first tap doesn't see the third value because it closed it before it was "more"d
I sort of expected that for a Supply.for as well, but it seems *that* will generate all values for *each* tap, regardless of when they're started 20:49
I guess in a way it makes sense
it's just that the spec is a little unclear about that (S17:523) 20:50
synopsebot Link: perlcabal.org/syn/S17.html#line_523
jnthn bck from the train
lizmat: Yes, Supply.for gives a cold observable
lizmat jnthn o/
jnthn lizmat: I'm afraid we don't have a Perl 6 name for that concept yet, so I hope you can excuse the Rx one. ;)
lizmat: But your understanding is correct: each time you tap a...hmm...let's call it a cold supply...it sets something in motion that delivers the values. 20:51
lizmat: A "hot supply" works differently; there, the values come and go whether anybody has tapped, and if two things tap they're tapping into the same supply and both getting its values from the point they tap 20:52
lizmat: Examples of hot supply: mouse move events, file change notifications... 20:53
lizmat ok, so maybe I should introduce "hot" and "cold" in the spec?
jnthn We can; I never felt hot and cold were optimal words, though, tbh.
I suspect TimToady++ might find us better ones, with time.
When I first heard the names, they didn't especially give me an intuition of the difference. 20:54
And I still find myself teaching them as just names for things I then need to explain.
"ready supply" is cute but then I wasn't sure which one it'd be :P 20:56
lizmat well, sharing and cloning supplies ? 20:59
the cold supply you could consider a clone of a sharing (hot) supply ? 21:00
lizmat maybe better: a "picking" and a "rolling" supply ? like the difference between .pick and .roll ? 21:00
recorded / live supply 21:01
jnthn live or rolling I like.
(for hot)
lizmat on demand / live supply
jnthn picking and recorded feel a bit off
on-demand is better
thou from "it set something in motion", it sounds like "recorded is wrong
jnthn Yeah, "recorded" is more like a ReplaySubject...
lizmat so an "on demand" video vs a "live feed" video 21:02
thou yeah 21:03
lizmat ok, I'll go with "on demand" versus "live" then, for now at least
unless TimToady already wants to chime in?
jnthn yeah. I think "live" is really good. "on demand" feels a tad awkward.
But does match well
"rental supply" :P 21:04
lizmat indeed.. :-)
jnthn I probably shouldn't try for cute naming. Damian already correctly chastised my kxxv enough :D 21:05
lizmat maybe a "type" method on the tap ?
jnthn Well, type is always the wrong word for anything :)
lizmat "live" "on demand"
hehe
jnthn Hmm...occurs to me Rx doesn't, afaik, have an introspection mechanism for that. I wonder if that's for a deep reason, or because it's not useful... 21:06
lizmat point taken... I go at great lengths to please all of you :-)
jnthn Feels like it's most useful in an exploration sense.
Like, "I wonder how this one works" 21:07
Might be useful for an interactive debugger to know.
You can safely tap into a live stream without interfering with it. 21:08
We could just call it "live" and it's a boolean. 21:09
lizmat ok, will take that approach 21:10
jnthn Gee, "we've hit 'peak beard'" is probably the winner of "phrase I never expected to see in a news article" today... 21:12
jnthn gets back to writing his blog post
lizmat jnthn++ :-)
timotimo yays 21:13
jnthn Tomorrow is last day of $dayjob work until after the Dutch Perl Workshop, also :) 21:14
lizmat and the weather is going to get better! :-) 21:15
jnthn It already is better here :)
Was sunny up in Stockholm.
Teratogen hi jnthn 21:17
jnthn o/ Teratogen
Teratogen =) 21:18
[Coke] thinks jnthn probably is top beard on #perl6. 21:19
speaking of SQUIRREL-brain, I just volunteered to replace an actor in a show that starts in five weeks.
lizmat does it have lines? 21:24
nwc10 more bloggage?
tadzik I feel like going to NLPW :)
nwc10 not quite "you wait for ages and 3 come along together"
someone had an *excellent* photo with that caption 21:25
3 oil platforms, in the sea
jnthn nwc10: One of those "it's more optimal for me to write a blog post that might explain my take on something well, than badly explain something again and again" :)
nwc10 but this was in meatspace (and I suspect film), so the Internet cannot provide a version of it
jnthn: aha. About Perl 6, or beer? :-) 21:26
lizmat jnthn: would you consider Supply.interval to be a "live" or an "on demand" tap ? 21:27
jnthn lizmat: Certainly on demand. 21:28
lizmat ok
jnthn lizmat: Becomes clear it needs to be given the interval can vary :)
lizmat: Also because you want the ticks to stop on un-tap
lizmat: For a given usage, anyways.
lizmat this also implies we could cache grep/map/uniq/squish on "on demand" taps 21:29
lizmat hmmm... maybe not 21:29
if they'e like .interval
dalek ecs: 4d7ca45 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Elaborate on "on demand" and "live" Supply
21:31
dalek ast: c691297 | (David Warring [email@hidden.address] | integration/advent2012-day03.t:
tweaks (thanks to day 10)
21:32
ast: 0f6ab3d | (David Warring [email@hidden.address] | integration/advent2012-day10.t:
adding 2012 advent day 10
dwarring I've got a PR to pull in a few more advent tests 21:33
github.com/rakudo/rakudo/pull/257
just when someones got a few moments 21:35
dalek kudo/nom: 54e6994 | (David Warring)++ | t/spectest.data:
Make advent2012-day04.t a stress test

Takes around 20 sec to run @moar and 1 min @jvm
21:35
kudo/nom: e8ee661 | (David Warring)++ | t/spectest.data:
Also add integration/advent2009-day21.t
kudo/nom: 11c277c | (David Warring)++ | t/spectest.data:
adding integration/advent2012-day09.t
kudo/nom: 8384fcd | (David Warring)++ | t/spectest.data:
Update spectest.data
kudo/nom: d37353f | lizmat++ | t/spectest.data:
Merge pull request #257 from dwarring/patch-1

  spectest.data changes
dwarring thanks lizmat++ 21:36
lizmat yw 21:39
Files=808, Tests=31186, 167 wallclock secs ( 7.67 usr 3.63 sys + 1118.66 cusr 79.16 csys = 1209.12 CPU)
jnthn Show-off! :P 21:40
47s until a 2-min spectest :) 21:41
lizmat hehe... yup: waiting for a 16 core MacBook 21:41
:-)
dalek ast: 640c38f | (Elizabeth Mattijsen)++ | S17-concurrency/supply.t:
More deeply test supplies, with both schedulers
21:49
lizmat calls it a day and wishes #perl6 a good night (*) 21:50
(*) wish still meant well where not applicable
jnthn :) 21:51
'night, lizmat++
sjn_ is having a tasty beer at one of the local brewpubs :-9 22:02
tadzik mmm :) 22:35
TimToady thought all supplies were "live", and wonders if "on demand" is just an array in disguise that you can only push values into, and can't remove values except by destroying the whole supply 22:48
and it sounds like a great way to leak memory if you forget to destroy the supply 22:49
a cockpit recorder with an infinite tape, seemingly 22:50
retupmoca my new prompt doesn't like Term::ANSIColor - readline thinks all the color escape sequences are printable :\ 22:57
TimToady well, they are printable, they just don't have width... 23:23
cognominal TimToady is a character with depth. 23:44
segomos a non-null character with depth
segomos how do i get warnings like p5, where i get the line #? 23:47
Mouq segomos: You mean like how `warn "abcd"` just does $*ERR.say("abcd") in p6 but does say STDERR "abcd at $file line $line"? 23:54
*In p5
Mouq std: throw "abcd" 23:55
camelia std e347792: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'throw' used at line 1␤Check failed␤FAILED 00:01 122m␤»
TimToady n: warn "fo"
camelia niecza v24-109-g48a8de3: OUTPUT«fo␤ at /home/p6eval/niecza/lib/CORE.setting line 1389 (warn @ 5) ␤ at /tmp/omI5VerHUs 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 @ 5…»
Mouq Hm 23:56
Niecza++
TimToady looks like niecza++ attempts to
Mouq m: warn "LTA warnings"
camelia rakudo-moar d37353: OUTPUT«LTA warnings␤»
TimToady albeit without weeding out inconsequential frames
TimToady m: CONTROL { .perl.say }; warn "What am I?" 23:58
camelia rakudo-moar d37353: OUTPUT«What am I?␤»
TimToady m: CONTROL { say "HERE"; }; warn "What am I?"
camelia rakudo-moar d37353: OUTPUT«What am I?␤»
Mouq m: say $?LINE
camelia rakudo-moar d37353: OUTPUT«1␤»
TimToady NYI it looks like
Mouq segomos: You can at least cheat using that 23:59
but :(