»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
00:00 Ben_Goldberg joined 00:02 BenGoldberg left 00:03 TEttinger left 00:04 TEttinger joined 00:07 sprocket joined 00:09 Actualeyes left, pippo left 00:24 Actualeyes joined
diakopter___ Ben_Goldberg: lexical lookup in Moar is compiled to something like that; the $OUTER lookup is far slower than the optimized case. if a frame knows it will be looking for a lexical that's more than a few levels up, the compiler makes sure it has a direct pointer to that slot on frame setup 00:24
Juerd Just found out that my mqtt thing for Perl 6 is horribly slow. Even though what it really does is just receive messages from a socket and dump them on stdout, it can't even keep up with 10 messages per second. 00:25
But with supplies and promises going on... how do I even begin to find out what's causing the delays?
diakopter___ those use libuv threadpools underneath, afaik... and I don't know the polling frequency we've configured 00:26
Juerd Earlier today I thought my slow GPRS connection was causing it, but it behaves the same on a 1 Gb/s fiber :) 00:27
It's weird that a lot of data dumped on the socket at once results in different delays for the different messages contained 00:28
diakopter___ Juerd: how many layers of supplies/promises does it use
Juerd diakopter___: Maybe 4 or 5. I'm not sure which ones are layers, and which ones are parallel. 00:29
Code's at github.com/Juerd/p6-mqtt/ if you like to see it
diakopter___ I'm curious if you've tried the profiler 00:30
00:30 Psyche^_ joined
Juerd Immediately after connecting, the server sends a burst of "retained messages". They arrive in the right order at weird and uneven intervals. 00:30
Haven't tried the profiler. Any documentation, urls, or other hints?
diakopter___ use --profile in the perl6 invocation, and make sure it terminates normally after a while... it'll output an html thingie 00:32
00:33 average left
Juerd Oh, that's nice. I'll try that 00:33
Having it terminate is a matter of replacing the "await $m.connection" with "sleep 10" ;) 00:34
diakopter___ it may not help with the supply stuff, but should certainly rule out (or not) any massive parsing slowdowns
00:34 Psyche^ left
arnsholt Juerd: Is checksumming part of the Perl 6 code? 00:35
Juerd juerd.nl/tmp/profile-1447979677.99682.html # Haven't read it myself yet
00:35 black_ant left
Juerd arnsholt: In which sense? As in cryptographic checksums? 00:36
arnsholt Yeah
diakopter___ Juerd: did it get any messages in those 10 seconds XD
00:36 tokuhiro_ joined
Juerd diakopter___: Yes, it got all of the messages during the first half second and spent 10 seconds printing most of them... 00:37
I can tell from tcpdump that the server actually did send the messages immediately
But processing them apparently takes ages
diakopter___ well, seems it only profiled the main thread?
arnsholt It says basically all the time was spent in sleep, which is odd
Juerd Yes, it does look like it.
arnsholt: The main thread actually did spend all that time in sleep. 00:38
diakopter___ maybe try pushing the message processing to the main thread :S 00:39
Juerd Hm, this is interesting: if I do a "strace -feread perl6 foo.pl", I see that the reads are spread out.
diakopter___ just for diagnostic purposes, dunno
Juerd So perhaps IO::Socket::Async is doing something weird. (I'm guessing, mostly)
diakopter___ ISTR it uses its own cobbled async emulation... but that was ages ago 00:40
00:41 tokuhiro_ left
Juerd I see these huge time jumps in strace -tt: 00:42
5945 01:41:02.513736 futex(0x4d38d94, FUTEX_WAIT_PRIVATE, 29, NULL <unfinished ...>
5939 01:41:03.082356 <... epoll_wait resumed> {{EPOLLIN, {u32=22, u64=22}}}, 1024, 59861) = 1
diakopter___ yeah I'd suspect IO::Socket::Async 00:43
Juerd I don't know what it means that epoll_wait is "unfinished" and later "resumed" 00:44
Ben_Goldberg It got a signal? 00:45
Juerd In between there's a lot of futex stuff that I don't understand.
00:45 Actualeyes left
leont futex is locking 00:45
00:46 sprocket left
Juerd This is way beyond my skill set, so I'll just hope it improves. 00:48
leont My first guess is that resumed means signals are in play, but I think that wouldn't make sense in this case 00:49
Could also be a confusing notation for a syscall that sleeps for some time, I don't know strace that well 00:50
00:53 jasanj left
leont Latter seems more likely based on googling around 00:57
Hotkeys hola 00:59
diakopter___ Juerd: looks like there's some debug output you could uncomment in src/core/IO/Socket/Async.pm 01:01
(if you rebuild rakudo)
you could study this for mental code reading :) github.com/MoarVM/MoarVM/blob/mast...ncsocket.c 01:03
01:03 doublec_ joined 01:04 leont left 01:05 doublec left, yeahnoob joined, telex left
[Coke] anyone have a summary of jnthn's latest work on NSA? 01:06
01:06 telex joined
grondilu gather/take is known to be slow in the core, but what about infix:<...>? Because if it's ok it can be used for permutations: gist.github.com/grondilu/e8536f2389fac5022f2c 01:06
TimToady ... uses gather/take internally 01:07
grondilu ah, ok. Got to stick to Seq.new I guess. 01:08
01:13 peterscott joined, yeahnoob left
[Coke] starting work on cutting the release. let me know of any issues. 01:14
grondilu gave perms an other shot: gist.github.com/grondilu/e8536f2389fac5022f2c
01:16 tokuhiro_ joined
JimmyZ grondilu: avoid return/last will be faster :P 01:21
grondilu I4m not sure how to do without a last 01:23
I mean I see but that would be a bit silly
oh wait 01:24
diakopter___ .ask lizmat did this make it into a weekly? blog.64p.org/entry/2015/10/30/073514
yoleaux diakopter___: I'll pass your message to lizmat.
01:25 peterscott left
grondilu got that he must use IterationEnd 01:25
dalek kudo/nom: 65a0af4 | coke++ | docs/announce/2015.11.md:
Add first pass at release announcement
01:28 diakopter___ left 01:32 quietfanatic left
JimmyZ yes, IterationEnd is recommanded there 01:32
grondilu recompiles racido with his rewrite of permutations 01:33
*rakudo
mattp_ /b/ 1 01:36
grondilu FYI compilation failed 01:40
with a very helpful message: Cannot auto-generate a proto method for 'splice' in the setting 01:44
01:47 aborazmeh joined, aborazmeh left, aborazmeh joined 01:51 doublec_ is now known as doublec 01:53 Herby_ joined
Herby_ Good evening, everyone! 01:53
Are there any tutorials for basic web scraping with Perl 6? 01:54
grondilu I doubt there are tutorials for such specific things. But there is a rosettacode example that does that. 01:55
I'm thinking of the one that ranks programming languages 01:56
Herby_ Doh, completely forgot about looking at rosettacode examples
thanks!
Skarsnik perl6 is kind of slow for webscrapping x)
Ben_Goldberg m: (^5).WHAT.say
camelia rakudo-moar : OUTPUT«(Range)␤»
Ben_Goldberg m: (^5).reverse.WHAT.say
camelia rakudo-moar : OUTPUT«(List)␤»
Ben_Goldberg wonders why there's no ReversedRange class. 01:57
Herby_ Just trying to do it as a learning exercise
gfldex m: (3..1).WHAT.say; 01:58
camelia rakudo-moar : OUTPUT«(Range)␤»
gfldex Ben_Goldberg: you may want to file a bug report
m: (3..1).reverse.reverse.WHAT.say;
camelia rakudo-moar : OUTPUT«(List)␤»
gfldex a range can be rather long, so turning it into a list is a bad idea 01:59
dalek kudo/nom: 78a9cfc | coke++ | docs/ChangeLog:
Add one line about jnthn++'s shaped arrays

Fix typos
02:00
kudo/nom: b33872d | coke++ | docs/announce/2015.11.md:
add committers
kudo/nom: 9e3e2ed | coke++ | docs/announce/2015.11.md:
add changeloggy bits
kudo/nom: c6626db | coke++ | docs/release_guide.pod:
Name release in the guide
Skarsnik Herby_, if you want an example gist.github.com/Skarsnik/cc6a997fe72b1caae73d
Herby_ Thanks, Skarsnik 02:01
dalek kudo/nom: dfa0c05 | coke++ | tools/build/NQP_REVISION:
[release] bump NQP revision
02:02
kudo/nom: 20c9510 | coke++ | VERSION:
[release] bump VERSION
gfldex m: say so (3..1).min < (3..1).max; # :-> 02:04
camelia rakudo-moar : OUTPUT«False␤»
gfldex m: say min 3..1; 02:05
camelia rakudo-moar : OUTPUT«Inf␤»
gfldex m: say [min] 3..1 02:06
camelia rakudo-moar : OUTPUT«Inf␤»
gfldex m: say [min] (3..1).list 02:07
camelia rakudo-moar : OUTPUT«Inf␤»
grondilu m: say min ()
camelia rakudo-moar : OUTPUT«Inf␤»
gfldex m: say [min] 1..3
grondilu m: say 0 < min ()
camelia rakudo-moar : OUTPUT«1␤»
rakudo-moar : OUTPUT«True␤»
gfldex m: .say for 3..1; 02:09
camelia ( no output )
gfldex m: .say for 1..3, |3..1;
camelia rakudo-moar : OUTPUT«1..3␤1..1␤»
02:10 kid51 joined
gfldex i will rakudobugS this tomorrow 02:10
02:11 raiph left
gfldex m: (3..1).elems.say; 02:11
camelia rakudo-moar : OUTPUT«0␤»
grondilu well, my &perms does not compile. Even if I only put "IterationEnd" in pull-one
gfldex that may not work well with github.com/rakudo/rakudo/blob/nom/...nge.pm#L89
Skarsnik Herby_, parse-html is from the Gumbo module if you are wondering, not in perl6 x) 02:12
Herby_ k 02:13
i'm walking my way through, trying to figure out whats going on :) 02:14
[Coke] how do I revert a merge commit? 02:19
Skarsnik I think there is a revert on merge? 02:20
Ben_Goldberg m: (3...1).say 02:21
camelia rakudo-moar : OUTPUT«(3 2 1)␤»
Ben_Goldberg gfldex, Is that what you wanted?
m: (3...1).WHAT.say
camelia rakudo-moar : OUTPUT«(Seq)␤»
gfldex Ben_Goldberg: no, i actually want a inverted Range literal either work or fail at compile time 02:22
grondilu making it fail at compile time would make sense. 02:23
(imho)
gfldex m: my $a = 3; my $b = 1; .say for $a .. $b; # that should fail at runtime 02:24
camelia ( no output )
gfldex well actually, that should just work
02:24 ShimmerFairy joined
grondilu you were talking about "range literal" 02:24
gfldex i were
grondilu $a .. $b is not a literal
gfldex sometimes i change what i talk about without further notice 02:25
grondilu ok
lizmat computer: messages 02:26
yoleaux 01:24Z <diakopter___> lizmat: did this make it into a weekly? blog.64p.org/entry/2015/10/30/073514
02:27 kaare_ joined
lizmat diakopter: I don't think so 02:27
gfldex m: my @l = <a b c>; dd @l[3..1];
camelia rakudo-moar : OUTPUT«List $var = $()␤»
02:29 Herby_ left 02:30 Skarsnik left 02:31 dayangkun joined 02:32 xpen joined, raiph joined
dalek kudo/nom: d9dde76 | coke++ | src/core/IO/Handle.pm:
Revert "Merge pull request #592 from pmurias/tty-checking"

This reverts commit 3806c1011edbe1bf1632d4955dd9810e8cafbc83, reversing changes made to 46c7c074910d1fef36071f925128602bedc22b9f.
Build failed on JVM
02:32
gfldex TimToady: should (3..1).elems > 0 ? 02:33
m: say (3..1).elems
camelia rakudo-moar : OUTPUT«0␤»
lizmat [Coke]: did you see grondilu's request at reverting the permutations optimization ? 02:34
[Coke]: ah, too late...
m: say (3...1).elems # gfldex 02:36
camelia rakudo-moar : OUTPUT«3␤»
lizmat gfldex: simple ranges are always increasing
if the end is lower than the start, you get 0 elems
sequences (aka infix:<...>) can be descending, thus yielding 3 elems in example 02:37
gfldex that's even documented in doc.perl6.org/type/Range :-> 02:38
at least for Range literals it should warn/fail 02:39
02:45 bpmedley joined
lizmat re tokuhiro_ 's log: gist.github.com/lizmat/5d452c8a8eb7a000bd2c 02:45
it does not require nqp, which is a good thing :-) 02:46
AlexDaniel wow NativeCall! Now it seems like I am going to write tests for a C library in perl6… At least I see no reasons not to do so. Has anybody tried that?
lizmat gfldex: you mean "Ranges always go from small to larger elements; if the start point is bigger than the end point, the range is considered empty."
?
gfldex yes 02:47
tokuhiro_ lizmat: thanks. this entry is a note about reading rakudo code :)
02:47 sprocket joined
grondilu AlexDaniel: that's a fun idea 02:47
lizmat AlexDaniel: a long time ago (well, about 13 years now), I wrote Perl 5 tests for a system written in C, so the idea at least is not new
AlexDaniel lizmat: nice! 02:48
lizmat tokuhiro_: ok, I was just surprised about the use of nqp::decont() when it wasn't necessary
AlexDaniel grondilu: yeah! I am a bit worried about NativeCall limitations, but perhaps these could be solved as I move on… :) 02:49
02:49 finanalyst joined
lizmat now wonders whether we could use syntactic sugar for "until ($foo := iter.pull-one) =:= IterationEnd 02:49
02:50 sprocket left
lizmat something like: 02:50
iterate $iter -> $value { } 02:51
grondilu shouldn't 'for' already do that? 02:52
02:52 yqt left
lizmat for doesn't automatically do a pull-one and check on IterationEnd afaik 02:52
02:53 aborazmeh left
gfldex m: my @a = do for 1..5 -> $i { $i }; dd @a; # for is doing a bit more then that 02:53
camelia rakudo-moar : OUTPUT«Array $var = $[1, 2, 3, 4, 5]␤»
grondilu like creating the array? Isn't that what 'do' does? 02:54
lizmat do only makes sure the final value of each iteration isn't sunk
again, afaik 02:55
grondilu then what you want is map, no? 02:56
map -> $value {...}, $iter
I mean if there's a difference, it's subttle
dalek kudo/nom: b8160db | lizmat++ | src/core/native_array.pm:
Revert "improve permutations"

