🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). 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 6 September 2022.
00:00 reportable6 left
Nemokosch rf: soon there will be a patch with basic stash resetting, please try it 00:01
00:03 reportable6 joined
aaand there it is 00:13
I'm gonna go now, anything further will have to wait until tomorrow 00:14
rf Thanks 00:17
tonyo rf: can you link me the template system you used before, can't seem to find the link for it 00:19
(the fp one)
rf The OCaml one? 00:20
github.com/ocsigen/tyxml
About as good as a template DSL gets IMO
tonyo: Did protones README get clobbered? 00:23
Looking at git history I don't see it, maybe I'm dreaming lol 00:24
tonyo ahh, i think this'd be pretty easy to implement in raku 00:25
forgot it was xml/html
rf I mean once you have an XML templating system HTML is only a step away 00:31
tonyo rf: am i groking this correctly? `a` is analogous to a fn ref?
div ~a:[a_class ["content"]] [ # div being a function ref here?
nvm, i'm in lisp mode 00:32
rf div is a function ~a is a named arg
a_class is a function too, being passed a list with "content"
tonyo yea this would be pretty easy to generate 00:33
rf Yeah you don't have to go crazy with validity too, tyxml is fairly simple the hard part for the team that did it was adding typing and formal verification to your HTML
tonyo: Here's a larger example codeberg.org/boldcaml/librehouse.n...le_edit.ml from a friends old project 00:37
tonyo ~a being essentially a value given to the template render method? 00:38
rf No ~a is your HTML attributes
tonyo i don't think this even requires a grammar 00:39
rf so div ~a:[ a_class "foo bar"] --> <div class="foo bar"></div>
tonyo oh, it's just saying use the ~a type to get to class='foo bar'
is the spacing important or just convention? 00:40
rf Which spacing sorry
tonyo in the template you linked
rf Convention 00:41
If I were to write this div function in Raku its sig would be: sub div(Array[HTMLAttribute] :@a) { ... }
tonyo to raku-ize it would change the look a little bit but pretty easy 00:42
rf sub div(Array[HTMLAttribute] :@a, Array[HTMLNodes] @children) { ... }
Geth doc/main: b2011f0bb6 | (Will Coleda)++ | doc/Language/about.rakudoc
Simplify, shorten, update language/about

Closes #4258
00:48
¦ doc: coke self-assigned No mention of NFG in the docs? github.com/Raku/doc/issues/3258
tonyo rf: i think i could put this together after some extensive data scraping 00:50
00:56 Manifest0 left
rf tonyo: I'm waiting with utmost anticipation 00:58
01:08 jpn joined
tonyo heh, scraping an index of html5 tags and valid attributes 01:13
01:13 jpn left
rf That'll probably be the hardest part 01:15
tonyo yea Web::Scraper didn't age well 01:36
Geth doc/NFG: e8f56b1355 | (Will Coleda)++ | xt/headings.rakutest
more exceptions
01:38
doc/NFG: 95f08d07f0 | (Will Coleda)++ | util/test-modified.sh
Test added files also
doc/NFG: a14318c2be | (Will Coleda)++ | 6 files
Add NFG entry.

WIP! THESE COMMITS WILL BE SQUASHED
02:13 evalable6 left, linkable6 left 02:14 linkable6 joined, evalable6 joined 02:39 human-blip joined 02:40 human-blip left, human-blip joined 02:45 deoac left 03:05 razetime joined 03:07 rf left 03:32 derpydoo joined 04:05 swaggboi left 04:06 razetime left 04:12 swaggboi joined 04:19 xelxebar_ is now known as xelxebar 04:25 Woodi_ is now known as Woodi 04:51 tea3po is now known as TEATIME 05:29 razetime joined 05:42 TEATIME is now known as teatime2, teatime2 is now known as teatime 06:00 reportable6 left 06:02 reportable6 joined 06:10 derpydoo left 06:47 teatwo joined 06:50 teatime left 07:50 coverable6 left, linkable6 left, reportable6 left, unicodable6 left, quotable6 left, benchable6 left, notable6 left, evalable6 left, committable6 left, statisfiable6 left, bisectable6 left, squashable6 left, tellable6 left, sourceable6 left, nativecallable6 left, shareable6 left, evalable6 joined, reportable6 joined, committable6 joined 07:51 unicodable6 joined, bisectable6 joined 07:52 tellable6 joined, shareable6 joined, notable6 joined, coverable6 joined, quotable6 joined 07:53 nativecallable6 joined, squashable6 joined, linkable6 joined, benchable6 joined, statisfiable6 joined, sourceable6 joined 08:07 jpn joined 08:12 jpn left 08:24 razetime left 08:39 Sgeo left 08:40 razetime joined 08:53 Manifest0 joined 08:57 dakkar joined 09:00 jpn joined 09:04 jpn left
Geth doc/main: 2e9043c445 | (Elizabeth Mattijsen)++ | doc/Type/independent-routines.rakudoc
Document done(value)
09:37
09:39 jpn joined
Geth doc/main: 15028a8811 | (Elizabeth Mattijsen)++ | 2 files
Document Buf.Blob and Blob.Buf
09:44
09:50 ab5tract joined 10:00 Nemokosch joined 10:02 Nemokosch left 10:04 razetime left 11:04 linkable6 left, evalable6 left 11:05 evalable6 joined 11:07 linkable6 joined 11:15 yoreei joined 11:27 abraxxa joined
guifa AntonAntonov: having to head out for a trip but on Sunday remind me and I'll send you the slides 11:32
11:32 guifa left 12:00 reportable6 left 12:02 reportable6 joined 13:02 reportable6 left, linkable6 left, quotable6 left, unicodable6 left, bisectable6 left, benchable6 left, sourceable6 left, coverable6 left, squashable6 left, committable6 left, tellable6 left, evalable6 left, notable6 left, shareable6 left, releasable6 left, nativecallable6 left, statisfiable6 left, unicodable6 joined 13:03 bisectable6 joined, sourceable6 joined, shareable6 joined, coverable6 joined, quotable6 joined, nativecallable6 joined 13:04 tellable6 joined, evalable6 joined, benchable6 joined, releasable6 joined 13:05 statisfiable6 joined, squashable6 joined, linkable6 joined, reportable6 joined, committable6 joined, notable6 joined
Anton Antonov @guifa Thanks! 13:20
Geth doc/main: 20f577e214 | (Elizabeth Mattijsen)++ | doc/Type/DateTime.rakudoc
Add availability notice for DateTime.methods

Specifically day-fraction, modified-julian-date and julian-date
13:27
13:51 rf joined
rf m: my @foo; given @foo[0] { default {say 123} }; 13:54
camelia 123
rf This hangs forever
Is that intended?
Also, good morning :^) 13:55
wut
lizmat doesn't hang forever for me either 13:57
rf Huh, must have something broken in my code 13:58
Geth doc/main: 02c89783b9 | (Elizabeth Mattijsen)++ | doc/Type/Enumeration.rakudoc
Document that an enum class can be considered a Map

