🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). This channel is logged for the purpose of keeping a history about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Logs can be inspected at colabti.org/irclogger/irclogger_log/raku
Set by lizmat on 1 May 2021.
moon-child irc is older than unicode and utf-8 00:32
leont And http 00:33
moon-child how come there's no utility function to pipe a string to a command get its output and code? It's only like 4 lines, but would be really convenient to not have to write every time 00:34
canbenshanlo general noob question: why is EVAL in raku so much slower than in ruby, for example? seeing something like 35s vs 12ms for the same task in both languages while evaling thousands of individual expressions. Is raku fireing off a huge machinery behind the scenes for each and every EVAL? 00:35
tellable6 2021-05-15T02:50:47Z #raku <tonyo> canbenshanlo you're likely hitting an issuer with the scheduler filling the pool and blocking the main loop, look at $*SCHEDULER.max_threads and don't hit that limit, see if that fixes your issue.
canbenshanlo oh, good to know. $*SCHEDULER.max_threads is 64, way below my requirements. reimplemented it in ruby and their new ractors, no issue so far 00:36
leont In general, compilation is Raku's performance weak spot 00:40
And EVAL is obviously doing lots of compilation
ugexe RAKUDO_MAX_THREADS env var can change the max threads 00:41
japhb canbenshanlo: Rakudo uses a thread pool model. max_threads is how man *operating system* threads it will max out at (and that number is configurable), but it can have an arbitrary number of tasks waiting for those threads.
*how many
"its output and code"? You mean return code? 00:43
moon-child yeah
japhb Ah. If you want to have something super convenient, write your utility function, and throw it in a module. You can even have a personal module e.g. Moon-Child::Utils, and load that at the top of your programs. 00:44
raydiak raku has an extremely broad dynamic range, lots and lots of syntax. additionally, the syntax is extensible. because of these things, the parser has to be fairly hefty, and can make far fewer assumptions than most languages. on top of that, the raku parser is written in raku (vs ruby which is entirely implemented in C from what I understand). we usually get around the slowness by precompiling to bytecode, but of 00:45
moon-child one line is still more than zero! :)
raydiak course there is no persistent precomp cache for EVALd strings
b2gills The RakuAST should make it possible to make EVAL faster as it might not have to fully compile the code before running it 00:46
canbenshanlo thanks, everyone, for the explanations! will keep reading the weekly and hoping for more news on the perf front. 00:49
raydiak of course! I am curious, what is your use case for evaling thousands of expressions? other than as a synthetic benchmark, that sounds...concerning :) 00:54
canbenshanlo raydiak: "the syntax is extensible" -- how so? is that similar to common lisp's reader macros where i can overwrite the evaluation of tokens while compiling?
oh, i'm just doing advent of code in raku; my way of learning a new language
raydiak oh, cool
canbenshanlo input has a bunch of these expressions feeding a small register machine: "k inc 303 if k > -8" 00:56
a bit of gsub/trans and you are good to go to EVAL the whole damn thing
raydiak I'm not familiar enough with lisp to compare, but you can define your own terms and operators, for example. with a slang you can do more than that, I believe it hooks directly into the main grammar so you can add or redefine grammar rules 00:57
canbenshanlo ah, just found this, sounds interesting: perl6advent.wordpress.com/2013/12/...16-slangs/ 01:00
will read more into it later
thanks!
raydiak you're welcome :)
raydiak m: sub postfix:<!>(Int:D $n where * > 0) { [*] 1..$n }; say 4! # simple example of a user-defined factorial syntax, just for fun 01:08
camelia 24
canbenshanlo yeah, familar with that, but way more intrigued about the slang grammer redefinitions. will get into it tomorrow when i have some downtime 01:23
raydiak I mean it more as just one small example of extensibility in answer to your question about slowness. think about what that kind of thing requires in terms of parser complexity. much of the core syntax is implemented the same way. where a usual parser can just look for a static set of symbols in certain positions and infer a certain semanic, raku's parser has to do substantially more dynamic magic. it doesn't 01:35
know that syntax until after it parses and compiles the definition (which in this example is even in the same compilation unit as where it's being used)
raydiak looks back at his advent article and cringes 01:59
canbenshanlo while ruby has no syntax altering capabilities like that, it still has its fair share of dynamic magic. guess time will tell how people will wield all this additional hundred-year-language power that brings more complexity to the table. reader macros weren't really used all that much in the glory common lisp days
then again, racket peeps have the time of their lives with the lang support 02:00
raydiak
.oO( shoulda just called that article "how to abuse classes and alienate professionals" )
yeah honestly I don't know very much about ruby either, I can't give you a good comparison of their respective strengths and weaknesses 02:01
I recall ruby having perl-like sigils and everything is an object. that's most of what I know about it besides skimming the wikipedia article 02:03
so far, slangs haven't seen a lot of use that I'm aware of. most of modules.raku.org/search/?q=slang look like toys/experiments more than being meant for serious use. the Slang::SQL being one obvious exception. the potential is there to do some really cool stuff, though 02:09
canbenshanlo ruby has @class-instance, @@class-static, $global and &block sigils and such, but it's mainly plain old identifier. oh, and don't forget smart-matching. some of these ruby-to-raku translation basicially means adding a few raku sigils here and there and rename some methods. other times i'm struggling more when i'm seeing surprising console output and can't, for the love of me, identify the problem, because raku behaves "wierdly" 02:10
skimming over the slang-sql examples, that looks similar to what some racket peeps are cooking up with their custom language support. will get into that tomorrow, brain is fried today 02:14
raydiak I imagine translating between similar-looking languages with different semantics being rather confusing at times 02:15
canbenshanlo sure, in a major project perhaps, but i'm just toying around with small scripts, no problem here. and ruby is surprisingly perl-like in some aspects, easing the transition 02:17
raydiak makes sense. I read somewhere that perl was one of the larger influences/inspirations of ruby 02:26
japhb moon-child: It's only one new line the very first time you use something in it. Then it becomes "free" to add to it, because it's just your personal util collection.
canbenshanlo and by "weirdly" i mean stuff like this, that catches me off-guard every now and then while translating a solution over to raku 02:33
ruby: a = (1..5).to_a; b = {}; b[a] = true; puts b; #=> {[1, 2, 3, 4, 5]=>true} 02:34
m: my @a = (1..5); my %b; %b{@a} = True; say %b
camelia {1 => True, 2 => (Any), 3 => (Any), 4 => (Any), 5 => (Any)}
raydiak ah...yes our hashes are keyed by strings by default 02:37
m: my @a = (1..5); my %b{Any}; %b{$@a} = True; say %b 02:38
camelia {[1 2 3 4 5] => True}
raydiak and the subscript is a list context, for slicing. so you have to itemize if you don't meant to taking a slice 02:39
raydiak slicing is a really nice feature, though 02:40
m: my @a = (1..5); my %b; %b{@a} = "a"..*; say %b 02:41
camelia {1 => a, 2 => b, 3 => c, 4 => d, 5 => e}
guifa2 raydiak: indeed, slangs are going ot be very cool. I have a pretty crazy slang I've been working on, but I'm waiting until RakuAST to finish off my work because I don't want to have to duplicate a lot of stuff 02:42
raydiak really nice that is, except when that's not what you meant to do :)
guifa2 Anyone have any idea what "Frame has no lexical with name '$_'" might mean as a runtime error? 02:43
What triggers it is adding a method to a class via a trait 02:44
raydiak guifa2: I look forward to seeing this very cool thing. last I heard we were *hoping* rakuast might be merged Q4 this year 02:45
guifa2 raydiak: it's a binary and object (two separate slangs, really) regex
raydiak oh, neat. I can see that being useful in several places 02:46
can you pastebin your problem? I have no idea off the top of my head, but I'd poke at it if you have a small example of the failure
disclaimer: I'm being told it's almost dinner time 02:55
canbenshanlo raydiak: there's no sexy slicing like that in ruby, instead you would do the following to achieve the same: a = (1..5).to_a; b = {}; b.merge a.zip('a'..).to_h 02:57
alright, enough for today; bed time 02:58
thanks for your time!
tyil raydiak: re: Libera, the Perl mods are more politically involved in the move, so they're putting more hurry on it, however, there's no Matrix bridge (yet) for instance, which is something we probably want since some people in our community only use Matrix, and I don't want to shut them out over some petty staff politics 06:44
tyil moon-child: a Proc contains both the output and exitcode as attributes, what more do you need? 06:56
moon-child my $x = run 'foo', :in, :out; $x.in.spurt: 'whatever', :close; ($x.out.slurp, $x.exitcode) 07:02
$(foo <<< 'whatever'); $?
I know which one I'd rather write
raydiak fair enough. not having used matrix personally, I had assumed that was a simple matter of switching some config on our end to point to libera instead of freenode. reading up on it now, I see that I was mistaken 07:03
tadzik it's a bit more involved since the config is on on our end ;) 07:04
tyil the 2nd one is also in a language made for exactly the purpose of running other programs 07:05
(also note that it's not portable across shells)
raydiak that's what I gathered from github.com/matrix-org/matrix-appse...ssues/1324 among other things I'm skimming. thanks for the clarification 07:06
tyil the Libera and Matrix folk are working on it, but there's no schedule yet since it's a little hectic there
raydiak I can only imagine 07:07
moon-child sure. It's not a big deal, I'm just saying it would be slightly convenient to have a builtin way of running programs that's not 4 times as verbose as the equivalent shell 07:08
tyil one of the goals of Raku was to no longer use "cryptic" variables like $?, which you can find in Perl 07:10
and as japhb said, you can make your own modules for these kinds of optimizations, which I think are quite rare to use in full-fledged programs 07:11
fwiw, you can even make it into a slang
moon-child ah, is that what $_ and $/ and $! are for? :)
tyil $/ is rarely used (I hope, at least, since you can use $<name> instead), $_ is a topic variable, which isn't needed as much either 07:12
I don't think I've used $! yet
you can nitpick all you want, ofcourse 07:13
but the fact stays that Raku is not a shell language, and trying to make it one will come with sacrifices elsewhere
you can obviously still make a module to tweak it in whatever way you need
raydiak I agree that we don't want shell syntax for it, but a convenience function in core doesn't seem like such a terrible idea. simply take the command and optional input string as arguments (maybe some other optional args borrowed from run, with sane defaults), and return an object with out and err as strings and the exit code. no pile of adverbs and spurting and slurping and multiple statements. it's an extremely 07:51
common use case that does feel more complicated than it ought to be
El_Che "petty staff politics"? weird phrasing for the taking over of a network 10:08
Voldenet seems like petty staff politics tho freenode.net/news/freenode-is-foss 10:28
El_Che yeah, that's the guy who did the hostile takeover 10:32
Voldenet since I can't do anything, I'll just treat it as natural disaster 10:36
El_Che that's the thing. People moved to libra and oftc 10:50
nine raydiak: my personal take on this was like: use Native::Command; sub ls($dir?, :$l, :$help) is command { * }; ls('lib', :l).out.lines 11:15
And of course those command helpers could be put into modules and shared 11:16
leont That is kind of cute, yet 13:30
*yes
canbenshanlo what's the reason behind this not working the same as the following two? 14:36
m: .say for <abc def xy yz>.categorize(*.chars).max.value
camelia [abc def]
canbenshanlo m: <abc def xy yz>.categorize(*.chars).max.value.map(*.say)
camelia abc
def
canbenshanlo m: .say for <abc def xy yz>.categorize(*.chars).max.value.List 14:37
camelia abc
def
canbenshanlo why isn't for iterating over the individual array values when it does so with @foo?
thundergnat canbenshanlo: The first is returning a single item (an Array), the second explicitly iterates over the returned array and the third is returning an already flattened List. 14:42
m:.say for flat <abc def xy yz>.categorize(*.chars).max.value 14:43
evalable6 abc
def
thundergnat ^^^ if you flatten the Array it iterates over it
canbenshanlo hm, so Arrays and @arr are different then. guess i have to go over the docs again. thanks! 14:45
thundergnat You may also be getting confused by the single argument rule 14:46
m: my @foo = <a b c>; my @bar = <D E F>; .say for @foo; .say for @foo, @bar; 14:47
camelia a
b
c
[a b c]
[D E F]
thundergnat When you feed a single collective argument, it treats it as a collection and iterates over it, but when you feed multiple collective arguments, it treats each as a single "element" unless explicitly flattened. 14:49
It's a little confusing but it allows for syntax that was heavily ingrained in the Perl installed base. 14:50
Without it, something like this wouldn't work as expected: 14:52
canbenshanlo erm, stupid questions: why is the above arrary (single item, as you said) not treated as a iterable then?
thundergnat m: my @foo = <a b c>; my @bar = @foo; .say for @bar;
camelia a
b
c
thundergnat m: my @foo = <a b c>; my @baz = <D E F>; my @bar = @foo, @baz; .say for @bar; 14:53
camelia [a b c]
[D E F]
canbenshanlo hm, guess i get it. still strange coming from ruby where the above "just works". thanks! 14:56
thundergnat In that above case, the .say method has explicit candidates for both scalar (single) values and for Arrays. categorize returns an array. (In this case it only holds one item)
Single argument rule is sometimes confusing, but it makes other things "just work" 14:57
Opps, cut my thought short. categorize returns an array of arrays 14:58
vrurg categorize returns a Hash. Not an array. 15:00
m: say <abc def xy yz>.categorize(*.chars)
camelia {2 => [xy yz], 3 => [abc def]}
vrurg Apparently, Hash and Array behave differently when iterated over. 15:01
lizmat Hash produces pairs when iterated over
vrurg canbenshanlo: when you get into such kind of situation, try unwinding the method call chain back up to the common point of two chains. And then introspect the data you get. .WHAT/.WHICH/etc. 15:02
canbenshanlo well, what's returned is an array 15:04
m: say <abc def xy yz>.categorize(*.chars).max.value.WHAT
camelia (Array)
canbenshanlo that's why i am confused
not the intermediate steps
vrurg m: say <abc def xy yz>.categorize(*.chars).max.value.raku 15:05
camelia $["abc", "def"]
thundergnat actually .max returns a pair whose value is an array
vrurg is absolutely correct and I was wrong (should have reviewed the docs before speaking) .categorize returns a hash 15:06
vrurg canbenshanlo: Also, notice the $ before [. It means you array is itemized. I.e. for considers it a single element. 15:07
say <abc def xy yz>.categorize(*.chars).max.value.VAR.^name
evalable6 Scalar
vrurg say <abc def xy yz>.categorize(*.chars).max.value<>.VAR.^name
evalable6 Array
vrurg canbenshanlo: See the differnce. And then:
m: .say for <abc def xy yz>.categorize(*.chars).max.value<> 15:08
camelia abc
def
vrurg Or, another way, though somewhat slower:
m: .say for <abc def xy yz>.categorize(*.chars).max.value.List
camelia abc
def
vrurg is afk& 15:08
canbenshanlo yeah, that's what i gathered from the exchange with thundergnat. but good to know about this representation: $["abc", "def"] 15:11
thanks!
frost Is there a log for this channel now? 15:44
raydiak I haven't seen one yet; wouldn't be surprised if we waited until the move is official rather than logging both in parallel 15:52
nine: I think that's a really cool thing, though a bit sideways from what I was hoping for. having to predeclare a command or use a module kinda ignores the whole "there is no concise way in core to do this common thing" aspect, and overlooks the input part of moon-child's original point
my original suggestion forgot about passing args because it was late, but I was thinking something like command('cat', 'hello world').out or command('cat', '-n', :in<hello world>).out
note the .out is a string
ugexe i think something with potentially a lot of edge cases doesn't always make a great thing for a core 15:53
not to speak to this case specifically, but perl seems to have many ways of spawning a process each with their own warts 15:54
raydiak I could totally be oversimplifying things in my head. would you mind illustrating some failing edge cases in my proposal? 15:57
ugexe let me put it another way 15:58
why dont we have IO::Capture in the core?
which also solves this problem but just not having to use .out at all? 15:59
s/but/by/ 16:00
as far as edge cases i would initially explore aspects of a) it being based on proc::async and b) pipe buffers 16:01
well, buffers in general rather 16:02
personally a third way to spawn processes in the core is not of interest to me 16:04
raydiak io::capture::simple (I don't see an io::capture on modules.raku.org) doesn't seem to be documented. can you get the output and exit code from one calling statement? 16:05
ugexe what happens if you have to use two statements?
raydiak wrt piping, I'm not really trying to cover that, just provide a shorthand for the common use of "call a thing and get it's output but also be able to check the return code"
ugexe thats a rhetorical question btw, im just pointing out i dont find that a good argument 16:06
my $exitcode; my $output = Capure { $exitcode = run("ls").exitcode }; # it would look something like this i imagie 16:07
ugexe dont let me stop you from exploring this though 16:09
andinus m: my $x=2; my $y=1; my $z = $y = $x + 9; say "x $x y $y z $z" 16:11
camelia x 2 y 11 z 11
andinus how does this work? 16:12
raydiak apparently there is some io::capture (not ::simple) that isn't listed on the modules website? anyway, I am seeing a lot of resistance to putting something like this in core, and am already running a bit late, so I'm going to let this boulder roll back down the hill and leave it there for now :) could see it becoming a small easy module though
tobs assignment is right-associative. It is executed as $z = ($y = $x + 9). The assignment to $y modifies $y and returns the assigned value. 16:13
ugexe sorry its been so long since ive used it but it was IO::Capture or IO::Capture::something originally by sergot
andinus m: (my $y = 1)
camelia ( no output )
andinus then shouldn't this throw an error? because assignment returns the assigned value? 16:14
raydiak I can't find it, will look more later. really do have to run for now, but I appreciate your input!
tobs you just ignore the value, that's not an error
andinus m: my $x = 1; $x;
camelia WARNINGS for <tmp>:
Useless use of $x in sink context (line 1)
andinus ^ this eror, useless use ?
tobs that's a warning, not an error, but presumably declaring the variable with `my` prevents it 16:15
m: say my $y = 1 # it still returns the value, though 16:16
camelia 1
ugexe github.com/JJ/raku-io-capture-simp...t/stdout.t 16:20
andinus i see
nine raydiak: about RSC discussions vs. the minutes I can honestly say that you're not missing out on anything. Of course the minutes don't cover every spoken word, but those words are simply highly redundant. 17:14
It's a bunch of people discussing the matters stated in the minutes. So most of it is just people trying to find the right words to get the intended meaning across. And we catch the meaning into the minutes 17:15
lizmat frost: I'm keeoing a private log that will make it somewhere eventually 17:16
*keeping
japhb raydiak: Not so much a deep resistance to core, but more wanting to vet that it's really the use case we want to aim for, and broadly applicable. Just last week, I wanted something similar, but then I realized I also wanted to display the command I was about to run (for debugging purposes), and I wanted to exit the main program with errors if I got the wrong exit code, so it turned into needing a bespoke 17:22
helper function anyway.
Altreus kawaii_: :v 18:42
why your nick broke
kawaii_ got sniped by squatter
sent mst a message about it earlier
Altreus squatted 18:44
you should get a real nick like me
[Coke] Or you can adopt the []s, as I was forced to 18:56
Altreus if you use {} we can make an embrace joke 19:11
it would put you in a whole different bracket
kawaii_ absolute heresy 19:12
codesect` . 19:47
raydiak nine: I'll keep that in mind, though I still don't see a reason not to make the logs available. it's literally just a minute or two of effort for someone to copy their log and toss it up on github (stipulating the hopefully very rare need to hand-redact a sensitive issue). I still feel that this is a distinct lack of transparency no matter how we spin it. I doubt it's any more confused than the rest of our more 20:01
public discussions; why is this regarded so differently?
ltl_ /))))))))) 20:01
//) __ __\
C==/_o|^|o_\ /!\ IRC.LIBERA.CHAT IS THE BEST IRC NETWORK /!\
| _\ ) /!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
\ .--- / /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
_/`-. __.'_ /!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
/` \`'-,._./|\
/ \ /`\_/\/ \
kybr ummm. 20:02
sienet_ja_LSD[m] oh noes
Grinnz just spammers trying to piss off both networks, carry on
kybr is that what they call a false flag operation?
sienet_ja_LSD[m] you can expect that spam action in the new network 20:03
El_Che the dropped the child pornography part it seems 20:03
ugexe ya know they could have went to the effort to say this channel moved to the same channel name its in 20:04
kybr yes. crumby execution
was the slow posting to get past some sort of anti-pasting filter? 20:05
raydiak japhb: I think it is quite broadly applicable. you wanted to do something before and after the sub I'm suggesting, sure. but with it, that all would have collapsed to three lines (this one sub nicely nestled between a dd and a die if). I don't see how wanting to do stuff *with* the input and output before and after makes it any less applicable
in other words I remain quite convinced that this would be a good idea, but I'm happy to move on with life regardless, as nobody besides moon-child and myself seems to see it that way 20:06
Grinnz rate limiting to avoid being klined automatically, probably 20:07
raydiak I mean the only thing anybody could tell me it doesn't address far more concisely than we can now, is pipes. if you want to be chaining pipes or doing anything more complex than it's intended for, *then* you use the long form we already have. if someone can poke a bunch of holes in the idea and demonstrate why it doesn't handle a majority of *common* uses, then I'd think it was a bad idea. but I haven't seen 20:14
that yet, so I am not persuaded
demsh9 /))))))))) 20:16
//) __ __\
C==/_o|^|o_\ /!\ IRC.LIBERA.CHAT IS THE BEST IRC NETWORK /!\
| _\ ) /!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
\ .--- / /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
_/`-. __.'_ /!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
/` \`'-,._./|\
/ \ /`\_/\/ \
sienet_ja_LSD[m] :< 20:17
[Coke] if I want to make a "use Foo::Bar"; statement work, what's the minimum code I can use (in the same file) to stub that? 20:23
ugexe not quite following 20:24
[Coke] m: use Foo::Bar;
camelia ===SORRY!=== Error while compiling <tmp>
Could not find Foo::Bar in:
inst#/home/camelia/.raku
inst#/home/camelia/rakudo-m-inst-1/share/perl6/site
inst#/home/camelia/rakudo-m-inst-1/share/perl6/vendor
inst#/home/camelia/…
[Coke] Just trying to avoid that error in some sample code in the docs. 20:25
[Coke] m: module Foo::Bar {...}; use Foo::Bar; 20:25
camelia ===SORRY!=== Error while compiling <tmp>
Could not find Foo::Bar in:
inst#/home/camelia/.raku
inst#/home/camelia/rakudo-m-inst-1/share/perl6/site
inst#/home/camelia/rakudo-m-inst-1/share/perl6/vendor
inst#/home/camelia/…
[Coke] Not sure there's a way to stub it out in the same file or if this example is doomed to not be compilable. 20:26
docs have a sneaky way to add code to the example that isn't visible to the doc renderer, so you can pre-declare a varible if you need to, if the variable declaration isn't key to the thing you're doc'ing.
Do we have a libera contact regarding this sort of thing, or do we have to self-police? 20:28
[Coke] oops. I see I meant freenode. (ETOOMANYIRCS) 20:28
raydiak m: module Foo::Bar {}; use Foo::Bar; # like this?
camelia ===SORRY!=== Error while compiling <tmp>
Could not find Foo::Bar in:
inst#/home/camelia/.raku
inst#/home/camelia/rakudo-m-inst-1/share/perl6/site
inst#/home/camelia/rakudo-m-inst-1/share/perl6/vendor
inst#/home/camelia/…
raydiak huh 20:28
ugexe you want a `use Foo::Bar;` to not try to load Foo::Bar, but use some mocked package? 20:28
leont The entire freenode staff resigned, so probably not 20:29
[Coke] what sad, pathetic people.
... bad timing, I mean the spammers, not the staff!
Grinnz :)
leont I bet there's some replacement, but I can't imagine them being well-staffed and well-trained enough to handle this 20:30
tbrowder agree, 'bout the spammers
probably still in parents' basement
raydiak how is this handled when the offender is switching nicks, IPs, and providers? 20:32
ugexe i dont think there is an easy way to do that. off the top of my head you either need to create a CUR to handle ignoring a specific module (kinda like CompUnit::Repository::Mask) or to augment CURFS/CURI method need to ignore a specific module 20:33
[Coke] I'm all for leaving IRC and using a different chat system, btw. 20:38
Easier to just not test this snippet for now. 20:39
ugexe++
ugexe maybe just have something comment out lines with use statements before running the code 20:40
[Coke] no, still want to test use in general.
[Coke] it's fine, we can skip the occasional snippet and not test it. 20:41
dgonyeo4 /))))))))) 20:44
//) __ __\
C==/_o|^|o_\ /!\ IRC.LIBERA.CHAT IS THE BEST IRC NETWORK /!\
| _\ ) /!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
\ .--- / /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
_/`-. __.'_ /!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
/` \`'-,._./|\
/ \ /`\_/\/ \
Geth doc: 574dc4a0ec | Coke++ | xt/pws/words.pws
new irc network name
20:45
doc: de51563d16 | Coke++ | doc/Language/operators.pod6
can't test this snippet
linkable6 Link: docs.raku.org/language/operators
akraut25 /))))))))) 20:48
//) __ __\
C==/_o|^|o_\ /!\ IRC.LIBERA.CHAT IS THE BEST IRC NETWORK /!\
| _\ ) /!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
\ .--- / /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
_/`-. __.'_ /!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
/` \`'-,._./|\
[Coke] :( 20:52
[Coke] ok, freenode chat feels overrun 20:56
Platypuschan5 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 20:58
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
[Coke] IRC-- 20:59
raydiak can't even spell "libera"... 21:00
Altreus it is. I left.
I now only have 6 windows, and one of them is the server window
eb0t /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 21:22
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF 21:23
Hien12 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 21:36
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
likivik-M16 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 21:42
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
Nasrudin I'd like to take this time to mention matrix.org :) 21:43
AlexDaniel` hehe :) 22:04
Dave: not that it matters, but I do agree (right, speaking from Matrix right now), but I don't know how well matrix.org servers themselves can handle 22:06
in the past they used to be slow
like, really slow. Type your message, wait a few seconds before others see it
freenode bridge is through the matrix.org servers too, so oops… 22:07
GNU\colossus20 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 22:07
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
El_Che spammers are annouing and so obviously false :) 22:07
AlexDaniel OK let's see if this time I'll be a bit quicker… 22:08
macro ready 22:09
Pyrus20 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 22:18
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
abhixec /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 22:34
AlexDaniel hmm 22:34
ok maybe it's time to bring back the bot 22:35
maedox18 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 22:55
sienet_ja_LSD[m] yes 23:03
AlexDaniel` haa, more matrix users 🤗
sienet_ja_LSD[m] I was kind of resisting at first but now I see its point 23:04
AlexDaniel` I've been using it as my main means of communication for years now
at first it was absolutely horrible 🤐
sienet_ja_LSD[m] hehe
AlexDaniel` nowadays it's absolutely alright 23:05
I don't do group calls so can't comment on that
1-to-1 calls are fine when my own turnserver is not acting weird… 23:06
oh, and yeah, I do run my own homeserver, and that is probably part of my positive experience
sienet_ja_LSD[m] yea setting up a server of my own would be something to look at
AlexDaniel` this year I tried to get someone to try matrix… they made an account on matrix.org (which was easy), and then matrix.org immediately had issues 23:08
don't know if it was planned maintenance or what, but we couldn't message each other for a few minutes
🤦‍♂️
sienet_ja_LSD[m] aye seems like it's been growing a lot
blueness6 /!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 23:09
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
/!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
AlexDaniel damn that one was sending messages so fast 23:09
no way to do it without a bot
AlexDaniel` sienet_ja_LSD: OK you don't see that 23:10
and that part is weird.
like, what is going on there. The spammer joined the channel, sent some messages…
canbenshanlo oh, they are still going? :(
AlexDaniel` but why don't we see it in matrix?
sienet_ja_LSD[m] there were some that I saw, yes 23:11
AlexDaniel` and that's a longstanding issue of the matrix-freenode bridge – some messages are just not passed over
I think all Matrix messages are sent to freenode, but not all freenode messages appear in matrix 23:12
sienet_ja_LSD[m] aye that's an issue, but conveniently this channel works, but I have a couple of other channels that I need to back check if the messages have gone through
AlexDaniel` yep, it's convenient enough that nowadays I don't use a normal IRC client anymore
being able to send a few messages to IRC from a phone when needed is really convenient 23:13
sjourdan[m]1 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 23:20
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
AlexDaniel ugh 23:20
guifa2 just made his first custom HOW + declarator
I think GTK + custom declarators will be a pretty sweet combination
AlexDaniel OK friends we might need a bot for this situation…
guifa2 pokes tyil
AlexDaniel what we did last time when freenode was spammed to hell: we set +m so that only voiced users can speak 23:22
then also +z so that ops can still see the messages
created a bot who was opped, waiting for users to join and send a message
if someone joined and sent a message right away, they were not voiced
if they were quiet for a minute or so, then +v was given 23:23
it wasn't entirely perfect but it did the trick fantastically well
let's see 23:25
I found the bot 23:26
tru_tru /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 23:26
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 23:27
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
guifa2 hmm, this is weird. adding a method 'new' via .^add_method('new', method { … } is bombing pretty hard 23:30
emias13 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 23:34
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
AlexDaniel ye ye just wait I'll set +m and that'd gone 23:34
AndreyP-t17 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 23:43
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
THIS OFFICIALLY ENDORSED MESSAGE WAS BROUGHT TO YOU BY LIBERA.CHAT STAFF
AlexDaniel 🙏🙏🙏 We're trying to reduce the amount of spam on Raku channels, there are some upcoming counter measures. Your IRC client might bleep when we give you voice (+v), please ignore! Thank you for your understanding 🤗🤗🤗 23:44
guifa2 AlexDaniel++ xx 99 ** 99 23:45
CryptoClub15 /!\ THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\ 23:50
/!\ THE JEWS HAVE TAKEN OVER FREENODE, CHATS HAVE MOVED TO IRC.LIBERA.CHAT /!\
/!\ JOIN #LIBERIA TODAY. THIS CHANNEL HAS MOVED TO IRC.LIBERA.CHAT #LIBERIA /!\
AlexDaniel OK 23:51
AlexDaniel can somebody say something? :) 23:51
gordonfish something 23:52
guifa2 something? :)
bdju hi
AlexDaniel hi :)
epony well done 23:53
AlexDaniel ahh lemme see actually if there are any bots still coming… 23:55