»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
jdv79 why is the usage using an abs path? that's what which is for. 00:01
ugexe jdv79: its because a wrapper launches it
leont Seems it was 2013
By that time, it was kind of obvious for any insider that parrot was a dead-end, and the TPF is a better umbrella really, but I can imagine how the outside world wouldn't have known 00:02
00:02 apiw joined
sortiz While reading rakudo lib/Test.pm6 found two vars: $time_after and $time_before, both 'num', its use is clear. But in some places the assignments to $time_after' differ between '$time_after = nqp::time_n;' vs '$time_after = nqp::p6box_n(nqp::time_n);', and I don't understand the difference. 00:02
00:03 firstdayonthejob joined 00:05 apiw left
timotimo sortiz: the p6box_n seems wrong; p6box_n is a bit like "Num.new(...)", but because of reasons, it's not spelled like that 00:05
sortiz Seems to me that the nqp::p6box_n is a leftover
timotimo so p6box_n and then assigning to a num variable is a needless back-and-forth 00:06
sortiz timotimo, Yes, I suppose that.
00:08 firstdayonthejob left
sortiz timotimo, Should I make a PR to fix that? 00:09
00:11 vendethiel joined, nekrodesk left
timotimo either that or you let me directly edit it and mention your nickname in the commit 00:11
00:11 Herby_ joined
Herby_ \o 00:12
00:12 MadcapJake left
sortiz timotimo, please, be my guest. I have some PRs waiting ;) 00:12
Hotkeys I really should start contributing to things more
my github is barren
timotimo sortiz: huh, does that mean i shall wait for your PR, or do it myself? 00:13
sortiz timotimo, do it yourself.
timotimo OK 00:14
i'm running tests with that change 00:15
Hotkeys linux users what distro do you use 00:16
I kind of want to get back into linuxy stuff
sortiz BTW, any comments on github.com/rakudo/rakudo/pull/693 will be much appreciated.
Hotkeys on my laptop at least
timotimo i'm on fedora
sortiz Hotkeys, I'm on Fedora 23. 00:17
Hotkeys Any reason why fedora?
timotimo a friend told me fedora's cool. and it kind of is.
Hotkeys lol
timotimo i was on gentoo a long, long, long time ago. after that it was debian sid, then fedora 00:18
sortiz Its so easy to install, and allows me to bring to production RHEL for my clients in a snap.
Hotkeys I tried gentoo once
it was quite exhausting
sortiz Hotkeys, Indeed, gentoo is exhausting, unless you need to compile everything. 00:19
timotimo i managed all right. it was a learning experience 00:20
Hotkeys Also the last time I ran linux I used arch + i3
that was interesting
timotimo yeah, i3 is great
00:20 Herby_ left
timotimo i've met the developer personally. he's super cool. 00:20
alpha123 quiety touts the virtues of bspwm 00:21
Hotkeys also at the same time I switched to arch and i3
I also tried to get into vim
and there was just so much to learn
:p
actually vim isn't that hard for basic editing 00:22
but still
sortiz Hotkeys, I use vim all day.
timotimo vim is enjoyable
00:22 sufrostico joined
Hotkeys but what I mean is 00:23
one day I was using windoze and like atom
and the next I was on arch with a tiling wm and vim
with my only linux experience being not much more than flirting with it
sortiz And with Fedora I stay close to the Enterprise™ world. 00:24
timotimo atom is fine, too 00:25
alpha123 lol atom 00:26
Hotkeys so do you use bspwm with fedora then sortiz?
sortiz I been playing with it, nice. But I'm too accustomed to vim
Hotkeys, no. I use the standard gnome desktop with 2 monitors, one of them really big! 00:29
Hotkeys oh wait
that was alpha123
that touted bswpm
bspwm
this is a fun bspwm gif lol raw.githubusercontent.com/windelic..._bspwm.gif 00:31
dalek kudo/nom: d714e50 | timotimo++ | lib/Test.pm6:
throw out superfluous p6box_n, sortiz++
00:32 patrickz left, vendethiel left, nekrodesk joined
timotimo Hotkeys: i love how they implemented a shell script "move" that understands "move me into that new space over there <--" syntax! :P 00:34
timotimo bedtime
sortiz timotimo, thanks. o/ 00:35
Hotkeys timotimo: did they actually?
I thought he doesn't actually execute that line
s/he/they
00:36 Laurent_R left
jdv79 why do we need the path of the executable in the usage? 00:37
00:39 kurahaupo joined 00:44 tardisx left 00:45 perlawhirl joined 00:47 idiosyncrat_ joined 00:49 tardisx joined 00:50 jolts joined
timotimo Hotkeys: they didn't execute that line, hence the "! :P" 00:55
Hotkeys just checking :p
that would kind of be hilarious if they did
timotimo hmpf. someone bother me enough about setting up synopsebot finally. also making the "noise image" example in rosettacode faster
Hotkeys "We'll use minimal mappings for SDL2. The resulting code is embarrassingly slow, but it's better than nothing." 00:57
lol
01:11 tardisx left, TimToady left 01:13 TimToady joined 01:15 tardisx joined 01:16 kid511 joined 01:17 thundergnat joined
thundergnat m: say 1e308 01:17
camelia rakudo-moar d714e5: OUTPUT«1e+308␤»
thundergnat m: say 1.1e308 01:18
camelia rakudo-moar d714e5: OUTPUT«Inf␤»
01:18 kid51 left
thundergnat m: say 1e308 + 79769e303 01:18
camelia rakudo-moar d714e5: OUTPUT«1.79769e+308␤»
thundergnat hmmm.
not exactly a bug but... 01:19
ugexe if the path needs to be in the usage it could also just show the relative path next to the commands, and then show the absolute path a single time at the top or bottom 01:25
i guess that doesnt solve the $?FILE/<sha1> issue of it though 01:28
AlexDaniel thundergnat: but?
01:29 cbk left, cbk joined 01:30 kurahaupo left
dalek kudo/nom: ff15fda | hoelzro++ | tools/build/Makefile-JVM.in:
Install Rakudo jars in proper location

Stuff written in NQP should go under $prefix/share/nqp/lib (J_LIBPATH), and stuff written in Perl 6 should go under
  $prefix/share/perl6/runtime/ (PERL6_LANG_DIR), since that's where the
respective module loaders look for it
01:30
AlexDaniel thundergnat: perl 6 defaults to Rats unless you use 1e1 notation
AlexDaniel thundergnat: in which case it is a Num 01:31
01:33 wamba left 01:36 lestrrat left
AlexDaniel m: say 1 if 01:38
camelia rakudo-moar d714e5: OUTPUT«5===SORRY!5===␤Whitespace required after keyword 'if'␤at /tmp/zpVFACkLSG:1␤------> 3say 1 if7⏏5<EOL>␤Whitespace required after keyword 'if'␤at /tmp/zpVFACkLSG:1␤------> 3say 1 if7⏏5<EOL>␤Whitespace required after keyword 'if'…»
AlexDaniel meh, still lta
01:39 sufrostico left
Juerd Wow, how much whitespace does it want? :) 01:39
01:39 leont left
Juerd m: say 1 if ; 01:39
camelia rakudo-moar d714e5: OUTPUT«5===SORRY!5=== Error while compiling /tmp/O89yz6Bko5␤Missing semicolon␤at /tmp/O89yz6Bko5:1␤------> 3say 1 if 7⏏5;␤»
01:39 lestrrat joined
Juerd Missing semicolon... Where? Right there, where the semicolon is. 01:39
AlexDaniel camelia: IT IS RIGHT THERE!!
Juerd thinks it's funny 01:40
geekosaur never mind LTA, that' less than sane >.>
Juerd Can we keep it? :)
AlexDaniel Juerd: this bug may celebrate its birthday pretty soon: rt.perl.org/Ticket/Display.html?id=125596 01:41
01:42 MadcapJake joined
AlexDaniel Juerd: you may also like this one 01:42
m: repeat { } until;
camelia rakudo-moar d714e5: OUTPUT«5===SORRY!5===␤Whitespace required after keyword 'repeat { } until'␤at /tmp/i6t5gwXNWX:1␤------> 3repeat { } until7⏏5;␤Missing "while" or "until"␤at /tmp/i6t5gwXNWX:1␤------> 3repeat { } until7⏏5;␤ expecting any of:␤ …»
AlexDaniel whitespace, ok
m: repeat { } until ;
camelia rakudo-moar d714e5: OUTPUT«5===SORRY!5=== Error while compiling /tmp/vTHOsfVRpp␤Missing "while" or "until"␤at /tmp/vTHOsfVRpp:1␤------> 3repeat { } until7⏏5 ;␤ expecting any of:␤ prefix␤ term␤»
AlexDaniel while or until? Ok
m: repeat { } until until;
camelia rakudo-moar d714e5: OUTPUT«5===SORRY!5=== Error while compiling /tmp/MVpSFCztAO␤Undeclared routine:␤ until used at line 1␤␤»
AlexDaniel xD
01:43 sevvie joined
AlexDaniel m: if True if { }; 01:45
camelia rakudo-moar d714e5: OUTPUT«5===SORRY!5=== Error while compiling /tmp/o55v9fkIPr␤Missing block␤at /tmp/o55v9fkIPr:1␤------> 3if True if 7⏏5{ };␤»
Juerd Haha, those are nice too
AlexDaniel Juerd: well, I'm going through my bug reports. There's a whole bunch of them which are based on “I'm treating the error message too seriously” idea 01:46
surely these are LTA but honestly there are better things to fix… :) 01:47
sortiz AlexDaniel, Indeed. 01:48
Juerd Fixing stuff isn't just an ordered list of to-do's. People can cherry pick things they like, or that match their expertise.
AlexDaniel yeah, that's why I report everything
Juerd m: &() 01:49
camelia ( no output )
Juerd m: &("Weird comment operator only allows valid syntax in it ;-)") 01:50
camelia ( no output )
AlexDaniel comment operator :D
Juerd If not comment operator, then sink warning suppressing operator ;)
It's only a comment in sink context
m: say &("If you like ampersands, you may use many.") 01:51
camelia rakudo-moar d714e5: OUTPUT«If you like ampersands, you may use many.␤»
Juerd m: "foo"
camelia rakudo-moar d714e5: OUTPUT«WARNINGS for /tmp/nZ2dEFodi8:␤Useless use of constant string "foo" in sink context (line 1)␤»
Juerd m: &("foo")
camelia ( no output )
AlexDaniel m: say (2,8,15)».&(* × 2)
camelia rakudo-moar ff15fd: OUTPUT«(4 16 30)␤»
AlexDaniel perhaps that's where it comes from
Juerd Ah
AlexDaniel m: &({.say})(25) 01:52
camelia rakudo-moar ff15fd: OUTPUT«25␤»
AlexDaniel m: &(*.say)(25)
camelia rakudo-moar ff15fd: OUTPUT«25␤»
AlexDaniel sorry, that's not a comment operator :D 01:53
Juerd: also notice how the result is in sink context and that's totally fine
m: say &(*.say)(25) # you can use it but most likely you don't want
camelia rakudo-moar ff15fd: OUTPUT«25␤True␤»
AlexDaniel Juerd: speaking of funny bug reports: rt.perl.org/Ticket/Display.html?id=125682 01:54
Hotkeys m: {.say}(25)
camelia rakudo-moar ff15fd: OUTPUT«25␤»
AlexDaniel though that & is a bit redundant 01:55
m: say (*.say)(25)
camelia rakudo-moar ff15fd: OUTPUT«25␤True␤»
Hotkeys heh
01:58 yqt left
sortiz m: (&).WHAT.say 01:59
camelia rakudo-moar ff15fd: OUTPUT«(Callable)␤»
sortiz oO( The "identity" one, ie. returns its arguments when called ) 02:03
02:07 luiz_lha joined, colomon_ joined, luiz_lha is now known as Guest60506 02:10 Actualeyes joined 02:11 a3r0_ joined 02:13 rindolf left 02:14 Sgeo left
AlexDaniel how can I merge two tickets? 02:15
02:15 Guest42178 left, colomon left, a3r0 left, colomon_ is now known as colomon
AlexDaniel it looks like I reported the same bug twice 02:16
rt.perl.org/Ticket/Display.html?id=126223 and rt.perl.org/Ticket/Display.html?id=126855
sortiz AlexDaniel, In that case, simply close the older.
AlexDaniel ok 02:18
02:18 Sgeo joined
thundergnat AlexDaniel: you missed my (rather feeble) point earlier. 1.1e308 overflows and evaluates to Inf but 1.0e308 + 79769e303 does not. 02:19
m: say 1e308 + 79769e303
camelia rakudo-moar ff15fd: OUTPUT«1.79769e+308␤»
thundergnat m: say 1.1e308
camelia rakudo-moar ff15fd: OUTPUT«Inf␤»
AlexDaniel thundergnat: yeah, I know. But you're playing on the edge, so… If you don't want such problems then just use Rats :) 02:20
I'm not sure where does that difference come from though. Is it how any float behaves?
or is it a double
thundergnat Yep. I was trying to find the edge. But it's kind of fuzzy. 02:21
Like I said, probably not a bug, but LTAIMO 02:22
AlexDaniel thundergnat: I don't think that Perl 6 should attempt to fix how floats work
it already does by defaulting to Rats :)
you might also say that Inf should not appear there at all, because, you know, it is less than awesome :) 02:23
thundergnat Actually, Inf is totally awesome. It has to show up sometime if we are trying to follow IEEE 754 (and we are as far as I can tell.) 02:27
AlexDaniel thundergnat: does IEEE 754 say anything about your example? 02:29
02:31 nekrodesk left
AlexDaniel m: :::<o> 02:32
camelia rakudo-moar ff15fd: OUTPUT«5===SORRY!5=== Error while compiling /tmp/uekIhmnvIc␤No such symbol ':<o>'␤at /tmp/uekIhmnvIc:1␤------> 3:::<o>7⏏5<EOL>␤»
AlexDaniel awesome
thundergnat AlexDaniel: IEEE 754 does not seem to specifically specify where the overflow will happen, only that it needs to happen gracefully. The 1.7976E+308 value I was messing with is the common Double precision range maximum. 02:36
I was just pointing out the oddity that you can get a sum above 1e308 to display but cant display it directly. 02:37
It really isn't a big deal to me and I don't want anyone to think I'm complaining about it. It was just odd. 02:38
02:39 thundergnat left 02:41 Humbedooh left 02:43 kid511 left, Humbedooh joined 02:44 Humbedooh left, Humbedooh joined 02:45 vendethiel joined 02:47 Guest60506 left 02:51 mattp__ left 02:53 FROGGS_ joined, mattp__ joined
AlexDaniel feels like he said something wrong 02:55
02:57 FROGGS left
sortiz AlexDaniel, I don't think so, don't worry 02:58
dalek p/experiment-multi-line-repl: a59d662 | hoelzro++ | src/HLL/Compiler.nqp:
Move continuation detection into eval