This reverts commit 57b83f4ad7803bb2dc96313c42636229ca76bf6d.
As requested by the original PR author, grondilu++
02:57
lizmat grondilu: map and for *request* an iterator for what they get 02:58
AlexDaniel lizmat: oh, so the idea is getting to the age of consent! And I am not surprised, actually
lizmat they don't use the iterator directly (yet, anyway)
gfldex from S04: Arguments bound to the formal parameters of a pointy block are by default readonly within the block. You can declare a parameter read/write by including the "is rw" trait. The following treats every other value in @values as modifiable: 02:59
synbot6 Link: design.perl6.org/S04.html#Arguments..._the_block
gfldex that may not be a good idea for iterators 03:00
however, having a smarter for would be better then intruducing another keyword 03:01
03:01 aborazmeh joined, aborazmeh left, aborazmeh joined
gfldex for and given are doing fance stuff to $_ too 03:02
03:04 kaare_ left
[Coke] 2 failing tests, will skip them for the release. 03:06
03:08 kid51_ joined
[Coke] ... dammit. 03:09
Please hold off on any further commits.
03:10 kid51 left
[Coke] now kicking off a fresh test to make sure I've gotten lizmat's latest work. 03:10
03:10 kid51_ is now known as kid51
lizmat [Coke]: I thought you had already tagged 03:10
?
:-(
lizmat kicks off another spectest as penance 03:11
[Coke] no. I'm in the middle of the release.
lizmat [Coke]: my apologies for the misunderstanding 03:12
03:14 doublec_ joined 03:15 doublec left 03:17 kid51 left
lizmat [Coke]: I guess the two failures are due to the revert of the .t / isatty functionality on account of it breaking the JVM build ? 03:17
[Coke] eh. I'm not running the java tests, so it's not as painful as it would have been in the past. 03:18
very likely.
lizmat [Coke]: so perhaps the revert should be changed into a conditional for jvm/!jvm ? 03:19
[Coke] I'd rather not do any surgery when we don't really support the jvm at this point. 03:21
we just want to ship something that compiles. You can fix it better post-release.
lizmat okidoki (which is what I thought I was doing :-) 03:22
03:24 noganex joined
[Coke] I'm also seeing 2 hangs in the test suite. 03:25
IO-Socket-Async.rakudo.moar 03:26
dalek c: 8b0e97e | (Kamil Kułaga)++ | doc/Language/classtut.pod:
Comment about new method to not confuse new users

Due to first example contains custom `new` it may give impression that writing `new` is something that programmer want to do. Maybe it would be good to mark it as non standard behavior and say that probably want to write build method?
c: 288e717 | (Zoffix Znet)++ | doc/Language/classtut.pod:
Merge pull request #179 from perl6/teodozjan-patch-1

Comment about new method to not confuse new users
[Coke] t/spec/S17-supply/syntax.t
03:27 noganex_ left 03:28 doublec_ is now known as doublec 03:29 sprocket joined
dalek kudo/nom: 7a4fa6a | coke++ | t/spectest.data:
These tests were causing trouble.

They'll have to be fixed before Christmas :(
03:31
lizmat [Coke]: fwiw, onlt t/spec/S17-supply/syntax.t is a flapper for me 03:36
diakopter lizmat: also the Crust blog entry there 03:38
[Coke] lizmat: danke.
diakopter lizmat: this is the one I meant to paste above actually blog.64p.org/entry/2015/10/08/104052 03:41
lizmat diakopter: yes, Crust was mentioned as an ecosystem addition, afaik 03:42
diakopter oh
lizmat on October12
diakopter and then there's this.. mattn.kaoriya.net/software/lang/per...144119.htm 03:43
well, and this mattn.kaoriya.net/software/lang/per...183138.htm 03:44
SyoboiScript
truly great: method call($/){ make $func{$<ident>.Str}(self.expr($<expr>)); } 03:46
lizmat diakopter: if there would be an easy translation link to English somewhere, we could think about mentioning them ?
diakopter i dunno 03:47
Ben_Goldberg Google Chrome offers to translate the page for me ;) 03:48
diakopter it boinks the code box though
Ben_Goldberg Yeah, newlines and indentation in the example code get trashed. 03:49
diakopter tokuhiro_: have you measured how many requests/s Crust can handle? 03:57
dalek c/initial-styleguide: 75af98e | (Brock Wilcox)++ | / (2 files):
Add initial styleguide
lizmat goes to bed 04:01
tokuhiro_ diakopter: yes. i measured few months ago. but i lost the data :( 04:03
04:06 pyrimidi_ joined
[Coke] tag is pushed, go ahead. 04:06
MadcapJake I'm stuck at an impasse, looking for some ideas. bare regexes (/.../) without `rx|m` are also capturing whenever division `/` happens. Any ideas for how to avoid this? I've tried selecting a bunch of different common chars that wouldn't appear right next to a regex but it still catches when the division operator is separated by whitespace `$a / 2` etc.
04:07 jevin_ joined
MadcapJake I thought maybe they are single-line only and you need `rx|m` for multiline form, but that appears to be untrue. 04:08
[Coke] tarball for #93, "Bend" is available.
As per last time, I'll send out the release email in the morning.
04:08 frew left, zostay left 04:09 frew joined
dalek kudo/nom: e88196a | coke++ | t/spectest.data:
unskip tests post release.

  (Note that one of these wasn't skipped. whoops. it was just hanging,
should be fine, don't worry about it)
04:09
04:09 zostay joined 04:10 Actualeyes joined, colomon left 04:11 Ben_Goldberg left 04:12 colomon joined
[Coke] .tell pmurias please feel free to try to add those patches again now that the release is done; sorry I had to back them out, hopefully we can get the issue fixed easily. Thanks. 04:14
yoleaux [Coke]: I'll pass your message to pmurias.
04:23 zengargoyle left 04:26 FD0_ joined 04:27 FD0_ left, finanalyst left 04:46 zengargoyle joined
MadcapJake In case anyone's curious, I decided to go with a more inclusive rule with bare regexes that only highlights in a couple cases (the only times you'd really use a regex) rather than trying to list all the possible times a `/` wouldn't be a regex beginning delimiter. Only issue with this is that I might've missed a case but I'm pretty confident that's not the case. :P 04:58
04:58 raiph left
ugexe grammars are the bane of text highlighting perl6 in sublime text for the same reason :( 04:59
using ModernPerl (not a actual perl6 highlighter) 05:00
05:01 sprocket left
skids m: Str.^methods.grep({.name eq "Num"}).perl.say; Str.?Num # should .? be ignoring the :D candidate? 05:01
camelia rakudo-moar : OUTPUT«(method Num (Str:D $: *%_) { #`(Method|58877176) ... },).Seq␤Invocant requires an instance of type Str, but a type object was passed. Did you forget a .new?␤ in block <unit> at /tmp/rDmXHLZ66u:1␤␤»
grondilu my Seq implementation of permutations works in the core :) I'll submit a PR soon. 05:02
(it seems pretty fast too)
05:04 finanalyst joined
grondilu ah shoot I thought it worked, but it doesn't. 05:10
Hotkeys Darn 05:11
grondilu debuging some code in the core is tedious. How could I test a piece of code "as if it was" in the core? 05:13
05:30 khw left
MadcapJake ugexe: you should give mine a try then! :) It's really very richly highlighted. Just a couple minor little bits and it'll be v1.0.0 05:37
grondilu std: say "hi" 05:51
camelia std : OUTPUT«No such file or directory»
std : OUTPUT«(timeout)cat: /home/camelia/std/snap/revision: No such file or directory␤»
grondilu m: { }(rand)
camelia rakudo-moar : OUTPUT«Cannot find method 'CALL-ME'␤ in block <unit> at /tmp/L861GubJdF:1␤␤»
grondilu m: { $_ }(rand)
camelia ( no output )
grondilu m: { $_ }(rand;)
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/r4Et69LS9Y␤Unable to parse expression in argument list; couldn't find final ')' ␤at /tmp/r4Et69LS9Y:1␤------> 3{ $_ }(rand7⏏5;)␤»
grondilu ^I had made a mistake like that while writing in the core and I had no error at compilation. 05:52
more precisely it was: 05:55
m: Seq.new(class :: does Iterator { }.new();) 05:56
camelia rakudo-moar : OUTPUT«===SORRY!===␤Method 'pull-one' must be implemented by <anon|60375552> because it is required by a role␤»
grondilu m: Seq.new(class :: does Iterator { method pull-one { IterationEnd } }.new();)
camelia rakudo-moar : OUTPUT«Too many positionals passed; expected 2 arguments but got 3␤ in block <unit> at /tmp/dqKMF0QmMN:1␤␤»
grondilu ^this
m: Seq.new(class :: does Iterator { method pull-one { IterationEnd } }.new())
camelia ( no output )
06:03 larion left 06:04 breinbaas left 06:10 xiaomiao left 06:14 skids left, AlexDaniel left, xiaomiao joined 06:16 molaf joined 06:20 molaf left 06:36 domidumont joined 06:44 domidumont left
grondilu m: say Seq.new(class :: does Iterator { method pull-one { IterationEnd } }.new()).is-lazy 06:53
camelia rakudo-moar : OUTPUT«False␤»
grondilu not sure why Seq(s) are not lazy by default.
that prevents .elems to return when they are lazy.
I wanted to define C<method count-only { [*] 1 .. $!n }> but that won't work with a lazy Seq :( 06:54
06:57 domidumont joined, domidumont left, domidumont joined 06:58 diana_olhovik_ joined 06:59 Phagus joined, abraxxa joined 07:01 geraud left 07:02 aborazmeh left 07:07 abraxxa left 07:21 abraxxa joined 07:26 cgfbee left, rindolf joined 07:35 darutoko joined 07:40 softmoth_ left
masak morning, #perl6 07:47
grondilu: why not spectest a change where they're lazy by default?
[Tux] test 50000 21.241 21.127
test-t 50000 18.103 17.989
csv-parser 50000 28.644 28.529
moritz if they are lazy by default, things like @list.map(...).elems would not work 07:48
07:53 cgfbee joined 07:54 rurban joined 07:57 rurban left 07:58 sprocket joined 07:59 rurban joined 08:00 zhmylove left, zhmylove joined 08:03 yeahnoob joined 08:14 bpmedley left
grondilu it's not so much that they are not lazy by default that bothers me, it's the fact that we can't call .elems when they are lazy. Seems a bit strong a constraint, imho. For instance with permutations, we really want it to be lazy because it can be very big a list. Yet its number of elements is very well known and can be computed immediately. 08:15
moritz but that's a very specific case, unusual case 08:17
grondilu I suppose I can use a role { method elems {...} } 08:18
moritz one could always mix in a role that provides .elems
right
or a subclass
grondilu I'll try using a role
08:22 Phagus left
grondilu yeah I got something that passes t/roast/S32-list/permutations.t 08:28
08:29 meilin joined
grondilu recompiles with Seq.new(...) but role { method elems { [*] 1 .. $n } } 08:31
08:40 zakharyas joined 08:46 meilin left 08:52 kjs_ joined
grondilu hum I still get "Cannot .elems a lazy list" 08:55
08:55 black_ant joined
grondilu m: say Seq.new(class :: does Iterator { method pull-one { IterationEnd }; method is-lazy { True } }.new()).elems 08:57
camelia rakudo-moar : OUTPUT«Cannot .elems a lazy list␤ in block <unit> at /tmp/CKKA9ZrkIq:1␤␤Actually thrown at:␤ in block <unit> at /tmp/CKKA9ZrkIq:1␤␤»
psch m: my $x = Seq.new(class :: does Iterator { method pull-one { IterationEnd } }.new()) but role { method elems { 5 } }; say [+] $x.elems # .sum already cheat somehow iirc..?
camelia rakudo-moar : OUTPUT«5␤»
psch +s
grondilu m: say (Seq.new(class :: does Iterator { method pull-one { IterationEnd }; method is-lazy { True } }.new()) but role { method elems { 0 } }).elems
camelia rakudo-moar : OUTPUT«0␤»
grondilu m: say (Seq.new(class :: does Iterator { method pull-one { IterationEnd }; method is-lazy { True } }.new()) but role { method elems { 0 } }).list.elems 08:58
camelia rakudo-moar : OUTPUT«Cannot .elems a lazy list␤ in block <unit> at /tmp/Wrx0AB8vLQ:1␤␤Actually thrown at:␤ in block <unit> at /tmp/Wrx0AB8vLQ:1␤␤»
grondilu I'm losing the role when converting into list
and t/roast/S32-list/permutations.t has explicit conversion to list
m: say (Seq.new(class :: does Iterator { method pull-one { IterationEnd }; method is-lazy { True } }.new()) but role { method elems { 0 } }).list.eager.elems 09:01
camelia rakudo-moar : OUTPUT«0␤»
grondilu maybe there should be an eager in t/roast/S32-list/permutations.t
psch m: say (Seq.new(class :: does Iterator { method pull-one { IterationEnd }; method is-lazy { True } }.new()) but role { method elems { 5 } }).list.eager.elems
camelia rakudo-moar : OUTPUT«0␤»
psch doesn't help you *keep* the elems from the role 09:02
09:02 softmoth_ joined
psch grondilu: you'd probably have to adapt List.from-iterator to carry that over 09:02
grondilu not sure how to do it. try { $iter.elems } or somthing like that? 09:03
psch which would also mean having an $!elems in List or reify anyway...
maybe a PermutationsResult or somesuch would be the better idea, i don't think having explicit $!elems in List is a good idea... 09:04
grondilu: right, that's how you'd get it, but there's not really a spot in List to store it 09:05
'cause elems reifies and asks nqp about the size 09:06
09:07 softmoth_ left
grondilu moritz pointed out that having a .elems for a lazy list is very peculiar, so this possibility should not influence the behavior of List 09:07
I think we'd rather just add an eager in t/roast/S32-list/permutations.t
psch i agree with that, which is why i'm thinking PermutationsResult (or maybe KnownSizeLazyList, for general applicability) which isa List could be a workable solution 09:08
adding the eager doesn't help (and changes the language requirements)
09:09 bpmedley joined
psch it just throws away the .elems on the Seq, reifies the list and gives you that count 09:09
grondilu in any case as it is, this test file can not work with a lazy list of permutations. This is LTA. 09:10
though I don't understand how it can currently work with the gather/take implementation.
09:13 lab_ left
grondilu the following passes the test but is not lazy: gist.github.com/grondilu/e8536f2389fac5022f2c 09:13
09:13 lab_ joined
finanalyst I've been working on a Citation index for Perl6 modules. Table can be seen at finanalyst.github.io/ModuleCitation/ 09:13
I hope to update it and look at the change over time. Is it interesting? 09:14
grondilu oh it does not hang with large n though. I guess I don't quite understand what "lazy" really means. 09:15
09:16 kjs_ left
grondilu submitted a PR. 09:19
finanalyst: not sure 'citation' is the best word for this. 09:25
timotimo yo 09:33
grondilu m: say permutations(10)[*-1]
camelia rakudo-moar : OUTPUT«(timeout)» 09:34
grondilu m: say permutations(6)[*-1]; say now - INIT now
camelia rakudo-moar : OUTPUT«(5 4 3 2 1 0)␤0.74277174␤»
grondilu m: say permutations(8)[*-1]; say now - INIT now
camelia rakudo-moar : OUTPUT«(timeout)»
grondilu m: say permutations(7)[*-1]; say now - INIT now
camelia rakudo-moar : OUTPUT«(6 5 4 3 2 1 0)␤5.98858588␤» 09:35
09:36 sprocket left
dalek rl6-bench: 6ca4e0d | timotimo++ | perl6/ (3 files):
fix insertion-sort, merge-sort and pi-seq-iter for scale == 0
09:37
timotimo i need to get my desktop unbusy and re-run the benchmarks uh-gain~ 09:38
but now there's a 2015.11 tag; that'll look better in the results page
and also it'll actually pull in the latest nqp and moar; not sure how far back the last ones were when i ran benchmarks 09:42
09:44 espadrine joined 09:48 kjs_ joined 09:52 yeahnoob left
psch good news! the FAIL in t/nqp/90-findmethod.t on jvm isn't a regression! 09:55
well, NPE not FAIL
it just never worked in the first place \o/
grondilu: re your PR: can the die call actually ever happen? and if so, is there a way you can prevent that instead of dying from there? 10:02
10:04 ribasushi left 10:06 domidumont left 10:07 domidumont joined 10:08 domidumont left, espadrine left 10:09 domidumont joined 10:12 telex left 10:14 telex joined 10:16 doublec_ joined 10:17 doublec left 10:20 ribasushi joined
arnsholt timotimo: I pushed some stuff to iperl6kernel last night. Now it can evaluate code properly! =D 10:20
psch arnsholt++
still not sure how functional we want the stock REPL 10:21
like, moreinput is quite a beast :/
jnthn morning, #perl6
psch o/ jnthn 10:24
arnsholt The hard part of making it work was network communication and such
Evaluating code and capturing stdout was really, really simple 10:25
10:26 domidumont left, salv0 joined 10:27 domidumont joined
finanalyst grondilU: if not citation, then what? It mirrors citation indices in academic papers 10:28
konobi morning all
psch so the NPE in t/nqp/90-findmethod.t happens because the method it finds is a CodeRef that pretty much directly points at KnowHOWMethods.methods, and the parameterized constructor for CodeRef doesn't set the STable 10:31
and that constructor is what we use to bootstrap the knowhow
10:33 espadrine joined 10:35 finanalyst left
jnthn Maybe some fool played fast and loose when doing the bootstrap... :) 10:36
psch i mainly don't know how to figure out which STable fits there... vOv
jnthn Is there a BOOTCode type somewhere? 10:37
psch yeah, the KnowHOWBootstrapper stuffs that into the gc 10:38
so that means we should also already have it, right?
jnthn Maybe we have to come back and fix up things created "early"?
10:39 pdcawley joined
psch oh, right. we don't have the BOOTCode STable yet 10:41
10:50 softmoth_ joined 10:51 znpy joined 10:54 softmoth_ left
psch testing now 10:55
the file on its own worked, but running the full nqp tests seems sensible :P
jnthn :P 10:56
jnthn is digging into getting native shaped arrays working
El_Che TimToady: I saw your craiglist talk yesterday. \o/ 10:57
10:59 breinbaas joined
dalek p: 3647cc5 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/KnowHOWBootstrapper.java:
Get t/nqp/90-findmethod.t passing.

Apparently someone "played fast and loose" with bootstrapping the KnowHOW, we just didn't notice before. pmurias++ for the test and jnthn++ for a hint or two.
11:01
psch there we go, clean nqp-j tests
jnthn :) 11:02
"someone"...wonder who? :D
psch ...no idea, i wasn't around then :)
dalek kudo/nom: a2e5a00 | peschwa++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java:
Revert "Properly fix RT #126673."

