Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2016-02-26

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:06 sufrostico Hi .o/
00:10 hoelzro hello!
00:13 n0tjack joined #perl6
00:15 sufrostico hey, anyone willing to help with this error: "This representation (VMArray) cannot unbox to a native string"
00:17 timotimo can you get a detailed backtrace when you perl6 --ll-exception ?
00:19 sufrostico http://pastebin.com/1tGXAsNi
00:21 sufrostico I'm working on a library binding with NativeCall
00:26 iloveunix joined #perl6
00:28 virtualsue joined #perl6
00:29 abaugher joined #perl6
00:30 Actualeyes joined #perl6
00:58 autarch joined #perl6
01:08 sufrostico Problem is I can't find what a VMArray is anywhere or how to use it
01:10 timotimo sufrostico: VMArray is behind arrays in perl6, you can search for things that are repr VMArray in the core
01:12 timotimo things that directly "is repr VMArray" are Buf, array (lowercase), Uni and the different kinds of normalized unicode buffers, the IterationBuffer
01:12 timotimo but everywhere that nqp::list is used, that's a VMArray, too
01:12 timotimo Blob, too
01:14 n0tjack joined #perl6
01:14 sufrostico mmm, thanks
01:14 hankache joined #perl6
01:14 hankache hola #perl6
01:14 timotimo holankache
01:14 hankache holatimo
01:15 hankache :)
01:15 timotimo hmm, maybe "greetimo"?
01:15 hankache hehe indeed greetimo!
01:16 hankache or greatimo
01:16 hankache timorning everyone
01:16 hankache better one ^^
01:23 sufrostico hola!
01:24 sufrostico timotimo: thanks, I't was a stupid error... but understanding what a VMArray (~ bufs) make everything clear XD
01:31 grondilu joined #perl6
01:32 timotimo glad to hear it
01:34 KotH joined #perl6
01:45 sufrostico left #perl6
01:53 zpmorgan joined #perl6
01:53 adu timotimo!
01:54 timotimo adu!
01:54 adu timotimo: how goes?
01:54 timotimo things are all right; how about you?
01:54 adu good, had a tiny power outage yesterday
01:55 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 :)
01:55 timotimo not bad :)
01:56 timotimo i wish i was a genius :P
01:56 adu me too
01:57 timotimo i'm not sure i'm connecting the right person with your nickname
01:59 timotimo so what exactly do i remember you from?
02:03 retupmoca joined #perl6
02:07 araujo_ joined #perl6
02:09 BenGoldberg joined #perl6
02:16 adu timotimo: I'm the guy who wrote C::Parser
02:18 timotimo oh!
02:18 timotimo could it be you haven't been around the channel for some time?
02:19 adu yes, I've been coming here since 2011-ish
02:19 timotimo no, i mean
02:19 timotimo recently i don't think i've seen you participate
02:19 timotimo but i may be wrong
02:20 adu timotimo: yeah, I suck
02:20 adu timotimo: work is busy, my wife wants a house, you know how it is
02:21 adu timotimo: are there bugs in C::Parser I should know about?
02:22 timotimo oh, don't beat yourself up about it :)
02:22 timotimo 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
02:22 adu timotimo: well, if you find any, let me know by making a formal issue at https://github.com/andydude/p6-c-parser
02:23 adu yeah, I remember someone was interested in a C::Parser / NativeCall baby
02:24 n0tjack joined #perl6
02:24 timotimo right :)
02:27 adu timotimo: my thing is universal trans-compilation from any language to any language
02:27 adu I felt C::Parser was a good place to start :)
02:34 timotimo oh, hehe
02:47 ilbot3 joined #perl6
02:47 Topic for #perl6 is now »ö« Welcome to Perl 6! | https://perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:,  or /msg camelia p6: ... | irclog: http://irc.perl6.org or http://colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
02:54 BenGoldberg joined #perl6
03:01 timotimo anyway, i'm off to bed!
03:01 timotimo been up way too long already
03:16 xiaomiao joined #perl6
03:19 bitmap joined #perl6
03:30 khagan joined #perl6
03:31 Herby_ joined #perl6
03:31 Herby_ Evening, everyone!
03:32 Actualeyes1 joined #perl6
03:37 Herby_ \o
03:44 vendethiel joined #perl6
03:58 noganex joined #perl6
04:06 n0tjack joined #perl6
04:13 cbk Hello Herby_
04:14 * timotimo not really able to sleep
04:17 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:22 Herby_ brownie tree?
04:23 timotimo almost
04:24 perturbation joined #perl6
04:29 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:30 camelia rakudo-moar f25d41: OUTPUT«supply 2␤supply 3␤supply 4␤44␤»
04:30 skids whenever is also lexotic, not just emit and done?
04:32 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.
04:33 timotimo skids: seems like
04:34 skids I'll doc it that way, hopefully there isn't a nuancy difference.
04:38 dalek perl6-most-wanted: b21c481 | (Sevvie' Rose)++ | most-wanted/modules.md:
04:38 dalek perl6-most-wanted: Added WIP for Math::TrulyRandom
04:38 dalek perl6-most-wanted:
04:38 dalek perl6-most-wanted: It's not perfect yet.
04:38 dalek perl6-most-wanted: review: https://github.com/perl6/perl6​-most-wanted/commit/b21c481173
04:38 dalek perl6-most-wanted: a001ce0 | timo++ | most-wanted/modules.md:
04:38 dalek perl6-most-wanted: Merge pull request #19 from sevvie/patch-1
04:38 dalek perl6-most-wanted:
04:38 dalek perl6-most-wanted: Added WIP for Math::TrulyRandom
04:38 dalek perl6-most-wanted: review: https://github.com/perl6/perl6​-most-wanted/commit/a001ce0c59
04:40 sevvie joined #perl6
04:40 timotimo good god could the profile output file please stop growing?
04:42 timotimo there's no way i'll get this to work in a browser ... it's already at ~150 megabytes
04:48 dalek perl6-most-wanted: c6bf90b | (Aurelio Sanabria)++ | most-wanted/bindings.md:
04:48 dalek perl6-most-wanted: Update bindings.md
04:48 dalek perl6-most-wanted:
04:48 dalek perl6-most-wanted: Add work in progress module for the snowball compiler
04:48 dalek perl6-most-wanted: review: https://github.com/perl6/perl6​-most-wanted/commit/c6bf90bdbc
04:48 dalek perl6-most-wanted: f1431b3 | azawawi++ | most-wanted/bindings.md:
04:48 dalek perl6-most-wanted: Merge pull request #18 from Sufrostico/patch-1
04:48 dalek perl6-most-wanted:
04:48 dalek perl6-most-wanted: Update bindings.md (wip: snowball)
04:48 dalek perl6-most-wanted: review: https://github.com/perl6/perl6​-most-wanted/commit/f1431b3af6
04:49 timotimo that moment when a single removed redundant "return" makes your program run in 9.3s instead of 11.2s
05:09 flussence why is return so expensive? :(
05:10 timotimo it goes through a whole bunch of hoops
05:26 Roamer` joined #perl6
05:38 dalek specs: 33eaffe | skids++ | S17-concurrency.pod:
05:38 dalek specs: Update Supply introduction and method docs for serial supplies
05:38 dalek specs:
05:38 dalek specs:    Also some Channel clarifications.
05:38 dalek specs: review: https://github.com/perl6/specs/commit/33eaffeb78
05:38 dalek specs: cc534c4 | skids++ | S17-concurrency.pod:
05:38 dalek specs: A start on design doc for react/supply blocks and whenever clauses
05:38 dalek specs:
05:38 dalek specs:   This will need quite more work.
05:38 dalek specs: review: https://github.com/perl6/specs/commit/cc534c4031
05:42 skids Hopefully I didn't leave any hanging pod tags because I'm dead tired and heading to bed.
05:45 Cabanossi joined #perl6
06:10 ka joined #perl6
06:39 n0tjack joined #perl6
06:39 Biplab joined #perl6
06:42 agent008 joined #perl6
06:53 CIAvash joined #perl6
07:16 _mg_ joined #perl6
07:28 vendethiel joined #perl6
07:28 sjoshi joined #perl6
07:39 nakiro joined #perl6
07:41 FROGGS joined #perl6
07:44 firstdayonthejob joined #perl6
07:46 krunen joined #perl6
07:51 firstdayonthejob joined #perl6
07:55 RabidGravy joined #perl6
07:58 Ven joined #perl6
07:59 Ven joined #perl6
08:01 Ven_ joined #perl6
08:04 iloveuni` joined #perl6
08:14 darutoko joined #perl6
08:18 dh7320 joined #perl6
08:23 vendethiel joined #perl6
08:24 ely-se joined #perl6
08:29 zakharyas joined #perl6
08:31 [Tux] est            22.295
08:31 [Tux] test-t          11.889
08:31 [Tux] csv-parser      49.385
08:32 moritz skids++
08:32 RabidGravy m: role F {}; class G is F {}; # is it possible to prevent *inheritance* from a role like that?
08:32 camelia rakudo-moar f25d41: ( no output )
08:33 RabidGravy I actually thought that blew up already but apparently not
08:36 moritz no, it auto-puns a class
08:36 moritz and you can prevent it by adding a stubbed method to the role
08:37 moritz 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␤»
08:37 moritz of course, also proper consumption must also provide that method
08:37 moritz m: role F { method dummy { ... } }; class G is F { method dummy { } }
08:37 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␤»
08:37 moritz m: role F { method dummy { ... } }; class G does F { method dummy { } }
08:37 camelia rakudo-moar f25d41: ( no output )
08:37 RabidGravy yeah, that won't fly in this case
08:38 RabidGravy I'll catch it at the point it causes a problem
08:39 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␤»
08:39 RabidGravy Hmm I'm seeing something different
08:42 abraxxa joined #perl6
08:44 ab6tract joined #perl6
08:45 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.
08:46 sortiz \o #perl6
08:47 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 abraxxa sortiz: are you able to run the DBIish tests with 2016.02?
08:47 abraxxa everything seems to hang with the new release
08:48 abraxxa strace shows again epoll_wait(5,
08:48 abraxxa last time that was vars.pm of my perlbrewed Perl 5.22.1
08:49 sortiz abraxxa, Yes, I'm installing oracle to be able to run the full suite.
08:49 wamba joined #perl6
08:49 abraxxa sortiz: I have all db's installed
08:49 abraxxa Oracle is quite easy using docker
08:50 abraxxa lsof shows this: moar    23862 ahartmai    5u  0000   0,11        0    6962 anon_inode
08:50 sortiz abraxxa, It is hanging with all databases?
08:50 abraxxa it's hanging with almost everything, panda, p6doc
08:51 sortiz Ah, that should be that some repo is locked.
08:51 sortiz So any other precomp or install must wait.
08:54 abraxxa what can I do to fix it? delete the precomp dir?
08:55 nine Just wait till its unlocked
08:55 abraxxa nine: hi!
08:55 nine Assuming you still have some perl6 process running?
08:55 abraxxa i'm waiting since yesterday...
08:55 abraxxa ah, there where two hanging processes from two days ago!
08:56 abraxxa 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
08:56 abraxxa RabidGravy: I've deleted the whole dir
08:57 abraxxa can we do something to e.g. print a warning if a lock is active, maybe one after a slight delay?
08:58 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:59 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 abraxxa sortiz: can run the tests again, ping me if I can be of help
08:59 dakkar joined #perl6
08:59 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
09:00 abraxxa have a meeting now, later!
09:01 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 Juerd joined #perl6
09:16 vendethiel joined #perl6
09:22 moritz sortiz++
09:28 rindolf joined #perl6
09:28 _mg__ joined #perl6
09:32 Ven joined #perl6
09:33 [particle] joined #perl6
09:33 luis` joined #perl6
09:34 Some-body_ joined #perl6
09:34 andrewalker_ joined #perl6
09:38 sortiz moritz, DBIish is in need of some care, I have intention and tuits.
09:40 moritz sortiz: please consider yourself the maintainer :-)
09:43 abraxxa back
09:44 abraxxa 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 pierrot joined #perl6
09:45 sortiz moritz, Thanks, I hope to live up to the responsibility. :)
09:46 lizmat good *, #perl6!
09:47 sortiz \o lizmat
09:47 RabidGravy joined #perl6
09:49 nine abraxxa: I concur.
09:50 RabidGravy is the best way to test whether an attribute has a type constraint "$attr.type =:= Mu" or is there a better way?
09:52 RabidGravy 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
09:53 RabidGravy wahay!!
09:55 n0tjack joined #perl6
09:56 abraxxa any good pointers on Perl 6 POD docs/tutorials?
09:59 ocbtec joined #perl6
10:01 abraxxa Too few positionals passed; expected 2 arguments but got 1
10:01 abraxxa in block <unit> at printer-react.pl6 line 20
10:01 tmch joined #perl6
10:01 abraxxa not very helpful message
10:01 abraxxa that's the code https://github.com/retupmoca/P6-Net-AMQP​/blob/master/examples/printer-react.pl6
10:02 abraxxa my line 20 is its line 14
10:05 abraxxa seems to come from the empty declare-queue call
10:07 Hotkeys abraxxa: declare-queue requires two parameters and you've only given it one it seems
10:09 Hotkeys I lied
10:09 Hotkeys I looked at the wrong function
10:09 abraxxa Hotkeys: where do you see that it requires two? https://github.com/retupmoca/P6-Net-AMQP/​blob/master/lib/Net/AMQP/Channel.pm6#L134
10:09 abraxxa oh
10:09 abraxxa $name seems to be required
10:09 abraxxa if not by declare-queue then by Net::AMQP::Queue.new
10:10 moritz how does one declare a queue where the AMQP broker creates a name? pass an empty string?
10:11 abraxxa Queue specifies has $.name; but submethod BUILD uses $!name
10:11 abraxxa has $.name;
10:11 abraxxa https://github.com/retupmoca/P6-Net-AMQP​/blob/master/lib/Net/AMQP/Queue.pm6#L23
10:11 abraxxa moritz: yes, that's what I was trying to do
10:11 abraxxa just implementing a tail -f on an exchange
10:11 moritz "has $.name" is just "has $!name" + accessor + BUILD magic
10:12 abraxxa moritz: but wouldn't you use either a) the accessor or b) the public var?
10:12 abraxxa or is my memory wrong and there is no 'public var'?
10:12 moritz abraxxa: there is no public war
10:12 moritz *var
10:12 abraxxa haha
10:12 abraxxa ok
10:12 moritz abraxxa: so for writing, you must use the private attribute
10:13 abraxxa but there is no :D anywhere, so why is the name required?
10:14 abraxxa 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
10:14 moritz what does the error message say?
10:14 abraxxa --ll-exception doesn't help either
10:14 abraxxa Too few positionals passed; expected 2 arguments but got 1
10:14 abraxxa in block <unit> at printer-react.pl6 line 20
10:15 abraxxa I still don't get why the name is required
10:15 abraxxa i see no difference between name and the other BUILD params
10:16 moritz me neither; I suspect the error comes from somewhere else
10:16 dalek rakudo/nom: a1fe1b0 | lizmat++ | src/core/Buf.pm:
10:16 dalek rakudo/nom: Streamline Blob ~ Blob
10:16 dalek rakudo/nom:
10:16 dalek rakudo/nom: Only a few percent in CPU for 10K buffers, but hopefully much better
10:16 dalek rakudo/nom: from a memory management point of view, because it allocates the
10:16 dalek rakudo/nom: resulting buffer only once.  Also, nqp::slice already returns the
10:16 dalek rakudo/nom: right thing, so don't bother returning the resulting buffer explicitely.
10:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a1fe1b04e4
10:18 stmuk maybe widely known but I seemed to have missed http://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
10:18 yoleaux 18 Feb 2016 01:39Z <timotimo> stmuk: it looks like there's three files in euler that do failure ...
10:18 brrt joined #perl6
10:20 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:22 lizmat stmuk: I wasn't sure this was supposed to be public knowledge already
10:23 llfourn cool. A book.
10:23 moritz \o/
10:24 abraxxa moritz: is there anything I can do to improve the error message?
10:24 stmuk lizmat: its a public website :)
10:26 moritz abraxxa: you could patch rakudo :-)
10:26 abraxxa moritz: pointers where to look?
10:26 moritz abraxxa: no idea, sorry
10:27 abraxxa moar is at 100% cpu only printing one message very few seconds so it seems it's unusable at this time
10:29 llfourn abraxxa: do you happen to be on a Mac?
10:29 abraxxa llfourn: nope, Ubuntu 15.10 64bit
10:29 llfourn ok nvm then :)
10:29 llfourn there are certainly some rough patches with concurrency stuff
10:31 stmuk also http://conferences.oreilly.com/oscon/ope​n-source-us/public/schedule/detail/49373
10:31 abraxxa the non-react code uses 100% cpu as well: https://github.com/retupmoca/P6-Net-A​MQP/blob/master/examples/printer.pl6
10:33 llfourn hmm didn't jnthn write a new AMQP thing while doing advent calendar post?
10:33 moritz llfourn: no, that was STOMP
10:33 llfourn ah
10:33 moritz which is a much simpler protocol, afaict
10:33 llfourn abraxxa: try stomp :P
10:33 abraxxa we use RabbitMQ
10:34 moritz iirc there's a STOMP plugin for RabbitMQ
10:34 moritz though I'd love to see Net::AMQP working too, because we use lots of AMQP at $work
10:38 brrt odd how message queues have basically appaeared as standard tools in the last few years
10:38 brrt good thing, too, but still odd
10:38 abraxxa moritz: it works, it just takes one cpu core about 5-10 seconds to deliver one message ;(
10:39 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?
10:40 abraxxa strace wasn't helpful as it seems to not handle threads
10:40 RabidGravy "test it with 2016.02"
10:41 RabidGravy what would I be testing for?
10:44 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 domidumont joined #perl6
10:45 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:47 llfourn fair 'nough :)
10:49 RabidGravy just doing a rakudobrew to check on the other machine
10:49 llfourn RabidGravy++
10:50 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
10:52 dalek rakudo/nom: 6b4a94e | lizmat++ | src/core/Buf.pm:
10:52 dalek rakudo/nom: Streamline Blob:D eqv Blob:D
10:52 dalek rakudo/nom:
10:52 dalek rakudo/nom: Make it 5x as fast for identical blobs/bufs, make it almost infinitely
10:52 dalek rakudo/nom: faster when eqving with itself.
10:52 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6b4a94e3e9
10:52 donaldh joined #perl6
10:53 stmuk does lowering the thread pool improve Net::AMQP performance I wonder?
10:54 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:55 llfourn ah a guy brought one into sydney.pm last week to do his presentation. Pretty cool.
10:56 stmuk is that NUC-ish form factor?
10:56 RabidGravy yeah, basically a small cube
10:57 * RabidGravy goes back to thinking over increasingly ingenious ways of breaking this module
11:01 espadrine joined #perl6
11:05 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:07 adu joined #perl6
11:08 dalek rakudo/nom: fe14385 | lizmat++ | src/core/Buf.pm:
11:08 dalek rakudo/nom: Abstract blob content equality into .SAME method
11:08 dalek rakudo/nom:
11:08 dalek rakudo/nom: Allowing Blob:D eqv Blob:D to become almost a mathematical formula
11:08 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fe143858ff
11:08 RabidGravy and indeed it is tested for at https://github.com/retupmoca/P6-Net​-AMQP/blob/master/t/15-queue.t#L31
11:08 vendethiel joined #perl6
11:14 ab6tract joined #perl6
11:23 dalek rakudo/nom: 1969a42 | lizmat++ | src/core/Buf.pm:
11:23 dalek rakudo/nom: Make Blob:D eq/ne Blob:D about 250x faster
11:23 dalek rakudo/nom:
11:23 dalek rakudo/nom: - for two 10K identical buffers, faster still for inequal buffers
11:23 dalek rakudo/nom: - no longer allocates copies of both buffers, so more memory friendly
11:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1969a42525
11:24 ab6tract lizmat++ :D
11:27 brrt cool, lizmat++
11:29 Ven joined #perl6
11:33 SCHAAP137 joined #perl6
11:38 abraxxa RabidGravy: just installed everything
11:39 RabidGravy right, so declare-queue("") does give you the auto-generated name
11:43 abraxxa ah!
11:43 abraxxa DOCS! ;)
11:48 RabidGravy PATCH!
11:48 RabidGravy ;-p
11:50 RabidGravy for reference Net::AMQP is not working at all on the very latest rakudo, I suspect something gone broke in subbuf
11:51 psch ...well that was silly :l
11:51 psch err
11:51 psch my oversight yesterday, that is :)
11:52 psch turns out computeInterop binds an empty Hash to JavaHOW.%!methods, and not the actual methods...
11:52 blunder joined #perl6
11:52 RabidGravy lizmat, is it possible that in some recent changes you have unwittingly altered the behaviour of Buf.subbuf($from, $len);
11:52 RabidGravy ?
11:53 * lizmat checks
11:53 lizmat RabidGravy: that feels unlikely, as I haven't touched subbuf (yet)
11:54 lizmat 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
11:55 lizmat my last changes to subbuf were on 14 Nov last year
11:55 vendethiel joined #perl6
11:55 RabidGravy yeah it has worked since then
11:55 lizmat any idea on when it started to fail ?
11:56 lizmat I mean, something you can m: here or gist for me to double check ?
11:57 RabidGravy it's buried deep in the payload decoding of Net::AMQP, 'ang on let me golferize
11:59 dalek rakudo/nom: e3342da | lizmat++ | src/core/Buf.pm:
11:59 dalek rakudo/nom: Make Blob:D cmp/lt/gt/le/ge Blob:D 3800x faster
11:59 dalek rakudo/nom:
11:59 dalek rakudo/nom: - for two 10K identical buffers, faster still for inequal buffers
11:59 dalek rakudo/nom: - implement Blob:D.COMPARE helper method
11:59 dalek rakudo/nom: - which checks number of elements before checking contents
11:59 dalek rakudo/nom: - no longer allocates copies of both buffers, so more memory friendly
11:59 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e3342da00e
11:59 lizmat please note that all of these changes I make, are spectest clean
11:59 lizmat so if I borked something, we need more tests  :-)
12:01 sammers joined #perl6
12:06 lizmat argh, subbuf-rw is untested :-(
12:12 kaare_ joined #perl6
12:18 RabidGravy lizmat, it's actually the bahviour of unpack that shagged it
12:18 lizmat ah, I borked unpack ?
12:19 lizmat RabidGravy: did I by any chance bork Blob.list ?
12:20 lizmat or Blob.append ?
12:21 RabidGravy no, the code in question is doing "my $len = $data.unpack('N'); ... my $tablebuf = $data.subbuf(4, $len);"
12:23 lizmat use experimental :pack; dd pack("N",4200).unpack("N")
12:24 lizmat m: use experimental :pack; dd pack("N",4200).unpack("N")
12:24 camelia rakudo-moar e3342d: OUTPUT«slip(4200,)␤»
12:24 lizmat perhaps the 1 is for the number of elements returned ?
12:24 RabidGravy the return from unpack was subtly changed in the 2afe79fa
12:24 RabidGravy yeah it is
12:25 RabidGravy before it didn't do that
12:25 dalek rakudo/nom: 531495a | lizmat++ | src/core/Buf.pm:
12:25 dalek rakudo/nom: Revert "Remove some superfluous returns"
12:25 dalek rakudo/nom:
12:25 dalek rakudo/nom: This reverts commit 2afe79fa61925a847d78aeab8a6b31ab29db1f3c.
12:25 dalek rakudo/nom:
12:25 dalek rakudo/nom: Apparently, not so superfluous, as RabidGravy++ found out
12:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/531495a018
12:26 lizmat RabidGravy: could you verify this fix ?
12:26 RabidGravy lizmat++
12:27 RabidGravy 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
12:28 lizmat 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 lizmat (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 #perl6
12:31 * 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 #perl6
12:32 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:33 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 #perl6
12:35 * brrt thinks we should be able to eventually compile pretty tight code out of that
12:35 lizmat brrt: yeah, my thought exactly  :-)
12:35 * lizmat hopes the current work will make that easier
12:36 lizmat 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"␤"FE​TCH"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤"FETCH"␤42␤»
12:40 RabidGravy lizmat++ # can confirm that fixes
12:40 RabidGravy lizmat++
12:41 sufrostico joined #perl6
12:41 Skarsnik joined #perl6
12:41 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 #perl6
12:43 sortiz \o Skarsnik
12:43 Skarsnik Fun fact I originaly put everything as Num x)
12:44 sortiz I'm working on it, don't worry. :-)
12:49 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:51 RabidGravy all working fine with "2016.02-36-g531495a built on MoarVM version 2016.02"
12:52 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 #perl6
12:53 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 ?
12:53 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?
12:53 lizmat that doesn\'t feel right
12:53 lizmat m: dd my $b = Blob.new(1,2,3); dd subbuf-rw($b,2,1) = Blob.new(42); dd $b
12:53 camelia rakudo-moar 531495: OUTPUT«Blob $b = Blob.new(1, 2, 3)␤Blob.new(3)␤Blob $b = Blob.new(1, 2, 42)␤»
12:54 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:55 n0tjack joined #perl6
12:55 sortiz Skarsnik, I'm busy fixing some some details in the test suite and in the driver :-)
12:55 * ab6tract just noticed http://doc.perl6.org/language/typesystem
12:56 ab6tract sad page :(
12:56 Skarsnik x)
12:56 Skarsnik true
12:56 lizmat ab6tract: PR's are welcome!
12:56 abraxxa i have to catch my train, bye!
12:56 sortiz Skarsnik, SQLite's FLOAT is in fact an IEEE-745 double. Perfect for Num.
12:57 ab6tract lizmat: i have a commit bit for doc, and have pushed some updates before. but short on tuits today/lately :S
12:57 ab6tract in other news, sereal headers are now validating :D
12:58 lizmat ab6tract++   # looking forward to be able to support Sereal in Perl 6!
13:01 ab6tract lizmat: looking forward to getting us there :)
13:01 ab6tract ooc, do we have a way to throw custom argument type exceptions? in other words, to provide a custom exception object?
13:02 lizmat class X::Foo is Exception { method message() { "foo" } } # something like this ?
13:02 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
13:03 psch m: class Blergh is Exception { }; try Blergh.new.throw; $!.perl.say
13:03 camelia rakudo-moar 531495: OUTPUT«Blergh.new␤»
13:03 ab6tract lizmat: more or less, but to send a specific custom one when a call-site sends a bad argument to a sub
13:03 ab6tract i'm not sure it's actually useful. i was just curious
13:03 psch ab6tract: "bad argument"?  like, type mismatch..?
13:04 lizmat no, I think you'll always wind up in the X::TypeCheck family
13:04 ab6tract psch: yes. in particular runtime type mismatches based on subsets/where clause
13:04 psch or do weird proto hackery
13:05 ab6tract ok. that's fine, really.
13:05 RabidGravy Mmmmm proto-hackery
13:05 psch like, proto f(|c) { if c.List[0] > 10 { X::Custom.new.throw } else { {*} } }
13:05 psch or something, obviously untested.. :)
13:06 psch if you're actually putting where clauses on the parameters you still end up in X::TypeCheck, as lizmat said
13:06 wamba joined #perl6
13:06 ab6tract psch, lizmat: awesome. thanks for the clarification!
13:07 lizmat afk for a few hours&
13:08 * moritz just experienced how event-based programming can make testing a breeze
13:15 Ven joined #perl6
13:15 dalek rakudo-star-daily: 489f92c | coke++ | log/ (8 files):
13:15 dalek rakudo-star-daily: today (automated commit)
13:15 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/489f92ccfb
13:17 xinming joined #perl6
13:17 molaf joined #perl6
13:20 kent\n joined #perl6
13:20 kent\n joined #perl6
13:21 dalek DBIish: 4e03bf0 | (Salvador Ortiz)++ | lib/DBDish/Pg/ (2 files):
13:21 dalek DBIish: Minor post oracle merge repairs in Pg
13:21 dalek DBIish: review: https://github.com/perl6/DBIish/commit/4e03bf0e1a
13:21 dalek DBIish: a823fb2 | (Salvador Ortiz)++ | lib/DBDish/SQLite/ (2 files):
13:21 dalek DBIish: SQLite: Implement the proper semantic of finish
13:21 dalek DBIish:
13:21 dalek DBIish: Fixes #34
13:21 dalek DBIish: review: https://github.com/perl6/DBIish/commit/a823fb20c2
13:21 dalek DBIish: bb1682c | (Salvador Ortiz)++ | lib/DBDish/SQLite (4 files):
13:21 dalek DBIish: SQLite: Now with typed Pointers
13:21 dalek DBIish: review: https://github.com/perl6/DBIish/commit/bb1682c92e
13:21 dalek DBIish: 8a28d97 | (Salvador Ortiz)++ | t/lib/Test/DBDish.pm6:
13:21 dalek DBIish: Rationalize the test suite, pass 1.
13:21 dalek DBIish:
13:21 dalek DBIish: Add support for typeless drivers, like SQLite
13:21 dalek DBIish: Remove unneeded TODOs, drivers passing.
13:21 dalek DBIish: review: https://github.com/perl6/DBIish/commit/8a28d9719c
13:21 dalek DBIish: f936ec4 | (Salvador Ortiz)++ | t/40-sqlite-common.t:
13:21 dalek DBIish: SQLite: Optout typed NULLs
13:21 dalek DBIish: review: https://github.com/perl6/DBIish/commit/f936ec4317
13:25 RabidGravy sortiz++ # fix0rifaction
13:26 Skarsnik duh, what did you do for the todo to pass?
13:29 * [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"
13:29 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-g53​1495a/precomp/8490FD9827B5D931FCC99​8C1F8EC28F82BC18926.1456491017.86…»
13:30 Ven joined #perl6
13:30 ab6tract ahh, the STDERR isn't printed, duh.     # Expected: X::TypeCheck
13:30 ab6tract # Got:      X::AdHoc
13:30 [Coke] stmuk: I thought that learningperl6 book thing was actually ancient, then dropped.
13:31 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'")␤»
13:31 RabidGravy yeah, I think I got that somewhere and resorted to munging around the actual message
13:32 * [Coke] wanders off to find more コーヒー
13:33 psch that should probably throw TypeCheck::Argument instead...
13:34 ab6tract psch: it would be pretty awesome if it did :D
13:35 psch ab6tract: it's not that hard a patch :)
13:35 psch ab6tract: the error is thrown in src/Perl6/Metamodel/BOOTSTRAP.nqp:501
13:35 psch ab6tract: and src/Perl6/Metamodel/BOOTSTRAP.nqp:297 has almost exactly what needs to go there instead
13:36 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...
13:37 ab6tract TypeCheck::Constraint ? or TypeCheck::Argument::Constraint ? :)
13:37 ab6tract 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)
13:38 psch ab6tract: probably the latter, not sure how exactly that works out wrt to .message either
13:38 Skarsnik I am just talking about the _ version of the fetch*
13:38 Skarsnik and we should handle version of DBIish someday x)
13:39 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"
13:40 psch ab6tract: tbh i'd have to dig into the Binder again to make any statement with real confidence... :)
13:41 QORRiE joined #perl6
13:41 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␤»
13:42 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␤␤»
13:42 psch i'm thinking "Calling f(Str) will never work with declared signature (SubStr)" is misleading
13:43 psch 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 #perl6
13:43 autarch joined #perl6
13:43 psch ab6tract: i guess in the end coopting the current error message and stuffing it into TypeCheck::Argument::Constraint is probably fine
13:46 araujo joined #perl6
13:47 araujo joined #perl6
13:47 araujo joined #perl6
13:48 brrt joined #perl6
13:50 musiKk joined #perl6
13:51 vendethiel joined #perl6
13:57 rindolf joined #perl6
14:06 nchambers joined #perl6
14:07 [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 [Coke] :)
14:08 RabidGravy I used to like magicpoint
14:08 ab6tract psch: makes sense to me
14:08 kid51 joined #perl6
14:08 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)
14:10 [Coke] yah, I guess it's not actually a hard rquirement. :|
14:10 [Coke] I mean, it's a work thing, I could just use pptx
14:11 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␤»
14:11 rudi_s How can I get $a, $b to get mapped to 1 and 2?
14:11 jnthn Depends... :)
14:12 jnthn Unpacking is one way
14:12 jnthn -> ($a, $b) { ... }
14:12 jnthn @a.flat.map(...) is another
14:12 jnthn (Which I'd turn to depending on how I'm thinking about the data)
14:13 rudi_s Ah, flat again.
14:13 rudi_s m: sub foo(@a) { @a.flat.map(-> $a, $b { say "$a $b" }) }; my @x = (1,2), (3,4); foo(@x);
14:13 camelia rakudo-moar 531495: OUTPUT«1 2 3 4␤»
14:14 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
14:15 jnthn So, unpacking
14:15 jnthn m: sub foo(@a) { @a.map(-> ($a, $b) { say "$a $b" }) }; my @x = (1,2), (3,4); foo(@x);
14:15 camelia rakudo-moar 531495: OUTPUT«1 2␤3 4␤»
14:15 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 #perl6
14:15 rudi_s It feels really un-intuitive.
14:16 rudi_s But maybe I'm just not yet understand the design decision.
14:16 rudi_s Thanks.
14:16 jnthn Pretty sure there's a containers doc in doc.perl6.org
14:16 FROGGS I bet this (+flattening) will be the most explained topic of Perl 6 in future
14:16 jnthn But it's actually pretty simple: .flat and flat do not descend into Scalar containers.
14:17 jnthn And every slot in an Array is a Scalar container
14:17 jnthn m: .say for flat [1,2], $[3,4], 5, [6, [7, 8]]
14:17 camelia rakudo-moar 531495: OUTPUT«1␤2␤[3 4]␤5␤6␤[7 8]␤»
14:18 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 :)
14:18 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.
14:18 nine FROGGS: I think it already is
14:20 rudi_s jnthn: What is difference between [..] and $[..]?
14:20 rudi_s $ as in scalar container?
14:20 jnthn Yes
14:20 jnthn $[..] is the same as $(..)
14:20 jnthn oops
14:20 rudi_s And why is [7,8] not flattened? Because flat only flats one level?
14:20 jnthn $[..] is the same as $([..])
14:20 jnthn Not quite
14:21 jnthn Because it only flattens until it sees a Scalar
14:21 rudi_s And [7,7] when put into an array is a scalar/
14:21 rudi_s ?
14:21 jnthn And an Array is, by definition, a collection of Scalar containers (unless you bind into it)
14:22 jnthn Yes. Arrays are assignable only because their elements are Scalar containers
14:22 jnthn Or rather, array *elements* are.
14:23 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]]␤»
14:24 rudi_s I see, thank you.
14:24 rudi_s (Btw. I just remembered how to flatten an array: @x.List.flat .. - somebody told me here a few days ago.)
14:24 timotimo yeah, i have to keep that in mind, too
14:25 rudi_s But I think -> ($a, $b) is better on the eye.
14:25 rudi_s (Unless I want to e.g. join an array.)
14:27 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 nine I did not think about the different flattening behavior at all :)
14:28 rudi_s ;-)
14:29 rudi_s 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:30 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
14:30 timotimo right, you can use return there only if you use "anon sub (...) { ... }" inside the map
14:30 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.
14:31 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\
14:31 camelia rakudo-moar 531495: OUTPUT«foo␤»
14:31 timotimo oh
14:32 timotimo well, anon is about installing in the lexpad more than anything, really
14:32 jnthn Right
14:32 jnthn Or *not* installing it :)
14:32 timotimo giving it a name will still make that show up in the backtraces, i expect
14:32 jnthn aye
14:32 psch m: anon sub foo(:$) { } # an anon sub with name an a nameless named parameter... /o\
14:32 camelia rakudo-moar 531495: ( no output )
14:32 Ven joined #perl6
14:32 brrt small point of discussion wrt to panda / ecosystem
14:33 brrt 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
14:33 brrt case in point, i can't access the git:// protoocl due to firewall 'cleverness' at $institute
14:33 brrt oh really?
14:33 brrt i had no idea
14:33 nine well in git
14:34 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
14:34 mst it's already firmly in mind, hence the support for multiple protocols already in pands
14:34 mst and the intent to, over time, probably use https by default and let other things be configured
14:35 mst BUT
14:35 brrt i have had an issue filed how somebody could not get https for the submodules :-(
14:35 mst also due to firewall 'cleverness' and similar in academentia
14:35 brrt hey, you misspelled academia :-P
14:35 mst I have a feeling we had early adopters who had trouble with http(s) proxying
14:35 mst whereas those people had totally working git://
14:35 mst believe me, I spelled that exactly how I meant to :D
14:36 mst basically, everything is made of urine and you can't even find the cat
14:36 mst but, yeah, in the long run this stuff needs to be a smoother first run experience
14:36 RabidGravy I've done that stupid thing and left the hardest part to last
14:36 mst and then it turns out you have to rewrite everything else to make it fit?
14:37 RabidGravy I *think* I won't have to
14:37 RabidGravy but it's Friday afternoon so hey
14:38 RabidGravy mst what I am making at the moment is actually partially your fault
14:38 mst ... I'm so sorry
14:38 mst what did I do this time? :P
14:38 RabidGravy remember a long time ago we had a conversation and you made Class::XML?
14:39 RabidGravy 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
14:40 RabidGravy I thought it was high time I made something like that for P6
14:40 cosimo I presume netcruft is also intentional misspelling? :)
14:40 mst had you seen the source code to the Web Server and SSL Surveys, you wouldn't've even considered asking that :D
14:41 mst 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
14:41 * mst got somebody to give me a list, where did I put it
14:42 mst which are old school?
14:42 RabidGravy mst, oh I've almost finished, just making support for xsd:any like wot soap uses
14:42 perlpilot XML::Rabbit++
14:42 RabidGravy netcraft
14:42 mst oooh, nice
14:43 mst I liked the old school bits. those were the fun part.
14:43 mst 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
14:43 mst 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 mst pretty sure jeremy killed that with fire after my departure though
14:45 mst RabidGravy: but, yeah, such a thing is really nice. just, y'know, do better than I did ;)
14:45 mst (not a high bar in the case of Class::XML, I think that was my first original cpan module ;)
14:50 vendethiel joined #perl6
14:53 araujo joined #perl6
14:56 Ven joined #perl6
14:58 vike joined #perl6
15:08 kjs_ joined #perl6
15:08 vike joined #perl6
15:11 ab6tract joined #perl6
15:14 prammer joined #perl6
15:21 musiKk joined #perl6
15:24 cdg joined #perl6
15:29 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:32 vendethiel joined #perl6
15:34 uruwi joined #perl6
15:35 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 ab6tract i think i might have found a decently idiomatic answer
15:35 ab6tract m: multi g(Any $invalid) { die "Unacceptable!" }; multi g($g where * eq "g") { say "Nicely chosen.." }; g("g"); g("k")
15:35 camelia rakudo-moar 531495: OUTPUT«Nicely chosen..␤Unacceptable!␤  in sub g at /tmp/rc3Jnji0Ej line 1␤  in block <unit> at /tmp/rc3Jnji0Ej line 1␤␤»
15:36 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 QORRiE joined #perl6
15:36 skids .oO(".plane($n)" might be a good word for a depth-limited flat, after the carpentry tool)
15:37 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?
15:38 psch 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 #perl6
15:39 ab6tract but no, i found out about the X::AdHoc after i first asked about custom 'constraint exceptions'
15:40 ab6tract psch: you would still need this MMD route if you want something besides the TypeCheck exception that comes from core
15:40 ab6tract 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 :)
15:41 psch s/that comes/might eventually come/ # patches welcome ;P
15:41 ab6tract :D
15:41 psch i have a lot of jvminterop head-banging to do here :S
15:41 psch s/banging/bashing/
15:41 ab6tract no worries. This way my test is not dependent on core's current thrown type, anyway
15:42 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 :)
15:43 ab6tract psch: i might take a look at it at some point. but tuits are rare these days.
15:47 psch ab6tract: no worries, i probably should actually RT those kind of obvious little things anyway...
15:47 psch 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 #perl6
15:48 psch *i have
15:48 nine ab6tract: the additional multi candidate becomes confusing when using introspection to find out what the object supports
15:48 nine Because you get a candidate that takes an Any but calling that will only fail.
15:48 avenj joined #perl6
15:48 psch nine: OTOH, where constraints are pretty introspection-proof already...
15:50 nine m: say sub foo($a where * > 2) { }
15:50 camelia rakudo-moar 531495: OUTPUT«sub foo ($a where { ... }) { #`(Sub|67863120) ... }␤»
15:50 nine psch: you mean this usefull output?
15:50 psch m: sub f($f where *.chars < 2) { }; &f.signature.params[0].constraints.say
15:50 camelia rakudo-moar 531495: OUTPUT«all(WhateverCode.new)␤»
15:50 psch ^^^ that, yes
15:50 psch no way to know what's in that WhateverCode
15:51 psch 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?
15:51 psch i thought so, yeah.  but subset types get implemented as where constraints as well, as do &-param signature constraints
15:52 psch which in both cases could end up too much for e.g. TypeCheck::Argument::Constraint
15:52 psch also, i don't readily have any idea how we can get the actual constraint there either
15:54 psch well, the only thing that comes to mind is attaching it as POD, but that seems somewhat wrong, on a hunch
15:55 nine Did you know that we actually have code printing back traces?
15:56 psch i clearly didn't, i'd probably have made a different argument just now if i did :)
15:56 nine https://gist.github.com/niner/3be0c164d847ca794e18
15:59 ugexe i didnt know that, cool
15:59 nine Born at last year's QA hackathon.
16:00 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 :/
16:00 psch huh, when was the QA hackathon?
16:00 timotimo oh
16:00 timotimo perl6 --help shows /home/timo/.../perl6.moarvm as the $0
16:01 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 psch where "the same level" means "as distinctly for this purpose"
16:03 perlpilot psch: aye and my next question is ... should there be?
16:03 nine psch: end of April 2015
16:05 psch huh, i was paying attention then... must've completely missed that :)
16:05 psch perlpilot: i'm not sure, i guess it mostly depends on how that would look
16:06 psch perlpilot: like, &f.proto.add_fallback or..?
16:07 rje_ joined #perl6
16:08 perlpilot I guess CANDO would be what I'm talking about (if it's implemented)
16:08 cdg joined #perl6
16:09 rje_ p6: say "Rakudo!"
16:09 camelia rakudo-moar 531495: OUTPUT«Rakudo!␤»
16:09 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 ;)
16:10 ugexe is CANDO different from cando?
16:11 rje_ p6: say "楽土!"
16:11 camelia rakudo-moar 531495: OUTPUT«楽土!␤»
16:12 perlpilot I'm sure it is ... I was reading S10:Autoloading
16:12 synopsebot6 Link: http://design.perl6.org/S10.html#Autoloading
16:14 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:19 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?
16:19 RabidGravy "file".IO.slurp(:bin) I think
16:21 timotimo i think cando gives you a candidate that would be used in multiple dispatch, given a capture
16:21 RabidGravy yeah
16:22 rudi_s RabidGravy: Nice, thanks. - Not in the docs yet. How do you know that stuff? ;-)
16:24 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:26 tmch joined #perl6
16:30 kent\n joined #perl6
16:39 zpmorgan joined #perl6
16:41 jnthn nine: Nice! Was that with the "disregard empty precomp stores" approach?
16:42 nine jnthn: no, I'm onto combining all precomp stores
16:43 jnthn Rather you than me ;)
16:43 araujo joined #perl6
16:43 araujo joined #perl6
16:44 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:46 jnthn :-)
16:46 jnthn nine++ indeed
16:46 nine Wait till you see the implementation :D
16:47 perlpilot still nine++ because I don't see too many other people clamoring to do it.  :)
16:48 Upasaka joined #perl6
16:54 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
16:55 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++
16:55 hoelzro o/ #perl6
16:55 hoelzro nine++
16:55 hoelzro donaldh++
16:55 donaldh And also to see if I can get some lazy init during startup.
16:55 sufrostico joined #perl6
16:55 sufrosti1o joined #perl6
16:55 jnthn donaldh: You can likely borrow some lazy deserialization bits from Moar.
16:56 jnthn donaldh: It's a bit fraught, though
16:56 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
16:57 psch right, i remember that idea.  great that it actually worked out
16:57 donaldh And experimenting with moving block lex values to annotations.
16:58 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:59 cdg joined #perl6
16:59 buharin joined #perl6
17:01 wamba joined #perl6
17:02 donaldh jnthn: yes, I reckoned it was fraught. Still trying to figure out what's needed immediately.
17:02 kurahaupo joined #perl6
17:03 _dolmen_ joined #perl6
17:09 vendethiel joined #perl6
17:28 ilbot3 joined #perl6
17:28 Topic for #perl6 is now »ö« Welcome to Perl 6! | https://perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:,  or /msg camelia p6: ... | irclog: http://irc.perl6.org or http://colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
17:28 camelia joined #perl6
17:35 fireartist joined #perl6
17:38 timotimo it isn't guaranteed, but you're totally supposed to provide one
17:39 sevvie joined #perl6
17:52 _mg_ joined #perl6
17:53 hoelzro ok, that seems reasonable
17:54 hoelzro the payload method check should probably change to something like message though, I think
17:55 timotimo dunno
18:05 firstdayonthejob joined #perl6
18:08 domidumont joined #perl6
18:09 dalek doc: a4dcf9c | (Simon Ruderich)++ | doc/Type/IO/Path.pod:
18:09 dalek doc: IO::Path: document slurp and spurt methods
18:09 dalek doc: review: https://github.com/perl6/doc/commit/a4dcf9ca04
18:09 dalek nqp: 3f33ca9 | donaldh++ | src/vm/jvm/runtime/org/perl6​/nqp/sixmodel/Serialization (2 files):
18:09 dalek nqp: [jvm] Serialize the string heap to the serialization blob.
18:09 dalek nqp:
18:09 dalek nqp: This cuts the CORE.setting const table from ~63000 entries to ~52000 entries.
18:09 dalek nqp: review: https://github.com/perl6/nqp/commit/3f33ca9ac3
18:09 timotimo oh, huh. that's neat!
18:12 dalek nqp: 95c349f | donaldh++ | src/vm/jvm/runtime/org/perl6/nqp/s​ixmodel/SerializationReader.java:
18:12 dalek nqp: [jvm] Oops. Part of another feature leaked into this commit.
18:12 dalek nqp: review: https://github.com/perl6/nqp/commit/95c349fcd4
18:12 wamba joined #perl6
18:13 yqt joined #perl6
18:19 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:20 timotimo well, maybe you'd expect it to change the contents of the file?
18:21 rudi_s Hm. But the code as is does nothing.
18:22 psch it changes an anonymous array that you don't have a reference to
18:23 rudi_s Alright. But it has no visible effect so I'm curious what should be documented.
18:23 rudi_s And I'd still like to know why <-> doesn't work.
18:23 timotimo "doesn't work" meaning?
18:23 psch m: my @a = IO.lines; for @a <-> $_ { .uc }; say @a[^3]
18:23 camelia rakudo-moar 531495: OUTPUT«Method 'lines' not found for invocant of class 'IO'␤  in block <unit> at /tmp/FLwlElRZ1c line 1␤␤»
18:23 psch m: my @a = $*IN.lines; for @a <-> $_ { .uc }; say @a[^3]
18:23 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:23 psch m: my @a = $*IN.lines; for @a <-> $_ { .=uc }; say @a[^3] # there
18:23 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
18:24 psch oh, right
18:24 psch .lines returns a List, not an Array
18:24 psch my bad
18:24 timotimo ah, good
18:24 psch still, .lines isn't rw afair
18:25 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()
18:25 psch rw isn't the right term there
18:25 timotimo i don't even know tie :)
18:26 psch something in p5 to directly map an array to a file on disk afair
18:28 timotimo oh
18:28 timotimo well, having lines-based text files is trouble when you alter the length of individual lines
18:28 timotimo you'd have to re-shuffle the rest of the file every time
18:28 timotimo the performance of the given loop at the top would be abysmal
18:29 psch i've never used that feature of p5, fwiw
18:32 [Coke] .u sad
18:32 yoleaux U+0635 ARABIC LETTER SAD [Lo] (ص)
18:32 yoleaux U+069D ARABIC LETTER SAD WITH TWO DOTS BELOW [Lo] (ڝ)
18:32 yoleaux U+069E ARABIC LETTER SAD WITH THREE DOTS ABOVE [Lo] (ڞ)
18:32 [Coke] .u sad face
18:32 yoleaux No characters found
18:32 timotimo .u tears
18:32 yoleaux U+1F602 FACE WITH TEARS OF JOY [So] (😂)
18:32 yoleaux U+1F639 CAT FACE WITH TEARS OF JOY [So] (😹)
18:35 [Coke] m: Int.Range
18:35 camelia rakudo-moar 531495: ( no output )
18:35 [Coke] m: Int.Range.say
18:35 camelia rakudo-moar 531495: OUTPUT«-Inf^..^Inf␤»
18:35 [Coke] m: Str.Range.say
18:35 camelia rakudo-moar 531495: OUTPUT«Method 'Range' not found for invocant of class 'Str'␤  in block <unit> at /tmp/Njxpf_HH3N line 1␤␤»
18:36 [Coke] jnthn: ^^ is there something like that to show me all the unicode chars we can get at?
18:37 [Coke] m: (^99999).grep({.uniname ~~ /'FACE'/}).map({$_=>.uniname}).join("\n")
18:37 camelia rakudo-moar 531495: ( no output )
18:37 [Coke] m: say (^99999).grep({.uniname ~~ /'FACE'/}).map({$_=>.uniname}).join("\n")
18:37 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:40 timotimo oooh, negative die faces? ;)
18:44 TimToady negative die would be positive born? or would that be a resurrection?
18:44 timotimo it's not a pure function
18:44 flussence antimatter dice would make for interesting DnD games
18:44 araujo_ joined #perl6
18:45 TimToady that would depend on whether you are made of antimatter
18:46 TimToady we got it wrong on the electrons vs positrons, so maybe we have it wrong on the matter/antimatter...
18:48 FROGGS joined #perl6
18:48 FROGGS o/
18:49 araujo_ joined #perl6
18:53 labster joined #perl6
18:57 hoelzro o/ FROGGS
19:00 uruwi joined #perl6
19:02 [Coke] m: ";".ords.say
19:02 camelia rakudo-moar 531495: OUTPUT«(59)␤»
19:05 [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 )
19:05 [Coke] m: my $i = 0x37e; say uniname($i); say uniname(chr($i));
19:05 camelia rakudo-moar 531495: OUTPUT«GREEK QUESTION MARK␤SEMICOLON␤»
19:06 FROGGS O.o
19:07 [Coke] do we have a thing that shows a list of available uniprops?
19:08 geekosaur FROGGS, welcome to unicode >.>
19:09 FROGGS hehe
19:09 FROGGS [Coke]: no, I dont think so
19:11 [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:19 grondilu m: say class :: is List { method count-only { Inf }}.new.elems
19:19 camelia rakudo-moar 531495: OUTPUT«0␤»
19:20 moritz isn't count-only an iterator method?
19:20 grondilu but List is an Iterator
19:22 grondilu FYI I was wondering why +combinations(
19:22 grondilu $, $) does not work
19:22 grondilu m: say +combinations(100,1000)
19:22 camelia rakudo-moar 531495: OUTPUT«(timeout)»
19:22 grondilu when .elems does
19:23 grondilu m: say combinations(100,1000).elems
19:23 camelia rakudo-moar 531495: OUTPUT«1␤»
19:23 grondilu oops
19:23 grondilu that looks very wrong
19:23 grondilu oh wait
19:23 grondilu m: say combinations(1000,100).elems
19:23 camelia rakudo-moar 531495: OUTPUT«6385051192630513023669851114202227428126290​06938533317762868162215243769947509019489209743517​97699894319420811933446197797592213357065053890␤»
19:24 grondilu m: say +combinations(1000,100)
19:24 camelia rakudo-moar 531495: OUTPUT«Memory allocation failed; could not allocate 800 bytes␤»
19:26 flussence m: say "\x37e".ord.base(16) # idle golfing...
19:26 camelia rakudo-moar 531495: OUTPUT«3B␤»
19:27 flussence m: say 'foo'; say 'bar'
19:27 camelia rakudo-moar 531495: OUTPUT«foo␤bar␤»
19:29 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:30 timotimo oh hey grondilu
19:30 timotimo did you get my latest message about the white noise thing?
19:30 flussence m: say so "\x37e" ~~ /<:ascii>/ # wtf-per-byte ratio steadily climbing...
19:30 camelia rakudo-moar 531495: OUTPUT«True␤»
19:31 [Coke] flussence: complain to unicode.
19:31 uruwi joined #perl6
19:31 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 #perl6
19:31 lostinfog joined #perl6
19:32 geekosaur (for values of fun up to and including permanent brain damage)
19:32 timotimo m: say "\x37e".ords
19:32 camelia rakudo-moar 531495: OUTPUT«(59)␤»
19:32 timotimo of course it ~~ <:ascii>
19:33 FreezeburnV joined #perl6
19:34 FreezeburnV Afternoon all
19:34 Cabanossi joined #perl6
19:35 dalek ecosystem: 8d1d5ec | (Steve Mynott)++ | META.list:
19:35 dalek ecosystem: remove ShimmerFairy modules which no longer exist
19:35 dalek ecosystem: review: https://github.com/perl6/e​cosystem/commit/8d1d5ecede
19:35 [Coke] m: (0..^99999).grep({$_ != ord(chr($_))}).elems.say
19:35 camelia rakudo-moar 531495: OUTPUT«565␤»
19:37 yqt joined #perl6
19:38 timotimo i wonder why shimmerfairy is gone?
19:40 perlpilot timotimo: https://shimmeryfairy.wordpress.com/2​016/02/26/to-perl-6-and-now-im-gone/
19:40 timotimo oh!
19:41 perlpilot you're even mentioned in that post :)
19:41 espadrine joined #perl6
19:42 timotimo i just reached that part
19:42 stmuk I also have removed shimmerfairy from the RSS feeds
19:44 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:45 [Coke] many times.
19:45 timotimo yeah
19:45 timotimo you wouldn't get shot down if you don't speak up
19:45 timotimo i just mean i'd be happier if the shooting-down hadn't been as disheartening
19:48 [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:49 timotimo i don't know
19:50 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
19:50 perlpilot all I know is her "world view" was different from others enough that reconciling was (would have been) hard.
19:50 [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
19:50 hoelzro I kinda wanted to play around with SUPERNOVA
19:50 [Coke] time.
19:51 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
19:51 hoelzro not a lot of tuits lately =/
19:52 timotimo mhm
19:52 hoelzro I think her approach was smart; POD6 should probably be its own part of the language braid
19:52 hoelzro or something like that
19:52 [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.
19:52 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
19:53 timotimo 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
19:53 [Coke] (broke to such an extent) - one line workaround, btw, to the bug.
19:53 hoelzro I don't think we'll ever have a branch that big again, though
19:54 hoelzro not hitting 6.(current), anyway
19:54 [Coke] which I found in about 30 minutes of digging.
19:54 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.
19:54 timotimo yeah, the reception of that branch was quite poor; nine asked for eyes and nobody bothered to share any ... me included
19:54 hoelzro nine did due diligence in soliciting feedback; it's just that not many people answered the call
19:54 perlpilot hoelzro: now that we've actually released, we won't because we're going to consciously worry more about breaking things.
19:54 [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.
19:54 hoelzro perlpilot: mhmm
19:55 hoelzro [Coke]: agreed
19:56 perlpilot flussence: which subjects get "shouted down"?  (or was that hyperbole?)
19:56 perlpilot (or maybe we have different threshholds for "shouting"  :)
19:57 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.
19:58 hoelzro timotimo: *nod*
19:58 hoelzro 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)
19:58 stmuk I gave a talk on Perl 6 to London Perl Mongers yesterday and also mentioned help from IRC
19:58 flussence may be hyperbole, but I really don't feel like clarifying that statement. Sorry.
19:59 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
19:59 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.
19:59 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.
20:00 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.
20:00 perlpilot cognominal: more like "this change seems random!  What's going on?"  (that may be me reading-into it though)
20:01 hoelzro FreezeburnV: do you have an RT for that? that sounds interesting
20:01 [Coke] FreezeburnV: is there a ticket for this bug?
20:01 * 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
20:01 FreezeburnV hoelzro, [Coke]: There is no ticket for it. I don't even know how to create one?
20:01 timotimo cognominal: i'm not sure i support your interpretation of the kebab case thing
20:02 psch hrm
20:02 hoelzro timotimo: even better if the RT ticket includes golfed code =)
20:02 cognominal personally, speaking of surface representation I am pissed by Perl6 not yet serious with slangs :)
20:02 perlpilot FreezeburnV: Can you reliably reproduce the bug?
20:02 hoelzro FreezeburnV: if you can demonstrate some golfed code, I'll make the ticket for you
20:02 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)
20:02 [Coke] (put the code in a gist, don't paste it here.)
20:02 timotimo cognominal: also, shimmerfairy's a she; though i'm not sure if she insists on being correct about that or doesn't care
20:03 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.
20:03 perlpilot FreezeburnV: that's an excellent start :)
20:03 [Coke] FreezeburnV: for sure, though, if you don't tell us there's a bug, we're probably not going to fix it.
20:03 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 #perl6
20:04 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
20:04 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
20:04 hoelzro any code is better than no code
20:04 [Coke] FreezeburnV: fair enough.
20:04 cognominal timotimo, sorry, I did not notice about her being a she. NOt that make any difference here.
20:04 timotimo FreezeburnV: personally, i'm always glad to hear if MVM_SPESH_DISABLE=foo in the environment keeps the problem "working"
20:04 timotimo cognominal: right, no difference. just nit-picking
20:04 FreezeburnV timotimo, I'll try that
20:04 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
20:04 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. :)
20:05 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 :/
20:05 [Coke] plus communicating over text is always fraught with chances for misinterpretation
20:06 FROGGS psch: I share your feelings fwiw
20:06 psch FROGGS: but i'm trying so hard *not* to share them! /o\
20:06 hoelzro amen to that (what [Coke] just said)
20:06 psch snrk
20:06 hoelzro text is hard.
20:06 timotimo "val and the allomorphs" really sounds like the title of a cartoon or some movie
20:06 cognominal supernova seemed nice.
20:06 perlpilot timotimo: heh!  I was just thinking that
20:07 hoelzro sounds like a band
20:07 FROGGS or something that fits in the marvel universe
20:07 timotimo "val" would then probably be the lead, likely a woman?
20:07 hoelzro hehe
20:07 FROGGS aye
20:07 cognominal I sure need to learn about precomp to understand the discussion
20:07 FROGGS and probably inhuman
20:08 timotimo i'd expect more like a cyborg or other kind of "mixture"
20:08 timotimo because of what allomorphs are
20:09 geekosaur Val could be either gender (e.g. Val Kilmer)
20:09 FreezeburnV timotimo, MVM_SPESH_DISABLE does not fix the issue
20:09 geekosaur ...although maybe that means they;re gender allpmorphs >.>
20:09 timotimo hooray, i'm off the hook :)
20:09 timotimo geekosaur: good example
20:10 * hoelzro can hear the sigh of relief from thousands of kilometers away
20:12 timotimo .o( timo and the speshialists )
20:12 vendethiel :D
20:12 vendethiel timotimo++
20:12 timotimo oh hey ven
20:12 vendethiel hi timotimo :)
20:14 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: https://github.com/Freezerburn​/perl6_broken_precomp_compile
20:14 hoelzro FreezeburnV++
20:14 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.
20:14 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 :)
20:15 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
20:15 hoelzro FreezeburnV: are you printing to standard out at compile time?
20:16 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.
20:16 hoelzro o_O
20:16 FreezeburnV Unless you count the die
20:16 hoelzro DrForr: ah, ok
20:16 FreezeburnV hoelzro, Notably, if you remove the BEGIN block and leave it as an if .. elsif chain at runtime, the compiler still breaks :)
20:17 FreezeburnV 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 ;)
20:17 * timotimo BBL
20:17 hoelzro role bodies, for example, are run at compile time
20:17 timotimo hoelzro: not at composition time? (which is important when you 'does' or 'but' at run-time)
20:18 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 #perl6
20:18 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:21 hoelzro ah, there's a say() in SDL::Raw2
20:21 hoelzro so that would run at BEGIN time in sdl2.pm6
20:21 [Coke] FreezeburnV: is this the same precomp error that adding a "no precompilation;" in your source will avoid?
20:21 FROGGS FreezeburnV: your logger code say()s stuff at compile time
20:22 FROGGS FreezeburnV: and this output makes it into precomp files, and thus invalidating its content
20:22 tmch joined #perl6
20:23 FROGGS FreezeburnV: I'd try turning the 'say' into a 'note'
20:23 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
20:23 FROGGS FreezeburnV: will have time tomorrow to run your code
20:23 hoelzro now I get: Could not create context: Could not create GL context: GLXBadFBConfig
20:23 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? https://github.com/Freezerburn/perl6_broke​n_precomp_compile/blob/master/sdl2.pm6#L6
20:24 hoelzro NTM say "lib: $lib" in SDL2/Raw.pm6
20:24 Zakkor joined #perl6
20:25 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
20:25 FreezeburnV hoelzro, FROGGS: Wait, so anything at the top level of a module is basically being run at compile time?
20:25 * hoelzro nods
20:25 FROGGS aye
20:26 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?
20:26 hoelzro https://rt.perl.org/Ticket/Display.html?id=127086
20:26 hoelzro ^ ticket for LTA-ness
20:26 FreezeburnV I assumed that anything outside of a BEGIN block would be run at runtime
20:26 FROGGS hoelzro: we can also make it work I think
20:26 hoelzro I think we can
20:26 FROGGS hoelzro: we dont have to redirect stdout at all me thinks
20:26 hoelzro I have some ideas on that ticket, with feedback from nine
20:27 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 perlpilot s/it's/its/
20:27 [Coke] Zakkor: https://github.com/hinrik/perl6-mode ?
20:27 hoelzro use runs at compile time as well
20:27 perlpilot er, s:2nd/it's/its/ even
20:27 FreezeburnV perlpilot, That isn't confusing at all :P
20:27 FROGGS hehe
20:27 user_6532 joined #perl6
20:27 FROGGS nobody said time travel isnt confusing
20:27 user_6532 Allah is doing
20:27 [Coke] I think we're mostly non-emacs here in channel, though.
20:28 user_6532 sun is not doing Allah is doing
20:28 FROGGS user_6532: so am I
20:28 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
20:28 user_6532 moon is not doing Allah is doing
20:28 [Coke] user_6532: welcome to Perl 6. Try not to act like a bot, or you'll probably get booted.
20:28 FreezeburnV But I could be misremembering
20:28 user_6532 stars are not doing Allah is doing
20:29 [Coke] and, that's a bot. someone retire it?
20:29 FROGGS I dont have a hat at hand
20:29 RabidGravy goats are rebelling in the sunset of the cheesemakers
20:29 user_6532 planets are not doing Allah is doing
20:29 user_6532 galaxies are not doing Allah is doing
20:30 user_6532 oceans are not doing Allah is doing
20:30 perlpilot #perl6 is becoming closer to #perl
20:30 [Coke] I am not a channel op, which should be fixed.
20:30 user_6532 mountains are not doing Allah is doing
20:30 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
20:30 user_6532 trees are not doing Allah is doing
20:30 user_6532 mom is not doing Allah is doing
20:30 stmuk /ignore user_6532
20:30 FROGGS FreezeburnV: aye, will take a look tomorrow
20:30 user_6532 was kicked by moritz: user_6532
20:31 FreezeburnV FROGGS, 'Preciate it!
20:31 FROGGS o7
20:31 perlpilot moritz++
20:31 colomon RabidGravy: please say it’s not actually the sunset of the cheesemakers
20:31 FROGGS moritz is doing :o)
20:31 [Coke] moritz++
20:32 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
20:32 hoelzro vim
20:32 perlpilot Zakkor: vim of course :)
20:33 [Coke] Zakkor: vim
20:33 stmuk vim and vim-perl
20:33 flussence .oO( auto-completion usually takes more keystrokes than the thing to complete in perl6 anyway )
20:34 moritz [Coke]: I think I've now given you permission to op yourself; you can do that with /msg chanserv op #perl6
20:35 hoelzro power overwhelming
20:37 timotimo captain kirk is climbing a mountain. why is he climbing a mountain.
20:37 psch to shout dramatically?
20:37 DrForr "Go climb a mountain."
20:38 timotimo psch: to hug the mountain. to envelop that mountain.
20:38 timotimo that song is going to be stuck in my head for hours now
20:38 psch oh, it's something on the internet
20:38 timotimo yeah
20:38 timotimo something quite good
20:39 timotimo it's from some documentary or behind-the-scenes kind of thing with william shatner
20:39 timotimo i think the only editing was done to make the speech line up with the beat properly
20:41 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?
20:42 timotimo 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?
20:42 hoelzro I think that should work?
20:42 hoelzro oh, I suggested that in the ticket =P
20:42 FROGGS *g*
20:58 _dolmen_ joined #perl6
21:02 sufrostico joined #perl6
21:02 sufrosti1o joined #perl6
21:07 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:08 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:09 MadcapJake RabidGravy, I'd use it! I'm still slowly working on my FluidSynth module
21:09 QORRiE joined #perl6
21:10 RabidGravy :)
21:21 * jnthn will have a new module for the ecosystem soon :)
21:22 [Coke] jnthn: uhoh.
21:22 ugexe perl6 will finally have its own acme::goatse
21:23 jnthn :P
21:23 jnthn Nothing so scary :)
21:23 uruwi joined #perl6
21:25 jnthn .oO( But now you mention it, that is a gaping hole in our ecosystem... )
21:27 timotimo oh lord
21:28 ugexe hopefully we can do better than a straight perl 5 port
21:29 TEttinger joined #perl6
21:32 mst perlpilot: the more popular we get, the more kooks there'll be
21:35 mst moritz: updated [Coke]'s chanserv perms to the standard
21:38 buharin joined #perl6
21:39 ely-se joined #perl6
21:41 geraud joined #perl6
21:41 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
21:41 timotimo yeah
21:45 timotimo going to finally see deadpool tonight
21:45 hoelzro "tonight"? isn't it like 22:45 for you?
21:46 * hoelzro guesses it's a showing before 23:59 then =P
21:46 [Coke] timotimo: I loved that movie.
21:46 [Coke] it was everything I hoped for. :)
21:46 timotimo cool :)
21:47 timotimo ttyl
22:05 lizmat good *, #perl6!
22:05 sortiz \o lizmat
22:05 sjn good *, y'all
22:06 lizmat ShimmerFairy: if you're reading this, please contact me by email, or private chat
22:11 lizmat sortiz o/
22:12 lizmat sjn o/
22:13 sjn lizmat _o \o \o/ o/ o_
22:16 hoelzro o/ #perl6
22:16 sufrostico joined #perl6
22:16 sortiz CY hoelzro
22:16 sufrosti1o joined #perl6
22:17 hoelzro er, that was supposed to be o/ lizmat
22:18 hoelzro 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:20 neilb_ joined #perl6
22:27 jnthn For anyone doing Docker related stuff, https://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 jnthn Plus some docs :)
22:27 RabidGravy jnthn++
22:28 RabidGravy 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 :)
22:29 jnthn RabidGravy: Yeah, a Docker::Client is on my hit list after this.
22:29 jnthn Async of course :)
22:30 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... :)
22:30 jnthn But, grammars to the rescue... :)
22:31 dalek rakudo/nom: 58c45d3 | lizmat++ | src/core/Buf.pm:
22:31 dalek rakudo/nom: Shortcut Blob:D eq/ne Blob:D when comparing self
22:31 dalek rakudo/nom:
22:31 dalek rakudo/nom: This test is *very* cheap, and gives us O¹ in that case.
22:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/58c45d3315
22:31 jnthn Other than that, not much to say about the code. Midly cute use of a parametric role, I guess.
22:31 lizmat hoelzro: left a comment, it's awaiting moderation
22:33 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␤␤»
22:33 jnthn That is an LTA failure mode I tripped up on
22:34 jnthn Other than that, Perl 6 felt really very nice for this. :)
22:34 jnthn (I called my grammar Parser, then tried to use it as Grammar, which is the built-in Perl 6 class)
22:35 RabidGravy should get XML::Class out this weekend, took somewhat longer than expected as it's full of crack
22:36 jnthn Well, it is XML... :)
22:36 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 camelia rakudo-moar 531495: OUTPUT«Blob $b = Blob.new(1, 2, 3)␤Blob.new(3)␤Buf $b = Buf.new(1, 2, 42)␤»
22:36 lizmat aka, subbuf-rw changing the object from a Blob to a Buf ?
22:36 jnthn um, oops? :)
22:37 jnthn 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
22:38 lizmat well, that's another thing
22:38 jnthn Sure, but it'd prevent this ;)
22:38 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!
22:38 camelia rakudo-moar 531495: OUTPUT«Blob $b = Blob.new(1, 2, 3)␤Blob.new(3)␤Blob $b = Blob.new(1, 2, 42)␤»
22:39 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
22:40 lizmat ok, I will do that then, and optimize it a bit: because then we can use nqp::splice  :-)
22:41 sortiz Yep, Even I prefer that Blobs remains immutable from P6 land.
22:42 lizmat jnthn: I'm also looking at ~| ~& and ~^ , they also work on Blob:D
22:42 lizmat so they should also be on Buf only, I would think?
22:42 RabidGravy anyway bed time, toodles everyone!
22:43 lizmat toodles RabidGravy
22:43 lizmat ah, no, that would only apply to =~|  :-)
22:45 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
22:47 lizmat 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'␤»
22:48 jnthn Hmm
22:48 jnthn That P5 detector may want toning down some
22:49 jnthn *P5ism
22:49 lizmat jnthn: so you agree it would be a valid autogenned operator ?
22:50 jnthn lizmat: The rule's meant to be productive, yeah
22:50 jnthn oh wait
22:50 lizmat ?
22:50 jnthn Wouldn't it not be ~|= though?
22:50 lizmat argh. yes
22:50 jnthn It's a prefix infix meta-operator
22:51 jnthn .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   :-)
22:51 camelia rakudo-moar 58c45d: OUTPUT«Cannot assign to an immutable value␤  in block <unit> at /tmp/WAwUUfgrbb line 1␤␤»
22:51 lizmat but I'll have a look at that
22:51 sortiz my $a = Blob.new(1,2,3); dd $a ~|= Blob.new(3,4,5);
22:51 jnthn m: my $b = Buf.new(1,2,3); $b ~|= Blob.new(4,5,6); say $b
22:51 camelia rakudo-moar 58c45d: OUTPUT«Buf:0x<05 07 07>␤»
22:51 sortiz m: my $a = Blob.new(1,2,3); dd $a ~|= Blob.new(3,4,5);
22:51 camelia rakudo-moar 58c45d: OUTPUT«Blob $a = Blob.new(3, 6, 7)␤»
22:52 jnthn lizmat: Don't think I'd expect it to work without a Scalar container there, fwiw
22:52 lizmat ah, duh
22:52 lizmat maybe I'm too tired...
22:52 jnthn :)
22:52 lizmat jnthn: finally, on ~| and friends, would you be against adding a candidate that would take an Int ?
22:53 lizmat 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␤␤»
22:53 lizmat aka, allowing ^^
22:54 lizmat which would apply to the whole Buf
22:54 lizmat m: my $b = Buf.new(1,2,3); $b ~&= Buf.new(0x77 xx 3); dd $b    # the equivalent
22:54 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
22:55 camelia rakudo-moar 58c45d: OUTPUT«Buf $b = Buf.new(1, 2, 3)␤»
22:55 lizmat yeah, but the int case could be highly optimized
22:55 sortiz lizmat, I like it.
22:55 dh7320 joined #perl6
22:55 lizmat especially in combination with =
22:55 sortiz Sure, only checking the semantic.
22:55 jnthn Not quite sure about it auto-extending. Hmmm...
22:56 lizmat jnthn: internally, it wouldn't auto-extend, only semantically
22:57 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
22:57 camelia rakudo-moar 58c45d: OUTPUT«Buf $b = Buf.new(0, 2, 2, 0, 0, 2)␤»
22:57 kurahaupo joined #perl6
22:58 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.
22:58 lizmat m: my $b = Buf.new(1,2,3); $b ~&= (0x77,); dd $b
22:58 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␤␤»
22:58 lizmat which would allow you to specify a repeating pattern, like with allocate?
22:58 jnthn Do you have a concrete use-case for it, ooc?
22:59 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
23:00 lizmat (0,0,0x77,0x77)
23:00 lizmat oops, that wouldn't work
23:00 lizmat that would just be 0x7777
23:01 jnthn sortiz: Good one :)
23:02 lizmat having a 2dim array in there, and needing to zero out one element in each dimension ?
23:02 lizmat but yeah, generally masking stuff...
23:03 sjn doing XOR on a Buf, perhaps? # guessing
23:04 Herby_ joined #perl6
23:04 Herby_ Evening, everyone!
23:04 dalek rakudo/nom: 08ad4b6 | lizmat++ | src/core/Buf.pm:
23:04 dalek rakudo/nom: subbuf-rw only works on Buf:D
23:04 dalek rakudo/nom:
23:04 dalek rakudo/nom: See http://irclog.perlgeek.de/p​erl6/2016-02-26#i_12106997
23:04 dalek rakudo/nom:
23:04 dalek rakudo/nom: - Since we're now using a Buf only, we can use nqp::splice
23:04 dalek rakudo/nom: - This means no longer making copies in memory
23:04 dalek rakudo/nom: - so this should be significantly faster for bigger Bufs
23:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/08ad4b6d77
23:04 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...
23:05 lizmat sure...
23:05 jnthn (Not the commit you just did, the distrbuting Int one)
23:05 lizmat I will first optimize the current cases
23:05 lizmat yeah, I got that  :-)
23:05 jnthn :)
23:06 lizmat jnthn: finally, would adding an infix ~|= cause problems ?
23:07 lizmat I guess I would need to add that to the grammar and various other places as well, right ?
23:07 lizmat I guess I should ask after a good night's sleep  :-)
23:11 jnthn Aye :-)
23:12 * jnthn implements a few bits of Dockerfile generation, then decides it's enough code for today :)
23:15 sortiz lizmat, we have now enough "building block", thought
23:15 sortiz Even the Int case is only sugar.
23:16 lizmat sortiz: it's not only sugar, it could be implemented to be 2x as fast
23:16 lizmat (that is, the single int case)
23:16 lizmat it would also be much more memory friendly
23:17 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 sortiz Right now the common cases Buf ~| Buf are slow.
23:20 lizmat yeah, and they can be much faster...
23:20 * sjn reads through S17
23:20 lizmat conceptual ~=:
23:20 sortiz Yeah, with a few new ops.
23:20 lizmat multi sub infix:<~=>(Buf:D \a, Blob:D \b) {
23:20 lizmat my $a := nqp::decont(a);
23:20 lizmat nqp::splice($a, nqp::decont(b), nqp::elems($a), 0);
23:20 lizmat }
23:22 sortiz nqp::splice rulez
23:22 lizmat yup
23:23 Zakkor joined #perl6
23:23 Zakkor hey guys, i made a wallpaper, maybe you'll like it - https://u.teknik.io/SdupS.png
23:24 Skarsnik nice
23:24 lizmat nice, but maybe more for #perl / Perl 5 ?
23:25 lizmat 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
23:25 sjn m: $*SCHEDULER.cue: in => 3, { say "3 seconds passed" }; # shouldn't this give a warning?
23:25 camelia rakudo-moar 08ad4b: ( no output )
23:26 telex joined #perl6
23:26 lizmat m: $*SCHEDULER.cue: in => 3, { say "3 seconds passed" }; sleep 5
23:26 camelia rakudo-moar 08ad4b: OUTPUT«3 seconds passed␤»
23:27 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...
23:27 sjn a warning would be nice, wouldn't it?
23:28 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
23:28 jnthn Especially anything repeatedly scheduled
23:28 lizmat well, maybe don't warn for stuff repeatedly scheduled ?
23:29 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 :)
23:30 lizmat sjn: it would just be pretty hard to weed out all of the false positives...
23:31 sortiz jnthn, at the nqp level, $i = $i + 1, is optimized or is converted to nqp::add_i($i,1) ?
23:31 jnthn sjn: http://doc.perl6.org/language/concurrency clearly lists Scheduler as a low-level API
23:32 jnthn sortiz: If $i is declared as a native int, certainly
23:32 sortiz *$i = nqp::add_i($i,1)
23:32 jnthn If it is then yes, it'll compile into the add op
23:32 jnthn 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
23:33 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  :-)
23:34 jnthn MoarVM does have an inc_i op already
23:34 jnthn Not sure if the optimizer spits it out yet, but I think we'll do it that way
23:34 jnthn Pretty sure the JVM would already be nailing that one :)
23:35 jnthn Ah, and by optimizer I mean "the one in MoarVM"
23:36 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'␤»
23:36 jnthn lizmat: No, but I think we won't expose it at NQP level...it's a tad awkard
23:36 sortiz In loops is the more common op. So even with natives $i = $i + 1 is somewhat expensive.
23:37 sortiz lizmat, I search for it.
23:37 jnthn lizmat: I think we'll just let spesh do the transform
23:38 sortiz Transform to machine INC ?
23:39 khw joined #perl6
23:39 lizmat jnthn: are you saying that native $i++ is already handled most efficiently ?
23:39 lizmat (if that's the case, there's some stuff to do in core  :-)
23:40 sortiz That is the cuestion, I suspect No...
23:41 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
23:42 lizmat nine: for natives?  it used to be for Int, I know
23:42 nine lizmat: yes for natives
23:43 nine lizmat: commit 2d98de93ba16886ab7567d27d135a54c7aa657e3
23:44 lizmat cool.. will take care of that tomorrow then  :-)
23:44 lizmat post and prefix ?
23:44 nine also commit 1f34b78a3b5da91f72476e8e17c8343b84bbb606
23:44 nine enable ++ native optimization at level >= 3
23:46 lizmat nine: those commits don't seem to have anything to do with increment/decrement?
23:46 lizmat just with using an int as a conditional in a loop ?
23:51 jnthn lizmat: No, we can do better, but I'm saying we should deal with it in MoarVM
23:51 jnthn (As in, deal with the rest of it)
23:51 lizmat ok

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo