»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
00:05 firstdayonthejob left
sufrostico Hi .o/ 00:06
hoelzro hello! 00:10
00:13 n0tjack joined
sufrostico hey, anyone willing to help with this error: "This representation (VMArray) cannot unbox to a native string" 00:15
00:16 abaugher left
timotimo can you get a detailed backtrace when you perl6 --ll-exception ? 00:17
sufrostico pastebin.com/1tGXAsNi 00:19
I'm working on a library binding with NativeCall 00:21
00:24 n0tjack left 00:26 iloveunix joined 00:28 virtualsue joined 00:29 abaugher joined 00:30 Actualeyes joined 00:58 autarch joined 01:05 virtualsue left
sufrostico Problem is I can't find what a VMArray is anywhere or how to use it 01:08
timotimo sufrostico: VMArray is behind arrays in perl6, you can search for things that are repr VMArray in the core 01:10
things that directly "is repr VMArray" are Buf, array (lowercase), Uni and the different kinds of normalized unicode buffers, the IterationBuffer 01:12
but everywhere that nqp::list is used, that's a VMArray, too
Blob, too
01:14 n0tjack joined
sufrostico mmm, thanks 01:14
01:14 hankache joined
hankache hola #perl6 01:14
timotimo holankache
hankache holatimo
:) 01:15
timotimo hmm, maybe "greetimo"?
hankache hehe indeed greetimo!
01:15 espadrine left
hankache or greatimo 01:16
timorning everyone
better one ^^
01:18 n0tjack left
sufrostico hola! 01:23
timotimo: thanks, I't was a stupid error... but understanding what a VMArray (~ bufs) make everything clear XD 01:24
01:25 _dolmen_ left 01:27 leont left 01:29 grondilu left 01:31 hankache left, grondilu joined
timotimo glad to hear it 01:32
01:34 KotH joined 01:37 retupmoca left 01:45 cdg_ left, sufrostico left 01:53 zpmorgan joined
adu timotimo! 01:53
timotimo adu! 01:54
adu timotimo: how goes?
timotimo things are all right; how about you?
adu good, had a tiny power outage yesterday
timotimo i hope the only thing that b0rked there was machine state? 01:55
adu timotimo: well, my work is pretty well distributed, I think we lost like 5% of our servers, but I'm a genious, so nothing stopped working :)
timotimo not bad :) 01:56
i wish i was a genius :P
adu me too
timotimo i'm not sure i'm connecting the right person with your nickname 01:57
so what exactly do i remember you from? 01:59
02:03 retupmoca joined 02:07 araujo_ joined 02:09 BenGoldberg joined 02:10 araujo left
adu timotimo: I'm the guy who wrote C::Parser 02:16
timotimo oh! 02:18
could it be you haven't been around the channel for some time?
adu yes, I've been coming here since 2011-ish 02:19
timotimo no, i mean
recently i don't think i've seen you participate
but i may be wrong
adu timotimo: yeah, I suck 02:20
timotimo: work is busy, my wife wants a house, you know how it is
timotimo: are there bugs in C::Parser I should know about? 02:21
timotimo oh, don't beat yourself up about it :) 02:22
i'ven't used C::Parser at all. but i think maybe GPTrixie uses it? it's the thing we have to auto-generate bindings for NativeCall
adu timotimo: well, if you find any, let me know by making a formal issue at github.com/andydude/p6-c-parser
yeah, I remember someone was interested in a C::Parser / NativeCall baby 02:23
02:24 n0tjack joined
timotimo right :) 02:24
adu timotimo: my thing is universal trans-compilation from any language to any language 02:27
I felt C::Parser was a good place to start :)
02:27 AndyDee left 02:29 n0tjack left
timotimo oh, hehe 02:34
02:45 ilbot3 left 02:47 ilbot3 joined 02:52 BenGoldberg left 02:53 tmch left 02:54 BenGoldberg joined
timotimo anyway, i'm off to bed! 03:01
been up way too long already
03:09 yqt left, xiaomiao left, dh7320 left 03:10 khagan left 03:16 xiaomiao joined, bitmap left 03:19 bitmap joined 03:28 rburkholder left 03:30 khagan joined 03:31 Herby_ joined
Herby_ Evening, everyone! 03:31
03:32 Actualeyes1 joined 03:34 Actualeyes left 03:35 BenGoldberg left
Herby_ \o 03:37
03:40 adu left 03:44 vendethiel joined 03:50 kid511 left 03:52 pierrot left 03:58 noganex joined 04:01 noganex_ left 04:02 wamba left 04:06 n0tjack joined 04:08 vendethiel left
cbk Hello Herby_ 04:13
timotimo not really able to sleep 04:14
04:15 n0tjack left
timotimo wow, my brownian tree code up on rosettacode really eats a lot of memory when run under --profile; i'm not sure i'll be able to use the resulting .html file at all ... 04:17
Herby_ brownie tree? 04:22
timotimo almost 04:23
04:24 perturbation joined
skids m: my $c = Channel.new; sub foo { whenever $c { $_.say }; emit 4; }; my $s = supply { emit 2; emit 3; foo(); }; $s.tap({"supply $_".say}); sleep 1; $c.send(44); sleep 1 04:29
camelia rakudo-moar f25d41: OUTPUT«supply 2␤supply 3␤supply 4␤44␤» 04:30
skids whenever is also lexotic, not just emit and done?
sortiz .tell Skarsnik The idea to have all floats in Rat was a bad one. In fact, pretend that all SQL numeric types should map to a single Perl6 type is naive. I'm opening an issue for real discussion. 04:32
yoleaux sortiz: I'll pass your message to Skarsnik.
timotimo skids: seems like 04:33
skids I'll doc it that way, hopefully there isn't a nuancy difference. 04:34
dalek rl6-most-wanted: b21c481 | (Sevvie' Rose)++ | most-wanted/modules.md:
Added WIP for Math::TrulyRandom

It's not perfect yet.
04:38
rl6-most-wanted: a001ce0 | timo++ | most-wanted/modules.md:
Merge pull request #19 from sevvie/patch-1

Added WIP for Math::TrulyRandom
04:40 sevvie joined
timotimo good god could the profile output file please stop growing? 04:40
there's no way i'll get this to work in a browser ... it's already at ~150 megabytes 04:42
dalek rl6-most-wanted: c6bf90b | (Aurelio Sanabria)++ | most-wanted/bindings.md:
Update bindings.md

Add work in progress module for the snowball compiler
04:48
rl6-most-wanted: f1431b3 | azawawi++ | most-wanted/bindings.md:
Merge pull request #18 from Sufrostico/patch-1

Update bindings.md (wip: snowball)
timotimo that moment when a single removed redundant "return" makes your program run in 9.3s instead of 11.2s 04:49
05:02 Herby_ left
flussence why is return so expensive? :( 05:09
timotimo it goes through a whole bunch of hoops 05:10
05:26 Roamer` left, Roamer` joined
dalek ecs: 33eaffe | skids++ | S17-concurrency.pod:
Update Supply introduction and method docs for serial supplies

   Also some Channel clarifications.
05:38
ecs: cc534c4 | skids++ | S17-concurrency.pod:
A start on design doc for react/supply blocks and whenever clauses

   This will need quite more work.
skids Hopefully I didn't leave any hanging pod tags because I'm dead tired and heading to bed. 05:42
05:43 skids left, Cabanossi left 05:45 Cabanossi joined 05:47 perturbation left 06:02 nchambers left 06:08 autarch left 06:10 ka joined 06:39 n0tjack joined, Biplab joined 06:40 Biplab left 06:42 agent008 joined 06:43 n0tjack left 06:53 CIAvash joined 07:15 ricardo_ left 07:16 _mg_ joined 07:28 vendethiel joined, sjoshi joined 07:39 nakiro joined 07:41 FROGGS joined 07:44 firstdayonthejob joined 07:46 krunen joined 07:50 firstdayonthejob left 07:51 firstdayonthejob joined 07:55 RabidGravy joined 07:58 Ven joined, Ven left 07:59 Ven joined 08:01 Ven_ joined 08:04 iloveuni` joined 08:05 Ven left 08:07 iloveunix left 08:14 darutoko joined 08:18 dh7320 joined 08:23 vendethiel left, vendethiel joined 08:24 ely-se joined 08:29 zakharyas joined
[Tux] est 22.295 08:31
test-t 11.889
csv-parser 49.385
moritz skids++ 08:32
RabidGravy m: role F {}; class G is F {}; # is it possible to prevent *inheritance* from a role like that?
camelia ( no output )
RabidGravy I actually thought that blew up already but apparently not 08:33
moritz no, it auto-puns a class 08:36
and you can prevent it by adding a stubbed method to the role
m: role F { method dummy { ... } }; class G is F { } 08:37
camelia rakudo-moar f25d41: OUTPUT«5===SORRY!5=== Error while compiling /tmp/EwMz_ELLEV␤Method 'dummy' must be implemented by F because it is required by a role␤at /tmp/EwMz_ELLEV:1␤»
moritz of course, also proper consumption must also provide that method
m: role F { method dummy { ... } }; class G is F { method dummy { } }
camelia rakudo-moar f25d41: OUTPUT«5===SORRY!5=== Error while compiling /tmp/R84l5w_2s8␤Method 'dummy' must be implemented by F because it is required by a role␤at /tmp/R84l5w_2s8:1␤»
moritz m: role F { method dummy { ... } }; class G does F { method dummy { } }
camelia ( no output )
RabidGravy yeah, that won't fly in this case
I'll catch it at the point it causes a problem 08:38
08:38 firstdayonthejob left
RabidGravy m: role F {}; class G is F {}; class H does F {}; say G.^shortname; say H.^shortname; 08:39
camelia rakudo-moar f25d41: OUTPUT«G␤H␤»
RabidGravy Hmm I'm seeing something different
08:42 abraxxa joined 08:43 vendethiel left 08:44 CIAvash left 08:45 ab6tract joined
abraxxa morning! 08:45
yoleaux 25 Feb 2016 17:01Z <nine> abraxxa: Makeshift solutions have the tendency to stick around much longer than people think when they implement them. Imagine people starting to use Perl 6 more and more, DBIish becoming better and better and the "real" DBI taking another 3-4 years to become usable. By then it will have a hard time catching up with a well established DBIish.
sortiz \o #perl6 08:46
abraxxa nine: I though more like having a constant beta train and a stable one, maybe the versioning and multiple version support is better in Perl 6 compared to Perl 5 and there is no need for having a seperate namespace 08:47
sortiz: are you able to run the DBIish tests with 2016.02?
everything seems to hang with the new release
strace shows again epoll_wait(5, 08:48
last time that was vars.pm of my perlbrewed Perl 5.22.1
sortiz abraxxa, Yes, I'm installing oracle to be able to run the full suite. 08:49
08:49 wamba joined
abraxxa sortiz: I have all db's installed 08:49
Oracle is quite easy using docker
lsof shows this: moar 23862 ahartmai 5u 0000 0,11 0 6962 anon_inode 08:50
sortiz abraxxa, It is hanging with all databases?
abraxxa it's hanging with almost everything, panda, p6doc
sortiz Ah, that should be that some repo is locked. 08:51
So any other precomp or install must wait.
abraxxa what can I do to fix it? delete the precomp dir? 08:54
nine Just wait till its unlocked 08:55
abraxxa nine: hi!
nine Assuming you still have some perl6 process running?
abraxxa i'm waiting since yesterday...
ah, there where two hanging processes from two days ago!
so two perl6 instances can't run in parallel because of precomp? 08:56
RabidGravy find some .precomp/.lock and delete if no processes running
abraxxa RabidGravy: I've deleted the whole dir
08:57 ab6tract left
abraxxa can we do something to e.g. print a warning if a lock is active, maybe one after a slight delay? 08:57
sortiz abraxxa, open a RT ticket. 08:58
nine perl6 processes can run in parallel just fine. It's just that only one at a time may load modules. Of course loading modules should normally not take a whole night :)
08:58 Juerd left
abraxxa filesystem permissions might get in the way, e.g. you run something as another user which precompiles some modules and the rights don't allow to access the files as another user 08:59
sortiz: can run the tests again, ping me if I can be of help
08:59 dakkar joined
nine abraxxa: are you talking about a real world use case? 08:59
abraxxa I'd like to now start writing docs which describe our api and only continue chaning code afterwards
have a meeting now, later! 09:00
sortiz abraxxa, I'm about to commit some changes to the test suite, right now a can assure that Pg, mysql and sqlite are sane, but some help with oracle should be appreciated. 09:01
09:01 Juerd joined 09:11 TEttinger left 09:16 vendethiel joined, Ven_ left
moritz sortiz++ 09:22
09:28 rindolf joined, _mg__ joined 09:31 _mg_ left, _mg__ is now known as _mg_ 09:32 Ven joined 09:33 [particle] joined, luis` joined 09:34 Some-body_ joined, andrewalker_ joined 09:35 andrewalker left, luis left, DarthGandalf left, [particle]1 left, RabidGravy left, Some-body_ is now known as DarthGandalf 09:36 vendethiel left
sortiz moritz, DBIish is in need of some care, I have intention and tuits. 09:39
moritz sortiz: please consider yourself the maintainer :-) 09:40
abraxxa back 09:43
my feeling is that Perl 6 POD is under-documented which leads to module authors not documenting their code, Net::AMQP doesn't have a single line of pod for example 09:44
09:44 pierrot joined
sortiz moritz, Thanks, I hope to live up to the responsibility. :) 09:45
lizmat good *, #perl6! 09:46
sortiz \o lizmat 09:47
09:47 RabidGravy joined
nine abraxxa: I concur. 09:49
RabidGravy is the best way to test whether an attribute has a type constraint "$attr.type =:= Mu" or is there a better way? 09:50
well obviously that tests that it isn't defined but y'see what I mean 09:52
lizmat working on my first module, I feel the same pain
RabidGravy wahay!! 09:53
09:55 n0tjack joined
abraxxa any good pointers on Perl 6 POD docs/tutorials? 09:56
09:59 ocbtec joined, n0tjack left 10:00 araujo_ left
abraxxa Too few positionals passed; expected 2 arguments but got 1 10:01
in block <unit> at printer-react.pl6 line 20
10:01 tmch joined
abraxxa not very helpful message 10:01
that's the code github.com/retupmoca/P6-Net-AMQP/b...-react.pl6
my line 20 is its line 14 10:02
seems to come from the empty declare-queue call 10:05
10:07 iloveuni` left
Hotkeys abraxxa: declare-queue requires two parameters and you've only given it one it seems 10:07
I lied 10:09
I looked at the wrong function
abraxxa Hotkeys: where do you see that it requires two? github.com/retupmoca/P6-Net-AMQP/b...l.pm6#L134
10:09 sevvie left
abraxxa oh 10:09
$name seems to be required
if not by declare-queue then by Net::AMQP::Queue.new
moritz how does one declare a queue where the AMQP broker creates a name? pass an empty string? 10:10
abraxxa Queue specifies has $.name; but submethod BUILD uses $!name 10:11
has $.name;
github.com/retupmoca/P6-Net-AMQP/b...ue.pm6#L23
moritz: yes, that's what I was trying to do
just implementing a tail -f on an exchange
moritz "has $.name" is just "has $!name" + accessor + BUILD magic
abraxxa moritz: but wouldn't you use either a) the accessor or b) the public var? 10:12
10:12 zpmorgan left
abraxxa or is my memory wrong and there is no 'public var'? 10:12
moritz abraxxa: there is no public war
*var
abraxxa haha
ok
moritz abraxxa: so for writing, you must use the private attribute
abraxxa but there is no :D anywhere, so why is the name required? 10:13
can we improve the error message to not report the line number of the react block but the actual error? 10:14
moritz that would be nice, yes
what does the error message say?
abraxxa --ll-exception doesn't help either
Too few positionals passed; expected 2 arguments but got 1
in block <unit> at printer-react.pl6 line 20
I still don't get why the name is required 10:15
i see no difference between name and the other BUILD params
moritz me neither; I suspect the error comes from somewhere else 10:16
dalek kudo/nom: a1fe1b0 | lizmat++ | src/core/Buf.pm:
Streamline Blob ~ Blob

Only a few percent in CPU for 10K buffers, but hopefully much better from a memory management point of view, because it allocates the resulting buffer only once. Also, nqp::slice already returns the right thing, so don't bother returning the resulting buffer explicitely.
stmuk maybe widely known but I seemed to have missed www.learningperl6.com/about/ "Randal Schwartz, David Farrell, and brian d foy are working on a Perl 6 book aimed at an introductory audience. This site is about that book and a testbed for some of the writing. 10:18
yoleaux 18 Feb 2016 01:38Z <timotimo> stmuk: since you're the genius behind VimColour, could you try to figure out why at least one of the files in project euler from the perl6-examples library makes it spin at 100% cpu for ever(?) ... i think it might be prob008-duff2.pl
18 Feb 2016 01:39Z <timotimo> stmuk: it looks like there's three files in euler that do failure ...
10:18 brrt joined
stmuk also "If you’re an event organizer and you’d like to run a Perl 6 workshop or class, get in touch. We’re happy to go anywhere that will at least cover our expenses. We can help you raise the funds for that." 10:20
lizmat stmuk: I wasn't sure this was supposed to be public knowledge already 10:22
llfourn cool. A book. 10:23
moritz \o/
abraxxa moritz: is there anything I can do to improve the error message? 10:24
stmuk lizmat: its a public website :)
moritz abraxxa: you could patch rakudo :-) 10:26
abraxxa moritz: pointers where to look?
moritz abraxxa: no idea, sorry
abraxxa moar is at 100% cpu only printing one message very few seconds so it seems it's unusable at this time 10:27
llfourn abraxxa: do you happen to be on a Mac? 10:29
abraxxa llfourn: nope, Ubuntu 15.10 64bit
llfourn ok nvm then :)
there are certainly some rough patches with concurrency stuff
stmuk also conferences.oreilly.com/oscon/open-...tail/49373 10:31
abraxxa the non-react code uses 100% cpu as well: github.com/retupmoca/P6-Net-AMQP/b...rinter.pl6
llfourn hmm didn't jnthn write a new AMQP thing while doing advent calendar post? 10:33
10:33 Ven left
moritz llfourn: no, that was STOMP 10:33
llfourn ah
moritz which is a much simpler protocol, afaict
llfourn abraxxa: try stomp :P
abraxxa we use RabbitMQ
moritz iirc there's a STOMP plugin for RabbitMQ 10:34
though I'd love to see Net::AMQP working too, because we use lots of AMQP at $work
brrt odd how message queues have basically appaeared as standard tools in the last few years 10:38
good thing, too, but still odd
abraxxa moritz: it works, it just takes one cpu core about 5-10 seconds to deliver one message ;(
RabidGravy moritz, Net::AMQP should work I spent about a week making sure it did about a month ago 10:39
abraxxa RabidGravy: can you test it with 2016.02?
strace wasn't helpful as it seems to not handle threads 10:40
RabidGravy "test it with 2016.02"
what would I be testing for? 10:41
llfourn RabidGravy: ^ taking 5-10 seconds to deliver a message apparently. 10:44
RabidGravy right now, if it passes the tests it's good 10:45
10:45 domidumont joined
RabidGravy not my module I only have an interest in keeping it working and the original author hasn't got time for it right now 10:45
llfourn fair 'nough :) 10:47
RabidGravy just doing a rakudobrew to check on the other machine 10:49
llfourn RabidGravy++
RabidGravy I can say though that it may not do very well on a single core CPU as the entire interface is promises and supplies 10:50
brrt i would want to say that since installing panda and p6doc, my perceived maturity of perl6 has increased greatly
dalek kudo/nom: 6b4a94e | lizmat++ | src/core/Buf.pm:
Streamline Blob:D eqv Blob:D

Make it 5x as fast for identical blobs/bufs, make it almost infinitely faster when eqving with itself.
10:52
10:52 donaldh joined
stmuk does lowering the thread pool improve Net::AMQP performance I wonder? 10:53
RabidGravy I'm so glad I bought this gigabyte brix thingy last year, it means I can get on and do other stuff on my laptop while building rakudo to test stuff 10:54
llfourn ah a guy brought one into sydney.pm last week to do his presentation. Pretty cool. 10:55
stmuk is that NUC-ish form factor? 10:56
RabidGravy yeah, basically a small cube
RabidGravy goes back to thinking over increasingly ingenious ways of breaking this module 10:57
11:01 espadrine joined
RabidGravy abraxxa, re your issue on Net::AMQP, I actually implemented exactly that on the 20 January, if you haven't updated since before then you may want to do so 11:05
11:07 adu joined
dalek kudo/nom: fe14385 | lizmat++ | src/core/Buf.pm:
Abstract blob content equality into .SAME method

Allowing Blob:D eqv Blob:D to become almost a mathematical formula
11:08
RabidGravy and indeed it is tested for at github.com/retupmoca/P6-Net-AMQP/b...ueue.t#L31
11:08 vendethiel joined 11:09 adu left 11:14 ab6tract joined 11:22 labster left
dalek kudo/nom: 1969a42 | lizmat++ | src/core/Buf.pm:
Make Blob:D eq/ne Blob:D about 250x faster

  - for two 10K identical buffers, faster still for inequal buffers
  - no longer allocates copies of both buffers, so more memory friendly
11:23
ab6tract lizmat++ :D 11:24
brrt cool, lizmat++ 11:27
11:28 rindolf left 11:29 vendethiel left, Ven joined 11:33 SCHAAP137 joined
abraxxa RabidGravy: just installed everything 11:38
RabidGravy right, so declare-queue("") does give you the auto-generated name 11:39
abraxxa ah! 11:43
DOCS! ;)
RabidGravy PATCH! 11:48
;-p
for reference Net::AMQP is not working at all on the very latest rakudo, I suspect something gone broke in subbuf 11:50
psch ...well that was silly :l 11:51
err
my oversight yesterday, that is :)
turns out computeInterop binds an empty Hash to JavaHOW.%!methods, and not the actual methods... 11:52
11:52 blunder joined
RabidGravy lizmat, is it possible that in some recent changes you have unwittingly altered the behaviour of Buf.subbuf($from, $len); 11:52
?
lizmat checks 11:53
11:53 blunder left
lizmat RabidGravy: that feels unlikely, as I haven't touched subbuf (yet) 11:53
and it doesn't seem to depend on anything I changed 11:54
RabidGravy for reference the code that is failing is going "my $tablebuf = $data.subbuf(4, 426);" and is returning the fifth character only
lizmat my last changes to subbuf were on 14 Nov last year 11:55
11:55 vendethiel joined
RabidGravy yeah it has worked since then 11:55
lizmat any idea on when it started to fail ?
I mean, something you can m: here or gist for me to double check ? 11:56
RabidGravy it's buried deep in the payload decoding of Net::AMQP, 'ang on let me golferize 11:57
dalek kudo/nom: e3342da | lizmat++ | src/core/Buf.pm:
Make Blob:D cmp/lt/gt/le/ge Blob:D 3800x faster

  - for two 10K identical buffers, faster still for inequal buffers
  - implement Blob:D.COMPARE helper method
  - which checks number of elements before checking contents
  - no longer allocates copies of both buffers, so more memory friendly
11:59
lizmat please note that all of these changes I make, are spectest clean
so if I borked something, we need more tests :-)
12:01 sammers joined
lizmat argh, subbuf-rw is untested :-( 12:06
12:10 wamba left 12:12 kaare_ joined 12:15 ely-se left
RabidGravy lizmat, it's actually the bahviour of unpack that shagged it 12:18
lizmat ah, I borked unpack ?
12:19 vendethiel left
lizmat RabidGravy: did I by any chance bork Blob.list ? 12:19
or Blob.append ? 12:20
RabidGravy no, the code in question is doing "my $len = $data.unpack('N'); ... my $tablebuf = $data.subbuf(4, $len);" 12:21
lizmat use experimental :pack; dd pack("N",4200).unpack("N") 12:23
m: use experimental :pack; dd pack("N",4200).unpack("N") 12:24
camelia rakudo-moar e3342d: OUTPUT«slip(4200,)␤»
lizmat perhaps the 1 is for the number of elements returned ?
RabidGravy the return from unpack was subtly changed in the 2afe79fa
yeah it is
before it didn't do that 12:25
12:25 nakiro left
dalek kudo/nom: 531495a | lizmat++ | src/core/Buf.pm:
Revert "Remove some superfluous returns"

This reverts commit 2afe79fa61925a847d78aeab8a6b31ab29db1f3c.
Apparently, not so superfluous, as RabidGravy++ found out
12:25
lizmat RabidGravy: could you verify this fix ? 12:26
RabidGravy lizmat++
yeah will rebuild in a tick, I wasn't relishing going all the way through the Net::AMQP and "fixing" all the unpacks 12:27
lizmat the return in pack could probably be removed, but I'm not going to bother
since it's all experimental, and either there's a better solution in the ecosystem, *or* we merge back the PackUnpack distro into core 12:28
(which I think would make it about 1.5 to 2x as fast still, because we could use nqp::ops in a lot of places)
12:31 nakiro joined
lizmat wonders about the usefulness of subbuf-rw now that we have Buf:D.splice 12:31
Ven o/, #perl6
12:31 ely-se joined
RabidGravy yeah, just right at this moment Net::AMQP does everything in a Buf and there's all sorts of Buf-munging going on to encode, decode the frames so I personally would rather the interface didn't change that much 12:32
lizmat okidoki... but you wouldn't mind an improvement in speed / memort usage, right ? 12:33
RabidGravy no, speed is good
12:34 adu joined
brrt thinks we should be able to eventually compile pretty tight code out of that 12:35
lizmat brrt: yeah, my thought exactly :-)
lizmat hopes the current work will make that easier
m: sub a(\a) { Proxy.new( FETCH => sub ($) { dd "FETCH"; a }, STORE => sub ($,$new) { dd "STORE"; a = $new } ) }; say a(my $a) = 42 # that's a LOT of FETCH 12:36
camelia rakudo-moar 531495: OUTPUT«"STORE"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤42␤»
RabidGravy lizmat++ # can confirm that fixes 12:40
lizmat++
12:41 adu left, sufrostico joined, Skarsnik joined
Skarsnik Hello 12:41
yoleaux 04:32Z <sortiz> Skarsnik: The idea to have all floats in Rat was a bad one. In fact, pretend that all SQL numeric types should map to a single Perl6 type is naive. I'm opening an issue for real discussion.
12:42 sufrosti1o joined 12:43 tmch left
sortiz \o Skarsnik 12:43
Skarsnik Fun fact I originaly put everything as Num x)
sortiz I'm working on it, don't worry. :-) 12:44
RabidGravy abraxxa, if you built your rakudo between 19:00 CET yesterday and just now you may find that Net::AMQP doesn't work, building a new rakudo will fix that 12:49
abraxxa RabidGravy: I've build 2016.02
12:49 donaldh left, brrt left
RabidGravy all working fine with "2016.02-36-g531495a built on MoarVM version 2016.02" 12:51
lizmat m: dd my $b = Blob.new(1,2,3); dd subbuf-rw($b,2,1) = Buf.new(42); dd $b 12:52
camelia rakudo-moar 531495: OUTPUT«Blob $b = Blob.new(1, 2, 3)␤Blob.new(3)␤Buf $b = Buf.new(1, 2, 42)␤»
12:53 Ven_ joined
Skarsnik sortiz, if you are bored you can maybe cut the test in multiple method/sub 12:53
lizmat so, are we ok with subbuf-rw changing a Blob into a Buf ?
sortiz Skarsnik, For the SQLite case, that don't preserve type information, should be a good idea allow the user to select the desired types, do you have any suggestions?
lizmat that doesn\'t feel right
m: dd my $b = Blob.new(1,2,3); dd subbuf-rw($b,2,1) = Blob.new(42); dd $b
camelia rakudo-moar 531495: OUTPUT«Blob $b = Blob.new(1, 2, 3)␤Blob.new(3)␤Blob $b = Blob.new(1, 2, 42)␤»
lizmat this is because Buf is infectious in ~ 12:54
Skarsnik sortiz, it's more a case of capability (see the issue about that), look at sqlite doc to see the precision of the float type x)
12:54 Ven_ left 12:55 n0tjack joined, Ven left
sortiz Skarsnik, I'm busy fixing some some details in the test suite and in the driver :-) 12:55
ab6tract just noticed doc.perl6.org/language/typesystem
sad page :( 12:56
Skarsnik x)
true
lizmat ab6tract: PR's are welcome!
abraxxa i have to catch my train, bye!
12:56 abraxxa left
sortiz Skarsnik, SQLite's FLOAT is in fact an IEEE-745 double. Perfect for Num. 12:56
ab6tract lizmat: i have a commit bit for doc, and have pushed some updates before. but short on tuits today/lately :S 12:57
in other news, sereal headers are now validating :D
lizmat ab6tract++ # looking forward to be able to support Sereal in Perl 6! 12:58
ab6tract lizmat: looking forward to getting us there :) 13:01
ooc, do we have a way to throw custom argument type exceptions? in other words, to provide a custom exception object?
lizmat class X::Foo is Exception { method message() { "foo" } } # something like this ? 13:02
13:02 xinming left
El_Che reading/working with containers, and I plan to try out my question, but what does precomp do on read-only filesystem (e.g. a read-only container). Does it not use precomp? Tries to write to /tmp? other? 13:02
Skarsnik good question
psch m: class Blergh is Exception { }; try Blergh.new.throw; $!.perl.say 13:03
camelia rakudo-moar 531495: OUTPUT«Blergh.new␤»
ab6tract lizmat: more or less, but to send a specific custom one when a call-site sends a bad argument to a sub
i'm not sure it's actually useful. i was just curious
psch ab6tract: "bad argument"? like, type mismatch..? 13:04
lizmat no, I think you'll always wind up in the X::TypeCheck family
ab6tract psch: yes. in particular runtime type mismatches based on subsets/where clause
psch or do weird proto hackery
ab6tract ok. that's fine, really. 13:05
RabidGravy Mmmmm proto-hackery
psch like, proto f(|c) { if c.List[0] > 10 { X::Custom.new.throw } else { {*} } }
or something, obviously untested.. :)
if you're actually putting where clauses on the parameters you still end up in X::TypeCheck, as lizmat said 13:06
13:06 wamba joined
ab6tract psch, lizmat: awesome. thanks for the clarification! 13:06
lizmat afk for a few hours& 13:07
moritz just experienced how event-based programming can make testing a breeze 13:08
13:15 Ven joined
dalek kudo-star-daily: 489f92c | coke++ | log/ (8 files):
today (automated commit)
13:15
13:17 xinming joined, molaf joined 13:19 kent\n left 13:20 kent\n joined, kent\n left, kent\n joined
dalek Iish: 4e03bf0 | (Salvador Ortiz)++ | lib/DBDish/Pg/ (2 files):
Minor post oracle merge repairs in Pg
13:21
Iish: a823fb2 | (Salvador Ortiz)++ | lib/DBDish/SQLite/ (2 files):
SQLite: Implement the proper semantic of finish

Fixes #34
Iish: bb1682c | (Salvador Ortiz)++ | lib/DBDish/SQLite (4 files):
SQLite: Now with typed Pointers
Iish: 8a28d97 | (Salvador Ortiz)++ | t/lib/Test/DBDish.pm6:
Rationalize the test suite, pass 1.

Add support for typeless drivers, like SQLite Remove unneeded TODOs, drivers passing.
Iish: f936ec4 | (Salvador Ortiz)++ | t/40-sqlite-common.t:
SQLite: Optout typed NULLs
RabidGravy sortiz++ # fix0rifaction 13:25
13:25 Ven left
Skarsnik duh, what did you do for the todo to pass? 13:26
13:27 ocbtec left
[Coke] yawns. 13:29
ab6tract m: subset R of Str where * eq "R"; sub rs(R $r) { $r xx * }; use Test; throws-like { rs("Q") }, X::TypeCheck, message => /\w+/, "hmm"
camelia rakudo-moar 531495: OUTPUT« 1..3␤ ok 1 - code dies␤ not ok 2 - right exception type (X::TypeCheck)␤ ␤# Failed test 'right exception type (X::TypeCheck)'␤# at /home/camelia/.perl6/2016.02-36-g531495a/precomp/8490FD9827B5D931FCC998C1F8EC28F82BC18926.1456491017.86…»
13:30 Ven joined
ab6tract ahh, the STDERR isn't printed, duh. # Expected: X::TypeCheck 13:30
# Got: X::AdHoc
[Coke] stmuk: I thought that learningperl6 book thing was actually ancient, then dropped.
psch m: subset R of Str where * eq "R"; sub rs(R $r) { }; try rs("Q"); $!.perl.say 13:31
camelia rakudo-moar 531495: OUTPUT«X::AdHoc.new(payload => "Constraint type check failed for parameter '\$r'")␤»
RabidGravy yeah, I think I got that somewhere and resorted to munging around the actual message
[Coke] wanders off to find more コーヒー 13:32
psch that should probably throw TypeCheck::Argument instead... 13:33
ab6tract psch: it would be pretty awesome if it did :D 13:34
psch ab6tract: it's not that hard a patch :) 13:35
ab6tract: the error is thrown in src/Perl6/Metamodel/BOOTSTRAP.nqp:501
ab6tract: and src/Perl6/Metamodel/BOOTSTRAP.nqp:297 has almost exactly what needs to go there instead
Skarsnik Any objection for me to DEPRECATE the non kebab cased method in DBIish? 13:36
psch ab6tract: although i'm not sure if normal argument typechecks and argument constraints should throw the exact same thing...
ab6tract TypeCheck::Constraint ? or TypeCheck::Argument::Constraint ? :) 13:37
Skarsnik: i seem to remember moritz not feeling 100% about that, but i don't recall specifics 13:38
Skarsnik It was when i deprecated everything x)
psch ab6tract: probably the latter, not sure how exactly that works out wrt to .message either
Skarsnik I am just talking about the _ version of the fetch*
and we should handle version of DBIish someday x)
psch ab6tract: as in, the message for TypeCheck::Argument clearly alludes to MMD (if available), but where constraints are checked afterwards iirc 13:39
ab6tract psch: hmmm... but would you consider that "afterwards"? or just "at the end"
psch ab6tract: tbh i'd have to dig into the Binder again to make any statement with real confidence... :) 13:40
13:41 QORRiE joined
psch m: sub f(Str $) { }; f 1 13:41
camelia rakudo-moar 531495: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Ove0xlGxzB␤Calling f(Int) will never work with declared signature (Str)␤at /tmp/Ove0xlGxzB:1␤------> 3sub f(Str $) { }; 7⏏5f 1␤»
psch m: subset SubStr of Str where *.chars < 3; sub f(SubStr $) { }; f "abc" 13:42
camelia rakudo-moar 531495: OUTPUT«Constraint type check failed for parameter '<anon>'␤ in sub f at /tmp/DmApCVV4jE line 1␤ in block <unit> at /tmp/DmApCVV4jE line 1␤␤»
psch i'm thinking "Calling f(Str) will never work with declared signature (SubStr)" is misleading
m: sub f( $ where *.chars < 2) { }; f "abc" # here even more 13:43
camelia rakudo-moar 531495: OUTPUT«Constraint type check failed for parameter '<anon>'␤ in sub f at /tmp/amllaDQbuq line 1␤ in block <unit> at /tmp/amllaDQbuq line 1␤␤»
13:43 donaldh joined, autarch joined
psch ab6tract: i guess in the end coopting the current error message and stuffing it into TypeCheck::Argument::Constraint is probably fine 13:43
13:46 araujo joined 13:47 araujo left, araujo joined, araujo left, araujo joined 13:48 brrt joined 13:49 araujo left 13:50 musiKk joined 13:51 vendethiel joined 13:55 avenj left 13:56 musiKk left 13:57 rindolf joined 13:58 Ven left 14:06 nchambers joined
[Coke] what do folks here use for presentations? I'm looking at vroom (which sadly doesn't look like it'll work with macvim out of the box) and Preston at the moment. Any other suggestions? Main requirement is I can save the presentation as mostly-test in a git repo. ) 14:07
:)
RabidGravy I used to like magicpoint 14:08
ab6tract psch: makes sense to me
14:08 kid51 joined
RabidGravy dunno if that's even going any more 14:08
moritz [Coke]: I used to have my own home-grown slide-to-html generator, but now I'm using libreoffice (and screwing the git aspect)
[Coke] yah, I guess it's not actually a hard rquirement. :| 14:10
I mean, it's a work thing, I could just use pptx
rudi_s m: sub foo(@a) { @a.map(-> $a, $b { say "$a $b" }) }; my @x = (1,2), (3,4); foo(@x); 14:11
camelia rakudo-moar 531495: OUTPUT«1 2 3 4␤»
rudi_s How can I get $a, $b to get mapped to 1 and 2?
jnthn Depends... :)
Unpacking is one way 14:12
-> ($a, $b) { ... }
@a.flat.map(...) is another
(Which I'd turn to depending on how I'm thinking about the data)
rudi_s Ah, flat again. 14:13
m: sub foo(@a) { @a.flat.map(-> $a, $b { say "$a $b" }) }; my @x = (1,2), (3,4); foo(@x);
camelia rakudo-moar 531495: OUTPUT«1 2 3 4␤»
14:13 vendethiel left
rudi_s Hm. Neither flat, nor List works. 14:14
jnthn Oh, right, it own't work there 'cus you put them in an Array, which itemizes all the things
So, unpacking 14:15
m: sub foo(@a) { @a.map(-> ($a, $b) { say "$a $b" }) }; my @x = (1,2), (3,4); foo(@x);
camelia rakudo-moar 531495: OUTPUT«1 2␤3 4␤»
rudi_s To be honest I find that part about Perl6 really confusing. Is there a good overview how exactly "itemizing" and arrays and similar work together.
14:15 skids joined
rudi_s It feels really un-intuitive. 14:15
But maybe I'm just not yet understand the design decision. 14:16
Thanks.
jnthn Pretty sure there's a containers doc in doc.perl6.org
FROGGS I bet this (+flattening) will be the most explained topic of Perl 6 in future
jnthn But it's actually pretty simple: .flat and flat do not descend into Scalar containers.
And every slot in an Array is a Scalar container 14:17
m: .say for flat [1,2], $[3,4], 5, [6, [7, 8]]
camelia rakudo-moar 531495: OUTPUT«1␤2␤[3 4]␤5␤6␤[7 8]␤»
nine [Coke]: I moved from vim with just every slide in its own file to LibreOffice because images really make a presentation easier to digest 14:18
jnthn That's all the cases on one example, I think :)
rudi_s To me arrays and lists in perl5 were very similar, but feel completely unrelated in perl6 which different behavior and I'd like to understand the reason why this was chosen so I can understand it better.
nine FROGGS: I think it already is
rudi_s jnthn: What is difference between [..] and $[..]? 14:20
$ as in scalar container?
jnthn Yes
$[..] is the same as $(..)
oops
rudi_s And why is [7,8] not flattened? Because flat only flats one level?
jnthn $[..] is the same as $([..])
Not quite
Because it only flattens until it sees a Scalar 14:21
rudi_s And [7,7] when put into an array is a scalar/
?
jnthn And an Array is, by definition, a collection of Scalar containers (unless you bind into it)
Yes. Arrays are assignable only because their elements are Scalar containers 14:22
Or rather, array *elements* are.
ab6tract m: .say for flat [ [1,2], $[3,4], 5, [6, [7, 8]] ] 14:23
camelia rakudo-moar 531495: OUTPUT«[1 2]␤[3 4]␤5␤[6 [7 8]]␤»
rudi_s I see, thank you. 14:24
(Btw. I just remembered how to flatten an array: @x.List.flat .. - somebody told me here a few days ago.)
14:24 sjoshi left
timotimo yeah, i have to keep that in mind, too 14:24
rudi_s But I think -> ($a, $b) is better on the eye. 14:25
(Unless I want to e.g. join an array.)
nine Funny how things work out. I added the List method only because I thought we shouldn't return Arrays from methods and operators just because they are used internally. However after I added .List I didn't actually use it because the generic implementation can't just re-use the Array's IterationBuffer and is thus much slower than the inlined code. 14:27
I did not think about the different flattening behavior at all :)
rudi_s ;-) 14:28
Btw. what is the idiomatic way to return values from a pointy block in a map. At the moment I use it like this .map(-> ($a, $b is copy) { $b = 'foo'; $a, $b; }) - but it feels kind-of ugly. Can/Should I use return? 14:29
ab6tract return is not available outside of subs/methods, iirc 14:30
jnthn I tend to leave the ; off the final statement to give a hint that I view it was the return value
timotimo right, you can use return there only if you use "anon sub (...) { ... }" inside the map
nine And that it can be used in this way is just a side effect of ListReificationTarget deconting the values so assigning to the Array won't change values in the List.
jnthn If you don't give it a name you don't need the anon also :) 14:31
psch m: my &f = anon sub foo { }; &f.name.say # /o\
camelia rakudo-moar 531495: OUTPUT«foo␤»
timotimo oh
well, anon is about installing in the lexpad more than anything, really 14:32
jnthn Right
Or *not* installing it :)
timotimo giving it a name will still make that show up in the backtraces, i expect
jnthn aye
psch m: anon sub foo(:$) { } # an anon sub with name an a nameless named parameter... /o\
camelia ( no output )
14:32 Ven joined
brrt small point of discussion wrt to panda / ecosystem 14:32
not everybody can access git:// protocols. in fact, there is very likely no shared subset of protocols accessible to all, with the possible exception of http 14:33
nine brrt: there is some environment variable for overriding the protocol
brrt case in point, i can't access the git:// protoocl due to firewall 'cleverness' at $institute
oh really?
i had no idea
nine well in git
brrt anyway, it may be something to keep in mind, if we ever get to perl5's level of pervasiveness 14:34
nine Yes, we should move to https
mst it's already firmly in mind, hence the support for multiple protocols already in pands
and the intent to, over time, probably use https by default and let other things be configured
BUT 14:35
brrt i have had an issue filed how somebody could not get https for the submodules :-(
mst also due to firewall 'cleverness' and similar in academentia
brrt hey, you misspelled academia :-P
mst I have a feeling we had early adopters who had trouble with http(s) proxying
whereas those people had totally working git://
believe me, I spelled that exactly how I meant to :D
basically, everything is made of urine and you can't even find the cat 14:36
but, yeah, in the long run this stuff needs to be a smoother first run experience
RabidGravy I've done that stupid thing and left the hardest part to last
mst and then it turns out you have to rewrite everything else to make it fit?
14:37 brrt left
RabidGravy I *think* I won't have to 14:37
14:37 Ven left
RabidGravy but it's Friday afternoon so hey 14:37
mst what I am making at the moment is actually partially your fault 14:38
mst ... I'm so sorry
what did I do this time? :P
RabidGravy remember a long time ago we had a conversation and you made Class::XML?
or something like that 14:39
mst I did write Class::XML many years ago, but I think I was still at netcruft at the time so I'm not sure if the chronology fits
RabidGravy I thought it was high time I made something like that for P6 14:40
cosimo I presume netcruft is also intentional misspelling? :)
mst had you seen the source code to the Web Server and SSL Surveys, you wouldn't've even considered asking that :D
there's a bunch of more recent ones using Moose to steal ideas from as well - XML::Toolkit XML::Rabbit are the ones that spring to mi-wait 14:41
RabidGravy they're Olde Skool with code made by network engineers and sysadmin type
mst got somebody to give me a list, where did I put it
which are old school? 14:42
14:42 vike left
RabidGravy mst, oh I've almost finished, just making support for xsd:any like wot soap uses 14:42
perlpilot XML::Rabbit++
RabidGravy netcraft
mst oooh, nice
I liked the old school bits. those were the fun part. 14:43
the part where at some point some kid had maintained it and let the Makefile atrophy so it wouldn't flipping run hands off anymore was less amusing
and the fact that while the senior techs weren't looking a contractor had added a bunch of csh scripts very much less 14:44
pretty sure jeremy killed that with fire after my departure though
RabidGravy: but, yeah, such a thing is really nice. just, y'know, do better than I did ;) 14:45
(not a high bar in the case of Class::XML, I think that was my first original cpan module ;)
14:50 vendethiel joined 14:53 araujo joined, araujo left 14:56 Ven joined 14:58 vike joined, ab6tract left 15:08 kjs_ joined, vike left, vike joined 15:11 ab6tract joined 15:12 vendethiel left 15:14 prammer joined 15:21 musiKk joined 15:24 cdg joined
skids m: my $r = Supplier.new; my $s = $r.Supply.flat; $s.tap({ .perl.say }); sleep 0.5; $r.emit((1,2,(3,4))); sleep 0.5; # 1-level flat intentional here? 15:29
camelia rakudo-moar 531495: OUTPUT«1␤2␤$(3, 4)␤»
15:31 wamba left 15:32 vendethiel joined 15:34 QORRiE left, uruwi joined
ab6tract earlier today i asked about how one would throw a custom exception when the type constraint fails 15:35
rudi_s jnthn: Sorry for the late reply. Good idea omitting the ; - thanks.
15:35 dakkar left
ab6tract i think i might have found a decently idiomatic answer 15:35
m: multi g(Any $invalid) { die "Unacceptable!" }; multi g($g where * eq "g") { say "Nicely chosen.." }; g("g"); g("k")
camelia rakudo-moar 531495: OUTPUT«Nicely chosen..␤Unacceptable!␤ in sub g at /tmp/rc3Jnji0Ej line 1␤ in block <unit> at /tmp/rc3Jnji0Ej line 1␤␤»
ab6tract that is, if you are accounting for a failure case in this manner, it is by definition anything that does not match the constraints of the available candidates 15:36
15:36 QORRiE joined
skids
.oO(".plane($n)" might be a good word for a depth-limited flat, after the carpentry tool)
15:36
ab6tract skids++; # nice one 15:37
psch ab6tract: oh. i thought the need to throw a custom Exception was only because it currently throws X::AdHoc?
in any case, yes, the mmd solution looks neat 15:38
ab6tract psch: i hadn't figured this bit out yet :)
15:39 dakkar joined
ab6tract but no, i found out about the X::AdHoc after i first asked about custom 'constraint exceptions' 15:39
psch: you would still need this MMD route if you want something besides the TypeCheck exception that comes from core 15:40
the X::AdHoc thing was a WAT, since i had written my test case to expect what i had been told to expect, and it came out X::AdHoc :)
psch s/that comes/might eventually come/ # patches welcome ;P 15:41
ab6tract :D
psch i have a lot of jvminterop head-banging to do here :S
s/banging/bashing/
ab6tract no worries. This way my test is not dependent on core's current thrown type, anyway
psch alright, i'll give up into roping you into core contributions vOv 15:42
ab6tract psch: i would much prefer your brains to be splattered on^W^W put to use towards the jvm code :)
psch: i might take a look at it at some point. but tuits are rare these days. 15:43
15:46 n0tjack left
psch ab6tract: no worries, i probably should actually RT those kind of obvious little things anyway... 15:47
but sometimes it's hard to tell which bits are actually easy and which only look easy with the (still not particularly great) experience with the codebase... vOv
15:47 avenj joined
psch *i have 15:48
nine ab6tract: the additional multi candidate becomes confusing when using introspection to find out what the object supports
Because you get a candidate that takes an Any but calling that will only fail.
15:48 avenj left, avenj joined
psch nine: OTOH, where constraints are pretty introspection-proof already... 15:48
nine m: say sub foo($a where * > 2) { } 15:50
camelia rakudo-moar 531495: OUTPUT«sub foo ($a where { ... }) { #`(Sub|67863120) ... }␤»
nine psch: you mean this usefull output?
psch m: sub f($f where *.chars < 2) { }; &f.signature.params[0].constraints.say
camelia rakudo-moar 531495: OUTPUT«all(WhateverCode.new)␤»
psch ^^^ that, yes
no way to know what's in that WhateverCode
so, yeah, it's constrained somehow but that's all you get to know without reading the actual impl 15:51
nine Ah wouldn't it be nice if we could actually print the source code there?
psch i thought so, yeah. but subset types get implemented as where constraints as well, as do &-param signature constraints
which in both cases could end up too much for e.g. TypeCheck::Argument::Constraint 15:52
also, i don't readily have any idea how we can get the actual constraint there either
well, the only thing that comes to mind is attaching it as POD, but that seems somewhat wrong, on a hunch 15:54
nine Did you know that we actually have code printing back traces? 15:55
psch i clearly didn't, i'd probably have made a different argument just now if i did :) 15:56
nine gist.github.com/niner/3be0c164d847ca794e18
ugexe i didnt know that, cool 15:59
nine Born at last year's QA hackathon.
perlpilot When method resolution fails to find a candidate, it calls FALLBACK, right? Is there something similar for when multisub dispatch fails to find a candidate? 16:00
nine Right now I am so sad I won't make it this year :/
psch huh, when was the QA hackathon?
timotimo oh
16:00 Ven left
timotimo perl6 --help shows /home/timo/.../perl6.moarvm as the $0 16:00
psch perlpilot: i'd add a :(*@, *%) candidate, but i don't think there's anything builtin on the same level as FALLBACK is 16:01
where "the same level" means "as distinctly for this purpose"
16:01 nakiro left
perlpilot psch: aye and my next question is ... should there be? 16:03
16:03 cdg left
nine psch: end of April 2015 16:03
psch huh, i was paying attention then... must've completely missed that :) 16:05
perlpilot: i'm not sure, i guess it mostly depends on how that would look
perlpilot: like, &f.proto.add_fallback or..? 16:06
16:07 rje_ joined 16:08 FROGGS left
perlpilot I guess CANDO would be what I'm talking about (if it's implemented) 16:08
16:08 cdg joined
rje_ p6: say "Rakudo!" 16:09
camelia rakudo-moar 531495: OUTPUT«Rakudo!␤»
perlpilot (an ack on the rakudo repo gives no results, so I'm going out on a limb here and guess it's not implemented ;)
ugexe is CANDO different from cando? 16:10
rje_ p6: say "楽土!" 16:11
camelia rakudo-moar 531495: OUTPUT«楽土!␤»
perlpilot I'm sure it is ... I was reading S10:Autoloading 16:12
synopsebot6 Link: design.perl6.org/S10.html#Autoloading
16:13 Upasaka_ left
perlpilot although CANDO may not quite be what I'm thinking of ... it only fires "when anyone is searching for a name in the package" By the time we're doing multi-dispatch, we already have a short name. Does CANDO concern itself with shortnames or longnames? 16:14
16:15 vendethiel left
RabidGravy isn't .cando a method on Code to check the signature? 16:19
rudi_s "file".IO.lines returns the file content as read. What is a quick way to get the file content as Blob?
RabidGravy "file".IO.slurp(:bin) I think 16:20
timotimo i think cando gives you a candidate that would be used in multiple dispatch, given a capture 16:21
RabidGravy yeah
16:21 _mg_ left
rudi_s RabidGravy: Nice, thanks. - Not in the docs yet. How do you know that stuff? ;-) 16:22
nine Yeah! I just had the first run where a make install && perl6 -e 'use Test;' did not have to precompile Test again on the first load :0 16:24
16:26 tmch joined 16:29 kent\n left 16:30 kent\n joined, ely-se left 16:36 kjs_ left 16:37 rje_ left 16:39 zpmorgan joined
jnthn nine: Nice! Was that with the "disregard empty precomp stores" approach? 16:41
nine jnthn: no, I'm onto combining all precomp stores 16:42
16:42 ab6tract left
jnthn Rather you than me ;) 16:43
16:43 araujo joined, araujo left, araujo joined
nine jnthn: I've been thinking about how to do this for two months. Now I just wanna see if it can work :) 16:44
perlpilot nine++ 16:45
jnthn :-) 16:46
nine++ indeed
nine Wait till you see the implementation :D
perlpilot still nine++ because I don't see too many other people clamoring to do it. :) 16:47
16:48 Upasaka joined 16:53 sufrosti1o left, sufrostico left
donaldh Hi o/ 16:54
nine jnthn: fun fact: even if we skipped an empty precomp dir already, we'd still end up precompiling much more than we'd have to because thanks to %provides' undefined order we often precompile some leaf module last and end up deleting all its rev-deps
donaldh I've been doing some JVM backend hacking, to see if I can give us more headroom for CORE.setting compilation 16:55
psch donaldh++
hoelzro o/ #perl6
nine++
donaldh++
donaldh And also to see if I can get some lazy init during startup.
16:55 sufrostico joined, sufrosti1o joined
jnthn donaldh: You can likely borrow some lazy deserialization bits from Moar. 16:56
donaldh: It's a bit fraught, though
donaldh I've moved the serialization string heap into the serialization blob because it's a big cause of running out of space in the class const pool 16:57
jnthn ah, interesting
psch right, i remember that idea. great that it actually worked out
donaldh And experimenting with moving block lex values to annotations.
16:57 cdg left
donaldh tho, as I discovered a long while ago, there seems to be a cost to annotation processing at startup. I think it's the bytecode encoding of annotations, so it'll only be worthwhile if I can lazily read the annotations. 16:58
16:59 cdg joined, buharin joined, zakharyas left 17:01 wamba joined
donaldh jnthn: yes, I reckoned it was fraught. Still trying to figure out what's needed immediately. 17:02
17:02 kurahaupo joined 17:03 _dolmen_ joined 17:09 vendethiel joined 17:28 ilogger2 joined, ChanServ sets mode: +v ilogger2, ilbot3 joined, camelia joined 17:30 ChanServ sets mode: +v camelia 17:35 fireartist joined
timotimo it isn't guaranteed, but you're totally supposed to provide one 17:38
17:39 sevvie joined 17:52 _mg_ joined
hoelzro ok, that seems reasonable 17:53
the payload method check should probably change to something like message though, I think 17:54
timotimo dunno 17:55
18:05 firstdayonthejob joined 18:08 domidumont joined
dalek c: a4dcf9c | (Simon Ruderich)++ | doc/Type/IO/Path.pod:
IO::Path: document slurp and spurt methods
18:09
p: 3f33ca9 | donaldh++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/Serialization (2 files):
[jvm] Serialize the string heap to the serialization blob.