This reverts commit 7781481936a6673953a781c2b0c9a8c77a1e8174.
11:03
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=126673
dalek kudo/nom: 9c82d4c | peschwa++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java:
Turns out we can fix this much simpler, as here.

The original problem, as it turns out, was the operands to istype being the wrong way aroud. Additionally, renaming the variable containing the type that's supposed to bypass the type check to "bypassType" seems like a good code-as-documentation decision.
psch and with this i fixed that ticket 3 times and revert two of the solutions... :S
moritz does that actually increase or decrease your confidence that it's fixed properly now? :-) 11:04
11:04 doublec joined
psch each iteration increased the confidence, of course 11:04
11:05 black_ant left, eliasr joined
psch but well, in general i don't develop much of that anyway... confidence that is :P 11:05
11:07 doublec_ left
moritz IME there's a drop-off point 11:11
after the 5th iteration or so I believe that the problem has no good solution, and my confidence is very low again
psch well, in this instance the previous iterations had to be discarded because i didn't pay enough attention to see the actual problem... :S 11:17
11:18 rurban left 11:20 Skarsnik joined
jnthn Darn, wish I was feeling cleverer today... 11:22
11:27 dayangkun left
nine jnthn: it can always be worse. Today I've failed so far in checking if the modification times of a list of precomp files are all before the one I'm checking against. This is a stupid beginner's exercise, damn it :) 11:39
jnthn all($those-times) < $current-time # :) 11:41
Well, @those-times :)
11:42 pecastro_ joined, pecastro left 11:50 zakharyas left
nine Is all() actually smart enough to stop looking once one element violates the condition? 11:52
11:53 rurban joined
jnthn Not sure in this case. On Bool and ACCEPTS it is 11:53
11:53 doublec left
nine I tried something along not $store.path(any(@ids)).modified >= $since which works when I try it separately but when I do it for real, it still fails to recompile the outdated module. 11:54
Well I will find the reason in the afternoon . Probably some stupid mistake somewhere.
jnthn Probably :) 11:55
11:56 doublec joined 11:58 leont joined
JimmyZ Isn't it any() ? 12:00
jnthn Uh, yes :) 12:01
12:02 black_ant joined 12:06 black_ant left
grondilu psch: no, the die can not logically happen. I did put it there to catch a coding error or something. I guess I should remove it but I thought it was quite cheap so I left it as is. 12:06
12:06 CQ joined 12:07 black_ant joined
psch grondilu: my concern was mostly from an end user perspective. assuming it could happen it should throw something from X::, and if it can't it doesn't need to be there 12:07
12:07 black_ant left
dalek kudo/nom: ec6220f | jnthn++ | src/core/ (2 files):
Factor out shaped storage alloc/interning.

So we can use it for both Array and array.
12:07
kudo/nom: 27b1ab6 | jnthn++ | src/core/native_array.pm:
Add a default .shape method to array.
kudo/nom: 8122895 | jnthn++ | src/core/native_array.pm:
Allocate shaped storage for native arrays.

This gets the fixed size case working already, but not multi-dim cases.
12:18 doublec left 12:20 rindolf left, doublec joined 12:21 kaare_ joined 12:23 bombless joined 12:26 bbarker joined 12:28 sufrostico joined
dalek kudo/nom: ccd386b | jnthn++ | src/core/native_array.pm:
EXISTS-POS for native shaped arrays.
12:29
12:30 Upasaka left 12:31 bombless left, TEttinger left 12:32 kjs_ left
grondilu psch: ok, removed from the patch 12:33
12:37 pdcawley left 12:38 kid51 joined, softmoth_ joined 12:42 black_ant joined, black_ant left, softmoth_ left 12:45 black_ant joined
dalek c: 032c382 | (Brock Wilcox)++ | doc/Language/classtut.pod:
Minor grammar fix
12:46
12:49 Ven joined
Ven \o 12:50
yoleaux 19 Nov 2015 22:59Z <Zoffix> Ven: could you look at modules.perl6.org/ and try pressing SPACE or Down Key. Does the same issue happen as on docs.perl6.org that you can't scroll?
12:50 kid51 left
dalek kudo/nom: e53be19 | jnthn++ | src/ (2 files):
Add missing optimization of multi-dim assign.
12:52
kudo/nom: 9fb2183 | jnthn++ | src/core/ (2 files):
Implement access to native shaped arrays.
12:53 pecastro_ left
dalek ast: ab1cf9a | jnthn++ | S09-multidim/ (2 files):
Some initial tests for native shaped arrays.
12:53
jnthn lunch & 12:54
12:54 ab6tract joined
ab6tract jnthn: i'm curious about the junction internals ... why are they not implemented using the reduce op? 12:55
pink_mist he /just/ went off to lunch
ab6tract we would get short-circuiting for free...
[&&] $current-time X> @all-the-times 12:56
i guess the difference is that this does not return a junction, so is more equivalent to so all(@the-times) > $current-time
but i'm also at a loss as to when the bare junction is really worth it 12:57
considering they are too slow to use in core, and seem to be generally discouraged for production as well
hmm, i guess the semantics change very significantly as well 12:58
13:00 pecastro joined 13:02 xpen left
Ven urgh, I was writing a script to parse some c++ for $work, then I got remainded I was writing a script to parse some c++ 13:05
Skarsnik good luck lol 13:07
13:09 pippo joined
Ven Skarsnik: I gave up :). no way to track namespaces easily. it'd be easier to use some clang api at this point 13:10
grondilu the guy from www.quickperm.org/ authorized the use of his algorithm inside the code. I can forward the email for archive purposes or something.
s/code/core/
Skarsnik Ven, if you are bored, write something to parse c/cpp headers and extract definition! 13:11
13:11 ab6tract left
dalek c: 0284491 | (Ricardo Signes)++ | lib/Language/classtut.pod:
fix anchor link

The old link was to `#Object Construction` but the live page has an underscore in place of space.
13:11
c: 1f5df41 | (Zoffix Znet)++ | doc/Language/classtut.pod:
Merge branch 'patch-1' of github.com/rjbs/doc into rjbs-patch-1
c: b420ad8 | (Zoffix Znet)++ | doc/Language/classtut.pod:
Merge branch 'rjbs-patch-1'
Ven Skarsnik: well, I already extract definition, but it's just "one-off". I don't know about the context. So, I can't parse c++
Skarsnik I am not kidding, it could be useful to write C/Cpp binding x) 13:12
Ven Parsing C++ is *very* hard 13:16
leont Yeah
For reasons similar to perl5
13:16 abraxxa left
Ven the result of a function in C++ can change a program between "parse error" and "working" 13:17
leont though the ambiguities are in slightly different places
Ven constexpr functions, SFINAE, etc, are things you need to take into account *at parsing time*
13:17 pecastro left
Ven m: BEGIN { say 'hey'; }; $xxx++; # look 13:17
camelia rakudo-moar : OUTPUT«hey␤5===SORRY!5=== Error while compiling /tmp/fhn7Yb2YvL␤Variable '$xxx' is not declared␤at /tmp/fhn7Yb2YvL:1␤------> 3BEGIN { say 'hey'; }; 7⏏5$xxx++; # look␤»
Ven ^ exactly this kind of crazy stuff ;)
13:19 pecastro joined, CQ left 13:20 black_ant left
dalek c: 297b8a1 | (Wenzel P. P. Peppmeyer)++ | doc/Language/control.pod:
Fix example for Language/control/last.
13:21
c: f41e3a4 | (Wenzel P. P. Peppmeyer)++ | doc/Language/control.pod:
Fix indentation for example of Language/control/next.
c: c1ba6f4 | (Zoffix Znet)++ | doc/Language/control.pod:
Merge pull request #203 from gfldex/master

Fix last example and indentation for next example.
13:26 yqt joined 13:34 pecastro left, pecastro joined 13:36 domidumont left
jnthn ab5tract_: We often implement hot-path-ish stuff in CORE in unidiomatic ways to squeeze performance out, for pragmatic reasons. While it'd be wonderful if we had the resources to have optimized the heck out of everything already and not have to do such things, in reality careful optimization of various built-ins can make a big difference to the performance of people's Perl 6 programs. 13:39
13:39 domidumont joined
dalek kudo/nom: 60e149f | coke++ | docs/announce/2015.11.md:
don't scare anyone
13:41
kudo/nom: 1538532 | coke++ | docs/announce/2015.11.md:
remove reference to old release scheduling
jnthn Phew! :P 13:42
13:43 zakharyas joined
[Coke] email sent 13:43
dalek href="https://modules.perl6.org:">modules.perl6.org: 8ba9ad4 | (Zoffix Znet)++ | / (3 files):
List missing prereqs / Update deployment docs

Closes #29
13:44
[Coke] Anyone have any feedback to moving the monthlies to the 3rd saturday of a month?
dalek href="https://modules.perl6.org:">modules.perl6.org: a97752d | (Zoffix Znet)++ | DEPLOYMENT.md:
Write code blocks in Markdown, not POD
13:46
jnthn [Coke]: I'm not sure whether moving it to a weekend makes it easier to get volunteers, harder to get volunteers, or means we get a different set of volunteers. :)
13:46 pecastro left
jnthn [Coke]: I'm certainly +1 to simplifying the rule, anyway. 13:47
[Coke]: I don't have any strong feelings on what it is.
13:48 ZoffixW joined, zakharyas left
jnthn (So long as it's not like "the first time the moon is full" or something :)) 13:48
13:48 pecastro joined
ZoffixW [Coke], there's a typo here: "insure" -> "ensure": github.com/rakudo/rakudo/commit/60...58731a9R61 13:48
.oO( technical debt insurance... ? )
13:49
jnthn
.oO( Mustn't prevent werewolves cutting releases )
[Coke] jnthn: The release process takes hours to do. As someone who has done the last 2 releases, I'm more likely to find time to do this on the weekend than on a school night.
ZoffixW: yes, well, that just went out in an email. too late, sorry. :| 13:50
jnthn [Coke]: OK, that's a useful data point.
[Coke] thinks there's enough slop in ensure/insure that his honor will be ok here. :|
moritz what do you guys think about automating part of the release process?
jnthn Short of a bunch of people jumping up saying "I do releases but won't if it's on a weekend", I'm good with third Saturday. 13:51
moritz: +1
13:51 zakharyas joined
moritz has been doing some continuous delivery for $work :-) 13:51
jnthn Good automation removes tedium and helps avoid mistakes.
[Coke] moritz: we need CI, we need a better branching strategy... yes to all that.
Ven did someone not look into CI 1/2months ago? I seem to remember something along those lines 13:52
dalek href="https://modules.perl6.org:">modules.perl6.org: 242aaeb | (Zoffix Znet)++ | README.md:
Fix code sample indents and Markdown errors
zengargoyle good * #perl6
ZoffixW \o
[Coke] jnthn: no issue with doing a moar release closer to that cycle? 13:53
You could do it friday night, even.
Ven o/ zengargoyle 13:54
MadcapJake ZoffixW: do you think that sigilless variables should be highlighted? I feel like, as they aren't containers, maybe they should be left unhighlighted. When you subsequently access them, you don't use the backslash so it won't highlight there. I could highlight the backslash though. 13:55
ZoffixW MadcapJake, I don't think it's really that important, TBH 13:56
jnthn [Coke]: Yeah, doing it on Fridays works for me.
Ven ZoffixW: I'll test the space/arrow scrolling issue tomorrow when I get back home
ZoffixW cool
jnthn [Coke]: Either I'm working at home so it's no issue, or I'm on my wake back from teaching, in which case it's something to do on a train/airport/plane
13:56 g5 is now known as g4
Ven ZoffixW: at least I know it works here ;-) 13:56
13:57 g4 left, g4 joined
ZoffixW :P 13:57
[Coke] do we need to start marking "Supported" releases?
We're still releasing something every month, but I would expect that 2016.01 might not be expected to an automatic upgrade to 2015.12 13:58
perhaps, "Recommended" instead of Supported?
nine [Coke]: why? Shouldn't it be the exact opposite? Since after christmas we have to care about backwards compatibility, upgrades should be much safer 13:59
grondilu m: say first * !%% 3, :last, ^20;
camelia rakudo-moar : OUTPUT«Unexpected adverb 'last' passed to first on List␤ in block <unit> at /tmp/wPys4pKHCC:1␤␤Actually thrown at:␤ in block <unit> at /tmp/wPys4pKHCC:1␤␤»
grondilu lizmat: ^not sure how to use :last
[Coke] nine: yes, we care, so we don't want people installing something where some idiot (like me) accidentally breaks backward compatibility 14:00
this is less of a concern if we move to a more conservative branching setup 14:01
14:02 samb1 left
[Coke] our monthlies are more like p5 odd numbered releases, in my mind. 14:03
14:03 samb1 joined, AlexDaniel joined 14:04 nmp joined
grondilu m: say first * !%% 3, :end, ^20; 14:07
camelia rakudo-moar : OUTPUT«19␤»
grondilu m: say first * !%% 5, :end, ^20;
camelia rakudo-moar : OUTPUT«19␤»
jnthn [Coke]: Generally, I feel that if something is considered difficult (like making releases that don't break back-compat) then we want to do what we can to enable us to do it regularly and reliably, rather than make it a big deal.
arnsholt Argh. Can't push to github for some reason >.<
ZoffixW arnsholt, same
dalek href="https://modules.perl6.org:">modules.perl6.org: d440899 | (Zoffix Znet)++ | / (3 files):
Fix typos, formatting, and links
jnthn [Coke]: I'm somewhat considering a spectest re-org whereby all the spectests we consider "the 6.c spec" move into a 6.c/S0*-* structure
ZoffixW Oh. never mind :) It git push sat there for like a minute
grondilu m: say first * %% 5, :end, ^20; 14:08
camelia rakudo-moar : OUTPUT«15␤»
Ven grondilu: cute
arnsholt ZoffixW: Oh! So it might actually be a GitHub issue. I'll try to be more patient
jnthn [Coke]: And then we make the 'use v6.c' and treat those as things we shouldn't touch/change.
*them
arnsholt I just have terrible troubles with the WiFi here at work; assumed that was the cause
14:10 brrt joined
jnthn [Coke]: So "did we break back-compat for 6.c" is largely "did we break the spectests for 6.c". We'll of course find holes (in fact, I think a task for 6.d will be using coverage analysis to greatly improve the test suite). 14:10
brrt good * #moarvm
what's 6.d?
(i suppose 6.c is christmas... i'd expect 6.e for easter) 14:11
jnthn brrt: We'll have to pick a holiday/event :P
Devali? :)
moritz d: "definitively awesome" 14:12
arnsholt I'd vote for Christmas, Diwali, Eid =)
brrt what's diwali
jnthn Oh wow, you can even spell it right :)
arnsholt brrt: Hindu festival of light
brrt ah, ok, cool 14:13
arnsholt jnthn: My girlfriend studies Hinduism. I've learned a lot just by osmosis, TBH =)
jnthn :)
I'm mostly aware of it 'cus of regularly visiting Indian restaurants. ;) 14:14
arnsholt That'll do it too =D 14:15
ilmari diwali has just been, though
11 November
arnsholt Although regarding spelling, there's a pile of different romanisations 14:16
jnthn ilmari: Good news: there'll be another one next year.
ilmari jnthn: true
jnthn ilmari: This is for *langauge* version, not implementation version. A year is probably about right. :)
arnsholt Divali is a common variant as well, I think
[Coke] jnthn: (make important things easy) it sounds convincing, ja.
arnsholt Also deepavali, from the Sanskrit name of the festival (Diwali being the Hindi name, IIRC)
grondilu I did try quickperm in the core and it seems pretty good, but it does not return the same order. Does the order in t/roast/S32-list/permutations.t matter? 14:17
jnthn Yes, transliteratin is an imprecise art :)
arnsholt Not to mention a serious case of xkcd.com/927/
14:18 gar joined
jnthn arnsholt: And...transliteration schemes don't round-trip. :) 14:19
(In general, at least)
14:21 Actualeyes left
dalek kudo/nom: 287d191 | coke++ | / (2 files):
Change release schedule starting in 2016
14:21
kudo/nom: 9e48f15 | coke++ | docs/release_guide.pod:
Going forward, we're probably not using mongers
kudo/nom: c1010d4 | coke++ | docs/release_guide.pod:
name the Christmas release already
kudo/nom: 9115a85 | coke++ | docs/release_guide.pod:
Put next year's planned dates out there
[Coke] Please feel free to discuss any of these release related changes I'm making. 14:22
I threw out my commit that marked Christmas as "recommended" based on the comments here.
arnsholt jnthn: Scholarly transliteration schemes (transcription, really) generally do quite well. But transliterations that normal people use generally don't, yeah
Of course, scholarly schemes tend to look vaguely like Vietnamese orthography =) 14:23
zengargoyle i has the wicked thought last nite... get a P6 <-> neovim thiing happening and make P6 highlight itself.
jnthn arnsholt: Turns out if you get an official translit of my surname into Ukrainian, and then they translit it back to English, it comes out as "Vorsinhton" :) 14:24
dalek kudo/nom: fde57e9 | jnthn++ | src/core/native_array.pm:
Give array a sink method.
14:26
kudo/nom: 4aaa663 | jnthn++ | src/core/ (3 files):
Share some shaped array methods in a common role.