For the purpose of calling keys, values, kv, pairs, antipairs, invert methods.
doc/main: 5be763bf90 | (Elizabeth Mattijsen)++ | doc/Type/IO/Path.rakudoc
Document IO::Path.user|group
14:08
14:24 [Coke] joined
[Coke] is there a way to get the Unicode 1 Name of a character? 14:26
tellable6 2023-03-07T20:51:24Z #raku-dev <NemokoschKiwi> [Coke]: anyway, sorry, I didn't notice that there was a context in the first place. I thought you just said it as a generic paradigm.
[Coke] e.g. want to be able to search and find "guillemet", which is in that field, not the main name.
14:37 squashable6 left 14:38 squashable6 joined 14:48 yoreei left 14:52 jpn left 14:57 flash548 joined
Geth doc/main: 4aebd168e6 | cfa++ | doc/Type/Enumeration.rakudoc
Fix example typo
14:57
15:10 jpn joined 15:12 flash548 left
Geth ¦ doc: cfa self-assigned docs.raku.org/language/testing.html does-ok github.com/Raku/doc/issues/4253 15:14
tonyo m: say Array.elems 15:18
camelia 1
tonyo m: say Array.Set
camelia (timeout)
Geth doc/main: fcb96e15b2 | cfa++ | doc/Language/testing.rakudoc
Remove unnecessary does-ok =item