This cuts the CORE.setting const table from ~63000 entries to ~52000 entries.
timotimo oh, huh. that's neat! 18:10
18:11 _mg_ left
dalek p: 95c349f | donaldh++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SerializationReader.java:
[jvm] Oops. Part of another feature leaked into this commit.
18:12
18:12 wamba joined 18:13 yqt joined
rudi_s I just found #400 in perl-docs on github and I'm curious why for 'text-file'.IO.lines <-> $_ { s/foo/bar/ } doesn't work. And I'm also curious what it's supposed to do. 18:19
timotimo well, maybe you'd expect it to change the contents of the file? 18:20
rudi_s Hm. But the code as is does nothing. 18:21
psch it changes an anonymous array that you don't have a reference to 18:22
rudi_s Alright. But it has no visible effect so I'm curious what should be documented. 18:23
And I'd still like to know why <-> doesn't work.
timotimo "doesn't work" meaning?
psch m: my @a = IO.lines; for @a <-> $_ { .uc }; say @a[^3]
camelia rakudo-moar 531495: OUTPUT«Method 'lines' not found for invocant of class 'IO'␤ in block <unit> at /tmp/FLwlElRZ1c line 1␤␤»
psch m: my @a = $*IN.lines; for @a <-> $_ { .uc }; say @a[^3]
camelia rakudo-moar 531495: OUTPUT«(Céad slán ag sléibhte maorga Chontae Dhún na nGall Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll; Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí)␤»
psch m: my @a = $*IN.lines; for @a <-> $_ { .=uc }; say @a[^3] # there
camelia rakudo-moar 531495: OUTPUT«(CÉAD SLÁN AG SLÉIBHTE MAORGA CHONTAE DHÚN NA NGALL AGUS DHÁ CHÉAD SLÁN AG AN EIREAGAL ARD INA STUA OS CIONN CAOR IS COLL; NUAIR A GHLUAIS MISE THART LE LOCH DHÚN LÚICH’ GO CIÚIN SA GHLEANN INA LUÍ)␤» 18:24
rudi_s timotimo: Parameter '$_' expected a writable container, but got Str value
psch oh, right
.lines returns a List, not an Array
my bad
timotimo ah, good
psch still, .lines isn't rw afair
timotimo it doesn't matter if .lines is rw, it's about the containers that could be in the list/array 18:25
psch timotimo: right, i was thinking along the lines of tie()
rw isn't the right term there
timotimo i don't even know tie :)
psch something in p5 to directly map an array to a file on disk afair 18:26
timotimo oh 18:28
well, having lines-based text files is trouble when you alter the length of individual lines
you'd have to re-shuffle the rest of the file every time
the performance of the given loop at the top would be abysmal
psch i've never used that feature of p5, fwiw 18:29
[Coke] .u sad 18:32
yoleaux U+0635 ARABIC LETTER SAD [Lo] (ص)
U+069D ARABIC LETTER SAD WITH TWO DOTS BELOW [Lo] (ڝ)
U+069E ARABIC LETTER SAD WITH THREE DOTS ABOVE [Lo] (ڞ)
[Coke] .u sad face
yoleaux No characters found
timotimo .u tears
yoleaux U+1F602 FACE WITH TEARS OF JOY [So] (😂)
U+1F639 CAT FACE WITH TEARS OF JOY [So] (😹)
[Coke] m: Int.Range 18:35
camelia ( no output )
[Coke] m: Int.Range.say
camelia rakudo-moar 531495: OUTPUT«-Inf^..^Inf␤»
[Coke] m: Str.Range.say
camelia rakudo-moar 531495: OUTPUT«Method 'Range' not found for invocant of class 'Str'␤ in block <unit> at /tmp/Njxpf_HH3N line 1␤␤»
[Coke] jnthn: ^^ is there something like that to show me all the unicode chars we can get at? 18:36
m: (^99999).grep({.uniname ~~ /'FACE'/}).map({$_=>.uniname}).join("\n") 18:37
camelia ( no output )
[Coke] m: say (^99999).grep({.uniname ~~ /'FACE'/}).map({$_=>.uniname}).join("\n")
camelia rakudo-moar 531495: OUTPUT«4966 ETHIOPIC PREFACE COLON␤8751 SURFACE INTEGRAL␤9785 WHITE FROWNING FACE␤9786 WHITE SMILING FACE␤9787 BLACK SMILING FACE␤9856 DIE FACE-1␤9857 DIE FACE-2␤9858 DIE FACE-3␤9859 DIE FACE-4␤9860 DIE FACE-5␤9861 DIE FACE-6␤12207 KANGXI RA…»
18:37 wamba left
timotimo oooh, negative die faces? ;) 18:40
TimToady negative die would be positive born? or would that be a resurrection? 18:44
timotimo it's not a pure function
flussence antimatter dice would make for interesting DnD games
18:44 araujo_ joined
TimToady that would depend on whether you are made of antimatter 18:45
18:46 araujo_ left
TimToady we got it wrong on the electrons vs positrons, so maybe we have it wrong on the matter/antimatter... 18:46
18:48 FROGGS joined
FROGGS o/ 18:48
18:49 araujo_ joined, yqt left 18:50 fireartist left 18:53 labster joined
hoelzro o/ FROGGS 18:57
19:00 uruwi joined 19:01 araujo_ left
[Coke] m: "􏿽xCD􏿽xBE".ords.say 19:02
camelia rakudo-moar 531495: OUTPUT«(59)␤»
[Coke] (ok, so if I want to check the uniprops of something we decompose automatically, I need to start with the int codepoint and not ever go into string mode. 19:05
FROGGS )
[Coke] m: my $i = 0x37e; say uniname($i); say uniname(chr($i));
camelia rakudo-moar 531495: OUTPUT«GREEK QUESTION MARK␤SEMICOLON␤»
FROGGS O.o 19:06
[Coke] do we have a thing that shows a list of available uniprops? 19:07
geekosaur FROGGS, welcome to unicode >.> 19:08
FROGGS hehe 19:09
[Coke]: no, I dont think so
[Coke] I have a chat server that is ascii only that I use a perl5 client to connect to... Really makes me want to both upgrade the server and rewrite the client to perl 6. 19:11
grondilu m: say class :: is List { method count-only { Inf }}.new.elems 19:19
camelia rakudo-moar 531495: OUTPUT«0␤»
moritz isn't count-only an iterator method? 19:20
grondilu but List is an Iterator
FYI I was wondering why +combinations( 19:22
$, $) does not work
m: say +combinations(100,1000)
camelia rakudo-moar 531495: OUTPUT«(timeout)»
grondilu when .elems does
m: say combinations(100,1000).elems 19:23
camelia rakudo-moar 531495: OUTPUT«1␤»
grondilu oops
that looks very wrong
oh wait
m: say combinations(1000,100).elems
camelia rakudo-moar 531495: OUTPUT«63850511926305130236698511142022274281262900693853331776286816221524376994750901948920974351797699894319420811933446197797592213357065053890␤»
grondilu m: say +combinations(1000,100) 19:24
camelia rakudo-moar 531495: OUTPUT«Memory allocation failed; could not allocate 800 bytes␤»
flussence m: say "\x37e".ord.base(16) # idle golfing... 19:26
camelia rakudo-moar 531495: OUTPUT«3B␤»
flussence m: say 'foo'􏿽xCD􏿽xBE say 'bar' 19:27
camelia rakudo-moar 531495: OUTPUT«foo␤bar␤»
flussence I'm not entirely comfortable with the idea that perl6 automatically transliterates a codepoint into an ascii character that has quite a lot of syntactic meaning in various contexts... 19:29
19:30 uruwi left
timotimo oh hey grondilu 19:30
did you get my latest message about the white noise thing?
flussence m: say so "\x37e" ~~ /<:ascii>/ # wtf-per-byte ratio steadily climbing...
camelia rakudo-moar 531495: OUTPUT«True␤»
[Coke] flussence: complain to unicode. 19:31
19:31 uruwi joined
geekosaur unicode normalization is "fun" 19:31
[Coke] "I'm pretty sure that's the intent of the Decomposition info", I mean.
19:31 gtodd joined, lostinfog joined
geekosaur (for values of fun up to and including permanent brain damage) 19:32
timotimo m: say "\x37e".ords
camelia rakudo-moar 531495: OUTPUT«(59)␤»
timotimo of course it ~~ <:ascii>
19:33 FreezeburnV joined
FreezeburnV Afternoon all 19:34
19:34 Cabanossi joined
dalek osystem: 8d1d5ec | (Steve Mynott)++ | META.list:
remove ShimmerFairy modules which no longer exist
19:35
[Coke] m: (0..^99999).grep({$_ != ord(chr($_))}).elems.say 19:36
camelia rakudo-moar 531495: OUTPUT«565␤»
19:37 yqt joined
timotimo i wonder why shimmerfairy is gone? 19:38
perlpilot timotimo: shimmeryfairy.wordpress.com/2016/0...w-im-gone/ 19:40
timotimo oh!
perlpilot you're even mentioned in that post :) 19:41
19:41 espadrine joined
timotimo i just reached that part 19:42
stmuk I also have removed shimmerfairy from the RSS feeds
timotimo it bums me out that she's felt worthless or that it's not worth speaking up :( 19:44
[Coke] She spoke up
19:44 domidumont left
[Coke] many times. 19:45
timotimo yeah
you wouldn't get shot down if you don't speak up
i just mean i'd be happier if the shooting-down hadn't been as disheartening
[Coke] perhaps if her best attempt to be calm was received in the same mode as her attempts to rage says more about her than about the rest of us. 19:48
timotimo i don't know 19:49
stmuk I don't think its about perl6 .. it's about someone's personal issues 19:50
hoelzro I wish she hadn't deleted her repos
perlpilot all I know is her "world view" was different from others enough that reconciling was (would have been) hard.
[Coke] my 2¢ - a disruptive change was made close to Christmas. There was absolutely no give on the Christmas date. The change was required for Christmas. There was a dearth of volunteers. nine got a pretty decent version of tings in place in time for us. Yes, there were disruptions. The particular bug she complained about, I found to have the same workaround as a bunch of other people who noted issues at the same
hoelzro I kinda wanted to play around with SUPERNOVA
[Coke] time.
timotimo hoelzro: yeah, you and me both have hopes and interest in the future of pod6 19:51
hoelzro I think pod6 may be where I concentrate my efforts after REPL stuff
not a lot of tuits lately =/
timotimo mhm 19:52
hoelzro I think her approach was smart; POD6 should probably be its own part of the language braid
or something like that
[Coke] To emphasize a point she made - we're not a business. we're not a company. Expecting things to work as if we were is a recipe for disappointment.
timotimo i'm glad i got a bit of feedback on my empathy from that post; seems like i was able to interpret her meanings correctly
i'm glad we'll never have to hit a christmas release like that ever again 19:53
hoelzro [Coke]: I think the lesson we should probably take away from the cur merge fallout is communicating large branches
[Coke] (broke to such an extent) - one line workaround, btw, to the bug.
hoelzro I don't think we'll ever have a branch that big again, though
not hitting 6.(current), anyway 19:54
[Coke] which I found in about 30 minutes of digging.
flussence I'll be honest, I kinda agree with everything that was written. I'm just a little more prone to hitting backspace in a panic instead of enter, and I won't even try with certain subjects since I've noticed anyone else bringing them up consistently gets shouted down.
timotimo yeah, the reception of that branch was quite poor; nine asked for eyes and nobody bothered to share any ... me included
hoelzro nine did due diligence in soliciting feedback; it's just that not many people answered the call
perlpilot hoelzro: now that we've actually released, we won't because we're going to consciously worry more about breaking things.
[Coke] nope. it was an artifact of the last minute work required for the christmas release. An unfortunate result of the hard christmas deadline imposed on us.
hoelzro perlpilot: mhmm
[Coke]: agreed 19:55
perlpilot flussence: which subjects get "shouted down"? (or was that hyperbole?) 19:56
(or maybe we have different threshholds for "shouting" :)
timotimo i don't think you'll get many hard words for suggesting something that ain't gonna happen. probably a sugar coated no + an explanation 19:57
hoelzro I gave a talk on Perl 6 here in the Chicago area on Tuesday; one of the language "features" I promoted was what I feel to be our incredible community. I want to think we're not a community that shouts people down, but that's not to say it never happens.
timotimo: *nod* 19:58
I think the harshest feedback I've seen (to me, personally) is (human interaction) - (tone and body language that softens the blow, that makes you feel that it's not personal)
stmuk I gave a talk on Perl 6 to London Perl Mongers yesterday and also mentioned help from IRC
flussence may be hyperbole, but I really don't feel like clarifying that statement. Sorry.
timotimo flussence: don't warry about it; perhaps you'd like to tell someone you trust in private about it? 19:59
flussence nah, not worth dragging it out
perlpilot flussence: and actually ... if there's something you think is important that doesn't seem to be getting traction, IMHO, that's when it's most important to bring it up. Perhaps not to the channel as a whole, but find someone who may be receptive to talk about it.
cognominal I am reading ShimmerFairy post. It seems that many of his problems are about contingent surface syntax. Example: the kebab case, the deep representation of a variable shoul really be a unique identifer. pseudo-packages/twigil allows variables with otherwise identical surface name, with different scopes to be used without ambiguities.
FreezeburnV Since everyone is "kinda" on the topic of things being broken: I almost jumped off Perl6 work for a year or so due to a compiler bug that I have code which consistently triggers and hasn't gone away from 6.c to 6.d (seems to be something to do with having an if .. elsif .. else chain where the else has a die, and all other branches assign to a variable) 20:00
cognominal we should engage him to think/work on a deep representation and its relationship with the surface representation.
perlpilot cognominal: more like "this change seems random! What's going on?" (that may be me reading-into it though)
hoelzro FreezeburnV: do you have an RT for that? that sounds interesting 20:01
[Coke] FreezeburnV: is there a ticket for this bug?
timotimo is more interested in a piece of golf code than a ticket number, but i suppose you're asking for that by asking for a ticket
FreezeburnV hoelzro, [Coke]: There is no ticket for it. I don't even know how to create one?
timotimo cognominal: i'm not sure i support your interpretation of the kebab case thing 20:02
psch hrm
hoelzro timotimo: even better if the RT ticket includes golfed code =)
cognominal personally, speaking of surface representation I am pissed by Perl6 not yet serious with slangs :)
perlpilot FreezeburnV: Can you reliably reproduce the bug?
hoelzro FreezeburnV: if you can demonstrate some golfed code, I'll make the ticket for you
psch so shimmeryfairy complains about a bug that complete broke rakudo after having pushed code that produced a bug that completely broke rakudo (on the less popular backend, but still)
[Coke] (put the code in a gist, don't paste it here.)
timotimo cognominal: also, shimmerfairy's a she; though i'm not sure if she insists on being correct about that or doesn't care
FreezeburnV perlpilot, hoelzro: I'm not sure if I can make it happen with a smaller chunk of code (I'll try), but I can give you a link to the code (it's all on Github) 20:03
[Coke] psch: Anyone with commit bits has broken something at some point; I'm willing to cut her slack on that front.
perlpilot FreezeburnV: that's an excellent start :)
[Coke] FreezeburnV: for sure, though, if you don't tell us there's a bug, we're probably not going to fix it.
FreezeburnV perlpilot: But I CAN consistently make it happen with the code I have. It's been happening for a month+ now every time
20:03 vendethiel joined
timotimo FreezeburnV: sounds like a good start; if you don't have the energy to follow through, hopefully someone else can isolate the problem 20:04
FreezeburnV [Coke], I brought it up a while ago a bit after release of 6.c. Someone mentioned that it was something known, so I just waited for it to go away. It hasn't, so now I'm goign to be more irritated about it
psch [Coke]: oh, yeah, i know. i mean, i broke a lot myself. in the end i'm just a bit sad about the anger is all
hoelzro any code is better than no code
cognominal timotimo, sorry, I did not notice about her being a she. NOt that make any difference here.
[Coke] FreezeburnV: fair enough.
timotimo FreezeburnV: personally, i'm always glad to hear if MVM_SPESH_DISABLE=foo in the environment keeps the problem "working"
cognominal: right, no difference. just nit-picking
FreezeburnV timotimo, I'll try that
psch [Coke]: as in, i'm trying really hard to step away from the keyboard when i get too emotional - in which ever direction - and it works for me vOv
timotimo FreezeburnV: if that fixes the bug, it's likely my fault. but at least we'll know better where to look 20:05
[Coke] psch: yah, that took me like 20 years to figure out. :)
psch the "completely broken the unpopular backend" code was &val and the allomorphs, fwiw, and i'm mostly annoyed that the jvm fix for that is *still* horrible :/
[Coke] plus communicating over text is always fraught with chances for misinterpretation
FROGGS psch: I share your feelings fwiw 20:06
psch FROGGS: but i'm trying so hard *not* to share them! /o\
hoelzro amen to that (what [Coke] just said)
psch snrk
hoelzro text is hard.
timotimo "val and the allomorphs" really sounds like the title of a cartoon or some movie
cognominal supernova seemed nice.
perlpilot timotimo: heh! I was just thinking that
hoelzro sounds like a band 20:07
FROGGS or something that fits in the marvel universe
timotimo "val" would then probably be the lead, likely a woman?
hoelzro hehe
FROGGS aye
cognominal I sure need to learn about precomp to understand the discussion
FROGGS and probably inhuman
timotimo i'd expect more like a cyborg or other kind of "mixture" 20:08
because of what allomorphs are
geekosaur Val could be either gender (e.g. Val Kilmer) 20:09
FreezeburnV timotimo, MVM_SPESH_DISABLE does not fix the issue
geekosaur ...although maybe that means they;re gender allpmorphs >.>
timotimo hooray, i'm off the hook :)
geekosaur: good example
hoelzro can hear the sigh of relief from thousands of kilometers away 20:10
timotimo .o( timo and the speshialists ) 20:12
vendethiel :D
timotimo++
timotimo oh hey ven
vendethiel hi timotimo :)
FreezeburnV perlpilot, [Coke], hoelzro: Since I don't have time at the moment to golf the code, and the example of things being broken is more than one file, here's a github repository with a snapshot of all the files that, together, cause the command 'perl6 playground.p6' to break. The file 'ERROR_TEXT' has the console output I see: github.com/Freezerburn/perl6_broke...mp_compile 20:14
hoelzro FreezeburnV++
DrForr Yay, I can sit down and try to debug this callback issue. Is there a good way to catch errors inside a callback? All I get is a trace leading up to 'Failed' in the method that's calling my function.
FreezeburnV (note that on its own this will actually do nothing, unless you have SDL2 libraries installed in a place perl6 can find, as it will error out with not finding them. but the point is to hit a compiler error anyway :)
hoelzro DrForr: a callback invoked via NC? 20:15
FreezeburnV Further information: If I actually remove the die call at the end of the BEGIN block in SDL2/Raw.pm6, it seems to make the issue go away. Locally I replace it with a say "[WARN] ..." instead
hoelzro FreezeburnV: are you printing to standard out at compile time?
FreezeburnV hoelzro, No 20:16
DrForr No, it's not NC, as far as I know. This is a Crust app, I'm passing it a reference to my application function.
hoelzro o_O
FreezeburnV Unless you count the die
hoelzro DrForr: ah, ok
FreezeburnV hoelzro, Notably, if you remove the BEGIN block and leave it as an if .. elsif chain at runtime, the compiler still breaks :)
And I'm pretty sure that's the only place that compile-time code is run 20:17
hoelzro compile time code is a fun thing ;)
timotimo BBL
hoelzro role bodies, for example, are run at compile time
timotimo hoelzro: not at composition time? (which is important when you 'does' or 'but' at run-time)
FreezeburnV hoelzro, wellt hen, it's the only time I explicitly request that arbitrary code be run at compile time ;) 20:18
hoelzro timotimo: oh, good point
20:18 musiKk joined
timotimo for most cases that's during a compile time, though 20:18
DrForr I can certaily debug it by modifying Crust's run() method to call exit(), and then moving that down line-by-line until the error happens, but I was wondering if there was a better way.
20:19 uruwi left
hoelzro ah, there's a say() in SDL::Raw2 20:21
so that would run at BEGIN time in sdl2.pm6
[Coke] FreezeburnV: is this the same precomp error that adding a "no precompilation;" in your source will avoid?
FROGGS FreezeburnV: your logger code say()s stuff at compile time
FreezeburnV: and this output makes it into precomp files, and thus invalidating its content 20:22
20:22 tmch joined
FROGGS FreezeburnV: I'd try turning the 'say' into a 'note' 20:23
20:23 lostinfog left
FreezeburnV [Coke], When I was asked to add that last time, it caused the compiler to choke saying it wasn't implemented 20:23
hoelzro changing say to note makes things "work" for me
FROGGS FreezeburnV: will have time tomorrow to run your code
hoelzro now I get: Could not create context: Could not create GL context: GLXBadFBConfig
FreezeburnV FROGGS, I'm pretty sure my logging code doesn't say anything at compile time? It should generate functions that say things? 20:24
FROGGS FreezeburnV: what about that? github.com/Freezerburn/perl6_broke...dl2.pm6#L6
hoelzro NTM say "lib: $lib" in SDL2/Raw.pm6
20:24 Zakkor joined
FROGGS FreezeburnV: a 'use sdl2' runs the mainline of sld2.pm6 at compile time 20:25
hoelzro that precomp-id failure is a bit of a red herring; it's quite LTA
FreezeburnV hoelzro, FROGGS: Wait, so anything at the top level of a module is basically being run at compile time?
hoelzro nods
FROGGS aye
FreezeburnV I guess my Python background has bitten me in the rear then 20:26
Zakkor is it possible to get perl6 auto-complete in emacs?
hoelzro rt.perl.org/Ticket/Display.html?id=127086
^ ticket for LTA-ness
FreezeburnV I assumed that anything outside of a BEGIN block would be run at runtime
FROGGS hoelzro: we can also make it work I think
hoelzro I think we can
FROGGS hoelzro: we dont have to redirect stdout at all me thinks
hoelzro I have some ideas on that ticket, with feedback from nine
perlpilot FreezeburnV: it does run at runtime ... it's just that it's runtime is when the module is used which is at compile time. :) 20:27
s/it's/its/
[Coke] Zakkor: github.com/hinrik/perl6-mode ?
hoelzro use runs at compile time as well
perlpilot er, s:2nd/it's/its/ even
FreezeburnV perlpilot, That isn't confusing at all :P
FROGGS hehe
20:27 user_6532 joined
FROGGS nobody said time travel isnt confusing 20:27
user_6532 Allah is doing
[Coke] I think we're mostly non-emacs here in channel, though. 20:28
user_6532 sun is not doing Allah is doing
FROGGS user_6532: so am I
FreezeburnV Oddly, I'm pretty sure that I've actually been able to say out that map at the top level like that without having the compile issues
user_6532 moon is not doing Allah is doing
[Coke] user_6532: welcome to Perl 6. Try not to act like a bot, or you'll probably get booted.
FreezeburnV But I could be misremembering
user_6532 stars are not doing Allah is doing
[Coke] and, that's a bot. someone retire it? 20:29
FROGGS I dont have a hat at hand
RabidGravy goats are rebelling in the sunset of the cheesemakers
user_6532 planets are not doing Allah is doing
galaxies are not doing Allah is doing
oceans are not doing Allah is doing 20:30
perlpilot #perl6 is becoming closer to #perl
[Coke] I am not a channel op, which should be fixed.
user_6532 mountains are not doing Allah is doing
FreezeburnV hoelzro, FROGGS: Well thanks for the help with that. I'll be more careful in the future about top-level printing. Would be nice to make that not be an issue, or have a better error at least for the moment
user_6532 trees are not doing Allah is doing
mom is not doing Allah is doing
20:30 ChanServ sets mode: +o moritz
stmuk /ignore user_6532 20:30
FROGGS FreezeburnV: aye, will take a look tomorrow
20:30 moritz sets mode: +b *!*18fb3130@*.com/ip.24.251.49.48, user_6532 was kicked by moritz (user_6532))
FreezeburnV FROGGS, 'Preciate it! 20:31
20:31 moritz sets mode: +o [Coke]
FROGGS o7 20:31
perlpilot moritz++
colomon RabidGravy: please say it’s not actually the sunset of the cheesemakers
FROGGS moritz is doing :o)
[Coke] moritz++
Zakkor [Coke]: perl6-mode doesn't seem to provide auto-completion. anywhoo, what editors do you guys use? atom? or, god forbid, vim? 20:32
Skarsnik kate
hoelzro vim
perlpilot Zakkor: vim of course :)
[Coke] Zakkor: vim 20:33
stmuk vim and vim-perl
flussence
.oO( auto-completion usually takes more keystrokes than the thing to complete in perl6 anyway )
20:33 moritz sets mode: -o mohae, moritz sets mode: -o moritz
moritz [Coke]: I think I've now given you permission to op yourself; you can do that with /msg chanserv op #perl6 20:34
20:34 ChanServ sets mode: +o [Coke] 20:35 [Coke] sets mode: -o [Coke]
hoelzro power overwhelming 20:35
timotimo captain kirk is climbing a mountain. why is he climbing a mountain. 20:37
psch to shout dramatically?
DrForr "Go climb a mountain."
timotimo psch: to hug the mountain. to envelop that mountain. 20:38
that song is going to be stuck in my head for hours now
psch oh, it's something on the internet
timotimo yeah
something quite good
it's from some documentary or behind-the-scenes kind of thing with william shatner 20:39
i think the only editing was done to make the speech line up with the beat properly
hoelzro FROGGS: what's your idea for fixing the LTA bug that doesn't involve redirection? 20:41
timotimo how hard would it be to write the stuff we *want* to have into a file instead of a standard output stream?
also, you can fork processes and give them a "shared" file descriptor, not just 0, 1 and 2 20:42
FROGGS hoelzro: I've not looked at the code nor looked at the ticket but cant we use --output from moarvm?
hoelzro I think that should work?
oh, I suggested that in the ticket =P
FROGGS *g*
20:58 _dolmen_ joined 21:02 sufrostico joined, sufrosti1o joined
jnthn [Coke]: Don't think we've a constant/range for the Unicode codepoint space; the last codepoint at present is 0x10FFFF, though there's more unassigned codepoints than assigned ones so far. 21:07
RabidGravy I'm not entirely sure if anyone else but me will find a module for manipulating the Hydrogren drum software data useful but it's a handy test 21:08
MadcapJake RabidGravy, I'd use it! I'm still slowly working on my FluidSynth module 21:09
21:09 QORRiE joined
RabidGravy :) 21:10
jnthn will have a new module for the ecosystem soon :) 21:21
[Coke] jnthn: uhoh. 21:22
ugexe perl6 will finally have its own acme::goatse 21:23
jnthn :P
Nothing so scary :)
21:23 uruwi joined
jnthn
.oO( But now you mention it, that is a gaping hole in our ecosystem... )
21:25
timotimo oh lord 21:27
ugexe hopefully we can do better than a straight perl 5 port 21:28
21:29 TEttinger joined 21:31 Zakkor left
mst perlpilot: the more popular we get, the more kooks there'll be 21:32
21:34 musiKk left
mst moritz: updated [Coke]'s chanserv perms to the standard 21:35
21:38 buharin joined, buharin left 21:39 ely-se joined 21:41 geraud joined
flussence I still remember that one period a few years back where we were invaded *daily* by unwanted traffic from a "free chat" blackberry app written by morons. AFAIK it just scraped well-known irc networks for large channels and connected at random... 21:41
timotimo hahahahaha
yeah 21:42
going to finally see deadpool tonight 21:45
hoelzro "tonight"? isn't it like 22:45 for you?
hoelzro guesses it's a showing before 23:59 then =P 21:46
[Coke] timotimo: I loved that movie.
it was everything I hoped for. :)
timotimo cool :)
ttyl 21:47
21:47 FROGGS left 22:05 sufrostico left, sufrosti1o left
lizmat good *, #perl6! 22:05
sortiz \o lizmat
sjn good *, y'all
lizmat ShimmerFairy: if you're reading this, please contact me by email, or private chat 22:06
sortiz o/ 22:12
sjn o/
sjn lizmat _o \o \o/ o/ o_ 22:13
22:13 FreezeburnV left
hoelzro o/ #perl6 22:16
22:16 sufrostico joined
sortiz CY hoelzro 22:16
22:16 sufrosti1o joined
hoelzro er, that was supposed to be o/ lizmat 22:17
lizmat: leaving a comment on ShimmerFairy's blog might work better; I don't know if she's still reading this channel's contents 22:18
22:20 neilb_ joined
jnthn For anyone doing Docker related stuff, github.com/jnthn/p6-docker-file/ is a (so far as I know complete) Dockerfile parser. Will add support for turing the document object model it makes back into a Dockerfile also. 22:27
Plus some docs :)
RabidGravy jnthn++
AF_UNIX socket support next up so we can interface with docker daemon and we're winning ;-) 22:28
jnthn Edument++ ($dayjob) for giving me the primary reason to get into Docker :)
RabidGravy: Yeah, a Docker::Client is on my hit list after this. 22:29
Async of course :)
RabidGravy it's actually one of the reasons I made JSON::Infer as I made a P5 interface a little over a year ago and it was tedious ;-) 22:30
jnthn The Dockerfile format was a bit more gnarly than I was expecting... :)
But, grammars to the rescue... :)
dalek kudo/nom: 58c45d3 | lizmat++ | src/core/Buf.pm:
Shortcut Blob:D eq/ne Blob:D when comparing self