This means they can be used by Array and array.
14:26 softmoth_ joined 14:27 znpy left
arnsholt jnthn: Hee hee. I'd probably guess at Washington rather than Worthington for that =D 14:28
14:29 molaf joined 14:31 softmoth_ left 14:35 Actualeyes joined 14:38 skids joined, znpy joined 14:40 rindolf joined
dalek kudo/nom: 22e51b7 | jnthn++ | src/core/native_array.pm:
Fix native array's .flat method to give Seqs.
14:43
frastructure-doc: 9b5586b | (Zoffix Znet)++ | hosts/www.p6c.org.pod:
Mention Zoffix has root acces
14:44
14:45 tokuhiro_ left
dalek kudo/nom: 58d05f3 | jnthn++ | src/core/ (3 files):
Move many more methods to shared shape role.
14:47
kudo/nom: 6d8ca4c | jnthn++ | src/core/Array.pm:
Fix shaped array type name.
ast: ba47c16 | jnthn++ | S09-multidim/methods.t:
Test methods on shaped native arrays.
14:48 ZoffixW left 14:51 gar left
[Coke] коледа! 14:53
I am half tempted, btw, to name the 2015.12 release коледа
(which is both the likely original Belrussian spelling of my surname, and "Christmas" in several languages. 14:54
jnthn ooh :)
14:54 pdcawley joined
[Coke] I know, right? Plus it's unicode. :) 14:55
ok, having said that out loud, now it's more like 85% tempted. 14:56
[Coke] hurls en.wikipedia.org/wiki/Koliada as a reference. 14:57
tadzik Kolęda! 15:00
ooooh
how it fits together
15:04 rorx left
Ven I just wrote as part of some doc "you need to use nullptr and not 0, because (converted) constant expression are forbidden to implicitly convert integers to null pointer constants". Please, Perl 6, never get so confused (or your users) about your own language :P. 15:05
15:05 sprocket joined
Ven goes back to writing some perl6 script and (hopefully) manage to automate this code generation... 15:05
15:06 softmoth_ joined 15:08 domidumont left 15:10 xpen joined
Ven tadzik++ # File::Find 15:11
tadzik :)
arnsholt timotimo: I've pushed a couple more commits to iperl6kernel. At this point, I think you can mention it in the weekly on monday =D 15:12
It supports the basics of capturing IO, returning reults and handling errors 15:13
I'm gonna open some issue tickets too, to point the way for other people to continue hacking on it 15:14
Skarsnik damn modules.perl6.org stopped opening a new tab when you click on a module name x) 15:18
dalek kudo/nom: 5777a46 | jnthn++ | src/core/Array.pm:
Liberalize "is it shaped" checking.

So the code works if the source isn't Array, but is shaped.
kudo/nom: 67f8715 | jnthn++ | src/core/ (3 files):
Support assignment to native shaped arrays.
tadzik Skarsnik: yay! 15:19
dalek ast: a1f83cb | jnthn++ | S09-multidim/assign.t:
Tests for assignment to native shaped arrays.

Along with tests for assignment from native shaped to non-native shaped and vice versa.
tadzik I demand a liberty to choose whether my clicks open in a new tab or not
Skarsnik I don't like it! 15:20
tadzik why!
now you can open in a new tab or in the same tab :)
15:20 nwc10 joined
tadzik twice as many choices depending on your scenario 15:20
15:21 nwc10 left
jnthn OK, with around 300 passing tests for shaped arrays now (covering native and non-native) that should cover most of the ground, I'm going to close the RT about it. We'll likely find some bits and pieces, but they can get their own tickets as we run into them. 15:21
zengargoyle tadzik: amen brother!
stmuk github.com/rakudo/rakudo/pull/595 *bump* 15:22
arnsholt jnthn++ # Much shape, very array, wo! 15:23
*w
15:24 domidumont joined
MadcapJake language-perl6fe launches! v1.0.0 adds set/bag/mix operators, concurrency functions, and more numbers (nums, rats, radix numbers) github.com/MadcapJake/language-perl6fe/releases 15:25
tadzik nice! 15:26
dalek rl6-bench: 2bd9f8a | timotimo++ | minibenchmarks.pl:
these benchmarks initialize with rand, so don't expect 0.
15:27
15:31 kjs_ joined
dalek ast: 37a7757 | jnthn++ | S09-typed-arrays/native- (2 files):
Update tests for .flat behavior on native arrays.
15:32
jnthn Down to 38 xmas tickets 15:33
15:35 ZoffixW joined, loren joined
ZoffixW Skarsnik, what browser are you using? 15:36
Skarsnik Chrome
on win7
Ven jnthn++ :-). that's a great feature, and it's nice to see it landing
flussence has noticed the "Stage parse:" line hovering around 80/89s recently, but no inbetween values. Weird. 15:38
jnthn Ven: Thanks. I'm glad to have got that in. ) 15:39
Ven m: my constant $a = 3; my @a[$a]; 15:40
camelia ( no output )
ZoffixW Skarsnik, the most obvious suggestion is to click with the middle click. It'll open in a new tab. But you can also install Tampermonkey (tampermonkey.net/) plugin and rewrite all <a> elements to have target="_blank".
Ven that's really neat :-).
15:40 brrt left
jnthn Ven: oh, it's more dynamic than that even 15:40
ZoffixW Skarsnik, as to why it was removed: (a) it existed for just a week or two; (b) it's horrible practice and significantly impacts usability.
jnthn m: my $a = 2; my $b = 3; my @a[$a;$b]; say @a.shape
camelia rakudo-moar : OUTPUT«(2 3)␤»
Skarsnik ZoffixW, I mean for a whilte it opened a new tab and it was nice! it's just complaining to compain x)
Ven jnthn: oh, it's all dynamic then? no compile-time shenanigans? ok!
ZoffixW Skarsnik, heh. OK :)
jnthn Well, number of dimensions is static-er :) 15:41
There's an escape hatch for that too
Ven ||, right?
jnthn We push enough info VM-wards that we should be able to do nice code-gen later
Yeah, ||. I didn't implement that yet.
Ven that's what it seemed from looking at the commits :)
jnthn Not sure whether we need it for 6.c. TimToady may think so. :)
ZoffixW is dissapointed this went nowhere: www.w3.org/TR/css3-hyperlinks/ 15:42
Ven All the "big" S09 parts might not be needed for xmas
jnthn Most remaining S09 bits besides this were alerady on my "not for xams" list :)
Skarsnik does that look good so far? (It's a blog post about scrapping html with perl6) skarsnik-stuff.blogspot.com/b/post...;type=POST 15:43
This crazy huge link x)
jnthn Scrapping? Or scaping? :D
15:43 kjs_ left
jnthn *scraping 15:43
ZoffixW hehe
jnthn bah, the irony, I point out a spello and make one while doing it :) 15:44
zengargoyle is there a difference when dealing with the web. :P
ZoffixW Skarsnik, you also used "scrap" instead of "scrape" in the first sentence :)
flussence ZoffixW: normally I'm in the "all this fancy stuff doesn't belong in CSS" camp, but defining how links act totally makes sense in there
jnthn OK, time for a break, shopping, etc. bbl o/
Skarsnik screw you, it's not easy to write english xD 15:45
zengargoyle i was wondering a few days ago what POD would look like using Tufte.css styling. 15:46
Skarsnik but, yeah I will fix it
15:46 tokuhiro_ joined
flussence (I think CSS as a whole should be burned down and redesinged from scratch, mind you) 15:46
zengargoyle edwardtufte.github.io/tufte-css/
15:46 xpen left
ZoffixW flussence, it ain't bad when you use CSS 15:46
err SASS 15:47
15:47 rorx joined
huf syntax is hardly the problem with css 15:47
15:47 brrt joined
flussence repetition ain't my main beef, it's more that if you squint hard enough, it resembles PHP :) 15:48
huf :)
zengargoyle along with a dist-zilla type tool to create github.io pages from POD automagically.
ZoffixW doesn't see any other serious problems that'd warrant a rewrite
huf my problem is with the thing css lets you adjust. it's a completely insane machine full of one-purpose hacks, lacking general solutions.
gfldex while your zeal is hitting CSS hard, could you direct it towards font-size: \d+px too? Pixels don't work well with modern displays, you know.
huf :D 15:49
yeah, that's the sort of stuff...
so basically css is fine, browsers are terrible :)
Skarsnik I hate css, it's always trial and error to get something right xD
ZoffixW Skarsnik, I'd suggest removing this entire bit: i.imgur.com/2ORwavs.png It just sounds like incoherent rambling and makes a jab at Perl 5, which is a very sore point at the moment.
dalek rl6-bench: 1af2f3e | timotimo++ | minibenchmarks.pl:
fix the filename of pi-sequential-iteration ...
15:50
15:50 tokuhiro_ left
Skarsnik ZoffixW, make a jab at perl 5? I don't even mention it xD 15:50
15:50 Ven left
Skarsnik oh I dumb, the first sentence >< 15:51
ZoffixW Skarsnik, second sentence :)
15:51 Khisanth left
huf also, the word is "scrape" i think. or "scraping" 15:51
ZoffixW Yeah
huf "scrap" the verb means to throw it out, which is probably not what you want 15:52
15:52 Khisanth joined
ZoffixW Skarsnik, and my other comment would be to modify or even remove the "Perl 6 Issue" section. Judging by how much people over-read the FAQ section (doc.perl6.org/language/faq#Is_Perl_...or_me%3F), I imagine there might be an issue of people misreading your comment as "ZOMFG! Perl 6 is horribly slow and it's a major issue". Next thing it goes viral and does a lot of damage. Does that section need to be there at all? You quote 5-20 se 15:53
conds for start up, but that sounds like your modules aren't precompiled. Also, machines are different: a test that takes 30 seconds on my $work box to run, completes in just 3 seconds on my home box.
15:54 n0tjack joined
Skarsnik Well it was/is really annoying when I was messing around with this stuff 15:54
ZoffixW Skarsnik, and this reference too: "...and being perl6 native is very slow.. takes 30 secs to parse the web page" 15:55
Skarsnik, sure, I can understand that, but your writing in its current form suggests Perl 6 has a major problem with being slow.
zengargoyle heh, i take scrap as fight
Skarsnik I switched to write perl5 script the time to figure stuff x)
ZoffixW Skarsnik, Perl 5 had decades to optimize itself. Perl 6 hasn't had a chance. It's an entirely unfair comparison.
arnsholt People more on top of Rakudo and MoarVM development: Do we have a Github issue or RT ticket for the threads hang issue? 15:56
Skarsnik I don't want to troll. It's just well, a reality and it's annoying
ZoffixW Skarsnik, someone not overly involved in the language could look at your "30 secs to parse a page" roll their eyes, laugh, and never look at P6 again.
Skarsnik, what's the sample code you used to get those numbers?
timotimo Skarsnik: it'd be nice if you could use zef in the mean time if you're going to do performance measurements. because zef still precompiles stuff 15:57
ZoffixW Skarsnik, (and if it's the one on the page.. I can't copy/paste it)
Skarsnik Oh yeah, this preview stuff is dumb 15:58
15:58 n0tjack left
timotimo for rakudo star we could ship a panda with the ability to precompile monkey-patched back in :P 15:59
16:01 n0tjack joined
Skarsnik root@testperl6:~/piko# perl6 -e 'use HTML::Parser::XML; my $html = slurp(@*ARGS[0]); my $time = now; my $xml = HTML::Parser::XML.new().parse($html); say now - $time;' /home/skarsnik/Téléchargements/favourites.htm 16:02
37.0458354
root@testperl6:~/piko#
ZoffixW Where do I get this "zef" from?
Skarsnik, what do you get with? perl6 -e 'use HTML::Parser::XML;' 16:04
Skarsnik, time perl6 -e 'use HTML::Parser::XML;
'
Skarsnik I downloaded the page x)
timotimo t.h8.lv/p6bench/2015-11-19-release_10_11.html - this looks nice - still the same results as last night, but one additional benchmark now has output for one of the two.
Skarsnik I just wanted to point out the time to parse the webpage, not the compile time ^^ 16:05
16:05 polettix joined
timotimo ZoffixW: rakudobrew build-zef 16:05
16:05 n0tjack left
ZoffixW Thanks. 16:05
flussence timotimo: are the first two graphs measuring startup time?
timotimo yeah 16:06
flussence oh, makes sense. looks like it's getting better too :D
timotimo i don't know how, but yeah :)
16:07 pecastro left
polettix std: my ($x,) = 1 Z 1; say $x.WHAT; 16:07
camelia std : OUTPUT«No such file or directory»
flussence I'm about 90% sure that's from all the paper cuts lizmat++ has been fixing
polettix p6: my ($x,) = 1 Z 1; say $x.WHAT;
camelia rakudo-moar: OUTPUT«(List)␤»
std : OUTPUT«(timeout)cat: /home/camelia/std/snap/revision: No such file or directory␤#perl6 <polettix> Perl6: my ($x,) = 1 Z 1; say $x.WHAT;␤cat: ~/rakudo-m-inst/revision: No such file or directory␤»
16:08 pecastro joined
polettix p6: my ($x,) = 1 Z 1; say "{$x.WHAT}"; 16:08
camelia rakudo-moar: OUTPUT«Use of uninitialized value of type List in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/tmpfile:1␤␤»
timotimo i don't think anything liz has done would have improved bare startup time?
Skarsnik ZoffixW, hm real 0m42.170s user 0m31.564s (the time the script show remain the same) the web page is www.fimfiction.net/bookshelf/75144...date_added
flussence thinking about it... maybe not
everything's precompiled there so making bits of the compiler faster wouldn't do much.
polettix is there anything implicitly wrong in calling $x.WHAT in the block {} inside quotes? 16:09
timotimo polettix: that'll get you the type object, which will give you that warning when you try to stringify it
polettix: but it also tells you ".^name, .perl, .gist or .say" would work
polettix timotimo: then I can’t get the difference wrt say $x.WHAT
flussence polettix: .^name seems like what you really wanted there 16:10
timotimo polettix: say $x.WHAT directly calls .gist on $x.WHAT. when you put it into a string, that uses the ~ operator to interpolate the value into the string
dalek kudo/nom: 09acf19 | coke++ | docs/release_guide.pod:
float an alternate tag/name for Christmas.