With this change, eval can return the output of running the code, or a sentinel value that indicates that more input is needed to run a chunk of code. This is so that more advanced forms of detecting when we need more input, such as if the user is entering input for a multi-line statement like a block.
This is just a proof-of-concept change; I don't really like how eval indicates to its caller that it needs more input. But at least this will get people to try and see if multi-line input could be feasible.
We also add a new method to HLL::Compiler - needs-more-input, which is used in conjunction with the sentinel value returned by eval.
p/experiment-multi-line-repl: a789a7e | hoelzro++ | src/HLL/Compiler.nqp:
Check if we need more input due to trailing backslash

This is a bit of a hack, but it's good enough for this experiment
sortiz hoelzro++ # your work towards a better REPL 03:01
konobi so, some comparisons to repls that could help are bpython, ipython and DreamPie (for python) 03:03
all have differing features 03:04
but which ones are the best to suit a core repl?
hoelzro bpython relies on curses, right? 03:05
03:07 Herby_ joined
Herby_ o/ 03:08
03:08 sevvie left
konobi hoelzro: not sure... could be just tput 03:08
hoelzro I'm pretty set on staying with a regular CLI REPL for straight up 'perl6' 03:09
03:09 vendethiel left
hoelzro more advanced interfaces can be provided by modules 03:09
Hotkeys Could also start the repl with an argument for curses maybe 03:10
Like perl6 --curses
Hotkeys shrugs
hoelzro I don't want curses knowledge in Perl6::Compiler
I just feel it's too much complexity to introduce
konobi hoelzro: i don't need curses to do curses like stuff
03:10 noganex_ joined
hoelzro I don't mean curses in particular; I mean the idea of managing a TUI in Perl6::Compiler 03:11
konobi then good ol readline
hoelzro readline is as far as I'll go
sortiz hoelzro, imo a good enough CLI REPL in core and hooks for extension is the best approach.
hoelzro (which is as far as we've gone =])
what I want (which may be at odds with what others want) is a basic REPL that ships with rakudo 03:12
I would like to provide a Perl6::REPL for other modules to use
for more advanced stuff
sortiz I totally agree. 03:13
Hotkeys Seems reasonable
hoelzro heck, even the existing tab completion might be too advanced, but I like having it =)
03:13 noganex left
hoelzro I'm going to write up my goals for the REPL, as soon as I finish reading this article 03:13
konobi yeah, i'd have thought it would be just part of Task::Rakudo 03:14
sortiz I'm using Readline, that lacks tab completion, but Linenoise has problems with unicode. 03:17
hoelzro konobi: I'm not really familiar with Task::Rakudo, but we don't include it in Star because of licensing
sortiz: unfortunately, the ReadLine binding doesn't have a way to offer custom tab completion 03:18
not yet, anyway
03:18 idiosyncrat_ left
dalek kudo-star-daily: 24a1517 | coke++ | log/ (9 files):
today (automated commit)
03:18
03:19 Ben_Goldberg joined
sortiz And I need multiline support and persistent history. 03:19
When time permits I'll take a close look. 03:21
konobi there's always libeditline 03:22
and linenoise 03:23
hoelzro sortiz: have you tried my branch?
konobi: that's why Linenoise (now) ships with R* =)
sortiz hoelzro, not yet. 03:24
hoelzro please do! I want some feedback on how well multi-line input works for others
sortiz Will be a pleasure. 03:25
konobi hoelzro: nice!
sortiz hoelzro, expect a lot of feedback soon. 03:26
hoelzro \o/
Hotkeys m: say comb "string" 03:28
camelia rakudo-moar ff15fd: OUTPUT«5===SORRY!5=== Error while compiling /tmp/m3D0GqVCeO␤Calling comb(Str) will never work with proto signature ($,, $?)␤at /tmp/m3D0GqVCeO:1␤------> 3say 7⏏5comb "string"␤»
Hotkeys why can't you do this?
konobi hoelzro: yeah... there's a pure JS library that does a bunch of curses stuff pretty dang well 03:29
Hotkeys I know there's the method
but I feel like you should be able to function comb a string
gfldex Hotkeys: please file a bug report 03:30
konobi hoelzro: npm:blessed ... it's a pretty interesting approach
hoelzro konobi: neat! maybe down the road, someone will write a curses REPL 03:31
Herby_ join #perl
03:32 Ben_Goldberg left
Hotkeys I don't know if it's a bug 03:32
it's just that the matcher isn't optional in the sub
github.com/rakudo/rakudo/blob/7d4c...ol.pm#L340 03:33
why does it always do the blob thing
oh
last time it was indexed in search 03:34
sortiz Hotkeys, Yes, seems a bug, all mult subs needs $matcher.
03:34 Actualeyes left 03:36 BenGoldberg joined
sortiz m: say comb /./, "string"; 03:36
camelia rakudo-moar ff15fd: OUTPUT«(s t r i n g)␤»
sortiz Hotkeys, see github.com/rakudo/rakudo/blob/nom/...ol.pm#L340 03:40
Hotkeys ik I just linked it :p
wrong commit same bit though
this part of github search: "You can't use the following wildcard characters as part of your search query: . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]" 03:42
is so infuriating
those are legitimate things to include in a query 03:43
when searching code
hoelzro ok, here are my thoughts on the future of REPL 6: gist.github.com/hoelzro/6bb9aa5163c7f79016ff 03:44
03:48 nekrodesk joined 03:50 colomon left 03:51 colomon joined, Zero_Dogg left 03:52 Zero_Dogg joined 03:53 Actualeyes joined
sortiz hoelzro, I found one feature missing, some form (may be a dynamic var) to introduce the result of the last evaluation. 03:53
03:54 addison left
MadcapJake sortiz, that's a great idea! 04:02
hoelzro sortiz: ah, thanks! 04:04
added! 04:05
sortiz Thinking about it, isn't trivial...
MadcapJake also would be nice: after a period, press tab (twice?) and it will take whatever you're calling's ^methods and print them in columns below 04:06
sortiz MadcapJake, that's in "Improve tab completions". 04:08
MadcapJake ok, yeah, wasn't explicitly stated as such, but definitely a big one, i'm still quite a novice at Perl 6 and i use ^methods all the time, would love to be able to call `fmt` on it isn't on Lists 04:10
s/isn't on/but it isn't on/
04:11 mr-foobar joined
sortiz hoelzro, Perfect, we have a lot work ahead. :) 04:12
hoelzro indeed =) 04:24
I think step #1 is make the REPL into Perl 6 code 04:25
after the multi line stuff is merged, anyway =)
anyway, off to bed
night #perl6
MadcapJake night! 04:26
04:26 BenGoldberg left
[Coke] I think we have better things to do than worry if the PaFo gets accepted to GSOC. Like, if you're interested in TPF applying, work on that. 04:28
04:30 BenGoldberg joined 04:33 AlexDaniel left
sortiz S99: PaFo? 04:34
[Coke] Parrot Foundation 04:35
04:38 Sgeo_ joined
sortiz ah, tnks [Coke] 04:39
04:40 Sgeo left, Herby_ left 04:44 telex left 04:45 BenGoldberg left 04:46 molaf joined, telex joined 04:57 grondilu left 05:01 molaf left 05:06 sevvie joined 05:24 khw left 05:45 Cabanossi left 05:46 FROGGS_ is now known as FROGGS
FROGGS .tell timotimo I can try... 05:47
yoleaux FROGGS: I'll pass your message to timotimo.
05:48 Cabanossi joined
konobi hoelzro: is a fun package... www.npmjs.com/package/blessed 06:05
no dependencies, JS or C libs
06:23 skids left, vike left 06:28 sevvie left 06:39 AiHasBeenSolved joined
AiHasBeenSolved ai.neocities.org/P6AI_FAQ.html 06:39
m Back to coding the Perl6 Killer App artificial intelligence 06:40
q
quit
06:40 AiHasBeenSolved left
masak oh good, AI has been solved. then maybe we can find some other buzzword to render completely meaningless. 06:42
06:43 FROGGS left
nine AI has been solved? Nice... 06:48
konobi well, at least the content is actually related 06:49
06:49 tardisx left
konobi rather than just 'hot shingles looking for you!' 06:50
07:04 perlawhirl left
masak it's related, but somehow I get the feeling that when it says "strong AI", the text actually means something more like "hilarious Markov-chain generator" 07:08
07:09 FROGGS joined 07:10 domidumont joined 07:14 domidumont left 07:18 domidumont joined 07:26 nebuchadnezzar joined 07:39 firstdayonthejob joined 07:41 nakiro joined, sno left 07:42 darutoko joined
[Tux] test 22.459 07:44
test-t 11.884
csv-parser 50.993
07:44 _Gustaf_ joined 07:58 vike joined 07:59 abraxxa joined 08:02 hippie1 joined, hippie left 08:03 domidumont left 08:04 CIAvash joined
moritz masak: "strong AI" is always what we can't do yet :-) 08:04
08:05 domidumont joined 08:06 tardisx joined, RabidGravy joined 08:08 domidumont left 08:09 virtualsue joined 08:12 sjoshi joined
RabidGravy boom! 08:12
08:14 mr-foobar left 08:15 mr-foobar joined 08:20 xinming left 08:29 ely-se joined 08:40 firstdayonthejob left
masak moritz: I see nothing impossible *in principle* with a software agent that thwarted my every attempt to unmask it as not alive. and I'd be fine with calling that "strong AI" :) 08:42
having said that, I acknowledge that it's really, really, really, really, really hard. 08:43
moritz on the other hand, many great things have achieved that would have counted as AI a while ago 08:44
search engines answering more questions for you than any single human ever could
but that's not AI enough for us, hence the desire for "strong AI"
also when I take pictures with my smartphone, it hilights and focuses on faces, and does so pretty well and in real time. Nobody seems to make a big fuss about that, but image recognition is hard 08:46
konobi well, also depends how it's applied too
08:47 cbk_ joined 08:52 cbk left, Celelibi left, Celelibi joined 08:54 zakharyas joined 08:55 dakkar_ joined, kamel joined 08:56 wamba joined
dalek kudo/nom: 6b53ac7 | (Salvador Ortiz)++ | src/core/Failure.pm:
Implement Failure.handled as documented
08:57
kudo/nom: ebf89c5 | (Salvador Ortiz)++ | / (7 files):
Merge branch 'nom' of github.com/rakudo/rakudo into failure.handled
kudo/nom: e375087 | (Salvador Ortiz)++ | src/core/Failure.pm:
Follows the spec for Failure.handled
kudo/nom: 311a98b | lizmat++ | src/core/Failure.pm:
Merge pull request #693 from salortiz/failure.handled

