🦋 Welcome to the former MAIN() IRC channel of the Raku Programming Language (raku.org). This channel has moved to Libera (irc.libera.chat #raku)
Set by lizmat on 23 May 2021.
00:00 guifa joined 00:02 reportable6 left 00:03 reportable6 joined
guifa has anyone tried bundling an executable in the bin/ folder before? I'm thinking about doing it for a module to grab ome basic system stats, but I know on the Mac systems can be ... finicky at best. When zef installs, are they cleared for running normally? (also, does Windows have similar protections?) 00:15
ugexe so installing any non-raku script in bin probably doesn't work since the CURI logic for installing those adds a raku wrapper to everything github.com/rakudo/rakudo/blob/0de2...#L206-L230 00:18
00:24 swaggboi left
guifa ugexe: ah, I guess what I meant is including something to be used by NativeCall. I guess bin/ actually isn't the directory I wanted then 00:26
kybr oh yay! there's a conference (in the cloud) this week.
guifa What's the correct place to put a .so to call it with NativeCall? In a normal raku script, it'd be in the same directory, but that doesn't seem to be the case for modules 00:37
guifa swears he saw an example for this somewhere but can't find it
tonyo put that in resources guifa 00:44
libyaml has something that does it
guifa: github.com/tony-o/perl6-libyaml 00:45
guifa tonyo++ going to try that and see if I can get it to work 00:48
00:56 swaggboi joined
guifa tonyo++ that works! Big question now is how badly macOS Is going to complain 00:56
ugexe if you are generating a library you probably want to generate e.g. libfoo.so/libfoo.dynlib/foo.dll in `resources/libraries` and have an entry in meta json as `resources/libraries/foo` and access as %?RESOURCES<resources/libraries/foo> 00:59
that directory means it will translate `foo` into whatever filename it thinks is appropriate for that system
of course there is no actual `resources/libraries/foo` file, but that %?RESOURCES entry will point to the likely one 01:00
so tony-o could change those 3 entries in the meta6.json to a single `resources/libraries/yamlwrap` and reference them in code like `is native(%?RESOURCES<libraries/yamlwrap>)` 01:02
guifa oooh, that is convenient. I'm assuming there's nothing special about the directory "libraries", I could just as easily put stuff in `resources/my_fancy_native_stuff/foo`, yeah? 01:04
ugexe it is special -- that system dependant name mapping only applies to that directory 01:05
if you put those files elsewhere you need to explicitly list each file (libfoo.so, libfoo.dynlib, foo.dll)
but then in your code you then have to figure out which one of those to use from %?RESOURCES somehow 01:06
guifa Very cool
In this case, I'll probably just do the explicit one — code will be called from submodules that are very OS-specific (it's a module designed to grab system/user information, so no pretty way around it), but I'll keep in mind the resources/libraries/ trick 01:08
ugexe m: say $*VM.platform-library-name("foo".IO).basename 01:09
camelia libfoo.so
ugexe (that is the underlying mechanism of the name mapping)
guifa ugexe++ thanks! 01:11
01:56 linkable6 left, evalable6 left 01:57 linkable6 joined 01:58 evalable6 joined 02:00 cbk joined 02:04 cbk left 03:04 evalable6 left, bisectable6 left, reportable6 left, benchable6 left, statisfiable6 left, linkable6 left, unicodable6 left, bloatable6 left, notable6 left, shareable6 left, greppable6 left, quotable6 left, coverable6 left, releasable6 left, committable6 left, sourceable6 left, tellable6 left, squashable6 left, nativecallable6 left 03:05 linkable6 joined, reportable6 joined, shareable6 joined, unicodable6 joined, committable6 joined, evalable6 joined, notable6 joined, bisectable6 joined 03:06 statisfiable6 joined, coverable6 joined, bloatable6 joined, nativecallable6 joined, greppable6 joined, quotable6 joined, sourceable6 joined, benchable6 joined 03:07 squashable6 joined, tellable6 joined, releasable6 joined 04:07 linkable6 left, notable6 left, statisfiable6 left, sourceable6 left, squashable6 left, evalable6 left, bloatable6 left, bisectable6 left, quotable6 left, unicodable6 left, releasable6 left, nativecallable6 left, shareable6 left, greppable6 left, coverable6 left, committable6 left, reportable6 left, benchable6 left, tellable6 left 04:08 benchable6 joined, coverable6 joined, committable6 joined, tellable6 joined 04:09 sourceable6 joined, bisectable6 joined, statisfiable6 joined, releasable6 joined, squashable6 joined 04:10 nativecallable6 joined, greppable6 joined, evalable6 joined, notable6 joined
guifa tonyo / ugexe, after some work getting a fresh machine all ready, I found a dylib passes GateKeeper. I was legitimately a bit surprised, but nice. 04:10
04:10 quotable6 joined, linkable6 joined, unicodable6 joined, bloatable6 joined 04:11 shareable6 joined, reportable6 joined 04:16 guifa left 04:32 perlbot left 04:34 perlbot joined 05:21 aca joined, aca left 05:32 Doc_Holliwood joined 06:02 reportable6 left 06:04 reportable6 joined 06:12 swaggboi left, swaggboi joined 06:28 RaycatWhoDat left, RaycatWhoDat joined 06:35 Sgeo left 06:47 stoned75 joined 07:13 abraxxa joined 07:15 stoned75 left, abraxxa left 07:18 abraxxa joined 07:20 stoned75 joined 07:23 abraxxa left, abraxxa joined 08:01 Xliff left
xinming releasable6: status 08:32
releasable6 xinming, Next release in ≈11 days and ≈10 hours. 1 blocker. 0 out of 7 commits logged
xinming, Details: gist.github.com/4dafd260eaf7065c4d...0d7176b9d4
08:40 bartolin left, tinita left, bartolin joined 08:42 tinita joined 09:22 patrickb joined 09:51 sono left 09:53 sena_kun left
Altreus Does the/a bot have a search-the-docs plugin? 10:00
10:00 sena_kun joined
Altreus For some reason I find that less of a mental overhead than googling "raku [subject]" 10:01
SmokeMachine do anyone know if its still possible to buy tickets to the conference in the cloud? 10:03
MasterDuke Altreus: yes and no. there's no specific functionality for searching just the docs, but i think (an old version of) the docs repo is searched by greppable
lizmat clickbaits rakudoweekly.blog/2021/06/07/2021-...ing-funky/ 10:50
Altreus deja vu 10:51
11:00 linkable6 left, evalable6 left 11:02 linkable6 joined
El_Che I know now why lizmat's butterfly was broken on twitter :) 11:02
lizmat yeah, it was going too fastly :-) 11:03
11:03 evalable6 joined
El_Che something like that :) 11:03
weird how all is interconnected
single point of failure is fun
lizmat well, NCD is just an anagram of CDN 11:04
as in No Content Delivery :-) 11:05
11:05 Doc_Holliwood left 11:10 yewscion joined 11:14 yewscion left, yewscion joined
tbrowder howdy 11:19
i want to pass all args from one signature to a sub signature 11:20
without exhaustively multying it, what form of slurpy wik 11:21
will cover everything? 11:22
something like "(*%) { foo(!%_) }"? 11:23
:(*%a) { foo(|%_) } 11:24
or do i need to know more about the original signature? 11:25
11:27 yewscion left
tbrowder lizmat: i'm trying to allow my DateTime child class to instantiate with the normal DateTime new signatures. i think i need to have at least two multi new methods: one with the currently working new signature, and one ideally the catchall for the native DateTime new signatures. 11:30
lizmat well, generally, one would do sub a(|c) { b(|c) } where "c" is just a name for a capture, could be anything 11:37
11:55 sena_kun left, sena_kun joined
tbrowder that's what i came to report! it was as simple as adding ", |c" to my new method and then calling self::new(|c) inside, not even a multi needed! 11:55
thanks, docs need a tweak in the subclass area. current descrip is kind of hidden in capture portion, needs to have a simple sample for pluggers with limited memory banks ;-D 11:57
12:02 reportable6 left 12:03 reportable6 joined 13:03 committable6 left, quotable6 left, sourceable6 left, greppable6 left, bloatable6 left, notable6 left, tellable6 left, bisectable6 left, coverable6 left, statisfiable6 left, reportable6 left, linkable6 left, unicodable6 left, benchable6 left, squashable6 left, releasable6 left, shareable6 left, nativecallable6 left, evalable6 left 13:04 tellable6 joined, unicodable6 joined, reportable6 joined, greppable6 joined, coverable6 joined, committable6 joined 13:05 sourceable6 joined, shareable6 joined, notable6 joined, squashable6 joined, bisectable6 joined, releasable6 joined 13:06 evalable6 joined, quotable6 joined, bloatable6 joined, linkable6 joined, nativecallable6 joined, benchable6 joined, statisfiable6 joined 13:23 b2gills left 13:38 guifa joined 13:49 b2gills joined 13:59 guifa left 14:25 dakkar joined 14:37 Sgeo joined 14:53 AlexDaniel left, CIAvash left, tyil[m] left, ComplYue[m] left, demostanis[m] left, juanfra left, juanfra joined 14:55 demostanis[m] joined, AlexDaniel joined, tyil[m] joined, ComplYue[m] joined, CIAvash joined 14:57 RandalSchwartz joined
RandalSchwartz I forget…. how do you use a unicode variable name in Perl6 if you don't have an extended keyboard?  Can you do something like $\u{…} ? 14:57
14:58 sena_kun left, sena_kun joined
nine RandalSchwartz: depends on your editor, how you insert those characters 15:01
RandalSchwartz trying to grok docs.raku.org/syntax/identifiers 15:02
15:02 monkey_ joined
RandalSchwartz maybe I can say $<\u…> ? 15:02
jdv m: say "\c[WHITE SMILING FACE]" 15:04
jdv like that?
search unicode on the docs site? 15:05
dakkar jdv: that works in values, not (necessarily) in identifiers 15:06
nine While that gives you something to copy and paste, it does get tedious quickly
jdv oh i see
lizmat m: my $a = 42; say ::("\$\x61") # RandalSchwartz something like that ? 15:07
camelia 42
dakkar but really, get a better editor 15:08
lizmat m: my $a = 42; say ::("\$\c[LATIN SMALL LETTER A]") # or like this RandalSchwartz 15:09
camelia 42
dakkar (in emacs, `ucs-utils-ucs-insert` works as a near-last resort)
jdv that's pretty ugly
lizmat RandalSchwartz: also, it's called Raku nowadays :-) 15:10
jdv m: my $☺; 15:11
camelia 5===SORRY!5=== Error while compiling <tmp>
Name must begin with alphabetic character
at <tmp>:1
------> 3my $7⏏5☺;
expecting any of:
infix stopper
jdv m: my $a☺;
camelia 5===SORRY!5=== Error while compiling <tmp>
Bogus postfix
at <tmp>:1
------> 3my $a7⏏5☺;
expecting any of:
infix stopper
statement end
jdv m: my $a\☺;
camelia 5===SORRY!5=== Error while compiling <tmp>
at <tmp>:1
------> 3my $a\7⏏5☺;
expecting any of:
jdv oh, mine spits out "Confused"
lizmat jdv: emojis are not made of the right unicode elements :-)
jdv oh there it is - i just can't read
ha 15:12
but what if i really want a happy variable?!
RandalSchwartz Ahh, so it's not any unicode. I mis-membered. 15:13
jdv m: my $Ǣ = 123; say $Ǣ; 15:16
camelia 123
jdv haven't had the inkling for unicode in identifiers yet. neat though. 15:17
RandalSchwartz wow… imagine accurately getting unicode from IRC to a bot and back. :) 15:19
Altreus I don't have that kind of brainpower 15:20
15:20 Scotteh joined 15:35 patrickb left 15:40 stoned75 left, cbk joined
gfldex m: my $container; constant term:<$☺> := $container; say ++$☺; 15:41
camelia 1
dakkar gfldex: cheat 😜 15:42
gfldex m: constant term:<$☺> := $; say ++$☺;
camelia 1
masak RandalSchwartz! \o/ 15:53
RandalSchwartz: I don't think I've ever been in here at the same time with you, so let me just take the chance to say this: I'm a big fan of the Schwartzian transform :+1:
RandalSchwartz: I hope you are aware that it was made the default in Raku's `.sort` 15:54
tonyo now i have to start calling him marlin so his head doesn't get too big masak 16:07
masak tonyo: the nice thing though is that you can still sort all the heads by size without unnecessary computation 16:08
RandalSchwartz thank you. 16:12
how is it "the default"? does it cache the key computation somewhere? 16:13
MasterDuke RandalSchwartz++ great books
masak yes, .sort accepts a unary function, and then it caches
RandalSchwartz I'm all-in on Dart/Flutter these days. Far more practical than (and almost as powerful as) modern Perl and Raku. :) 16:14
oops… wrong shortcut
Altreus almost :) 16:15
RandalSchwartz it's quite a change coding in a strongly typed, sound-null-safety language. 16:16
but i'm liking it.
masak it can be really nice. I recognize that feeling from TypeScript.
RandalSchwartz And it has the things I admired about Perl6 design…. lazy lists, everything is a real object, etc.
TypeScript is still only a thin verneer over javascript. 16:17
there are still 7 ways to say true, and 5 to say false.
masak ah, you would say that, being a Dart aficionado :) but it does fix many of the same issues, I believe
not out to prove it to you, though ;) 16:18
RandalSchwartz In Dart, like Smalltalk before it… there's precisely just "true" and "false", and anything else "used as a boolean" throws.
masak that's nice ;)
in a way, it's great to meet someone who's a convinced Dart user. haven't really done that before 16:19
Altreus Hmm if I were going to learn a language with such strong compilation requirements I'd use Rust
RandalSchwartz Been using it since the early releases. Even gave a talk on it in 2015.
Altreus Having said that, I have no experience with Dart
Not even any exposure 16:20
RandalSchwartz dart.dev is quite thorough. I was going to write Learning Dart, but I didn't want to work for minimum wage again. :)
masak Dart doesn't strike me as a language I'd prefer. but I mean that in a "lack of evidence" way, not in an "I know why not" way
the tooling has something to be said for it. I know they've been toying around with ML-based code completion, for example 16:21
RandalSchwartz it's an unassuming language. meant to be familar, but also having the goals of efficient conversion to both machine bytes and JavaScript.
for example, no resumable contexts because JS can't do that. 16:22
I miss that about Smalltalk.
masak RandalSchwartz: hm, isn't that a bit of a rewrite of history, though? Dart was launched as an alternative to JavaScript, but it ended up compiling to it just like everything else
because nothing can kill JavaScript
[Coke] any pointers on sanitizing output from a run() command on windows to avoid Malformed UTF-8 error? 16:23
RandalSchwartz partly true. the truth is between my story and yours. :)
the main goal was "how do we get away from Java for GWT"
because the big Oracle showdown had high risk. 16:24
thankfully now settled by the SCOtUS
masak oh, parts of that I didn't know
RandalSchwartz It's public, and partially from watching the history for a long time. 16:25
I *am* under an NDA. I can't tell you I've heard internal stories, or what they say. :)
masak but... I didn't dream up the leaked memo, and the "secretly, we'll be working on our own language", and that didn't quite pan out that way
RandalSchwartz it may also be partly responsible for "why fuchsia" 16:26
as in "can we do android over, and leave out the oracle-fight-inducing parts?"
masak [Coke]: no direct pointers, but there totally should be a way to safely decode UTF-8
[Coke]: curious -- in your use case, what should be the appropriate action when a decoding error is encountered? 16:27
RandalSchwartz send an email to the POTUS! 16:28
masak .oO( well, that escalated quickly ) 16:29
[Coke] masak: got there- was just complicated finding the right spot to say "give me the output of this in binary" so I could decode myself. 16:30
RandalSchwartz at least this president might actually read them!
Altreus Flutter is presumably a framework for Dart?
RandalSchwartz: Because he is actually literate?
RandalSchwartz yes, it's a UI SDK
masak [Coke]: great -- we should lobby for a non-complicated solution, though 16:31
[Coke] masak: in my case? I really just don't care about the part of the output that's wrong. Trying to get the output from 'nuget list <some thing>' to give me the one line I care about, and that one line is fine (and sadly cannot get nuget list to NOT give me too much)
masak [Coke]: or if there already is one, work to make it more findable :)
[Coke]: interesting
[Coke] masak: maybe something like .slurp(:close,:utf8-c8) instead of .slurp(:bin,:close).decode('utf8-c8') 16:32
masak [Coke]: so it's kind of "just put those `?` thingies on the parts you can't decode"
[Coke] but it's fine, just trying to get this script done so I can do my job. ;)
masak :D
'night, #raku
[Coke] masak: yup. I'm effectively doing "nuget list packagename" | grep "\bpackagename\b", so I don't care about any other line 16:33
also: hey, RandalSchwartz.
also my cat: mao. mao? mao! mao.
16:36 b2gills left, b2gills joined 16:41 GreaseMonkey left, dg left, tonyo left, ingy left, _________ left, jdv left, jdv_ joined, greaser|q joined, dg joined, _________ joined, tonyo joined, _________ left, _________ joined 16:45 monkey_` joined 16:46 monkey_` left, monkey_` joined, monkey_ left 16:47 monkey_` left 16:48 _________ left
tonyo [Coke]: you might try doing the `run` with :bin mode and encoding to utf8 manually 16:49
16:49 monkey_ joined
tonyo s/encoding/decoding/ 16:49
16:50 _________ joined
codesect` Altreus: I'm a fan of Rust. imo, it's a good complement to Raku -- I like Raku enough that pretty much the only reason I'd want a different language is if Raku isn't fast enough for the task 17:06
Altreus Yeah I really want to be able to work in any language that has sufficient compile-time reasoning that it can tell me I'm being stupid before there's even a binary to test 17:12
gfldex moritz: Did the folk at Apress told you they do typesetting? 17:13
17:46 holly_ left, RaycatWhoDat left, holly_ joined, RaycatWhoDat joined 18:02 reportable6 left 18:04 reportable6 joined 18:09 abraxxa-home joined
ugexe [Coke]: `run` has an `:enc` param you could probably pass 'utf8-c8' 18:13
[Coke] ugexe: ah, thanks. it's in the signature in the docs, but not in the body of the docs. 18:26
Now I'm stuck on conditional formatting in excel. Curses. :) 18:27
18:30 Doc_Holliwood joined 18:32 greaser|q left, greaser|q joined, greaser|q is now known as GreaseMonkey 18:59 hankache joined 19:15 hankache left 19:17 pierrot left 19:18 pierrot joined 19:27 monkey_ left 19:53 codesect` left 19:54 codesections joined 19:57 sono joined 20:02 dakkar left 20:27 jdv_ is now known as jdv 20:50 monkey_ joined, cbk left 20:54 thundergnat_ joined
thundergnat_ . 20:54
tellable6 2021-06-03T11:02:08Z #raku-dev <lizmat> thundergnat that looks like a bug, could you make an issue for it?
2021-06-03T12:57:44Z #raku-dev <lizmat> thundergnat github.com/rakudo/rakudo/commit/89fd8a8df8 tests would be appreciated :-)
hey thundergnat_, you have a message: gist.github.com/a0ff56f709de2c7210...b9d32a5318
thundergnat_ bisectable6: old=2020.01 new=HEAD gist.github.com/thundergnat/77676d...e25e55ce92 20:57
bisectable6 thundergnat_, Bisecting by output (old=2020.01 new=0de28ae) because on both starting points the exit code is 0
thundergnat_, bisect log: gist.github.com/0c6ab86885a818fa2d...7c1d4ab394 20:58
thundergnat_, (2020-01-26) github.com/rakudo/rakudo/commit/0c...05f29654bc
thundergnat_ lizmat++ 21:00
.tell masterduke (search Rosettacode) There isn't really an easy way for the general public to do so. I went through and grepped out all the easy Perl 6 references, but a few still linger. 21:02
tellable6 thundergnat_, I'll pass your message to MasterDuke
thundergnat_ .tell masterduke: especially in the discussion pages. I was very hesitant to modify those as it is rewriting history. 21:03
tellable6 thundergnat_, I'll pass your message to MasterDuke
MasterDuke thundergnat_: yeah, i wouldn't change discussion 21:04
21:06 holly_ left
jdv did leont just do something like $list.grep(:is-prime)? i lost the slide in my memory. 21:06
21:07 holly_ joined
lizmat .grep(&is-prime) ? 21:09
jdv i think it had a colon and its why it stuck out to me 21:12
hopefully we'll get slides eventually
thundergnat_ m: say ^100 .grep: &is-prime 21:14
camelia (2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)
21:16 holly_ left
leont jdv: there was a syntax error in there though, I should have double checked that. 21:16
It should have been @list((:is-prime)), because otherwise it's a named argument.
If I had double checked that I probably wouldn't have included it, oh well. 21:17
jdv that still looks odd to me. how is that working then? 21:18
leont @list.grep((:is-prime)) equals @list.grep(*.is-prime) 21:19
and @list.grep((:!is-prime)) equals @list.grep(!*.is-prime)
jdv i'm not sure i've seen (:foo) mean *.foo - is that doc'd? 21:21
codesections m: say ^10 .grep: (:is-prime)
camelia (2 3 5 7)
codesections huh, I didn't know about that syntax. Neat!
japhb Woah, that's a new one on me too. 21:24
jdv i know! where did it come from?!
codesections I think the point is that it didn't come from anywhere -- it's not a special case, just a consequence of the smartmatch semantics 21:25
leont Someone blogged about it recently, I didn't know about it until then either 21:28
jdv i'm not seeing it. 21:29
japhb m: say (:is-prime).ACCEPTS($_) for ^10
camelia False
japhb Well I'll be darned. 21:30
Looks like it's here: github.com/rakudo/rakudo/blob/mast...ir.pm6#L59 21:31
jdv ok then:) 21:33
lizmat This is the reason: docs.raku.org/type/IO::Path#File_test_operators 21:35
[Coke] I feel like while it was intended for those specific tests, it was not intended to include arbitrary methods/subs 21:38
japhb One use I can see for that is to make it simpler to do the code behind interfaces where users can choose to include or exclude matches. Because then you can do .grep((:is-prime($include-primes)))
[Coke] Do we have any roast that allows something like :is-prime there instead of :d ?
jdv lizmat: thanks. now its starting to make sense to me. 21:42
lizmat [Coke]: I would be surprised
fwiw, I think this feature is more on the scale of WAT than DWIM
jdv still feels like a wat though 21:43
leont almost left it out, perhaps I should have
lizmat yeah, I think it's a case of premature optimization
leont was very content with finding the Euclidian distance example. It's a real life algorithm that showcases 3 different kinds of meta-operators quite well 21:49
sqrt [+] (@a Z- @b)»²
jdv just watched the watman thing again - thanks leont 21:51
21:54 swaggboi left
[Coke] leont: nice. 22:09
22:18 gfldex left 22:34 abraxxa-home left 22:40 Doc_Holliwood left 22:44 holly_ joined 23:15 monkey_ left 23:25 lucs joined 23:35 gfldex joined 23:53 frost joined