See en.wikipedia.org/wiki/Koliada
16:11 domidumont left
[Coke] The doc answer to "are we slow" should be that rakudo's architecture offers many chances for optimization, and we are pursuing them. 16:11
polettix timotimo: so there’s something “more” to putting stuff in the args list of say as opposed to using interpolated blocks 16:12
thanks
timotimo polettix: no, not really
polettix: the difference is really just "say $x.WHAT.gist" vs 'say "hello! " ~ $x.WHAT ~ " is my friend!"'
well, in the second example it should read $x.WHAT.Str for clarity
and the difference between .Str (which is what ~ does for you) and .gist (which is what say does for you) is what you experience 16:13
16:13 modcure joined
timotimo to be really precise, the second one should read: 16:13
polettix timotimo: ok, so not “more”, but “different” (.gist instead of .Str)
timotimo say ("hello! " ~ $x.WHAT ~ " is my friend!").gist'
yeah
polettix thanks 16:14
ZoffixW timotimo, hm. How do I make zef install stuff? zef install HTML::Parser::XML says it got installed but trying perl6 -MHTML::Parser::XML -e1 tells me it can't find it
timotimo at the time say gets to call .gist on its argument, the $x.WHAT has already had .Str called on it by the ~ operator
polettix and I have to apologize with you all, I entered here without even saying “hello”, which was very rude of me :)
timotimo haha, don't worry :)
that's better than coming in, saying hello, waiting for a minute, and leaving again :D
polettix (but my “discover” was eating too much brain cycles)
jnthn .tell nine Would be good to check/test how the updated repo stuff handles rt.perl.org/Ticket/Display.html?id=126688 - hopefully it catches the error and reports it...but good to check :) 16:17
yoleaux jnthn: I'll pass your message to nine.
[Coke] (slow) and also pointers on how to investigate speed issues (e.g. --profile)
16:17 diana_olhovik_ left 16:19 lab_ left, lab_ joined
Skarsnik ZoffixW, ok, should be less trolly skarsnik-stuff.blogspot.com/b/post...;type=POST x) 16:20
16:21 loren left
skids jnthn++ yay!! NSAs!! And not the creepy listen-to-your-phone-calls kind!! 16:21
ZoffixW Skarsnik, looks good :)
Skarsnik It's not finished. I wanted to know if that enought/clear explanation 16:22
16:22 n0tjack joined
hoelzro o/ #perl6 16:22
ZoffixW \o
ZoffixW is tempted to spin up this baby to test out Perl 6: "Linode 98304 1920GB DISK 20 CPU Cores 20TB XFER $960/mo" 16:23
Skarsnik lol 16:24
ZoffixW :)
Skarsnik I am curious, how much time it take to parse the page on your box?
16:24 lab_ left
ZoffixW I was trying to install get zef to install HTML::Parser::XML... gave up... now installing it with panda. 16:25
timotimo hey hoelzro
we only have a docker image for rakudo star, right? not for regular compiler releases?
ZoffixW But I'm on a crappy work box ATM (hence my thought to spin up an uber linode box for half an hour or so :P
16:25 rurban left
Skarsnik On my vm it's like 35 sec vs 0.05 sec on a C parse x) 16:26
timotimo oof 16:27
well, comparing us to C on a complex task, that's got to doom us. we're not pypy :(
El_Che what the deal with zef and panda? just competing projects? and other take?
timotimo yeah, that's pretty much it 16:28
ZoffixW Ooohh :( "Initial orders are pro-rated from today to the end of the month. Total: $1,325.59"
No thanks :P
hoelzro o/ timotimo
timotimo: correct
(re: docker) 16:29
ZoffixW Skarsnik, my results are much more terrible than yours :)
16:29 loren joined
ZoffixW Skarsnik, fpaste.scsys.co.uk/501712 16:29
16:29 kjs_ joined
flussence ZoffixW: holy crap, that's expensive. OVH does 8 cores for 5% the price. 16:29
ZoffixW 97 seconds >_< Versus 0.472s using Perl 5's Mojo::DOM parse
Skarsnik ZoffixW, lol
ZoffixW flussence, but 20 cores / 98GB RAM are a lot more than 8 cores :P 16:30
timotimo ZoffixW: damn. 16:31
16:31 n0tjack left
flussence oh, that's a lotta RAM 16:31
TimToady someday you'll have that in your wristwatch...
timotimo damn. now i notice i forgot to change the commandline to use 2015.11 instead of the 7e3d0b8 commit :|
stmuk [Coke]: the FAQ answer for speed already says that
Skarsnik ZoffixW, not bad for Mojo lol. with gumbo pastebin.com/zsd007dy (gumbo_parse call is the C call)
16:32 brrt left, lab_ joined
timotimo t.h8.lv/p6bench/2015-11-19-release_09_10_11.html - that doesn't look so happy after all 16:33
ZoffixW looks fine to me. 16:34
timotimo ZoffixW: well, yesterday i just looked at .10 vs .11 and there were many performance improvements to be seen 16:35
ZoffixW: now it's mostly the fact that .10 was much slower than .09 that shows
ZoffixW Ah :(
timotimo .11 still wins on a bunch of benchmarks
16:36 loren left 16:37 eliasr left 16:38 raiph joined
flussence (ahh, looking at the price of ovh's own 20 core offerings, $960/mo doesn't sound so insane...) 16:38
Skarsnik ZoffixW, I am curious, can you display the number of elements the tree generated by Mojo::Dom contain? I know www-mechanize-tree-builder fail to get the right DOM for this page 16:39
16:39 dbrock- joined
dalek c: 4f458ad | (Zoffix Znet)++ | doc/Language/faq.pod:
Toss runtimes from bench codes

Leave a little mystery; we won't be updating these numbers with each improvement in Rakudo (Closes #205)
16:39
16:39 n0tjack joined
ZoffixW flussence, exact same price as Linode. The $1,325.59 price is until end of December methinks 16:40
But they advertise it as $960/mo
m: say 960/1325.59 16:41
camelia rakudo-moar : OUTPUT«0.7242058␤»
16:41 lab_ left, loren joined
raiph m: my \foo = $; foo = 1; say foo; foo = 2; say foo # MadcapJake: "do you think that sigilless variables should be highlighted? I feel like, as they aren't containers" 16:41
camelia rakudo-moar : OUTPUT«1␤2␤»
16:42 lab_ joined
stmuk ZoffixW: the "Is Perl 6 fast enough for me?" FAQ is probably a bit of a minefield but I don't think the current wording is that bad 16:42
Skarsnik The issue with sigilles variable is knowing they are a variable and not a route call x)
*routine
jnthn They're not really variables.
Since you can't vary them :) 16:43
ZoffixW :D
MadcapJake raiph: What do you mean?
oh, but i thought you coulnd't actually assign to them. 16:44
16:44 n0tjack left
ZoffixW stmuk, yeah; I read it in full now and I think it's fine. And good point about removing the runtime numbers 16:44
MadcapJake raiph: but you are assigning foo to a container, so that's a special case, right? 16:45
timotimo perl6-bench still gives 2015.09 100 points, 2015.10 76.6 points and 2015.11 155.4 points
16:45 lab_ left, ZoffixW left, lab_ joined
raiph MadcapJake: I wouldn't call it a special case 16:46
MadcapJake why would you do that though and not do `$foo = 1`?
16:47 tokuhiro_ joined, hankache joined
raiph MadcapJake: afaik the two main uses are 1) for when you want a noun to be SSA or 2) when you want to skip the sigil 'cuz reasons 16:50
(SSA = single static assignment)
16:51 dbrock- left 16:52 tokuhiro_ left 16:53 lab_ left
raiph m: my \foo =@= 1,2,3; say foo.WHAT # MadcapJake: perhaps a notable use case will be tweetable one liners 16:53
camelia rakudo-moar : OUTPUT«(Array)␤»
16:53 zakharyas left
psch huh, where did =@= come from? o.o 16:54
16:54 loren left
gfldex m: my $b = 1; my \a = Proxy.new(FETCH => { $b * 2}, STORE => -> $, $new { $b = $new + 1 } ); say a; a = 4; say a; a.VAR.^name.say; 16:54
camelia rakudo-moar : OUTPUT«2␤10␤Proxy␤»
gfldex m: my $b = 1; my $a := Proxy.new(FETCH => { $b * 2}, STORE => -> $, $new { $b = $new + 1 } ); say $a; $a = 4; say $a; $a.VAR.^name.say;
camelia rakudo-moar : OUTPUT«2␤10␤Proxy␤»
raiph MadcapJake++ # perl6fe
16:55 lab_ joined, oceanpollen joined
raiph psch: = container = 16:55
16:58 lab_ left, lab joined 17:01 grondilu left
psch raiph: neat, thanks 17:02
17:03 pecastro left
zengargoyle not sure whic will come first, more RAM than you could ever want locally, or network so fast it doesn't matter. 17:05
17:05 loren joined
MadcapJake raiph: Thanks! I still feel that it makes sense to just leave them unhighlighted. There's no way for Atom's grammars to detect that `foo` is a sigilless variable and not a routine so the only time it would be highlighted is on assignment. 17:06
17:07 khw joined
MadcapJake and in a way, leaving it unhighlighted feels mnemonically relavant seeing as the sigiled variables are all highlighted. 17:08
dalek c: 32ab73c | (Zoffix Znet)++ | doc/Language/control.pod:
Use more common language