Implement Failure.handled as documented
09:01 bowtie_ left, Laurent_R joined 09:03 TEttinger left, TEttinger joined 09:08 bowtie joined, bowtie is now known as Guest10011 09:10 johan_ is now known as johan
RabidGravy I hate Perl 6 - it makes doing some things so easy and nice that I'm compelled to add features to stuff and never finish anything 09:16
09:17 domidumont joined 09:18 virtualsue left
DrForr No good software ever gets completed. 09:19
RabidGravy It all starts with "ooOOooooh that'll be really easy, I'll just do it" and ends in a never-ending cycle of "oOOOoooh I can do *that* - I'll just add it"
sortiz RabidGravy, I share your pain. 09:20
RabidGravy :) 09:21
stmuk most software with a sprawling scope never gets finished only some small very specific tools done
sortiz On the other side, Perl 6 is deliberately designed to never be "complete" 09:22
09:23 virtualsue joined
sortiz That's wonderful! :) 09:23
09:25 sno joined 09:27 ocbtec joined
sortiz But for now we need to make it faster ;) 09:27
09:29 virtualsue left 09:33 fireartist joined 09:35 Guest10011 left
sortiz
.oO( I'll need to confess how much I depend on Google Translate to write in English? )
09:35
09:36 bowtie_ joined 09:38 virtualsue joined
huf you can do that? use gtranslate to *produce* english? 09:42
DrForr Doesn't work for any other language, maybe English is the thing :) 09:43
09:43 lsm-desktop left
sortiz Frequently need to check my grammar, my native language is Spanish, and my English is a little rusty. 09:46
DrForr Lots of native English speakers need to do the same thing. Not enough do :)
huf that's amazingly brave, that you'd trust gtranslate on grammar :)
though maybe it works pretty well with spanish->english, dunno 09:47
sortiz When in doubt yes. :)
DrForr I used to do localization work, and every time I heard someone say 'Well, let's just run it through Google Translate for a first cut' shortly afterward there was the sound of <headdesk/>. 09:48
sortiz :) 09:49
huf yeah, i'm more surprised when it gives me an accurate translation than when it doesnt
i mean, it cant deal with sentences as mindbogglingly expensive as "the bread was expensive" 09:50
(it gets it confused with "it was expensive bread") 09:51
sortiz Well, if what I write here is reasonably understandable, my method does not work so badly.
huf it's pretty good, hence my amazement
also obviously i meant "mindbogglingly complex" above 09:52
moritz German <-> English also works pretty well
09:52 domidumont left
huf maybe it's just my uralic underprivilege 09:56
i mean seriously, how hard can bread being expensive be :D
timotimo FROGGS: though given my lingering interest in games-making, how is your box2d binding coming along? is NativeCall++ far enough by now? 09:57
yoleaux 05:47Z <FROGGS> timotimo: I can try...
FROGGS timotimo: I think NativeCall is good enough, and since we hav HAS now, the bindings should be less typing nowadays 09:58
timotimo: I'll find some time to work on it
timotimo that's cool :)
10:02 nekrodesk left
moritz wants CAN HAS 10:03
sortiz wants Blob/Buf support in CStructs 10:04
Or fast conversions between CArray and Blob 10:08
10:08 espadrine joined
timotimo yeah 10:10
10:13 rindolf joined
sortiz timotimo, Its REPRs should be similar, its possible a form of cast? 10:15
timotimo it'll also probably need a copy
sortiz Sure, for CArray we can get a pointer, if can be obtained from the MVMArray, a simple memcopy suffice 10:17
10:18 leont joined
sortiz For start, one way is enough. 10:20
10:27 pmurias joined
timotimo the thing is, VMArray will - on its own accord - run realloc on its pointer 10:30
sortiz timotimo, I know, that is why I'm thinking in a fast copy, move the data from CArray to a new VMArray and let the VMArray decide their fate. 10:36
10:39 leont left
sortiz From Rakudo to native, Blob can be used in native calls, but many APIs uses structs to returns data, in those cases all we have in CArray. 10:39
s/in/is/ 10:41
DrForr VMArray, you've piqued my interest. 10:42
10:47 virtualsue left
sortiz The REPR of Blob and Buf 10:48
DrForr I wanted to talk with nine about the notion of C#-style managed pointers when we were at FOSDEM but not enough time and too much beer. 10:50
sortiz Right now we can send them to native, but can't receive it, bc the size can't be guessed. 10:52
So there are unistantiables.
And ss timotimo said, its memory is MoarMV managed. 10:55
stmuk does panda work with gitlab urls in the ecosystem? 10:58
RabidGravy dunno, what's gitlab?
stmuk something like github 10:59
RabidGravy yeah just seen 11:00
sortiz stmuk, if its URLs are standar git URLs should work.
*standard
11:01 kaare_ joined
RabidGravy is there any way of creating an anonymous method (or sub) with a return type that isn't known in advance ? 11:02
11:02 jevin left 11:03 jevin joined
sortiz RabidGravy, you don't need to declare its return type. 11:03
Or use Mu. 11:04
RabidGravy no but what if I wanted to?
jnthn RabidGravy: Would mixing in a role { method returns() { Int } } or so work enough?
RabidGravy or actually needed to
jnthn Or do you want it to actually do the checking? :)
11:04 jevin left
RabidGravy yeah, want the actual checking, 'cause I want to create a rw method that will actually return a Proxy that will cause interaction with "something else" 11:05
jnthn .wrap it maybe 11:06
11:06 jevin joined
RabidGravy and the something else will crap out if I supply a wrong value so I'd rather crap out in perl space early 11:06
jnthn Or mix in a role that does postcircumfix:<( )> and then does callsame 11:07
RabidGravy just trying something
jnthn And then checks the result type
11:07 wamba left
RabidGravy actually, this may work 11:09
m: my $a = (my method foo is rw { }) but Callable[Bool]; say $a.of
camelia rakudo-moar 311a98: OUTPUT«(Bool)␤»
RabidGravy :-O
11:10 sjoshi left 11:11 apejens_ is now known as apejens
jnthn :) 11:12
11:14 Perleone joined
RabidGravy Hmm it doesn't actually check it, may need an additional layer 11:18
11:21 TEttinger left 11:24 sjoshi joined 11:27 wamba joined
lizmat m: my $h = Hash[Int,Mu].new("a",42); dd $h # this works 11:31
camelia rakudo-moar 311a98: OUTPUT«Hash[Int,Mu] $h = (my Int %{Mu} = :a(42))␤»
lizmat m: class A is Hash[Int,Mu] { } # this doesn't :-(
camelia rakudo-moar 311a98: OUTPUT«5===SORRY!5=== Error while compiling /tmp/aHnt6eLu8z␤Cannot call trait_mod:<is>(A, Hash, Array); none of these signatures match:␤ (Mu:U $child, Mu:U $parent)␤ (Mu:U $child, :$DEPRECATED!)␤ (Mu:U $type, :$rw!)␤ (Mu:U $type, :$nativ…»
lizmat jnthn: suggestions? ^^^ 11:32
m: my \T := Hash[Int,Mu]; BEGIN dd T; class A is T { } # :-( 11:34
camelia rakudo-moar 311a98: OUTPUT«Mu␤===SORRY!===␤No compile-time value for T␤»
moritz m: my \T := Hash[Int,Mu]; BEGIN dd T; my \A = Int.HOW.new_type(name => 'A'); A.^add_parent(T); A.^compose; 11:36
camelia rakudo-moar 311a98: OUTPUT«Mu␤»
moritz m: my \T := Hash[Int,Mu]; my \A = Int.HOW.new_type(name => 'A'); A.^add_parent(T); A.^compose; dd A
camelia rakudo-moar 311a98: OUTPUT«Cannot look up attributes in a type object␤ in block <unit> at /tmp/mrx16OWi14 line 1␤␤»
moritz m: my \T := Hash[Int,Mu]; my \A = Int.HOW.new_type(name => 'A'); A.^add_parent(T); A.^compose; say A.perl 11:37
camelia rakudo-moar 311a98: OUTPUT«A␤»
moritz m: my \T := Hash[Int,Mu]; my \A = Int.HOW.new_type(name => 'A'); A.^add_parent(T); A.^compose; say A.^mro
camelia rakudo-moar 311a98: OUTPUT«((A) (Hash[Int,Mu]) (Hash) (Map) (Cool) (Any) (Mu))␤»
lizmat moritz++
jnthn You'd have to do constant to have it at compile time
m: constant \T = Hash[Int,Mu]; class A is T { }
camelia ( no output )
jnthn m: constant \T = Hash[Int,Mu]; class A is T { }; say A.^mro
camelia rakudo-moar 311a98: OUTPUT«((A) (Hash[Int,Mu]) (Hash) (Map) (Cool) (Any) (Mu))␤»
lizmat jnthn++ 11:38
jnthn m: constant \T = Hash[Int,Mu]; class A is T { }; my %x is A; %x{1} = 42; say %x
camelia rakudo-moar 311a98: OUTPUT«1 => 42␤»
lizmat
.oO( one step closer to subclassing Bag from object hashes)
jnthn Not quite sure why a straight "is" doesn't work there
RT-able imo
moritz iirc my %x is .. never worked 11:39
jnthn moritz: It was implemented late November or so
moritz m: constant \T = Hash[Int,Mu]; class A is T { }; my %x := A.new; %x{1} = 42; say %x
camelia rakudo-moar 311a98: OUTPUT«1 => 42␤»
moritz oh
m: constant \T = Hash[Int,Mu]; class A is T { }; my %x := A.new; %x{'str'} = 42; say %x
camelia rakudo-moar 311a98: OUTPUT«str => 42␤»
jnthn m: my %h is BagHash; %h<a>++; say %h; %h<a>--; say %h
camelia rakudo-moar 311a98: OUTPUT«BagHash.new(a)␤BagHash.new()␤»
11:43 kid51 joined
lizmat hmmm... I wonder if we have spectest coverage for that 11:43
jnthn is?
lizmat my %h is BagHash
jnthn Not sure if I used that exact example
But pretty sure I added tests 11:44
lizmat well, yes, there's tests but skipped atm
11:44 moznion left
lizmat apparently ticket #124490 11:44
jnthn The mechanism is the same one shaped arrays relies on
So it went in at the same kinda time
lizmat m: my %h is BagHash = a => 1 11:45
camelia rakudo-moar 311a98: OUTPUT«Cannot modify an immutable BagHash␤ in block <unit> at /tmp/Zt7WavPC8j line 1␤␤»
lizmat :-(
jnthn Yeah, I added tests
e3df3841f7b53676b
in roast
lizmat: That'll be because BagHash has no STORE method 11:46
lizmat ah, ok, fixable then
subclass from Hash, provide own STORE_AT_KEY, done
11:47 ely-se left
jnthn Wait, should BagHash subclass Hash? 11:49
I think that needs a bit more thought/discussion. It's a quite visible change.
(Not saying it's wrong, and the risk of breakage is very low, but we won't be able to undo it in the future without breakage.) 11:50
At least, not if it makes it into a language release. 11:51
And given it's about objects that basically means "we won't be able to undo it"
11:52 ely-se joined
sortiz o/ #perl6 11:54
lizmat jnthn: how is it a visible change? I mean the only thing that will change is the ^mro ?
moritz lizmat: type checks against Hash change behavior
not all people use % or Associative 11:55
11:55 zakharyas left
lizmat scratches the idea of subclassing Bag/BagHash/Mix/MixHash 11:58
jnthn Yeah, it's the type checks
I'm not saying an outright "no", something just makes me hesitate a bit on it
lizmat consider it shelved until there're more clarity 11:59
jnthn *nod*
12:01 gcole left, apiw joined, gcole joined, sortiz left, Skarsnik joined
timotimo could still move these things out into a role 12:06
rather than changing the class hierarchy
12:07 apiw left
lizmat timotimo: don't really see how that can be done without adding a layer of indirection 12:08
timotimo oh
i didn't look thoroughly yet, sorry :S
lizmat unifying the approaches was what I was going for... but it looks like it's going to be 6.d.a
at the earliest
timotimo well, 6.d.a is "right now", though 12:09
so at least that's good
lizmat timotimo: ??? where's 6.d.a ? 12:10
timotimo well, 6.d.a is the first alpha of 6.d, isn't it?
so that's where our new changes go right now, no? 12:11
lizmat eh, no, that's stuff that's done in the setting.d, no ?
so far, I only see a RESTRICTED.setting 12:12
timotimo ah, that's still in a/the branch 12:13
sorry, i'm totally behind the curve :|
lizmat in any case, if I read jnthn's blog post correctly, 6.d would be for new classes only, as the mess of having the same class in both settings, would be rather troublesome
timotimo i thought 6.d can just shadow things in 6.c by virtue of being the outer one 12:14
but perhaps that is problematic with regards to things in the .c setting refering to "Hash" and getting .c.Hash?
lizmat stuff like that, yeah
12:17 apiw joined 12:20 apiw left 12:21 apiw joined
stmuk books nuremberg flight on *that* Irish airline :/ 12:23
moritz the one that wants to charge for toilet usage? 12:25
timotimo shouldn't they be glad you're reducing the total weight of the airplane?
moritz but you aren't, as long as they keep everything inside 12:26
timotimo oh
stmuk yes .. still they have beer in Bavaria I guess
DrForr stmuk: Don't forget to purchase your cans of Perri-Air in advance. 12:28
12:28 apiw left 12:29 domidumont joined 12:30 domidumont left 12:31 domidumont joined, apiw joined
Skarsnik Hello 12:32
How I can have line return in a MAIN argument WHY? 12:33
I try #= line 1 #= #= Line 2 but it does not work (and \n just print a ... \n) 12:34
12:38 moznion joined
timotimo right, those are just concatenated 12:39
you can try having a second paragraph
or a "verbatim" block
12:40 apiw left 12:44 sufrostico joined 12:49 sufrostico left, vendethiel joined
Skarsnik and I finally PR my change in USAGE display x) 12:50
RabidGravy so the liquidsoap language will happily let you define an interactive variable with a hypen in the name, but won't then let you use it :( 12:54
silly language
moritz silly-language
12:55 kid51 left 12:56 kanishka joined 13:00 apiw joined
dalek kudo/nom: 22b4ef0 | (Sylvain Colinet)++ | src/core/Main.pm:
Change the orders of arguments documentation for MAIN display. Previously it was "random" (hash key order) now it the order on wich they are written
13:08
kudo/nom: bb2953c | lizmat++ | src/core/Main.pm:
Merge pull request #709 from Skarsnik/nom

Change the orders of arguments documentation for MAIN display.
Skarsnik Thx x) 13:09
13:11 domidumont left, nekrodesk joined, domidumont joined, nekrodesk left 13:12 vendethiel left 13:13 s_kilk joined 13:14 s_kilk left 13:15 wamba left 13:16 nekrodesk joined, nekrodesk left 13:18 nekrodesk joined, nekrodesk left 13:20 nekrodesk joined, nekrodesk left 13:22 nekrodesk joined, nekrodesk left 13:25 brrt joined 13:26 nekrodesk joined, nekrodesk left 13:30 nekrodesk joined, nekrodesk left 13:33 nekrodesk joined 13:45 sjoshi left 13:47 vendethiel joined 13:49 CIAvash left 13:50 xinming joined 13:51 apiw left
lizmat afk for a few hours& 13:51
13:54 apiw joined 14:02 sufrostico joined 14:04 sufrosti1o joined 14:06 cognominal left, cdg joined
dalek osystem: 0847011 | okaoka++ | META.list:
Add Algorithm-BinaryIndexedTree to ecosystem