This test is *very* cheap, and gives us O¹ in that case.
22:31
jnthn Other than that, not much to say about the code. Midly cute use of a parametric role, I guess.
lizmat hoelzro: left a comment, it's awaiting moderation
jnthn m: Grammar.parse('foo') 22:33
camelia rakudo-moar 531495: OUTPUT«P6opaque: no such attribute '$!shared'␤ in block <unit> at /tmp/f5E9VpwNWe line 1␤␤»
jnthn That is an LTA failure mode I tripped up on
Other than that, Perl 6 felt really very nice for this. :) 22:34
22:34 sufrostico left
jnthn (I called my grammar Parser, then tried to use it as Grammar, which is the built-in Perl 6 class) 22:34
22:34 sufrosti1o left
RabidGravy should get XML::Class out this weekend, took somewhat longer than expected as it's full of crack 22:35
lizmat m: dd my $b = Blob.new(1,2,3); dd subbuf-rw($b,2,1) = Buf.new(42); dd $b # jnthn, opinions about this? 22:36
jnthn Well, it is XML... :)
camelia rakudo-moar 531495: OUTPUT«Blob $b = Blob.new(1, 2, 3)␤Blob.new(3)␤Buf $b = Buf.new(1, 2, 42)␤»
lizmat aka, subbuf-rw changing the object from a Blob to a Buf ?
jnthn um, oops? :)
Should we really define subbuf-rw at all on a Blob? 22:37
lizmat it's a result of ~ creating a Buf if the objects are not of the same type
well, that's another thing 22:38
jnthn Sure, but it'd prevent this ;)
lizmat m: dd my $b = Blob.new(1,2,3); dd subbuf-rw($b,2,1) = Blob.new(42); dd $b # a new immutable Blob!
camelia rakudo-moar 531495: OUTPUT«Blob $b = Blob.new(1, 2, 3)␤Blob.new(3)␤Blob $b = Blob.new(1, 2, 42)␤»
lizmat since subbuf-rw is not tested at all in roast, I guess we can change it to just work on Buf:D 22:39
jnthn Yeah, I'd be inclined to do that
lizmat ok, I will do that then, and optimize it a bit: because then we can use nqp::splice :-) 22:40
sortiz Yep, Even I prefer that Blobs remains immutable from P6 land. 22:41
lizmat jnthn: I'm also looking at ~| ~& and ~^ , they also work on Blob:D 22:42
so they should also be on Buf only, I would think?
RabidGravy anyway bed time, toodles everyone!
lizmat toodles RabidGravy 22:43
ah, no, that would only apply to =~| :-)
sortiz lizmat, that creates a new Blob, no? 22:45
lizmat ~| does, =~| would imply changing left hand side, so would need to be a Buf
m: dd Buf.new(1,2,3) =~| Blob.new(4,5,6) # hmmm... that doesn't seem to work :-( 22:47
camelia rakudo-moar 531495: OUTPUT«5===SORRY!5=== Error while compiling /tmp/GheUq2KD1e␤Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~␤at /tmp/GheUq2KD1e:1␤------> 3dd Buf.new(1,2,3) =~7⏏5| Blob.new(4,5,6) # hmmm... that doesn'␤»
jnthn Hmm 22:48
That P5 detector may want toning down some 22:49
*P5ism
lizmat jnthn: so you agree it would be a valid autogenned operator ?
jnthn lizmat: The rule's meant to be productive, yeah 22:50
oh wait
lizmat ?
jnthn Wouldn't it not be ~|= though?
lizmat argh. yes
jnthn It's a prefix infix meta-operator
.oO( Try saying *that* after a few whiskies... )
22:51
lizmat m: dd Buf.new(1,2,3) ~|= Blob.new(4,5,6) # which has other issues :-)
camelia rakudo-moar 58c45d: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at /tmp/WAwUUfgrbb line 1␤␤»
lizmat but I'll have a look at that
sortiz my $a = Blob.new(1,2,3); dd $a ~|= Blob.new(3,4,5);
jnthn m: my $b = Buf.new(1,2,3); $b ~|= Blob.new(4,5,6); say $b
camelia rakudo-moar 58c45d: OUTPUT«Buf:0x<05 07 07>␤»
sortiz m: my $a = Blob.new(1,2,3); dd $a ~|= Blob.new(3,4,5);
camelia rakudo-moar 58c45d: OUTPUT«Blob $a = Blob.new(3, 6, 7)␤»
jnthn lizmat: Don't think I'd expect it to work without a Scalar container there, fwiw 22:52
lizmat ah, duh
maybe I'm too tired...
jnthn :)
lizmat jnthn: finally, on ~| and friends, would you be against adding a candidate that would take an Int ?
m: my $b = Buf.new(1,2,3); $b ~&= 0x77; dd $b 22:53
camelia rakudo-moar 58c45d: OUTPUT«Cannot use a Buf as a string, but you called the Stringy method on it␤ in block <unit> at /tmp/Wo4_hHqHYd line 1␤␤»
lizmat aka, allowing ^^
which would apply to the whole Buf 22:54
m: my $b = Buf.new(1,2,3); $b ~&= Buf.new(0x77 xx 3); dd $b # the equivalent
camelia rakudo-moar 58c45d: OUTPUT«Buf $b = Buf.new(1, 2, 3)␤» 22:55
sortiz m: my $b = Buf.new(1,2,3); $b ~&= Buf.new(0x77 xx $b.elems); dd $b
camelia rakudo-moar 58c45d: OUTPUT«Buf $b = Buf.new(1, 2, 3)␤»
lizmat yeah, but the int case could be highly optimized
sortiz lizmat, I like it.
22:55 dh7320 joined
lizmat especially in combination with = 22:55
sortiz Sure, only checking the semantic.
jnthn Not quite sure about it auto-extending. Hmmm...
lizmat jnthn: internally, it wouldn't auto-extend, only semantically 22:56
jnthn I guess I'm worrying a tad about it 'cus $buf ~= 0x42 would be expected to append one element... 22:57
sortiz m: my $b = Buf.new(1,2,3,4,5,6); $b ~&= Buf.new(0x2 xx $b.elems); dd $b
camelia rakudo-moar 58c45d: OUTPUT«Buf $b = Buf.new(0, 2, 2, 0, 0, 2)␤»
22:57 kurahaupo joined 22:58 kurahaupo left
lizmat perhaps the alternative would be to specify a list, like in allocate? 22:58
jnthn That is, I'm concerned about a single Int meaning a 1-elem Buf in some cases, and distributing in others.
lizmat m: my $b = Buf.new(1,2,3); $b ~&= (0x77,); dd $b
camelia rakudo-moar 58c45d: OUTPUT«Cannot use a Buf as a string, but you called the Stringy method on it␤ in block <unit> at /tmp/Ki6QaGu1CR line 1␤␤»
lizmat which would allow you to specify a repeating pattern, like with allocate?
jnthn Do you have a concrete use-case for it, ooc?
sortiz jnthn, Applying a mask to an image. 22:59
lizmat well, I could see a case for 32bit Buf truncating values to 16bit by
(0,0,0x77,0x77) 23:00
oops, that wouldn't work
that would just be 0x7777
jnthn sortiz: Good one :) 23:01
lizmat having a 2dim array in there, and needing to zero out one element in each dimension ? 23:02
but yeah, generally masking stuff...
sjn doing XOR on a Buf, perhaps? # guessing 23:03
23:04 Herby_ joined
Herby_ Evening, everyone! 23:04
dalek kudo/nom: 08ad4b6 | lizmat++ | src/core/Buf.pm:
subbuf-rw only works on Buf:D