Maybe I live under a rock, but after 15 years of living in English speaking countries, I never heard of "tamale". Its appearance in a technical doc was an unwelcome distraction to a dictionary :)
17:09
c: ce45cde | (Zoffix Znet)++ | doc/Language/control.pod:
Grammar fix
zengargoyle at 100Gb/s it's a challenge to build boxes fast enough to keep up and the network becomes akin to higher-latency memory. 17:10
pink_mist 0_o I've heard 'hot tamale' used often in english
17:11 espadrine left
stmuk I've never heard it and I'm English 17:11
oceanpollen you don't live in a rock, but you don't live in Texas, that's for sure.
17:11 lab left, lab_ joined
TimToady or California 17:11
stmuk is it Mexician food?
MadcapJake pink_mist: yeah but it was only used as a regular `tamale` uncooked :p
flussence zengargoyle: looks like HP's decided to just make both things the same. "The Machine" looks like a really interesting project.
MadcapJake stmuk: yeah it's a fried burrito I believe
oceanpollen stmuk - it's "guy at the parking lot of walmart sells five of them for a dollar" Mexican food. 17:12
MadcapJake stmuk: correction, fried corn husk burrito :P
stmuk I shall seek one out on my next visit to the West Coast :)
17:12 g4 left
zengargoyle yeah, i'm sorta paraphrasing stuff i hear floating around at conferences. 17:12
MadcapJake I'm more of a chimichanga kind of guy xD 17:13
zengargoyle had a 40Gb/s test going this week for supercomputing.
17:15 hpd left 17:16 hankache left, kmel joined, kmel left
flussence gets over-excited when my wifi sustains >100Mb/s... 17:17
17:18 sufrostico left 17:19 ZoffixW joined
ZoffixW In the last paragraph of else/elsif section (docs.perl6.org/language/control#else%2Felsif) it says "Each block must individually say whether it wants to know what the conditional expression evaluated to." How would I get the value inside an elsif {} tho? 17:20
m: if False { } elsif True -> $a { say $a } # expecting a "False"
camelia rakudo-moar : OUTPUT«True␤»
MadcapJake m: if False { } elsif True { say $_ } # expecting a "False" 17:21
camelia rakudo-moar : OUTPUT«(Any)␤»
17:21 abaugher left
MadcapJake m: if False { } elsif Bool(True) { say $_ } # expecting a "False" 17:21
camelia rakudo-moar : OUTPUT«(Any)␤»
zengargoyle m: if False { } elsif True { say $^a }
camelia rakudo-moar : OUTPUT«True␤»
psch "[...] whether it wants to know what its conditional expression evaluated to." makes it a bit clearer i guess? 17:22
zengargoyle think you have to 'declare' a var to get the value passed
block of arity-1
17:22 abaugher joined
ZoffixW psch, I am right now. But I also want to clarify the code example and I see it doesn't include the variant for elsif {} 17:22
17:22 kjs_ left
ZoffixW psch, or does this not work in elsif: 17:23
m: if False { } else -> $a { say $a }
camelia rakudo-moar : OUTPUT«False␤»
17:23 xfix joined
psch ZoffixW: well, the elsif has its own condition to evaluate 17:23
zengargoyle yeah, elsif will always get a True or it wouldn't be there
psch ZoffixW: else deviates from the if behavior, elsif doesn't
(because elsif could be else { if ... { } }) 17:24
zengargoyle psch: i believe that's the way it actually is.
down in QAST land
ZoffixW zengargoyle, why would it always get a True? It can get whatever the previous if/elsif used 17:25
m: if 0 { } else -> $a { say $a }
camelia rakudo-moar : OUTPUT«0␤»
psch m: state $foo; if $foo++ { } elsif $foo++ -> $bar { say $bar } else { say "vOv" }
camelia rakudo-moar : OUTPUT«1␤»
ZoffixW m: if Nil { } else -> $a { say $a }
camelia rakudo-moar : OUTPUT«Nil␤»
timotimo ZoffixW: why would you expect False for an "elsif True -> $a"?
zengargoyle but the body won't be run unless the value was True
psch m: state $foo; if $foo++ { } elsif $foo++ > 2 -> $bar { say $bar } else { say "vOv" }
camelia rakudo-moar : OUTPUT«vOv␤»
psch zengargoyle: might well be, yeah
m: state $foo; if $foo++ { } elsif $foo++ > 2 -> $bar { say $bar } else -> $else { say $else } # bit more info 17:26
camelia rakudo-moar : OUTPUT«False␤»
ZoffixW timotimo, that was merely my attempt to transpose else -> $a { say $a } to an elsif
17:26 pippo left
zengargoyle ... elsif foo() -> $b { never here if $b ~~ False } 17:26
psch m: state $foo; if $foo++ { } elsif $foo++ does role { method Bool { False } } -> $bar { say $bar } else -> $else { say $else } 17:27
camelia rakudo-moar : OUTPUT«1␤»
psch m: state $foo; if $foo++ { } elsif $foo++ does role { method Bool { False } } -> $bar { say $bar } else -> $else { say so $else }
camelia rakudo-moar : OUTPUT«False␤»
ZoffixW I wonder if that bit even needs to be in the docs. 17:28
psch ZoffixW: well, i didn't know about it, fwiw :)
ZoffixW psch, but it seems more of an artifact than something you'd actually use.
17:28 loren left
psch i don't know... 17:29
ZoffixW Since you'd only ever get falsey stuff
Can Objects be false in P6?
psch yes
zengargoyle bingo
ZoffixW k, then I'll reword it
psch note the last two examples :)
ZoffixW oh lol :P
psch we get a 1 but False
also, False *is* an Object in the first place :P 17:30
dalek c: d5e1442 | (Zoffix Znet)++ | doc/Language/control.pod:
Reword for clarity
17:31
ZoffixW Oh, hah. Right! :)
17:31 Upasaka joined
dalek c: a44ce9b | (Zoffix Znet)++ | doc/Language/control.pod:
Grammar fix
17:32
17:32 pecastro joined, Peter_R joined 17:35 ZoffixW left 17:36 diana_olhovik_ joined
psch r: say $*PERL.compiler 17:36
camelia rakudo-moar: OUTPUT«rakudo (2015.11.23.g.9.acf.19)␤»
..rakudo-jvm 09acf1: OUTPUT«rakudo (2015.10.134.g.273.e.895)␤»
17:37 raiph left, pecastro left
psch m: say "a b".split(/\s/, :v) 17:51
camelia rakudo-moar : OUTPUT«(a 「 」 b)␤»
psch m: class A { has int $.x }; my A $a .= new; say nqp::getattr(nqp::decont($a), A, '$!x') # a bit of that underneath
camelia rakudo-moar : OUTPUT«This representation (P6int) cannot unbox to other types␤ in block <unit> at /tmp/FgIDkYvrfy:1␤␤»
psch i don't get why getattr for an int attr works in Str.split 17:52
i mean, it really shouldn't, right?
for reference, src/core/Str.pm:794
Skarsnik blogger is not the best for code formatting, but well skarsnik-stuff.blogspot.fr/2015/11/...nt-to.html 17:53
17:56 diana_olhovik_ left
psch m: class A { has int $.x }; my A $a .= new; my int $x = nqp::getattr(nqp::decont($a), A, '$!x'); say $x # hrm... 17:56
camelia rakudo-moar : OUTPUT«0␤»
17:57 jandeman joined
psch well, i guess that means i'll have to hack getattr to check the contspec, or moar has to complain as well... 17:57
17:57 jandeman left 17:58 Upasaka left 18:00 telex left 18:01 n0tjack joined 18:02 rgrau joined, telex joined 18:05 n0tjack left 18:06 Upasaka joined 18:14 n0tjack joined 18:15 raiph joined 18:19 n0tjack left 18:24 kjs_ joined 18:25 Upasaka left
[Coke] btw, anyone who has chrome, I recommend setting up an "rt" search helper. I can do "new tab, rt<tab>123456" and go right to the ticket. 18:26
18:28 Upasaka joined
nine Actually that's a good idea in any browser 18:29
yoleaux 16:17Z <jnthn> nine: Would be good to check/test how the updated repo stuff handles rt.perl.org/Ticket/Display.html?id=126688 - hopefully it catches the error and reports it...but good to check :)
18:33 n0tjack joined, domidumont joined, Upasaka left
AlexDaniel m: sub foo { FIRST { say 'hi' } }; foo; foo; 18:36
camelia ( no output )
AlexDaniel what's the right way to do it?
I mean, call something during the first execution of the sub 18:37
ugexe once { } ?
psch FIRST only works in iterations 18:38
i'd suggest unles $++ { }
+s
pink_mist m: sub foo { $ = say 'hi'; }; foo; foo; # why doesn't this work?
camelia rakudo-moar : OUTPUT«hi␤hi␤»
18:38 Upasaka joined
psch pink_mist: what doesn't work? 18:39
pink_mist I thought $ was a state variable so it should only get assigned to the first time foo is run
so the second time foo is run, 'say hi' shouldn't be executed
psch state variables aren't about assigning only once, state variables are about keeping values across reexecution of the same block
AlexDaniel ugexe: nice! 18:40
m: for 1..5 { once { say 'ok' } }
camelia rakudo-moar : OUTPUT«ok␤»
AlexDaniel m: for 1..5 { FIRST { say 'ok' } }
camelia rakudo-moar : OUTPUT«ok␤»
psch m: sub f { once { say "hi" } }; foo; foo
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/RrE6DVgZXO␤Undeclared routine:␤ foo used at line 1␤␤»
AlexDaniel what's the difference here?
psch m: sub f { once { say "hi" } }; f; f
camelia rakudo-moar : OUTPUT«hi␤»
psch ^^^ that's the difference
18:40 n0tjack left
AlexDaniel psch: one works in subs and another one doesn't? 18:41
psch AlexDaniel: exactly, FIRST fires at loop initialization time
AlexDaniel: once { ... } is apparently a concise "... unless $++"
AlexDaniel psch: yeah, great. Why not just have “once” then? :)
ugexe if you go back into a subroutine with a loop using FIRST, you would expect it to fire again 18:42
psch m: sub f($max) { for ^$max { once { say "once" }; FIRST { say "FIRST" } }; f 1; f 1
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/RjIPxqCufB␤Missing block (taken by some undeclared routine?)␤at /tmp/RjIPxqCufB:1␤------> 3ce" }; FIRST { say "FIRST" } }; f 1; f 17⏏5<EOL>␤ expecting any of:␤ postfix␤ statement en…»
psch m: sub f($max) { for ^$max { once { say "once" }; FIRST { say "FIRST" } } }; f 1; f 1
camelia rakudo-moar : OUTPUT«FIRST␤once␤FIRST␤once␤»
psch hrm
with that i'd expect the once only, well... 18:43
AlexDaniel: that's what i think the difference should be, at least
18:43 lab_ left
mspo is there a reason for moar to not be static compiled by default? 18:44
psch AlexDaniel: oh, but another difference can be seen in the order of the output 18:45
AlexDaniel ugexe: right, it kinda makes sense
psch AlexDaniel: as in, the FIRST came before once in both cases
18:45 n0tjack joined
AlexDaniel m: sub f($max) { for ^$max { FIRST { say "FIRST" }; once { say "once" }; } }; f 1; f 1 18:45
camelia rakudo-moar : OUTPUT«FIRST␤once␤FIRST␤once␤»
AlexDaniel yeah right 18:46
ugexe curious why `once` shows up twice as well...
b2gills m: val ''
camelia rakudo-moar : OUTPUT«Cannot invoke this object␤ in block <unit> at /tmp/6NhUhlFytT:1␤␤»
18:47 cygx joined
AlexDaniel interestingly you can have multiple “once” and “FIRST” 18:47
cygx mspo: someone might want to embed it
also, I suspect we want to generate proper executables for perl6 and nqp eventually instead of shellscripts 18:48
AlexDaniel ugexe: well, if you think that it is a bug then I can report it
18:48 tokuhiro_ joined
cygx jnthn: github.com/rakudo-p5/v5/blob/maste...5/Terms.pm breaks pre-compilation 18:49
MadcapJake m: sub f($max) { for ^$max { FIRST { say "FIRST" }; once { say "once" }; } }; f 2; f 2;
camelia rakudo-moar : OUTPUT«FIRST␤once␤FIRST␤once␤»
nine .tell jnthn RT 126688 is actually a bit of a challenge since the process doing the precompilation doesn't know which modules the other process already loaded. I'll have to communicate that between processes.
yoleaux nine: I'll pass your message to jnthn.
cygx you can pre-compile that file just fine, but anything that uses it then fails to precompile with Serialization Error: missing static code ref for closure 'MAIN'
18:51 n0tjack left
cygx .tell jnthn 18:51
yoleaux cygx: I don't know what you want me to say to jnthn.
18:51 hankache joined
cygx .tell jnthn github.com/rakudo-p5/v5/blob/maste...5/Terms.pm makes pre-compiltion of modules that use it die with Serialization Error: missing static code ref for closure 'MAIN' 18:51
yoleaux cygx: I'll pass your message to jnthn.
AlexDaniel ugexe: as I understand it, “once” should do exactly what it says. From S04 “run only once, suppressing additional evaluations” 18:52
ugexe yea im looking around to see if i misunderstand something, because that seems wrong
psch m: my $var; sub f($x) { once { $var += $x } }; f(2); f(3); say $var
camelia rakudo-moar : OUTPUT«2␤»
psch m: my $var; sub f($x) { once { $var += $x; say "adding $x to $var"; } }; f(2); f(3); say $var 18:53
camelia rakudo-moar : OUTPUT«adding 2 to 2␤2␤»
18:53 tokuhiro_ left
AlexDaniel ugexe: otherwise it is «run “once” except for a couple of edge cases when it will evaluate more than once» 18:53
psch m: my $var; sub f($x) { once { say "adding $x to $var"; } }; f(2); f(3); say $var
camelia rakudo-moar : OUTPUT«Use of uninitialized value $var of type Any in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block at /tmp/bVVnLgceZc:1␤adding 2 to ␤(Any)␤»
psch m: my $var = 0; sub f($x) { once { say "adding $x to $var"; } }; f(2); f(3); say $var
camelia rakudo-moar : OUTPUT«adding 2 to 0␤0␤»
ugexe m: my $x; sub f($max) { for ^$max { once { $x++; }; } }; f 2; f 2; say $x;
camelia rakudo-moar : OUTPUT«2␤»
psch m: my $var = 0; sub f($x) { once { say "adding $x to $var"; }; FIRST { say "so?" } }; f(2); f(3); say $var
camelia rakudo-moar : OUTPUT«adding 2 to 0␤0␤»
cygx bye again o/
psch hmm, loop opts breaking it maybe? 18:54
18:54 cygx left 18:55 Upasaka left
psch m: sub f { { once { say "hi" } } }; f; f; 18:57
camelia rakudo-moar : OUTPUT«hi␤hi␤»
psch it only binds one scope outwards
m: for ^10 { if $_ % 2 { FIRST { say $_ } } else { FIRST { say $_ } } }; # same here though
camelia ( no output )
psch m: L: for ^10 { if $_ % 2 { FIRST L { say $_ } } else { FIRST L { say $_ } } }; # ...i wonder 18:58
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/pUcbJY7an9␤Unexpected block in infix position (missing statement control word before the expression?)␤at /tmp/pUcbJY7an9:1␤------> 3L: for ^10 { if $_ % 2 { FIRST L7⏏5 { say $_ } } else { FIRST L { say $_ …»
psch aww :P
18:59 Upasaka joined
hankache hello perl 6 18:59
psch in any case, yes, that seems not once-y enough
18:59 kjs_ left
AlexDaniel psch: okay. I'll submit a bug report then 19:00
19:00 pmurias joined
MadcapJake m: sub g($val) { if $val > 10 { once { return $val } }; return 0; }; g 100; g 5; g 50; 19:01
camelia ( no output )
MadcapJake m: sub g($val) { if $val > 10 { once { return $val } }; return 0; }; say g(100); say g(5); say g(50);
camelia rakudo-moar : OUTPUT«100␤0␤50␤»
pmurias the FAQ answer for the "Is Perl 6 fast enough for me?" with the Moose "benchmark" seems a bit lame 19:02
yoleaux 04:14Z <[Coke]> pmurias: please feel free to try to add those patches again now that the release is done; sorry I had to back them out, hopefully we can get the issue fixed easily. Thanks.
pmurias [Coke]: you reverted the tty jvm patch or something more?
hankache MadcapJake thanks for Perl 6 FE 19:03
19:04 Upasaka_ joined
[Coke] pmurias: the jvm patch in nqp broke the nqp build. that in turn broke the rakudo build. I backed both of them out so we could get the release out. 19:04
so you can probably revert my reversion on both of them, adding in whatever was missing.
MadcapJake hankache: no problem! hope you like it!
hankache MadcapJake i definitely like it. Great job. Looking forward to more features 19:05
19:06 Upasaka left
ugexe if that once {} stuff is a bug, i wonder if fixing it will speed this Str.Match? github.com/rakudo/rakudo/blob/nom/...tr.pm#L423 19:06
19:07 rurban joined
MadcapJake hankache: on there way! I've never hooked into the linter package before but it's well documented. atom-runner and atom-build will be pretty simple to setup. The autocomplete could be more of a challenge but it'll really be great once it's working! 19:07
ugexe once @matches := $matches.list, where @matches is 3 scopes outside 19:08
19:08 johan joined, pecastro joined
pmurias [Coke]: I can't redo the rakudo commit as I don't have a commit biy 19:09
* bit
[Coke]: I recommited the changes to nqp-jvm as soon as I noticed the file was missing
nine pmurias: you mean revert the revert?
timotimo psch, AlexDaniel, ugexe, "once" gives you the exact same semantics as state variables. when the block it's in gets cloned, they get reset.
AlexDaniel timotimo: in other words it is fine that “once” can run twice? 19:10
timotimo i'd say so, yeah 19:11
hankache MadcapJake Good luck mate
psch ah
psch ponders adding a test for that semantic
19:12 kjs_ joined
psch 'cause the name makes it seem more literal 19:12
AlexDaniel yeah
timotimo AFK
pmurias nine: yes
psch right, S04 mentions it the other way around, but yes 19:13
19:13 n0tjack joined
psch 'But state automatically applies "once" semantics to any initializer,[...]' 19:13
and a bit above too
pink_mist psch: that sounds like my earlier example should have worked 0_o 19:14
dalek kudo/nom: a030922 | (Stefan Seifert)++ | src/core/IO/Handle.pm:
Revert "Revert "Merge pull request #592 from pmurias/tty-checking""

This reverts commit d9dde76fc1be441fb0ad7394bfd28d6e5c2dab7e.
Release is out, now let's fix this.
19:15
nine pmurias: can you make a pull request with the missing file? 19:16
19:16 zengargoylew joined
pmurias nine: no, it's already commited to nqp 19:16
nine pmurias: so we're done?
pmurias I think nqp needs to be bumped 19:17
psch pink_mist: ...i'm not sure. i think specs is worded badly, fwiw vOv
19:17 pecastro left
psch pink_mist: i don't think 'sub f { $ = say "hi" }' *can* execute the say only once, because of side-effects 19:19
...that doesn't quite express what i mean :/ 19:20
19:20 n0tjack left
psch these language design things are hard /o\ 19:21
nine Where do I get the NQP revision from?
psch nine: either nqp-$be --version or git describe
nine: the former obviously only if you are on master/HEAD and built that :)
(which, incidentally, i did wrong at least once so i only use git describe now :P ) 19:22
MadcapJake m: my $i = 0; sub g($v) { once { $i += $v } }; say g(1); say g(2);
camelia rakudo-moar : OUTPUT«1␤1␤»
MadcapJake m: my $i = 0; sub g($v) { once { $i += $v } return $i }; say g(1); say g(2); 19:24
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/1x3XvKCUWN␤Strange text after block (missing semicolon or comma?)␤at /tmp/1x3XvKCUWN:1␤------> 3my $i = 0; sub g($v) { once { $i += $v }7⏏5 return $i }; say g(1); say g(2);␤ expecting any of:␤ …»
MadcapJake m: my $i = 0; sub g($v) { once { $i += $v }; return $i }; say g(1); say g(2);
camelia rakudo-moar : OUTPUT«1␤1␤»
19:24 kjs_ left 19:26 ZoffixW joined, Begi11111 joined
dalek kudo/nom: 7c70c69 | (Stefan Seifert)++ | tools/build/NQP_REVISION:
Bump NQP revision for JVM build fix
19:26
19:26 lab_ joined
dalek rl6-roast-data: 3009add | coke++ | / (9 files):
today (automated commit)
19:26
ZoffixW MadcapJake, if you care; stuff in module names seems to be highlighted sometimes: i.imgur.com/Rn2VZoH.png 19:28
[Coke] pmurias++, psch++, nine++
MadcapJake m: my @l = 0,0,0; sub g($v) { once { for @l { $_ += $v } }; return @l }; say g(1); say g(2); 19:29
camelia rakudo-moar : OUTPUT«[1 1 1]␤[1 1 1]␤»
MadcapJake Ok, I can fix that.
ZoffixW What's $*META-FILE? It's the only time I see it mentioned in that code github.com/jonathanstowe/Test-META...ETA.pm#L83 and I don't see it in the Dynamic Vars section: docs.perl6.org/language/variables#D..._variables 19:30
hm... there's $*DIST-DIR and $*TEST-DIR too
19:31 Upasaka_ left, hankache left
ZoffixW m: $*META-FILE // 42; say $*META-FILE 19:32
camelia rakudo-moar : OUTPUT«Dynamic variable $*META-FILE not found␤ in block <unit> at /tmp/nNn5mSuLwz:1␤␤Actually thrown at:␤ in block <unit> at /tmp/nNn5mSuLwz:1␤␤»
ZoffixW m: sub zmeta-file { $*META-FILE // 42 }; say zmeta-file
camelia rakudo-moar : OUTPUT«42␤»
ZoffixW What sorcery is this?
zengargoylew m: sub f { $ ||= say "once" }; f; f;
camelia rakudo-moar : OUTPUT«once␤»
MadcapJake ZoffixW: patch released
19:33 kjs_ joined
ZoffixW MadcapJake++ # works. Thanks 19:33
zengargoylew hrm, thought it would have to be: for @l <-> $_ { $_ += $v } 19:35
ZoffixW Ah, OK. There's a whole section under the * twigil: docs.perl6.org/language/variables#The_*_Twigil 19:36
zengargoylew don't you still have to make $_ rw if you want it to be rw?
dalek c: 22ecbc8 | (Zoffix Znet)++ | doc/Language/variables.pod:
Remove duplicate word
ugexe m: sub f { $_ ||= say "once" }; f; f; 19:39
camelia rakudo-moar : OUTPUT«once␤once␤»
19:39 znpy left 19:40 Upasaka joined
zengargoylew oops, guess not: If you rely on C<$_> as the implicit parameter to a block, then C<$_> is considered read/write by default. 19:42
AlexDaniel how can I write Num literals? One way is to append “e0” to the end, but is there anything better?
jnthn psch: Sounds like the code should really use nqp::getattr_i
yoleaux 18:49Z <nine> jnthn: RT 126688 is actually a bit of a challenge since the process doing the precompilation doesn't know which modules the other process already loaded. I'll have to communicate that between processes.
18:51Z <cygx> jnthn: github.com/rakudo-p5/v5/blob/maste...5/Terms.pm makes pre-compiltion of modules that use it die with Serialization Error: missing static code ref for closure 'MAIN'
zengargoylew m: say 1.Num.WHAT
camelia rakudo-moar : OUTPUT«(Num)␤»
AlexDaniel m: say 0.25.Num.WHAT 19:44
camelia rakudo-moar : OUTPUT«(Num)␤»
AlexDaniel okay!
jnthn psch: I'd not worry about trying to replicate the Moar behavior in JVM.
psch: Just fix the usage. 19:45
zengargoylew i think that's the proper way... though i often wish they would auto coerce sometimes.
jnthn nine: Darn, you're right. :-) 19:47
nine: Dunno how you were communicating what we compiled back though.
nine jnthn: right now? STDOUT ;) Will write that information directly to the appropriate file though. 19:48
jnthn .tell cygx I don't actually see a MAIN in that module; any idea which one it's referring to? The issue may be something to do with the code in the mainline assigning to variables, which it then exports. But the error isn't what I'd expect... 19:49
yoleaux jnthn: I'll pass your message to cygx.
nine jnthn: oh and I now write a .deps and a .rev-deps file for each precomp file. That way all lookups are O(1) and it's also the cheapest way to store the information.
jnthn Neat!
nine jnthn: and I can write just one precomp id per line which makes it ridiculously simple to handle :)
jnthn :D
nine++ # simple designs
nine And everything is managed by PrecompilationRepository. 19:50
19:51 diakopter___ joined, znpy joined 19:53 diana_olhovik_ joined 19:55 ZoffixW left 19:57 Upasaka left, lab joined 19:58 lab_ left
ugexe nine++ very cool 19:58
19:58 espadrine joined 20:00 lab left
dalek kudo/curli: 4c4d9d7 | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm:
Use a dependencies file per precomp file and fix thinko

Using a file per module scales O(1) since we can look up the information directly by name.
This commit also fixes a thinko in transitive dependencies checking. Of course we have to ensure that no dependency is newer than the precompilation file we're about to load. The precomp file must be newer than the source. No dependency may be newer than the precomp file.
20:00
20:00 hankache joined, lab joined
dalek kudo/curli: 795dff2 | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm:
Avoid shell() at all cost!

Especially, when it's quite cheap and makes the code more robust.
20:01
kudo/curli: 83b9a24 | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm:
Write a reverse dependencies file for every precomp file.

This way we know in O(1) which modules have to be recompiled when we update a precomped module.
20:02
ugexe nine: the first argument to run() is still 2 arguments
s/$lle"/",$lle/ 20:03
nine ugexe: oh, thanks for the hint!
psch jnthn: well, yes, the code should use getattr_i, but i distinctly remember this not being the first time that this exact bug appears
hankache if you were to publish a document under which license would you do it?
psch jnthn: because when developing against moar (and assigning to a native container) getattr works just fine, but then someone tries to build r-j and stuff is broken
jnthn: so in the interest of ticket-minimization i'd like consistency :S 20:04
20:04 ZoffixW joined
ZoffixW Was $foo:defined a thing? What's the new variant? $foo.defined? 20:04
20:04 bpmedley left
pink_mist :D 20:04
ZoffixW is fixing some code in ecosystem
pink_mist (maybe?) 20:05
ZoffixW m: my $foo; say $foo:D ?? "Y" !! "N"; $foo = 42; say $foo:D ?? "Y" !! "N";
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/BsVP3b83UQ␤Variable '$foo:D' is not declared␤at /tmp/BsVP3b83UQ:1␤------> 3my $foo; say 7⏏5$foo:D ?? "Y" !! "N"; $foo = 42; say $fo␤»
ZoffixW pink_mist, I believe that's just a type "hint" that says it must be defined
pink_mist right, you're correct :(
ZoffixW m: sub foo (Int $x:D) {say $x;}; foo(42); foo();
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/iLgvmNXQfq␤Invalid typename 'D' in parameter declaration.␤at /tmp/iLgvmNXQfq:1␤------> 3sub foo (Int $x:D7⏏5) {say $x;}; foo(42); foo();␤»
jnthn :D does on types, not variables 20:06
ZoffixW lol. it looks like we're talking in smileys :P
20:07 Upasaka joined
[Coke] m: .:D 20:07
camelia rakudo-moar : OUTPUT«Default constructor for 'Any' only takes named arguments␤ in block <unit> at /tmp/xFCYX95F33:1␤␤»
dalek kudo/curli: 772b73e | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm:
Fix precompilation when running with --ll-exception

Thanks to ugexe++ for pointing this out!
ZoffixW tony-o_, sent you a PR. See if you can merge it. I'm using that module for a new test module that will be used by the modules.perl6.org build script soon: github.com/tony-o/perl6-pluggable/pull/1 20:10
(and currently that error makes it fail)
20:10 bpmedley joined
jnthn psch: Understand...I fear it's one of those places where the thing Moar does is easy in C, but a Java equivalent may not be 20:11
psch jnthn: which makes me think that maybe moar shouldn't apply its branch of magic there. similarly to 9bc5a0a, which again is moar magically decont'ing where jvm needs it explicitly 20:12
anyway, it's not really bad, of course, i'm probably just a bit annoyed right now because i had to ride to the store twice 'cause i forgot my wallet 20:13
jnthn Why doesn't that code just use self? 20:14
Then the problem wouldn't happen
(Instead of $self)
I guess it captures it for a reason, but it doesn't need to use it there. 20:15
The decont is probably nothing to do with Moar at the VM level, but rather because we compile signatures on Moar and it elides the container in that csae
*case
(Getting that working on JVM will help performance a load too, I suspect...) 20:17
Skarsnik Does someone can test rt.perl.org/Ticket/Display.html?id=126645 on win32 (or os X) or jvm? x) 20:19
20:22 ZoffixW left
leont jnthn: have you tried my harness branch with TEST_JOBS=2? That should show the async issue I mentioned before. Possibly you can make more out of it than I can. 20:22
20:22 hankache left, darutoko left
jnthn leont: Not yet; I've been tied up with a bunch of other non-concurrency things, and figured I'd look at it along with the various concurrency RTs on the xams list (since it may end up being one of those issues anyway) 20:25
leont: Planning to work on those next week... This week largely went on getting the shaped array stuff sorted.
nine jnthn: I think...we should actually use the precomp ids for storing the source files, too. For the user it doesn't matter if it's a number or a sha1. And with using the sha1, I can find the corresponding source file to recompile in O(1). Precomp ids have to be sufficiently unique anyway. 20:27
leont If I find the tuits I may try to minimize the problem, but I have no idea how easy that's going to be (given concurrency)
20:28 CQ joined
arnsholt So, here's a puzzle: Given a Rakudo compiler object, would it be possible to figure out if a string is a *partial* Perl 6 program? 20:28
20:28 molaf left
arnsholt That is, given a string that doesn't parse, is it possible to distinguish those that could parse if you add more stuff at the end, and those that couldn't? 20:29
pink_mist surely any string could be a partial perl6 program; any string can be a string in a perl6 program after all 0_o
CQ just randomly generate stuff before and after, and if it ever parses, it's perl6 : ) 20:30
jnthn nine: I could go with that...
nine + the repo doesn't have to keep the count of the source files anymore. Less state!
jnthn arnsholt: Well, you can see where the highwater mark is and if it's at the end of the string, you know it got there, and was looking for more stuff
arnsholt I guess I could look at the high water mark of a parse failure and see if it reached all the way to the end of the string
jnthn hah 20:31
:)
arnsholt I'm glad you agree =D
jnthn leont: Yes...that's concurrency :)
Skarsnik I just wondering, is there a nice way to say: A; { some code } B; and I want to wait if A -> B take less than a 1 sec? An usage is for example $ua.get("some html"); do stuff with it; wait before doing anohter request 20:36
moritz Skarsnik: sleep()? 20:38
20:38 CQ left
pink_mist Skarsnik: you could fire off A into another thread and sleep for 1 sec in the current thread and do B after 20:38
ugexe depends, if he is using sockets that could get messy 20:39
Skarsnik I mean I could write my $time = now; {get web, parse}; sleep 1 - now - $time if (now - $time < 1); 20:41
it to ensure I wait enought between 2 http request 20:42
pink_mist or you could just sleep 1 anyway :P
ugexe throttling
pink_mist sometimes throttling is /between/ requests, not /between start times/ of requests =) 20:43
zengargoylew sleep min 1, (1-now-$time); -ish
min 0, ...
tony-o_ and he can't read from that socket if he goes to another thread
zengargoylew max 0, (1-now-$time) 20:44
dalek kudo/nom: 0b6328c | peschwa++ | src/core/Str.pm:
Fix RT #126679.

