🦋 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