See github.com/okaoka/p6-Algorithm-Bin...ndexedTree
14:07
osystem: efc40f3 | (Zoffix Znet)++ | META.list:
Merge pull request #151 from okaoka/add-BIT

Add Algorithm-BinaryIndexedTree to ecosystem
14:07 cognominal joined 14:09 vendethiel left 14:11 xenu is now known as enu_ 14:13 eternaleye left, M-matthew left, M-Illandan left 14:14 zakharyas joined, sufrosti1o left 14:15 sufrosti1o joined, vendethiel joined 14:16 robinsmidsrod left 14:17 robinsmidsrod joined 14:18 robinsmidsrod left, robinsmidsrod joined
dalek ar: eb79f1b | (Steve Mynott)++ | ports/darwin_dmg/installerbg.png:
import Camelia as a background to temp disk mount
14:19
ar: 00fd195 | (Steve Mynott)++ | ports/darwin_dmg/ (2 files):
move Camelia from being folder icon to being folder background since it confused the london.pm mac users in testing into thinking the folder was an app
14:20 nchambers is now known as DowntimeAbbey 14:21 DowntimeAbbey is now known as nchambers 14:22 apiw left
hoelzro o/ #perl6 14:22
I wrote up some of my thoughts on how we could improve the REPL; let me know if you have feedback: gist.github.com/hoelzro/6bb9aa5163c7f79016ff 14:23
14:24 robinsmidsrod left, kurahaupo joined, robinsmidsrod joined 14:26 bowtie_ left 14:27 bowtie joined 14:28 apiw joined, bowtie is now known as Guest69908 14:29 skids joined 14:30 enu_ is now known as xenu 14:32 M-eternaleye joined 14:35 apiw left 14:36 vendethiel left
RabidGravy tum-ti-tum 14:38
14:41 M-matthew joined, M-Illandan joined 14:42 apiw joined 14:46 prammer joined
RabidGravy If anyone is mildly interested IO::Socket::Async doesn't crap out if you try to listen on a port that is already being used 14:48
jnthn That's crap...
14:49 isBEKaml joined
RabidGravy :) 14:50
flussence that's a feature! but only if you used SO_REUSEPORT or whatever it's called...
geekosaur was about to comment on that 14:51
14:51 apiw left
geekosaur also present with SO_REUSEADDR on some Solaris kernel patchlevels 14:51
flussence but it's definitely not an expected default 14:52
RabidGravy but you can't pass that option
14:53 apiw joined
dalek kudo/experiment-multi-line-repl: 5f66fcb | hoelzro++ | tools/build/NQP_REVISION:
Require experimental NQP for multi-line REPL
14:54
kudo/experiment-multi-line-repl: 3de1463 | hoelzro++ | src/ (2 files):
Add pos attribute to X::Syntax
kudo/experiment-multi-line-repl: d726cca | hoelzro++ | src/Perl6/Compiler.nqp:
Override HLL::Compiler.eval for multi-line input

The way this works is pretty dodgy, but it's good enough for my experiment. How this works is that we catch any exceptions from evaluating the code; if there's an exception, it's an X::Syntax::Missing, and it occurs at the end of the input string, that means that more input is required. Instead of just throwing the exception at the user, we signal HLL::Compiler that we need more input via self.needs-more-input
kudo/experiment-multi-line-repl: 6c4c7b4 | hoelzro++ | src/Perl6/Compiler.nqp:
Only turn on multi-line behavior if we're interactive