The JVM backend needs type-specific getattr invocations for native Attributes.
20:45
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=126679
zengargoylew sleep max 0, 1-(now-$time); 20:49
20:50 tokuhiro_ joined
dalek c: 280f7e3 | (Zoffix Znet)++ | doc/Language/objects.pod:
Grammar fix
20:53
20:53 jpoehls_ left
dalek c: b3fd082 | (Zoffix Znet)++ | doc/Language/objects.pod:
Grammar fix
20:54
kudo/curli: 2046957 | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm:
Fixup: superfluous space in front of --ll-exception
pmurias jnthn: if a closure is taken on MoarVM it should get the same code_object as the code ref it's built from? 20:55
20:55 tokuhiro_ left
pmurias is confused why his nqp-js copy of the MoarVM closure model is sometimes breaking 20:55
jnthn pmurias: code object as in the HLL code object? 20:56
They should point to each other, though, if that's what you mean
pmurias jnthn: yes 20:57
point to each other?
dalek c: d10e4d6 | (Zoffix Znet)++ | doc/Language/objects.pod:
Reword
jnthn Sure 20:58
code ref points to HLL code object
HLL code object points to same code ref
Though the latter isn't the VM's job to make happen. 20:59
pmurias how is the HLL code object updated?
jnthn Just by nqp::bindattr 21:00
In Rakudo's code objects to a $!do
Think similar in NQP
dalek c: c82e355 | (Zoffix Znet)++ | doc/Language/objects.pod:
Reword for clarity

