Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2017-01-18

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:00 brokenchicken 4 + log($n)/log(10) < 1 + log($n)/log(16)
00:00 timotimo but we will. make. it. work.
00:00 brokenchicken 3 < log($n)/log(16) - log($n)/log(10)
00:00 brokenchicken log(16)*log(10)*3 < log(10)*log($n) - log(16)*log($n)
00:00 brokenchicken log(16)*log(10)*3 < log($n**log(10)) - log($n**log(16))
00:00 brokenchicken log(16)*log(10)*3 < log($n**log(10) / $n**log(16))
00:00 brokenchicken log(16)*log(10)*3 < log(log(10) / log(16))
00:00 brokenchicken m: say so log(16)*log(10)*3 < log(log(10) / log(16))
00:00 camelia rakudo-moar 703799: OUTPUT«False␤»
00:00 brokenchicken Therefore, there are no numbers that are 3 chars shorter in base 16 than in base 10
00:01 samcv ok it's 600K
00:01 samcv so i'm guessing it must be packing them
00:03 samcv as strings it's 2.9M, in this it is only 601K
00:03 samcv :)
00:04 timotimo that's fantastic news!
00:04 samcv err wait nvm. hold on. i was looking at the wrong binary
00:04 samcv i know it's smaller. need to find the super long string binary
00:04 samcv ok it's from 1.8M to 600K
00:05 samcv :)
00:05 timotimo that's still pretty darn good
00:05 samcv ye
00:05 timotimo a third, as you predicted
00:05 samcv well i predicted it would be 1/3 LESS not 1/3 the size :P
00:05 samcv but then again we don't have to store pointers
00:06 timotimo oh!
00:13 raschipi joined #perl6
00:14 mr-foobar joined #perl6
00:19 Ben_Goldberg joined #perl6
00:25 Ven joined #perl6
00:37 llfourn joined #perl6
00:40 Ven joined #perl6
00:42 shayan__ joined #perl6
00:42 brokenchicken hm, my math is wrong above
00:43 TEttinger what's this compression thing? is it compressing the standard lib, or am I on the wrong track entirely?
00:43 TEttinger that's pretty impressive in general
00:45 samcv me?
00:45 samcv uh it just compresses the text using base 40
00:45 samcv so basically we have 40 "characters" A-Z + '-' + ' ' plus two left over
00:46 TEttinger so like base64, but case-insensitive?
00:46 samcv so we can encode 3 characters into 1 16bit int
00:46 samcv well atm it's case-insensitive. but if we need other case we can add it
00:46 samcv because we have 2 left over characters, we can use those as 'shift' values. to shift to get more symbols
00:46 samcv so we get another 39 more
00:46 TEttinger ah, clever
00:46 TEttinger well
00:47 samcv so it stores text in 1/3 the size, and we seem to get another 1/3 less size savings because not having to store all these char * pointers
00:47 samcv to all the unicode strings
00:47 samcv s/less/more
00:48 TEttinger hm
00:48 samcv we can't access each name without going through the table, but we go through all the names anyway whenever we need to get a unicode name => cp
00:48 samcv like with "\c[ ]"
00:48 samcv and make a hash for future use
00:48 aborazmeh joined #perl6
00:48 aborazmeh joined #perl6
00:49 samcv but 1.8M to 600K is a huge improvement
00:49 samcv well the savings may be more, these tests did not include any NULL pointers. which currently are in some of the unicode name tables. and instead of storing a 8bit null pointer we can store a 16bit "0" there instead
00:50 samcv so all the names end up an array of type unsigned short uninames[30000] = { 2, 31041, 5000...}
00:50 samcv 2, 31041, 5000 encodes 'SPACE' if you were wondering
00:51 TEttinger neat
00:51 TEttinger have you seen lz-string?
00:51 samcv we can store the 2 (number of base 40 numbers after it), in 1/2 the width of a null byte that would be at the end of a string
00:51 TEttinger not sure if it's relevant here
00:51 samcv plus we get the savings from storing 6 characters in 2 16bit ints
00:51 samcv does it work for compressing small strings?
00:52 timotimo there's still a lot of win to be had from compiling a list of common prefixes, i'd assume
00:52 samcv true
00:52 TEttinger main site seems down, but the repo is up https://github.com/pieroxy/lz-string
00:52 samcv compressing with lz4, i get 25% of the size
00:53 timotimo like, we already have that shift mechanism
00:53 TEttinger lz-string has some interesting options for encoding as either 16-it unsigned ints or valid UTF-16
00:53 samcv but we already get 1/3 the size as before.
00:53 TEttinger or base64 chars
00:53 samcv and compressing with lz4 we get 25% the size, so
00:53 TEttinger wooo
00:53 TEttinger may not stack
00:53 samcv may as well do it this way? idk
00:53 samcv which TEttinger ?
00:54 samcv lz4 compressed?
00:54 TEttinger encoding as 16-bit and then lz4 may not give 1/4 of 1/3
00:54 samcv yeah no it will not at all
00:54 samcv but 1/3 and 1/4 are pretty close
00:54 TEttinger :)
00:55 samcv and it's easy to have the strings be separated as units
00:55 timotimo make one ANATOLIAN HIEROGLYPH, one APL FUNCTIONAL SYMBOL, one ARABIC, ARABIC LETTER or maybe just LETTER to go after ARABIC, ARABIC LIGATURE (or maybe just LIGATURE), BALINESE LETTER, BAMUM LETTER PHASE-, BOX DRAWINGS, BRAILLE PATTERN DOTS-, CANADIAN SYLLABICS, CIRCLED
00:55 samcv though i guess we could just parse it and have some item between each name, but. still doesn't seem to be that much of an improvement. plus we'd have to implement some decoding
00:56 samcv i would assume lz4 compression would do something similar?
00:56 TEttinger not sure what lz4 does differently from lzw
00:56 samcv xz compresses into 89K compared to 601K
00:56 TEttinger or lz-string, which is different again
00:56 TEttinger wow
00:57 timotimo COMBINING, CUNEIFORM (SIGN and NUMERIC SIGN), EGYPTIAN HIEROGLYPH, ETHIOPIC SYLLABLE, ...
00:57 timotimo probably want to build a dictionary of common substrings manually
00:57 timotimo er
00:57 timotimo automatically, *not* manually
00:58 samcv i mean we could even do that with base 40
00:58 timotimo VAI SYLLABLE, YI SYLLABLE
00:58 samcv we have 2 left over things, so we can have one be shift, and then have 40 prefixes that are most common
00:58 timotimo yeah, that's what i was thinking
00:58 BenGoldberg .u ????
00:58 yoleaux No characters found
00:58 samcv so could store a prefx in only two 16bit ints
00:59 samcv yeah that would be cool
00:59 timotimo would still be massive savings
00:59 samcv yeah
00:59 samcv probably get it down to how lz4 compressed it
00:59 BenGoldberg unicodable6, '????'
00:59 unicodable6 BenGoldberg, U+1F3F3 WAVING WHITE FLAG [So] (????)
00:59 unicodable6 BenGoldberg, U+0027 APOSTROPHE [Po] (')
00:59 unicodable6 BenGoldberg, U+0027 APOSTROPHE [Po] (')
00:59 samcv should i try a different compression other than lz4?
00:59 samcv lz4 is just known to be faster and require less of a lookup table i *think* but i could be confusing it with something else
01:00 samcv yeah lz4 is what i meant
01:02 timotimo we have the benefit of not having to do any streaming encoding/decoding
01:02 timotimo and also we decompress a million times more often than we compress, so our compression is allowed to be slow as molasses
01:02 samcv yeah
01:06 samcv i need to look into the naming of the CJK ideographs.
01:06 samcv they are derived from their properties
01:06 timotimo if we decide that the majority of codepoint names start with a prefix that's in our table, we can assume the first entry in the list is always shifted and just make up a "forget it" value for shifted, so you can skip it in case we don't have a common prefix after all. that's a valid trade-off, too.
01:06 timotimo do they have names officially?
01:07 samcv yes
01:07 samcv well. they're not in Unidata.txt
01:07 samcv they have names though
01:08 timotimo oof
01:08 timotimo so right after we shrink our database a whole lot, it's gonna grow again
01:08 timotimo anyway, i'll head to bed
01:08 timotimo good luck with our compression scheme! :)
01:08 timotimo we're definitely smart enough to build our own compression and decompression!
01:08 samcv err maybe it's not CJK
01:08 BenGoldberg If you're searching for common substrings, does that mean that some strings will start as ropes?
01:08 samcv maybe i'm thinking hangul. idk one of them is derived
01:09 samcv yeah it's Hangul
01:09 timotimo btw, how do we reach exactly 40? that doesn't seem like a power-of-two number to me
01:09 samcv it isn't
01:10 TEttinger 40 * 40 * 40 fits in 2^16
01:10 samcv but base 40 numbers fit into 16bits
01:10 samcv that's the reason
01:10 TEttinger 64000 vs. 65536
01:10 TEttinger 41^3 is too big
01:10 samcv ^
01:10 TEttinger I've done this math too, for hilbert curves
01:10 timotimo ah, of course
01:10 timotimo thank you
01:10 timotimo that's enough dumb from my end for tonight :)
01:10 samcv here's my perl 6 code to generate the base40 https://github.com/samcv/UCD/blob/master/lib/EncodeBase40.pm6
01:10 BenGoldberg joined #perl6
01:11 samcv here is some sample code to do the decoding https://github.com/samcv/UCD/blob/master/base40decode.c
01:11 TEttinger I made a 5x5x5 space-filling curve that can be used to construct a 40x40x40 hilbert curve that's s optimal as a cube gets in 3D
01:12 TEttinger somewhat interestingly, I did it visually, https://dl.dropboxusercontent.com/u/11914692/Puka_Curve.png
01:13 timotimo pretty output
01:13 samcv base 40 is sorta simple, mostly you just have to remember it packs character triplets into base40, and the first character is the most significant place in the base 40
01:13 TEttinger heh, that was... the input
01:14 timotimo what did you export that as? did it land in blender?
01:14 timotimo waitwhat :)
01:14 Ben_Goldberg joined #perl6
01:14 timotimo hm, if i had to output something very pretty from a script, i'd probably write a povray script
01:14 timotimo (or what those are called)
01:14 TEttinger I made it in the 3d editor (magicavoxel) so I could tell what was going to work, then went through once i had a working 5x5x5 cube and plugged it through by hand to arrays of vertices
01:14 timotimo when i was little i had a lot of fun with Moray
01:15 timotimo ah, i see
01:15 TEttinger there are many, many possible 5x5x5 layouts, only some are "good"
01:15 timotimo i won't let this distract me from going to bed, though
01:15 TEttinger heh ok
01:15 timotimo seeya!
01:15 TEttinger (this one is bad because of a 4length straight line, https://dl.dropboxusercontent.com/u/11914692/Puka_Curve_old.png )
01:15 timotimo maybe tomorrow i'll have to generate a povray scene or two from perl6
01:16 TEttinger cool
01:16 bwisti joined #perl6
01:16 timotimo i haven't written povray script by hand ever
01:16 timotimo no promises at all.
01:23 lucs Why is the code shown in the Advent calendar only _twice_ as small as the surrounding text?
01:24 tardisx joined #perl6
01:24 skids joined #perl6
01:24 lucs Why not smaller. How much smaller can it be. Really.
01:25 * lucs eyes aren't getting better as he ages.
01:27 Ben_Goldberg joined #perl6
01:29 skids joined #perl6
01:29 kaare_ joined #perl6
01:29 shmibs joined #perl6
01:29 drrho joined #perl6
01:29 alimon joined #perl6
01:29 mulk[m] joined #perl6
01:29 dp[m] joined #perl6
01:29 wictory[m] joined #perl6
01:29 telex joined #perl6
01:29 xfix joined #perl6
01:29 xinming joined #perl6
01:36 dataf3l joined #perl6
01:38 llfourn joined #perl6
01:41 dataf3l joined #perl6
01:45 brokenchicken My grant proposal to TPF is now online for community feedback: http://news.perlfoundation.org/2017/01/grant-proposal-standardization.html
01:45 * brokenchicken drops to bed.
01:50 samcv nice brokenchicken what time did you email it? i emailed mine this weekend, haven't gotten an email back yet. hope it was received
01:50 tardisx joined #perl6
01:50 samcv who did you email?
01:51 tardisx joined #perl6
01:52 tardisx joined #perl6
01:53 brokenchicken samcv: O
01:53 brokenchicken samcv: I've used the online form: http://www.perlfoundation.org/how_to_write_a_proposal
01:54 brokenchicken samcv: and it says you get reply within 24 hours, which I did
01:54 samcv hmm
01:55 brokenchicken samcv: you can email Makoto and ask tpf-grants-secretary@perl-foundation.org
01:55 samcv it has a dash in the name?
01:55 brokenchicken yup
01:56 brokenchicken That's where the confirmation email came from at least and the name is Makoto
01:57 brokenchicken And that's the address listed on http://www.perlfoundation.org/contact_us
01:57 samcv perl-foundation.org? tho the site says it's perlfoundation.org
01:57 tardisx joined #perl6
01:58 samcv ah i see
01:58 cog_ joined #perl6
01:59 brokenchicken samcv: I sent my on the 12th around 5pm EST
01:59 samcv ok i sent it to that
01:59 samcv well I sent him a message
02:02 samcv hopefully it can still be posted this month, sometime
02:06 samcv i think my mail client is screwing up. argh
02:07 samcv don't even know if it sent anything. i have nothing in my sent folder
02:08 samcv mostly sure. it's in the sent folder at least
02:17 samcv ok got an email back. they will get back to me in a few days. yay
02:21 kalkin- joined #perl6
02:22 labster joined #perl6
02:27 cibs joined #perl6
02:28 geraud joined #perl6
02:34 llfourn joined #perl6
02:34 cale2 joined #perl6
02:34 cale2 Hey quick question
02:34 cale2 Does the compiler do any optimizations yet?
02:36 cale2 For example, would it make the code faster to write in types or to write a proto method for your multis?
02:46 MasterDuke cale2: frequently using native types is faster (e.g., int vs Int, str vs Str)
02:46 samcv timotimo, in the first 10,000 unicode codepoints, there are 3990 occurrences of the word letter
02:46 samcv so we should be able to compress pretty well. going to generate a report for all the unicode names and see what the 40 most common are
02:46 samcv so we'll have A..Z, '-', ' ', \shift
02:46 samcv and there could be one more, or we could leave 0 as null, which is convenient in generating the strings but not really required
02:48 ilbot3 joined #perl6
02:48 Topic for #perl6 is now »ö« Welcome to Perl 6! | https://perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:,  or /msg camelia p6: ... | irclog: http://irc.perl6.org or http://colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
02:49 cale2 Does anyone else find emoji to be a pretty absurd concept? When they introduced the skin tones, I think that's when they jumped the shark for me
02:53 ttt they made sense to introduce to support the encodings that already had them
02:54 samcv so i think we may be able to save 204kb if these calculations are correct. well we can save more since i'm not weighting words for length
02:55 samcv cale2, idk it evolved out of a need for standardization of text
02:55 samcv which is what Unicode does. but. it is a bit interesting
02:55 ttt yeah that's a good way to put it, heh.
02:55 samcv adding egyptian is just as absurd tbh
02:55 samcv but in a diff way
02:56 samcv but unicode does say that the eventual goal should be able to embed actual pictures or svg
02:56 samcv instead
02:56 samcv not gonna happen anytime soon. but even if i don't use emoji very much, some people do, which i think is good to take into account. just how unicode supports all these languages and odd scripts
02:57 samcv but the main reason they entered unicode was the japanese phone companies started having their own separate encodings for these emojis, and so unicode adopted them as standardized codepoints, and then it just took off from there
02:58 samcv i think codifying them in Unicode standard is what caused emoji to be adopted by the world outside of japan
02:59 samcv and one of unicode's big goals is to try and be able to take other encodings or take manuscripts possibly quite old, and be able to correctly transcribe them. which is why we have a slashed 0 character
02:59 samcv that is a different codepoint than '0'
03:00 ttt it *is* kindof nice to have interoperability with various chat systems, instead of them each having their own implementation
03:00 dalek joined #perl6
03:00 ttt when people text me emojis and I receive it in google hangouts or on android or on ios, they just show up regardless
03:00 samcv yeah. though i also think using actual pictures defeats the purpose of plain text
03:00 samcv characters have a semantic meaning, which emoji qualify for
03:00 samcv also like the country flags, are also kind of cool even though they are shitty to implement.
03:00 samcv if you see 3 regional characters, that's one flag. if you see 2, that's one flag. if you see three + two, then you have 2 flags
03:00 samcv next to each other
03:01 ttt I've been seeing people attempt to use the country flags
03:01 ttt aren't the explicitly legacy/deprecated at the time they were introduced?
03:01 samcv i first thought that it was insane not to use a ZWJ between the regional indicators
03:01 samcv but i forget the reason, eventually figured out that would actually make things worse. forget the specifics
03:01 samcv Unicode is pretty damn purposeful with anything they do
03:01 samcv no ttt
03:02 samcv m: "\c[United States]".say
03:02 camelia rakudo-moar 703799: OUTPUT«????????␤»
03:02 samcv idk if you saw, but i added support for unicode sequences, to MoarVM
03:02 samcv so that ^ just got added like a few days ago
03:02 samcv m: "\c[United States]".uninames.perl.say
03:02 camelia rakudo-moar 703799: OUTPUT«("REGIONAL INDICATOR SYMBOL LETTER U", "REGIONAL INDICATOR SYMBOL LETTER S").Seq␤»
03:04 cale2 I just remember reading an article after the skin tones and the poop were released. The author's native language had yet to be implemented by unicode. He had some brilliant quote
03:04 samcv heh
03:04 samcv what script did they use?/ language
03:04 cale2 "I can't write my own name, but I can let you know that I was specifically thinking about race when I sent you that smiley"
03:05 samcv some languages have multiple scripts so there is a distincion
03:05 samcv XD
03:05 samcv emoji are a lot easier to add than full scripts though
03:05 cale2 i'd have to look back to find it
03:05 samcv requires so much more planning and thought regarding properties and such
03:06 cale2 Have you guys been reading these comments? https://www.reddit.com/r/programming/comments/5npdui/deeply_typed_programming_languages_response_to/?limit=500
03:06 cale2 good reading material
03:08 samcv nope
03:17 bpmedley joined #perl6
03:30 cibs joined #perl6
03:33 aindilis joined #perl6
03:33 samcv ok yeah so we can save at least 212.108 KB if we have 29 words be values in our "shift" for the base 40 encoding
03:34 aindilis joined #perl6
03:36 samcv need to tweak the weighting a little more, and maybe we could have double shift, and so that would still only take up two bytes, instead of about 2/3 * 2 bytes
03:38 ttt samcv: I didn't say so earlier, but \c[United States] is pretty cool.
03:38 samcv :)
03:39 samcv yeah all the emoji sequences and emoji zwj work. and soonish will also do all the non-emoji unicode sequences. but before I do that i need to make it case insensitive and some other things
03:40 samcv also all 400+ Name Alias's have been added as well. as of this commit https://github.com/MoarVM/MoarVM/commit/816186484b5cc52f9ff1be6afa3b6f49264335bf
03:40 samcv list of aliases is here ftp://ftp.unicode.org/Public/UCD/latest/ucd/NameAliases.txt
03:40 samcv the alias names also include corrections, since unicode names never change
03:40 samcv u: U+FE18
03:40 unicodable6 samcv, U+FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET [Pe] (︘)
03:40 samcv see how this one is misspelled :P
03:40 samcv u: 0x2B7A
03:40 unicodable6 samcv, U+2B7A LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE [So] (⭺)
03:40 ttt I think a few have changed.  That rule was introduced in some version after 1.0 iirc.
03:41 samcv wow that's uh
03:41 samcv that's a bad error
03:41 ttt It's been a while since I last dove deep into Unicode though.
03:41 samcv the correction name for 2B7A: LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE
03:41 ttt it's a fun source of rabbit holes when you're wanting to find one to fall down.
03:41 samcv so the canonical name says horizontal, but the correction is that it's actually vertical
03:41 samcv wow
03:42 samcv sucks when you are the person who misspelled bracket. wonder if that person got fired ;)
03:43 ttt I haven't successfully used Perl6 for much real/productive work yet, but I suspect I'm going to get a lot of mileage out of it on some various Unicode-centric/Unicode-heavy tools I have been meaning to make.
03:43 samcv nice
03:44 ttt It's very nice, in that context, how quickly it integrates new Unicode versions.
03:44 ttt so congrats all on that, I guess :)
03:44 samcv :)
03:44 samcv i have submitted a grant proposal to continue working on the Unicode, so i hope that gets accepted after they publish it.
03:44 samcv will be able to make all the big changes i've been toying around with
03:44 llfourn joined #perl6
03:46 samcv 1.8MB => 600K and may be able to save another 250K off that. so should reduce the size of the library a lot
03:47 xtreak joined #perl6
03:54 noganex joined #perl6
03:56 ttt samcv: do you have a blog or any articles about your Perl6 work?
03:56 samcv i have a blog. cry.nu is the site. i need to get it syndicated on pl6net.org tho
03:57 samcv and really need to do one about all the Unicode work i've done thus far
03:57 ttt I look forward to it :)
04:02 faraco joined #perl6
04:13 diakopter samcv: you should compare to the on-disk and in-memory size of libicu too :p
04:15 Vijay_ joined #perl6
04:16 Vijay_ JOIN
04:16 samcv it's 26MB diakopter
04:16 samcv on disk
04:16 samcv libicudata.so.58.2
04:18 diakopter samcv: well, presumably it has tons of stuff precomputed, right?
04:18 samcv probably
04:18 samcv idk
04:19 samcv i think they do localization stuff too maybe?
04:19 samcv no clue
04:19 samcv i think they may tho
04:19 diakopter .u :laughing:
04:19 yoleaux U+003A COLON [Po] (:)
04:19 yoleaux U+0061 LATIN SMALL LETTER A [Ll] (a)
04:19 yoleaux U+0067 LATIN SMALL LETTER G [Ll] (g)
04:19 diakopter *headdesk*
04:19 diakopter what document defines those emoji :ascii:
04:20 samcv none
04:20 diakopter surely they are somewhat standardized
04:20 samcv i don't think they're the full names
04:20 samcv well. i only know abuot the official unicode ones :\
04:20 samcv diakopter, i'm sure some of them are just the names of those characters
04:21 diakopter I see those shortcut ones lots of places
04:23 diakopter yes, it's mostly "replace spaces with underscores, and sometimes drop some redundant suffixes"
04:24 diakopter such as "last quarter moon symbol" becomes :last_quarter_moon:
04:26 diakopter well, there's plenty of much shorter abbreviations too.
04:27 diakopter samcv: yeesh, there's an emoji 5.0 beta
04:40 Ven joined #perl6
04:43 samcv yeah
04:45 cpage joined #perl6
05:00 Geth ecosystem: b5cf76b2a8 | faraco++ | META.list
05:00 Geth ecosystem: removed WebService::Gitter
05:00 Geth ecosystem: review: https://github.com/perl6/ecosystem/commit/b5cf76b2a8
05:04 faraco joined #perl6
05:04 faraco joined #perl6
05:09 Geth ecosystem: 5770aba212 | MasterDuke17++ | META.list
05:09 Geth ecosystem: Removing List::Combinations
05:09 Geth ecosystem:
05:09 Geth ecosystem: The built-in functions are now fast enough that this module is no longer needed and it has been marked as deprecated for the past four months.
05:09 Geth ecosystem: review: https://github.com/perl6/ecosystem/commit/5770aba212
05:10 Ven joined #perl6
05:14 CIAvash joined #perl6
05:37 Cabanossi joined #perl6
05:56 samcv I think I almost have the hang of setting up a shift level which contains strings. at least from the perl 6 side
05:59 samcv for now only splitting words based on spaces, i will have to compare the two and see what yields the best compression. though technically could be the biggest compression if we compare substrings too, that makes it somewhat complicated
06:00 samcv the top 40 words award goes to "SYLLABLE","HIEROGLYPH","MATHEMATICAL","COMPATIBILITY","CAPITAL","CUNEIFORM","SMALL","SIGN","EGYPTIAN","WITH","SIGNWRITING","ARABIC","LATIN","SYLLABICS","SYMBOL","CANADIAN","ANATOLIAN","TANGUT","LIGATURE","COMBINING","SANS-SERIF","ETHIOPIC","CYRILLIC","MUSICAL","DIGIT","HANGUL","LINEAR","VOWEL","TIMES","BAMUM","RADICAL","FORM","CIRCLED","ARROW","CJK","VARIATION","ITALIC","GREEK","BYZANTINE","NUMBER"
06:03 ttt is that in order
06:04 geekosaur looks not unlikely
06:05 ttt how come "LETTER" isn't in there?
06:05 ttt I guess my impressions are skewed because the parts of unicode I use and refer to a lot are really a small subset of the total.
06:05 thayne joined #perl6
06:07 BenGoldberg .u Z
06:07 yoleaux U+005A LATIN CAPITAL LETTER Z [Lu] (Z)
06:08 rindolf joined #perl6
06:12 ttt hrm... anyone else having problems accessing doc.perl6.org ?
06:12 ttt er, docs.perl6.org
06:13 eythian joined #perl6
06:13 ttt looks like it needs a poke.
06:15 RabidGravy joined #perl6
06:18 samcv ttt, that is in order
06:19 sftp joined #perl6
06:20 samcv so it goes from 2.2MB to 2.6MB in source (source also has comments of the names in text next to the data structure)
06:21 samcv compiled it goes from 601K to 470K
06:27 samcv so i guess it saved half the amount it estimated it would. need to tweak that estimation function. but manually decoding it seems to indicate it's working properly
06:28 samcv need to add a p6 decode function so i can write some tests for it
06:29 samcv hmm may save more space if like it uses "SYLLABLE " instead of "SYLLABLE" as the word. still not sure the best way to have it compute it for all possible combinations
06:30 samcv and 'LETTER' is in all but 2 cases only found with spaces on either side. so could save space there
06:31 samcv i think the spaces case may be most likely and probably the easiest to program and check. compare estimates of byte saved with spaces before/after/both/neither
06:32 samcv but then what if you get like CAPITAL LETTER, then if LETTER encodes on both sides then can't do "CAPITAL ", ahh
06:32 bjz joined #perl6
06:33 samcv oh wait ttt that's not actually the most seen list
06:33 samcv that's in order of bytes saved if we encode the whole word as 4/3 a byte
06:36 samcv i think the estimation method i'm using is flawed. because i do .chars - 2/3 * 2. but we're now saving it compared to encoding as a string, we should compare to as encoded in base 40. let me see if the order/words change if i do that
06:36 samcv should be (.chars * 2/3) - 2/3 * 2
06:39 geekosaur do you get anything by pulling the top 160 words and encoding those as bytes in 0..31 + 128..255?
06:42 samcv hmm I don't understand what you mean
06:44 samcv new 40 is: "SYLLABLE","HIEROGLYPH","MATHEMATICAL","COMPATIBILITY","CAPITAL","CUNEIFORM","SMALL","EGYPTIAN","SIGN","SIGNWRITING","WITH","ARABIC","SYLLABICS","SYMBOL","LATIN","CANADIAN","ANATOLIAN","LIGATURE","COMBINING","SANS-SERIF","TANGUT","ETHIOPIC","CYRILLIC","MUSICAL","DIGIT","HANGUL","LINEAR","VOWEL","TIMES","BAMUM","RADICAL","CIRCLED","VARIATION","BYZANTINE","ARROW","ITALIC","NUMBER","FORM","GREEK","PARENTHESIZED"
06:45 geekosaur find the top 160 words across all descriptions, map each to a single byte with a value in the two non-graphic ranges. so \x00 might map to LETTER, \x01 to SYLLABLE, etc. --- this assumes that descriptions only use bytes in the range 0x20 .. 0x7f (which is likely a little too large but you gain from needing fewer tests for in-range)
06:45 samcv so it's a little altered, it saved 8 bytes in the final compiled file
06:46 samcv well i will have a 2nd level shift as well. so that's the top 80 words + compressing all the rest of the text into 2/3 the size
06:46 geekosaur if it's guaranteed to not use anything in 0x60 .. 0x7e (0x7f is DEL so not used) then you get another 32 codes to replace words; that range is ` a-z { | } ~
06:46 samcv idk if that would store better. but it's maybe possible
06:46 samcv i get what you mean though
06:47 samcv i guess I could compute that. so should assume that 160 number values we will have?
06:48 samcv to encode the words that is
06:49 geekosaur well, I did say top 160. I suspect you won't even reach that though as it may not be worth applying to words of length < 4 (I mean, they'd still compress but the gain might not be worth it unless they're *really* common)
06:50 timotimo samcv: i recommend not storing an actual null byte since we're already storing the amount of base-40-pieces at the beginning
06:50 samcv well we store the number of null bytes, not the number of characters it encodes
06:50 timotimo how many occurences of the 41th most common string are there?
06:50 samcv well timotimo we only encode a null byte for the base level, that encodes characters
06:51 samcv the shift level has no null byte
06:51 samcv since it's assumed after a shift character there will always be something after
06:51 timotimo right, but you only ever have a null byte at the end of a string and we already exactly know where that is, so ...?
06:51 samcv and not just have a shift hanging off the end
06:51 samcv but we can encode a space and a word into 2 bytes
06:52 samcv but i guess we could do the same with the proposed method. give me a sec to compile some numbers
06:52 timotimo i don't understand what you mean by "a space and a word"?
06:52 samcv well timotimo, if we have 2 base 40 numbers, it could encode 6 chareacters or 5
06:52 samcv shift + word + space fits into one base 40 number
06:53 samcv which is 2 bytes
06:53 timotimo oh
06:53 timotimo i'd still say we should keep a space at the end of our short-cutted words (and not at the beginning)
06:53 samcv but we could check the range
06:54 timotimo the range?
06:54 samcv the highest place of the base 40 number
06:54 samcv which encodes the 3rd character
06:54 samcv well we could encode a null at the end of the numbers in case there's not already a null there implicitly due to that place being 0
06:54 timotimo by character do you mean shift, word, space?
06:54 samcv that could save bytes
06:55 samcv character as in uhm. one thing
06:55 samcv 1 charecter, or 1 shift + thingy(which would become a word)
06:55 timotimo we could call one third-twobyte a codeme
06:55 samcv well i mean two characters would be one word
06:56 samcv codeme? k
06:56 timotimo i don't understand how encoding a 0 would be able to save storage space
06:56 samcv well a 0 is implicit if the length of the codeme's is not divisible by 3
06:57 samcv so you have XXX|XXX|XX
06:57 samcv there's an implicit 0 at the end
06:57 timotimo ah, right
06:57 timotimo so basically what base64 has == for
06:57 samcv so we could save room by explicitly adding a 0
06:57 samcv which would result in the same thing for codeme divisible by 3
06:57 samcv err. wait. it would not be the same thing
06:58 samcv but it would be the same for if they were like 9 + 1, or 9+ 2
06:58 samcv so assuming random distribution of number of codeme's that would save us about 2/3 of 2 bytes for each unicode name
06:59 samcv on average
07:00 timotimo i'm still confused, i think
07:00 samcv just think of it as each base 40 number encodes 3 characters max
07:01 timotimo you mean each two-byte sequence, right?
07:01 samcv yeah they're two bytes. but yeach base 40 number is two bytes
07:01 timotimo ok, number rather than digit
07:01 samcv the base 40 number has 3 significant digits. the most significant one encodes the 1st character, middle one encodes third
07:02 samcv and least significant encodes the 3rd character
07:02 bjz joined #perl6
07:02 timotimo that was at least one source of confusion
07:02 samcv yeah. it was confusing for me for a while
07:02 domidumont joined #perl6
07:02 samcv no worries :P
07:03 timotimo i still don't know how we save space by encoding an explicit 0 that's not already enforced to be encoding some sort of padding anyway
07:03 timotimo btw, all unicode names are less than 40 characters long, aren't they?
07:04 timotimo m: say (^10000).map(&uniname).map(*.chars).minmax
07:04 camelia rakudo-moar 703799: OUTPUT«3..75␤»
07:04 timotimo oh, are not ... by far!
07:04 timotimo m: say (^10000).map(&uniname).map(* => *.chars).minmax(:by(*.value))
07:04 camelia rakudo-moar 703799: OUTPUT«"<control-0000>" => 14.."ZERO WIDTH NON-JOINER" => 17␤»
07:04 timotimo wat :)
07:05 samcv hah
07:06 timotimo oooh
07:06 timotimo of course, the whatever code takes two arguments
07:06 timotimo at first i thought "yeah, i want two arguments!"
07:06 timotimo nope, i really, really don't
07:06 samcv we save space because we don't have to encode a number of following base 40 numbers
07:06 samcv so now we have like: 2,4999,39999
07:06 timotimo ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE => 75
07:06 samcv would encode one unicode name
07:07 samcv sorry typo,
07:07 samcv so now we have like: 2,4999,3999
07:07 samcv and if that actually is made up of 5 or 4 codeme's, then we can remove the leading 2
07:08 samcv since those empty significant base 40 digits 0
07:08 timotimo but how do we know that the first one was elided?
07:08 samcv and for the ones where it is multiples of 3 codeme's, we just add another to the end that is a 0
07:08 samcv hmm?
07:08 domidumont joined #perl6
07:09 timotimo well, if we remove a leading 2, how do we know to put it back when decoding?
07:09 samcv the leading 2 only encodes the number of numbers coming after it which are part of one unicode name
07:09 samcv it doesn't hold any other data, except the number of integers following it
07:09 timotimo ah, now i get it!
07:09 samcv ok!
07:09 samcv :)
07:10 timotimo it's because we'll never have a unicode name that's like a few hundred characters long
07:10 samcv if we wanted to go hard mode i guess we could even have them cross 16bit integer bounderies
07:10 Tonik joined #perl6
07:10 samcv so X0X may be stored in one integer but the unicode names start and begin in the same integer. but that sounds a pair
07:10 samcv timotimo, not really. it would work fine if it were really long
07:10 timotimo we might then need to encode indices into that table as bigger numbers
07:11 samcv but that may be faster for processing though
07:11 samcv if we had really long strings
07:11 Geth ecosystem: 02aa8bdda4 | (Stefan Seifert)++ | META.list
07:11 Geth ecosystem: Inline::Python now uses META6.json instead of META.info
07:11 Geth ecosystem: review: https://github.com/perl6/ecosystem/commit/02aa8bdda4
07:12 timotimo like, our indices will now have to be divided by 3 to get the right 2-byte-offset
07:12 samcv if we had bigger numbers?
07:13 timotimo well, i mean, if we want to have names overlap at beginning and end
07:14 * geekosaur just histogrammed uniname... bah, that's not as amenable to word compression as I hoped
07:21 beatdown joined #perl6
07:27 Actualeyes joined #perl6
07:28 darutoko joined #perl6
07:36 wamba joined #perl6
07:36 geekosaur tot 120240 cpr 70027 sing 9571 chr 4133
07:38 geekosaur taking the corpus as .uniname over ^0x10fff + the second column in NameAliases.txt, there are 9571 singletons, 4133 single-character "words" (all letters A-Z), 120240 words overall of which 70027 are compressed to a single byte with the 160 top words encoding (ignoring aforementioned letters as not worth wasting a slot)
07:40 samcv yeah that's what I expected :\
07:40 samcv the most common 40 names have most of the values, but after that it kind of drops off
07:41 timotimo oh, is 40 the sweet spot?
07:41 geekosaur but actually I confirmed I can steal another 32, so :)
07:41 samcv hah
07:41 geekosaur which raises it to 72165 compressible, haven't computed space savings. note though that this encoding means many spaces go away too
07:42 samcv spaces?
07:42 samcv oh
07:42 geekosaur because I'm not bothering with prefix/suffix (too much complexity for too little gain)
07:43 samcv wait you're not doing by word? can i see a gist?
07:43 geekosaur that is, I suspect I gain far more by being able to elide spaces around/between encoded words than I would by supporting prefixes or suffixes
07:43 geekosaur ?
07:43 samcv can I see how you're generating the top 130 or however many substrings?
07:44 timotimo hm .. we could totally encode only the words themselves and then have a little bit of tracking (like an actual bit) to control whether we have to emit a space or not
07:44 timotimo especially for cases where one compressed word follows another compressed word
07:44 samcv about 60 may be the sweet spot
07:44 moritz are you two inventing a custom compression algorithm?
07:44 samcv but i found that, for the second shift level
07:44 samcv gains were less than 10% of the first shift level
07:45 timotimo moritz: yes! :D
07:45 moritz couldn't you use zlib or lzma or something, build a dictionary from the complete corpus of Unicode names, and then compress each name individually?
07:45 timotimo 020733  timotimo │ we're definitely smart enough to build our own compression and decompression!
07:45 timotimo oh no, not another 3rd party dependency! ;)
07:45 samcv heh
07:45 moritz oh, I'm not doubting your smarts
07:46 moritz just that using a well-tested, externally developed library might be much more maintainable
07:46 timotimo i'm not sure how easy it is to share one dictionary across multiple compression runs
07:47 moritz me neither, but I think that's what HTTP/2 does for its header compression
07:47 timotimo right, but that's also a custom solution :)
07:47 moritz so you're not the only ones having that particular problem
07:47 samcv Can save: 142.424667 KB with first shift level
07:47 samcv Can save: 24.078 KB with the second shift level
07:47 timotimo like, they have their own pre-defined dictionary that's shared between all HTTP/2 implementations
07:47 moritz and there are many HTTP/2 implementations, so there should be some libraries that support that
07:50 samcv i'm going to generate it all with explicit encoding of null at the end. and see. that should probably save quite a bit of space…
07:50 samcv 2 bytes * 2/3 * number of unicode names
07:50 geekosaur https://gist.github.com/geekosaur/1c44e854a2c37419e07f7e1bfdf31575
07:51 moritz https://blog.cloudflare.com/improving-compression-with-preset-deflate-dictionary/ "The utility to make a dictionary for deflate can be found at https://github.com/vkrasnov/dictator.
07:51 moritz The optimized version of zlib used by CloudFlare can be found at https://github.com/cloudflare/zlib"
07:51 timotimo "dictator" <3
07:51 timotimo samcv: i just thought about something else
07:51 moritz sorry, I shouldn't be ruining your fun engineering project :-)
07:51 timotimo samcv: the size of a unicode name is implicitly stored in the table that gives us codepoint-to-name offsets
07:52 timotimo because offset[cp + 1] - offset[cp] equals the length
07:52 samcv which table are we talking about
07:52 timotimo that could save us 16 bit per name
07:52 timotimo (how much is that?)
07:52 * moritz has a very old blog post on how to create huffman trees with Perl 6
07:55 ttt question: is this largely an exercise undertaken because it's fun and you can, or are there strong reasons to want this data to be as small as possible on-disk and/or in-mem ?
07:56 * geekosaur suspects he's not using the full corpus since 27M was tossed around earlier and this is nowhere near that
07:56 timotimo isn't 27M libicu?
07:57 timotimo which has a lot more stuff in it
07:57 geekosaur ah
07:58 samcv ok so i have it down to 430K
07:58 samcv from 470K after explicitly adding a null
07:59 samcv and removing the leading numbers that denote how long each unicode name is
07:59 timotimo neat.
08:00 ttt and I wasn't trying to snark or anything, just legitimately curious about the motivations.
08:00 timotimo ttt: well, libmoar.so is about 5.8 megabytes big (after stripping debug info out), and we're saving on the order of three quarters of a megabyte all in all
08:00 timotimo samcv: is 3/4 megabyte saving about right?
08:00 samcv uhm. it is 1.7MB now
08:00 samcv just the names
08:01 samcv nothing else, like indexes or any code. but just an array of all the names which is what we do now, that comes in at 1.7MB
08:01 samcv so i have that down to 430K
08:01 timotimo oooh, so 1 1/3rd megabyte
08:01 samcv also that is not including any null pointers or characters with no values to make comparison easier
08:01 samcv yea
08:01 samcv m: say 1.7 - .430
08:01 camelia rakudo-moar 703799: OUTPUT«1.27␤»
08:03 * timotimo scrolls through a hexdump of libmoar.so
08:03 ttt ok, so significant savings for sure.  what makes the size of libmoar.so matter, though?  is it that people will criticise it as bloated?  or could it instead be statically linked at some point in the future when there's a p6-to-exe?  or are you thinking of support for embedded/SoC platforms?
08:03 timotimo so many zero bytes
08:03 ttt again just curious, might sound snarky but it's not.
08:03 timotimo rakudo's memory footprint is ... pretty hefty at the moment
08:03 domidumont joined #perl6
08:04 ttt ah ok, so looking for ways to trim that by whatever means, and this is low-hanging fruit?
08:04 timotimo well, samcv is working on our unicode stuff in general
08:04 samcv ^
08:04 timotimo and as a mostly volunteer-driven project, perl6 depends on people doing things that'll keep them happy. -Ofun and all that
08:05 samcv right now unicode.o is uhm
08:05 samcv 4.1MB
08:05 ChoHag joined #perl6
08:05 jast -Ofun is not a valid option for perl6 nor moar :(
08:05 samcv it should be :D
08:06 samcv Grouped options '-Ofun' contain 'O', which is not a valid option
08:06 timotimo 001e8b90: 488b 45d0 488b 4008 4889 45e8 488b 45d0  H.E.H.@.H.E.H.E.
08:06 timotimo ^- libmoar seems fun
08:06 samcv HEHEHE
08:06 avuserow joined #perl6
08:06 timotimo seriously, check out that general area in the binary, it's full of H.E.H.E. and such
08:06 timotimo also some P and some M, and also U
08:06 timotimo but so much HEHEHE in there
08:07 jast the linker has an odd sense of humour
08:07 jast actually I guess linking isn't the right word for this
08:08 timotimo *shrug*
08:08 timotimo have we actually checked out if our compilers put the unicode database into the shared memory segment?
08:09 bpmedley joined #perl6
08:10 samcv no
08:10 samcv how do i inspect that timotimo
08:10 timotimo well, there's that blog post from yesterday where there was a tool
08:11 timotimo https://randomascii.wordpress.com/2017/01/08/add-a-const-here-delete-a-const-there/
08:11 timotimo seems windows only?
08:11 samcv yeah i saw that
08:12 Ven joined #perl6
08:12 abraxxa how can I debug when no panda command does anything and simply hangs?
08:13 samcv did you install any modules?
08:13 samcv or has it always been like this
08:14 ttt let me take this moment to ask a FAQ:  should I use panda or zef?
08:14 samcv i use zef. because it allows updating of modules
08:14 samcv zef upgrade
08:14 samcv which is nice
08:15 timotimo zef is cool
08:16 xinming joined #perl6
08:22 andrzeju_ :)
08:22 andrzeju_ hello perl6
08:22 samcv wow there really are a ton of null in libmoar.so
08:23 timotimo columns of zeroes
08:23 samcv ^
08:23 timotimo i'm not entirely sure how to figure out what some random address in a .so file corresponds to
08:23 sammers hello
08:24 nowan joined #perl6
08:26 samcv hello!
08:26 xtreak joined #perl6
08:31 nowan joined #perl6
08:33 samcv u:  movement-floorplane
08:33 unicodable6 samcv, U+1D929 SIGNWRITING MOVEMENT-FLOORPLANE FINGER CONTACT [So] (????)
08:33 unicodable6 samcv, U+1D965 SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT SMALL [So] (????)
08:33 unicodable6 samcv, https://gist.github.com/4f0750381ab74f53e730e00fb9981260
08:34 samcv timotimo,  i guess there's not an unsmall number of them
08:34 samcv for how long they are
08:34 timotimo interesting. those could grow SIGNWRITING at the start, too, apparently
08:34 timotimo for even more savings
08:34 timotimo it's like black friday!
08:34 * samcv wonders if splitting on '-' in addition to ' ' would improve compression. but it is really easy for me to check
08:34 samcv timotimo, signwriting is one of the 1st level shifts fyi
08:34 timotimo ah
08:35 timotimo we could go through all words in the dictionary and see what percentage every other word has for coming before or after it
08:35 timotimo and if we find something with ~75% we can put the combinaiton in, too
08:35 timotimo (and the not-combined part would get demoted a little bit)
08:35 samcv if you want to see all of them https://gist.github.com/samcv/5ff9fe04cbea4275821cb02de8202290
08:36 timotimo i was about to ask :)
08:36 samcv the lower numbers indicate more savings
08:36 timotimo could you sort those by value? :)
08:36 samcv heh
08:36 samcv k
08:36 samcv i just .perl'd them i think
08:36 timotimo right, it sorts by key by default
08:37 timotimo how come smaller numbers are better? i could imagine "number of bytes saved" as a metric, but that'd go the other way
08:38 samcv well. if you want to see the bytes saved table i will dump that out too
08:38 FROGGS joined #perl6
08:38 timotimo oh! those are actually the value that you put into the table!
08:38 timotimo that makes sense now
08:39 timotimo i didn't realize it was actually a numbering, rather than a scoring
08:39 timotimo u: triangle-headed
08:39 unicodable6 timotimo, U+279D TRIANGLE-HEADED RIGHTWARDS ARROW [So] (➝)
08:39 unicodable6 timotimo, U+279E HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW [So] (➞)
08:39 unicodable6 timotimo, https://gist.github.com/5396500e5f66a1210e2c505a974e250f
08:39 timotimo oh wow, those are a lot actually
08:40 timotimo it's interesting that horizontal and vertical get put in so far apart
08:40 timotimo i suppose there's a bunch of codepoints where the "normal" version is horizontal, and there's an extra version that's vertical ... or something
08:40 samcv well it's scoring and numbering
08:41 samcv the lower numbers were scored higher
08:41 timotimo right
08:41 samcv sometimes timotimo but often not
08:41 timotimo what i mean is that vertical gets 13th place in second shift, but horizontal gets 30th place
08:41 timotimo in second shift, that is.
08:42 Ven joined #perl6
08:42 samcv ah
08:45 samcv timotimo, i'm going to set the cutoff at 10 bytes savings
08:45 samcv this is cumulative savings over all of the unicode names btw
08:45 samcv generating that list now
08:45 g4 joined #perl6
08:45 g4 joined #perl6
08:46 samcv tried dumping it all and it spit out loads of ones that save like half a byte :P or ones that lose us bytes
08:46 timotimo hah, right
08:47 timotimo hey you could encode an A as 16 bits!
08:47 samcv https://gist.github.com/e28ad27879439a5e062a6aecc23f3e04
08:47 samcv if it was second shift level it'd be 16bits yeah
08:48 timotimo i find this fascinating in general
08:48 timotimo even 10 bytes saved is a pretty low cut-off
08:48 samcv true
08:48 timotimo how do you feel about adding a shift three? ;)
08:49 samcv that's fine. do you want me to only print out the ones it CHOOSES for shift one or shift two?
08:49 samcv that would prolly be more useful. since there is overlap in this
08:49 timotimo oh! there is?
08:49 samcv yeah.
08:49 samcv if you scroll down to shift two section
08:49 samcv it's the exact same things
08:49 samcv but the calculation is if the letter was shift two
08:50 timotimo then i'll just have to look at the first 40 of shift one, and the second 40 of shift two, right?
08:50 timotimo hm, not necessarily
08:50 samcv ^
08:51 samcv let me generate again
08:51 timotimo remember the HEHEHEHEHE? that's the .text section
08:51 timotimo aha, here's the unicode names now
08:52 timotimo inside the .rodata section, which is where we want them
08:52 timotimo i found the place where we store all our money, it's right next to the place we store all our food!
08:53 timotimo https://i.imgur.com/qqBEsN0.png
08:53 abraxxa samcv: I installed 2016.12 + panda using rakudobrew yesterday and wanted to install DBIish now
08:53 timotimo aha, here's armor, ammunition, and also gemstones, too. and a whole storage full of doors!
08:54 timotimo wait ... what the frickin hell is this place
08:54 geekosaur if I parse it as dcss, there's a small army of panlords guarding the food and money :p
08:54 timotimo https://i.imgur.com/IN6hYzp.png  -  https://www.youtube.com/watch?v=ue3yvxckQbA
08:54 abraxxa after ages it printed out some lines: http://paste.scsys.co.uk/540751
08:55 timotimo the bunch of eights goes on for multiple screenpages
08:55 geekosaur lot ogf d838 with the occasional d738
08:55 timotimo yes
08:55 timotimo pages upon pages upon pages of that over and over
08:56 samcv so many 8's
08:56 samcv so so many 8's!
08:56 timotimo eight. eight. eight. eight.
08:56 samcv ah
08:56 zakharyas joined #perl6
08:57 geekosaur pity you can't really store object files compressed on disk because you'd lose all the advantages of being able to demand page directly from shared objects
08:57 timotimo see how it even has a fullstop after each eight.
08:57 geekosaur statue maze :p
08:57 samcv here you go timotimo https://gist.github.com/samcv/1d391efb2707306d0aa30a5fe0d35140
08:57 geekosaur looks like the lair hell ending writ huge
08:58 timotimo is anybody actually watching that youtube video i shared %)
08:58 timotimo it's highly relevant
08:59 timotimo the actual libmoar.so also has TANGUT COMPONENT-\d\d\d\d
08:59 timotimo "
08:59 samcv timotimo, i'm sure we could easily add like unlimited shift levels
08:59 samcv heh
08:59 timotimo i imagine since it has a - there, it won't get into your script at all
08:59 timotimo because, after all, those are all different words!
08:59 samcv yeah
08:59 samcv let me split on space and -
09:00 timotimo and the CJK COMPATIBILITY IDEOGRAPH-\x\x\x\x\x are also in there
09:00 timotimo i imagine they are not much more than the offset from some position in hexadecimal?
09:00 timotimo and all 255 variation selector-\d\d
09:01 samcv ok splitting at the - now
09:01 samcv will let you know when it's complete
09:01 abraxxa zef update hangs as well, what connection does it use?
09:01 timotimo we could put in the split and non-split variants both and maybe one of the two wins :)
09:01 samcv well we will have losses depending on the thing
09:02 samcv some will have gains some losses
09:02 samcv idk maybe there's a clever way, because sometimes there's some this-that, and also exists this that
09:02 dakkar joined #perl6
09:02 samcv ok we save 174KB on both levels now versus 166.502667 KB
09:03 timotimo have a special character in the middle and a "variation selector" that tells it whether it should put in a space or a dash
09:03 samcv what
09:03 timotimo hey! i found all the hexadecimal numbers!
09:03 samcv lolll
09:04 samcv timotimo, here's the updated list https://gist.github.com/samcv/11a9c817512a0408c94e25fe08524885
09:04 timotimo well, we store THIS%THAT and we either put shift-2 99 0 or shift-2 99 1
09:04 timotimo shift-2 99 0 will give THIS THAT, shift-2 99 1 gives THIS-THAT
09:05 samcv well shift two takes up 4/3 of a byte
09:05 samcv er.
09:05 samcv no
09:05 samcv 2/3
09:05 samcv so we're down to 422KB compiled size
09:05 timotimo we might want to give alias names the same treatment
09:05 samcv there aren't that many alias names
09:05 samcv like 150
09:06 timotimo like, "skin tone" alone could save a kilobyte or two
09:06 samcv XD
09:06 samcv you mean the sequence names?
09:06 timotimo oh, yeah
09:06 timotimo maybe i'm being fooled by how narrow the column is in xxd
09:06 * samcv adds in shift three
09:06 timotimo 4cae70 004d6f7a 616d6269 71756500 4d72732e  .Mozambique.Mrs.
09:06 timotimo 4cae80 20436c61 75733a20 6461726b 20736b69   Claus: dark ski
09:06 timotimo 4cae90 6e20746f 6e65004d 72732e20 436c6175  n tone.Mrs. Clau
09:07 samcv lets have unlimited shifts!
09:07 timotimo 4d42a0 6469756d 2d6c6967 68742073 6b696e20  dium-light skin
09:07 samcv as long as it saves bytes :P
09:07 timotimo 4d42b0 746f6e65 00c3856c 616e6420 49736c61  tone...land Isla
09:07 timotimo 4d42c0 6e647300 00000000 02000000 e6f10100  nds.............
09:07 samcv i wonder how many shifts we'd have
09:07 timotimo m: say 0x4d42c0 - 0x4cae7
09:07 camelia rakudo-moar 703799: OUTPUT«4749273␤»
09:07 samcv since we'd get diminishing returns
09:07 timotimo m: say (0x4d42c0 - 0x4cae7) / 1024
09:07 camelia rakudo-moar 703799: OUTPUT«4637.961914␤»
09:07 timotimo wait, if that's kilobytes ... we have 4 megs of sequence names?
09:07 timotimo i must have made a big mistake
09:08 timotimo oh yeah
09:08 timotimo m: say (0x4d42c0 - 0x4cae70) / 1024
09:08 camelia rakudo-moar 703799: OUTPUT«37.078125␤»
09:08 timotimo should have copy-pasted instead of typing it in
09:09 samcv yeah that's not possible :P
09:10 timotimo "and the remaining 2400% are in this section over here"
09:11 jonas1 joined #perl6
09:11 timotimo we're not measuring how much space it'll take to actually store the dictionary, but it ought to be less than a kilobyte or two
09:12 samcv yeah
09:12 samcv true
09:12 samcv haha
09:12 samcv this is assuming you're saving more than like the number of bytes in the string
09:12 samcv maybe should factor that in
09:13 samcv ok i can get 185.505333 KB of saving with three shifts
09:13 samcv saves 11KB with the 3rd level
09:13 timotimo u: times
09:13 unicodable6 timotimo, U+2062 INVISIBLE TIMES [Cf] (⁢)
09:13 unicodable6 timotimo, U+2297 CIRCLED TIMES [Sm] (⊗)
09:13 unicodable6 timotimo, https://gist.github.com/91b8e85a1df515ae602e068168b9c7a9
09:13 timotimo aha, cuneiform again
09:14 samcv https://gist.github.com/samcv/a5a8bc715d39f13aac7bdb8e8483597c here's the 3 levels
09:14 timotimo okay, returns start diminishing pretty strongly here
09:14 samcv idk we could even be fancier and have one of the characters on the first shift level be a different shift
09:14 timotimo we could, yeah
09:14 samcv but the third level only saves 11KB
09:15 timotimo yup, might not be worth it at all
09:15 samcv oh forgot to factor in
09:16 timotimo oh wow
09:16 samcv the second level can't have a 40th thing if we use two shifts
09:16 timotimo www.p6c.org seems ... kind of dead
09:16 timotimo 100% of time spent in "wait" state
09:17 * timotimo power cycles the vm
09:17 moritz timotimo++
09:17 timotimo we should set up alerts in our monitoring
09:18 * moritz would like to withdraw a bit more from sysadminning those systems
09:18 timotimo http://bombch.us/CX23
09:19 samcv timotimo, that's projected earnings right?
09:19 timotimo totally
09:19 samcv i would buy stock in that
09:19 timotimo yep
09:19 timotimo it's a company that deals in cat pictures
09:19 timotimo we have determined there's a niche in that area
09:20 timotimo there's literally not nearly enough cat pictures to satisfy demand
09:20 samcv i wonder if making 4 shift levels would be worth it
09:20 moritz wow. I *hope* that load is because perl6.org is on the hn or reddit frontpage or something :-)
09:20 timotimo if we dedicate two codemes to shifting, we can have four levels with two levels costing one codeme extra and the other 2 costing 2
09:21 samcv yeah that's what i thought
09:21 samcv wait what
09:21 timotimo moritz: no, it looks like the virtual disk hung
09:21 samcv but what letter would we use
09:21 moritz timotimo: that's much less fun of an explanation :(
09:21 timotimo i thought we have two left over?
09:21 timotimo when i logged into the terminal it had the same output that we usually get on hack when that happens
09:21 timotimo "task apache hung for more than 120 seconds" etc
09:21 samcv uh we have null and we have shift + A..Z, '-', ' '
09:21 samcv oh and all the numbers
09:22 timotimo ah! that was before we decided to encode null
09:22 samcv i mean i guess we could put the numbers on a different level. but that would be weird
09:22 samcv no we always encoded null
09:22 samcv there has to be some way to end the string
09:22 timotimo right, right
09:22 samcv but it'd be weird to have strings AND letters on an upper level
09:23 samcv idk i guess we could do it fine
09:24 samcv idk maybe encode LETTER on the 1st level?
09:24 samcv or have two shift levels on the base level and like Z on the second level
09:25 timotimo oh, have you already measured what letter is there most often?
09:25 samcv m: my $i = 0;  for 0..0x1FFFF { $i++ if .uniname.contains('LETTER')}; say $i
09:25 camelia rakudo-moar fd8df7: OUTPUT«9222␤»
09:25 samcv oh not for letters
09:25 samcv i mean the literal word letter
09:25 timotimo i know
09:25 samcv we save like 4x more for that one
09:25 timotimo but you wanted to put Z on the second level
09:25 samcv yeah no clue but it could be. maybe X
09:26 timotimo say [(+)] do for 0..0x1FFFF { .uniname.comb )};
09:26 timotimo m: say [(+)] do for 0..0x1FFFF { .uniname.comb )};
09:26 camelia rakudo-moar fd8df7: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Missing block␤at <tmp>:1␤------> 3[(+)] do for 0..0x1FFFF { .uniname.comb 7⏏5)};␤    expecting any of:␤        statement end␤        statement modifier␤        statement modifier loop␤»
09:26 timotimo m: say [(+)] do for 0..0x1FFFF { .uniname.comb };
09:26 samcv so we'd save 1/3 bytes * 9222 if we put LETTER on the 1st level
09:26 camelia rakudo-moar fd8df7: OUTPUT«Too many arguments in flattening array.␤  in block <unit> at <tmp> line 1␤␤»
09:26 timotimo oops
09:26 samcv m: say 9222 * 1/3
09:26 camelia rakudo-moar fd8df7: OUTPUT«3074␤»
09:26 samcv 3KB is still not that much :\
09:26 timotimo m: my @names = do for 0..0x1FFFF { .uniname.comb }; @names.join("").Bag.say
09:26 camelia rakudo-moar fd8df7: OUTPUT«bag(< c o n t r o l - 0 0 0 0 >< c o n t r o l - 0 0 0 1 >< c o n t r o l - 0 0 0 2 >< c o n t r o l - 0 0 0 3 >< c o n t r o l - 0 0 0 4 >< c o n t r o l - 0 0 0 5 >< c o n t r o l - 0 0 0 6 >< c o n t r o l - 0 0 0 7 >< c o n t r o l - 0 0 0 8 >< c o n t…»
09:26 timotimo oops
09:26 timotimo m: my @names = do for 0..0x1FFFF { .uniname.comb }; @names.join("").comb.Bag.say
09:27 samcv yeah make sure you leave out any names with '<' in them
09:27 timotimo this is just a very rough estimate
09:27 camelia rakudo-moar fd8df7: OUTPUT«(timeout)»
09:27 samcv it will be incorrect becuase there's so many CJK ideographs
09:27 timotimo oh, ok
09:27 samcv will really skew it
09:27 samcv also i'm thinking. maybe we should make words cross bounderies
09:28 samcv of each 16bit int i mean
09:28 samcv then we don't have to keep an index
09:28 samcv we could skip over 3 codepoints using 1 16-bit int
09:28 samcv could be useful
09:28 samcv only save an offset for some ranges like CJK ideographs and resereved and such
09:29 timotimo wait what?
09:29 samcv 3 codeme's are per 16-bit int. so every time we see \0 we skip to the next CP
09:29 samcv and so we can store three \0 in one 16-bit int
09:29 samcv so that would save us from having to make an index
09:30 timotimo but we need random access
09:30 timotimo here's my results (when skipping anything containing < or CJK)
09:30 timotimo https://gist.github.com/timo/f5f2f9cb7c4566f402c0b66387a4444d
09:30 timotimo 9 is most rare out of all
09:30 timotimo Q is most rare out of letters
09:31 bjz_ joined #perl6
09:31 timotimo Z would have been a good choice, too, though
09:31 samcv i don't see how that causes any more problems than what we have now. i mean we load a hash to go from codepoint names to codepoints
09:31 * ttt has sudden flashbacks to memorizing Q-no-U words for Scrabble
09:31 samcv so can we not just do the same for getting codepoint's names?
09:31 timotimo you're proposing to build a hash from number to index rather than an array?
09:31 samcv well we don't have an array now
09:32 samcv well i mean in my proof of concept
09:32 timotimo huh? how does uniname(0x100) work then?
09:32 samcv the more common case is going from codepoint names to codepoints not the other way around
09:32 samcv it loads the hash the same way as it does for \c[ ]
09:33 samcv though i mean i guess we could store the codeme length for each codepoint's name
09:33 samcv and store that in some array
09:33 samcv not sure what the longest name is
09:34 samcv but then we'd still have to scan and start from 0 to find where the cp is hm. idk
09:34 samcv saving a huge number of indexs is pretty wasteful
09:36 samcv i mean i guess we could store pointers to each one, but that would make it 1/3 bigger
09:36 samcv on 64-bit
09:37 timotimo was afk for a bit
09:38 timotimo i would accept a table that gives you offsets to every 16th or 32th codepoint's name and then we can linearly scan for the exact one we need from there
09:38 timotimo that'd be fine
09:39 samcv ah. yeah that could work
09:39 timotimo reduction to a 32th or 16th of the total size ought to be good enough, eh?
09:40 samcv you mean a table of 32 indexs?
09:41 timotimo no
09:41 timotimo a table of indices for every 32nd codepoint
09:42 timotimo so if you want number 68, you'll skip directly to 64 and look for a sting-terminating 0 four times
09:42 timotimo er, three times
09:43 timotimo https://gist.github.com/timo/f5f2f9cb7c4566f402c0b66387a4444d/revisions - this is what happens to letter distribution when i throw out LETTER, SYLLABLE, and HIEROGLYPH
09:45 samcv ah kk
09:45 timotimo i should probably feed it the whole first shift
09:46 samcv yeah
09:46 kaare__ joined #perl6
09:46 thayne joined #perl6
09:48 cdc joined #perl6
09:49 cdc Hello, https://modules.perl6.org/ -> "Service Unavailable" :-(
09:49 samcv yeah 9 is the least common one
09:49 timotimo cdc: oh crap!
09:49 samcv we could replace that with a second shift
09:50 timotimo cdc: having a look now
09:50 cdc timotimo: I still hit the same error.
09:50 kaare__ joined #perl6
09:51 cdc (from 2 different networks)
09:51 samcv try 10!
09:51 samcv panic! run in circles! shout loudly!
09:53 timotimo yeah, the server process didn't start
09:53 * moritz still hopes that one day brokenchicken writes a proper systemd service file for that
09:54 timotimo moritz: we're using journal for this stuff, right? but the journal travels to another server or something?
09:54 timotimo because with journalctl i get absolutely nothing at all
09:54 moritz timotimo: that's because it's not a proper systemd service
09:54 timotimo no, i mean, journalctl gives me nothing for the whole system
09:54 moritz timotimo: iirc it's a cron job that both updates the data and (re)starts the server otherwise
09:54 moritz timotimo: uhm.
09:55 timotimo hack also doesn't seem to have any journal
09:55 moritz that... shouldn't be like that
09:55 timotimo thought so
09:55 timotimo systemd-journald.service                      loaded active running
09:56 moritz bartolin: do you happen to know anything about that?
09:57 timotimo agh
09:57 timotimo i'm a dummy
09:57 timotimo i didn't run it as a privileged user
09:58 timotimo Jan 18 09:17:38 www modules.perl6.org-init.d[486]: Can't load application from file "/etc/init.d/modules.perl6.org-init.d": Can't locate Toadfarm.pm in @INC (you may need to install the Toadfarm module) (@INC contains: /etc/perl /usr/loca
09:58 jast journalctl isn't very helpful when it's a permissions issue
09:59 timotimo /usr/local/lib/x86_64-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl /usr/local/lib/x86_64-linux-gnu/perl/5/usr/local/share/perl/5.20.1 . )
09:59 timotimo jast: i didn't even think of that because on my desktop my regular user has permissions and it's always been that way
09:59 jast yeah, it's happened to me before, though
10:00 timotimo so where did Toadfarm use to be installed, and why is it gone now?
10:00 timotimo /home/modules.perl6.org/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/Toadfarm.pm
10:00 moritz timotimo: it's probably in a perlbrew env that the init script fails to activate
10:00 timotimo this exists
10:00 timotimo so wrong perl version
10:02 timotimo it could be that the eval in the init script doesn't run, it's supposed to exec into the correct perl5 if it's accidentally running in a shell or something
10:06 timotimo it's definitely running the 5.22 perl, but why is it trying to use the folders for 5.20?!
10:07 samcv how do i add items to a BagHash
10:07 timotimo use hash assignment
10:07 timotimo alternatively put it in with (+)
10:07 timotimo (but that's not mutation, that's clone-and-mutate)
10:08 samcv yeah
10:08 timotimo i have no idea about perl5, i haven't a clue how to make modules.perl6.org start up correctly
10:08 timotimo except just copy-paste the module over ...
10:10 samcv timotimo, there's no easier way?
10:10 samcv there should be a .add or something idk
10:10 timotimo hash assignment is like .add
10:10 timotimo well, you really want += rather than just =
10:11 samcv yeah
10:11 timotimo so do that?
10:11 samcv it seemed weird to not have it. would be cool if we could add that. $b.add(3, 4) etc
10:11 samcv so you can easily add an array or something to it
10:11 samcv any list like thing
10:11 timotimo you already can
10:12 samcv can you show me ?
10:12 timotimo $my_bag{@the_array}>>++
10:12 samcv kk thanks
10:12 timotimo (yes, it's that magical)
10:13 timotimo even Z+= should work
10:13 timotimo er, X+= really
10:13 samcv i still it would be a nice thing to have, since we have .grab
10:13 samcv it seems odd not to have the other direction
10:13 timotimo grab is really inconvenient to do otherwise
10:14 kaare__ joined #perl6
10:19 astj joined #perl6
10:21 astj joined #perl6
10:44 xtreak joined #perl6
10:57 Ven joined #perl6
10:57 xtreak joined #perl6
11:01 wamba joined #perl6
11:07 exp-innit joined #perl6
11:07 exp-innit any recommendations on SSH modules? there's nothing on modules.perl6 but there is one on github marked as WIP
11:09 brokenchicken find something on metacpan.org and use it via Inline::Perl5
11:09 exp-innit that works i guess, but isn't very exciting :)
11:11 brokenchicken Write one and release it to ecosystem? Help out that WIP?
11:11 moritz build one yourself. From scratch!
11:11 DrForr Well, it'll get you to your goal faster than waiting for someone to write one :)
11:16 user9 joined #perl6
11:16 exp-innit :)
11:16 exp-innit just wondered if anyone had tried using the one on github despite its warnings
11:16 exp-innit i'll haev a play
11:19 araraloren joined #perl6
11:23 azawawi joined #perl6
11:23 azawawi hi
11:23 azawawi moritz: ping
11:24 azawawi moritz: Can you update https://github.com/moritz/perl6-all-modules? I want to check https://github.com/bbkr/jsonrpc/issues/27
11:29 raschipi joined #perl6
11:30 moritz azawawi: I'm afraid I can't until https://github.com/ingydotnet/git-subrepo/issues/225 is fixed
11:30 azawawi moritz: not a big deal. thx. i am working on updating json::rpc
11:31 azawawi https://github.com/azawawi/jsonrpc
11:31 azawawi since im using it in my Odoo::Client (https://github.com/azawawi/perl6-odoo-client) :)
11:36 brokenchicken .tell samcv RE .add on Setties and Baggies; there's a ticket for it: https://rt.perl.org/Ticket/Display.html?id=128903#ticket-history
11:36 yoleaux brokenchicken: I'll pass your message to samcv.
11:36 samcv oh nice thanks brokenchicken
11:36 yoleaux 11:36Z <brokenchicken> samcv: RE .add on Setties and Baggies; there's a ticket for it: https://rt.perl.org/Ticket/Display.html?id=128903#ticket-history
11:42 telex joined #perl6
11:42 azawawi Quick question, the new standard for naming base exceptions/errors is lib/MyModule/X.pm6 or lib/MyModule/X/SomeBase.pm6?
11:42 azawawi which is better?
11:43 * brokenchicken haven't heard of any standards, new or otherwise.
11:43 brokenchicken X::MyModule::Blah reads better tho
11:44 azawawi scrap standard to convention and naming safety
11:46 brokenchicken If I were writing a custom exception, I'd definitely follow the X::* naming convention we have in core
11:46 azawawi so X::MyModule::XYZ
11:47 brokenchicken Yeah
11:47 brokenchicken I don't know why brrk says "best practice" is Module::X::Something
11:47 brokenchicken You can barelly see the
11:47 brokenchicken You can barelly see the ::X:: in that proposed name
11:48 azawawi X marks the spot :)
11:49 brokenchicken m: class X::AdHoc is Exception {method message {'meows'}}; try {die "x"; CATCH {when X::AdHoc { say "hi"}}
11:49 camelia rakudo-moar 82a614: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Missing block␤at <tmp>:1␤------> 3e "x"; CATCH {when X::AdHoc { say "hi"}}7⏏5<EOL>␤»
11:49 brokenchicken m: class X::AdHoc is Exception {method message {'meows'}}; try {die "x"; CATCH {when X::AdHoc { say "hi"}}}
11:49 camelia rakudo-moar 82a614: OUTPUT«x␤  in block <unit> at <tmp> line 1␤␤»
11:50 brokenchicken m: class X::AdHoc is Exception {method message {'meows'}}; try {die "x"; CATCH {when CORE::X::AdHoc { say "hi"}}}
11:50 camelia rakudo-moar 82a614: OUTPUT«x␤  in block <unit> at <tmp> line 1␤␤»
11:50 * azawawi takes a look at X:: in doc.perl6.org
11:51 brokenchicken it ain't got a full list
11:51 brokenchicken this is a full-ish list: https://github.com/perl6/doc/issues/517#issuecomment-226804067
11:52 brokenchicken IIRC we figured documenting all the exceptions was a waste of time.
11:52 brokenchicken or rather... adds a lot of noise for little gain
11:53 azawawi a quick ack on perl6-all-modules shows only one hit "App::Kains::X"
11:54 brokenchicken Well, I can see the point that Module::X won't ever clash with core exceptions.... but for the same reason it doesn't look like any of the typical exceptions a user would be used to.
11:55 brokenchicken m: class X::AdHoc is Exception {method message {'meows'}}; try {die "x"; CATCH {when ::CORE::('X::AdHoc') { say "hi"}}}
11:55 camelia rakudo-moar 82a614: OUTPUT«x␤  in block <unit> at <tmp> line 1␤␤»
11:56 brokenchicken .oO( X'Module::Blah )
11:56 brokenchicken ^_^
11:57 azawawi brokenchicken: updated https://github.com/bbkr/jsonrpc/issues/27. Thanks for your feedback.
11:57 Ven joined #perl6
11:58 brokenchicken m: class X'AdHoc is Exception {method message {'meows'}}; try {die "x"; CATCH {when X::AdHoc { say "hi"}}}
11:58 camelia rakudo-moar 82a614: OUTPUT«hi␤»
11:58 brokenchicken m: class X'AdHoc is Exception {method message {'meows'}}; try {die X'AdHoc; CATCH {when X::AdHoc { say "hi"}; when X'AdHoc { say "meows"}}}
11:58 camelia rakudo-moar 82a614: OUTPUT«hi␤»
11:58 brokenchicken wat
11:58 brokenchicken m: class X'AdHoc is Exception {method message {'meows'}}; try { X'AdHoc.new.throw; CATCH {when X::AdHoc { say "hi"}; when X'AdHoc { say "meows"}}}
11:58 camelia rakudo-moar 82a614: OUTPUT«meows␤»
11:58 brokenchicken ehehe
12:06 brokenchicken hmmm
12:06 brokenchicken u: FULL-WIDTH LETTER X
12:06 unicodable6 brokenchicken, Found nothing!
12:06 brokenchicken stupid robot
12:07 brokenchicken m: class X::AdHoc is Exception {method message {'meows'}}; try { X::AdHoc.new.throw; CATCH {when X::AdHoc { say "hi"}; when X::AdHoc { say "meows"}}}
12:07 camelia rakudo-moar 82a614: OUTPUT«meows␤»
12:07 brokenchicken m: class X::AdHoc is Exception {method message {'meows'}}; try { die "meows"; CATCH {when X::AdHoc { say "hi"}; when X::AdHoc { say "meows"}}}
12:07 camelia rakudo-moar 82a614: OUTPUT«hi␤»
12:07 brokenchicken Now THAT'S a good standard :P
12:08 timotimo X_X
12:11 bjz joined #perl6
12:12 Ven joined #perl6
12:27 Ven joined #perl6
12:34 DrForr .seen moritz
12:34 yoleaux I saw moritz 11:30Z in #perl6: <moritz> azawawi: I'm afraid I can't until https://github.com/ingydotnet/git-subrepo/issues/225 is fixed
12:34 timotimo he's here
12:34 timotimo (gasp)
12:34 DrForr *boggle*
12:34 DrForr *scrabble*
12:35 DrForr ... *bananagram*
12:36 * sjn hands DrForr a banana
12:37 sjn ????
12:37 DrForr Crap, gotta update my terminal font.
12:38 sjn yay! banana motivation ftw
12:38 timotimo i should probably go from using terminal to using glowing-bear for irc
12:39 lizmat timotimo: ????  :-)
12:39 sjn .u ????
12:39 yoleaux U+1F34C BANANA [So] (????)
12:40 lizmat ????
12:40 lizmat .u ????
12:40 yoleaux U+1F640 WEARY CAT FACE [So] (????)
12:40 sjn hehehe
12:40 sjn weary of bananas, eh? :)
12:40 lizmat the joys of a touchbar full of emojis  :-)
12:41 sjn fancy apples
12:41 lizmat .u ????????‍????
12:41 yoleaux U+200D ZERO WIDTH JOINER [Cf] (<control>)
12:41 yoleaux U+1F469 WOMAN [So] (????)
12:41 yoleaux U+1F680 ROCKET [So] (????)
12:41 lizmat hmmm... it didn't do the skintone
12:42 lizmat m: say "????????‍????".chars
12:42 camelia rakudo-moar 82a614: OUTPUT«2␤»
12:42 lizmat 2?
12:42 lizmat hmmm...
12:42 moritz DrForr: I'm around, fwiw
12:42 sjn zero-width = 0?
12:43 lizmat m: "????????‍????".chars
12:43 camelia rakudo-moar 82a614: ( no output )
12:43 lizmat m: "????????‍????".chars.say
12:43 camelia rakudo-moar 82a614: OUTPUT«2␤»
12:43 samcv yeah i think that one is one of the nonworking ones?
12:43 lizmat could be a copy-pasto
12:43 samcv that too
12:43 samcv idk check the emoji test file lizmat
12:43 samcv and see if that one passes
12:43 lizmat where does that live ?
12:44 samcv in roast
12:44 timotimo samcv: how long are you going to stay on line and how can i see what you're up to with the unicode database compression stuff?
12:44 samcv uhm
12:44 samcv my repo
12:44 lizmat samcv: ack
12:44 samcv i won't be online in the next hour, and may be gone for the next like 12+ hours
12:44 timotimo the UCD repo, yeah?
12:45 samcv maybe 24 so if you have anything to ask, ask it soon
12:45 samcv yeah https://github.com/samcv/UCD
12:45 DrForr moritz: Howdy. I was just thinking that it might be nice to see the number of unique nicks on-channel over time, and wondered if that would be straightforward to extract.
12:45 moritz DrForr: it isn't
12:45 moritz DrForr: the information isn't present in the logs
12:46 timotimo right, only joins and parts
12:46 timotimo so you can only get differential information
12:46 timotimo and when ilbot goes offline you're in trouble
12:46 moritz mostly because in IRC, a /quit isn't accompanied by the information which channels the user was in
12:46 timotimo ooooh, statefulness!
12:46 moritz so you'd need to keep state to know which channels the users left
12:46 moritz which ilbot doesn't do
12:47 timotimo samcv: nah, nothing to ask, just curious
12:47 moritz what you could extract pretty easily is the list of active nicks during a day
12:47 samcv ah ok
12:47 timotimo the stuff we've been doing today hasn't landed in the repo at all yet?
12:47 timotimo or just not pushed from local to github?
12:47 samcv it ha-
12:47 samcv has
12:47 samcv let me do one push
12:47 jast you can actually get the current user count fairly easily, using /list #perl6
12:48 timotimo jast: OK, how do you execute that command for every day in the past year? :)
12:48 jast well, you can *start* tracking it
12:48 jast it's not quite the same as #unique users, of course
12:49 DrForr Oh. I'd be happy with just the number unique nicks speaking per day. Just interested to see if the number of new users is growing, remaining flat or just changing over time.
12:49 DrForr *number of
12:49 samcv timotimo, but if you run ./UCD-gen.p6 --names-only it will generate the name table
12:49 samcv and you can run "make names"
12:49 samcv and it will compile it
12:49 samcv will push as soon as i double check i haven't messed anything up since last commit
12:49 timotimo ok, cool :)
12:50 timotimo i'll have a look later. for now i'll be AFK
12:50 moritz DrForr: when you send an Accept: application/json header to the regular IRC log URLs, you'll get a json response
12:50 ilmari samcv: are these constant arrays you're generating directly usable, or do they have to be converted at runtime?
12:50 wamba joined #perl6
12:50 samcv uhm and if you want to get a printout of all the number of bytes saved potentially, use --debug
12:50 samcv they are ilmari
12:50 samcv generate once
12:50 moritz DrForr: so you could write a small program that simply iterates over the days for #perl6 and do some stats
12:50 ilmari samcv: ah good. you might be interested in what karl williamson is doing for unicode property inversion lists in perl5
12:50 araraloren joined #perl6
12:50 samcv ok pushing now. i gotta go for a sec. may be back in an hour for like an hour. maybe
12:51 samcv ah? i would be very
12:51 samcv very very much
12:51 timotimo the amount of data transferred for this task could be drastically cut down if the logs program can just aggregate what nicks have been active (speaking, not joins/parts) in each day
12:51 ilmari similarly moving them all to be constant data that's demand paged
12:52 DrForr moritz: Okay, I'll check that out tonight. I'm just curious.
12:53 ilmari samcv: https://perl5.git.perl.org/perl.git/blob/HEAD:/regen/mk_invlists.pl is the code that generates them
12:54 samcv timotimo, atm the c code doesn't print out names properly anymore since we changed things tho
12:54 samcv to not having a leading number and also to have a shift level. but it does generate the tables
12:55 timotimo neato
12:55 samcv uhm and the code is in snippets
12:55 timotimo maybe i'll find the motivation to implement that while you're away, would you be interested in that at all?
12:55 samcv yeah :)
12:55 timotimo cool
12:55 timotimo time for that AFK i mentioned
12:55 samcv if you want to disable shift 1 (only one implemented atm)     set-shift-levels(%shift-one);
12:56 samcv comment out the set-shift-levels part. and it'll only do base level
12:56 timotimo i'm interested in shift, though :)
12:56 samcv BBL? or maybe not for 24 hours. you will know in an hour tho
12:56 samcv heh
12:56 samcv well for testing.
12:56 timotimo that's fair
12:56 timotimo does it spit out the compression table for C yet?
12:56 samcv yes
12:56 samcv that is all done
12:56 timotimo good good
12:57 samcv it was fully working before i removed the leading numbers
12:57 samcv so if you added those back in, the code would compile and when ran print out every unicode name
12:57 timotimo is the shift table in 8bit per character or is it also base40?
12:57 samcv 8bit per char
12:57 timotimo that's probably fine
12:57 samcv well it's just strings
12:57 samcv you can change it if you want
12:57 timotimo i see no need actually
12:57 samcv but possibly be back later
12:58 samcv o/
12:58 timotimo o/
12:58 rurban joined #perl6
12:58 rurban left #perl6
13:00 holli_ joined #perl6
13:02 azawawi how can one solve the long Travis CI tests ? Anyone working on having a ready perl6 distro for travis ci? Most of the test time is wasted on building/testing rakudo
13:04 lukaramu joined #perl6
13:07 brokenchicken wasted? Seems a good arrangement :) Free rakudo tests!
13:07 brokenchicken Just sudo apt-get install rakudo or whatever instead of building from sauce?
13:08 azawawi brokenchicken: any repo for 2016.12?
13:08 brokenchicken huggable: deb
13:08 huggable brokenchicken, CentOS and Debian Rakudo packages: https://github.com/nxadm/rakudo-pkg/releases
13:08 brokenchicken close nuf
13:08 azawawi brokenchicken++ # thanks
13:11 buggable joined #perl6
13:14 sufrostico joined #perl6
13:14 azawawi brokenchicken: https://github.com/nxadm/rakudo-pkg/issues/7 # done :)
13:15 brokenchicken it should really be automated
13:15 * azawawi productive day... updated some of my Swift and Perl 6 projects :)
13:15 azawawi brokenchicken: yup
13:17 brokenchicken considering 2017.01 compiler release is days away... 2016.12 is stale :P
13:19 azawawi well it is the stable release :)
13:20 azawawi i test on stable and latest. Also on Linux, macOS (travis ci) and windows (appveyor ci)
13:20 * raschipi likes stale software better.
13:20 azawawi stale is more tested :)
13:21 brokenchicken What makes it stable? :)
13:21 brokenchicken Considering it's missing lexical loading branch, I'd say it's outdated./
13:21 raschipi brokenchicken: It's older.
13:22 brokenchicken By that logic 2016.07 release is even more stable, yet it's broken.
13:22 azawawi brokenchicken: it is tagged and has been actually tested
13:22 sammers hi #perl6
13:22 azawawi sammers: hey
13:22 raschipi When I read this: "it's missing lexical loading branch", I understand this: "I can postpone rewriting my scripts a little more".
13:24 brokenchicken And I read it as "your scripts are broken"
13:24 raschipi Works for me.
13:24 sammers I am messing around with typed hash, something like this:
13:24 sufrostico joined #perl6
13:25 sammers m: my Int %h = a => 1, b => 2; say %h;
13:25 camelia rakudo-moar 4a78be: OUTPUT«{a => 1, b => 2}␤»
13:25 geekosaur joined #perl6
13:25 raschipi sufrostico is now an object hash.
13:25 timotimo raschipi: you're confusing it with my %h{Int}, i believe
13:25 raschipi I am?
13:25 sammers I have no immediate need for this, but I was wondering if it is possible to explicitly use multiple types on a hash?
13:26 moritz sammers: what do you mean by "multiple types"?
13:26 sammers like this, Int, Str %h = a => 1, b => "this is a string";
13:26 moritz sammers: you can use a common parent type, like Cool
13:26 brokenchicken m: my IntStr %h = a => 1, b => "this is a string"; say %h;
13:26 camelia rakudo-moar 4a78be: OUTPUT«Type check failed in assignment to %h; expected IntStr but got Int (1)␤  in block <unit> at <tmp> line 1␤␤»
13:26 azawawi brokenchicken: so where is the proof that rakudo "latest" works for most of the modules in the Perl 6 ecosystem (vs 2016.12 for example)?
13:26 brokenchicken right
13:26 raschipi Cool %h accapts both numbers and strings
13:26 moritz sammers: or you can create your own type, like  subset IntOrStr of Any where Int|Str;
13:26 azawawi brokenchicken: what's the point of testing against latest if latest is changing?
13:26 sammers ok, but what if I want to be strict about what each pair can contain?
13:27 moritz sammers: and then use that as a type constriant
13:27 sammers ah
13:27 sammers ok, gotcha
13:27 brokenchicken m: subtest ZIntStr where Int|Str; my ZIntStr %h = a => 1, b => "this is a string"; say %h;
13:27 camelia rakudo-moar 4a78be: OUTPUT«5===SORRY!5===␤Type 'ZIntStr' is not declared. Did you mean 'IntStr'?␤at <tmp>:1␤------> 3ubtest ZIntStr where Int|Str; my ZIntStr7⏏5 %h = a => 1, b => "this is a string"; s␤Malformed my␤at <tmp>:1␤------> 3subtest ZIntStr where Int|…»
13:27 brokenchicken m: subset ZIntStr where Int|Str; my ZIntStr %h = a => 1, b => "this is a string"; say %h;
13:27 camelia rakudo-moar 4a78be: OUTPUT«{a => 1, b => this is a string}␤»
13:27 moritz m: subset ZIntStr where Int|Str; my ZIntStr %h = a => 1.0
13:27 camelia rakudo-moar 4a78be: OUTPUT«Type check failed in assignment to %h; expected ZIntStr but got Rat (1.0)␤  in block <unit> at <tmp> line 1␤␤»
13:27 brokenchicken azawawi: where's the proof that rakudo 2016.12 works with most of the modules in the Perl 6 ecosystem?
13:28 sammers moritz, thanks
13:28 moritz sammers: you're welcome
13:29 azawawi brokenchicken: Travis CI logs for 2016.12?
13:29 raschipi brokenchicken: older bugs are better than younger ones.
13:30 raschipi Sorry, Camelia.
13:30 brokenchicken azawawi: which are available for how many modules?
13:30 * azawawi checks
13:30 brokenchicken azawawi: travis doesn't automagically retest all the ecosystem modules when a new release happens.
13:31 brokenchicken azawawi: and 2016.12 *is* latest. I don't know why you chose to arbitrarily assign "stable" label to it.
13:31 raschipi brokenchicken: because it's older.
13:31 brokenchicken There isn't even a Rakudo Star release for it. So few users actually have used it.
13:31 brokenchicken raschipi: older than what?
13:32 raschipi Older than HEAD.
13:32 brokenchicken heh
13:32 sammers moritz, is there a way to make sure that a is always Int and b is always Str?
13:32 azawawi brokenchicken: so 2016.12 is not stable? what's stable now?
13:33 moritz sammers: no. If you want that, use a class
13:33 sammers ok
13:34 brokenchicken azawawi: oh, we're still playing the random label game? Fine, Rakudo Star 2016.11. That's the only deliverable produced by Perl 6 team that's meant for regular users.
13:35 brokenchicken That's the only thing that's currently tested against a subset of ecosytem modules as part of its release cycle
13:35 brokenchicken And "because it's 30 days older than a random commit in github repo" is an inane argument for stability.
13:36 azawawi brokenchicken: you're right in that regard. I just checked perl6-all-modules (which is stale since Sept 2016). The latest label is 2016.08
13:36 mst brokenchicken: please stop sniping
13:36 azawawi brokenchicken: but it feels more stable lol
13:36 brokenchicken mst: OK
13:36 brokenchicken mst: "sniping"?
13:36 mst azawawi: what, actually, is your point here?
13:36 [Coke] we don't have a stable tag, is the short answer.
13:37 azawawi cool
13:37 mst brokenchicken: at the point at which you're saying 'random label game' and 'inane argument' we're at the point where you're too cranky to actually get anywhere useful. *I* can, sometimes, manage to be that cranky and still constructive at the same time, but (a) I'm special (b) I should still usually shut up and let somebody less cranky take over even so :P
13:38 brokenchicken mst: OK
13:39 azawawi mst: well it began here... https://irclog.perlgeek.de/perl6/2017-01-18#i_13942805 :)
13:39 brokenchicken mst++ # telling me to stfu
13:40 * mst salutes the people who've done it to me over the years (rather more often than it needs saying to you, at that ;)
13:41 mst hrm
13:41 mst azawawi: can't you basically do a rakudo build, shove it ... somewhere on the web ... and wget+tar xzf it during travis startup?
13:41 mst I mean, it'd be a colossal hack
13:41 mst but if it works well enough to make your CI more useful, who cares
13:42 raschipi m: my Class H {has Int $.a is rw;has Str $.b is rw}; my $h = H.new; $h.a=6; $h.b="P6"; #sammers
13:42 camelia rakudo-moar 6ad9e0: OUTPUT«5===SORRY!5===␤Type 'Class' is not declared␤at <tmp>:1␤------> 3my Class7⏏5 H {has Int $.a is rw;has Str $.b is rw}␤Malformed my␤at <tmp>:1␤------> 3my7⏏5 Class H {has Int $.a is rw;has Str $.b ␤␤»
13:42 mst the stable/stale thing seems to me to basically be a black hole from which neither clue nor sense was escaping ;)
13:42 raschipi m: my class H {has Int $.a is rw;has Str $.b is rw}; my $h = H.new; $h.a=6; $h.b="P6"; #sammers
13:42 camelia rakudo-moar 6ad9e0: ( no output )
13:42 azawawi I just wanted my CI tests to be faster. That's it :)
13:42 mst yes. so I've just suggested something you could try yourself
13:43 mst if it works, then come and make a fuss in here and we can see if we can do a less-unofficial version of the same approach
13:43 mst but somebody's going to have to TIAS and you apparently already care so :D
13:43 sammers raschipi, I was just messing with hash to see if this was possible.
13:43 raschipi sammers: It's not, by design.
13:44 sammers and knowing is half the battle
13:44 azawawi mst: :)
13:48 raschipi sammers: Have you read these two: https://docs.perl6.org/type/Signature https://docs.perl6.org/type/Capture ? It's required reading.
13:48 sammers yes
13:48 sammers unless they were updated in the last couple of months
13:50 azawawi brokenchicken: My bad regarding 2016.12. I missed that the latest rakudo star announcement is 2016.11.  :)
13:51 raschipi You could match a hash against a signature to know if it complies with some expectations.
13:52 raschipi Do I have to say "smartmatch" or can it be just "match"? Do we have a non-smart way to match?
13:57 Ven joined #perl6
13:58 raschipi m: my $s = :(Int :$a, Str :$b); say %(a => 1, b => "s") ~~ $s; say %(a => "a", b => "s") ~~ $s
13:58 camelia rakudo-moar 6ad9e0: OUTPUT«True␤False␤»
13:58 sammers hmm, ok, that is intersting
14:01 sammers I was looking for somewhere in the docs that says something like "if you assign as type to a hash then all values in the hash require the same type, otherwise each value can be of different types"
14:01 sammers something like that
14:01 sammers but wasn't able to find it
14:02 raschipi https://docs.perl6.org/type/Hash#Object_hashes_and_type_constraints -> "If you would like to accept any object whatsoever in your hash, you can use Any!"
14:03 sammers yeah, close enough I guess
14:08 moritz sammers: note that even if you supply a type constraint, the values can still be of different types
14:08 moritz as long as they are all subtypes of the type constraint you specified
14:10 sammers ok
14:10 brokenchicken though you can make a subset that restricts that too
14:11 sammers is the where clause on subset the same as where that is used in sub guard clause? do they support the same functionality?
14:11 moritz subset ReallyInt of Int where { .WHAT === Int }
14:11 moritz sammers: yes
14:12 nightfrog joined #perl6
14:12 brokenchicken m: my Int %h; %h<foo> = <42>
14:12 camelia rakudo-moar 4ae08e: ( no output )
14:12 brokenchicken m: subset IntOnly of Int where .WHAT =:= Int; my IntOnly %h; %h<foo> = <42>
14:12 camelia rakudo-moar 4ae08e: OUTPUT«Type check failed in assignment to %h; expected IntOnly but got IntStr (IntStr.new(42, "42"))␤  in block <unit> at <tmp> line 1␤␤»
14:13 raschipi sammers: 'where' does matching.
14:14 sammers ok, so in the case of hash subset and its where clause are applied to a single pair value.
14:14 sammers and in the case of a sub signature, the where clause has access to all of the params in the signature.
14:15 moritz only to those declared before, I think
14:15 brokenchicken "all the params"... I think  onlky the one before it
14:15 sammers ok
14:15 brokenchicken *ones
14:15 azawawi joined #perl6
14:16 wamba joined #perl6
14:16 pmurias joined #perl6
14:19 DarthGandalf joined #perl6
14:23 cdg joined #perl6
14:36 Vasyl joined #perl6
14:48 cibs joined #perl6
14:50 sammers ok, so pairs. How do we specify a type on a pair?
14:50 sammers m: my Int $p1 = :age<90>;
14:50 camelia rakudo-moar 4ae08e: OUTPUT«Type check failed in assignment to $p1; expected Int but got Pair (:age(IntStr.new(90, "...)␤  in block <unit> at <tmp> line 1␤␤»
14:50 sammers m: my Pair $p1 = :age<90>;
14:50 camelia rakudo-moar 4ae08e: ( no output )
14:51 sammers m: my Pair $p1 = :age<90>; say $p1.age.WHAT;
14:51 camelia rakudo-moar dca05c: OUTPUT«No such method 'age' for invocant of type 'Pair'␤  in block <unit> at <tmp> line 1␤␤»
14:52 sammers m: my Pair $p1 = :age<90>; say $p1<age>.WHAT;
14:52 camelia rakudo-moar dca05c: OUTPUT«(IntStr)␤»
14:52 sammers m: my IntStr $p1 = :age<90>; say $p1<age>.WHAT;
14:52 camelia rakudo-moar dca05c: OUTPUT«Type check failed in assignment to $p1; expected IntStr but got Pair (:age(IntStr.new(90, "...)␤  in block <unit> at <tmp> line 1␤␤»
14:53 sammers m: my Int %h = :age<90>; say %h<age>.WHAT;
14:53 camelia rakudo-moar dca05c: OUTPUT«(IntStr)␤»
14:54 raschipi You need the interface only an assossiative variable (%sigil) has.
14:54 sammers ok, that makes sense now
14:55 brokenchicken m: my (Num :age($p)) := \(:age<90>); dd $p
14:55 camelia rakudo-moar dca05c: OUTPUT«Type check failed in binding to $p; expected Num but got IntStr (IntStr.new(90, "90"))␤  in block <unit> at <tmp> line 1␤␤»
14:55 brokenchicken m: my (Int :age($p)) := \(:age<90>); dd $p
14:55 camelia rakudo-moar dca05c: OUTPUT«IntStr $p = IntStr.new(90, "90")␤»
14:55 brokenchicken Oh :(
14:56 brokenchicken m: my Pair $p where .value ~~ Int = :age<90>
14:56 camelia rakudo-moar dca05c: ( no output )
14:56 AlexDaniel joined #perl6
14:56 brokenchicken m: my Pair $p where .value ~~ Num = :age<90>
14:56 camelia rakudo-moar dca05c: OUTPUT«Type check failed in assignment to $p; expected <anon> but got Pair (:age(IntStr.new(90, "...)␤  in block <unit> at <tmp> line 1␤␤»
14:56 brokenchicken there prolly a shorter way to write that
14:57 sammers m: my Pair $p where Int = :age<90>;
14:57 camelia rakudo-moar dca05c: OUTPUT«Type check failed in assignment to $p; expected <anon> but got Pair (:age(IntStr.new(90, "...)␤  in block <unit> at <tmp> line 1␤␤»
14:59 hchienjo joined #perl6
15:00 hchienjo Hello everyone.
15:00 raschipi oi
15:00 brokenchicken \o
15:00 bstamour` hi :-)
15:01 hchienjo Has anyone experienced Function 'BEFORE' needs parens to avoid gobbling block when using zef?
15:01 brokenchicken not me
15:01 brokenchicken buggable: eco zef
15:01 buggable brokenchicken, zef 'It's like [cpanm] wearing high heels with a tracksuit': https://github.com/ugexe/zef
15:01 AlexDaniel .u ????????‍????
15:01 yoleaux U+200D ZERO WIDTH JOINER [Cf] (<control>)
15:01 yoleaux U+1F469 WOMAN [So] (????)
15:01 yoleaux U+1F680 ROCKET [So] (????)
15:01 AlexDaniel u: ????????‍????
15:01 unicodable6 AlexDaniel, U+1F469 WOMAN [So] (????)
15:01 unicodable6 AlexDaniel, U+1F3FD EMOJI MODIFIER FITZPATRICK TYPE-4 [Sk] (????)
15:01 unicodable6 AlexDaniel, https://gist.github.com/ca8f990bee2631a1c9f843e08166aa68
15:01 timotimo hchienjo: your version of rakudo could be too old. what does perl6 --version give you?
15:02 AlexDaniel yoleaux: ????
15:02 hchienjo timotimo: This is Rakudo version 2016.12-375-gdca05c2 built on MoarVM version 2016.12-113-gd1da1ba
15:02 hchienjo implementing Perl 6.c
15:02 brokenchicken :o
15:02 timotimo that's recent enougn, i'd say
15:02 AlexDaniel hchienjo: yes
15:02 AlexDaniel hchienjo: you have to update zef I think
15:03 brokenchicken Also, how do so many people end up using bleed dev versions of Rakudo :/
15:03 timotimo ... it's the best version ...
15:03 melezhik HI!
15:03 sammers m: subset PairInt where .value ~~ Int; my PairInt $p = :age<90>; say $p<age>.WHAT;
15:03 camelia rakudo-moar dca05c: OUTPUT«(IntStr)␤»
15:03 hchienjo AlexDaniel: Let me try.
15:03 AlexDaniel hchienjo: https://github.com/ugexe/zef/commit/1d80793e45691786301bc4fa5150662506ae941d
15:04 raschipi o/
15:04 brokenchicken m: enum PHASE is export <BEFORE START LIVE STOP AFTER>; when BEFORE { say "===> meow" }
15:04 camelia rakudo-moar dca05c: ( no output )
15:04 brokenchicken Ah
15:04 melezhik say I bumped a version at my module meta file and made commit, how can I see that this version is accessible at https://modules.perl6.org ?
15:05 raschipi Gosh, there's a book about Perl6 that recommends Atom as a text editor.
15:05 brokenchicken melezhik: the site doesn't really use any versions.
15:05 brokenchicken melezhik: and module installers don't use same file for versions
15:05 brokenchicken huggable: eco
15:05 huggable brokenchicken, nothing found
15:06 melezhik ok, let me reshape my question
15:06 AlexDaniel raschipi: it's not that unreasonable. I think its highlighting is mostly right nowadays
15:06 brokenchicken melezhik: you can look in this file. This is what panda uses when `panda update` is run: http://ecosystem-api.p6c.org/projects.json
15:06 raschipi It has Chrome embedded.
15:06 melezhik I bumped my version at meta file for my module, when user will be able to get new version of my module?
15:06 brokenchicken Atom rocks
15:06 AlexDaniel raschipi: what else? There's emacs and perl6-mode, it's not bad too
15:07 AlexDaniel and that's about it
15:07 melezhik brokenchicken: thanks
15:07 brokenchicken melezhik: depends on the package manager the use and whether they run `update`
15:07 brokenchicken melezhik: note that both panda and zef support `install .` run in a cloned repo
15:07 melezhik brokenchicken: you answered my question
15:08 sammers night #perl6, thanks for you input
15:08 brokenchicken I guess "within a couple of hours" is a reasonable expectation; providing the user runs the update command
15:08 melezhik I don't care about `install .` , only about install/update <module-name>
15:08 melezhik yeah, I just needed a way to estimate this ...
15:08 melezhik that's ok
15:09 melezhik brokenchicken: so, http://ecosystem-api.p6c.org/projects.json is a source to watch at ?
15:09 brokenchicken melezhik: yeah. There's also an acompanying http://ecosystem-api.p6c.org/errors.json
15:10 melezhik brokenchicken:  good, thank you
15:10 melezhik btw, no alerts to modules maintainers get sent in case of errors ? :)
15:11 melezhik I mean errors here - http://ecosystem-api.p6c.org/errors.json
15:11 melezhik it would be handy ...
15:12 hchienjo AlexDaniel: Welp! I get this when trying to install zef from source zef:ver<*>:auth<github:ugexe>:api<> already installed -->followed by a long stracktrace here
15:13 AlexDaniel hchienjo: I don't know what it means
15:14 AlexDaniel hchienjo: all I know is that “Function 'BEFORE' needs parens” problem will go away if you manage to update zef :)
15:15 gfldex melezhik: you could write your own meta package and asked travis to build it once a week. If there are problems for zef to fetch and build your modules, travis sends you a mail.
15:17 Geth ecosystem: 2883f05c81 | (Zoffix Znet)++ | META.list
15:17 Geth ecosystem: s/META.info/META6.json/
15:17 Geth ecosystem: review: https://github.com/perl6/ecosystem/commit/2883f05c81
15:18 john51 joined #perl6
15:18 hchienjo Well, weird thing is, panda uninstall zef throws an exception of its own Type check failed in binding to $repo-id; expected Str but got Nil (Nil)
15:18 hchienjo AlexDaniel: I highly suspect these problems are the price for living on the bleeding edge :(
15:18 d4l3k_ joined #perl6
15:18 nicq20 joined #perl6
15:18 AlexDaniel hchienjo: I use rakudobrew for that, usually it works fine
15:18 AlexDaniel if it doesn't, I throw it all out and start from scratch :)
15:18 cibs_ joined #perl6
15:18 sjn__ joined #perl6
15:18 pochi joined #perl6
15:18 profan_ joined #perl6
15:18 hoelzro_ joined #perl6
15:18 sunnavy_ joined #perl6
15:18 cxreg2 joined #perl6
15:18 brokenchicken hchienjo: zef --force install zef
15:18 brokenchicken melezhik: that's a bit out of scope of the current ecosystem. Considering the majority of errors are due to GitHub connectivity and are temporary.
15:18 brokenchicken hmmm
15:18 brokenchicken Wonder what happened with geth not announcing ecosystem commit :/
15:18 Juerd_ joined #perl6
15:18 brokenchicken Ah "Lag: 271" I see :(
15:18 kaare__ joined #perl6
15:18 integral_ joined #perl6
15:18 integral_ joined #perl6
15:18 n0xff__ joined #perl6
15:18 freeze_ joined #perl6
15:18 obra_ joined #perl6
15:18 avarab joined #perl6
15:18 avarab joined #perl6
15:18 hwu_ joined #perl6
15:18 japhb_ joined #perl6
15:18 atta_ joined #perl6
15:18 azertus_ joined #perl6
15:18 dalek joined #perl6
15:18 krakan_ joined #perl6
15:18 hchienjo AlexDaniel: That's what I use too. Let me give it a try.
15:18 huf_ joined #perl6
15:18 ilbelkyr_ joined #perl6
15:19 brokenchicken weeeeeeeeeeeeeeeee
15:19 araraloren joined #perl6
15:19 rodarmor joined #perl6
15:19 timotimo joined #perl6
15:19 ugexe joined #perl6
15:19 eater joined #perl6
15:19 hchienjo brokenchicken: The installed zef can't even run, it croaks with this error. Function 'BEFORE' needs parens to avoid gobbling block
15:19 brokenchicken hchienjo: oh, right
15:20 timotimo what was my last message before i dropped out?
15:20 timotimo oh i can just irclog
15:20 brokenchicken timotimo: "timotimo │ ... it's the best version ..."
15:21 hchienjo timotimo: 'It's the best version'
15:21 timotimo 161745  timotimo │ wait a minute ... panda has an uninstall command?!
15:21 timotimo 161755  timotimo │ AlexDaniel: i believe rakudobrew has a "nuke" command
15:22 MilkmanDan joined #perl6
15:22 timotimo 161222  timotimo │ yeah you just need to put --force after zef
15:22 ugjka joined #perl6
15:22 timotimo that seems to somehow have dropped too
15:22 user9 joined #perl6
15:22 awwaiid joined #perl6
15:22 eyck joined #perl6
15:22 bisectable6 joined #perl6
15:22 evalable6 joined #perl6
15:22 statisfiable6 joined #perl6
15:22 benchable6 joined #perl6
15:22 xui_nya[m] joined #perl6
15:22 flexibeast joined #perl6
15:22 unicodable6 joined #perl6
15:22 committable6 joined #perl6
15:22 jsimonet joined #perl6
15:22 isacloud joined #perl6
15:22 plicease joined #perl6
15:22 domm1 joined #perl6
15:22 silug_ joined #perl6
15:22 ttkp6 joined #perl6
15:22 yoleaux joined #perl6
15:22 brokenchicken hchienjo: cd $(mktemp -d); git clone https://github.com/ugexe/zef.git .;  perl6 -Ilib bin/zef install .
15:23 brokenchicken unless you already nuked something :)
15:23 timotimo yo uprobably also need --force
15:23 brokenchicken A yeah, and --force
15:23 ugexe `rakudobrew self-upgrade && rakudobrew build zef` should also work (it will use --force now)
15:23 Sgeo joined #perl6
15:23 brokenchicken hchienjo: cd $(mktemp -d); git clone https://github.com/ugexe/zef.git .;  perl6 -Ilib bin/zef --force install .
15:23 giraffe joined #perl6
15:23 ugexe see: https://github.com/tadzik/rakudobrew/commit/89fa3f5e2d59795d44a965574d403af2c1b1c602
15:24 hchienjo ugexe: Thanks. Let me take a look.
15:24 hchienjo timotimo: I'll give it a shot.
15:24 timotimo good luck!
15:24 wtw joined #perl6
15:25 hchienjo brokenchicken: Hovering over the .rakudobrew folder...
15:26 brokenchicken hchienjo: people who use packages meant for users and not core hackers (http://rakudo.org/downloads/star/) usually don't have these problems ;)
15:27 kipd joined #perl6
15:28 ugexe hchienjo: and I suspect most core hackers that use it also don't upgrade existing rakudo installations but merely add new ones (or nuke whatever they want to replace/update and then re-add it fresh)
15:28 ggherdov joined #perl6
15:28 imnotarobot joined #perl6
15:29 [Coke] That's how I use rakudobrew; just create a new moar and reinstall all the modules I need.
15:29 * brokenchicken has update-perl6 is aliased to `rm -fr ~/.zef; rm -fr ~/.perl6; rm -fr ~/.rakudobrew/; git clone https://github.com/tadzik/rakudobrew ~/.rakudobrew; rakudobrew build moar; rakudobrew build zef; \
15:29 [Coke] s/moar/rakudo-moar/
15:29 brokenchicken zef --/test install Inline::Perl5 DBIish Test::When Test::Notice Test::META Pretty::Topic File::Find IO::Socket::SSL HTTP::UserAgent URI::Escape HTTP::Tinyish \
15:29 brokenchicken Grammar::Tracer Config::From HTML::Entity Lingua::Conjunction Data::Dump IRC::TextColor JSON::Tiny HTTP::Server::Tiny URI::Encode'
15:29 brokenchicken oops
15:30 brokenchicken damn, and I accidentally ran it just long enough right now that it nuked .zef and prolly parts of .rakudobrew :(
15:30 user9 joined #perl6
15:30 * brokenchicken cries and adds a timer...
15:31 FROGGS joined #perl6
15:31 ggherdov joined #perl6
15:33 SmokeMachine joined #perl6
15:37 shayan_ joined #perl6
15:37 notbenh_ joined #perl6
15:38 jdv79 nine: https://gist.github.com/anonymous/3a766c44b32f4d9a851b1edf73a2b9f5
15:38 jdv79 I'm gonna guess its something about 5.24.1
15:40 nine jdv79: did you re-install Inline::Perl5 after upgrading perl?
15:41 jdv79 i was in the process
15:41 jdv79 thats what broke
15:42 jdv79 building a 5.24.0 now to test
15:42 brokenchicken I got 5.24.0 on my server and Inline::Perl5 installed fine
15:43 brokenchicken (like 3 minutes ago; on HEAD rakudo)
15:43 nine I'd bet it tries to load the wrong libperl
15:43 jdv79 i had 5.24.0 and it was working but all of the sudden i got the error about -Dusemultiplicity
15:43 jdv79 so i uninstalled 5.24.0 and installed 5.14.1 as such
15:43 jdv79 *24
15:43 jdv79 hmm
15:44 brokenchicken I perlbrewed mine with -Duseshrplib and -Dusemultiplicity
15:51 hartenfels joined #perl6
15:53 sammers joined #perl6
15:54 jdv79 i'm gonna guess running time was never a consideration in the p5 test suite;)
15:54 brokenchicken :)
15:55 khw joined #perl6
15:56 nine jdv79: perlbrew install has a --notest switch :)
15:58 cale2 joined #perl6
15:59 skids joined #perl6
16:00 jdv79 i guess its a habbit to let testsuites run in perl land
16:00 jdv79 finally finished
16:00 ilmari jdv79: my 5yo workstation runs all the perl5 tests in 4min
16:02 jdv79 my 4yo laptop does not
16:02 ilmari my new laptop does the whole build/test/install in about 5min
16:03 jdv79 ok, i'm at about 15m
16:03 abraxxa sorry I have been in meetings, did someone fix a backend services required by panda and zef because boths' update command works now
16:04 moritz at least for panda, yes
16:04 nicq20 left #perl6
16:06 jdv79 aw c'mon.  same error.
16:07 erdic joined #perl6
16:10 abraxxa timotimo: thanks for fixing modules.perl6.org (read the backlog)
16:10 brokenchicken What was wrong with it BTW?
16:11 user9 joined #perl6
16:12 jdv79 nine: installed fine manually but failed unde zef
16:12 jdv79 weird 
16:12 gregf_ joined #perl6
16:14 acrussell joined #perl6
16:21 holli_ sometimes i put a slice of cheese on my head and pretend i am a sandwich
16:21 hchienjo ugexe: I manually ran [Coke]'s bash alias and things are working fine now. Thanks everyone who has helped. Really appreciated.
16:22 holli_ oops. wrong channel
16:23 brokenchicken holli_: you still do that? I'd figured you'd get bored of doing that by now.
16:23 brokenchicken Try a slice of ham instead. Mix it up a bit.
16:25 pmurias brokenchicken: rakudo.org/downloads tells users that the simples way of building rakudo from source is to use rakudobrew
16:25 [Coke] I had a bash alias?
16:25 [Coke] :)
16:26 holli_ i tried mixing. turns out it's super hard to get peanut butter out of rasta curls
16:27 brokenchicken pmurias: yup. And we have a ticket for it: https://rt.perl.org/Ticket/Display.html?id=130500#ticket-history
16:27 brokenchicken holli_: hah :D
16:36 atta joined #perl6
16:37 kaare__ joined #perl6
16:51 acrussell joined #perl6
16:59 Ven joined #perl6
17:03 freeze joined #perl6
17:08 raschipi Did you guys see the new Mozilla brand?
17:08 raschipi Almost as good as Perl6, I think.
17:10 pmurias camelia seems vastly superior to the ugly Mozilla pinkness
17:10 freeze joined #perl6
17:11 freeze joined #perl6
17:12 holli_ no brand (in a tech context) can possibly be worse than this childish overly colorful butterfly
17:12 brokenchicken holli_: what about Go's gopher?
17:13 * holli_ googles
17:13 Ven joined #perl6
17:13 holli_ i stand corrected
17:13 brokenchicken raschipi: so what is it?
17:13 brokenchicken holli_: :)
17:14 raschipi https://blog.mozilla.org/opendesign/arrival/
17:14 raschipi holli_: What about a Camel and an Onion?
17:15 * brokenchicken cringes at that type clash >_<
17:16 kyan joined #perl6
17:16 brokenchicken raschipi: I'd say it's worse than Perl 6. While we fail with colour, the logo itself isn't bad.
17:18 brokenchicken While mozilla's one is the result of an hour long marketing meeting and someone going "hey, you know how fedex logo got an arrow in it! Let's do something like that.. wait! the "ill" could be like ://"
17:18 raschipi We should ask the folks at http://opensourcedesign.net/ if they would give us some help.
17:18 brokenchicken And then someone's kid typed it up in Photoshop and changed the :// part to Italics :)
17:18 brokenchicken s/changed.+//
17:18 brokenchicken heh
17:19 brokenchicken raschipi: do we need help?
17:19 raschipi Withg the colors.
17:19 gfldex Many years ago TimToady asked to be stopped … err … asked for help with the Perl 6 mascot. None of you raised any hands. Now stop whining.
17:19 brokenchicken I thought we embraced the logo as a cultural hack
17:19 raschipi s/Withg/With/
17:19 raschipi I do, I like the logo and I like the colors.
17:19 raschipi You're the one that said we fail in the colors.
17:20 Gasher joined #perl6
17:20 raschipi I quite like what Mozilla came up with too.
17:20 brokenchicken raschipi: yeah we do. That's why so many people say it sucks. But I didn't say we should change it.
17:21 raschipi I see. Embracing the ugly hacks, I see.
17:21 ugexe we need a perl6 logo roast that counts anything passing as a valid perl6 logo implementation
17:21 brokenchicken haha
17:22 brokenchicken IIRC the logo on perl6.org links to an archived email that actually does qualify as that
17:22 brokenchicken The main criterion is the new logo needs to make TimToady just as happy :P
17:23 dylanwh there are already three bugs filed to register moz:// as a protocol hanlder
17:23 dylanwh and people asking if we submitted a proposal to IANA.
17:24 brokenchicken heh
17:25 domidumont joined #perl6
17:25 cale2 Anyone here tried Exercism.io ?
17:25 cale2 There's some perl6 challenges there, but I can't figure out how to solve them.
17:25 raschipi brokenchicken: I'm aware of the discussion you're referencing, but it isn't in the linked text in perl6.org.
17:25 cale2 It just gives you a challenge.t file
17:26 brokenchicken raschipi: I've no idea of that discussion... I see the linked text states the requirementys in in "Highlights of the discussion": https://raw.githubusercontent.com/perl6/mu/master/misc/camelia.txt
17:27 brokenchicken cale2: that's the extension of test files; I'd guess the challenge is to make it pass all tests
17:28 cibs joined #perl6
17:28 brokenchicken "There is a test script included with the exercise; a file with the extension .t. Run the test script for the exercise by running perl6 with the test file as an argument. e.g. perl6 example.t."
17:28 cale2 brokenchicken: where do you put your code to solve the challenge then? Inside the .t file?
17:28 cale2 Or you make a new file and somehow include it in the .t file?
17:29 raschipi The test file expects your code to be in a file with a specifi name in the same directory. Look at the test file to see what that name is.
17:30 brokenchicken cale2: which one are you doing?
17:30 cale2 the first one. bob
17:31 cale2 where does it specify what the name of the file should be?
17:31 brokenchicken It says "exercism fetch perl6 bob" what's that do? Does it fetdch all the fiels for you?
17:31 cale2 yes. it gets the .t file and the readme
17:31 brokenchicken It specifies my $module = %*ENV<EXERCISM> ?? 'Example' !! 'Bob';
17:31 brokenchicken use-ok $module;
17:31 brokenchicken require ::($module) <Bob>;
17:31 cale2 the .t file has two lines
17:31 brokenchicken So unless you got EXERCISM set, use Bob.pm6
17:32 cale2 my $module = %*ENV<EXERCISM> ?? 'Example' !! 'Bob';
17:32 cale2 what does that do
17:33 brokenchicken cale2: if EXERCISM env var is set to a truthy value, it uses "Example" as module name and if it ain't, uses "Bob" as module name
17:33 brokenchicken And I see it's use lib expects the test file to be in a dir below the module
17:33 brokenchicken cale2: use Bob.pm6 create class Bob {} in it; and if the test file is in the same directory, you can run it with perl6 -I. test.t
17:34 brokenchicken or.... prove -e 'perl6 -I.' -vlr test.t
17:34 brokenchicken it's purtier
17:35 cale2 lordy lordy....
17:35 brokenchicken heh
17:35 brokenchicken Submit a patch :)
17:36 brokenchicken cale2: well, Option B:  remove lines 7, 8, and 9 in the test file and instead stick class Bob {} there :)
17:36 brokenchicken And just use one file
17:36 brokenchicken perl6 test.t   (or prove -e 'perl6' -vlr test.t for purty colours)
17:38 cale2 brokenchicken: The annoying thing is that in order to do any of the challenges, you have to learn a bunch of finicky tricks like you just said. Not very beginner friendly
17:38 ttt is that the challenge?
17:38 ttt there doesn't seem to be much /more/ to it than that
17:39 hchienjo joined #perl6
17:39 cale2 For example, I need to read about the difference between .pl6 and .pm6 files. Then I need to do a full tutorial in how .t files work
17:39 cale2 .t files are a world apart from common testing systems like you see with ruby/python/node
17:39 yoleaux cale2: Sorry, I don't know what timezone that is. If in doubt, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for a list of options.
17:41 rurban joined #perl6
17:41 bwisti joined #perl6
17:41 raschipi "common testing systems" What? They all copied Perl's testing system.
17:42 ttt Is there a certain person or couple of people who do the bulk of perl6 infrastructure sysadmin work?
17:42 cale2 raschipi: I've never seen a test file like that before.
17:43 Ven joined #perl6
17:43 brokenchicken cale2: well, what would be the alternative?
17:43 brokenchicken cale2: other than the fact that it doesn't tell you what file to write the code in, the instructions are pretty basic.
17:43 brokenchicken Put code in file. Run perl6 test.t
17:44 brokenchicken Yes, I told you a bunch of tricks to make stuff easier/prettier, but they're not a necessity
17:44 brokenchicken teatime: like what
17:44 teatime like maintaining whatever is hosting perl6.org, for example
17:45 teatime and I think you guys have at least one CI system setup, etc.
17:46 cale2 brokenchicken: Other languages fetch 3 files for you. The test file, the readme, and the actual module that the test file is linked to. The module has the basics sketched out for you.
17:46 brokenchicken "When you're logged in, you can say exercism fetch perl6 to get the next available exercise on the track."  <-- I'd assume that actually fetches the proper files for you, so you don't even need to figure out stuff
17:46 brokenchicken cale2: what does perl6 version fetch?
17:46 cale2 test file and readme
17:46 brokenchicken :(
17:46 brokenchicken that's certainly LTA
17:46 cale2 So for a beginner, it's like, how do I go about even making the module
17:46 brokenchicken right
17:47 cale2 brokenchicken: the added bonus of including the module is that you can teach beginners some best practices about organization
17:47 brokenchicken cale2: make a file called Bob.pm6  in it write class Bob { }  inside and then start adding methods to it
17:48 brokenchicken Maybe try to find whoever made those lessons and ask them to add more user-friendly files
17:48 cale2 http://exercism.io/languages/perl6/contribute
17:48 cale2 Ok, I'll look into that.
17:48 brokenchicken teatime: I got access to those systems. What did you need?
17:51 brokenchicken cale2: https://github.com/exercism/xperl6/issues/75
17:54 cale2 I just made an issue as well :D
17:54 brokenchicken heh
17:57 cale2 didn't mean to double up on the issue. just both had the same idea
17:59 Ven joined #perl6
18:08 haxmeister joined #perl6
18:09 haxmeister just perused the perl6 docs again .. I must say in the last couple years the docs have improved extensively and the language looks beautiful. Hats off to a job well done, I think I'll start learning it now.. it seems very ready
18:09 andrzejku joined #perl6
18:09 gfldex tyvm
18:11 cale2 haxmeister: I'm waiting for some books to come out, which should be soon. There is a print one, but no ebooks yet
18:11 [Coke] haxmeister: thank you for the kind feedback. If you do find any issues, please feel free to let us know.
18:13 gfldex haxmeister: please asked if you believe there is a hole in the docs. Most of the holes I plugged started as questions in this channel.
18:15 haxmeister and wow.. what nice responses.. the beautifully friendly perl community is definitely back strong.. I'll go through some tuts probably this weekend, just went through some lisp books and am surprised at how much perl6 takes from lisp.. all the best stuff!
18:16 domidumont joined #perl6
18:19 raschipi I like the FAQ answer about Perl6 being Lisp in disguise: (not (not Nil))
18:24 Ven_ joined #perl6
18:27 brokenchicken \o/
18:29 wamba joined #perl6
18:37 brokenchicken Hard to imagine them raising $2,500,000/year considering a giant like Wikipedia pulls $75m
18:37 brokenchicken Called it! https://www.generosity.com/community-fundraising/make-a-more-secure-web-with-let-s-encrypt
18:37 brokenchicken 51% of goal reached
18:38 brokenchicken I mean https://irclog.perlgeek.de/perl6/2016-11-01#i_13498808 called it :)
18:38 mst $100k is still a decent chunk of change towards making LE awesome
18:39 brokenchicken Yeah :) And on reddit they said this wasn't their primary funding source anyway
18:42 raschipi They have strong backing from the other CAs. The industry doesn't want to do the small stuff that's barely lucrative, but they need to make TLS pervasive to force the big clients to make use of it. LE is part of a plan to mark everything that doesn't use TLS as 'insecure', so that everything will need it. Big cash for the CAs, selling certs to everyone that can't for some reason use LE.
18:44 brokenchicken heh
18:44 brokenchicken But they do do small stuff. We paid like $100/year for a cert
18:44 brokenchicken No point now, of course.
18:45 raschipi They do, but there's not much money on it.
18:45 mspo https://anvaka.github.io/common-words/#?lang=pl
18:47 raschipi When browsers change the padlock symbol to a broken red padlock on every connection that doesn't use TLS, then they'll be rolling in the dough. Backing LE was a requirement from browser vendors to do it.
18:49 mspo is ___ a perl5 thing?
18:49 hartenfels mspo: A triple underscore has no special meaning in Perl 5.
18:50 mspo weird
18:50 brokenchicken mspo: where do you see the ___ tho? I only see the _ in the list
18:51 brokenchicken heh nice list for ruby: https://anvaka.github.io/common-words/#?lang=rb
18:51 shayan_ joined #perl6
18:53 brokenchicken oh, if you click on it, it shows code
18:53 brokenchicken Looks like someone likes to use ___ as a heredoc marker
18:53 mspo brokenchicken: scroll down a bit
18:53 xzhao joined #perl6
18:53 mspo oh that would actually look pretty nice
18:57 * perlpilot was mildly hoping that zooming in would reveal more of a fractal nature
18:57 brokenchicken m: say q:to/????/␤Yey, Unicode!␤????
18:57 camelia rakudo-moar 35a3c0: OUTPUT«Yey, Unicode!␤␤»
18:57 brokenchicken No _that's_ a nice heredoc marker :*
18:59 brokenchicken *Now
19:00 brokenchicken m: say q:to/????‍♀️/␤awesome␤????‍♀️
19:00 camelia rakudo-moar 35a3c0: OUTPUT«awesome␤␤»
19:01 raschipi The most common thing after 'import' in python is 're'.
19:02 brokenchicken m: say q:to"\c[woman gesturing OK]"␤awesome␤????‍♀️
19:02 camelia rakudo-moar 35a3c0: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Ending delimiter \c[woman gesturing OK] not found␤at <tmp>:3␤------> 3????‍♀️7⏏5<EOL>␤    expecting any of:␤        whitespace␤»
19:02 DrForr Grumble. I spent 3 hours fixing the here-doc test case in Perl6::Parser on Sunday, still have to get it to handle multiple heredocs per line.
19:02 brokenchicken heh... multiple heredocs per line..
19:03 brokenchicken .oO( multiple heredocs per line... interpolating multiple here docs per line! )
19:03 DrForr say q:to[END],q:to[END]; # ...
19:04 brokenchicken Yeah, I know them; I'm still amused we support them :)=
19:05 brokenchicken omg...
19:05 brokenchicken what I said actually works...
19:08 labster joined #perl6
19:08 brokenchicken m: https://gist.github.com/zoffixznet/0c3c79bc6220ab051f56c8b98e75b12b
19:08 camelia rakudo-moar 35a3c0: OUTPUT«Hey,  dawg I heard you liked heredocs so here's a heredoc in a heredoc   ␤»
19:09 brokenchicken hahaha. This is the most obscene thing I ever coded.
19:09 DrForr Mind if I use that as a test case? :)
19:09 brokenchicken Go for it :)
19:10 DrForr Dank u wel.
19:10 brokenchicken I'm not following why there are two spaces between "Hey," and "dawg"
19:10 brokenchicken m: https://gist.github.com/zoffixznet/f0eb8ee0791bf4b9a91412b6904fe28b
19:10 camelia rakudo-moar 35a3c0: OUTPUT«("Hey,", " dawg I heard you", "liked heredocs so here's", "a heredoc in a", "heredoc", "", "", "").Seq␤»
19:10 brokenchicken hm, a trimming bug?
19:11 brokenchicken .tell samcv I found an atom highlighter bug, the qq:// doesn't get highlighted right :P https://gist.github.com/zoffixznet/f0eb8ee0791bf4b9a91412b6904fe28b
19:11 yoleaux brokenchicken: I'll pass your message to samcv.
19:12 DrForr Thanks. I'll use it later after I've buttoned down the rest of the stuff.
19:14 brokenchicken Ah. No bugs. I'm giving it a 2-item list by accident
19:17 raschipi It's a bug in the programmer.
19:21 perlpilot Most bugs are in programmers
19:25 brokenchicken OMG! You can use them all on the same indent if you use different deliomiter haha
19:26 brokenchicken m: https://gist.github.com/zoffixznet/4793f1093154432294bd671cecf1c6aa
19:26 camelia rakudo-moar 35a3c0: OUTPUT«Hey, dawg! I heard you liked heredocs so here's a couple of heredocs interpolated in a couple of heredocs␤»
19:27 perlpilot Why would your choice of delimiter preclude using them on the same indent?
19:29 brokenchicken oh
19:29 brokenchicken I guess it doesn't
19:29 brokenchicken But for a second I thought I could have them out of order....
19:29 raschipi u: ????
19:29 unicodable6 raschipi, U+1F4DD MEMO [So] (????)
19:31 brokenchicken m: https://gist.github.com/zoffixznet/ef31bd783a86ae2d1d1c66bb64e222dd
19:31 camelia rakudo-moar 35a3c0: OUTPUT«5===SORRY!5===␤Ending delimiter ♥ not found␤at <tmp>:10␤------> 3<BOL>7⏏5<EOL>␤    expecting any of:␤        whitespace␤Other potential difficulties:␤    Asked to remove 8 spaces, but the shortest indent is 0 spaces␤    at <tmp>…»
19:31 brokenchicken Like this would've printed "this is heredoc sort"
19:31 brokenchicken I guess I can't have it all..
19:31 brokenchicken .oO( but one day... maybe in Perl 7... )
19:32 labster joined #perl6
19:37 shayan_ joined #perl6
19:39 perlpilot brokenchicken: I think you'd need a new bit of syntax, but you could probably do it in Perl 6.  something like:  put .words given multi-here-doc(<???? ????‍♀️ ♥ ????>); ...
19:41 raschipi perlpilot, brokenchicken: Macros can't get here soon enough, then. Can't be without this.
19:43 cale2 Interesting to see the most starred perl6 github repos
19:43 ShoaibJahejo joined #perl6
19:43 raschipi link?
19:43 cale2 https://github.com/search?l=&amp;o=desc&amp;q=language%3APerl6&amp;ref=advsearch&amp;s=stars&amp;type=Repositories&amp;utf8=%E2%9C%93
19:43 perlpilot yeah, macros are the only "big piece" of Perl 6 still missing from Rakudo.  But there's quite a bit you can do without them even still.
19:43 cale2 Plack was re-written in prl6?
19:43 perlpilot Besides ... there's always EVAL  ;-)
19:44 brokenchicken m: say "\c[woman health worker: dark skin tone]\c[woman factory worker: medium-dark skin tone]\c[man technologist: medium-light skin tone]"
19:44 camelia rakudo-moar 35a3c0: OUTPUT«????????‍⚕️????????‍????????????‍????␤»
19:44 * brokenchicken is impressed
19:44 brokenchicken m: say "\c[family: man, man, boy, boy]"
19:44 camelia rakudo-moar 35a3c0: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unrecognized character name family: man␤at <tmp>:1␤------> 3say "\c[family: man7⏏5, man, boy, boy]"␤»
19:45 brokenchicken hmmm
19:45 brokenchicken m: say "\c[couple with heart]"
19:45 camelia rakudo-moar 35a3c0: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unrecognized character name couple with heart␤at <tmp>:1␤------> 3say "\c[couple with heart7⏏5]"␤»
19:45 brokenchicken guess those ain't part of it yet
19:47 noganex joined #perl6
19:47 raschipi cale2: It's just the specs repo that is marked Perl6. It contains mostly pod.
20:00 brokenchicken m: NFC.new("\c[man walking]".NFC).say
20:00 camelia rakudo-moar 35a3c0: OUTPUT«Cannot create an NFD directly␤  in block <unit> at <tmp> line 1␤␤»
20:01 brokenchicken .oO( NFD? )
20:01 brokenchicken How can I modify individual .NFC items and then put it back as a Str?
20:01 brokenchicken m: "\c[man walking]".NFC[0] = 42
20:01 camelia rakudo-moar 35a3c0: OUTPUT«Cannot modify an immutable Int␤  in block <unit> at <tmp> line 1␤␤»
20:01 brokenchicken like something like that
20:01 brokenchicken m: Uni.new("\c[man walking]".NFC).say
20:01 camelia rakudo-moar 35a3c0: OUTPUT«This representation (VMArray) cannot unbox to a native int (for type NFC)␤  in block <unit> at <tmp> line 1␤␤»
20:02 brokenchicken m: Uni.new(|"\c[man walking]".NFC).Str.say
20:02 camelia rakudo-moar 35a3c0: OUTPUT«????‍♂️␤»
20:02 brokenchicken Ah, k
20:02 shayan_ joined #perl6
20:08 bjz joined #perl6
20:09 acrussell joined #perl6
20:10 cale2 joined #perl6
20:12 brokenchicken m: Uni.new("\c[man walking]".NFC.Array.&{.[2]:=.[2]-2;$_}).Str.say
20:12 camelia rakudo-moar ae050f: OUTPUT«????‍♀️␤»
20:12 brokenchicken neat
20:13 iH2O joined #perl6
20:16 brokenchicken m: say EVAL '\c[' ~ 'man bouncing ball' ~ ']':
20:17 camelia rakudo-moar ae050f: OUTPUT«5===SORRY!5=== Error while compiling /home/camelia/EVAL_0␤Undeclared routines:␤    ball used at line 1. Did you mean 'all'?␤    bouncing used at line 1␤    c used at line 1␤    man used at line 1. Did you mean 'max', 'tan', 'min', 'map'?␤␤»
20:17 espadrine_ joined #perl6
20:17 brokenchicken routine ball? what'sittalking aboot?
20:18 brokenchicken m: say EVAL ('\c[' ~ 'man bouncing ball' ~ ']'):
20:18 camelia rakudo-moar ae050f: OUTPUT«5===SORRY!5=== Error while compiling /home/camelia/EVAL_0␤Undeclared routines:␤    ball used at line 1. Did you mean 'all'?␤    bouncing used at line 1␤    c used at line 1␤    man used at line 1. Did you mean 'max', 'tan', 'min', 'map'?␤␤»
20:18 hartenfels You don't have quotes around your \c[...].
20:18 brokenchicken weird
20:18 brokenchicken Ah. Thanks.
20:21 yqt joined #perl6
20:25 iH2O left #perl6
20:29 SmokeMachine u: ????
20:29 unicodable6 SmokeMachine, U+1F600 GRINNING FACE [So] (????)
20:30 SmokeMachine u: ????
20:30 unicodable6 SmokeMachine, U+1F60A SMILING FACE WITH SMILING EYES [So] (????)
20:30 SmokeMachine u: ????
20:30 unicodable6 SmokeMachine, U+1F642 SLIGHTLY SMILING FACE [So] (????)
20:34 timotimo nobody told cale2 that github tends to think perl code is perl6 even when it's perl5?
20:35 girafe joined #perl6
20:38 cale2 timotimo: I figured github went off of the file endings rather than trying to parse syntax
20:38 timotimo oh, you returned, good
20:38 timotimo the key to the mystery is called "linguist"
20:38 timotimo i think it lives under github.com/github/linguist
20:43 brokenchicken cale2: it can't really do that. Perl 6 and Perl 5 and something else all use .t files
20:57 cdg joined #perl6
20:58 awwaiid cale2: maybe you already know, but there is some discussion at https://github.com/perl6/doc/issues/167
21:10 mr_ron joined #perl6
21:12 mr_ron docs: In Perl 6 regexes, | does LTM, which decides which alternation wins an ambiguous match based off of a set of rules, rather than about which was written first. https://docs.perl6.org/language/5to6-nutshell#Longest_token_matching_(LTM)_displaces_alternation
21:14 mr_ron "set of rules"? is it just longest alternative match, Am I missing something or does rewriting belong as part of issue 1141 https://github.com/perl6/doc/issues/1141 ?
21:14 awwaiid cale2: also, https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb#L328
21:14 Gasher joined #perl6
21:15 SmokeMachine u:  ⋃
21:15 unicodable6 SmokeMachine, U+0020 SPACE [Zs] ( )
21:15 unicodable6 SmokeMachine, U+22C3 N-ARY UNION [Sm] (⋃)
21:16 RabidGravy I dunno, gh thinks that Term::ReadKey is C++
21:16 awwaiid mr_ron: yes, afaict you are correct and it can be simplified
21:16 SmokeMachine c: ∪
21:16 SmokeMachine u: ∪
21:16 unicodable6 SmokeMachine, U+222A UNION [Sm] (∪)
21:17 mr_ron awwaiid: thanks will add to issue soon ...
21:20 perlpilot joined #perl6
21:39 bjz joined #perl6
21:44 agentzh joined #perl6
21:45 agentzh p6: my $a = [1, 2]; my Array of Int $r = $a;
21:45 camelia rakudo-moar 93b0ff: OUTPUT«Type check failed in assignment to $r; expected Array[Int] but got Array ($[1, 2])␤  in block <unit> at <tmp> line 1␤␤»
21:45 agentzh could anyone help me with this "Array of Int" type constraint?
21:46 agentzh sorry if it's a FAQ.
21:47 dha joined #perl6
21:48 timotimo you have to assign into that array in order for it to work
21:48 timotimo m: my $a = [1, 2]; my Array of Int $r .= new(); @$r = $a; say $r
21:48 camelia rakudo-moar 93b0ff: OUTPUT«Type check failed in assignment to ; expected Int but got Array ($[1, 2])␤  in block <unit> at <tmp> line 1␤␤»
21:48 timotimo oh, there's a bug
21:48 timotimo (just the name being wrong)
21:48 timotimo m: my $a = [1, 2]; my Array of Int $r .= new(); @$r = @$a; say $r
21:48 camelia rakudo-moar 93b0ff: OUTPUT«[1 2]␤»
21:48 timotimo there we go, agentzh
21:49 agentzh timotimo: ah, thanks
21:50 agentzh timotimo: because i'm using it in a class attribute, really, can i avoid initializing an empty array to it?
21:50 rindolf joined #perl6
21:51 timotimo no, but you can just have "has Array of Int $.foo = Array[Int].new()"
21:51 timotimo and it'll initialize it for you
21:51 timotimo (but only if you don't have a custom BUILD submethod)
21:52 timotimo (but you can just use TWEAK in that case)
21:52 agentzh timotimo: i see. thanks!
21:53 timotimo the reason why you have to "@$r =" in the code above is because when there's a listy thing on the LHS of the =, it'll do list assignment, and otherwise it'll do item assignment
21:53 timotimo so if you just $r = something, it'll replace whatever was in $r before
21:53 timotimo but if you @$r = something, it'll put stuff into the array that's in $r
21:54 timotimo and the reason why you have to have "@$a" on the RHS is that otherwise you'll be trying to put a single item into the array of ints that's an array itself
21:54 timotimo so it'll complain that it wanted an Int, but it got Array instead
21:54 timotimo and the reason why you can assign an Array into an Array of Int variable is because assigning an array into an array will iterate over the RHS array and put individual items into the array on the LHS
21:55 timotimo at that point the types will match up (wants Int, gets Int)
21:55 cdg joined #perl6
21:58 agentzh timotimo: i hoped that it would work with Array references as well so that i can avoid array copying when constructing the object.
21:59 agentzh timotimo: i'm coming from the Moose/Type::Tiny world, so i've already got used to Array[...] type constraints on array refs ;)
22:00 timotimo you can't put an Array into a variable that's typed Array[Int]
22:00 agentzh can i have something like an ArrayRef[Int] here? *grin*
22:01 agentzh this limitation looks a little bit strange to me :)
22:02 agentzh timotimo: anyway, thanks for your help. i'll live with has Array[MyStmt] @.stmts; for now.
22:02 timotimo you can just assign the array if you type it correctly
22:03 timotimo m: my Array of Int $foo; my Array of Int $bar = Array[Int].new(1, 2, 3, 4); $foo = $bar; dd $foo; $bar[2] = 99; dd $foo
22:03 camelia rakudo-moar 76f14a: OUTPUT«Array[Int] $foo = Array[Int].new(1, 2, 3, 4)␤Array[Int] $foo = Array[Int].new(1, 2, 99, 4)␤»
22:03 timotimo see?
22:03 timotimo but if you don't create an Array[Int], it won't let you assign to a variable or attribute that you've typed Array[Int]
22:04 ugexe gfldex: the problem your facing is essentially "why does `perl6 -I../my-dep/lib -e 'shell q|perl6 -Mmy-dep -e0|'` not find my-dep?"
22:05 ugexe the dependency is fulfilled by -I../some/path
22:05 timotimo so use PERL6LIB instead of -I
22:05 ugexe if someone is inclined to sure, but thats not the correct action for zef to take
22:06 timotimo oh
22:08 timotimo agentzh: ack?
22:09 agentzh timotimo: i see. thanks!
22:09 ugexe the problem is in a Build.pm he is doing `run $has-dependency-from-meta6`. zef has supplied the dependencies to Build.pm (via -I) but the run statement needs to handle getting those into its new process itself (setting -I or PERL6LIB itself from my @include = $*REPO.repo-chain.map(*.path-spec))
22:10 timotimo btw, you don't have to spell out Array[Int].new if you just use a @-sigiled variable
22:20 gfldex ugexe: I use `'-I' «~« @include` instead of a map. Somehow more pleasing to the eyes.
22:20 gfldex There must be quite a few trivial .map that could be replaced by a «~«
22:24 AlexDaniel joined #perl6
22:26 agentzh m: my Array[Int] @a; push @a, 32;
22:26 camelia rakudo-moar 99b186: OUTPUT«Type check failed in assignment to @a; expected Array[Int] but got Int (32)␤  in block <unit> at <tmp> line 1␤␤»
22:27 agentzh timotimo: any ideas on this? ;)
22:27 kalkin- joined #perl6
22:27 agentzh m: my Array[Int] @a; push @a, Int.new(32);
22:27 camelia rakudo-moar 99b186: OUTPUT«Type check failed in assignment to @a; expected Array[Int] but got Int (32)␤  in block <unit> at <tmp> line 1␤␤»
22:27 timotimo m: my Array[Int] @a; @a.push(32)
22:27 camelia rakudo-moar 99b186: OUTPUT«Type check failed in assignment to @a; expected Array[Int] but got Int (32)␤  in block <unit> at <tmp> line 1␤␤»
22:27 timotimo oh, of course
22:27 timotimo m: my Array[Int] @a .= new(); @a.push(32)
22:27 camelia rakudo-moar 99b186: OUTPUT«Type check failed in assignment to @a; expected Array[Int] but got Int (32)␤  in block <unit> at <tmp> line 1␤␤»
22:27 timotimo um ...
22:28 acrussell joined #perl6
22:28 timotimo oh
22:28 timotimo sorry, i'm distracted by videos
22:28 timotimo "my Array[Int] @a" defines you want an array of arrays of int
22:28 timotimo then you give it an int instead of an array of ints
22:28 timotimo and so it complains
22:28 hartenfels joined #perl6
22:28 timotimo m: my Int @a .= new(); @a.push(32)
22:28 camelia rakudo-moar 99b186: ( no output )
22:28 timotimo there you go
22:29 st_elmo joined #perl6
22:30 moritz haxmeister: you said earlier there is no ebook about Perl 6 yet. Let me plug https://leanpub.com/perl6 where you can buy an ebook right now. It's work in progress, but you get updates for free once you purchased it
22:30 moritz </plug>
22:31 kalkin- hi #perl6
22:32 hartenfels Good * kalkin.
22:32 kalkin- I'm looking at IO::Socket::INET code right now and trying to figure out where the DNS stuff is happening
22:33 kalkin- background: I'm need to resolve a specific SRV and I wanted to find out how Rakudo/MoarVM knows which local DNS server to use
22:34 kalkin- s/I'm/I/g
22:34 timotimo it just uses libuv's resolver i believe
22:35 agentzh timotimo: awesome! appreciate it!
22:35 kalkin- timotimo: moarvm? (I don't see any code for it in rakudo)
22:35 timotimo yep, moarvm
22:36 kalkin- timotimo: thanks
22:37 agentzh timotimo: my code finally works. thanks!
22:37 agentzh timotimo: i was about to abandon type constraints ;)
22:37 agentzh timotimo: you saved my day.
22:39 agentzh does anyone know if Perl 6 grammar parser supports automatic error reporting on parse failures?
22:40 timotimo it does not
22:40 agentzh like an error message saying "expecting token blah, but found xxxx"?
22:40 timotimo rakudo built that itself
22:40 agentzh timotimo: yeah, i noted that in the rakudo parser.
22:40 timotimo it's unfortunately not re-usable, i don't think
22:40 agentzh timotimo: does perl 6 grammar support line number and column number calculations out of the box?
22:40 agentzh or do i have to compute that info myself in perl 6?
22:40 timotimo it does not
22:41 timotimo however, you may be able to reuse the mechanism in HLL::Compiler
22:41 timotimo too distracted with stuff to write up something
22:41 timotimo but it's not so terribly hard to do, though. split on \n, calculate prefix sum, and presto
22:41 timotimo well, binary search through that prefix sum list
22:42 agentzh timotimo: is HLL::Compiler supposed to be used by perl 6 users?
22:42 timotimo hmm
22:42 timotimo perhaps not
22:43 agentzh timotimo: yeah, just wondering if perl 6 already provides such bells and whistles :)
22:43 hartenfels I had a similar problem recently, and got at the correct line number via $/.orig and $/.from.
22:43 agentzh they are common features in parsing frameworks like Parse::RecDescent and Pegex.
22:43 AlexDaniel yea, it's not too hard to do it yourself
22:43 hartenfels Where the former is the parsed text and the latter is the position it bailed out at.
22:43 agentzh hartenfels: aye, that's what i'll have to do.
22:43 timotimo sounds like there ought to be something in the ecosystem
22:44 agentzh *nod*
22:44 agentzh not hard, just tedious and not very beautiful.
22:45 hartenfels This being the code for it, and for putting a ⏏ between before() and after() https://github.com/hartenfels/LambdaDL/blob/master/lib/LambdaDL/Context.pm6#L13-L15
22:45 agentzh hartenfels: great! thanks!
22:46 * agentzh looks at LambdaDL.
22:48 hartenfels I don't think it's anything interesting to look at, at least not in the larval stage it is in right now.
22:48 kalkin- doesn't windows have an equivalent of resolv.conf? I  thought at some point they had some file with this name in different folder
22:48 * kalkin- is thinking about just parsing resolv.conf to cheat around getting DNS server
22:48 hartenfels kalkin-: the HOSTS file?
22:49 kalkin- hartenfels: does HOSTS file do on windows the same as resolv.conf? Not the same what linux hosts does?
22:50 timotimo it's just called hosts
22:50 timotimo it lives in a folder called "etc"
22:50 timotimo (no-one knows why!"
22:50 kalkin- so there is an actual C://etc/hosts path on Windows? o_O
22:50 hartenfels kalkin-: that might be true, somehow that just came to mind as the place to mess up people's resolution.
22:51 timotimo not directly under C
22:51 timotimo it's buried rather deep under Windows
22:51 brokenchicken kalkin-: c:\windows\system32\drivers\etc\hosts
22:51 kalkin- brokenchicken: thanks!
22:52 timotimo "deep"
22:52 Actualeyes joined #perl6
22:52 * kalkin- is guessing windows specifics over irc
22:53 kalkin- or I will just let people who use windows make a PR if the want to use such a weird system :)
22:53 brokenchicken kalkin-: or rather in %systemroot%\system32\drivers\etc\hosts
22:54 kalkin- or I could hardcode 8.8.8.8 for windows
22:54 brokenchicken heh
22:56 brokenchicken I recall MS provided a free dev version of windows; run it in a VM and do it right.
22:57 kalkin- brokenchicken: right good idea, thanks!
22:57 kalkin- btw i figured on linux/unix i can just use NativeCall with resolv.h
23:04 xyz_ joined #perl6
23:05 timotimo a google image search suggests that "footgun" is a move for inline skating
23:05 MasterDuke joined #perl6
23:05 brokenchicken lulz
23:06 xyz_ In Perl 6, do the keys of Hash or Map must be of Str type? If so is there an associative container which allows me to specify both the key type and the value type?
23:06 brokenchicken m: my %h{Any} = 42 => 72; %h.keys[0].^name.say
23:06 camelia rakudo-moar a5cac9: OUTPUT«Int␤»
23:06 brokenchicken You can use whatever you want instead of Any
23:07 cdg_ joined #perl6
23:07 hartenfels xyz_: docs about that are here I think https://docs.perl6.org/type/Hash#Object_hashes_and_type_constraints
23:07 brokenchicken m: my Int %h{Int} = 42 => 72; dd %h
23:07 camelia rakudo-moar a5cac9: OUTPUT«Hash[Int,Int] %h = (my Int %{Int} = 42 => 72)␤»
23:07 gfldex m: my %h{*}; say %h.of
23:07 camelia rakudo-moar a5cac9: OUTPUT«(Any)␤»
23:07 brokenchicken m: my Int %h{Int} = 42e0 => 72e-; dd %h
23:07 camelia rakudo-moar a5cac9: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Confused␤at <tmp>:1␤------> 3my Int %h{Int} = 42e0 => 727⏏5e-; dd %h␤»
23:07 brokenchicken m: my Int %h{Int} = 42e0 => 72e0; dd %h
23:07 camelia rakudo-moar a5cac9: OUTPUT«Type check failed in binding to key; expected Int but got Num (42e0)␤  in block <unit> at <tmp> line 1␤␤»
23:07 brokenchicken xyz_: ^ and this way you can specify types of both keys and values
23:10 TEttinger joined #perl6
23:10 xyz_ It looks like without reading the documentation, just by looking at the class definition of Hash I wouldn't know I could sepcify two type parameters.
23:11 brokenchicken That's why we have documentation ;)
23:11 sammers joined #perl6
23:13 brokenchicken m: my $h = Hash[Int,Num].new; $h{42e0} = 42
23:13 camelia rakudo-moar a5cac9: ( no output )
23:13 brokenchicken m: my $h = Hash[Int,Num].new; $h{42} = 42
23:13 camelia rakudo-moar a5cac9: OUTPUT«Type check failed in binding to key; expected Num but got Int (42)␤  in block <unit> at <tmp> line 1␤␤»
23:14 xyz_ brokenchicken: I get that...is there a way to programatically extract the type parameter information of a class? For example how many type parameters you can speciy?
23:15 gfldex m: my Int %h{*}; say %h.keyof
23:15 camelia rakudo-moar a5cac9: OUTPUT«(Whatever)␤»
23:15 brokenchicken m: my Int %h{*}; say %h.of
23:15 camelia rakudo-moar a5cac9: OUTPUT«(Int)␤»
23:15 brokenchicken so yeah
23:16 brokenchicken xyz_: I dont think you can do this thing on just any class. IIRC this stuff is provided to Hash by roles... like Associative for .of
23:19 xyz_ brokenchicken: Looking at Associative.pm, the role has only one type parameter, which I guess is the value type. Where does Hash get its key type parameter?
23:19 gfldex the role is TypedHash
23:19 gfldex https://github.com/rakudo/rakudo/blob/nom/src/core/Hash.pm#L454
23:21 brokenchicken Thanks
23:21 xyz_ gfldex: That's highly magical, but thanks! :-)
23:22 gfldex xyz_: it's not. Look for method ^parameterize. It's just a mixin.
23:23 skids joined #perl6
23:24 cibs joined #perl6
23:24 obra_ joined #perl6
23:24 profan_ joined #perl6
23:24 shmibs joined #perl6
23:24 drrho joined #perl6
23:24 alimon joined #perl6
23:24 mulk[m] joined #perl6
23:24 dp[m] joined #perl6
23:24 wictory[m] joined #perl6
23:24 xfix joined #perl6
23:27 cdg joined #perl6
23:37 xyz_ gfldex: I feel like ^parameterize is where the magic is...
23:43 cdg joined #perl6
23:52 cpage_ joined #perl6
23:53 neewbie joined #perl6

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

Perl 6 | Reference Documentation | Rakudo