Multi-line behavior isn't needed for one-liners or scripts
geekosaur RabidGravy, might check that libuv isn't "helpfully" urning on all the SO_REUSE* bits 14:55
RabidGravy well, I could do that, but my test indicates that if I start an async "echo server" on port 8000 and then telnet to that port I still get the icecast server that was there in the first place 14:57
stmuk ice ice ... gravy
RabidGravy and I've tried with both 'localhost' and '127.0.0.1' just to eliminate any v4/v6 shenanigans 14:58
14:58 sufrosti1o left, sufrostico left
mspo strace/dtruss/truss/ktruss will probably tell you exactly what syscalls are happening 14:59
15:00 vendethiel joined 15:03 wamba joined 15:06 nekrodesk left 15:07 sufrostico joined, sufrosti1o joined 15:08 jolts left 15:10 brrt left, M-matthew left, M-eternaleye left, M-Illandan left
skids If it does not already, it should probably set IPV6_V6ONLY by default (per tools.ietf.org/html/draft-itojun-v...armful-02) 15:14
15:17 _Gustaf_ left 15:19 mr-fooba_ joined 15:21 mr-foobar left, vendethiel left 15:22 apiw left
mspo hey itojun++ 15:25
15:25 khw joined 15:27 M-eternaleye joined 15:30 AlexDaniel joined 15:36 M-matthew joined, M-Illandan joined 15:39 apiw joined 15:43 wamba left, vendethiel joined 15:45 Guest69908 left 15:46 bowtie joined, bowtie is now known as Guest83108 15:51 diego_k left 15:52 ilbelkyr left, sm0x left 15:53 dustinm` left, sm0x joined, hahainternet left, autogen_ left 15:54 jferrero left, siriu5b left, dsp- left 15:55 BooK left, nebuchadnezzar left 15:56 nebuchadnezzar joined 15:57 mr-fooba_ left 15:59 diegok joined 16:01 hahainternet joined, ilbelkyr joined 16:03 siriu5b joined, autogen joined 16:04 BooK joined 16:06 dustinm` joined 16:07 mr-foobar joined, vendethiel left, drrho left 16:11 dsp- joined 16:13 jolts joined 16:14 apiw left 16:15 jferrero joined 16:18 apiw joined, M-Illandan left, M-eternaleye left, M-matthew left 16:21 FROGGS left 16:23 ely-se left 16:29 fireartist left
dalek ar: 3ff9ffb | (Steve Mynott)++ | tools/star/mac-dmg.pod:
import mac binary installer pod
16:30
16:30 sufrosti1o left, sufrostico left 16:33 zakharyas left 16:34 M-eternaleye joined 16:35 domidumont left 16:37 mindos left, SmokeMachine____ left 16:38 pnu left, mrsolo left, olinkl left 16:39 caasih left, mithaldu_ left, chansen_ left, riatre left, Humbedooh left 16:40 mithaldu_ joined, prammer left, pnu joined 16:41 nakiro left, olinkl joined 16:42 chansen_ joined 16:43 caasih joined, prammer joined, M-matthew joined, M-Illandan joined 16:46 Humbedooh joined, riatre joined, Humbedooh left, Humbedooh joined 16:47 prammer left, prammer joined 16:48 apiw left 16:49 prammer left, muraiki joined 16:50 prammer joined, abaugher left 16:51 abaugher joined 16:52 mindos joined 16:53 SmokeMachine____ joined 16:54 sufrostico joined 16:57 nekrodesk joined, nekrodesk left, mrsolo joined 16:58 FROGGS joined 17:00 ramon joined, domidumont joined, ramon is now known as Guest18288, nekrodesk joined, nekrodesk left 17:04 musiKk joined 17:09 prammer left 17:12 prammer joined 17:13 apiw joined 17:15 nekrodesk joined, nekrodesk left 17:19 jolts left, nekrodesk joined, nekrodesk left 17:20 buharin joined 17:22 buharin left 17:23 SCHAAP137 joined 17:24 Guest18288 left 17:29 goomby joined
goomby hey 17:29
17:29 goomby left
moritz ho 17:30
17:30 musiKk left
sjn \o 17:31
17:33 Perleone left 17:34 buharin joined 17:36 wamba joined 17:37 nekrodesk joined
RabidGravy and off to work we go 17:39
17:39 pmurias_ joined 17:43 pmurias left 17:46 isBEKaml left 17:51 virtualsue joined 17:53 dakkar_ left 18:07 rurban joined 18:08 wamba left 18:09 apiw left, firstdayonthejob joined
buharin hey 18:10
I am testing atom with perl6
and I got question how to build project?
18:12 apiw joined 18:13 muraiki left, leont joined
timotimo buharin: just press f9? 18:17
buharin it works only for tests 18:18
timotimo that is correct
that is all it can do at the moment
buharin for no test should I write some makefile
?
:D
timotimo, anyway I read about you 18:19
in article
timotimo you should always wrote tests :)
uh oh. only good things i hope?
buharin sure :)
timotimo what is that article? i don't remember doing anything noteworthy in the last months 18:20
buharin timotimo, wait need to find it 18:24
timotimo, p6weekly.wordpress.com/2016/02/08/...-starring/
timotimo i want to read something good about me, too
ah, well, that is more or less my blog
buharin :D 18:25
can I also write my blog?
18:28 addison_ joined 18:32 rje_ joined, dsp- left
lizmat jnthn: there are many places in the core setting where we put in an empty nqp::hash so that we have something to iterate over / look for keys 18:32
18:32 dsp- joined
timotimo everyone can write their own blog 18:33
lizmat jnthn: would it make sense to make a single nqp::hash somewhere that could be shared between all of these places, so that we don't need to allocate one over and over again?
18:33 kipd left 18:34 M-eternaleye left, M-eternaleye joined
lizmat buharin: are you saying you also want to write the Perl 6 Weekly? 18:34
rje_ Newbie question... are pack and unpack the best way to work with binary data in Perl6? (doc.perl6.org/routine/unpack) 18:35
18:36 kipd joined
Juerd rje_: Currently, yes. But note that they're experimental and they will still change 18:37
perlpilot rje_: That's actually a really good question because ... what Juerd just said :)
Juerd rje_: This part of Perl 6 is mostly unimplemented :(
RabidGravy or you can do your own thing with subbuff and so forth and release it on the ecosystem
Juerd rje_: I've suggested a replacement but haven't followed through... gist.github.com/Juerd/ae574b87d40a66649692/ 18:38
perlpilot rje_: see also doc.perl6.org/type/Buf
RabidGravy I've got an idea for when I restart working on the MIDI and XBase things
18:39 sufrostico left 18:40 kipd left
RabidGravy but they're so far down the todo stack I may not get back to them this year now 18:41
18:41 M-eternaleye is now known as eternaleye
rje_ Thanks gentlemen. What is subbuff? (Is it related to Buf?) 18:41
18:41 sortiz joined
sortiz \o #perl6 18:41
18:42 kipd joined
RabidGravy subbuf is a method on a Buf which allows you to pick ranges of bytes out of the Buf 18:42
perlpilot rje_: it's like substr, but for Buf instead of Str
RabidGravy used a lot by things manipulating that sort of data
rje_ Aaahhhh ok.
18:42 rurban left 18:43 mr-foobar left
rje_ My use case is nerdy. I'm reading old 8-bit diskette image files. I liberally used unpack with Perl5. 18:43
18:43 vendethiel joined, apiw left
buharin lizmat, yeah 18:44
18:44 mr-foobar joined
perlpilot rje_: if you looked at the state-of-the-art in Perl 6 and can come up with something better, that would be nice too :) 18:45
rje_ perlpilot: If something comes to mind, I'll pipe up. I'm still playing catch-up though.
lizmat buharin: I must admit I haven't seen you (much) before on the channel, is that correct ? 18:46
18:46 Foxcool_ joined
perlpilot rje_: you've picked an area where almost everyone is playing catch-up :) 18:46
buharin lizmat, yes
lizmat, I start learn perl last week ;D
lizmat buharin: do you have a blog that we can look at to get an idea of your blogging capabilities ? 18:47
buharin lizmat, no I never blog
lizmat ah, well, maybe you should start by blogging a bit for yourself, to get some practice ?
rje_ perlpilot: well, I reckon I should be able to open an IO Handle in binary mode and slurp it into a Buf, right?
buharin lizmat, I am not good in english :D 18:48
and have no any blog did
lizmat still you want to write the Perl 6 Weekly ? :-)
rje_ In a way, it seems as though unpack is not as sophisticated as the good old scanf(). But I could be mistaken.
buharin lizmat, why not 18:49
18:49 yqt joined
perlpilot buharin: maybe apprentice for a while :) 18:49
lizmat buharin: what perlpilot said :-)
18:49 lucasb joined 18:50 maybekoo5 joined
buharin perlpilot, what do you mean? 18:51
by writing posts? 18:52
MadcapJake buharin, blogger.com, wordpress.com, medium.com 18:53
DrForr Never stopped me :)
timotimo cinema time now 18:54
MadcapJake Has anyone submitted an application to GSoC to be a mentoring organization?
buharin MadcapJake, ye ok but I want to write posts about perl
18:54 idiosyncrat_ joined
MadcapJake you can do that on those sites! or another great solution is jekyll for github, it has pygments in the backend which has a perl 6 lexer 18:55
DrForr buharin: Then get an account and start writing :)
buharin DrForr, how to get perl acc?
mspo MadcapJake: you need to be able to "legally able to represent this org" to sign up
DrForr There's no special Perl silo, just get an account somewhere and start writig.
blogs.perl.org comes to mind if ou wnat branding :) 18:56
*you want
MadcapJake mspo, what's that mean?
buharin oh ok
mspo MadcapJake: it's just part of the gsoc rules
rje_ Woo hoo, I can read a binary file!!
MadcapJake but what's it mean? :)
rje_ my $fh = open( "CHOPLIFTER.D64", :r, :bin ); my Buf $buf = $fh.slurp-rest(:bin); say $buf.elems;
mspo MadcapJake: for netbsd we're a legal entity so it's pretty clear who has authority as it is explicitly granted
MadcapJake: who's name is on perl6 source files? 18:57
The Perl Foundation?
MadcapJake yep
maybe we could enter as Rakudo org?
mspo then they would probably be the owner 18:58
although just being the github project admin is probably good enough ;)
assuming TPF didn't *object*
18:58 musiKk joined
perlpilot mspo: From the GSoC FAQ: To be eligible to participate as a mentoring organization, you must be a group running an active free/open source software project, e.g. BRL-CAD. The project does not need to be a legally incorporated entity. 18:58
MadcapJake So one of these people: github.com/orgs/perl6/people?utf8=...e%3Aowner+ 18:59
mspo perlpilot: but if perl6 is "owned" by the perl foundation then...
18:59 Actualeyes left, Relsak joined
mspo perlpilot: do you understand what I'm saying? 18:59
timotimo 70mm version of the movie
i hope i can appreciate whatever that entails
RabidGravy that's short
19:00 kanishka left
timotimo it's rather a bit expensive 19:00
MadcapJake but perl6 isn't "owned" by TPF though, is it? that seems the wrong way to put it
mspo if there is clearly an "owner" of a project then it should be sanctioned by that owner
perlpilot mspo: I do, but I don't think it's quite right.
buharin hey I got an idea :D
mspo I think "perl" and "perl6" are owned by larry wall
MadcapJake trademarks are, but that's different
mspo I'm guessing anyone on github.com/orgs/perl6/people?utf8=...e%3Aowner+ is good enough for gsoc
buharin could you review my post after I write it
timotimo, ?? 19:01
mspo so you don't assign copyright of your code?
MadcapJake mspo, agreed, will the real perl6 owners please stand up
mspo, but how does that work being open source? 19:02
lizmat buharin: I will certainly review your post :-)
mspo summerofcode.withgoogle.com/rules/
timotimo buharin, perhaps i can. do you know what it will be about? 19:03
buharin, usually blogging software like wordpress will allow you to give a review or preview link to others 19:04
buharin I got an idea but it is a secret ;-)
MadcapJake mspo, this is the only line that makes me think TPF has to do it: «An Organization Administrator who has the full legal authority to bind the Organization must register the Organization for the Program and accept the terms of the Organization Participant Agreement on behalf of the Organization.»
mspo and summerofcode.withgoogle.com/terms/org 19:05
timotimo and on Google docs and such you can even let others write together with you and then you can copy that into WordPress
mspo MadcapJake: that's the line I was thinkig of too
19:05 yqt left
mspo MadcapJake: I just went through all of it monday 19:05
timotimo the movie will start soon and people will kill me if i don't turn off my phone :)
MadcapJake timotimo, turn the brightness up to 11! 19:06
perlpilot buharin: We're all about "open source", not "secret source" :)
MadcapJake mspo, so is TPF doing GSoC? Who do we contact about this? :S
19:07 musiKk left
mspo I don't know 19:08
MadcapJake: I think the perl6 github owners is going to be sufficient for a "perl6 project" which includes nqp, rakudo, and moar
unless you wanted to split them up
19:08 Relsak left
buharin perlpilot, ye like me ;-) 19:09
mspo it wouldn't hurt to have an email from TPF or larry wall sanctioning it, but I don't know all of the copyright policies and stuff
for perl
MadcapJake i think perhaps you're right in that TPF has legal claim, so perhaps at the least we should inform them of our decision to go in alone?
right that's what i was thinking too
buharin anyway I ask one question a few times here without answer
MadcapJake .seen CurtisOvidPoe
yoleaux I saw CurtisOvidPoe 31 Jan 2016 15:59Z in #perl6: <CurtisOvidPoe> p6: await (^20).map: { start { sleep rand; .print } }
mspo in netbsd we are a legal entity and all code committed is assigned copyright to the netbsd foundation 19:10
MadcapJake CurtisOvidPoe is a TPF board member
mspo so it's very clear for this kind of stuff
19:10 leont left
MadcapJake [Coke], you are a part of TPF, any idea on how to proceed with GSoC? 19:11
That's all I can recognize in this list: www.perlfoundation.org/who_s_who
buharin I was asking about wsgi 19:12
why perl got his own implementation psgi and how it is better than wsgi 19:13
lizmat .tell jnthn shouldn't the sink-all methods all have the --> Nil return sig ?? 19:14
yoleaux lizmat: I'll pass your message to jnthn.
MadcapJake buharin, are you asking about Perl 5 PSGI?
mspo buharin: they're different protocols 19:15
buharin: there's also uwsgi, ajp, cgi
buharin Perl 6 PSGI implementation
MadcapJake buharin, it's just a specification for how to communicate, PSGI was inspired by WSGI (which is Python's)
buharin ye I know
MadcapJake the perl6 implementation is just a port of Perl 5's
buharin I read a bit about it
19:15 rje_ left
buharin and also about P6SGI 19:15
but I don't understand why Perl guys implement smh new 19:16
WSGI is quite similar and fine
mspo fcgi is another
MadcapJake buharin, because it's not written in Perl, perhaps ;)
buharin sure but
interface was good
jnthn lizmat: (nqp::hash) Can you point me at some examples? 19:17
yoleaux 19:14Z <lizmat> jnthn: shouldn't the sink-all methods all have the --> Nil return sig ??
DrForr Kind of hard to use Python code inside Perl 5.
jnthn lizmat: Yeah, they can
MadcapJake Why does Ruby have Rack? Why does language A have Web Server Spec X?
lizmat jnthn: but sink-all is always returning IterationEnd now...
buharin I mean to use interface 1 to 1
lizmat wouldn't that be an API change ?
buharin not talking about ABI 19:18
MadcapJake buharin, I'm not following what you mean by interface 1-to-1
buharin oh nvm
jnthn lizmat: Oh wait
lizmat jnthn: Rakudo::Internals, line 15
jnthn lizmat: No, sink-all is part of the iterator API
Those deal in IterationEnd
So it's fine
I was thinkigg of .sink methods, which should return Nil 19:19
MadcapJake buharin, wasn't trying to sound confrontational, genuinely curious what you meant by that!
perigrin buharin: because Perl offers different affordances than Python wen you get down to that low a level. PSGI was written to match the expectations of Perl programmers not Python programmers.
jnthn *thinking
buharin perigrin, I read PSGI code but it looks a bit messy 19:21
lizmat jnthn: Rakudo::Internals, line 15 has an example of using a nqp::hash just to have something to iterate over
perigrin buharin: sure but Perl5 has no `yield` so the example from the WSGI page on wikipedia fails immediately to translate.
lizmat jnthn: are you saying there's a better way to create an empty iterator ?
19:22 nekrodesk left
buharin perigrin, do perl6 got yield? 19:22
courutines?
perigrin I believe it does. PSGI though was originally written for Perl5
DrForr It has Promises, a similar system. 19:23
buharin DrForr yeah I read about it
promise it is not couroutines
jnthn And supplies
buharin but Python got also
promise system
python events
jnthn gather/take is closer to what people usually mean by coroutines
Non-blocking await coming in 6.d will also count 19:24
DrForr buharin: The point is that Python's coprocessing and Perl 6's coprocessing primitives don't match so while you can do roughly the same thing, it has to be done in a different way.
perigrin buharin: this isn't an argument about how awesome $x language is, I was simply trying to explain why miyagawa coulnd't just take the API from WSGI and port it 1:1 across
jnthn lizmat: In that Rakudo::Internals case, a shared nqp::hash would be safe 19:25
lizmat: It's probably the easiest path also
lizmat ok, I'll see if there's other cases 19:26
it would mean one less nqp::hash for each .values / .keys / etc. that are empty
jnthn I'd hope that's relatively rare, but yes :) 19:28
lizmat jnthn: if it is relatively rare, why are we going through all the rigamarole of checking for $!storage all the time, and allocate it when we create a Hash / Map always ??? 19:29
jnthn lizmat: Because of the way Hash/Array are created
lizmat jnthn: at the nqp level you mean ? 19:30
jnthn Yeah, at present they work the same way as Scalar does
That is, created on first touch of the lexical by an nqp::clone
Which is shallow
19:30 cdg left
jnthn For Scalar that optimization is incredibly worth it 19:30
For Array/Hash it's more questionable 19:31
buharin perigrin, sorry I don't trust you
perlpilot huh
lizmat perlpilot: please note that buharin command of english is not very good
's 19:32
jnthn lol
lizmat :-)
jnthn Anyway, it would be interesting to see if we do better to always create a Hash or Array with storage via the normal path 19:33
And remove the checks
lizmat adapting Hash/Map.new would be trivial 19:34
anything special I should look for in src/Perl6 ?
jnthn Well, there's a bit more of a problem.
There's at least one thing that does not end too well with, for example, my %h is BagHaash 19:35
(state vars)
And possibly a second, which is BEGIN time reference.
Well, it's state %h is BagHash that's problematic
So, those will be less trivial :( 19:36
lizmat ok, let's shelve that line of thought then
jnthn Yeah.
state handling does need some improvements down at the VM level
Because 1) no native state vars, 2) weird issues around state vars and binding 19:37
It's actually #2 that will bite us here
But #1 would be a nice rough edge to round off along the way 19:38
One of the thing things that's going to be changing a decent bit in MoarVM in the next months is call frame handling, so I'll take it on as part of that work.
Once that's done, it should be pretty viable to change things to measure the performance difference. 19:39
19:39 molaf joined
lizmat okidoki... :-) 19:39
sounds like a plan
perigrin buharin: the beauty of open source is you're welcome to make your own 1:1 port and prove me wrong :) 19:40
buharin perigrin, ye I know
:)
jnthn (The larger frame changes coming in Moar are for performance reasons: invocation is more costly than it needs to be, and our GC throughput suffers in programs that keep lots of closures in memory for a long time.) 19:42
19:43 leont joined
sortiz Btw lizmat, I really don't understand yet why the changes in Map caused the required change in CallFrame (Map -> Stash). 19:45
MadcapJake ok anyone curious about GSoC I have sent an email to Karne Pauley. I don't think I'm the best person to organize this as I'm not one of the core team or anything, but I really hope that whether TPF or at the developer team level, someone takes this up to make it happen. Would be really great exposure for Perl 6 and students will take their Perl 6 fu and spread it around at their schools!
Karen* 19:46
lizmat sortiz: because nqp::atkey on some REPRs fails if the key doesn't exist
19:46 nekrodesk joined, nekrodesk left
lizmat sortiz: so that would mean nqp::ifnull could not be used 19:46
Stash has its own AT-KEY implementation taking care of that 19:47
Map doesn't
sortiz lizmat, Ok, but is Stash the best option?
MadcapJake I'd also like to add: it wouldn't hurt for others to shoot an email off to her at [email@hidden.address] to show that I'm not the only one interested! 19:48
19:48 molaf left, apiw joined
lizmat sortiz: it should probably be PseudoStash, but that had its own set of issues 19:49
sortiz I worry that, via my, cause some surprises down the road. 19:51
19:52 rdmsno left 19:54 apiw left
sortiz lizmat, Maybe a new empty Stash subclass can be used as a guard. 19:55
19:55 nekrodesk joined
lizmat sortiz: with the frame changes coming up, as jnthn just described, we will revisit that area of the code, I would think 19:56
sortiz lizmat, yes. 19:57
lizmat, Thank you again.
lizmat sortiz: yw
mspo MadcapJake: there's also the ask forgiveness method; you can assign like five additional admins after doing the application :) 19:58
20:00 sno left, apiw joined 20:02 espadrine left 20:04 apiw left, idiosyncrat_ left 20:05 apiw joined 20:07 yqt joined 20:08 yqt left, musiKk joined 20:15 pmqs joined 20:23 darutoko left, spider-mario joined
b2gills lizmat: PR 693 should not have been merged 20:26
m: my $f = Failure.new('What?'); $f.handled = 5; say $f.mess;
camelia rakudo-moar bb2953: OUTPUT«(HANDLED) (HANDLED) (HANDLED) (HANDLED) (HANDLED) What?␤␤»
b2gills Either Failure $.handled should be Bool, or Failure.handled() should return a Proxy that outputs a Bool and restricts the input to a Bool.
20:27 kaare_ left
lizmat b2gills: could you please write a test for that? as roast was clean after I pulled 20:27
20:28 domidumont left
b2gills lizmat: If I get input on which way to go I would do all the work, except for pushing to rakudo/nom and roast/master 20:28
20:29 zakharyas joined
lizmat jnthn: I'm getting really confused now about this Failure.handled thing, opinions ? 20:29
20:29 yqt joined
b2gills It was implemented as int so that it would be fast presumably 20:30
lizmat that was intended as a fast bool really
but that didn't work on the JVM, afaicr 20:31
lucasb just to confirm my understand, should I be able to toogle the handled state of a failure by assigning $f.handled = True/False ? 20:32
b2gills I think for now if we need the speed inside of the object, a rw .handled() method is the way to go.
lizmat lucasb: I think that was the intent, yes
lucasb hm, ok. thanks lizmat 20:33
and saying something like 'has Bool $.handled is rw' would not work?
b2gills It would work but be slower 20:34
lizmat that's the whole thing: a lot of constructs use Failures :-(
lucasb oh, right. there's no native 'bool' type :) 20:35
b2gills I think having a slower Proxied method is going to be better in the short term
then
lizmat b2gills: well, that's really a "has Bool $.handled is rw" ? 20:38
20:39 TEttinger joined
b2gills No I mean leave $!handled as int, and have a separate .handled() returning a Boolified Proxy 20:39
Since most of the time Failures get automatically "handled" by calling other methods on them 20:40
I think the main use of a .handled() method would be to reset a Failure object anyway, so having it be a bit slower by being a Proxy will be fine 20:42
20:42 apiw left 20:43 rindolf left
lizmat tries something 20:45
20:50 apiw joined
lucasb lol, "(HANDLED) " x $!handled; that's the numification of booleans trick to output a single string or an empty one 20:50
b2gills If it didn't need to be fast I would have used 「"(HANDLED) " x? $!handled」 instead 20:52
20:53 abraxxa left 20:56 musiKk left 20:57 rje_ joined 20:59 sevvie joined
rje_ Shouldn't a Buf also have the Iterable role? 21:00
Or does that cause a kind of sigil collision problem? 21:01
Perhaps a method for extracting the Buf's elements into a List? 21:02
21:02 virtualsue left
rje_ Using a range just seems kinda primitive :) 21:04
lizmat b2gills: spectesting this change now: gist.github.com/lizmat/95a2cb7df2e3088f6f0f
21:04 cdg joined
sortiz I'm sorry for the problem of Failure.handled 21:04
lizmat sortiz: don't worry :-)
b2gills does the JVM implementation not have nqp::p6bool ? 21:05
lizmat in JVM it's not a native int 21:06
timotimo rje, .list works on Buf
and .list is what prefix @ does 21:07
lizmat b2gills: it has, but there is not point, as $!handled on the JVM is not a native
sortiz lizmat, The Proxy approach occurred to me, but though it was overkill.
timotimo movie will continue soon i think
lizmat timotimo: which one ?
b2gills How about 「nqp::p6bool($!handled = value ?? 1 !! 0)}」 on the Moar side and 「$!handled = nqp::p6bool(value)」 on the JVM side 21:09
dalek kudo/nom: c9eae68 | lizmat++ | src/core/Failure.pm:
Make sure Failure.handled looks like a Bool

