»ö« 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.
[Coke] ok. 00:02
[Coke] does a rebuild and wishes he'd setup that intermediate git repo thing. 00:03
timotimo jnthn: \o/ 00:03
timotimo i found the zerowidth anchor subtype cause 00:33
timotimo it confuses me why it is that way, but it's harmless to do nothing when we encounter an anchor of subtype zerowidth 00:34
jnthn Well, all anchors are zerowidth really... 00:39
timotimo right. this one in question is <???> 00:40
which is especially zerowidth
dalek p: a5cb2dc | (Timo Paulssen)++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
let moarvm compile "zerowidth" nothing-anchors
00:42
lue does <???> mean three-times the truthiness of <?> ? 00:44
timotimo no, three times the zerowidthness of <?>
TimToady I would not call <???> an anchor; it's just an assertion that, if you pass this, it'll warn 00:45
it's supposed to be like ... or ??? in normal code
nr: 'a' ~~ /<...>/ 00:46
timotimo yeah, that's NYI in rakudo apparently :)
camelia rakudo-jvm 5669b2: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter < (must be quoted to match literally)␤at /tmp/TNeQ84bxGN:1␤------> 'a' ~~ /<...⏏>/␤Unrecognized regex metacharacter . (must be quoted to match literally)␤at /tmp/…»
..rakudo-parrot 5669b2: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter < (must be quoted to match literally)␤at /tmp/4cRGn5CMdp:1␤------> 'a' ~~ /<...⏏>/␤Unrecognized regex metacharacter . (must be quoted to match literally)␤at /t…»
..niecza v24-109-g48a8de3: OUTPUT«(timeout)[auto-compiling setting]␤»
jnthn tssk, that's a crappy error too
TimToady std: 'a' ~~ /<...>/ 00:47
camelia std 09dda5b: OUTPUT«ok 00:01 125m␤»
jnthn Time for some rest...'night o/ 01:02
timotimo good rest of the night, jnthn!
diakopter o/
japhb_ o/ jnthn! 01:02
[Coke] ~~ 01:04
[Coke] intraday run of moar puts us over 91% 02:28
japhb_ That's really damned impressive.
diakopter it's like a real VM or something 02:29
[that had many many human-years of learnings to build on from other open-source VMs] ;) 02:30
colomon \o/
japhb Seems like it's time for camelia to include r-m support. :-) 02:47
Who manages that? moritz? 02:48
diakopter <-
(and mostly moritz) :)
japhb Oh. Well, he's asleep, so you're nominated. Besides, you have Moar seniority anyway. ;-) 02:48
BAMbanda perl6: say 4; 03:02
camelia rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«4␤»
..niecza v24-109-g48a8de3: OUTPUT«(timeout)[auto-compiling setting]␤»
lue masak: just read your latest post, and somehow I'm getting a mental image of the situation involving roles as strongholds with guardtowers looking for program execution to enter the surrounding landscape. Don't know what to do with that :P 03:45
japhb raydiak, colomon, Util, and other vector math folks: gist.github.com/japhb/8294561 04:19
Basically, after browsing what's out there, and comparing it to what I think we need to support -Ofun and -Ospeed at the same time, I think we need new performance-oriented 3D math libs for Perl 6. 04:20
grondilu japhb: shouldn't these stuff be unified in PDL? 04:28
japhb grondilu: PDL is a related but not identical concept -- munging very large data sets and matrices, not very small ones. 04:52
Mind you, it should be possible to work on vector-sized chunks of a very large array; interfacing with e.g. modern OpenGL or GPU work would necessitate this. 04:54
It's worth considering if that can be merged into the implementation without ruining the simplicity and efficiency of e.g. ray tracing math, which doesn't deal with large arrays of homogenous data. 04:55
grondilu is surprised that ray tracing "doesn't deal with large arrays of homogenous data. 04:58
"
I mean it does linear algebra with lots of vectors, doesn't it?
grondilu but anyway I don't know much about specifics of 3D graphics algorithms, so if you say it's not just linear algebra, I won't argue. 05:00
japhb grondilu: One of the performance problems with ray tracing is that it is painfully non-coherent: memory accesses are all over the place, and aside from a few special cases like height/normal/color maps and BRDFs, generally deal with small data at a time. 05:16
Assuming there haven't been any new breakthroughs since my salad days. 05:17
moritz good morning 06:18
japhb: fwiw I chose to wait with r-m on camelia until moar-support is merged into nom 06:19
japhb: then it's an order of magnitude less work 06:20
diakopter oh yeah 06:25
grondilu how long until moar-support goes into nom, btw? Is that a lot of work?
moritz since r-m now passes moar than 90% of the spectests that r-j passes, I guess it'll be soonish 06:25
grondilu what about rakudo-* this month? Will it have moar support? 06:26
lue grondilu: likely not, R* doesn't even have r-j yet. 06:30
moritz well, the R* installer can build r-j 06:33
but the modules don't work on it 06:34
raydiak japhb++: is that a "ZOMG WTF" reaction to reading the Pray internals? :) sounds good to me, where do we start? 06:43
japhb raydiak: No, more like a "Wait, everyone is doing pieces of the puzzle, and I can't combine the pieces into a whole, and it would be slow if I tried. That is LTA." 06:47
As for where to start, give me a sec, multitasking at the moment.
(I need a shorter way to say that.)
japhb raydiak: There is a 3D math package for JS from a couple years ago (right around the time 3D canvas became known as WebGL) that had the core of the design I'm talking about -- explicit control of temporaries, core math routines designed to work well with the optimizer, that sort of thing. Just need to find it again. 06:51
Found it: code.google.com/p/webgl-mjs/ 06:57
raydiak reading 06:58
japhb Written by Vladimir Vukićević, the guy who created Canvas 3D (the first version of what became WebGL) 06:59
raydiak ouch, do not try to read the HTML docs in source form
diakopter raydiak: I don't even see the green flowing symbol streams 07:00
japhb Oh, just look at the top level mjs.js
diakopter heh, I wrote an mjs.js in 2009 07:01
(a file named that)
japhb I'm not saying we should clone it per se, just absorb the design concept and then Perl 6-ize it.
raydiak diakopter: it doesn't look like a blonde brunette, or redhead, either, though... 07:02
diakopter (or even female)
(or even human)
(or even alive) 07:03
(or even real)
raydiak japhb: absorbing 07:03
raydiak I like it...I even remembering wondering early on if I should be writing the vector and matrix stuff as a function library instead of classes 07:05
japhb :-)
raydiak what are the "explicit temporaries" you mentioned? 07:07
diakopter decides which color to paint the yak-shaver-shed-windmill-tilter 07:09
japhb In his library, you see them as providing each basic function, e.g. adding two matrices, with an optional pre-built return object, where the result values are assigned. If you don't provide a pre-built return object, one will be created for you. 07:09
raydiak ah, I see 07:10
japhb So you have the choice of just using it as add(M1, M2), or as add(M1, M2, MR) if you want to control the churn of result objects, like in a tight loop.
If you have a loop that e.g. does 10 vector/matrix operations inside but only produces one output result, rather than create and destroy 10 temps during each iteration, you can create 10 pre-sized results outside the loop, and just supply them to each math op appropriately -- zero churn. 07:12
raydiak makes sense 07:13
raydiak r: say int(1).perl 07:20
camelia rakudo-jvm 5669b2: OUTPUT«Can not invoke this object␤␤»
..rakudo-parrot 5669b2: OUTPUT«invoke() not implemented in class 'int'␤ in block at /tmp/e7KVrMkgvi:1␤␤»
japhb r: my int $a = 1; say DUMP($a) 07:21
camelia rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«1␤»
japhb WYSIWYG. ;-)
raydiak r: my int $a = 1; say $a.WHAT; 07:22
camelia rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«(Int)␤» 07:22
raydiak or is it?
japhb It has to be boxed to call a method on it. 07:22
raydiak ah, that's what I haven't been understanding
I better re-read wherever it talks about native types 07:23
r: my int @a = 1, 2, 3; 07:25
camelia rakudo-jvm 5669b2: OUTPUT«No such method 'STORE' for invocant of type 'Int'␤␤»
..rakudo-parrot 5669b2: OUTPUT«No such method 'STORE' for invocant of type 'Int'␤ in block at /tmp/mxP69b2jg4:1␤␤»
raydiak ^ what about that one?
japhb I'm thinking LTA error, but perhaps I am mistaken. 07:27
r: my Int @a = 1, 2, 3; 07:28
camelia ( no output )
raydiak whether that specific piece of the puzzle is in place yet or not, what is the best way to proceed? specify the API? someone just dive in and do something? what should we call it? 07:32
japhb is too tired to come up with a good name, but does recommend that someone just dive in -- but keep the repo public, so we can iterate before the whole thing is written. 07:39
japhb trundles off to slumber
&
FROGGS jnthn: I'm sorry ó.ò github.com/rakudo/rakudo/commit/cf92e8161f 09:05
masak lue: my first thought is that maybe you've been playing too much Tower Defense games :) 09:15
antenoon, #perl6
moritz \o
masak is learning about IPC today at $work 09:39
signals, named pipes, fancy open()s, and sockets.
I know Perl 6 has sockets, but I've only seen it in Rakudo, not in the spec, I think.
FROGGS ahh, so you are the one who implements openpipe in MoarVM? :o)
masak ehehe
I think I saw signals once in the spec, and ISTR it was connected to the mythical unified event loop. 09:40
I'm pretty sure we don't do named pipes and fancy open()s.
moritz masak: there are Sockets in the S32::IO spec, in the "Here Be Dragons" section 09:42
masak hehe, named pipes are fun :) 10:19
masak they're the FETCH-modified Proxy attributes of inodes ;) 10:20
jercos I know some of those words! 10:22
masak see yesterday's backlog :)
(I managed to construct an attribute that could feel when it was being read from or written to) 10:23
moritz how did it feel? :-) 10:24
masak moritz: it tickled. :) 10:28
oh, and for those of you who haven't seen this one yet: nbviewer.ipython.org/url/norvig.com...1313.ipynb
jnthn ugh, sleeping fail...
whatever-time-it-is, #perl6...
masak (and like problems like this)
jnthn: hope you had a nice sleep :)
jnthn masak: Well, after 4 hours of insomnia, it was ok... :/ 10:28
masak :/ 10:41
masak also, may I heartily recommend basically everything on worrydream.com/Links2013/ 10:45
(Bret Victor)++
masak SYNOPSIS 11:02
use IO::Socket;
(and that's all)
that's the most useless SYNOPSIS section I have *ever* seen :) 11:03
jnthn Especially given you don't need to given they're in the setting... :)
masak most of the time CPAN's SYNOPSIS sections are admirably well-written. and it really helps.
jnthn: yeah, um, this is #perl6. right. :P 11:04
jnthn oh...
heh :)
Well, it wouldn't entirely surprise me if that was the state of the Perl 6 sockets spec :P
masak & 11:28
moritz jnthn: that's in the 'Here be Dragons' section. 'nuff said. 11:34
Ulti ls 11:45
erk sorr
stupid OSX not having follow mouse focus ;P
atleast it was ls and not my password I guess
tadzik yeah, password happens to me sometimes, when I try to unlock the screen but I forgot to lock it 11:47
moritz just configure your screen saver to always run when the screen is blanked 11:48
tadzik yeah, that'd work 11:49
dalek kudo/moar-support: f1d4a61 | jnthn++ | src/vm/moar/ops/perl6_ops.c:
Implement p6stateinit.
12:01
dalek kudo/moar-support: a1773ba | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Unbust S03-junctions/autothreading.t.
12:12
dalek kudo/moar-support: 2e8a281 | jnthn++ | src/ (2 files):
Implement p6bindcaptosig.
12:43
dalek kudo/moar-support: 13ce3cc | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Fix "capturehasnameds needs a MVMCallCapture" bug.
12:48
dalek kudo/moar-support: 82eb640 | jnthn++ | src/core/Capture.pm:
Fix '...not support associative operations' bug.
13:04
moritz method is_bindable($sig, $capture) { 13:08
+ unless nqp::reprname($capture) eq 'MVMCallCapture' {
+ $capture := make_vm_capture($capture);
+ }
moritz is that code path taken by any non-moar backend? 13:08
jnthn No
(It's in a #?if moar) 13:09
moritz good :-)
jnthn (if you look far enough up :))
moritz ah right, the whole class
moritz idly wonders how many signature binder implementations jnthn++ has done so far 13:10
tadzik
.oO(all of them)
13:11
dalek p: 6db6d0d | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Fix while cond() -> $x { ... } compilation on Moar
13:28
jnthn
.oO(enough of them...)
jnthn That one is another 60 tests or so... 13:29
dalek kudo/moar-support: 4390e91 | jnthn++ | src/Perl6/Actions.nqp:
Fix attribute defaults SEGV/bugs.
13:36
jnthn And there's another 100+... 13:37
diakopter heh, one line 13:44
moritz "one line is all it takes" 14:04
arnsholt Sometimes those are the hardest bugs =) 14:05
moritz aye :-)
[Coke] that one's in time for the daily run, too! (10 more minutes or so.) 14:19
pmurias are Makefiles as a part of build systems for regular modules? 14:41
pmurias hopes not
tadzik no, they are not allowed there 14:43
pmurias great ;)
pmurias experience a surge of Makefile hate while trying to hook up nqp-js into the regular nqp build system ;) 14:44
[Coke] makefiles are horrible, except for when you have to duplicate their functionality in a new tool. :) 14:50
FROGGS jnthn: btw, we can rip out the "binary" encoding from all backends, will push later 15:19
jnthn \o/ 15:20
FROGGS without failing test that is
btyler exciting backlog today, moar-support passing over 90%? woohoo! 15:28
FROGGS that is because MoarVM is designed for -Osuccess :o) 15:29
(which implies -Ofun)
diakopter FROGGS: heh, sometimes 15:36
FROGGS true :o) 15:37
timotimo oh, an exciting amount of commits is waiting to be discovered 15:51
colomon arnsholt, moritz: I've had one-line bugs it took me months to track down. 15:58
arnsholt Yeah, the intermittent segfault bug I fixed at YAPC::NA (and broke the build fixing >.<) was pretty much a one-liner IIRC 16:05
dalek kudo/moar-support: 6a3cd5d | jnthn++ | src/vm/moar/ops/perl6_ops.c:
Stub p6inpre.
16:45
kudo/moar-support: dbb5320 | jnthn++ | src/Perl6/World.nqp:
Only emit hack needed on Parrot when on Parrot.
p: 75862a5 | jnthn++ | src/vm/moar/QAST/QASTCompilerMAST.nqp:
Pass along exit handler flag.
masak so. I just learned that Perl 5 can do `local $hash{key} = "val";` 16:59
what's the Perl 6 equivalent of that?
PerlJam isn't it just `temp %hash<key> = 17:00
val
blah
masak r: my %hash = foo => 5; { temp %hash<foo> = 42; say %hash<foo> }; say %hash<foo>
camelia rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«42␤5␤»
masak apparently it is! \o/ 17:01
PerlJam++
Ulti does Perl 6 have the equivalent to my @png_files = <*.png> which is a new bit of Perl 5 I only learnt this week
masak what about localized deletion? `delete local $hash{key}` ?
PerlJam Ulti: do you mean the fancy syntax or just the ability to do globs?
Ulti fancy syntax 17:02
I assume there is glob() or something in Perl 6?
masak nope, Perl 6 uses <> for list quoting.
Ulti: there's &dir to list files
Ulti k k
colomon r: say dir
camelia rakudo-parrot 5669b2: OUTPUT«IO::Path<.lesshst> IO::Path<.viminfo> IO::Path<.ghc> IO::Path<rakudo> IO::Path<rakudo-inst-2> IO::Path<rakudo-inst-1> IO::Path<std> IO::Path<.bash_history> IO::Path<log> IO::Path<.selected_editor> IO::Path<.ssh> IO::Path<nom-inst> IO::Path<.profile> IO::…»
..rakudo-jvm 5669b2: OUTPUT«IO::Path<.viminfo> IO::Path<p6eval-token> IO::Path<nohup.out> IO::Path<.bash_history> IO::Path<.selected_editor> IO::Path<hello> IO::Path<.config> IO::Path<hs_err_pid18610.log>␤»
colomon r: say dir("*.bash")
camelia rakudo-jvm 5669b2: OUTPUT«Failed to get the directory contents of '*.bash': nqp::opendir: unable to get a DirectoryStream␤ in block at gen/jvm/CORE.setting:13406␤ in method contents at gen/jvm/CORE.setting:13415␤ in sub dir at gen/jvm/CORE.setting:13441␤␤» 17:03
..rakudo-parrot 5669b2: OUTPUT«Failed to get the directory contents of '*.bash': readdir failed: No such file or directory␤ in block at gen/parrot/CORE.setting:13465␤ in method contents at gen/parrot/CORE.setting:13461␤ in sub dir at gen/parrot/CORE.setting:13490␤ in bloc…»
Ulti r: say dir '/home'
camelia rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«IO::Path</home/p6eval_eval> IO::Path</home/sromanov> IO::Path</home/jnthn> IO::Path</home/rob> IO::Path</home/ingy> IO::Path</home/ivanoff> IO::Path</home/p6eval> IO::Path</home/timotimo> IO::Path</home/moritz> IO::Path</home/leont> IO…»
btyler hm. maybe some sandboxing would be a good idea :)
Ulti >:3
maybe safe mode should avoid all file operations
btyler well, I mean in the case of the evalbot. a docker container or something so folks can't read potentially sensitive stuff 17:04
Ulti I thought there was a fancy safe mode thing built into Rakudo that sandboxed it a bit? 17:05
masak there is.
apparently &dir falls outside of that. 17:06
rurban Q: does `use oo :closed :final` still work and do what it is supposed to do? 17:07
Ulti well sorry for the abuse :'( but I guess that list of users isn't too revealing given the context 17:08
PerlJam "still work"? Did it ever?
rurban I'm only reading perlcabal.org/syn/S12.html#Open_vs_...ed_Classes 17:09
jnthn I don't think we implemented that pragma, but it's an application level optimization hint. 17:10
I don't think we'll ever take much advantage of it in the static optimizer, but it's the kinda thing we can pass on down to, say, the JVM (of note, using invokedynamic) or MoarVM to say "go ahead and assume classes are closed and final" 17:11
I guess the idea being that you can avoid the whole deoptimization side of things and its associated tracking. 17:12
pmurias what's stopping it's used in a static optimizer? 17:13
rurban it's basically for compile-time method dispatch avoidance
jnthn pmurias: Probably not a great deal, thinking about it. It may be applicable there too... 17:15
rurban: Well, runtime method dispatch avoidance...
If you can sort it out at compile time that's the good case
Anyway, it's a "I promise not to augment my classes and I promise not to do runtime subclassing" indicator. 17:16
pmurias jnthn: it seem really usefull for a -O11 sort of optimizer, propably less usefull for a "do a bit of cheap stuff" sort of one
* seems
PerlJam I just want to know where the "call me on it if I lie to you" pragma is to go along with the other 17:17
jnthn pmurias: Well, one of the nice things about doing it at JIT-time is you get to figure out if you're running long enough to make it worthwhile... :) 17:17
TimToady wonders how much we can promise not to do run-time subclassing in the presence of 'but' with an unknown type on the left 17:19
[Coke] moar will hit 92% on today's run, likely. 17:19
Ulti need moar 17:20
benabik moar moar!
PerlJam S17 has an example where it does $*SCHEDULER.cue: :every(1), :times(42), { say "Oh wow, a kangaroo!" }; but rakudo says "Cannot specify :every and :times at the same time" 17:26
What gives?
jnthn An NYI I suspect 17:29
TimToady hmm, I read that with the other semantics: "Every second, cue the kangaroo 42 times." 17:30
maybe it should be :limit instead
PerlJam TimToady: aye, that would read better 17:31
I find myself wanting some way to easily distinguish the countables from the time-based parameters sometimes. Dunno if that's just my personal crazy or if it would actually be generally useful. 17:33
masak +1 # :limit 17:34
FROGGS :l <-- weird smiley 17:35
TimToady doesn't think :limit warrants a shortcut 17:36
PerlJam (I imagine it's not just my personal crazy but rather residual crazy from days of yore when someone first created time_t and friends in C) 17:37
TimToady: agreed. 17:38
jnthn curry, beer & 17:41
dalek p: bee7470 | (Tobias Leich)++ | src/ (2 files):
"binary" is not an encoding
17:43
ecs: 312a0ea | larry++ | S17-concurrency.pod:
change :times to :limit
17:44
kudo/nom: 4d6db59 | (Tobias Leich)++ | src/ (2 files):
do not set an enoding for binary operations
17:45
dalek kudo/nom: 7c66d28 | (Tobias Leich)++ | src/core/Cursor.pm:
s/eval/EVAL/
17:45
masak curry, beer & 17:49
[Coke] S03-metaops/hyper.rakudo.moar is probably the biggest single failure. (99 tests, one file) 17:50
dalek kudo/moar-support: 33f252e | (Tobias Leich)++ | src/ (2 files):
do not set an enoding for binary operations
[Coke] ww. 17:50
PerlJam r: $*SCHEDULER.loads; 18:09
camelia rakudo-jvm 5669b2: OUTPUT«No such method 'get' for invocant of type 'Mu'␤␤»
..rakudo-parrot 5669b2: OUTPUT«Dynamic variable $*SCHEDULER not found␤ in method <anon> at gen/parrot/CORE.setting:12124␤ in any at gen/parrot/Metamodel.nqp:2691␤ in any find_method_fallback at gen/parrot/Metamodel.nqp:2679␤ in any find_method at gen/parrot/Metamodel.nqp:…»
TimToady p: sub foo(\m) { say m } # we need to find a way to fix this 18:33
camelia rakudo-parrot 7c66d2: OUTPUT«===SORRY!=== Error while compiling /tmp/YYSXsonzgf␤Use of a closing delimiter for an opener is reserved␤at /tmp/YYSXsonzgf:1␤------> sub foo(\m) { say m ⏏} # we need to find a way to fix this␤ expecting…»
arnsholt Took me a second to realize WTF was going on 18:34
It's kind of like the bug we had with classes not being able to start with the letter q, isn't it? 18:35
moritz
.oO( use upper-case M/.../ for regex matching :-)
TimToady it's not just m, but s, tr, ms, q, Q, etc
and all the combine with first switch forms
they need to be demoted from keywords to macro-identifier space 18:36
grondilu yeah will you still be able to use the keyword then? (in case you really want to use m/ /) 18:37
s/yeah/& but/
TimToady so we need some way of parsing an identifier as if it were a sub call, then redirecting that into the special parsing that the various quoting forms need, but only if not redefined in an inner scope
well, the original idea was that q is short for Q:q 18:38
std: say Q:qq/foo/
camelia std 09dda5b: OUTPUT«ok 00:01 122m␤»
TimToady p: say Q:qq/foo/
camelia rakudo-parrot 7c66d2: OUTPUT«foo␤»
TimToady well, seems like that works
p: my $foo = 42; say Qqq/$foo/ 18:39
camelia rakudo-parrot 7c66d2: OUTPUT«===SORRY!=== Error while compiling /tmp/7stDWtIICb␤Two terms in a row␤at /tmp/7stDWtIICb:1␤------> my $foo = 42; say Qqq/$foo/⏏<EOL>␤ expecting any of:␤ postfix␤ infix stopper␤ …»
TimToady p: my $foo = 42; say Q:qq/$foo/
camelia rakudo-parrot 7c66d2: OUTPUT«42␤»
TimToady so Q: can always get us there
p: my $foo = 'bar'; say $foo ~~ Q:m/bar/ 18:40
camelia rakudo-parrot 7c66d2: OUTPUT«===SORRY!=== Error while compiling /tmp/H4HgzwC65O␤Unrecognized adverb: :m␤at /tmp/H4HgzwC65O:1␤------> my $foo = 'bar'; say $foo ~~ Q:m⏏/bar/␤ expecting any of:␤ colon pair (restricted)␤»
TimToady std: my $foo = 'bar'; say $foo ~~ Q:m/bar/
camelia std 09dda5b: OUTPUT«===SORRY!===␤Unrecognized quote modifier: m at /tmp/5phdBw28VG line 1:␤------> my $foo = 'bar'; say $foo ~~ Q⏏:m/bar/␤Check failed␤FAILED 00:01 125m␤»
TimToady std: my $foo = 'bar'; say $foo ~~ Q:regex/bar/
camelia std 09dda5b: OUTPUT«Can't use string ("STD::Regex") as a HASH ref while "strict refs" in use at CursorBase.pm line 551.␤FAILED 00:01 125m␤»
TimToady heh 18:41
p: my $foo = 'bar'; say $foo ~~ Q:regex/bar/
camelia rakudo-parrot 7c66d2: OUTPUT«===SORRY!===␤Null PMC access in get_iter()␤»
TimToady smirks
TimToady smerks
TimToady smurks
dalek ast: 9a340b1 | duff++ | S17-concurrency/scheduler.t:
Test $*SCHEDULER.loads before cuing any work
18:43
TimToady one could presumably say OUTER::m/foo/ as well if m lived in the symbol table
dalek kudo/nom: 8a486a8 | duff++ | src/vm/jvm/core/ThreadPoolScheduler.pm:
Make $*SCHEDULER.loads return 0 prior to cuing
TimToady (as a macro, of course, since it has to do 'is parsed' tricks) 18:44
[Coke] colomon: niecza has 34 failures. (pugs has 4369)
rakudo.jvm had 21 failures yesterday.
grondilu TimToady: have you considered putting quaternions in the core? I think he'd be cool to have them, especially with suffix:<j> and suffix:<k>. 19:24
grondilu meant 'postfix', not 'suffix'
moritz has considred quaternions in the core, and rejected the idea 19:25
grondilu why? Too rarely used? 19:25
PerlJam we've got to leave something for future Perl devs to do ;) 19:26
moritz grondilu: too rarely used
FROGGS .oO( The Perl of Christmas's future? )
moritz grondilu: wonderful use case for modules
grondilu: see also: github.com/Util/Perl6-Math-Quaternion/
TimToady just heavily revised rosettacode.org/wiki/Quaternion_type#Perl_6 19:27
to put all the multis into the module
[Coke] TimToady: why do you define the class and immediately import it?
TimToady otherwise the multis are not imported
[Coke] Danke. 19:28
TimToady wishes there were a way to factor out all the 'is export's though
grondilu about this module, don't you think it'd be better named just "Quaternions"? I mean, "use Quaternions;" is easier to remember than "use Math::Quaternion;" imho 19:29
moritz finds the use of Math:: quite intuitive
tadzik +1
moritz++, that is :)
[Coke] avoid pollution of top level namespaces.
TimToady tends to be of the opinion that math should just exist, but can see the pollution argument
[Coke] not everyone is coding for math. 19:30
(very few are, IME.)
grondilu thinks there are little chances "Quaternions" pollutes any space. Most of math terms are specific to maths, aren't they? 19:31
TimToady grondilu: re Hickerson, it's a lot faster if you do the .round before checking the first decimal, but then it's arguably less correct 19:31
moritz well, that argument could be used to symbolic math etc.
[Coke] I fail to see the utility of Quaternions 19:32
TimToady it's...relative...
[Coke] why bundle them with core?
V_S_C Bootstrapping panda is giving me an error
Start of substr out of range. Is: 43, should be in 0..41
TimToady [Coke]: what do you mean when you say "core"? 19:33
arnsholt Quaternions are extremely useful when doing 3D geometry as they provide a sane way to represent rotations 19:33
V_S_C in method Str at gen\parrot\CORE.setting:12118
tadzik uh-oh
could you give me a full stracktrace? 19:34
[Coke] TimToady: are you asking or serious question or being pedantic or pedagogical?
tadzik what rakudo version is that, what platform?
[Coke] s/or/a/
TimToady grondilu: anyway, it's probably faster to do math (sic) to extract the first decimal digit, but I just thought the pattern read better
V_S_C I built Rakudo from source
tadzik freshest available, I assume?
V_S_C yes
[Coke] I mean with the basic rakudo (e.g.) compiler. 19:35
tadzik parrot, jvm, both?
V_S_C not jvm
parrot
tadzik ok, I'll try to reproduce it now
V_S_C shall I just paste the trace here
tadzik have no fear, I is here :P
to gist.github.com, yes please
grondilu [Coke]: I think all math concepts that are unambiguously mathematically defined, and that also has an ovious notation and usage, could be added to the core, regardless of how useful they are (there will always be someone who will find them useful). 19:35
[Coke] V_S_C: use gist.github.com
V_S_C okay
tadzik also, I need to run get some food while the stores are open 19:36
bbs
[Coke] grondilu: that's crazy. why add stuff that might not be useful?
every line of code is one more thing for the core developers to maintain, for the community to spec...
though I suspect that your suggestion is what a mathemetician would say.
TimToady if it's math, it should be very low maintenance, since the specs don't change :) 19:37
grondilu because it's hard to say whether something is useful or not. But if mathematicians spent some time defining it, it's probably useful.
benabik .u ᠎
[Coke] if you're doing maths, sure.
TimToady [Coke]: by the same argument, we should throw Complex out :)
tadzik and is-prime :P 19:38
moritz grondilu: integers and rats/floats are very useful in common day life, and thus in many programs. Complex less so, but it's still useful in lots of areas (like electric engineering, or for simulating 2D points) 19:38
but even though I'm quite math-savy for a non-mathematician, I've never had a use case for quaternions
grondilu well, the recent pray module uses quaternions, doesn't it? 19:39
[Coke] TimToady: excellent, yes!
V_S_C @tadzik gist.github.com/VSChawathe/8305474
[Coke] though I suspect you were not offering. :)
TimToady nope, I believe math just exists, but can hear the pollution argument 19:40
I do think any decent distribution should include Quaternions
[Coke] Do we have a list of stuff that the compiler ships with but you have to 'use' ?
is that list null atm? 19:41
FROGGS lib and Test
[Coke] (I know with p5 it is non-null)
FROGGS and Pod::To::Text
[Coke] that all seems reasonable stuff to include but not load.
FROGGS I would include the debugger too fwiw 19:42
[Coke] That's completely external ATM, yes/
?
V_S_C While building Rakudo from source the process broke trying to link to libparrot.lib from the directory specified with --prefix
[Coke] (wonder if the debugger needs spec'ing.) 19:42
even if to say "yes, have one." 19:43
V_S_C After manually copying it there it ran perfectly :) 19:43
TimToady wonders if we should have a meta-distribution of Batteries that is expected to be included in any other distribution
grondilu the thing about quaternions is that their notation (1j + 1k) is so close to the Complex notation (1 + 2i) that it'd kind of be a shame not to extend it. I mean, when 1 + 2i exists, it's not a big stretch to allow 1 + 2i + 3j + 4k. 19:44
PerlJam [Coke]: you can always build rakudo with your own custom setting that does not have Complex or whatever :-)
TimToady grondilu: we already allow it through the magic of importing operators, as demoed by rosettacode.org/wiki/Quaternion_type#Perl_6 19:45
TimToady the only thing missing is a <1j+1k> form 19:46
FROGGS [Coke]: it is installable via panda, yes 19:47
TimToady so you'd need some way to tell val() how to parse Qu values
grondilu Well, I know I could define my own operators. But it'd be more pleasant if it was out of the box.
TimToady grondilu: the module defines the operators for you; all you do is use it
that's why I moved the operators into the class on RC, to demo that
grondilu yeah well, I'm the one who added the postfix operators in this rosettacode task. I was actually hoping that this would inspire you to add them to the core :-) 19:48
TimToady we can certainly make sure that R* supports the module, so you can just use it, but it's more fun on RC to demo how you'd define the class :) 19:49
it's also a very good demo of why classes are also modules 19:50
TimToady wishes he didn't have to repeat 'is export' quite so much, is all 19:51
it tends to push everything toward the right margin by 10 chars
FROGGS TimToady: use Exporter? :o)
PerlJam could do it with a macro
TimToady: can't you make a proto for each much and just export the proto? 19:52
each multi
TimToady the protos are elsewhere
for infix:<*> and such
grondilu an other thing this task made me think about. We add to define &postfix:<+>(Real $, Qu $) and &postfix:<+>(Qu $, Real $), although they are pretty much the same function (the order of the arguments should not matter). This makes me wonder if we should not have a 'commutative' trait.
PerlJam oh, I guess that's true
grondilu s/We add/We had/
TimToady s/post/in/ 19:53
moritz grondilu: we used to have a syntax for specifying multiple signatures for one subroutine. It got ditched.
TimToady we talked about that once, having 'is commutative', or allowing multisigs, but people seemed to rebel
grondilu ok 19:54
moritz well, with multisigs you have to be careful about which variables are declared, and what happens if they aren't identical in boths sigs
s/both/all/
PerlJam you could make a macro to "build" the commutative mutlis for you :)
tadzik gah, V_S_C is gone
TimToady "I know, I'll use macros!" Now you have a larger problem. 19:55
PerlJam I have a hammer and I'm going to use it! 19:56
:)
grondilu an other thing I've been wondering lately: is [+] @long-list-of-numbers supposed to be parallelised? It can because + is associative, but with a custom operator, [] could not know unless there is a "associative" trait.
I mean that a + b + c + d can be (a+b) + (c+d) for parallelisation 19:57
TimToady well, one could force + it to be list associative, I suppose, despite it's precedence level defaulting to left 19:58
but then you couldn't mix + and -
now without rewrite a - b to a + -b
*rewriting 19:59
*not
TimToady needs a new keyboard that matches the dysfunction of his figners
not to mention the corresponding parts of his brain 20:00
FROGGS TimToady: I could borrow you a german one but it defaults to uppercase with three bangs at the end :o) 20:00
TimToady DANKE!!!
grondilu anyway I think it'd be important to parallelize [+], because that may improve performance on quite a few algorithms. I remember that when I was doing some rosalind stuff, I always add performance issues when I had to add numbers. 20:01
FROGGS *g*
TimToady grondilu: I suspect the optimizer will just notice things like [+] or [*], but you also have to decide whether it has to be done lazily 20:02
maybe not in those cases, but for [\+] or [\*]
TimToady certainly [+] implies eagerness, and our policy of not overloading built-ins with inconsistent operations means that the optimizer can generally assume standard semantics for standard operators 20:03
grondilu indeed. parallelisation with the triangular form would not make sense, since we need the sequential sums
TimToady unlike in, say, C++ 20:04
grondilu s/sequential/successive/
TimToady such as associativity
especially if you can deduce the types in question at compile time 20:05
grondilu it's fine to assume asociativity with + and *, but [] could not guess with a custom operator.
TimToady Steele's observation was that FP languages penchant for representing lists recursively works against this entire class of parallizations 20:06
TimToady *llel 20:06
grondilu yeah, but we don't define lists recursively in Perl 6, do we? 20:07
[Coke] list actual and list "what's left"
TimToady no, and that's one of the reasons :)
moritz but laziness does impose a kind of similar structure
TimToady otoh we lose the tail-sharing properties of Lispy lists, unless we work a bit harder and build => lists 20:08
it's all tradeoffs, at least until the waterbed explodes 20:09
[Coke] ok, once moar-support merges back to nom, I'm going to re-enable the eval server for the daily jvm run. This may cause a precipitous drop in java passes. 20:11
(but soooo slow now can't take it anymore)
itz src/vm/moar/ops/perl6_ops.c:427:39: error: ‘MVMFrame’ has no member named ‘flags’ 20:30
am I doing something wrong or does moar-support not compile?
moritz itz: you probably need a newer copy of MoarVM 20:43
btyler itz: confirming what moritz said: I had the same, blowing away rakudo's local nqp and install directories then running Configure.pl --gen-moar=master --backends=moar gave me a successful compile 20:57
itz ok I'll try adding =master 20:59
ty
arnsholt Sounds like Rakudo might need a bump of NQP_REVISION 21:01
benabik ... moar-support breaks my parrot build. 21:24
arnsholt Durr? That's a bit odd 21:25
benabik in addition to not compiling r-m, obv
lue benabik: Lemme guess, ffi.h ?
benabik lue: that's it.
lue benabik: Moar's CFLAGS clobber Parrot's somehow. 21:25
benabik lue: And also appear to be incorrect because it can't find any of the _MVM_* funcs 21:26
lue I've fixed the ffi.h issue for me by disambiguating to M_CFLAGS and P_CLFAGS. I really need to get around to doing that for all unqualified Makefile variables before making a PR for the issue. 21:27
benabik I'll go back to a less world for now.
lue For me at least, the various Makefile*.in file are concat'd in pjm order, but the 'all' target is set to jmp order. I think that's what causes the messup. 21:29
FROGGS lue: how do you specify --backends? 21:30
lue right now, --backends=parrot,moar,jvm
The order has never influenced anything, to my knowledge. 21:31
benabik uses the same --backends flag.
FROGGS this first one will be installed as perl6
lue Ah :) That's why I put parrot in front, I passed options in the flag in descending order of (desired) prominence in my usage. (It'll switch around to moar,parrot,jvm or moar,jvm once r-m works.) 21:33
Mouq rp: my@ω=map {.chr if .chr~~/<:Print>/},0..2**7;... ~ q:w[[[vvkthjlmgfmt vgtlktjgtifgtvj titmmtg mtvj titgtmgkthf k skusmus mnuq lup;/1<voppou``Lq``lttgup;6,+p4/50]]].join.trans(@ω Z=> @ω.reverse).eval 22:37
camelia rakudo-parrot 8a486a: OUTPUT«just kidding!␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc 379 (…»
Mouq So, this game is like Where's Waldo?. There's no prize, but there's a Rakudo bug hidden in the above 22:39
Any guesses? 22:40
Meh, I'll spoil it, it's not real hard to find 22:44
r: ... + 1
camelia rakudo-jvm 8a486a: OUTPUT«Unhandled exception: 1␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤»
..rakudo-parrot 8a486a: OUTPUT«1␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc 379 (src/gen/perl…»
Mouq r: ... ~ "I'm an exception?"
camelia rakudo-jvm 8a486a: OUTPUT«Unhandled exception: I'm an exception?␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤»
..rakudo-parrot 8a486a: OUTPUT«I'm an exception?␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc 3…»
BenGoldberg r: 1; ...; 2; 22:45
camelia rakudo-jvm 8a486a: OUTPUT«WARNINGS:␤Useless use of constant integer 1 in sink context (line 1)␤Unhandled exception: Stub code executed␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (…»
..rakudo-parrot 8a486a: OUTPUT«WARNINGS:␤Useless use of constant integer 1 in sink context (line 1)␤Stub code executed␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting…»
BenGoldberg Surely evaluating ... should always throw 'Stub code executed' 22:46
Mouq r: "I'm not an exception" ~ ... # It should 22:47
camelia rakudo-jvm 8a486a: OUTPUT«Unhandled exception: Stub code executed␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤» 22:48
..rakudo-parrot 8a486a: OUTPUT«Stub code executed␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc …»
moritz p: say (do { ... }).perl
camelia rakudo-parrot 8a486a: OUTPUT«Stub code executed␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc …»
moritz p: say (do { ... }).WHAT
camelia rakudo-parrot 8a486a: OUTPUT«Stub code executed␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc …»
moritz I kinda thought ... was specced to fail(), not die
Mouq r: say (do { fail 'failed' }).WHAT 22:50
camelia rakudo-parrot 8a486a: OUTPUT«failed␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc 379 (src/gen…»
..rakudo-jvm 8a486a: OUTPUT«Unhandled exception: failed␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤»
pmurias grondilu: do you use quaternions often? 23:13
jnthn back 23:20
r: ... "some message"
camelia rakudo-parrot 8a486a: OUTPUT«some message␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc 379 (s…»
..rakudo-jvm 8a486a: OUTPUT«Unhandled exception: some message␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤»
jnthn Note taht ..., ??? and !!! take args 23:21
dalek p: d4da7fb | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Map continuation ops for MoarVM.
23:47
BenGoldberg Why does ... take arguments? 23:51
lue BenGoldberg: probably to give a user-friendly reason for the stubbing. 23:52
jnthn So you can leave a note about why it's stubbed that's better than the "Stub code executed" error.
BenGoldberg Hmm 23:52
jnthn r: ... "Couldn't be bovvad"
camelia rakudo-parrot 8a486a: OUTPUT«Couldn't be bovvad␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc …»
..rakudo-jvm 8a486a: OUTPUT«Unhandled exception: Couldn't be bovvad␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤» 23:53
lue r: ... "Nobody's planning on using this anytime soon anyway. ...oh."
camelia rakudo-parrot 8a486a: OUTPUT«Nobody's planning on using this anytime soon anyway. ...oh.␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.se…»
..rakudo-jvm 8a486a: OUTPUT«Unhandled exception: Nobody's planning on using this anytime soon anyway. ...oh.␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤»
BenGoldberg r: fail 'or swim' 23:54
camelia rakudo-parrot 8a486a: OUTPUT«or swim␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc 379 (src/ge…»
..rakudo-jvm 8a486a: OUTPUT«Unhandled exception: or swim␤ in throw (gen/jvm/CORE.setting)␤ in sink (gen/jvm/CORE.setting)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤»
BenGoldberg p:
p: fail ... 23:55
camelia rakudo-parrot 8a486a: OUTPUT«Stub code executed␤current instr.: 'throw' pc 410302 (src/gen/p-CORE.setting.pir:171896) (gen/parrot/CORE.setting:10737)␤called from Sub 'sink' pc 446395 (src/gen/p-CORE.setting.pir:185119) (gen/parrot/CORE.setting:12127)␤called from Sub 'MAIN' pc …»
dalek kudo-star-daily: ee32d33 | coke++ | log/ (5 files):
today (automated commit)
23:56
rl6-roast-data: 565f433 | coke++ | / (5 files):
today (automated commit)
jnthn oooh!
preflex jnthn: you have 1 new message. '/msg preflex messages' to read it.
jnthn checks the number
92.14% \o/ 23:58
[Coke] jnthn: that's the same r-m run from earlier. java finished while I was driving an hour.
jnthn [Coke]: Yeah, but now it's /official/ ;)
[Coke] :)
japhb__ Go Moar Team, Go Moar Team!
Can't wait to read the backlog tonight. :-) 23:59