A link to docs.raku.org/type/Test#sub_does-ok immediately follows, with a more detailed signature. Index entry maintained.
Closes #4253.
15:21
15:27 Sgeo joined 15:41 razetime joined
rf Ahh 2 hours of debugging just to have a sneaky little statement at the end of my sub being used as the return value :L 15:53
lizmat tonyo: interesting, care to make an issue for it ? 15:58
tonyo not at all 15:59
both of those are bugs, yea?
lizmat no, the first one is correct 16:01
any scalar value can act as a single element list, and thus has 1 elemen 16:02
t
rf m: my @m is Array; say @m.Set
camelia Set()
lizmat yea, calling .Set on the Array (or List) type object hangs 16:03
it should produce a set with the Array type object in it
tonyo ah 16:04
lizmat [Coke] I don't think there's a guillemet named codepoint
there are:
AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK «
BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK »
tonyo updated the bug 16:05
lizmat I assume that is what you were looking for?
rf m: [email@hidden.address]
m: "foo@bar.ca".encode.decode.say;
camelia foo@bar.ca
lizmat tonyo: updated the title :-) 16:06
tonyo danke
or tak
i don't know which dutch uses : )
lizmat very formal: "dank u wel"
less formal: "dank je"
"danke" is actually German :-) 16:07
tonyo weirdos 16:08
16:09 Sussysham joined
Voldenet "tak" means "yes" in polish 16:09
Sussysham Good evening guys
El_Che it means branch in dutch
tonyo apko is my favorite polish word
El_Che that's how wars get started
Nemokosch also means "so" in Polish
Sussysham Namaskar is greating in hindi
16:10 abraxxa left
lizmat "tak" is also Danish and Swedish, I believe 16:10
Nemokosch maintaining the tradition of "yes" being derived from what the situation is like
Voldenet "no" means yes in polish as well
;>
Sussysham have anyone setup comma plugin with jetbrains ide
tonyo i definitely used it in kobenhavn for thanks
lizmat I believe nxadm has such a setup
Nemokosch "no" doesn't mean yes in Polish, it's rather an interjection 16:11
Sussysham i just wanted to say quickly know steps to setup
Nemokosch interjections are hellish to get right in all languages tbh 16:12
Voldenet It's very informal language, but it's more fun if you present it as "yes" ;) 16:13
rf I found an interesting thing. For some reason @ is being encoded as \%40 somehow in Humming-Bird urlencoded requests
16:13 abraxxa joined
Nemokosch encodeURIComponent says that's right 16:13
dakkar oh fun, hummingbird will also truncate header values github.com/rawleyfowler/Humming-Bi...akumod#L64 16:15
(think of `foo: bar: baz`)
16:16 Geth left, Geth joined
dakkar better stop looking at that code 16:16
Nemokosch isn't it better to know if there is an issue 16:17
dakkar it is, but if *I* keep looking, I'll end up rewriting most of it
I'm not the right person to provide *constructive* criticism, sometimes 16:18
Geth doc/main: e93658ffd1 | (Elizabeth Mattijsen)++ | doc/Type/Cool.rakudoc
Date availability of Cool.uniname
tonyo rf: i may have stumbled into something pretty cool: body[ :charset<en/US>, h1[ :text-value<Hello there!> ], div[ p[..], p[..] ] ] 16:21
rf tonyo: That is excellent
tonyo testing it right now, precomp is taking forever
16:21 Sussysham left
rf dakkar: If I had enough time to tackle every problem I would have :^) 16:21
16:22 Sussysham joined
rf dakkar: That code also isn't for decoding headers, that's just for the pre-flight checks. 16:22
ie, looking for content-length and transfer-encoding 16:23
dakkar rf: eh! at a minimum, you probably want to `$string.split(': ',2)`
(also, I'm not completely sure that the space after the colon is required by HTTP/1)
rf NGiNX and httpd will re-write to use them 16:24
Note: Humming-Bird is not meant to face the internet directly. Please use a reverse proxy such as httpd or NGiNX.
dakkar ah, ok, that simplifies your life quite a bit! good idea
El_Che caddy is a nice one to recommend
(auto https through letsencrypt and trivial to setup) 16:25
16:26 lichtkind joined
rf dakkar: Yeah, mostly just focused on application layer stuff, I've written HTTP servers before but I find it's a waste to reinvent the wheel when most modern systems just use NGiNX or Apache as gateways anyways 16:26
El_Che or specialized devices 16:27
dakkar github.com/rawleyfowler/Humming-Bi...kumod#L153 another `split` that should have a limit
(otherwise a body with a \r\n\r\n in it will get truncated) 16:28
rf $body = @split_request[1] || $body;
dakkar yes, by @split_request may have more than 2 elements
s/by/but/
rf Ah, good catch 16:29
dakkar github.com/rawleyfowler/Humming-Bi...kumod#L157 same split here for the headers
(much less important: Cookie uses encode/decode the "wrong" way around, with e.g. `encode` going from string to data structure)
(I would call them `new-from-request-header-value` and `to-response-header-value`…) 16:31
(but I'm infamous for my long method names)
rf I prefer the idea of str -> object == encode, object -> str == decode 16:32
El_Che req and resp
val
dakkar rf: ehrm… most of the rest of the world doesn't
El_Che every programmer will understand those abbrevations
Voldenet rf: but it's the other way around in perl
dakkar and in the Unicode spec, and in most RFCs…
"encode" goes from internal representation to external representation, "decode" goes the other way 16:33
16:33 Sussysham5 joined
dakkar (then again, this is mostly an internal class, so meh) 16:33
Voldenet tbh. I'd put headers/body parsing as state machine encapsulating the header and never allocate unnecessary strings out of it
16:33 Sussysham18 joined
dakkar Voldenet: we're still at the "make it correct" stage, the "make it fast" comes later 😜 16:34
Voldenet But making it fast would then need rewrite
dakkar and that's what good test coverage is for
Voldenet it's probably easier to get it working fast before features are added
16:34 Sussysham left
dakkar (I'm not being completely serious, in case it weren't clear) 16:34
16:34 Sussysham18 left
rf I think the performance isn't particularly bad right now anyways 16:35
16:35 Sussysham joined
rf Could be cope haha but it's only been alive for 3 months 16:36
dakkar my general progression is 1) correct 2) usable 3) fast
Voldenet I think performance is crucial everywhere, making this one-time-use script faster will save you precious 20ms of your life
dakkar (correct+usable tend to happen together while I write the tests)
Voldenet for me it's 1) fast 2) quick 3) speedy
dakkar Voldenet: ah, you're one of those who can give the wrong answer very quickly 😁 16:37
Voldenet It's not wrong, it's
uh
approximate
dakkar rotfl
Seymour Cray would be proud
Voldenet True (+- 1)
16:38 Sussysham5 left
rf I think the search for correctness can leave you wanting, especially if you're being correct just for the sake of it, but that might be a hot topic 16:38
No practical software is 100% correct, and I have yet to find an outlier
Nemokosch > "encode" goes from internal representation to external representation, "decode" goes the other way um... wait what 16:39
Voldenet that's why I like that new convention of to-json and from-json
to-string and from-string
etc.
it's more verbose in what it does
tonyo m: class AA { has $!tag; submethod BUILD(Str:D $!tag) {} }; AA.new("A") 16:40
camelia Default constructor for 'AA' only takes named arguments
in block <unit> at <tmp> line 1
Nemokosch one can quickly develop a sense that Perl did everything backwards
dakkar eh, see my ideas for the Cookie methods (remember that the `set-cookie` response header uses a different format than the `cookie` request header!)
Nemokosh: uh?
(sorry for the nick typo) 16:41
tonyo m: class AA { has $!tag; submethod BUILD(Str:D $!tag) {} }; AA.new(:tag<a>) 16:42
camelia Too few positionals passed; expected 2 arguments but got 1
in submethod BUILD at <tmp> line 1
in block <unit> at <tmp> line 1
Nemokosch namespaces, dependency management, loop control statements, versioning, and now the meaning of encoding and decoding as well?
16:42 silug left, silug8 joined
dakkar Nemokosh: where did you ever find "encode" to mean "from external representation to internal"? 16:42
16:42 Scotteh left 16:43 razetime left, Scotteh joined, razetime joined
dakkar (btw, Perl doesn't use either of those terms anywhere in the language, so I'm not sure what you're talking about) 16:43
16:44 Sussysham left
Nemokosch now, either we have different ideas about what "external" or "internal" mean, or there is encodeURIComponent I just used like 20 minutes ago 16:44
the high-level representation being encoded into something an URI can contain
dakkar encodeURIComponent goes from bytes to %things, right?
the %thing is the external form (the one you send over the network) 16:45
Voldenet encodeURIComponent goes from string to string
Nemokosch no, it goes from high-level strings to them
Voldenet _obviously_
dakkar the bytes are the (more) internal representation (the one your application cares about)
so… I'm confused
Nemokosch there are no bytes involved
dakkar ok, now I fear I'm thinking of something completely different 16:46
Voldenet the terminology doesn't involve casting but converting between codes
so, you encode things to url component format
s/url/uri/
dakkar sure, but the %00 format only encodes values between 0 and 255 16:47
Nemokosch like, wasn't it always like, you have data on one end, encode it, send it to the other, than decode it and get the high-level representation again?
then*
dakkar (you can't encode 💩 directly, you need to encode the character into a byte sequence, usually with utf-8)
Nemokosh: yes
"have data" → internal representation 16:48
"send it" → external
so we're saying the same thing
Nemokosch so yes, you have the opposite perspective for internal and external
dakkar I'm looking from my application's point of view 16:49
Nemokosch that's why I rather said high-level (abstract, if you may) and low-level (concrete)
dakkar the network (or the disk) is outside
rf I see it as, if I have a Raku object that is my encoded state because it is unusable for external consumers
dakkar gives up ☺
rf It's like encrypt vs decrypr
Nemokosch the high-level version is not encoded
rf I mean it's all semantics I don't think it's worth getting fired up about 16:50
16:50 Sussysham joined
Nemokosch in an ideal world, the encoded version wouldn't exist, so to speak 16:50
Voldenet In an ideal world it still would, because encoded version can be compressed for example 16:51
dakkar my Turing machine has a very long tape!
Voldenet encoding and decoding are only transport-related
Nemokosch depends on how ideal 😛
Voldenet My ideal is better than yours
can't we both agree on that :> 16:52
Nemokosch but do you have functors
Voldenet right, in an ideal world sending data is just a pure function that alters the world into other state of the world
rf No, it uses lenses :^) 16:53
Nemokosch by the way, that's how it is in Raku as well. you encode a string into a buffer, and decode that buffer back to a string
rf m: "foobar".encode.decode.say; 16:54
camelia foobar
rf m: "foobar".encode.say;
camelia utf8:0x<66 6F 6F 62 61 72>
Voldenet But a string is an internal representation in this case and bytes are used by the transport
Nemokosch I find the word "internal" unhelpful here. Sure, internal in the sense that it cannot be ejected into a physical network. 16:55
Still that's the high-level interface towards humans
it's external towards the human reader, from which perspective whatever machinery the computers are doing is an "internal" detail 16:56
Voldenet now I don't like this terminology too much, it's so unclear
it's too related to character encoding 16:57
Nemokosch well, for me, the other one is too related to transportation 16:58
Voldenet it's almost like .encode method shouldn't even be present on a Str to begin with 16:59
Nemokosch why is it like that?
Voldenet because it's the transport defining its method of encoding
Nemokosch btw it's the same in Python actually
as long as we say that saving a file to a disk is also a manner of transportation 17:00
Voldenet in C# there's `Encoding.UTF8.GetBytes("string")` and `.GetString`
now that I think of it, it's obvious why
dakkar perl5's `Encode` module works that way too 17:03
Nemokosch the gordian knot 17:04
lizmat hmmm looks like Github is having problem delivering wehbooks
*webhooks
Geth doc/main: fcb96e15b2 | cfa++ | doc/Language/testing.rakudoc
Remove unnecessary does-ok =item

A link to docs.raku.org/type/Test#sub_does-ok immediately follows, with a more detailed signature. Index entry maintained.
Closes #4253.
17:05
17:05 Sussysham left
Geth doc/main: ee6ecf6821 | (Elizabeth Mattijsen)++ | doc/Type/IterationBuffer.rakudoc
Document IterationBuffer
17:10
17:11 Sussysham joined 17:26 razetime left
rf Is there a way to convert the blobs from Digest sha256 to Str's without it exploding? 17:29
tonyo if you want the hex, there's the hex funcs in the module 17:31
rf That would be ideal
thanks
tonyo if you have the buf[uint8] you can do this too: 17:32
m: my Buf[uint8] $b .=new(30..96); say $b>>.map(*.base(16)).join(" ")
camelia 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60
tonyo s/>>/ 17:34
17:34 dakkar left
tonyo also works 17:34
[Coke] lizmat: yes, I'm saying that AB was called like left guillemet in unicode 1, so it's probably in there as an alias. 17:38
more generally, want App:Uni to be able to search aliases. 17:39
Geth doc/main: 8e50545cf6 | cfa++ | 3 files
Spelling, spacing
17:42
[Coke] unicodable6: « 17:44
unicodable6 [Coke], U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK [Pi] («)
[Coke] unicodable6: ︘ 17:45
unicodable6 [Coke], U+FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET [Pe] (︘)
[Coke] m: say ("︘".uniprop('nameAlias'); 17:46
camelia ===SORRY!=== Error while compiling <tmp>
Unable to parse expression in parenthesized expression; couldn't find final ')' (corresponding starter was at line 1)
at <tmp>:1
------> say ("︘".uniprop('nameAlias');⏏<EOL>
[Coke] m: say("︘".uniprop('nameAlias');
camelia ===SORRY!=== Error while compiling <tmp>
Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1)
at <tmp>:1
------> say("︘".uniprop('nameAlias');⏏<EOL>
expecting any of:…
[Coke] m: say "︘".uniprop('nameAlias');
camelia 0
[Coke] ah well. that's the class alias (which I suspect they did on purpose to have a prod test for this. :P ) 17:47
*classic
m: say "︘".uniprop('nName_Alias'); 17:48
camelia 0
[Coke] m: say "︘".uniprop('name_Alias');
camelia 0
[Coke] OMG, the wide character is screwing up my display here somehow.
m: say "︘".uniprop('Name_Alias'); 17:49
camelia 0
[Coke] (ok, I think that's the canonical name for the property)
tonyo rf: abusing circumfix makes this pretty trick 17:53
div[ a[ "google" ]:href<google.com> ]:hidden -> <div hidden><a href="google.com">google</a></div> 17:54
falsifian Would be nice if the attributes could go before the content. div:hidden[ ... ] 17:56
tonyo i think they can
ah, maybe not 17:57
17:57 thundergnat joined
thundergnat bisectable: say cross((0, 1), (1, 1), :with(&infix:<&&>)); 17:57
bisectable6 thundergnat, Will bisect the whole range automagically because no endpoints were provided, hang tight
thundergnat, Output on all releases: gist.github.com/6b13cad3ae0b591a32...957613f8a8 17:58
thundergnat, Bisecting by output (old=2016.12 new=2017.01) because on both starting points the exit code is 0
thundergnat, bisect log: gist.github.com/06f489d8a74bb9b24a...112269237a
thundergnat, (2017-01-16) github.com/rakudo/rakudo/commit/8a...3534a07026
thundergnat, ⚠ New output detected, please review the results manually
thundergnat, Output on all releases and bisected commits: gist.github.com/337ed12fb5fe27e99b...0810527551
thundergnat Wow. Old regression 17:59
18:00 reportable6 left 18:01 reportable6 joined
thundergnat ^ lizmat one of your commits 18:02
18:02 thundergnat left 18:03 abraxxa left
lucs @tonyo: Um, 'zef checkbuild' complains of not finding one of my *.rakumod in META6,json's "provides', which is on purpose, my understanding being that if it was, it may appear in for example raku.land listings. Should I just ignore the complaint and go ahead and upload? 18:04
tonyo yea force it 18:05
lucs OK
Oh, also, my module directory contains irrelevant-to-the-release files.
Will they just be ignored or should I clean them out of there? 18:06
@tonyo: Another way perhaps to phrase that: can I peek inside the tarball that would be uploaded before it actually does get uploaded? 18:07
tonyo yea for sure you can look in sdist/ 18:08
18:08 jpn left
lucs Ah, I see. Looking... 18:08
Hmm... A lot of precomp files in there. 18:09
Normal?
18:09 jpn joined
@tonyo: (As well as files that don't belong to the release, I'll move them out.) 18:10
18:17 Sussysham left
tonyo it's normal as of now, if you're using the .gitignore i'd recommend using git archive and then using `fez upload --file=<x>` - the .gitignore doesn't work like a strict globber so i need to rework it a bit 18:25
lucs Which file is this "x"? 18:26
tonyo wherever git archive output the tgz 18:27
lucs Oh, I see.
By the way,
I cleaned out the precomp`s and stuff, but
I get error:
=<< Null regex not allowed 18:28
=<< ERROR: All bundlers exhausted, unable to make .tar.gz
(after plain "fez upload" -- am I missing that "file" argument?) 18:29
Oh, let me guess: fez upload --file=sdist/wUtEvEr.tar.gz ? 18:31
tonyo yea 18:33
lucs You know, this is not quite obvious from trying to understand the docs :( 18:34
tonyo it's getting a facelift in the next version
Nemokosch which docs, good sir?
tonyo the fez docs are lacking
lucs Well, it appears to have correctly uploaded. 18:36
Nemokosch are you managing with fez all alone? I mean, there's kind of pressure on that, now that it is the preferred ecosystem
lucs Thanks for helping me out @tonyo.
It appears in raku.land. 18:52
Yay!
18:55 tea3po joined 18:58 teatwo left
rf tonyo that is nice 19:06
19:06 a3r0 left 19:07 a3r0 joined
rf Is there a nice way to see if a string contains only ASCII characters? 19:10
I'd prefer not to use Regex for this unfortunately 19:11
tonyo rf: github.com/tony-o/ryml
rf I'm gonna try to rewrite a part of my personal site with it tonight toyno 19:12
tonyo**^
tonyo there's still some tweaking left to do
[Coke] m: my $str="something"; dd !so $str.NFC.grep(* > 128).elems 19:16
camelia Bool::True
[Coke] something like that, maybe.
m: my $str="something"; dd !so $str.ords.grep(* > 128).elems ; # ords instead. 19:17
camelia Bool::True
[Coke] m: my $str="something␤"; dd !so $str.ords.grep(* > 128).elems ; # ords instead.
camelia Bool::True
[Coke] m: my $str="something␤"; dd !so $str.NFC.grep(* > 128).elems
camelia Bool::True
[Coke] m: my $str="something␤"; dd $str.ords.grep(* > 128).elems eq 0 19:18
camelia Bool::True
[Coke] m: my $str="something"; dd $str.ords.grep(* > 128).elems eq 0
camelia Bool::True
[Coke] Dammit.
ok, giving up now.
rf Lol [Coke] that was my first thought but it didn't work 19:25
nvm NFC is working idk why my .ord was borked 19:27
19:46 vrurg left 20:11 vrurg joined
lucs In raku.land, can the search box be used to find modules matching a given tag? 20:14
tonyo rf: gist.github.com/tony-o/a614749299b...d69f571f75 20:25
20:29 vrurg left 20:32 vrurg joined
tonyo that's what it looks like so far 20:41
20:42 lucs left 20:47 vrurg left 20:48 vrurg joined 20:49 euandreh left
rf tonyo: That's awesome haha can't wait to try this out tonight 21:12
tonyo trailing commas no longer necessary 21:13
also bear in mind that the renderer doesn't escape values for attributes yet (or text data)
but it's an easy fix in the `lib/Ryml.rakumod`
rf It would be nice to have an optional escape 21:14
tonyo it'll get it eventually 21:15
still fiddling around with the xbin/gen
the way this is written would make it easy to make a server side rendering mechanism 21:18
21:28 Guest35 joined
rf Yeah that's how TyXML is used typically 21:33
tonyo added escaping 21:34
rf Am I able to do: my $partial = div[ 'foo' ]; my $html = html[ head[], body[ $partial ] ]; 21:35
21:39 code0zero joined
tonyo yea 21:42
Guest35 Hi, everyone. Is Perl 5.10 still sufficient to build Rakudo Star as indicated by rakudo.org/star/source ?
I am having trouble building it by way of brew 21:43
Experimental "my" subs not enabled at /private/var/folders/6f/lpcqx0qs7fxgm_8f5c010x4r0000gn/T/tmp.mDFjlkgH/3rdparty/nqp-configure/lib/NQP/Config.pm line 1519. 21:44
[Coke] I imagine no one has tested a perl that old in some time. 21:45
Someone did just submit a patch to claw back a slightly more recent perl than that, I think. 21:46
21:47 code0zero left
Guest35 I see that now 21:48
github.com/Raku/nqp-configure/comm...26f7c318b7
I think that will help my error
[Coke] yup, that one. 21:49
22:03 ab5tract left 22:09 gcd left 22:14 squashable6 left 22:15 squashable6 joined
tonyo rf: there's no mechanism in there verifying the softer side of complete vs partial docs 22:35
the renderer is also kind of dumb, you could put a tr element under a `p` and it wouldn't really care
rf That's good. I think partials are good 22:36
lucs Okay, so my Test::Selector has successfully been installed by zef. 22:41
But when I run its supplied bin/tsel, I get a "Could not find Test::Selector::Main" error, which is part of the tarball that was uploaded. 22:42
Should that module, contrary to what I believed, have been listed in the META6's "provides" section? 22:43
Also, how does one debug these problems? 22:44
rf Yes it needs to be listed in the META6
lucs I'm pretty sure I read that what was listed in "provides" was for indexing purposes, in CPAN or raku.land for example. 22:45
Is that wrong?
I want Test::Selector to be listed, but don't try to install Test::Selector::Main, that kind of makes no sense. 22:46
rf if you run zef install . --force-install on your project locally 22:47
Do you get access to that module?
Nemokosch it seems that there might be two or even three parallel topics here 23:03
lucs @rf: Sorry, had to answer the door and discuss a few things with the neighbors. 23:05
I'll try a force-install now.
@rf No luck (same result as earlier): gist.github.com/lucs/9c89b6846313a...31c4d26b53 23:08
The code is here: github.com/lucs/Test-Selector 23:09
Nemokosch don't forget that use is not some linker stuff; it's resolved when you invoke the program 23:10
lucs @Nemokosch Er, not sure what that comment implies I should be doing or trying. 23:12
Nemokosch if Test::Selector::Main is not registered anywhere in the module registry, that's too bad
lucs Oh, okay, but I'd expect zef to have taken care of that, no?
Nemokosch that the script doesn't know more about available modules than any raku script
at which point this is not zef level stuff anymore 23:13
lucs Hmm... What should I do, or have done, differently?
23:15 evalable6 left, linkable6 left
Nemokosch the simplest thing would be really to just expose that module so that it gets registered as a use-able module 23:15
23:16 evalable6 joined
use lib <location> also might help but I'm not sure how dynamic use is exactly 23:16
23:16 linkable6 joined
if it's too dynamic, that's not good because the location of the actually invoked script is unknown, I don't think use lib is a good idea in that case 23:16
lucs 'use lib' would require me to give a path, I don't think that's the right approach. 23:17
Nemokosch well yes
lucs But maybe that META6 "provides" holds part of the answer. 23:18
Nemokosch however, you do need to supply the module somehow
lucs "use Test::Selector" works fine 23:19
Nemokosch I think ultimately the question is: to what extent is a script you put under bin, just a random Raku script that you happen to install to a location
lucs (from the REPL) for example.
But "use Test::Selector::Main" is not found. 23:20
Nemokosch if there is no magic about that, then you need to let it know about the module you are trying to use, like you would be for any other script
lucs Look, my understanding, which may be wrong, is that that is what zef is supposed to do.
Paging @ugexe 🙂 23:21
23:23 euandreh joined
rf lucs: It can't find it because you dont specify its location in META6 23:23
tellable6 rf, I'll pass your message to lucs
lucs @rf: That makes sense. 23:24
So the "provides" would be more than just to allow indexing.
I'll add it to the META6, reupload, and hope it works. 23:25
Nemokosch it's definitely more than "just" indexing but you are also kind of right that it's a public interface
rf if you do "provides": { "Test::Selector:Foo": "lib/Test/Selector/Foo.rakumod" } you will be able to find "Test::Selector::Foo"
lucs Yeah, sounds good. 23:26
Will try that.
Back in some minutes...
23:31 NemokoschKiwi joined 23:39 deoac joined 23:40 NemokoschKiwi left
That fixed it. 23:51
Thanks all. 23:52
If I find that place where I read that misleading info about "provides"'s role, I'll report it.
[Coke] ... hopefully it wasn't the docs site. 23:55
Nemokosch the truth is, "provides" is kinda both - an interface towards what you want to install, and a map from module names to compunit locations