🦋 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 21 April 2021. |
|||
00:02
sno left
00:03
sno joined
00:07
sno left
00:09
solitario joined
00:15
aborazmeh left
00:36
clarjon_1 joined,
clarjon1 left
00:45
epony left
00:58
DiffieHellman left,
DiffieHellman joined
01:01
oneeggeach left
01:03
kvw_5_ joined
01:06
kvw_5 left
01:11
epony joined
01:58
ggoebel left
02:05
Name joined
02:09
clarjon_1 left
02:12
Name left
|
|||
raydiak | demostanis[m]: I know it's several hours after the fact, but maybe you'll see this in the scrollback. 12m34s on a ryzen 5 2500u laptop (4 smt2 cores @ 2ghz/3.6ghz turbo) running manjaro...but I forgot to pass -j so that's single-threaded :P | 02:27 | |
actually I don't know how to parallel build rstar where you don't call make yourself, -j is a make thing. summerisle got any tips? | 02:38 | ||
02:39
neshpion joined
|
|||
moon-child | I don't think it's possible. I usually build the components individually myself | 02:45 | |
(though nqp and rakudo builds don't seem to be particularly parallel. Mvm is) | 02:46 | ||
(well, nqp and rakudo probably _could_ be built in parallel, but the makefile isn't set up in such a way that make knows how to do that) | |||
raydiak | just came across this, gonna try export MAKEFLAGS="-j<whatever number>" | 02:49 | |
sounds reasonable that the makefile would have to take special care for it to even work in parallel, but idk what summerisle must have meant by "56 threads" if it's not possible | 02:50 | ||
02:55
epony left
|
|||
raydiak | looks like it will run that way for moar, but the bulk of everything else just runs in serial anyway. guess that explains why my 2019 low-mid-range laptop only took 6x as long as some 64-core monster... | 02:55 | |
and yes I agree, I don't use rstar myself. the question just made me curious. I use rakubrew, unless I'm trying to hack on rakudo (which never happened much and hasn't happened at all in a very long time) | 03:02 | ||
-j8 only dropped me to 10m55s, so around a 10-15% time savings | 03:04 | ||
hard to say anything specific with a laptop anyway, the room is cooling off now that the sun is down, some parts could have still been a bit heat-soaked from the run before it, yada yada | 03:06 | ||
03:06
epony joined
03:07
monkey__ joined
03:27
gabiruh left,
gabiruh joined
03:29
monkey__ left
04:17
dotdotdot left
04:24
dotdotdot joined
04:38
pecastro joined
05:09
Sgeo left
05:13
Sgeo joined
05:36
wamba joined
05:42
gordonfish left
05:43
gordonfish joined
05:48
softmoth left,
neshpion left
06:09
stoned75 joined
06:22
parabolize left
06:45
stoned75 left
06:50
kurahaupo_ joined
06:51
kurahaupo left
06:56
jmerelo joined
07:03
asymptotically joined
07:29
__jrjsmrtn__ left
07:32
__jrjsmrtn__ joined
07:37
sftp joined
07:57
kurahaupo joined,
linkable6 left
07:58
linkable6 joined
08:00
kurahaupo_ left
08:02
guifa2 left,
brtastic joined
08:08
Geth joined
08:26
kurahaupo left,
kurahaupo joined
08:28
brtastic left
08:34
kurahaupo left
08:38
ggoebel joined
|
|||
demostanis[m] | <summerisle "demostanis: if it's any help (it"> That's so fast... | 08:40 | |
Well I made a small Perl script which can do pretty much like Rakudo Star but with support for GPG verification, fetching through git, and parallel installation for modules | 08:41 | ||
I'm sure it's faster than R* | 08:42 | ||
El_Che | if you want fast, use a pkg :) | 08:44 | |
demostanis[m] | Rakudo Star isn't much packaged... it's not even in Arch repos, and in AUR it's a very very very outdated version | 08:45 | |
El_Che | If you're compiling stuff I completely miss the use case of star | 08:46 | |
as you can build modules yourself | |||
demostanis[m] | The goal is to then package this new version | 08:47 | |
El_Che | package rakudo and zef | ||
modules are of of date the day you package them | |||
demostanis[m] | But my script also installs some modules | 08:48 | |
El_Che | so like dist do, I would package modules separately | ||
demostanis[m] | "of of date"? | ||
El_Che | yes, r is not release often and modules have new versions in the meanwhile | ||
modules have a different release cycle (whenever they want to release a bug release or feature) than rakudo (monthly) or star (varies, last time I checked yearly) | 08:49 | ||
demostanis[m] | My script isn't only for speed | ||
El_Che | go ahead with the script, no problems about it | 08:50 | |
just saying that assuming the 3 release cycles are related is a common error | |||
demostanis[m] | But yeah, probably one should package Raku modules for distros | ||
El_Che | for me at this stage of the ecosystem is a packaged raku + zef the way to go | 08:51 | |
once it's more mature distros version will be good enough | |||
demostanis[m] | And R* will become useless? | 08:52 | |
08:53
aluaces left
|
|||
El_Che | no, there is a use case for many people I think eg windows | 08:53 | |
there isn't any use case for my usecase | |||
(I use Linux and containers) | |||
I understand "with batteries" as a great stdlib of a language and raku delivers on that | 08:56 | ||
demostanis[m] | You mean that packaging additional modules like R* does might be useless for most users as Raku already has "batteries included"? | 08:59 | |
packaging in the default install* | 09:00 | ||
El_Che | no, I mean distribution of the compile with a list of modules | ||
I think the best scenario is like how all languages are packages | |||
a package for the compiler/runtime and separate packages for modules that are updates on their own schedule | 09:01 | ||
that's what most dist already do for raku | 09:02 | ||
however, for my own use case I prefer packaged rakudo + zef and I'll retrieve my own modules. In the future I would love to see these modules in directory of my project, e.g. vendored | 09:03 | ||
(afk) | 09:06 | ||
09:14
Sgeo left
09:29
brtastic joined
09:44
aluaces joined
10:00
asymptotically left,
mahafyi joined
10:02
asymptotically joined
10:05
aborazmeh joined
10:06
jmerelo left
10:08
kurahaupo_ joined
10:42
rindolf joined
10:44
Geth left,
Geth joined
10:56
Kaiepi left
10:57
Kaiepi joined
11:02
aborazmeh left
11:18
Black_Ribbon left
|
|||
moritz | an approach similar to python's virtualenv would be nice, yes | 11:45 | |
11:46
bmbee joined
11:52
bmbee left
|
|||
masak | lizmat: on second thought, I think it might very well work if you just say "savoring a nice Chateau 4573562 right now" | 11:52 | |
11:52
Kaiepi left
11:53
Kaiepi joined
|
|||
lizmat | that would be *very* futuristic | 11:53 | |
masak | yes, but when has that ever stopped us | ||
lizmat | but yeah, give or take a few miliion years from now | ||
true | |||
masak .oO( the future is already digitized, we just got to wines much sooner than we expected ) | 11:54 | ||
lizmat | Raku, the programming language for the aeons | ||
masak | ok, so what I'm hearing is: ditch hierarchical CPAN-style module names, and rename all modules according to the naming scheme "Chateau 4573562" | 11:55 | |
I hope I got that right; it's being turned into law as we speak | |||
lizmat | .oO( good thing we tend to be law breakers ) |
11:56 | |
12:04
Kaiepi left,
epony left
12:12
kurahaupo_ is now known as kurahaupo__
12:14
kurahaupo__ is now known as CurriedHippo
12:15
CurriedHippo is now known as CurlyHippo,
CurlyHippo left,
kurahaupo joined
12:17
kurahaupo is now known as kurahaupo_,
kurahaupo_ is now known as kurahaupo___,
kurahaupo___ is now known as kurahaupo
12:21
Kaiepi joined
12:30
epony joined
12:32
aborazmeh joined
12:47
natrys joined
12:55
epony left
13:01
aborazmeh left
|
|||
El_Che | masakm, lizmat: soundtrack for your discussion www.youtube.com/watch?v=L397TWLwrUU | 13:09 | |
13:10
Kaiepi left,
Kaiepi joined
13:17
defaultxr left
13:19
domidumont joined
13:37
Kaiepi left,
Kaiepi joined
13:41
wamba left
14:10
Kaiepi left
14:12
Kaiepi joined
14:13
Kaiepi left,
Kaiepi joined
14:23
xinming left
14:25
xinming joined
14:28
aborazmeh joined
14:29
aborazmeh left
14:31
aborazmeh joined
14:41
epony joined
14:43
b2gills left
14:44
b2gills joined
14:49
stoned75 joined
15:00
parabolize joined
15:07
titsuki joined
15:13
epony left
15:16
stoned75 left
15:17
stoned75 joined
15:29
mahafyi left
15:33
aborazmeh left
15:35
titsuki left
15:36
titsuki joined
15:57
epony joined,
abraxxa joined
16:03
e left
16:13
domidumont left
16:16
kiti_nomad[m] joined
16:18
domidumont joined
16:20
pwr22 joined
16:30
aborazmeh joined
16:33
brtastic left
16:38
defaultxr joined
|
|||
Geth | doc: a26ad28489 | (Stoned Elipot)++ | doc/Type/Range.pod6 Correct wording |
16:43 | |
doc: 0c478083eb | (Stoned Elipot)++ | doc/Type/Range.pod6 Refer to List.fmt for Range.fmt |
|||
linkable6 | Link: docs.raku.org/type/Range | ||
Geth | doc/range-cmp: c02da92dc7 | (Stoned Elipot)++ | doc/Type/Range.pod6 Rewording and completion for Range infix:<cmp> |
16:45 | |
doc: stoned++ created pull request #3873: Rewording and completion for Range infix:<cmp> |
|||
raydiak | m: use MONKEY-SEE-NO-EVAL; my @a; @a[1] = 1; say @a.raku; say @a[0]:exists; my @b := EVAL @a.raku; say @b.raku; say @b[0]:exists; | 16:46 | |
camelia | [Any, 1] False [Any, 1] True |
||
raydiak | not only does .raku throw away sparse array information, I don't think we even have a syntax which could properly represent it as an expression without a do block. list assignment to a slice could work to construct it, but as an expression it would return the list of values on the right of the assignment instead of the sparse array, so you'd still have to wrap it in a do block so you can name the array and | 16:54 | |
return it without exposing the temporary name to the surrounding context | |||
16:54
bloatable6 joined
17:03
Sgeo joined,
aborazmeh left
17:23
notable6 joined
17:25
natrys left
17:31
Xliff joined
17:34
aborazmeh joined
17:44
domidumont left
17:55
wamba joined
18:00
Kaiepi left
18:01
Kaiepi joined
18:02
Geth left
18:08
kiti_nomad[m] left
|
|||
xinming | releasable6: status | 18:10 | |
releasable6 | xinming, Next release will happen when it's ready. 2 blockers. 191 out of 191 commits logged | ||
xinming, Details: gist.github.com/bc1759028b69acb492...a92e0fbb06 | |||
18:10
epony left
18:15
kiti_nomad[m] joined
18:16
aborazmeh left
18:17
MasterDuke left
18:19
Kaiepi left
18:25
MasterDuke joined
18:30
Kaiepi joined
18:34
Kaeipi joined
18:35
Kaiepi left
|
|||
lizmat | raydiak: [,1] *could* be such a thing I guess | 18:40 | |
m: dd "use nqp; [nqp::null,44]".EVAL.raku # alas, not the same | 18:41 | ||
camelia | "[Mu, 44]" | ||
18:46
sno joined
|
|||
lizmat | raydiak: care to create a problem-solving issue for that ? | 18:48 | |
18:49
aborazmeh joined
18:52
stoned75 left
|
|||
raydiak | lizmat: sure thing | 18:55 | |
lizmat | I guess we need some special value of Mu to indicate a hole | 18:56 | |
similar to IterationEnd | |||
18:56
Kaeipi left
18:57
Kaeipi joined
|
|||
Tirifto[m] | Hello! If I have a mutable object I’d like to make immutable while the program runs, should I just coerce it to a similar immutable type (e.g. Array → List), or is there a nicer mechanism to arrive at something similar? | 18:57 | |
19:05
stoned75 joined
|
|||
lizmat | Array.List *won't* make the entries immutable | 19:05 | |
raydiak | lizmat: that was the first thing I thought, but now I'm not sure an actual value is necessary. we already have :exists for logical tests, and your ",1" proposal gives us a syntax to indicate where something shouldn't :exist | ||
lizmat | Tirifto[m] but why do you want to do that? To make it a value type ? | 19:06 | |
raydiak: I'm pretty sure there have been huge discussions about ,, in lists | |||
and I think the consensus was that they *should* be a syntax error | |||
as there is ambiguity | 19:07 | ||
raydiak | do you recall what sort of ambiguity? | ||
lizmat | and lack of clarity, e.g. when the first comma is on the end of a line, and the next line starts with whitespace and a comma | ||
that's an easy mistake to make | 19:08 | ||
19:09
aborazmeh left
|
|||
raydiak | I suppose I could see that, fair enough. I still like ,, more than another value/type/thing, but I'm certainly no language designer | 19:10 | |
lizmat | it's one of the lessons learned from Perl, like not wanting sigil variance | 19:12 | |
in Perl ,, is just the same as , if I recall correctly | |||
otoh, the result of such a discussion could be that existedness of an Array element is just not roundtrippable | 19:14 | ||
as supporting a special value would definitely affect parsing performance | 19:15 | ||
afk for half an hour or so | |||
raydiak | I definitely agree that ,, shouldn't just collapse to , | 19:17 | |
but I wonder if sparse arrays were considered in the previous discussions. I think using ,, to skip an element is totally reasonable (and probably does exactly that in some other languages, though I can't cite them off the top of my head) | 19:19 | ||
as far as just saying "sparse arrays can't round-trip"...I don't like that at all. afaik, .raku is definitely intended to be an EVALable thing to produce an identical data structure, and existence is definitely part of the data structure. otherwise we're basically conceding "Raku doesn't support sparse arrays. Use a hash instead." | 19:23 | ||
Tirifto[m] | lizmat: If ‘value type’ means what I think it does, then probably. I just thought that immutability might make the intention behind the code clearer and improve performance, although I don’t really know if the latter’s true. :P | 19:30 | |
raydiak | lizmat: github.com/Raku/problem-solving/issues/279 | 19:39 | |
19:49
Xliff left
|
|||
raydiak | Tirifto[m]: I just tested, and it appears that coercing an Array to a List actually does make the entries immutable (at some point in the past, that wasn't the case) | 19:51 | |
though I'm uncertain of the performance impact, and personally I doubt that sprinkling coercions around in your code will actually make it clearer from a readability standpoint, though I do understand what you're saying about conveying the semantic intention | 19:52 | ||
19:54
brtastic joined
19:57
neshpion joined
20:07
asymptotically left
|
|||
Tirifto[m] | raydiak: Thanks for testing! It might very well be the case that it won’t be much help. I also didn’t think about it too deeply, but I might give it a try and see how it goes. :-) | 20:13 | |
20:16
aborazmeh joined
20:17
Kaeipi left
|
|||
lizmat | raydiak: interesting... but it doesn't make the List a ValueType :-( | 20:29 | |
raydiak | Tirifto[m]: happy to help! TIMTOWTDI, definitely. if you like it and it does what you want, go for it. the only other thought I have is premature optimization. if this isn't in a hot path, the argument could be made that your time and the verbosity of the code would be better allocated elsewhere. and if it is in a hot path, also keep in mind that the coercion itself probably has some runtime cost | ||
lizmat: are Lists usually value types? I never really thought about trying to compare lists by identity... | 20:31 | ||
lizmat | no, because Lists *can* contain mutable elements | ||
m: my $a = 42; my $b = 666; ($a,$b) = ($b,$a); dd $a, $b | 20:32 | ||
camelia | Int $a = 666 Int $b = 42 |
||
lizmat | ^^ examples of lists with mutable elements | ||
raydiak | huh | 20:34 | |
m: my ($a, $b, $c) = ^3; my @a = $a, $b, $c; @a := @a.List; say @a; @a[0] = 1; | |||
camelia | (0 1 2) Cannot modify an immutable List ((0 1 2)) in block <unit> at <tmp> line 1 |
||
raydiak | coercion from an Array to a List seems to be special-cased to unbox all the elements. if there's no intermediate array, it's mutable: | 20:37 | |
m: my ($a, $b, $c) = ^3; my @a := ($a, $b, $c); say @a; @a[0] = 1; say @a; | |||
camelia | (0 1 2) (1 1 2) |
||
lizmat | well, as you said, coercing an array to a List apparently deconts | ||
sena_kun | .weekly twitter.com/koto_san_kana/status/1...1617976324 | 20:41 | |
.note twitter.com/koto_san_kana/status/1...1617976324 | |||
weekly twitter.com/koto_san_kana/status/1...1617976324 | |||
haha, pathetic | 20:42 | ||
sena_kun off | |||
raydiak | sena_kun++ thank you! | 20:45 | |
lizmat | sena_kun++ # retwat | ||
20:45
ggoebel left
|
|||
lizmat | notable6: weekly twitter.com/koto_san_kana/status/1...1617976324 | 20:47 | |
notable6 | lizmat, Noted! (weekly) | ||
lizmat | ^^ sena_kun | ||
20:47
Kaiepi joined
|
|||
raydiak | lizmat: do we have a deeply immutable compound/"listy" value type? | 20:48 | |
lizmat | not in core | ||
modules.raku.org/dist/Tuple:cpan:ELIZABETH | 20:49 | ||
raydiak | ah...how many datatype modules do you have? that's the third of yours I've encountered today :) | 20:50 | |
lizmat | Let's just say I'm more a backend than a frontend person :-) | ||
raydiak | that sounds dirty... | 20:51 | |
20:51
stoned75 left
|
|||
lizmat | meh | 20:51 | |
I guess a dirty mind is a joy forever :-) | |||
raydiak | haha good point | 20:52 | |
could Tuple implement type constraints or is default()? or would that mess up its usability/performance for core purposes? | 20:57 | ||
I'm not even sure if those are things implemented by the class itself, or if that happens elsewhere. maybe it just works as is? | 21:00 | ||
lizmat | interesting idea... hmmm | 21:02 | |
it was developed to be as fast as possible given the situation... hence it is directly using VMArrays under the hood | 21:03 | ||
and those don't know about types | 21:04 | ||
raydiak: please create an issue for that... to prevent this notion from falling through the cracks | 21:06 | ||
in the Tuple repo please :-) | |||
raydiak | okay :) | ||
done | 21:09 | ||
21:09
aborazmeh left
|
|||
lizmat | thanks! | 21:10 | |
21:10
epony joined
|
|||
raydiak | of course, happy to help | 21:11 | |
basically makes it a Blob for higher level non-native value types | 21:12 | ||
lizmat | Hmm... maybe it should therefore be incorporate this into the Blob role | 21:15 | |
m: Blob[Any] = "foo", 21 | |||
camelia | Could not instantiate role 'Blob': Can only parameterize with native int types, not 'Any'. in any protect at gen/moar/stage2/NQPCORE.setting line 1216 in block <unit> at <tmp> line 1 |
||
21:16
__jrjsmrtn__ left,
pecastro left,
agentzh left,
maggotbrain left,
CIAvash left,
kini left,
codesections left,
Grinnz left,
kurahaupo left,
aluaces left,
HobGoblin left,
db48x left,
bdju left,
stux|RC-only left,
wamba left,
notable6 left,
bloatable6 left,
linkable6 left,
swaggboi left,
skaji_ left,
nativecallable6 left,
leont left,
committable6 left,
quotable6 left,
statisfiable6 left,
benchable6 left,
releasable6 left,
bisectable6 left,
spycrab0 left,
b2gills left,
dogbert11 left,
LizBot left,
sena_kun left,
eseyman left,
kst left,
doconthe2ocks left,
neshpion left,
DiffieHellman left,
tejr left,
xelxebar left,
MasterDuke left,
pwr22 left,
simcop2387 left,
greppable6 left,
tellable6 left,
jhill left,
unicodable6 left,
abraxxa left,
sftp left,
PotatoGim left,
rba left,
zostay left,
kawaii left,
peteretep left,
epony left,
rindolf left,
gabiruh left,
tinita left,
finsternis left,
HarmtH left,
kybr left,
stux|RC left,
telex left,
Woodi left,
sno left,
defaultxr left,
kvw_5_ left,
solitario left,
grumble left,
ComputerTech left,
kiti_nomad[m] left,
juanfra__ left,
albino left,
rypervenche left,
Kaiepi left,
gordonfish left,
dotdotdot left,
wingfold left,
webstrand left,
perigrin left,
japhb left,
rjbs left,
eater left,
tonyo left,
cooper left,
krunen left,
m6locks left,
sjn left,
leah2 left,
takside left,
dylanwh left,
ssm left,
esh left,
Ekho left,
Ulti_ left,
samcv left,
klapperl left,
samebchase- left,
pat_js left,
cxreg left,
nebuchadnezzar left,
tomaw left
|
|||
lizmat | m: my Blob[Any] $foo = "foo", 21 | 21:16 | |
21:16
sno joined,
defaultxr joined,
kvw_5_ joined,
solitario joined,
grumble joined,
ComputerTech joined,
cosimo joined,
Maylay joined,
xkr47 joined,
brown121407 joined,
moony joined,
lnx joined,
ingy joined
21:17
wamba joined,
notable6 joined,
bloatable6 joined,
b2gills joined,
kurahaupo joined,
aluaces joined,
linkable6 joined,
__jrjsmrtn__ joined,
pecastro joined,
swaggboi joined,
dogbert11 joined,
LizBot joined,
skaji_ joined,
sena_kun joined,
nativecallable6 joined,
kst joined,
leont joined,
committable6 joined,
quotable6 joined,
statisfiable6 joined,
benchable6 joined,
releasable6 joined,
bisectable6 joined,
agentzh joined,
HobGoblin joined,
CIAvash joined,
kini joined,
db48x joined,
codesections joined,
bdju joined,
stux|RC-only joined,
doconthe2ocks joined,
eseyman joined,
maggotbrain joined,
spycrab0 joined,
Grinnz joined,
pierrot joined,
MitarashiDango[m joined,
mtj joined,
summerisle joined,
d_t_b joined,
demostanis[m] joined,
shadowpaste joined,
timeless joined,
gugod joined,
tyil joined,
a6502 joined,
nine joined,
hobbs joined,
masak joined,
mniip joined,
jast joined,
timlegge joined,
charsbar joined,
pnu__ joined,
mojca joined,
moon-child joined,
a3f joined,
jcallen joined,
mrsolo joined,
jjatria joined,
buffet joined,
nicholatian joined,
Sir_Ragna joined,
marcusr joined,
ambs joined,
DarthGandalf joined,
SmokeMachine joined,
daxim joined,
Grauwolf joined,
tbrowder joined,
riatre joined,
perry joined,
ugexe joined,
Altreus joined,
bonz060 joined,
KotH joined,
avar joined,
robinsmidsrod joined,
_________ joined,
Mithaldu joined,
synthmeat joined,
tadzik joined,
raydiak joined,
benaiah joined,
mightypork joined,
renormalist joined,
torbjorn joined,
literal joined,
dustinm` joined,
samebchase joined,
jmcgnh left,
MasterDuke joined,
neshpion joined,
tejr joined,
xelxebar joined
21:18
xelxebar left,
kiti_nomad[m] joined,
juanfra__ joined,
patrickbkr[m] joined,
rjeli joined,
albino joined,
rypervenche joined,
mendel joined,
m_athias joined,
perlmaros joined,
fvox_ joined,
spacebat2 joined,
Grrrr joined,
wmoxam_ joined,
moritz joined,
oftl joined,
samebchase- joined,
pat_js joined,
cxreg joined,
nebuchadnezzar joined,
tomaw joined,
leah2 joined,
Juerd joined,
uzl[m] joined,
draco100[m] joined,
AlexDaniel` joined,
tusooa joined,
takside joined,
dylanwh joined,
ssm joined,
esh joined,
Ekho joined,
Ulti_ joined,
samcv joined,
klapperl joined
21:19
Kaiepi joined,
gordonfish joined,
wingfold joined,
webstrand joined,
perigrin joined,
japhb joined,
rjbs joined,
cgfbee joined,
brass joined,
Util joined,
eater joined,
tonyo joined,
cooper joined,
krunen joined,
sjn joined,
m6locks joined,
demostanis[m] left,
pwr22 joined,
simcop2387 joined,
greppable6 joined,
tellable6 joined,
jhill joined,
Nasrudin joined,
Garland_g[m] joined,
Tirifto[m] joined,
xi- joined,
a3r0 joined,
Bucciarati joined,
unicodable6 joined,
roguelazer joined,
jdv79 joined,
bartolin_ joined,
pwr22 left,
Tirifto[m] left,
Ekho left,
cgfbee left,
gordonfish left,
kiti_nomad[m] left,
juanfra__ left,
draco100[m] left,
uzl[m] left,
tusooa left,
CIAvash left,
MitarashiDango[m left
21:20
AlexDaniel` left,
abraxxa joined,
sftp joined,
rba joined,
zostay joined,
kawaii joined,
peteretep joined,
elcaro joined,
karupanerura joined,
vaskozl joined,
spacekookie joined,
camelia joined,
Nasrudin left,
kawaii left
21:21
stux|RC joined
21:22
gabiruh joined,
tinita joined,
finsternis joined,
HarmtH joined,
kybr joined,
telex joined,
Woodi joined,
gfldex joined,
APic joined,
andinus joined
|
|||
raydiak | that was a pretty big split | 21:22 | |
21:22
finstern1s joined,
finsternis left,
patrickbkr[m] left
21:23
dotdotdot joined,
kawaii joined
21:24
Garland_g[m] left,
PotatoGim joined,
jhill left
|
|||
lizmat | yeah... :-) | 21:26 | |
raydiak | not sure about making it a Blob formally. Blob is pretty binary-focused. it has methods like .bytes, .decode, .unpack, all that stuff | ||
lizmat | true... but it *is* immutable, contrary to Buf | 21:27 | |
21:27
BuildTheRobots joined
|
|||
lizmat | but yeah... maybe not | 21:27 | |
21:27
cgfbee joined
21:29
brtastic left
|
|||
raydiak | my vote would be Tuple does Positional, and is more of a sibling of Blob | 21:29 | |
21:29
jhill joined
|
|||
lizmat | well, Tuple does already do Positional :-) | 21:29 | |
raydiak | heh I assumed. I was just looking at the type graph for Blob and thinking in those terms | 21:31 | |
japhb | FWIW, CBOR::Simple will treat basic Positional as generic "holds anything, every item may be different". Blob is already special cased (making it quite fast indeed), as will the other native typed arrays once I implement the appropriate extension that allows avoiding endian swaps. | 21:33 | |
raydiak | oh japhb, I was meaning to ask...can you add your benchmark script to the CBOR::Simple repo? like in a tools subdir or something? | 21:36 | |
21:38
Manifest0 left
|
|||
raydiak | I had some thoughts about performance improvements, and even if nothing I try ends up working out it'd be an interesting/educational real-life test case anyway | 21:38 | |
MasterDuke | japhb: wouldn't it make sense to handle Iterable same as Positional? | 21:45 | |
21:48
dogbert11 left
21:49
dogbert11 joined
21:51
demostanis[m] joined
21:52
aborazmeh joined
21:59
sno left
22:01
aborazmeh left
22:08
pecastro left
22:10
webstrand left
|
|||
raydiak | I have a couple questions about the current state of META files. The first is version. I've seen different places say version is optional, it's required but '*' is okay, or it's required and must be an actual version number. which is correct? where do I find authoratative information on this (couldn't find it in roast the last time I tried)? What do I do if a module is in a nascent state and incrementing a | 22:14 | |
version number for every breaking change is a burden? if an actual number is required, can I just leave it at e.g. "0" or "0.0.1" and keep making changes or will that cause something to misbehave in some external tool or ecosystem or package manager or whatever? kinda wonder if I shouldn't just somehow use the git commit hash, or "major.minor." prepended to an incrementing number for every commit like an index | |||
into the commit history since the last major/minor tag or along those lines... | |||
or are we just really trying hard to strong-arm people into doing versioning correctly even at the earliest alpha stages of development? | 22:15 | ||
also, what if people explicitly ask for an older version from their use statement? it can be available in the git repo and tagged and everything, but the META only declares the latest version | 22:18 | ||
22:24
MitarashiDango[m joined,
Tirifto[m] joined,
juanfra__ joined,
ThaEwat joined,
kiti_nomad[m] joined,
uzl[m] joined,
tusooa joined,
patrickbkr[m] joined,
AlexDaniel` joined,
pwr22 joined,
Nasrudin joined,
CIAvash joined,
Garland_g[m] joined,
draco100[m] joined
|
|||
raydiak | my other question atm is about "auth". is github: or zef: or cpan: or whatever really necessary? does it get functionally used for anything? what if I migrate from one to another, won't that break people's existing use statements if they're explicit about auth? or have a same-named account on multiple and don't personally consider any particular one "more authoratative"? wouldn't it just be better to use my | 22:27 | |
handle without tying it to one specific service, which seems like a potential failure point out of my own control? also what if I want the authority to be something tied to my own domain/server? just write whatever I want in there? then what's the point of the service: prefix at all? | |||
22:28
dogbert17 joined
22:29
juanfra__ is now known as Guest6079,
xelxebar joined
|
|||
japhb | raydiak: In reverse order, the ones that I can answer: | 22:30 | |
22:31
DiffieHellman joined,
aluaces left
|
|||
lizmat is glad that japhb is around to answer questions while she hits the sack | 22:31 | ||
japhb | The name needs to be unique within some naming authority, and that naming authority has to be the one that controls access to that data store. We just have some recognized naming authorities already, but there's no reason you couldn't define/enforce some other one. | ||
Have a good night, lizmat! :-) | 22:32 | ||
22:32
finstern1s is now known as finsternis
|
|||
raydiak | g'night lizmat! it was nice chatting with you | 22:32 | |
japhb | raydiak: When you upload packages to zef or cpan, you are uploading a snapshot tarball of a particular version. So they can keep all the versions they want. | ||
22:33
dogbert11 left
|
|||
japhb | :api<0> is explicitly saying "I've thought about it, and I can tell you right now the API is still liquid." | 22:33 | |
Version '*' turns out to be a problem; its interpretation causes issues, so don't use it. fez won't even let you. | 22:34 | ||
Yeah, I can add the benchmark script; I was planning to at some point, but kept forgetting. :-) | |||
22:36
jmcgnh joined,
wamba left,
aborazmeh joined
|
|||
japhb | MasterDuke: Iterable also includes Associative and Seq, and those both need some care to get right. Associative is already handled, Seq I'm not sure if I'll .cache in order to enforce writing only definite lists, or if I'll consider that a clue that the user wants indefinite-length array output. | 22:36 | |
Did I miss anything? | 22:37 | ||
MasterDuke | i suspected something like that, makes sense | ||
22:39
epony joined
|
|||
raydiak | afaik, Iterable means you can loop over it. e.g. Associative (actually, Map) does Iterable. doesn't mean all Iterables have to implement Map. e.g. Lists are also Iterable | 22:41 | |
japhb | Hmmm, should the benchmark script go in tools/ or examples/? | 22:42 | |
raydiak: Yes, I know, I meant that Associative has to be handled separately in CBOR than other types of Iterables, since it has a special encoding and special rules about key order and such. | 22:43 | ||
22:43
Ekho joined
|
|||
japhb | Which is to say an Associative and an Iterable containing Pairs is NOT the same in CBOR. | 22:44 | |
I guess benchmarking is more of a tool thing than an example ... | |||
raydiak | hmmm...I could see a good justification for either. if it has facilities for repetition and timing and outputting that kind of data, put that part in a script in tools, and the actual data and usage in examples? | 22:45 | |
I could also see an argument for refactoring the part I suggested go in examples into tests in t, and have the benchmark tool run certain specific test files in loops with timing | 22:47 | ||
22:50
webstrand joined
|
|||
japhb | raydiak: Interesting idea. I don't think I'd want t/ scripts to be slow enough to actually give good performance measurements (though that might be useful for xt/), because it would slow down the edit/run/debug loop | 22:50 | |
Anyway, I just pushed it. | |||
As the comment at the top says, you'll need a medium-large JSON file to test with (to compare against JSON::Fast on its "home turf"), and I just used the zef ecosystem data for that. | 22:51 | ||
raydiak | good point | ||
thanks! | |||
22:52
dogbert11 joined,
dogbert12 joined
22:55
dogbert17 left
|
|||
raydiak | wonder if there'd be much difference using a different dataset, especially one more deeply nested, or more numbers instead of strings, etc. if you were wanting to use this for MUGS, I'd expect many games to use a lot more numbers | 22:56 | |
22:56
dogbert11 left
23:01
dogbert17 joined
23:02
dogbert12 left
23:03
abraxxa left
|
|||
raydiak | japhb: also, I was just curious for my own education, what factors made you choose CBOR over e.g. BSON or UBJSON or whatever else (whether JSON-inspired/related or not)? | 23:05 | |
japhb | raydiak: The fact that it was self-describing and self clocking, the number of IETF specs that refer to it, the fact that it was explicitly designed to have a relatively simple codec in most languages, the (actively used) extensibility, the richer data model, the fact that it didn't require extra encoding for utf8 or blob (both just slot right in with a leading bytecount), ... | 23:10 | |
raydiak: I'm still working on filling out more different scenarios in the perf-test, especially once I start doing packed structures more complex than 8-bit uints. But I spent yesterday more working on the unnecessarily slow bits that I'd already found. :-) | 23:11 | ||
I've got an idea for a restructuring of the decoder that I *think* will be an across-the-board improvement (faster for decoding any non-trivial structure), but I have no idea whether it will be a few % or a speed doubling. | 23:13 | ||
We shall see. :-) | |||
raydiak | sounds like it's off to a great start! have you tried it under the moar profiler yet? | 23:14 | |
23:15
dogbert11 joined
|
|||
japhb | Nope, haven't done that yet. I wish we had a good per-line profiler, like NYTProf is for perl5, because the routines here are HUGE with big branching structures, so per-call statistics are too rough. :-/ | 23:16 | |
OTOH, the Moar profiler does per-block, doesn't it? That might work out. | |||
raydiak | I don't recall, haven't tried it in many years, I mostly just remember that it exists | 23:17 | |
japhb | nodnod | ||
raydiak | that was one of my optimization thoughts: I was under the impression that these days, multis are often faster than long sets of conditionals | 23:18 | |
23:19
dogbert17 left
23:20
gordonfish joined
|
|||
kawaii | which operator would I use to do three-way string comparison of three different variables? | 23:21 | |
raydiak | leg for strings specifically | 23:23 | |
kawaii | oh I didn't know about leg! | 23:24 | |
lemme try! | |||
raydiak | or coll/unicmp may be more correct depending on your intention. and sort/collate may be easier and/or faster if you're sorting a list of strings | 23:29 | |
I don't actually know much about these things, just look at docs.raku.org/language/operators and search the page for "three-way" | 23:31 | ||
so in retrospect, it would have been more accurate to say for strings specifically: leg by codepoint, unicmp by default lexographic order, or coll by lexographic order customizable via $*COLLATION | 23:41 | ||
japhb | m: given 5 { when * % 2 { say "Odd"; &?BLOCK(6) }; when * %% 2 { say "Even" }} | 23:44 | |
camelia | Odd Even |
||
japhb | ^^ Why does that even work? Why does &?BLOCK go to the given and not to the when? | ||
raydiak | heh, even that isn't right. leg is also lexographic; cmp (not string-specific) is by codepoint, and coll is something I don't fully understand yet | ||
23:46
aborazmeh left
|