🦋 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 available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel! Set by lizmat on 8 June 2022. |
|||
00:07
reportable6 left
00:08
reportable6 joined
00:15
jaguart left
|
|||
japhb | Quibono: There used to be other compilers, such as Niecza and PUGS, but they have not been maintained in a very long time. | 00:23 | |
Niecza targeted .NET; PUGS targeted GHC | |||
But after a certain point, Rakudo became the compiler getting most of the effort. | 00:24 | ||
Quibono | Do you know why the other compilers kinda died? | 00:29 | |
japhb | PUGS: Lead developer became quite sick, and henceforth moved on to becoming a government minister. | 00:32 | |
Niecza: IIRC, the lead developer got a $day-job that took all their time. | |||
But it's been a while, so my memory may be fuzzy. | |||
Quibono | Gotcha. | 00:35 | |
00:38
kbtz left
|
|||
Geth | ecosystem: 7aee6125dc | (Geoffrey Broadwell)++ (committed using GitHub Web editor) | META.list Remove Terminal-Print from p6c ... it has been moved to the `zef:terminal-printers` in the Fez ecosystem instead. |
00:40 | |
jdv | niecza. blast from the barely but fondly remembered past... | 00:46 | |
01:38
evalable6 left,
linkable6 left
01:40
linkable6 joined,
evalable6 joined
02:32
guifa_ joined,
guifa_ left
02:50
andrea[m]1 joined
03:50
evalable6 left,
linkable6 left
03:52
evalable6 joined,
linkable6 joined
04:52
nativecallable6 left,
bloatable6 left,
committable6 left,
unicodable6 left,
tellable6 left,
coverable6 left,
statisfiable6 left,
releasable6 left,
greppable6 left,
bisectable6 left,
sourceable6 left,
linkable6 left,
evalable6 left,
reportable6 left,
shareable6 left,
benchable6 left,
notable6 left,
quotable6 left,
sourceable6 joined,
coverable6 joined,
evalable6 joined
04:53
releasable6 joined,
notable6 joined,
nativecallable6 joined,
bloatable6 joined
04:54
linkable6 joined,
unicodable6 joined,
shareable6 joined,
benchable6 joined,
tellable6 joined,
greppable6 joined,
committable6 joined,
reportable6 joined
04:55
quotable6 joined,
statisfiable6 joined,
bisectable6 joined
05:16
Sankalp left
05:21
Sankalp joined
06:07
reportable6 left
06:10
reportable6 joined
07:02
Guest53 joined,
Sankalp left
|
|||
Guest53 | hello | 07:02 | |
is anyone else here? | |||
07:04
Guest53 left
07:20
Sankalp joined
|
|||
Nemokosch | Maybe | 07:20 | |
53 is my lucky number | 07:21 | ||
07:36
kbtz joined
|
|||
I'm still thinking what makes HTML::Tag so terribly slow | 07:54 | ||
and there are things I don't understand | |||
github.com/2colours/HTML-Tag/blob/...akumod#L29 | 07:55 | ||
why does this stuff work _at all_ | |||
there is no $!id | |||
lizmat | has $.id is rw; | 07:57 | |
there *is* an $!id | |||
github.com/2colours/HTML-Tag/blob/...rakumod#L7 | 07:58 | ||
Nemokosch | well, why? | 07:59 | |
lizmat | has $.foo defines a $!foo private attribute *and* creates an accessor method | 08:02 | |
Nemokosch | ~~somebody could have really valued consistency more~~ | 08:06 | |
perhaps it would be more readable if stuff declared with $. could only be accessed with $. and it would resolve to the underlying private variable | 08:08 | ||
anyway... | |||
this time around, I straight-up murdered this do-assignments stuff | 08:10 | ||
it's not called from the generic render method | |||
and guess what, that wasn't it | |||
there is no improvement at all apparently | |||
I mean, assignments shouldn't be costly but I suspected there might be a ridiculous number of them | |||
that's not the case apparently | 08:11 | ||
lizmat | ok, for the sake of the argument, could you take out the encode_entities bit and see how that affects performance? | ||
Nemokosch | I did that once and I immediately realized an 80% performance boost lol | 08:14 | |
but I think there might be other places where it can be removed | |||
so that may be even bigger, let's see... | |||
lizmat | ok, then lemme focus on that module | ||
Nemokosch | okay - this time around, I'm replacing it with a dummy function that just returns the argument | 08:16 | |
and I added do-assignments back | |||
anyway, I'm afraid this won't be a win - because I don't let anything be encoded either way | 08:18 | ||
I made a HTML::Tag::Raw class that renders as its content | 08:19 | ||
lizmat | ok, so "encode-html-entities" is really the only type of encoding that you need, right? | ||
Nemokosch | and I'm using that for literally all my data in the given script | 08:20 | |
I'd say even that is too much 😅 I'm not sure what you mean | |||
One thing seems sure: XML::Entity::HTML might be horroristically slow - but that's not the only reason this module is embarrassingly slow | 08:22 | ||
Is there a tool by any chance that can monitor calls? | 08:23 | ||
lizmat | raku --profile | ||
if you could get the code to run for up to a second or so in a single thread | 08:24 | ||
otherwise the generated HTML becomes too large for browsers to handle | |||
Nemokosch | 😂 | 08:25 | |
then I'm gonna use raku --profile for generating HTML, instead of HTML::Tag | |||
🤣 | |||
lizmat | hehe | ||
Nemokosch | yes, in my current script, encode-html-entities is not called at all | 08:27 | |
everything I generate is raw, and this isn't only for performance - the unofficial REST API I'm using gives back HTML fragments (sometimes even XML) because they wanted to help the browser anyway | 08:28 | ||
of course it would be nice to get encode-html-entities performant, but again, that in itself won't save this module | 08:29 | ||
and I started suspecting encode-html-entities might be too slow because of Raku's trans method | 08:30 | ||
it doesn't seem to do much besides calling trans | 08:31 | ||
lizmat | I just had a look at Str.trans, and it could use some TLC now with new-disp developments and all | ||
but that would also be marginal I'd say | |||
Nemokosch | is there something I'm missing about XML::Entity::HTML? or is it really just one object allocation and then calling trans, pretty much | 08:33 | |
lizmat | well, it schlepps in all of XML | 08:34 | |
but from a cursory look at the code, yes, pretty much | |||
Nemokosch | that's definitely inconvenient but I don't think it should be a cost for every single call made, importing the XML module that is | 08:35 | |
08:36
linkable6 left,
evalable6 left
|
|||
lizmat | what I see with ,trans is that it is building a hash for *each* call, with the given lookips | 08:36 | |
*lookups | |||
08:37
linkable6 joined
08:38
evalable6 joined
|
|||
Nemokosch | I couldn't bet how much that holds the performance back but yes, that's definitely overkill | 08:39 | |
that hash might be magnitudes bigger than the string to transform | |||
lizmat | indeed | ||
there's also github.com/Mouq/HTML-Entity | 08:41 | ||
but that also uses trans | 08:42 | ||
ok, lemme take some code from XML::Entity::HTML and whip that up into a HTML::Entity::Fast | |||
09:02
jaguart joined
|
|||
Nemokosch | You know, I replaced HTML::Entity | 09:20 | |
because it's a pre-christmas module | |||
even the module format is obsolete | |||
it doesn't install with zef | 09:21 | ||
09:41
lichtkind__ joined
09:43
Sgeo left
09:45
Sankalp left
09:47
Sankalp joined
10:47
notable6 left,
committable6 left,
releasable6 left,
shareable6 left,
bisectable6 left,
quotable6 left,
nativecallable6 left,
statisfiable6 left,
evalable6 left,
tellable6 left,
unicodable6 left,
greppable6 left,
benchable6 left,
linkable6 left,
coverable6 left,
sourceable6 left,
bloatable6 left,
reportable6 left,
RaycatWhoDat joined
|
|||
RaycatWhoDat | Hey, all. | 10:47 | |
10:47
reportable6 joined,
statisfiable6 joined
|
|||
RaycatWhoDat | I might have found a bug with set equality but I want to float it by y'all to make sure I'm not crazy. | 10:48 | |
10:48
benchable6 joined,
tellable6 joined,
committable6 joined,
unicodable6 joined,
releasable6 joined
|
|||
RaycatWhoDat | glot.io/snippets/gbwxz5e06i | 10:48 | |
Given that snippet above, is it correct to expect each assignment to be False? | 10:49 | ||
10:49
sourceable6 joined,
bloatable6 joined,
notable6 joined,
nativecallable6 joined
|
|||
RaycatWhoDat | condition* | 10:49 | |
10:49
evalable6 joined,
greppable6 joined,
bisectable6 joined,
quotable6 joined
10:50
shareable6 joined,
linkable6 joined,
coverable6 joined
10:51
sena_kun joined
|
|||
lizmat | m: dd "abba" (==) "abbba" | 11:07 | |
camelia | Bool::False | ||
lizmat | m: dd "abba".comb.Set (==) "abbba".comb,Set | ||
camelia | Bool::True Set |
||
lizmat | m: dd "abba".comb.Set (==) "abbba".comb.Set | ||
camelia | Bool::True | ||
lizmat | m: dd "abba".comb.Set (==) "abbba".comb | ||
camelia | Bool::True | ||
lizmat | at least the left hand side will have to be made a Set otherwise it will just compare two lists | ||
Nemokosch | I think the behavior was nice | 11:08 | |
lizmat | m: dd <a b b a> (==) < a b b b a> # what is happening effectively | ||
camelia | Bool::True | ||
lizmat | ah? | ||
hmmm | |||
intriguing | 11:09 | ||
Nemokosch: github.com/lizmat/HTML-Entities-Fast on its way to the ecosystem | 11:10 | ||
tellable6 | lizmat, I'll pass your message to Nemokosch | 11:11 | |
lizmat | m: dd "abba".comb (==) "abbba".comb | 11:19 | |
camelia | Bool::True | ||
lizmat | hmmm | ||
RaycatWhoDat: correction, the last one should indeed be True | 11:20 | ||
it already coerces the left hand side to Set | |||
RaycatWhoDat | That's a bit different than my understading of the operator | 11:21 | |
Should `(==)` return True if the sets are identical? | 11:22 | ||
Shouldn't* | |||
OH. | |||
I see what you mean. | 11:23 | ||
In that case, is there a better, duplicate-respecting way to compare two Seqs? | |||
maybe... | 11:25 | ||
m: dd "abba".comb.Bag === "abbba".comb.Bag | 11:26 | ||
camelia | Bool::False | ||
RaycatWhoDat | m: dd "abba".comb.Bag (==) "abbba".comb.Bag | ||
camelia | Bool::False | ||
RaycatWhoDat | Those two work, it seems | 11:27 | |
Cool, cool. Thanks for the clarification. | |||
lizmat | m: m: dd "abba".comb.Bag === "abbba".comb | 11:29 | |
camelia | Bool::False | ||
lizmat | m: m: dd "abbab".comb.Bag === "abbba".comb | ||
camelia | Bool::False | ||
lizmat | m: m: dd "abbab".comb.Bag === "abbba".comb.Bag | ||
camelia | Bool::True | ||
lizmat | hmmm | ||
m: m: dd "abbab".comb.Bag (==) "abbba".comb | |||
camelia | Bool::True | ||
lizmat | m: m: dd "abba".comb.Bag (==) "abbba".comb | ||
camelia | Bool::False | ||
lizmat | yeah, you don't need to .Bag the right hand side if the left side is a Bag | 11:30 | |
it will allow it to shortcut on mismatch | |||
11:51
linkable6 left,
evalable6 left
11:52
linkable6 joined
11:53
evalable6 joined
12:06
reportable6 left
12:07
reportable6 joined
13:01
saint- joined
14:01
evalable6 left,
committable6 left,
notable6 left,
sourceable6 left,
bisectable6 left,
bloatable6 left,
unicodable6 left,
linkable6 left,
benchable6 left,
reportable6 left,
greppable6 left,
shareable6 left,
tellable6 left,
quotable6 left,
statisfiable6 left,
releasable6 left,
nativecallable6 left,
coverable6 left
14:02
benchable6 joined,
releasable6 joined,
committable6 joined,
notable6 joined,
statisfiable6 joined,
bisectable6 joined
14:03
evalable6 joined,
tellable6 joined,
bloatable6 joined,
unicodable6 joined,
linkable6 joined,
reportable6 joined
14:04
greppable6 joined,
sourceable6 joined,
shareable6 joined,
nativecallable6 joined,
quotable6 joined,
coverable6 joined
14:51
Xliff left
15:42
MoC joined
16:27
MoC left
|
|||
ugexe | i wonder if it would be useful to have ENV vars for setting the paths of the named repos i.e. site/home/etc. particularly for doing e.g. RAKUDO_SITE_REPO_PATH="" RAKUDO_HOME_REPO_PATH="" etc (since disabling repos this way effectively allows one to control the entire repo chain to have a totally self contained app module location) | 16:47 | |
17:27
evalable6 left,
linkable6 left
17:29
linkable6 joined,
evalable6 joined
18:07
reportable6 left,
reportable6 joined
19:05
Sgeo joined
19:52
kbtz left
20:49
sena_kun left
20:53
daxim left
21:53
releasable6 left,
greppable6 left,
quotable6 left,
committable6 left,
linkable6 left,
sourceable6 left,
evalable6 left,
tellable6 left,
benchable6 left,
reportable6 left,
nativecallable6 left,
unicodable6 left,
coverable6 left,
bisectable6 left,
notable6 left,
statisfiable6 left,
bloatable6 left,
shareable6 left,
shareable6 joined,
bloatable6 joined
21:54
sourceable6 joined,
reportable6 joined,
notable6 joined,
unicodable6 joined
21:55
coverable6 joined,
releasable6 joined,
benchable6 joined,
evalable6 joined,
committable6 joined,
tellable6 joined,
statisfiable6 joined,
linkable6 joined
21:56
greppable6 joined,
quotable6 joined,
nativecallable6 joined,
bisectable6 joined
|
|||
tbrowder | ugexe: +1 | 22:55 | |
22:56
evalable6 left,
linkable6 left,
evalable6 joined
22:57
jaguart left
22:58
linkable6 joined,
Sankalp left
23:01
Sankalp joined
23:24
Sankalp left
23:26
Sankalp joined
23:34
lichtkind__ left
23:37
vasko left
23:43
vasko joined,
vasko left,
vasko joined
|
|||
Quibono | So is there interest in alternative compilers/more backends? | 23:51 | |
23:58
Sankalp left
|