🦋 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: ... | Log inspection is getting closer to beta. If you're a beginner, you can also check out the #raku-beginner channel! Set by lizmat on 25 August 2021. |
|||
00:02
reportable6 left
00:14
pierrot left,
pierrot_ joined
00:29
bdju left
00:54
jjido left
01:05
reportable6 joined
01:48
bdju joined
02:24
frost joined
02:38
unixcat647 left
02:40
hyperreal joined
03:03
frost left
03:28
Xliff left
04:28
evalable6 left,
linkable6 left
05:19
xinming left
05:20
xinming joined
05:24
Eddward left
05:29
linkable6 joined
05:30
evalable6 joined
05:33
dwarring left
06:02
reportable6 left
06:04
reportable6 joined
06:10
abraxxa joined
06:15
abraxxa left,
abraxxa joined
07:15
nativecallable6 left,
benchable6 left,
linkable6 left,
reportable6 left,
sourceable6 left,
evalable6 left,
squashable6 left,
releasable6 left,
bisectable6 left,
notable6 left,
bloatable6 left,
unicodable6 left,
committable6 left,
greppable6 left,
shareable6 left,
quotable6 left,
tellable6 left,
coverable6 left,
statisfiable6 left
07:16
quotable6 joined,
bisectable6 joined,
coverable6 joined,
linkable6 joined,
evalable6 joined,
releasable6 joined
07:17
tellable6 joined,
nativecallable6 joined
07:18
unicodable6 joined,
bloatable6 joined,
reportable6 joined
07:56
Sgeo left
08:14
dakkar joined
08:16
statisfiable6 joined
08:17
greppable6 joined,
squashable6 joined
08:22
CIAvash left,
AlexDaniel left,
demostanis[m] left,
juanfra left,
cnx left,
happy-dude left
08:26
juanfra joined
08:37
gordonfish left
08:43
gordonfish joined
08:47
AlexDaniel joined,
cnx joined,
happy-dude joined,
demostanis[m] joined
08:48
CIAvash joined
08:49
gordonfish- joined
08:50
gordonfish left
08:53
gordonfish- left
09:16
sourceable6 joined
09:18
committable6 joined
09:22
silug left,
silug7 joined
09:26
silug7 left
09:28
silug joined
09:32
silug left
09:33
silug joined
09:37
silug left,
silug joined
09:44
wz joined
09:48
wz left
09:50
wz joined,
wz left
10:17
jjido joined,
notable6 joined
10:27
Altai-man joined
10:31
jjido left
11:17
benchable6 joined
11:18
shareable6 joined
11:32
squashable6 left
11:34
squashable6 joined
11:54
whatnext joined
|
|||
whatnext | hello everybody :) today's question: any idea what would cause this error: "Error while compiling... Cannot find method 'EXISTS-KEY' on 'BOOTHash': no method cache and no .^find_method" ? | 11:55 | |
I have a module that is identical apart from name (boilerplate classes which don't yet have anything much in them) which seems to compile just fine | 11:56 | ||
? | 11:57 | ||
12:01
Xliff joined
|
|||
[Coke] | No idea, but is your program small enough to show a gist of it? | 12:02 | |
12:02
reportable6 left
|
|||
whatnext | actually not really - but hang on I am concocting a snippet | 12:07 | |
[Coke] | m: 'something small enough to show here?'.say | 12:09 | |
camelia | something small enough to show here? | ||
whatnext | gist.github.com/whatnext/87c22a266...2b01b610d3 | 12:14 | |
[Coke] | there are multiple 'unit class' in that file? | 12:16 | |
there are multiple 'unit class' in that file? | 12:17 | ||
(or is that a concat of multiple files?) | |||
lizmat | whatnext: can you run with --ll-exception and gist the backtrace ? | 12:18 | |
whatnext | they are in separate files - I just put them inline for the gist | ||
lizmat I commented the backtrace on the gist | 12:22 | ||
[Coke] | if you use --ll-exception you'll get a bigger trace. | 12:23 | |
you *should*, I mean. | |||
lizmat | feels like an issue in Inline::Python ? | ||
whatnext | bigger than the one I posted? | 12:24 | |
12:25
wz joined
|
|||
[Coke] | Try it and see. | 12:25 | |
(but yes) | |||
it reports on things that are "internal" | |||
whatnext | I did use --ll-exception - that's the output I got from doing that | 12:26 | |
lizmat I would be happy to believe it was Inline::Python - but it doesn't seem to throw an error the first time around | 12:27 | ||
lizmat | hmmm | ||
must admit I'm too distracted atm to look at it deeper :-( | 12:28 | ||
whatnext | no worries | ||
was just asking in case anyone had seen it before | |||
will post a solution if I find one :) | 12:37 | ||
lizmat | m: use nqp; nqp::hash.EXISTS-KEY("a") # the ultimate golf | 12:39 | |
camelia | Cannot find method 'EXISTS-KEY' on 'BOOTHash': no method cache and no .^find_method in block <unit> at <tmp> line 1 |
||
lizmat | now, the error is legit: an nqp::hash does not have an EXISTS-KEY method | ||
so somewhere an nqp::hash is not being hllized to a Raku Hash object | |||
12:42
clarkema joined
12:46
Eddward joined
|
|||
wz | We are conducting a research on image label generation on the docker hub platform. We apply natural language processing technology and text mining technology to implement our method. | 12:53 | |
In order to be able to give a reasonable evaluation to the tags generated by our method, we sincerely hope that you, as the developers of rakudo-star, can make an evaluation. Your evaluation is very important to us. | |||
The tags for rakudo-star are as follows: | |||
compiler, apline, rakudo, perl, development tools, small, virtual machine, linux | |||
If the tags are reasonable or not, please reply in form of, "Good tags: ***, ***; Bad tags: ***, ***" | |||
If the tags are reasonable or not, please reply in form of, "Good tags: ***, ***; Bad tags: ***, ***" | 12:54 | ||
It will be a great help if you can give us a feedback | |||
Thank you so much for you precious time. | |||
lizmat | Bad tags: perl, small | 12:57 | |
wz | thank you so much | ||
lizmat | wtf is apline ? | ||
whatnext | so lizmat... I'm just trying to understand what that means | ||
so lizmat... I'm just trying to understand what that means | 12:58 | ||
not really being familiar with what's going on under the hood | |||
wz | Damn algorithm generated | ||
lizmat | Good tags: raku, programming language, ecosystem | 12:59 | |
whatnext: something is being naughty using nqp, and has been caught :-) | 13:00 | ||
afk for a few hours& | |||
whatnext | yeah i understood that much | ||
wz | Ha ha | ||
whatnext | but nqp is part of the compiler correct - so just means something went wrong somewhere in the compiler? | 13:01 | |
wz | maybe | 13:02 | |
13:03
wz left
13:09
jjido joined
13:10
cnx left
13:11
whatnext left
13:12
jjido left
13:22
patrickb joined
13:23
whatnext joined
|
|||
[Coke] | I'm guessing a 3rd party module you're using is using nqp internals that it should not be. | 13:27 | |
m: use nqp; nqp::say(3); | 13:28 | ||
camelia | This type cannot unbox to a native string: P6opaque, Int in block <unit> at <tmp> line 1 |
||
[Coke] | as an example of something you can do from rakudo, using NQP directly, that someone might expect to work but doesn't. | ||
13:39
whatnext left
14:02
Sgeo joined
14:24
gordonfish joined
14:54
xinming left
14:56
xinming left,
xinming joined
15:05
reportable6 joined
15:08
discord-raku-bot left
15:10
discord-raku-bot joined
15:16
patrickb left
|
|||
ugexe | im guessing its more that they seen to be using `use lib ...` along with dynamically loading modules | 15:18 | |
not that you shouldnt (of course i never `use lib ...`), just that that combination + the stack trace makes it seem like it | |||
avuserow | lizmat: apline is presumably a typo for alpine, a linux distro that's popular in making minimal docker images | 15:25 | |
15:27
zacts joined
15:57
ufobat joined,
ufobat left
|
|||
[Coke] | anyone building from master, new-disp just dropped. | 16:23 | |
16:42
gordonfish left
16:44
gordonfish joined
16:49
nige joined,
nige left,
nige joined
16:54
dakkar left
17:01
nige left,
nige joined
17:06
nige left,
nige joined
|
|||
tonyo | new disp? | 17:08 | |
Altai-man | new disp! | 17:09 | |
[Coke] | 6guts.wordpress.com/2021/09/29/the...m-is-here/ | 17:11 | |
lizmat | weekly: 6guts.wordpress.com/2021/09/29/the...m-is-here/ | 17:14 | |
notable6 | lizmat, Noted! (weekly) | ||
Juerd | So I checked out blead hoping to see some improvements in the regex heavy benchmark that I've been doing | 17:49 | |
But it's really really slow :( | |||
7 seconds with 2021.04 that I had, 43 seconds with current :( | 17:50 | ||
Code: github.com/Juerd/p6-mqtt/blob/master/t/regex.t | 17:51 | ||
17:58
Altai-man left
18:02
reportable6 left
18:05
reportable6 joined
|
|||
lizmat | Juerd: that's... disappointing | 18:11 | |
ah... EVAL $_ ??? | 18:12 | ||
Juerd | It's slow all over, not just line 146 | 18:13 | |
lizmat | well... indeed... | ||
but what I would do, is set up a list of Captures and pass that to pattern_test ? | 18:14 | ||
Juerd | Oh, there are a gazillion ways to improve the code to make it faster I'm sure | ||
But this is a near literal port of Perl code, which makes it suitable for comparisons | 18:15 | ||
lizmat | well... that's debatable... :-) | 18:16 | |
Juerd | I'm not saying the Perl original or this port is good code, but it has been my go-to thing to check whether Raku is "ready" yet, for years | ||
Because I write many one-offs that do make use of generated regexes, eval, etc, to then process lots of data. That's something I can't do with raku yet :| | 18:17 | ||
Well I could perhaps, but I'd have to do everything completely differently | |||
In any case, if the regression by itself is not interesting, feel free to ignore it :) | |||
This code is basically frozen anyway, I'm probably not going to improve anything ever, since leont's Protocol::MQTT does everything this does, and much more. | 18:19 | ||
I haven't tested whether his port of the same tests has improved with new dist - github.com/Leont/raku-protocol-mqt...r.rakutest | |||
18:31
nige left,
nige joined
|
|||
lizmat | Juerd: looking at filter-as-regex code: that's basically screaming RakuAST to me :-) | 18:35 | |
18:36
nige left,
nige joined
|
|||
Juerd | Yes, it does | 18:37 | |
But I'm not really interested in fixing this code, no matter how hard it screams | |||
For me, it serves a good purpose of being a benchmark, and it's showing a regression | 18:38 | ||
18:39
nige left
|
|||
lizmat | indeed it does :-) | 18:40 | |
Juerd: are you aware of the Str.subst method ? | |||
Juerd | I know it exists | 18:41 | |
lizmat | $str ~~ s:g[\W+] = "'$/'"; | 18:42 | |
return $str; | |||
could be rewritten as: return $str.subst(/\W+/, { "'$/'" }, :global) | |||
Juerd | Look, I'm into timtowtdi, not really into the "there are 15 ways to do this, but only one performs well so I guess you'll have to use that one" :) | ||
That's kinda why I'm not using Raku for anything real yet. | 18:43 | ||
lizmat | well, true. It's just that a lot of worn in Perl habits are counter intuitive wrt performance in Raku | 18:45 | |
like using hashes instead of proper classes | |||
Juerd | I'm hoping it will get there at some point, but I note that whether on irc or reddit or stackoverflow, if someone complains that naively written code performs worse than similar code on another platform, people jump to providing help to improve the code. That's nice, and community wise really cool, but it won't ever scale to anything that can be used in production. No programming language's community | ||
can ever scale to fixing everyone's code. | |||
lizmat | that is true... | 18:46 | |
we're all trying to learn to go with the flow of Raku, rather than trying to go upstream with it because of old habits :-) | 18:47 | ||
Juerd | Dumb code has to perform reasonably well too | ||
If I have to write int instead of Int to come close to what Perl or Python does, I'm not saving much time by using the fancy new thing, and I can just as well keep using the old tools. I know Raku's improving all the time, which is why I keep trying from time to time. | 18:48 | ||
lizmat | indeed... but e.g. using a Real type in a recent floating point benchmark, rather than just a num, is like... well.... | ||
I mean, it's a "floating point" benchmark... | 18:49 | ||
why would you want to use Reals ? | |||
Juerd | I saw that one and was amused too | ||
But tbh, it speaks to an issue with naming that exists in Raku | 18:50 | ||
lizmat | yeah, num should probably have been called "float" I have no idea why num was chosen | ||
Juerd | I've ranted about the names of numeric types before so I won't repeat that, as it's set in stone anyway :) | ||
lizmat | in any case, looks like the MQTT::Client code is triggering some megamorphic callsite mitigation code | 18:51 | |
in the new dispatcher logic | |||
Juerd | If only I had some clue what megamorphic meant :) | ||
lizmat | the test will be a good case for improving that | ||
Juerd: www.google.com/search?rls=en&q...+call+site | 18:53 | ||
:-) | |||
19:02
jjido joined
19:10
jjido left
19:16
jjatria left,
jjatria joined
19:17
Scotteh left,
Scotteh joined
|
|||
codesections | Juerd this is totally speculative, but I'm (cautiously) *very* optimistic about RakuAST helping with the performance cliff between the 15 different ways of saying the same thing. | 19:28 | |
(in the medium/long term, I mean, not on the day it's merged) | |||
Juerd | That would be nice | ||
codesections | If two (or 15) statements have exactly the same semantics, then in theory out static optimizer ought to be able to pick the best-performing one. Theory isn't practice, and that sort of transform can be hard, especially Raku's dynamism | 19:30 | |
But rAST will make it easier. Personally, I'm hopping we can at least optimize things like $some-string ~~ /^foo/ to have the same performance as $some-string.starts-with('foo') | 19:33 | ||
19:59
jjido joined,
spacekookie left
20:00
spacekookie joined
|
|||
tbrowder | ref num, etc., names: can't we add aliases for better names? | 20:39 | |
(e.g., "float" as the "real" name and "num" as its aliad) | 20:41 | ||
s/aliad/alias/ | 20:42 | ||
20:42
squashable6 left
|
|||
lizmat | m: my constant float = num; dd my float $a = 42e0 # alias done | 20:43 | |
camelia | 42e0 | ||
lizmat | now the documentation :-) | ||
leont | lizmat: yeah, it is screaming RakuAST :-) | 20:46 | |
tonyo | m: my \float = num; dd my float $a = 42e0; | 20:52 | |
camelia | ===SORRY!=== No compile-time value for float |
||
tonyo | m: my \float := num; dd my float $a = 42e0; | ||
camelia | ===SORRY!=== No compile-time value for float |
||
lizmat | tonyo: needs to be compile time, hence the constant | 20:53 | |
m: BEGIN my float := num; dd my float $a = 42e0 | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Malformed my (did you mean to declare a sigilless \float or $float?) at <tmp>:1 ------> 3BEGIN my float7⏏5 := num; dd my float $a = 42e0 |
||
lizmat | m: BEGIN my float := num; my float $a = 42e0; dd $a | 20:54 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Malformed my (did you mean to declare a sigilless \float or $float?) at <tmp>:1 ------> 3BEGIN my float7⏏5 := num; my float $a = 42e0; dd $a |
||
lizmat | m: BEGIN my \float = num; dd my float $a = 42e0 | ||
camelia | ===SORRY!=== No compile-time value for float |
||
lizmat | he | ||
leont | Juerd, lizmat: that code is slow because it does a string-to-regex conversion every time you use the regex. If it got slower, it's probably because that conversion got slower | 20:59 | |
tonyo | m: use experimental :macros; macro float() { quasi {"float"}; }; dd my float() $a = 42e0; | 21:00 | |
camelia | 5===SORRY!5=== Type 'float' is not declared. Did you mean any of these: 'Num', 'num'? at <tmp>:1 ------> 3loat() { quasi {"float"}; }; dd my float7⏏5() $a = 42e0; Malformed my at <tmp>:1 ------> 3acro float() { quasi {"float"};… |
||
lizmat | leont: yeah, the reason for the slowdown appears clear: lost of types created and not being properly cached in an attempt to handle megamorphic call sites | ||
21:00
t3nj1n left
|
|||
lizmat | *lots | 21:08 | |
21:44
jjido left
21:59
tejr left
22:00
tejr joined
|
|||
codesections | Is there a way for my module to tell that it's being `use`ed from a REPL session? I thought the REPL would set an env var/ $*dyn-var or something, but I'm not seeing one right off | 22:00 | |
japhb | codesections: That sounds a bit like an XY question. What is your actual use case? | 22:03 | |
codesections | japhb not much of one at the moment. I use'ed a module that I'm working on to test it out interactively, and it didn't behave itself well (i.e., an `await` in WIP code hung the REPL) and I got curious. | 22:05 | |
It's something I'd think we'd need if we ever go further down the interactive/REPL-driven development path, but that's probably a long way off (if we even pursue that goal) | 22:07 | ||
(I'd like to, but I don't know how widely held that view is) | |||
japhb | Well, given that a Jupyter kernel was actually a relatively early module | 22:10 | |
... I'd say there's definite interest | |||
But if that's what you're looking for, maybe $*PROGRAM or $*PROGRAM-NAME? | |||
m: .say for $*PROGRAM, $*PROGRAM-NAME; | |||
camelia | "<tmp>".IO <tmp> |
||
codesections | That does the trick, thanks :) | 22:11 | |
japhb | np | ||
22:13
melezhik joined
|
|||
melezhik | . | 22:13 | |
hi raku people! | 22:14 | ||
moon-child | melezhik: sup | ||
melezhik | i am looking for a raku module that would convert int numbers into picture (png/jpeg) | 22:15 | |
moon-child | I think there were some imagemagick bindings | ||
melezhik | i am pretty sure there are some modules that binds to image libraries | ||
imagemagick - i thought about it, will it requite Inline::Perl5 ? | 22:16 | ||
moon-child | modules.raku.org/dist/MagickWand:cpan:AZAWAWI nativecall, not perl5 | 22:17 | |
melezhik | yep, just have found it as well ... | ||
22:28
melezhik left
22:37
Eddward left
|
|||
tbrowder | i find it easier to use Inline::Perl5 with GraphicsMagick's Perl modules | 22:48 | |
and GraphicsMagick is the preferred code according to my research | 22:50 | ||
.tell melezhik try Inline::Perl5 with Perl modules from GraphicsMagick | 23:37 | ||
tellable6 | tbrowder, I'll pass your message to melezhik | ||
23:37
evalable6 left,
linkable6 left
23:43
squashable6 joined
|