Even though it's a native int internally on MoarVM. b2gills++, sortiz++
21:09 ely-se joined
lizmat b2gills: nqp::p6bool takes natives 21:10
value isn't necessarily a native
b2gills so it just happens to currently work on Moar but may not on other backends
lizmat hmmm.... 21:11
.oO( I hate backend differences )
b2gills I tested my version, and it works is what I mean
lizmat b2gills: but on the JVM version, $!handled can the still be 1 or True or False 21:12
21:13 apiw left
b2gills I think it will be fine until a native bool type is implemented, or someone goes messing with the internals again 21:13
lizmat: do you still want me to work on a ROAST test? 21:14
lizmat yes please
sortiz The original PR shows some tests that can be unfudged. 21:15
b2gills, thanks for reviewing the case. 21:16
b2gills sortiz: I review all of the commits to nom that I see. 21:18
21:19 nekrodesk left
llfourn so we can $failire.handled = True now? 21:19
sortiz llfourn, yes. 21:20
llfourn \o/ # always thought it was missing that
21:20 apiw joined
llfourn sortiz++ 21:20
jnthn rje_: It's deliberate that a Buf is an item, like a Str. If you're looking for a compact way to store a bunch of integers, native arrays are more likely the thing.
lizmat: I'll need to review the history of the handled thing... 21:21
lizmat jnthn: I think we've figured it out
b2gills llfourn: You could always have called .defined() on it to set it as handled 21:22
jnthn lizmat: I'm not sure why the change isn't to make it has Bool $.handled if we really want to fix that
dalek kudo/nom: 355fc3a | lizmat++ | src/core/Failure.pm:
Failure.handled is also an Int on JVM internally
jnthn Uh, with "is rw"
sortiz llfourn, or to "handle" it a simple ?$failure
llfourn b2gills: yep or .Bool but I think it's clearer if I want to return a pre-handled failure to have .handled = True 21:23
lizmat jnthn: I think it was timotimo who found that we lost quite a bit of performance with that approach
jnthn lizmat: Oh? That surprised me quite a bit, given True/False are constants, not allocated each time
rje_ timotimo: ah. Well I didn't see that in doc.perl6.org/type/Buf
jnthn But if so then yeah, a Proxy that boolifies will do it 21:24
At a cost
b2gills Since it isn't native on JVM, it could be changed to that there and comment out the whole method in that case. I would assume.
jnthn (the cost being if you call .handled, but I guess the Failure internals won't be doing that anyway, and it's probably a code smell to want .handled 21:25
)
lizmat yes, that was the idea :-)
b2gills Like I said, I think .handled() will be used to reset a Failure as not handled 21:26
most of the time
lizmat eh, but .handled won't do that ?
21:26 rje_ left
lizmat .handled = False 21:26
that *will* reset it
b2gills That's what I meant
lizmat ok :-)
sortiz :-) 21:27
lizmat goes back to a puzzling issue about passing a native hash as a parameter
jnthn lizmat: It'll get wrapped :)
lucasb m: Exception.new.fail; say 'hi' 21:28
camelia ( no output )
lizmat jnthn: so a decont should fix that, no ?
lucasb jnthn: ^^ you fixed a bug similar to this a few months ago. that one remained.
jnthn lizmat: No, 'cus we hllize at routine boundaries
lucasb: grmbl, did we really need a method form of that... 21:29
lucasb: Please RT it
llfourn m: fail "weee"; say 'Hi';
camelia rakudo-moar bb2953: OUTPUT«weee␤ in block <unit> at /tmp/O3gz0PU1qU line 1␤␤»
lucasb ok :)
lizmat m: use nqp; class A { method a(Mu \s) { say nqp::iterator(nqp::defined(s) ?? s !! nqp::hash).^name } }; my %h; A.a(nqp::getattr(%h,Map,q/$!storage/)) # jnthn, this seems to work
camelia rakudo-moar bb2953: OUTPUT«BOOTIter␤»
b2gills 「Exception.new.fail; say 'hi'」 currently works on my computer on the command line and in the REPL 21:30
jnthn Yes, we don't have a hll mapping for iterators
lizmat m: use nqp; class A { method a(Mu \s) { say nqp::iterator(nqp::defined(s) ?? s !! nqp::hash).^name } }; my %h = a => 42; A.a(nqp::getattr(%h,Map,q/$!storage/)) # but this doesn't :-(
camelia rakudo-moar bb2953: OUTPUT«Cannot iterate object with P6opaque representation␤ in method a at /tmp/t24cFJXQHe line 1␤ in block <unit> at /tmp/t24cFJXQHe line 1␤␤»
lucasb b2gills: by 'works', do you mean it outputs a useful 'Failed' message? 21:31
jnthn lizmat: Right, that's by design, so NQP code passing hashses into Perl 6 code will end up seeing a Perl 6 Map
b2gills 「Exception.new.fail; say 'hi'」 but it doesn't if ran as a file
lizmat jnthn: aah!
jnthn If it's going to be kept internal though, `my class LowLevelHash is repr('VMHash') { }` will give you something that you can use like an nqp::hash, but that is considered a Perl 6 type 21:32
b2gills lucasb: Right. It only appears to be broken if it is in a file. It may have something to do with printing out what file the error comes from.
lizmat no, that basically means I can feed MappyIterator an nqp::hash and have it auto-wrapped
which was what I was going for anyway 21:33
jnthn Should be very portable, 'cus it's the same strategy IterationBuffer, Buf, and array (native) take to use light REPRs directly
Oh, you want it auto-wrapped...
21:33 zakharyas left
jnthn I...think you grok what's going on now, anyway? :) 21:33
lizmat yup, I think so 21:34
jnthn ok, cool
lucasb b2gills: yeah, I dunno why the behavior is different in the two cases. 21:35
the commit that fixed it was github.com/rakudo/rakudo/commit/31...ff9d239cd8
it just need to be ported to Exception.fail
jnthn Should be a fairly easy port 21:36
b2gills lizmat: I'll go and write a ROAST test for Failure.handled()
sortiz Porting... 21:38
21:38 maybekoo5 left
jnthn sortiz++ 21:38
21:40 addison_ left 21:41 apiw left, FROGGS left 21:43 noganex_ left, noganex joined
sortiz Done in PR#710, running checks. 21:46
21:48 sno joined
lucasb cool, thank you, sortiz 21:49
21:50 addison joined, apiw joined
sortiz lucasb, > Exception.new.fail; say 'hi' 21:53
Exception exception produced no message
in block <unit> at <unknown file> line 1
21:54 dolmen joined 21:55 apiw left 21:58 apiw joined 22:00 nekrodesk joined, nekrodesk left
jnthn Exception exception...nah, that won't catch on like badger badger... 22:02
lizmat
.oO( snaaaaake! )
22:04
dalek kudo/nom: cdaa1f6 | lizmat++ | src/core/ (4 files):
Remove hash- prefix from MappyIterator attributes

