🦋 Welcome to Raku! raku.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: colabti.org/irclogger/irclogger_log/raku
Set by ChanServ on 14 October 2019.
[Coke] one hint: if the compiler says "SORRY" it's compile time. 00:06
m: my Int $a = "WHAT";
camelia Type check failed in assignment to $a; expected Int but got Str ("WHAT")
in block <unit> at <tmp> line 1
[Coke] so, yup, that's runtime (at the moment) 00:07
stanrifkin [Coke]: thanks for the hint. It feels somewhat strange... i thought about it like ada or c++ type checking with range checking etc. 00:09
Are there gui libs for raku yet? 00:24
stanrifkin what means "Diwali"? 00:40
parabolize stanrifkin: GTK::Simple ad Gnome::Gtk3 are the 2 I found on a quick search
stanrifkin parabolize: thanks. I searched too and didn't find anything. 00:41
parabolize yeah, I don't see anything for QT, Tk or EFL 00:42
stanrifkin parabolize: I wanted Tk for simple dialog based programs. GTK::Simple sounds simple too. 00:45
parabolize It does though it seems to be all docs by test and example 00:47
[Coke] en.wikipedia.org/wiki/Diwali - Hindu festival of lights 00:48
The plan was to name the releases after holidays, picking one for each letter of the alphabet. 00:49
codesections stanrifkin: I wondered about the runtime vs compile time thing and asked on Stack Overflow. Johnathan Worthington provided a very informative answer: stackoverflow.com/questions/634844...-the-futur
[Coke] Seemed a reasonable plan after we had to name the first release Christmas.
btw: I vote for Kolęda for K. :) 00:50
codesections Festivus for F?
jdv79 what is the one for e? 01:09
stanrifkin maybe eastern? :) 01:14
stanrifkin holiday names for x, y, z are rare I think 01:15
codesections Here's another Unicode puzzle for y'all: Why does the second of these match when the first doesn't: 01:49
say 'a' ~~ /<:Uppercase_Mapping('A')>/; say 'a' ~~ /<:Name('LATIN SMALL LETTER A')>/
evalable6 Nil
「a」
codesections m: say 'a' ~~ /<:Age(1.1)>/ # also matches 01:58
camelia 「a」
AlexDaniel` propdump: a 03:04
unicodable6 AlexDaniel`, gist.github.com/7a185b8941c9197b58...1111472ad8
AlexDaniel` u: aaAA
unicodable6 AlexDaniel`, U+1AAAA <reserved-1AAAA> [Cn] (𚪪)
AlexDaniel`, U+2AAAA CJK UNIFIED IDEOGRAPH-2AAAA [Lo] (𪪪)
AlexDaniel`, 31 characters in total (𚪪𪪪𺪪񊪪񚪪񪪪񺪪򊪪򚪪򪪠򪪡򪪢򪪣򪪤򪪥򪪦򪪧򪪨򪪩򪪪򪪫򪪬򪪭򪪮򪪯򺪪󊪪󚪪󪪪󺪪􊪪): gist.github.com/6bd0db277e1cef6810...5e14f81e45
AlexDaniel` whoah 03:05
not what I meant, but ok :)
6c: say 'a' ~~ /<:Uppercase_Mapping('A')>/; say 'a' ~~ /<:Name('LATIN SMALL LETTER A')>/
committable6 AlexDaniel`, ¦6c (46 commits): «Nil␤「a」␤» 03:06
AlexDaniel` codesections: I have no idea. It should match I think
interesting conversation :) news.ycombinator.com/item?id=21638145 03:09
Xliff What's the best way to find the calling ROUTINE of a method or sub? 08:16
Could use callframe(), but it's not a definite thing. It can get caught in anonymous blocks, for one. 08:17
So: "sub a { callframe(2) }" and "sub a { for ^1 { callframe(2); }" would return different results 08:18
And don't get me started on backtrace. 08:19
stanrifkin_ whats a application for binding an anonymous container? my $n = $; Why not directly use a variable? 08:57
lizmat Xliff: I don't think there's anything other than looping over callframe and looking if the frame is a Routine ?
Xliff Thanks, lizmat. That's what I am moving towards as well. 08:58
stanrifkin_ of course my $n := $; 09:02
timotimo lizmat: fwiw, rakudo calls nqp::isprime_I with a rounds parameter of 100 regardless of the size of the number; doing 100 rounds is a little bit excessive for many numbers below 9999 09:30
lizmat perhaps we should allocate a bitmap for value <= 9999 ? and check the bit? 09:31
as a constant I mean
timotimo security.stackexchange.com/questio...raphic-saf - this says "use 40 rounds", but it's for 1 kilobit big numbers 09:33
timotimo though it also says that since primes get sparser the further up you go, the number doesn't have to go higher even then? 09:33
lizmat making it 40 makes my @a = ^10000 .grep: *.is-prime more than 2x as fast 09:42
timotimo do note that we currently force numbers into bigints to do the prime test 09:44
we never do "boring" long integer math for primality testing
"Currently, the best known test with two bases due to Izykowski and Panasiuk[7] works untiln= 1 050 535 501. Hence, the best known tests forn <232havethree bases. The first such set was found by Jaeschke [8]. The best known setforn <264was found by Sinclair in 2011 (unpublished, verified by Izykowski)and has seven bases" 09:45
those aren't 232 but 2 to the 32 and 2 to the 64 09:46
ceur-ws.org/Vol-1326/020-Forisek.pdf - source
timotimo this will mean that we'll do is-prime for "small" numbers much faster, but also that is-prime ceases to be a good measure of a cpu-intensive task that we make much faster by parallelizing 10:01
Skarsnik hm, how hard is to use the test harness? I have some test but I want a main script to run them according to different condition and repport what worked/fail x) 10:30
moritz Skarsnik: there's two modules that could you with that, TAP and Test::Harness 10:45
haven't used either yet
Skarsnik I will try to give it a try tomorrow (and stubble on 2-3 raku bug like always xD) 11:04
codesections m: say 'foo'.encode('utf32'); 12:04
camelia Unknown string encoding: 'utf32'
in block <unit> at <tmp> line 1
codesections ??? 'utf32' *looks* like it should be a known encoding. It's in the registry, anyway: github.com/rakudo/rakudo/blob/mast...ry.pm6#L18 12:05
lizmat m: dd "foo".encode("utf-32") # it even normalizes it, but it looks like it is not supported at a deeper level 12:29
camelia Unknown string encoding: 'utf32'
in block <unit> at <tmp> line 1
codesections m: say utf32.new([0x66, 0x6f, 0x6f]) 13:07
camelia utf32:0x<00000066 0000006F 0000006F>
codesections m: say utf32.new([0x66, 0x6f, 0x6f]).decode
camelia Unknown string encoding: 'utf32'
in block <unit> at <tmp> line 1
codesections Interesting; a manually constructed utf32 value, can't be decoded 13:08
lizmat codesections: are you implying that reading a UTF-32 encoded file *does* work ? 13:28
codesections lizmat: no, I didn't try anything with files. I was just surprised at the failure -- given the behavior of 'foo'.encode('utf32'), I thought that utf32.new(…) might fail; if it succeeded, I thought it might be decodable 13:32
lizmat I guess it's a case of NYI :-( 13:33
codesections hmm, I guess I'll open an issue (at the very least, it should have a NYI error message). But I think I'll open an issue on MoarVM -- it looks like that's where the functionality is missing 13:40
lizmat yeah, looks like 13:46
colomon_ lizmat++ 14:22
guifa I think I’m getting the hang of webperl+Raku 15:19
It’s a little weird, classes are maintained in global scope, but subs aren’t
But I got it to now run localized exceptions messages’ code, so localizers can get instant feedback. Just need to figure out how to capture syntax errors now 15:20
[Coke] yawns 15:24
marc53 hi 15:31
i want a irc chat client for windows10 15:33
Can someone recommend one for me
I was actually exposed to IRC for the first time
timotimo are you looking for anything in particular in terms of features? 15:34
timotimo would you like a desktop program, a web-browser app, a hosted solution, something for in a terminal? 15:34
marc53 Beautiful, modern
desktop 15:35
timotimo in that case i'm a little out of my depth, but when you're searching it's good to know that you can reach irc via the matrix network as well
well, at least freenode has a bridge to matrix
marc53 i dont know how bridge
iLet me search for bridge methods 15:36
timotimo oh, you literally just give it a specially formatted channel name and matrix will put you in contact with irc 15:37
when you have a matrix client
marc53 i have gitter
timotimo if it didn't have to be a desktop app, i would have recommended glowing-bear, but it also requires a weechat to run somewhere, like on a server you own :D
many people swear on irccloud, but i think it's paid?
codesections marc53: I'm *also* 100% the wrong person to give advice here (I don't use Windows, and I tend not to like beautiful or modern desktop apps). All that said, I've heard really good things about The Lounge thelounge.chat/ 15:38
timotimo HexChat is the most popular choice on alternativeto.net, so that could be worth a try
thelounge0906 hey this isn't too bad 15:39
kiti_nomad[m] is me 15:41
i got
timotimo marc?
marc53 yes
kiti_nomad[m] i am a chinese 15:42
kawaii timotimo: I've been using irccloud for 2 years now and there's no way I'd switch to anything else
It's basically as "just works" as Discord is but for IRC 15:43
timotimo funny this topic just came up, i was just getting fed up with Ripcord and am now looking what other alternative discord clients exist 15:44
kiti_nomad[m] Some of us are newbies and we are very interested in Raku 15:45
timotimo cool!
you have come to the right place
kawaii Raku is very newbie friendly :) 15:46
timotimo please feel free to ask as many questions as you want
kawaii timo basically writes all my code for me
kiti_nomad[m] We want to communicate raku with you, but it seems that we are not good at using IRC 15:47
timotimo if discord is okay, there is a raku discord server, too
kiti_nomad[m] Discord is not available in China
timotimo OK, no problem!
there is a bot here on IRC that can run code for you 15:48
do i remember correctly that github is blocked in china?
most raku things, the compiler and many, many modules, are on github, sadly
kiti_nomad[m] In fact, the Internet is made up of three local area networks: Russia and the former Soviet Union, China, the United States and its Allies 15:50
kiti_nomad[m] Yes, almost everything, China has something similar 15:50
But GitHub belongs to Microsoft and is sometimes accessible, sometimes not.But we use our own similar products 15:52
timotimo it's annoying that github has the monopoly on code hosting in the english-speaking world :| 15:57
of course, git itself is distributed, but there's no interoperability with github issues, wiki, pull-requests, reviews, etc etc
kiti_nomad[m] The network is not a problem, the problem is that python gets almost all the attention, and very few people learn and use perl. 15:59
codesections not *quite* a monopoly! In particular, I'm really excited with what sourcehut has been doing lately. Much like Raku/Perl, it's done carefully by a small, fully open source team, which means it doesn't roll things out as quickly as a Microsoft/Google/etc project. But what it has is *really* solid
sourcehut.org/
timotimo oh? i haven't heard that name yet 16:00
kiti_nomad[m] In fact, most of the time GitHub is accessible in China, but it's not very smooth.
codesections it's 100% free software. You can run it yourself or pay for a hosted repo 16:01
timotimo when you host it yourself, does it seamlessly interact with other sourcehut installations? aka "federated"?
codesections Yeah
stanrifkin codesections: not pushed by big companies is a feature. look what happend to all things they touched..
codesections though, in fairness, most of that comes from git itself 16:02
(the federated features, I mean)
stanrifkin: Agreed!
timotimo so how do issues and pull requests across sourcehut instances work?
codesections That's probably the biggest barrier to adoption: it's mostly built around the git-send-email workflow (i.e., the way Linux/Git/etc do their development) instead of a fork-and-pr workflow. Which takes some adjustment, but is inherently federated 16:04
timotimo that doesn't sound too bad 16:05
i wonder if webmentions would fit for making all that a little bit easier
codesections (for issues, it supports both project mailing lists and repo ticket tracking. Nothing about that, even in GitHub's model, requires sharing a server.) 16:06
kiti_nomad[m] raku's official website looks very old-fashioned 16:08
But it has many modern language features
It also looks more concise than Perl in terms of syntax 16:09
codesections timotimo: the sourcehut maintainer had a blog post about a related issue (discussing ActivityPub instead of webmentions, but the same general idea) drewdevault.com/2018/07/23/Git-is-...buted.html 16:10
timotimo cool i'll read it 16:11
timotimo email is already standardised ... though of course also a frickin clusterfuck of crap 16:13
well, at least as you have someone to set up and administrate your email server for you it isn't all that bad 16:16
codesections yeah, well, the sourcehut maintainer (Drew DeVault) is *also* working on fixing that. He's pushing for better support for plaintext email (useplaintext.email/) and is the maintainer of a new TUI email client (aerc-mail.org/) 16:17
he's also the lead dev of Sway (the Wayland window manager inspired by i3). I honestly don't know how he does it all...
timotimo cool 16:18
kiti_nomad[m] zh.perl6intro.com/ 16:20
Some people have translated raku's introductory tutorial 16:21
And the quality looks very good, which is a good sign 16:22
guifa kiti_nomad[m]: we also have someone working to translate Raku’s error messages into Chinese (but zh-Hant, not zh-Hans), though it will probably be a few weeks before it’s ready
guifa pokes rypervenche
codesections haha, guifa I was just about to mention the work you've been doing to pull off the ability to have localize error messages (which is not at all trivial!) 16:23
guifa codesections: actually, once I figured out how to do it, it IS trivial. It’s just making it user-friendly for the translator is not lol 16:24
rypervenche Yep, I haven't had a chance to do much on it recently with day job and birthday happening over the weekend. I'll get back into it once I've got a little time on my hands.
codesections rypervenche: happy birthday! 16:25
rypervenche haha, thanks
guifa rypervenche: I’ve actually just about got a webinterface ready to go, and it will even have in-browser testing (via webperl) of the localized code. Should make things MUCH easier
and happy birthday!
rypervenche Ooooh, very nice.
timotimo yo happy birthday 16:27
kiti_nomad[m] good night 16:28
guifa kiti_nomad[m]: wan’an 16:29
timotimo talk to you later kiti_nomad[m]!
kiti_nomad[m] 你是哪里人
timotimo all i know to say is "nihao" and i probably have to put a _ above one of these letters 16:30
rypervenche 這裡有人多美國人和歐洲人 :) We've got people from all over. 16:31
kiti_nomad[m]: By the way, you should use this guide instead: raku.guide/zh/ 16:32
kiti_nomad[m] 这不重要,但是我不会和他们一样愚蠢得保持生活中的各种政治正确 16:33
rypervenche We shold probably keep the chat in English so that everyone can understand. :) 16:34
guifa timotimo: I cheated and looked it up ha. Would be nice to learn Chinese one day, but sadly I’ve got a few ahead of it in my list (Latin is next, because $day-job)
kiti_nomad[m] English is json/xml in language 16:36
for being
timotimo ahaha 16:37
{ "foo": [true,null,1.23, { "bar":"spam" } ] } 16:38
<object xmlns="www.xmlsh.org/jxml"> <member name="foo"> <array> <boolean>true</boolean> <null/> <number>1.23</number> <object> <member name="bar"> <string>spam</string> </member> </object> </array> </member> </object> 16:39
codesections guifa: you need to learn *Latin* for purely practical reasons? I'm shocked :D
timotimo medicine-related?
guifa I mean, I regularly read texts that are 400+ years old :-) 16:39
rypervenche language nerd 16:40
guifa does medieval and golden age Spanish literature
codesections very cool. So you're not a programmer in $day-job? Or do you program medieval literature? (either one sounds pretty awesome, actually) 16:41
timotimo ahaha, "shit" is an implementation of git in posix sh 16:42
guifa timotimo: lolol
codesections haha, I'd forgotten about that! 16:43
guifa codesections: Actually, my dissertation was all about processing transcriptions of a medieval text to diff them while preserving abbreviations, etc, and then creating a usable digital edition out of it
timotimo the codehub guy has a recording from his livestream where he implemented that on his peertube 16:43
just four hours 16:44
and fourty minutes
codesections timotimo: s/codehub/sourcehut/ 16:45
guifa and speaking of $day-job, time to go learn them kids some Spanish
codesections guifa: wow, that sounds really cool
timotimo um, yes, exactly
codesections living the dream
rypervenche lizmat: So, I know I've waited until the very last minute. JJ hasn't been around when I'm online to ask about anything that I could commit. guifa has given me something that I could create a PR for, but I imagine it's really cutting it too close. Would it be worth it to try to get that in in time for a vote with only 1 or 2 days left, or should I just wait until next year? 16:52
[Coke] got 4 people that aren't showing up in jdv's output as having permission in any of the 5 repos. 16:55
if that's about RSC voting, you need a commit bit to vote, not a commit. 16:56
rypervenche Ahh, I suppose I don't know what a commit bit is then. 16:59
[Coke] (RSC) which makes me ask - having a commit (e.g. through an approved PR) does not imply you get voting rights from that repo, right?
commit bit == permission to commit
it's about the right, not whether or not something was actually comitted. 17:00
as I understand it.
timotimo yeah, i believe this is about the right to directly push commits to a repo 17:08
which is also what you get when someone "gives you a commit bit"
rypervenche Ahh, then I guess I shouldn't have been worrying about this to begin with. 17:11
thundergnat codesections: you may also be interested in Rakudo issue R#3293 18:42
linkable6 R#3293 [open]: github.com/rakudo/rakudo/issues/3293 [docs] utf32 encode documented but not implemented
codesections thanks, I'll link the two issues 18:44
lizmat [Coke]: yeah, commit bit is what we agreed on... it would be rather late to change that rule now 18:57
[Coke] It would be fine if I listed some github IDs here that have voted but I can't find commit bits for, yes? 19:43
timotimo we're not "naming and shaming", right? 19:44
Xliff m: my $r = 'a b+ c'; my $test = 'abbbc'; say $test ~~ / <$r> /;
camelia 「abbbc」
timotimo just debugging the process
Xliff m: my $r = 'a (b+) c'; my $test = 'abbbc'; say $test ~~ / <$r> /;
camelia 「abbbc」
Xliff m: my $r = 'a (b+) c'; my $test = 'abbbc'; say ($test ~~ / <$r> /).gist; 19:45
camelia 「abbbc」
Xliff m: my $r = 'a (b+) c'; my $test = 'abbbc'; say ($test ~~ / $<o>=<$r> /).gist;
camelia 「abbbc」
o => 「abbbc」
0 => 「bbb」
jdv79 how many are there? 19:47
[Coke] timotimo: wouldn't show anything about their ballot, just their github ID to verify they are eligible. 19:50
Skarsnik timotimo, did you made a docker img or something of your profiler viewer? xD
codesections [Coke]: I don't see anything wrong with it, personally. The plan all along (as you communicated before the voting started) has been to release the github IDs of people who voted. So you wouldn't be releasing any info that would otherwise have been private -- just releasing it a bit earlier 19:52
jdv79 well, some might be embarassed they made a mistake if they truly did. but yeah there was no claim of privacy like that so i guess. 50 50 in my mind. 19:55
timotimo Skarsnik: i wanted to! but i forgot about it :( 19:56
Skarsnik: what's the best practice to offer a docker image that you can run from a folder and have access to that folder, or alternatively with a path to a file on the host filesystem that then gets exposed to the container? 19:58
Skarsnik No idea xD 19:59
timotimo how about an appimage instead? :3
Skarsnik I was not a webapp ? 20:01
[Coke] gist.github.com/coke/07f167179135f...d526d5437e - ids of people who have voted that I haven't been able to verify.
timotimo it is a webapp 20:04
the files are a little bit big, though, so i don't want to have to pump it through a web browser 20:05
and i would probably prefer if people wouldn't run it on a different machine and just access it over http
that's just me tho
Skarsnik I don't remember how it run, appname profil.txt ? 20:15
timotimo point service.p6 at the profile.sql or profile.mvmheap 20:39
guifa [Coke]: ah, then sorry I guess I shouldn’t have voted. I just had an approved PR but not a commit bit 21:09
timotimo another 8 minutes of waiting for ci to do its thing ... 21:28
MasterDuke i really would have liked to have voted for more than 5 21:30
timotimo hey, if i get the appimage thing to work, that'd be pretty cool for everybody to steal 21:32
Skarsnik I could vote on stuff, but I am not sure I follow enought stuff to make a good decision xD 21:33
lizmat Skarsnik: make the best decision you can: there are no bad decisions at this time, only in hindsight 21:35
:-)
guifa writing Raku code inside of Javascript to convert a Raku string into an escaped JavaScript string gives me horrible flashbacks of perl regex writing 21:48
so many backslashes
timotimo "updating cpan mirror" ... ... ... ... 21:51
nooooooo 21:52
Enabled fetching backends [git path curl wget] don't understand www.cpan.org/authors/id/J/JN/JNTHN/...7.5.tar.gz
is there something you'd normally install from the system on travis for zef to work? 21:53
like, can tar be missing? 21:54
Skarsnik no idea
work kinda fine on wsl2
codesections guifa: I'm kind of surprised that you can't use one of Raku's many quoting constructs to avoid the need for *too* many backslashes 21:57
also, obligatory xkcd: xkcd.com/1638/ 21:58
timotimo is "updating cpan mirror" slow because of slow json parsing? 22:08
i think that writes a slightly faster-to-parse cache file
well, something does, anyway 22:09
ummmm what on earth 22:11
i didn't change anything and it suddenly works
El_Che timotimo: sometimes travis's network shaly 22:31
shaky
timotimo oh, hmm 22:32
perhaps the fetcher failed because network trouble and i just misinterpreted it as "it didn't know what to do with a targz file"
El_Che I think so 22:33
MasterDuke timotimo: think it makes sense to make an nqp::isprime_i that uses the 64-bit algorithm in that paper?
timotimo perhaps. could also make it a "syscall" so we don't "waste" an opcode :P 22:34
whew, ZEF_PLUGIN_DEBUG has quite a bit of output :D 22:35
MasterDuke or just add a branch in MVM_bigint_is_prime? 22:37
timotimo well, in there we can have 32bit integers 22:38
signed, though
in theory, we might be able to get away with a smaller hash table, since we've only got to cover half as many numbers 22:39
MasterDuke hm. guess we could have both a branch in there that does the 32-bit version and an nqp::isprime_i that does the 64-bit version 22:40
timotimo true 22:41
for the 64 bit numbers we can also check if it's in range for 32bit as well and skip to that algorithm
MasterDuke i wonder if that'll be faster than github.com/rakudo/rakudo/pull/3923 ? 22:45
i probably should get github.com/MoarVM/MoarVM/pull/1344 finished first (and by that i mean bother enough other people who know more to find the problem)... 22:48
timotimo oh my 22:49
everything we write in C directly has, in theory, the ability to be faster than what we write with nqp ops 22:50
we'd have to see how things turn out
and for a sanity test, if most of the logic goes into moarvm, we'd probably want to have a stresstest that does sieve of erathostenes or so 22:51
not sure if that'd be tough for the first 100k integers
timotimo i can't get travis to be happy with the shell script i downloaded from the appimage repo that's supposed to do the building for me 22:56
MasterDuke there are lists of primes, why not just slurp one in an nqp test and see if the list matches a grep on the first however many integers? 22:57
timotimo dunno 22:58
MasterDuke anyway, to bed... 22:59