See irclog.perlgeek.de/perl6/2016-02-26#i_12106997
  - Since we're now using a Buf only, we can use nqp::splice
  - This means no longer making copies in memory
  - so this should be significantly faster for bigger Bufs
jnthn lizmat: Think I'll need to sleep on that last one. Something bothers me a bit about it, but too tired to put my finger on what...
lizmat sure... 23:05
jnthn (Not the commit you just did, the distrbuting Int one)
lizmat I will first optimize the current cases
yeah, I got that :-)
jnthn :)
lizmat jnthn: finally, would adding an infix ~|= cause problems ? 23:06
I guess I would need to add that to the grammar and various other places as well, right ? 23:07
I guess I should ask after a good night's sleep :-)
23:07 sevvie left
jnthn Aye :-) 23:11
23:12 dh7320 left
jnthn implements a few bits of Dockerfile generation, then decides it's enough code for today :) 23:12
sortiz lizmat, we have now enough "building block", thought 23:15
Even the Int case is only sugar.
lizmat sortiz: it's not only sugar, it could be implemented to be 2x as fast 23:16
(that is, the single int case)
it would also be much more memory friendly
23:17 Herby_ left
lizmat try ~|= a 100K buffer, currently it would create 100K to mask with, and a 100K result buffer 23:17
sortiz I like it! but if causes problems, I will not fight
23:19 ely-se left
sortiz Right now the common cases Buf ~| Buf are slow. 23:19
lizmat yeah, and they can be much faster... 23:20
sjn reads through S17
lizmat conceptual ~=:
sortiz Yeah, with a few new ops.
lizmat multi sub infix:<~=>(Buf:D \a, Blob:D \b) {
my $a := nqp::decont(a);
nqp::splice($a, nqp::decont(b), nqp::elems($a), 0);
}
sortiz nqp::splice rulez 23:22
lizmat yup
23:23 Zakkor joined
Zakkor hey guys, i made a wallpaper, maybe you'll like it - u.teknik.io/SdupS.png 23:23
Skarsnik nice 23:24
lizmat nice, but maybe more for #perl / Perl 5 ?
I mean, I love the camel (we actually have a large one :-) 23:25
mst if it was for perl5 it'd be a raptor
sjn m: $*SCHEDULER.cue: in => 3, { say "3 seconds passed" }; # shouldn't this give a warning?
camelia ( no output )
23:26 Zakkor left, telex joined
lizmat m: $*SCHEDULER.cue: in => 3, { say "3 seconds passed" }; sleep 5 23:26
camelia rakudo-moar 08ad4b: OUTPUT«3 seconds passed␤»
lizmat sjn: if you're falling off the end of a program, you will take all threads down with you, including the one in which you scheduled stuff to happen 23:27
sjn yeah, that's fine, but if the program exits with stuff on the scheduler...
a warning would be nice, wouldn't it?
lizmat a warning could definitely be in order... stopping it would be... troublesome 23:28
jnthn Exiting with stuff on the scheduler is normal enough
Especially anything repeatedly scheduled
lizmat well, maybe don't warn for stuff repeatedly scheduled ?
jnthn In general, though, you a) don't want to use the scheduler directly 99% of the time, and b) should have something waiting on the completion or failure of things you care about 23:29
sjn sure, let's give the n00bs (like myself) hints about that :)
lizmat sjn: it would just be pretty hard to weed out all of the false positives... 23:30
sortiz jnthn, at the nqp level, $i = $i + 1, is optimized or is converted to nqp::add_i($i,1) ? 23:31
jnthn sjn: doc.perl6.org/language/concurrency clearly lists Scheduler as a low-level API
sortiz: If $i is declared as a native int, certainly 23:32
sortiz *$i = nqp::add_i($i,1)
jnthn If it is then yes, it'll compile into the add op
Plus "...where possible, avoid the lower level concurrency APIs (i.e. Thread and Scheduler ) and use the higher-level interfaces" right in the opening section
sortiz I was thinking in a missing nqp::inc_i($i)... 23:33
lizmat sortiz: I'm pretty sure that's on jnthn's radar :-)
jnthn MoarVM does have an inc_i op already 23:34
Not sure if the optimizer spits it out yet, but I think we'll do it that way
23:34 yqt left
jnthn Pretty sure the JVM would already be nailing that one :) 23:34
Ah, and by optimizer I mean "the one in MoarVM" 23:35
lizmat m: use nqp; my int $i = 42; nqp::inc_i($i); dd $i # so not exposed at NQP level yet ? 23:36
camelia rakudo-moar 08ad4b: OUTPUT«===SORRY!===␤No registered operation handler for 'inc_i'␤»
jnthn lizmat: No, but I think we won't expose it at NQP level...it's a tad awkard
sortiz In loops is the more common op. So even with natives $i = $i + 1 is somewhat expensive.
lizmat, I search for it. 23:37
jnthn lizmat: I think we'll just let spesh do the transform
sortiz Transform to machine INC ? 23:38
23:39 khw joined
lizmat jnthn: are you saying that native $i++ is already handled most efficiently ? 23:39
(if that's the case, there's some stuff to do in core :-)
sortiz That is the cuestion, I suspect No... 23:40
nine lizmat: I seem to remember either ++$i or $i++ getting optimized now 23:41
lizmat benchmarking a simple loop with $a = $a + 1 or $a++ doesn't perform differently afaics
nine: for natives? it used to be for Int, I know 23:42
nine lizmat: yes for natives
lizmat: commit 2d98de93ba16886ab7567d27d135a54c7aa657e3 23:44
lizmat cool.. will take care of that tomorrow then :-)
post and prefix ?
nine also commit 1f34b78a3b5da91f72476e8e17c8343b84bbb606
enable ++ native optimization at level >= 3
lizmat nine: those commits don't seem to have anything to do with increment/decrement? 23:46
just with using an int as a conditional in a loop ?
jnthn lizmat: No, we can do better, but I'm saying we should deal with it in MoarVM 23:51
(As in, deal with the rest of it)
lizmat ok