For no other reason I got sick of them :-)
22:06
sortiz jnthn, some recommendation? Is in line 62 22:07
jnthn sortiz: No, it makes sense for every other typed exception :)
I don't mind it, it just looked a little funny at first :)
lizmat jnthn: in the future, will private methods be even better optimized than normal methods ? 22:08
22:09 nekrodesk joined
sortiz I can test for the main class ;) 22:09
lizmat jnthn: I'm asking because I'm thinking about renaming BUILD methods that are not called by BUILDALL, to SET-SELF
22:09 Skarsnik left
lizmat (and make them private on the fly if there's a future benefit) 22:09
b2gills lizmat: I think I have discovered a problem or two with S04-exceptions/pending.t while looking into testing Exception.handled()
At least one test was completely pointless and skipped 22:10
sortiz b2gills, the .pending case, no?
jnthn lizmat: I think they already *are* better optimized...
lizmat jnthn: nothing I could see in a simple benchmark 22:11
but if they aren't now, they will be :-)
b2gills sortiz: Yes, but I am looking into it to find more problems that I believe are there
jnthn m: class A { method m() { self!p }; method !p() { } }; for ^1000000 { A.m }; say now - INIT now
camelia rakudo-moar cdaa1f: OUTPUT«0.8324139␤»
jnthn m: class A { method m() { self.np }; method np() { } }; for ^1000000 { A.m }; say now - INIT now
camelia rakudo-moar cdaa1f: OUTPUT«0.75446429␤»
jnthn Hm, oddness 22:12
m: class A { method m() { self!p }; method !p() { } }; for ^1000000 { A.m }; say now - INIT now
camelia rakudo-moar cdaa1f: OUTPUT«0.7575794␤»
jnthn m: class A { method m() { self!p }; method !p() { } }; for ^1000000 { A.m }; say now - INIT now
camelia rakudo-moar cdaa1f: OUTPUT«0.8217081␤»
jnthn heh, OK, it's noise
So they're about identical
lizmat yeah...
sortiz b2gills, Yes, that annoys me too
jnthn I suspect if you didn't have spesh, privates would come out better 22:13
When you do, they probably come out near identical on Moar
privates probably come out ahead on JVM
At a guess ;)
b2gills sortiz: Actually I just mean the one test
lizmat jnthn: ok, don't see much difference with MVM_SPESH_DISABLE=1 22:14
22:14 lucasb left
lizmat apart from both being 2.5x slower 22:14
jnthn *nod* 22:15
22:15 rurban joined
jnthn Well, you're mostly measuring the cost of an extra hash lookup on a very short string 22:15
(Because all the Perl6::Optimizer does is devirtualize the private method call) 22:16
lizmat correction: more like 4x slower
jnthn :)
22:16 vendethiel left
jnthn inlining + osr + jit FTW, I guess :) 22:16
lizmat wants more! :-)
jnthn You'll get it :) 22:17
For simple things like that, we can certainly inline better. 22:18
Just needs more analysis and...hopefully not touching deopt.c, which is the second scariest source file in MoarVM :) 22:19
arnsholt Which is the scariest one? =) 22:22
jnthn gc/orchestrate.c
sortiz b2gills, I found no docs nor specs about .pending 22:23
dalek kudo/nom: 72dbb32 | lizmat++ | src/core/Rakudo/Internals.pm:
Re-use the same empty hash if we don't have any
22:23 ramon joined, ramon is now known as Guest50619
arnsholt jnthn: So something to do with the GC. But what does orchestration mean in that context? Is it the actual GCing, or something else? 22:24
b2gills sortiz: That's not even what I'm talking about, one of the tests was testing $! when it made no sense because it was obviously going to be empty.
22:24 ely-se left
buharin you know how to invoke perl6 from c? 22:25
22:25 cpage_ left 22:26 SquireOfGothos joined
buharin www.devx.com/assets/devx/3724.pdf 22:27
jnthn arnsholt: Getting various threads to agree it's time to GC, coping with those that are blocked awaiting I/O or locks/condvars/sleep, assigning work to those threads that are avaialable to do in parallel, and making sure no thread goes back to allocating too soon, but still allowing concurrent sweep. 22:28
(And ensuring threads get to GC their own nursery whenever they can)
(For locality reasons) 22:29
And handling the various permutations of things that can go wrong (two threads trigger GC "at the same time" but we must elect only one coordinator, threads that were sleeping waking up in the middle of GC running, etc.) 22:30
buharin I need something like perl6.h
;d
jnthn buharin: The Perl 5 module Inline::Perl6 manages to do it 22:31
sortiz b2gills, are you talking about the test in line 29?
jnthn You won't get a perl6.h 'cus the Perl 6 compiler ain't written in C 22:32
22:32 Guest50619 left
buharin ? 22:33
what?
in C++?
sortiz buharin, Nop, in NQP and Perl 6
b2gills sortiz: That one makes sense, the fudged one right after does not. It should be looking at @fails instead. I have a bunch of tests that I'm adding or fixing in that area of the test file.
buharin whoa 22:35
inlining perl6 to perl5
and then invoke it from C
?
22:35 ocbtec left 22:37 wamba joined
sortiz b2gills, Originally I interpret that test as that $! should be something different (not Exception), but defined with a .pending method. Thats the origin of my confusion. 22:37
dalek kudo-star-daily: e093a4c | coke++ | log/ (8 files):
today (automated commit)
22:38
22:38 SquireOfGothos left
b2gills sortiz: $! should have no failures at that point, so asking it about pending failures is pointless 22:38
sortiz: I agree that .pending should be fixed 22:39
[Coke] MadcapJake: I'm on the GC, which is as far from doing anything with the "real" TPF you can be and still be in the TPF. :) 22:40
Speaking with one of the board members is the way to go. Sorry
... and you already did that while I was working. excellent! 22:42
22:42 yqt left 22:43 perlpilot left 22:46 perlpilot joined
RabidGravy I've come to the conclusion today that however prettily a language allows you to write code that it's almost inevitable that once you start dealing with real world data some utter filth will creep in 22:46
sortiz b2gills, As I go by the "spec", I'll wait to see the new file.
perlpilot RabidGravy: Physicists agree with you (see entropy :) 22:47
arnsholt jnthn: Yeah... that sounds complicated enough =D
22:47 [particle] joined, [particle]1 left, apiw left
alpha123 RabidGravy: That's why APL is such a nice language. It looks awful to begin with, so you don't feel guilty about how ugly your code is. 22:52
RabidGravy :)
22:52 rurban left
alpha123 That was nice about Perl 5 too, though unfortunately it was possible to write pretty P5 code 22:52
timotimo i'm back 22:53
22:54 apiw joined
sortiz Was waiting, mistakenly, a more magic $! 22:57
22:57 spider-mario left 22:59 buharin left 23:05 pmurias_ left
llfourn so given that the Failure.handled = ... thing didn't exist before how is the versioning of that change handled? 23:05
sortiz llfourn, was specified and tested (but fudged as NYI), I suppose that is formally in v6.c 23:08
jnthn If it was fudged, it wasn't in 6.c 23:09
llfourn my reading of the situation was that versioning was to stop stuff breaking
right ^
lizmat so the onus is on the developer saying "use v6.c" and depending on Failure.handled = 1 to work, right? 23:10
sortiz jnthn, it was moar fudged, So if I understand what you write, v6.c is the language, not one implementation. no? 23:13
llfourn that answer works for me. ofc we need a way of specifying that we *are* going to use Failure.handled = (not sure if that's implemented yet)
jnthn lizmat: Well, if anyone *did* rely on Failure.handled = 1 working, we'll have broke them. But since it wasn't in the spectests we're "allowed". Of course, in such cases - of which there will be *many* until the spectest suite has doubled or quadroupled or so in size - we'll have to think carefully about such things. 23:14
lizmat: oh, and
We haven't borken that at all
Because we coerce
So you'd have to have something really contrived to hit problems. 23:15
sortiz: Yes, language version = set of tests that should pass
lizmat jnthn: before the PR of sortiz, you couldn't even assign to Failure.handled
jnthn Oh?
jnthn looks at the history more closely 23:16
Aha
OK, then it's even more clear cut, I think
llfourn but it would fail if you try to assign no?
lizmat llfourn: afaik, yes 23:17
llfourn so if someone has an old p6 $failure.handled = True is going to die on them
lizmat star: Failure.new.handled = 1
camelia star-m 2015.09: OUTPUT«Failed␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp:2869␤ in block <unit> at /tmp/_7rGOdct8a:1␤␤»
lizmat star: Failure.new("foo").handled = 1
camelia star-m 2015.09: OUTPUT«foo␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp:2869␤ in block <unit> at /tmp/PoRLcxBA4D:1␤␤»
lizmat star: Failure.new("foo").handled
camelia star-m 2015.09: OUTPUT«foo␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp:2869␤ in block <unit> at /tmp/3lkmIpchD0:1␤␤»
lizmat hmmm... messing with Failures is intriguing :-) 23:18
jnthn llfourn: Correct. Thus at the moment, being able to assign to it isn't in any version of Perl 6.
lizmat yup, so technically a 6.d.a feature ?
jnthn llfourn: It's in our current working draft (that is, master branch of roast) towards the next version now, though.
llfourn kk gotcha thanks
jnthn lizmat: Yes, though I reckon we'll have a 6.c.1, because the path to 6.d will be at least until the end of the year, and we should probably provide a way to within that time depend on more "minor" improvements. 23:20
llfourn would this be a candidate for 6.c.1?
jnthn llfourn: Very much so.
It's major things we'll be holding back on.
lizmat m: use nqp; my %h = a => 42; say nqp::existskey(%h,"a") # jnthn, surprised this works
camelia rakudo-moar 72dbb3: OUTPUT«1␤»
llfourn cool. 23:21
lizmat so rakudo also downgrades automatically ?
jnthn lizmat: You and me both...
m: use nqp; my %h = a => 42; say nqp::existskey(%h,"b")
camelia rakudo-moar 72dbb3: OUTPUT«0␤»
jnthn o.O
sortiz :) 23:22
lizmat seems to work at least since 2015.03
jnthn m: my %h; say %h.^attributes[0]
camelia rakudo-moar 72dbb3: OUTPUT«Method 'gist' not found for invocant of class 'BOOTSTRAPATTR'␤ in block <unit> at /tmp/YcB_SEPnNX line 1␤␤»
jnthn m: my %h; say %h.^attributes[0].associative_delegate
camelia rakudo-moar 72dbb3: OUTPUT«0␤»
jnthn m: my %h; say %h.^attributes[1].associative_delegate
camelia rakudo-moar 72dbb3: OUTPUT«1␤»
jnthn Aha!
That's why :)
I didn't know that flag had been set. 23:23
lizmat so that's a good thing ?
jnthn I'm half-inclined to gently discourage you from relying on this behavior, though.
Well, it exists primarily to help NQP 23:24
lizmat would it be faster than nqp::existskey(nqp::getattr(%h,Map,'$!storage'),"a") ?
jnthn And it's one of those things that was a big short-term performance win, but is a complex enough mechanism it may turn out to be really hard to optimize.
lizmat ok, so don't do that :-) 23:25
jnthn lizmat: Not with something like spesh, no
It may save an op dispatch, but those go away with the JIT
lizmat should I find places in the core setting that do that and fix them? I just found one in Setty 23:26
Hotkeys can 6.c.1 get ≥ and ≤ (and possibly ≠)
:p
jnthn Hotkeys: That one's not my call (thankfully :P). Depends what TimToady thinks. :)
Hotkeys Alrighty
jnthn lizmat: Up to you; it won't be hard for me to locate them if I do decide it's going away. 23:27
In general though, minor lang versions are about incremental bits, and major lang versions are stuff we'll want to shout about and highlight. 23:28
lizmat good night, #perl6!
Hotkeys night
llfourn night
jnthn 'night, lizmat
b2gills lizmat: If we in the future want to be able to have 「has bool $.handled is rw;」 then the Proxy for Exception.handled should probably enforce that it only receives a Bool for a value.
sortiz night
b2gills ... and good night 23:29
23:29 molaf joined 23:32 Laurent_R left 23:33 kurahaupo left
Hotkeys Are there any interesting uses for hyperwhatever? 23:34
AlexDaniel Hotkeys: … good question 23:35
Hotkeys m: (--**)(1,2,3,4,5)
camelia ( no output )
Hotkeys m: say (--**)(1,2,3,4,5)
camelia rakudo-moar 72dbb3: OUTPUT«(0 1 2 3 4)␤»
Hotkeys there's basic stuff like that
but
AlexDaniel let me rephrase it – “are there any uses at all?”
Hotkeys lol
jnthn m: say (1,2,3,4) ~~ (*,3,*)
camelia rakudo-moar 72dbb3: OUTPUT«False␤» 23:36
jnthn m: say (1,2,3,4) ~~ (**,3,**)
camelia rakudo-moar 72dbb3: OUTPUT«True␤»
Hotkeys crazy
AlexDaniel now that's something
jnthn :)
'night, #perl6
Hotkeys night
llfourn night
AlexDaniel jnthn: I'm not sure what it means though 23:37
m: say (1,3) ~~ (**,3,**)
camelia rakudo-moar 72dbb3: OUTPUT«True␤»
AlexDaniel m: say (3) ~~ (**,3,**) 23:38
camelia rakudo-moar 72dbb3: OUTPUT«False␤»
AlexDaniel m: say (3,5) ~~ (**,3,**)
camelia rakudo-moar 72dbb3: OUTPUT«True␤»
23:38 kid51 joined
AlexDaniel aaaah 23:39
okay now I see it
m: say [3] ~~ (**,3,**)
camelia rakudo-moar 72dbb3: OUTPUT«True␤»
AlexDaniel right. 23:40
Hotkeys: well, if you created a list of possible use-cases for ** that'd be awesome
Hotkeys: most people don't even know that it exists
Hotkeys I only just learning it existed 23:41
because I looked at your unicode gist again
23:44 wamba left, wamba joined 23:45 apiw left, wamba left, cpage_ joined 23:46 wamba joined 23:47 nekrodesk left
sortiz AlexDaniel, most people don't even know that Perl 6 exists! 23:51
23:53 leont left 23:54 wamba left, wamba joined 23:55 wamba left, apiw joined 23:56 wamba joined