When reading code examples in detail, it is not immediately obvious the sentence refers to the example a paragraph earlier and "in the method describe" looks like a typo
21:04
pmurias jnthn: I'm looking at src/vm/moar/QAST/QASTCompilerMAST.nqp:833 and the $!do doesn't seem to be updated
21:05 domidumont left
jnthn It doesn't happen there 21:06
It's done by HLL code
See src/core/NQPRoutine.nqp
21:07 gfldex left
pmurias jnthn: you mean in the clone method? 21:08
jnthn pmurias: Yes 21:09
pmurias jnthn: and what call the clone method? it seems like only the moarvm takeclosure op is called 21:11
* calls
21:13 grondilu joined
jnthn pmurias: In Rakudo we code-gen calls to .clone. I thought the same in NQP... In NQP we only use code objects in some cases, though, iirc. 21:13
pmurias: By code-gen I mean that Actions spits out such code 21:14
Skarsnik can something write a small code that create like a buck of nested structure of a class A {has A $.parent; has A @.children} like with 50 depth (I am too dumb to write this or what). I think the GC don't know to release the memory when you can copy something like that
jdv79 so parameterized roles and require not mix well? 21:15
21:15 zengargoylew left
jdv79 *do 21:15
dalek kudo/curli: 11116b6 | (Stefan Seifert)++ | src/core/CompUnit/Repository/Installation.pm:
Recompile reverse dependencies after installing a precomp file
21:16
21:16 diakopter____ joined
nine ^^^ this is actually 12 insertions(+), 16 deletions(-) :) 21:16
21:17 tokuhiro_ joined
jdv79 gist.github.com/anonymous/54c68dd756572eae51fe 21:17
pmurias jnthn: in NQP code we don't seem to call clone
21:18 gfldex joined
jnthn pmurias: Maybe we only do it when dealing with multi-dispatch or role cloning... 21:18
21:18 soggybread left, rindolf left
pmurias in !cursor_start_all we set $!regexsub to nqp::getcodeobj(nqp::callercode()) 21:19
21:19 diakopter___ left
jnthn nine: Nice! 21:20
21:22 tokuhiro_ left
dalek c: 9767a51 | (Zoffix Znet)++ | doc/Language/objects.pod:
Fix POD
21:23
21:25 Begi11111 left 21:28 n0tjack joined, diana_olhovik_ left
arnsholt jnthn: Hmm. How do I get at the highwater mark after a failed parse? 21:29
timotimo could be in the exception 21:30
arnsholt Oh, nm
Yeah, it's in the exception
I derped while grepping through the src/core/Exception.pm
I saw the X::Comp { ... } stub and misparsed it as an empty declaration 21:31
21:31 diana_olhovik joined
arnsholt But the real declaration of X::Comp has stuff 21:31
21:32 n0tjack left, softmoth_ left
grondilu hello everyone 21:33
how's everything going? Still confident for Xmas? 21:34
21:35 xfix left
dalek kudo-star-daily: 516c172 | coke++ | log/ (3 files):
today (automated commit)
21:36
21:36 diana_olhovik left 21:39 ollej_ joined
grondilu remembers to read announce/2015.11.md 21:40
21:42 eliasr joined 21:54 pdcawley_ joined 21:55 pdcawley left 21:56 kaare_ left, pdcawley_ left 21:59 pdcawley joined
leont Is there a cute syntax for a constant method? 22:05
dalek c: e65755d | (Steve Mynott)++ | doc/ (2 files):
input-line-separator is now nl-in
22:06
c: f8c77d5 | (Steve Mynott)++ | doc/Type/IO/Socket/INET.pod:
correct default network line terminator
22:07
22:07 kjs_ left 22:09 skids left
zengargoyle constant how? 22:09
jnthn leont: Can you show your not-cute syntax, so I understand what you want? :) 22:10
leont I think I just want to drop my habit of explicit returns for these kinds of methods, nm 22:12
arnsholt Does the Rakudo Linenoise code do tab-completion stuff? 22:15
22:16 TEttinger joined 22:17 Upasaka_ joined
grondilu m: say map * + *, ^10; # TIL I can do that 22:17
camelia rakudo-moar : OUTPUT«(1 5 9 13 17)␤»
22:17 kjs_ joined, Upasaka left, Upasaka_ left
zengargoyle pretty sure Linenoise just does basic line editing and session history 22:18
arnsholt Yeah, I didn't expect it too, TBH. But if it did, it'd be an interesting reference 22:19
zengargoyle that's part of why i asked yesterday about using readline instead.
arnsholt Cheers!
22:19 rgrau left
AlexDaniel m: my $↑↓ = 5; say $↑↓ 22:19
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/J5izXwSG4n␤Name must begin with alphabetic character␤at /tmp/J5izXwSG4n:1␤------> 3my $7⏏5↑↓ = 5; say $↑↓␤ expecting any of:␤ constraint␤ infix␤ infix stopper␤ …»
arnsholt Those aren't letters =) 22:21
AlexDaniel arnsholt: Hm, I see!
arnsholt: still, any way to make it work? 22:22
dalek c: 2b3e34a | (Steve Mynott)++ | CREDITS:
extend CREDITS using CREDITS.p6
22:22 Upasaka joined 22:23 kjs_ left 22:26 nmp left 22:30 johan left
AlexDaniel m: my term:<↑↓> = 25; say ↑↓ 22:34
camelia rakudo-moar : OUTPUT«5===SORRY!5===␤Type 'term:<↑↓>' is not declared␤at /tmp/I5AudUE4up:1␤------> 3my term:<↑↓>7⏏5 = 25; say ↑↓␤Malformed my␤at /tmp/I5AudUE4up:1␤------> 3my term:<↑7⏏5↓> = 25; say ↑↓␤␤»
22:34 roguelazer joined
jnthn m: my \term:<↑↓> = 25; say ↑↓ 22:35
camelia rakudo-moar : OUTPUT«25␤»
AlexDaniel right
m: my $term:<↑↓> = 25; say $term:<↑↓>
camelia rakudo-moar : OUTPUT«25␤»
22:35 kjs_ joined
arnsholt timotimo: Sorry for spamming you with iperl6kernel issues. I'm done now =) 22:36
AlexDaniel m: sub term:<࿖> { die }; ࿖ # heh… 22:38
camelia rakudo-moar : OUTPUT«Died␤ in sub term:<࿖> at /tmp/7RL9rTqKXY:1␤ in block <unit> at /tmp/7RL9rTqKXY:1␤␤»
timotimo arnsholt: issues?
oh, on github/email? 22:39
Skarsnik nice AlexDaniel x)
AlexDaniel m: sub term:<☠> { die }; ☠ # ok this one is more appropriate 22:40
camelia rakudo-moar : OUTPUT«Died␤ in sub term:<☠> at /tmp/PAXQTWOCml:1␤ in block <unit> at /tmp/PAXQTWOCml:1␤␤»
timotimo arnsholt: linenoise actually does tab completion. 22:41
zengargoyle my grip it that it doesn't do unicode well. and it that weird horizontal scroll thing. 22:45
22:45 kjs_ left 22:46 kjs_ joined, pmurias left
zengargoyle i'm trying rlwrap now, had to remove Linenoise.pm first. 22:46
22:46 TEttinger left
AlexDaniel m: my %h; say %h.default 22:47
camelia rakudo-moar : OUTPUT«(Any)␤»
22:48 diakopter____ left
AlexDaniel m: my %h is default(42); say %h<nice> 22:48
camelia rakudo-moar : OUTPUT«42␤»
22:48 diakopter___ joined 22:49 diakopter___ left
AlexDaniel m: my %h is default(42); say %h<nice>; say keys %h 22:49
camelia rakudo-moar : OUTPUT«42␤()␤»
22:49 diakopter___ joined
hahainternet so is it possible to manipulate the 'global' grammar? i'm just about starting to grok std.pm but i want to add support for superscripts and subscripts using this 22:49
but it's quite hard to find reference material
Skarsnik m: my @array is default(-1); @array[2] = 4; say @array; 22:52
camelia rakudo-moar : OUTPUT«[(Any) (Any) 4]␤»
Skarsnik m: my @array is default(-1); @array[2]; say @array;
camelia rakudo-moar : OUTPUT«[]␤»
AlexDaniel m: my @array; say @array.default 22:54
camelia rakudo-moar : OUTPUT«(Any)␤»
AlexDaniel m: my @array is default(42); say @array.default
camelia rakudo-moar : OUTPUT«42␤»
AlexDaniel m: my @array is default(42); say @array.default; say @array[100]
camelia rakudo-moar : OUTPUT«42␤42␤»
Skarsnik damn I though it will feel missing key with default
*feed
AlexDaniel m: my @array is default(42); say @array.default; @array[100] = 100; say @array[50] 22:55
camelia rakudo-moar : OUTPUT«42␤42␤»
AlexDaniel m: my @array is default(42); @array[10] = 10; say @array[5]; say @array
camelia rakudo-moar : OUTPUT«42␤[(Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) 10]␤»
Skarsnik hm 22:56
AlexDaniel it is a bit weird
in fact, it feels wrong…
m: my @array is default(42); @array[10] = 10; say @array[5]; say @array[3..5]
camelia rakudo-moar : OUTPUT«42␤()␤»
AlexDaniel or maybe not 22:57
psch hahainternet: i'd suggest starting with looking at the Slangs in the ecosystem, coupled with (potentially a lot of) looking at Perl6/Grammar.nqp and Perl6/Actions.nqp
Skarsnik :m: my @array is default(42); for 0..10 -> $i {@array[$i]}; say @array;
m: my @array is default(42); for 0..10 -> $i {@array[$i]}; say @array;
camelia rakudo-moar : OUTPUT«[]␤»
hahainternet psch: ack, i know about slangs but nqp is a stage beyond what i've done so far
psch hahainternet: nqp is just perl6 with lots less convenience :) 22:58
hahainternet psch: i just don't have much time unfortunately, and i don't know if my contributions would be welcome
psch hahainternet: i'm pretty sure it would be a fringe-useful Slang, if i understand your intent correctly 22:59
timotimo m: my @array is default(42); say @array[10]; say @array[10]:exists; @array[20] = 100; say @array[10]:exists;
camelia rakudo-moar : OUTPUT«42␤False␤False␤»
timotimo AlexDaniel, Skarsnik: perhaps this helps? ^
hahainternet psch: 2² = 4 and $x₁ or whatever = $x_1
seems to me that this should be core, as we embrace the rest of unicode
AlexDaniel timotimo: right!
timotimo m: my $x₁ = 10;
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/17bLiudIdt␤Bogus postfix␤at /tmp/17bLiudIdt:1␤------> 3my $x7⏏5₁ = 10;␤ expecting any of:␤ constraint␤ infix␤ infix stopper␤ postfix␤ statement end␤ …»
hahainternet and this is standard notation
timotimo aaw.
AlexDaniel hahainternet: I agree! 23:00
psch hahainternet: standard *math* notation, maybe. i don't know of any mainstream programming language that allows it
AlexDaniel hahainternet: but…
timotimo m: say uniprop("₁")
camelia rakudo-moar : OUTPUT«No␤»
psch hahainternet: but that's the thing, it can work as a module quite easily
timotimo what does No stand for?
hahainternet m: say unival("₁")
camelia rakudo-moar : OUTPUT«1␤»
psch timotimo: "other number"
timotimo ah, hm.
psch -" "
timotimo so we allow regular numbers at the end of identifiers, but not "other number"?
hahainternet anyhow psch i will write as a module first
psch timotimo: cf nqp/src/vm/jvm/runtime/Ops.java:4230 23:01
AlexDaniel hahainternet: some time ago there was a discussion about ≤ ≥ ≠ and stuff
hahainternet but i don't know if anyone would notice
AlexDaniel: i assume those are supported, i haven't actually checked :)
AlexDaniel hahainternet: and IMO these should be allowed, why not?
psch hahainternet: it'd probably get mentioned on the perl6weekly if you pout it into the ecosystem
hahainternet i agree AlexDaniel
psch s/pout/put/
AlexDaniel hahainternet: however, some people felt that it is a bit “too much”…
hahainternet: so the suggestion was to implement it as a module first
hahainternet: and then, well, perhaps some parts of it colud become core 23:02
hahainternet well, i need to learn how to manipulate the default grammar before i can write the module
23:02 diakopter___ left
AlexDaniel hahainternet: in fact, I've always wanted to create such module, just didn't had enough time 23:02
psch hahainternet: the challenge, as i see it, is that you'd need to extract the operator function from the operator symbol
zengargoyle i like ₁ being in a var, not so sure about ² being a power.
psch hahainternet: well, except if you want to implement e.g. ²² manually
hahainternet psch: i don't know enough about grammars and new regexes to be able to comment 23:03
psch 'cause those only become really useful if they are composable, i.e. $x²² eqv $x ** 22
timotimo m: my $fooⅣ = 4;
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/qCcF8no4Ch␤Bogus postfix␤at /tmp/qCcF8no4Ch:1␤------> 3my $foo7⏏5Ⅳ = 4;␤ expecting any of:␤ constraint␤ infix␤ infix stopper␤ postfix␤ statement end␤ …»
hahainternet psch: that is precisely the intention i had
timotimo ah, that's also not allowed, eh?
psch hahainternet: right, but that means that for every No (but hopefully there's a narrower category that limits it to superscript) you have to generate the appropriate potentiation operator 23:04
hahainternet obviously these are the more trivialities of unicode, what really matters is the ability for people to write perl in their own language without hinderance
AlexDaniel hahainternet: but you can start with something small, I think. There's a bunch of other stuff like ∞ × ÷ ⋅
psch hahainternet: it definitely sounds like an interesting project!
timotimo m: say uniprop("Ⅳ")
camelia rakudo-moar : OUTPUT«Nl␤»
hahainternet psch: i figured it could be matched earlier in the parsing really 23:05
but again, i know very little
std.pm is a hard read :D
timotimo Nl is "number letter" so why not allow that? :P
AlexDaniel by the way, I wonder if More::Unicode is a good way to name that module 23:06
timotimo i'd put Slang in the name
psch timotimo: i think we allow only L* at the moment..?
timotimo maybe
psch timotimo: maybe it doesn't even match well with unicode categories...
AlexDaniel
.oO( no More::Unicode; )
23:07
hahainternet: anyway, just wanted to say that whether it is a core thing or not, I'll definitely use it 23:09
hahainternet well, the chances of me making it anytime soon are small
grondilu is it possible to have a sigilless named parameter?
hahainternet but if i do make a start i'll make it public and chat in here
AlexDaniel grondilu: \var ?
m: my \var = 25; say var
camelia rakudo-moar : OUTPUT«25␤»
grondilu parameter, not variable. Like: sub (:\var) {...} 23:10
AlexDaniel hahainternet: thanks!
El_Che grondilu: yes, it's called Ruby ;)
AlexDaniel m: sub test(\foo) { say foo }; test(25)
camelia rakudo-moar : OUTPUT«25␤»
23:10 lostinfog joined 23:11 salv0 left
AlexDaniel ah, named 23:11
AlexDaniel has to learn to read
psch hahainternet: well, a module can overwrite the current language
hahainternet: which effectively means you get to decide how stuff is parsed in your module (terms and condition apply)
hahainternet psch: yep, that's what i intend to try 23:12
but we'll see, not tonight as it's friday :)
grondilu I'm asking this because I wanted to use 'δ' as a named parameter for a sub, but writing $δ looks very ugly.
jnthn Epic blog post on what I've been working on recently: 6guts.wordpress.com/2015/11/21/wha...een-up-to/ 23:13
23:13 diakopter___ joined
psch ++hahainternet 23:13
hahainternet Posted on November 21, 2015
holy crap jnthn you're from the future
that explains everythin
AlexDaniel hahainternet: me too
jnthn Shhh!
23:14 lostinfog left
hahainternet jnthn: if you have 2 secs, thoughts on what we've just been discussing? ie 2²=4, $x₁ as a valid variable name 23:14
23:14 lostinfog joined
hahainternet as well as a bunch of other fancy unicode character supports 23:14
AlexDaniel hahainternet: hold on, I thought that $x₁ would be $x[1]
hahainternet does $x[1] make any sense anymore with sigil invariance? i have no idea, but it's down to whatever the most common use of it is i guess 23:15
jnthn m: say 2² 23:16
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/tQwXOMDdC5␤Bogus postfix␤at /tmp/tQwXOMDdC5:1␤------> 3say 27⏏5²␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier␤ …»
hahainternet i was thinking more the denoting of different instances of $x like in math formulas, but i'm very ignorant :)
jnthn m: sub postfix:<²>($n) { $n ** 2 }; say 2²
camelia rakudo-moar : OUTPUT«4␤»
jnthn Well, that one works out like that :)
hahainternet sorta, but there's say, 2³⁰
which is a bit more complex :) 23:17
jnthn Especially when the final char shows up as a replacement char here :P
hahainternet anyway more interested in your thoughts about how, if i was to write a module, it should be implemented
AlexDaniel hahainternet: well, if you have x1 then you probably have x2 and maybe x0… which sounds like an array
23:17 polettix left
jnthn .u ⁰ 23:17
yoleaux U+2070 SUPERSCRIPT ZERO [No] (⁰)
jnthn Ah
hahainternet AlexDaniel: some latin chars can be subscripted too
so you can have the equiv of $x_a
it's not a particularly well fleshed out part of unicode 23:18
but the only way it ever will be is adoption :)
AlexDaniel hahainternet: which is %x<a>
psch m: sub term:<x₁> is rw { $ }; x₁ = 5; say x₁ # this can also work, fwiw
camelia rakudo-moar : OUTPUT«5␤»
23:19 tokuhiro_ joined
psch if we get this as a module it's gonna be an amazing opportunity for improving performance of language recomposition... :P 23:19
jnthn hahainternet: I think if you want it scale well rather than defining a ton of postfixes, then you'd need to write a slang that provides a token postfix:sym<superscript> { <[²³...]>+ }
AlexDaniel psch: yeah, last time I tried that stuff it was horribly slow
hahainternet jnthn: yep that is exactly what i plan to do, that example is perfect though as now i can look up similar examples
pink_mist is there a superscript /? so one can have ^1/3? :P 23:20
psch AlexDaniel: yeah, it has something to do with how we recreate the existing grammar when we have to, because we get a new operator
jnthn hahainternet: Not sure if anyone's really done that yet, but it's probably an easier slang than, say, Tuxic :)
Skarsnik m: my @a[10] is default(42); say @a;
camelia rakudo-moar : OUTPUT«[(Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any)]␤»
hahainternet pink_mist: not quite, but there is ½ and ¾ etc :)
Skarsnik that infortunate x)
m: my @a[10] = 42; say @a; 23:21
pink_mist hahainternet: err, those aren't superscript though :P
camelia rakudo-moar : OUTPUT«[42 (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any)]␤»
hahainternet jnthn: well i don't think i can really contribute in any other way
pink_mist: nope, but as close as you can get i believe
jnthn :)
OK, I'm going to go rest...
'night, #perl6
psch m: say unival ½
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/aw6UTHw076␤Bogus term␤at /tmp/aw6UTHw076:1␤------> 3say unival 7⏏5½␤ expecting any of:␤ argument list␤ infix␤ infix stopper␤ postfix␤ prefix␤ st…»
Skarsnik good night
psch m: say unival "½" # of course...
camelia rakudo-moar : OUTPUT«0.5␤»
hahainternet night jnthn, blog post looks good 23:22
only skim read so far
psch night jnthn o/
pink_mist they have superscript + - = ( and ) .. but no / =(
AlexDaniel pink_mist: what about ÷?
pink_mist nope 23:23
hahainternet pink_mist: yep, only one way to fix though, make it feasible for these to actually be used :D
23:23 tokuhiro_ left
pink_mist they also have n, i, a, and h 23:26
AlexDaniel
pink_mist AlexDaniel: I wanted it as superscript though :P 23:27
AlexDaniel hmm, is there any superscript modifier?
nope 23:29
.u ℁
yoleaux U+2101 ADDRESSED TO THE SUBJECT [So] (℁)
AlexDaniel .u ℆
yoleaux U+2106 CADA UNA [So] (℆)
AlexDaniel ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ 23:30
pink_mist ℆ later :P
AlexDaniel: oh, nice
AlexDaniel oh: ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ 23:31
pink_mist no F?
or C
AlexDaniel it's not too bad, but it is so stupid that some of the characters are missing…
pink_mist yeah
really ordd
*err odd
AlexDaniel it's unicode! Let's have arrows in all directions except one!
.u ₑ 23:33
yoleaux U+2091 LATIN SUBSCRIPT SMALL LETTER E [Lm] (ₑ)
AlexDaniel .u ᵥ
yoleaux U+1D65 LATIN SUBSCRIPT SMALL LETTER V [Lm] (ᵥ)
23:34 sprocket left 23:35 pecastro joined, ZoffixGameBox joined
ZoffixGameBox huh? 23:37
Can someone say something
hahainternet hi :)
23:37 sprocket joined
ZoffixGameBox This is annoying. Camelia's "nl" at the end makes Freenode webchat beep :S 23:37
psch "Attention, there was a non-standard line break" 23:38
ZoffixGameBox hahainternet: I joined 'cause I thought I figured out how to solve for any power, but then realized I was wrong :(
zengargoyle lol, DOS ZoffixGameBox
ZoffixGameBox Ah. it's not nl, it's addressed/PM. Mighty annoying sound
hahainternet: oh wait. I *do* know how to make any power!
psch m: say unival ² 23:39
camelia rakudo-moar : OUTPUT«5===SORRY!5=== Error while compiling /tmp/C88DE_PuoC␤Bogus term␤at /tmp/C88DE_PuoC:1␤------> 3say unival 7⏏5²␤ expecting any of:␤ argument list␤ infix␤ infix stopper␤ postfix␤ prefix␤ st…»
psch m: say unival "²"
camelia rakudo-moar : OUTPUT«2␤»
psch still needs to hook into %*LANG
also those superscripts don't combine, so you'd have to do it on a per-character basis
m: say unival "²³" 23:40
camelia rakudo-moar : OUTPUT«2␤»
psch m: say univals "²³"
camelia rakudo-moar : OUTPUT«(2 3)␤»
ZoffixGameBox hahainternet: make postfix and infix ops of 0-9 and minus. Make the infix return a custom object that would tell the OTHER infix to combine previous power and then the postfix op can take care of all that object stuff and return a proper number
Skarsnik psch, do you remember if the multi method issue with role and class (with multi method foo {...} doing weird stuff)get into a bug repport or something?
psch Skarsnik: tbh i thought you'd report it..? 23:41
ZoffixGameBox hahainternet: that's works only in my head for now though. I'll see if I can extend Operators::Math::Superscripts for any power. That would make it more than a toy :P
psch ZoffixGameBox: put it in a slang that parses the superscripts and gets the univals
ZoffixGameBox: that seems much easier from my POV :P
ZoffixGameBox psch: oh
hahainternet ZoffixGameBox: have a look at the web chat logs
we had a brief chat about it for the hour before you joined 23:42
ZoffixGameBox psch: I know nothing about slangs other than it's a stands for "sublanguage" :) Gonna check 'em out
hahainternet ZoffixGameBox: what jnthn mentioned: > hahainternet: I think if you want it scale well rather than defining a ton of postfixes, then you'd need to write a slang that provides a token postfix:sym<superscript> { <[²³...]>+ }
AlexDaniel what about creating an operator that is empty but does lookahead? Then superscript+ can be a simple numeric literal…
ZoffixGameBox An empty operator? How? 23:44
AlexDaniel ZoffixGameBox: no idea, but I'm just thinking that lookahead can probably do it, maybe 23:45
ZoffixGameBox Oh, in a slang.
AlexDaniel ZoffixGameBox: it sounds a bit better than trying to reconstruct the number
ZoffixGameBox 's head hurts from coding for the last 12 hours :) Time for chicken wings and playing Warframe :) 23:46
\o 'night
23:46 ZoffixGameBox left
Skarsnik psch, can't find it ~~ 23:46
AlexDaniel grondilu: have you found any solution? 23:47
grondilu: I've tried different things but no luck
psch AlexDaniel: LTM forbids operators that define themselves via lookahead 23:52
(at least if i understand LTM correctly...)
AlexDaniel psch: but there would be no alternative 23:53
psch AlexDaniel: of there's an alternative. just match the superscripts, figure out what numeric value they stand for, construct that value as an Int, call postfix:<**> with that number as 2nd arg
AlexDaniel psch: no, I mean LTM thing 23:54
(at least if I understand LTM at least partially…)
psch ...no alternative to LTM?
AlexDaniel psch: well, LTM is about matching the longest alternative, right? 23:55
psch the longest token, yes
AlexDaniel psch: well, if we are in front of ²³ then there would be nothing else to match besides this lookahead thing
psch but LTM doesn't lookahead 23:56
AlexDaniel ah
psch i mean, i think i get what you're saying
but LTM brings that for free
you don't need the lookahead
$x is matches as variable, next it finds a superscript and there's only one token to match those 23:57
so it matches them with that token
s/is matches/is matched/
AlexDaniel psch: alright. Well, I was thinking that maybe there's a way to shove an operator in between, it would have made a couple of things easier, perhaps. 23:58
23:58 n0tjack joined
psch well, functionally i'd expect the superscript to parse equivalent to a postfix 23:59
...which is where jnthn++ put them too