00:01 librasteve joined
Voldenet apogee_ntv: it doesn't seem so github.com/lizmat/IRC-Client/blob/...kumod#L546 (there would be something about AUTHENTICATE if sasl was supported) 00:05
00:07 librasteve left
Voldenet practical solution would be a plugin implementing method irc-n376 that'd send `NickServ identify` 00:11
00:11 jjido left 00:22 librasteve_ left 00:28 inspork left 00:34 librasteve joined 00:38 inspork joined 00:41 librasteve left
[Coke] Xliff: I think there was a discussion about that, but I did not participate 00:41
01:07 librasteve joined 01:12 librasteve left 01:15 xinming left 01:23 hulk joined 01:24 xinming joined, kylese left 01:26 librasteve joined 01:31 librasteve left 01:33 guifa joined 01:43 librasteve joined 01:48 librasteve left
guifa so working with my forthcoming Canvas::Simple module 01:52
I'm thinking about changing my approach
right now on the mac I've got it successfully opening up a window with a WebKit view in it, and managed to get full two way communication between Raku and JavaScript in it 01:53
my goal was just to allow a simple graphics pad where one can display images or do some simple pixel adjusts / lines
but thinking now it might be better to do two modules: one that might be, I dunno, UI::Web and then have some image module that depends on it and loads in the page I've designed for image stuff 01:55
02:00 librasteve joined 02:04 librasteve left 02:15 hulk left, kylese joined
jdv guifa: nice talk 02:26
guifa ugh they posted it? Absolutely not my best =/ I got moved so wasn't able to do a dry run and double check some perl details with peregrin and others 02:27
jdv i watched the video. i already knew most of it but it was a nice side by side piece. 02:28
thanks for doing it 02:31
guifa next year I'll have something much better 02:32
so many projects brewing just need to finish some of them
02:33 librasteve joined 02:38 librasteve left 03:05 librasteve joined 03:14 librasteve left 03:27 librasteve joined 03:29 Aedil joined 03:35 librasteve left 03:45 kylese left 03:47 kylese joined 03:48 librasteve joined
patrickb Xliff: re varargs. Yes, I know how to proceed now. Still need to continue with the actual implementation. 03:49
03:53 librasteve left 04:00 dg left 04:04 librasteve joined 04:05 dg joined 04:23 dg is now known as op 04:27 op left, op joined, op is now known as dg 04:32 dg left, dg joined 05:08 librasteve left 05:22 librasteve joined 05:27 librasteve left 05:32 librasteve joined 05:36 librasteve left
Xliff patrickb: That's awesome. Can you give me a quick overview or hint as to how you plan on proceeding? 05:37
jdv: Ack! Where is that? I would love to look at it. 05:39
patrickb Xliff: Basically this: github.com/Raku/problem-solving/is...2954082152 06:00
06:00 librasteve joined 06:03 Sgeo left 06:16 librasteve left 06:18 apac joined 06:30 librasteve joined 06:37 librasteve left 06:46 apac left 06:51 librasteve joined 07:06 apac joined 07:07 jjido joined 07:53 librasteve left 08:05 apac left 08:10 librasteve joined 08:12 dakkar joined 08:15 librasteve left 08:38 librasteve joined 08:49 jjido left
Xliff OK, so would then C be responsible for detecting the type? Would the varadic part simply be a list of pointers? 08:56
08:57 apogee_ntv left
Xliff patrickb ^^ 08:57
timo yeah it's always like that with C variadic arg functions
the types have to be signalled "out of band", for example see how printf and scanf do it
patrickb Yes, there already is a mapping table in Moar. I'll just reuse that, and fail for all types not in that list. It's up to the user to cast to a type moar knows how to marshal. 08:58
Xliff I'm not sure, but wouldn't the format spec determine what that arg is cast to?
timo yeah if there's a "%f" in the format string and you pass an integer, you're probably in for a surprise 08:59
but that's for the user "one step above" nativecall, or at least the nativecall ops that moar offers
patrickb In plain C that format spec has no influence on how some variadic arg is actually passed. That solely depends on the type of the variable itself. The format spec is there to tell the calling code what types it should expect. 09:01
s/calling code/called code/
Xliff Exactly. 09:02
OK, well if help is wanted, I'm around. I've been working around varaidics for bloody 7 years now...
timo now the only thing remaining that i could think of is passing (and maybe returning) structs by value rather than by reference. there was one library i was interested in many years ago that used that :D 09:03
patrickb It'll be some time before I'll tackle this again. Still have to get PTY support on Windows implemented first.
Xliff timo: LOL! 09:04
timo: Raylib?
timo i think it might have been SDL_GPU?
something was taking an RGB triplet as a struct
Xliff timo: I had to work around that with notcurses just last week!
timo when you're already forced to build a wrapper library in C anyway it's not too too bad 09:05
Xliff Yeah. Much of notcurses was static inline, so that was a requirement.
timo yeah
i find it funny that "not" is also a prefix in german for something like "emergency" or "of neccessity"
like in "emergency rations" could be translated to Notnahrung (but actually the right term seems to be Überlebensration, i.e. survival ration) 09:07
Notsignal -> Distress Signal
Notausgang -> Emergenly Exit 09:08
09:57 apogee_ntv joined 10:00 librasteve left 10:30 librasteve joined 10:35 librasteve left 10:43 librasteve joined
apogee_ntv If anyone on Windows/Linux could do a zef install Tokenizers btw, I will love you long time. 11:13
I have no way to test my Makefile on Windows especially.
lizmat ===> Building: Tokenizers:ver<0.1.3>:auth<zef:apogee> 11:14
[Tokenizers] ❌ Required tool 'cargo' not found in PATH. Please install it.
apogee_ntv Oh yeah, I forgot to mention it needs cargo and a C compiler.
(cargo is Rust compiler -- the wrapped library is Rust) 11:15
lizmat after a apt-get cargo I get 11:16
[Tokenizers] error: failed to parse manifest at `/home/liz/.zef/store/a8ebdbbdc71c1c5edd562c1fa0362d254c9db757.tar.gz/dist/vendor/tokenizers-ffi/Cargo.toml`
[Tokenizers] Caused by:
[Tokenizers] failed to parse the `edition` key
[Tokenizers] Caused by:
[Tokenizers] supported edition values are `2015` or `2018`, but `2021` is unknown
apogee_ntv Oof, hm 11:17
lizmat could by that the Linux dist of that machine is pretty old
apogee_ntv Yeah possibly
lizmat but that's the only Linux box I have direct access
to
lizmat returns to her regularly scheduled programming 11:18
apogee_ntv Yeah that's fair enough, Rust ecosystem is a pain, Tokenizers has so many dependencies it's hard to say if they need 2021 or not lol
Tokenizers the wrapped Rust lib I mean, not my wrapper.
lizmat yeah, gotcha 11:28
11:30 jjido joined 11:41 jjido left
tbrowder having ChatGPT is like having lizmat near by 11:43
and doesn't waste her time 11:44
jdv Xliff: what? 11:46
www.youtube.com/watch?v=IqHUB3J0w3w ? 11:48
12:04 librasteve left 12:08 librasteve joined
tbrowder thnx for the link, is all on youtube now? was Damian there? 12:11
12:14 librasteve left 12:20 librasteve joined
Xliff jdv: Thankee! 12:21
12:24 librasteve left 12:25 librasteve joined
disbot3 <librasteve> apogee: i haven’t touched the code in a while, but my Dan::Polars module integrates raku Data ANalytics to rust Polars library … the Build.pm pretty much auto builds all the dunkin’s 12:26
<librasteve> s / dunkin’s / dynlibs / 12:28
12:29 jjido joined
disbot3 <librasteve> github.com/librasteve/raku-Dan-Pol...n/Build.pm 12:29
<librasteve> main frustration with Rust ffi is lack of a Rust ABI so have to run everything as a proxy object (happy to learn a better way) 12:33
12:33 librasteve left 12:34 jmcgnh left 12:35 librasteve joined 12:39 librasteve left
lizmat nice link, wrong tag :( 12:45
12:46 jjido left 12:47 jmcgnh joined 12:53 librasteve joined
apogee_ntv librasteve: DBIish PR to add SQLCipher support - github.com/raku-community-modules/...h/pull/244 12:55
12:59 librasteve left
apogee_ntv If anyone with community access wants to take a look, please do. 13:01
lizmat I'm too DBIish noob to be able to judge 13:05
apogee_ntv Fair, it is largely a duplicate of SQLite if that helps. Just 4 new functions at low level and 2 new ones at high level 13:06
I can expose the v2 key functions if desired but in practice I've never seen them used. 13:07
Because people don't usually do multi-schema sqlite files, they just do 2 files. 13:09
disbot3: My Build.pm also builds all the dylibs, it just needs cargo to pull all the dependencies for HF Tokenizers 13:10
It pulls like 40 crates. 13:12
13:25 tejr left 13:29 librasteve joined 13:35 librasteve left 13:44 librasteve joined 13:49 librasteve left 13:56 librasteve joined
disbot3 <librasteve> yes but if you use Build.rakumod to move your toml in from resources then that helps 13:56
SmokeMachine lizmat: did you thought about the suggestion on adding block code as substring of $?SOURCE? Would that make sense? 13:58
lizmat yes, in RakuAST I guess we could add that, but how to access that then? and would it only to subs / methods ? or any block ? 13:59
SmokeMachine I think that would make sense to be for all block… but idk how would that be accessible… :( 14:00
14:02 tejr joined, librasteve left 14:04 librasteve joined
SmokeMachine Could Block just have a method for that? 14:04
lizmat sure it could, but where to store the actual source, or pointers to it 14:12
also: if you'd only require this in a stacktrace, the line-number could be used to index into $?SOURCE 14:13
14:13 jjido joined
SmokeMachine usercontent.irccloud-cdn.com/file/.../image.png 14:14
14:16 tejr left, tejr_ joined, tejr_ is now known as tejr
SmokeMachine lizmat: I would like to use that for more than stacktrace... If I have that, I do not need to create a new custom pass when using Red... Red's map/grep/first could just get the code from the block, and (using .AST) ght the ast and convert it to Red::AST... 14:16
lizmat are you doing this at compile time, or at runtime ? 14:17
SmokeMachine (but it would probably perform better with the custom pass... because it would be translated at compile time...)
my original plan was to do a custom pass on compilation to transform ALL .map(block) (same for grep and first), into .map(block, :red-ast(translated block))... then all maps that are not from Red would just ignore the new parameter and Red would use it... but on my recent tries, I've seen that's harder that it seems... because what the block does depends a lot on the parameter passed to it... and I only know that at run time... 14:21
lizmat: ☝️ 14:22
14:37 merp left 14:39 jjido left 15:07 librasteve left 15:11 librasteve joined 15:23 apac joined 15:51 apac left 16:13 apac joined 16:16 librasteve left 16:29 librasteve joined
apogee_ntv librasteve: Not sure if you saw my message earlier, I pushed that DBIish PR for SQLCipher. 16:32
16:33 librasteve left
apogee_ntv Oh it pings on Discord too, good to know. 16:33
16:34 apac left 16:38 librasteve joined
apogee_ntv Would adding reading/metadata rw to Image::PNG::Portable be desirable or should I just make a new lib? 16:41
16:42 dakkar left
apogee_ntv Probably a q for lizmat 16:46
I'd rather build on the existing ecosystem where possible but don't want to add a bunch of stuff that's out of scope. 16:47
disbot3 <librasteve> apogee_ntv: I have reviewed and approved your DBIish PR, 17:04
lizmat librasteve I'm looking at a 52 Bad Gateway :-) 17:05
*502
apogee_ntv If you feel affinity with the Image::Png::Portable module, why not take it over ? 17:06
but a PR for reading / writing metadata is also cool :-)
disbot3 <librasteve> lizmat: would you be OK for me to merge and release this PR (bear in mind I also am not a SQLlite expert so I can't really cover low level things) - or maybe (since DBIish is quite central module) we should ask a 2nd review (SmokeMachine?)
<librasteve> lizmat: darn ... was just updating
lizmat if SmokeMachine thinks he can judge it, I would wait for their judgement 17:07
disbot3 <librasteve> please gimme 10 mins
17:11 jjido joined
SmokeMachine I’m not a specialist either, but looking at it on my cell phone… could the cypher classes just extend the SQLite ones? Or aren’t they as similar as them seems to be while I’m not able to look both at the same time? 17:23
librasteve: 👆 17:24
tonyo . 17:29
disbot3 <librasteve> lizmat: server should be fixed ...? 17:30
lizmat it is.. :-)
disbot3 <librasteve> phew 17:31
<librasteve> weekly: harcstack.org/ now upgraded to use Hilite module
<librasteve> weekly: and the Markdown component (that uses Text::Markdown) 17:32
<librasteve> SmokeMachine: good point, I tend to lean to a once is happenstance, twice is coincidence and three times needs refactoring pov ... in planer english that means repeating yourself a couple of times is often OK vs. adjusting classes to have eg. role Blah::Common {} and then have two consuming classes ... when you are copying the same code (with tweaks three or more times, then I 100% agree to refactor 17:36
<librasteve> anyway just because my review was approval, doesn't mean you have to follow suit ... suggest you run a review on a bigger screen and feel free to do it your way 17:37
18:05 librasteve left
apogee_ntv lizmat: I'd be happy to take it over if that's an option, I don't really know how the community modules work. :D 18:10
lizmat they're there for someone to take care of them
apogee_ntv librasteve I can't merge it, no write permissions :D
lizmat sometimes that's just an occasional PR
you mean the DBIish on? 18:11
*one
disbot3 <librasteve> i think you need to be added to the gh org
apogee_ntv Yes the DBIish one
disbot3 <librasteve> for important stuff, i think we should try to avoid merging own PRs … don’t know if there’s a setting for that 18:12
<librasteve> eh cro, dbi, etc that s used widely
<librasteve> then i guess you need to have raku community auth to release via fez 18:13
18:15 kylese left 18:16 kylese joined
lizmat I've merged the PR 18:17
and uploaded to zef 18:19
apogee_ntv Thanks lizmat! 18:20
lizmat no, thank you! :-)
apogee_ntv I'll try to get that Image::PNG::Portable change in tomorrow, it will be able to read pixels to a matrix of RGBA values and read/write tExt metadata (and others if I can figure them out). 18:21
lizmat you can start by making a fork 18:22
(on Github)
18:28 librasteve joined 18:36 librasteve left 18:49 jjido left, guifa left 18:52 guifa joined
lizmat librasteve that concludes my issuing :-) 18:54
18:58 guifa left 19:04 librasteve joined 19:08 librasteve left 19:19 Xliff left
disbot3 <librasteve> thanks! ? 19:20
19:22 apac joined 19:36 librasteve joined 19:44 librasteve left 19:45 librasteve joined 19:49 librasteve left 19:54 librasteve joined 19:57 Xliff joined
tbrowder does raku .e version have a .is-odd method on an Int? 20:15
20:20 librasteve left 20:42 Aedil left 20:49 jjido joined 20:50 apac left
SmokeMachine m: say 42.is-odd 20:51
camelia No such method 'is-odd' for invocant of type 'Int'
in block <unit> at <tmp> line 1
SmokeMachine m: use v6.e.PREVIEW; say 42.is-odd 20:52
camelia No such method 'is-odd' for invocant of type 'Int'
in block <unit> at <tmp> line 1
21:00 librasteve joined 21:04 librasteve left 21:14 apac joined
disbot3 <nahita3882> !%%2 21:30
21:32 librasteve joined 21:35 guifa joined 21:36 librasteve left
guifa hmmm 21:42
let's say I wanted to have a trait
class Foo { method bar is external { ... } }
like actually literally putting in stub (or leaving ti blank) 21:43
to then insert a different method entirely?
m: multi sub trait_mod:<is> (Method \m, :$external) { m.package.^add_method: m.name, anon method :: { 42 } }; class Foo { method bar is external { ; } } 21:45
camelia ===SORRY!=== Error while compiling <tmp>
Package 'Foo' already has a method 'bar' (did you mean to declare a multi method?)
at <tmp>:1
21:49 Guest7 joined, Guest7 left 21:54 Sgeo joined 21:56 apac left
Xliff guifa: Why not use .wrap instead? 22:10
guifa I thought about that, assumed it carries a bit of a performance penalty but maybe not?
Xliff And the MOP doesn't? :) 22:11
guifa ha MOP would be a one time at compile lol
Xliff Ehh... true.
guifa I'm working to create an HTML Window class 22:12
Xliff It's also a PITA.
guifa goal would be to let people just subclass it and be able to say
method foo is javascript { ... } and just like nativecall, it'd handle some conversions for you
which admittedly, is probably more overhead than the wrap would incur 22:13
so I'm probably just being perfectionist
Xliff Right, but then you'd have to add in whole dynamic naming convention routines because you'd need to add a method with a different name.
And if you're doing that, you'd need to worry about name collisions, too.
.wrap would eliminate that. And it too would be compile time since its a trait. 22:14
Depends on how you would actually want to replace the stub with actual code, though. 22:15
22:15 jjido left
Xliff BTW - Brilliant talk. Watched it before I passed out this morning. 22:15
guifa anyways, the JS method bit is just icing on cake. I'm just happy I now successfully figured out a decent async-y way to avoid a double JS call that seems to crash WebKit 22:18
Xliff guifa: Are you using the JS backend in WebKit? 22:21
guifa Yeah. At least on the MacOS side. 22:22
Xliff Nice! 22:23
guifa Basically all I'm doing is popping open a window, and then using stdin/stdout to communication between the macOS native process and Raku
Xliff How's the pefromance?
guifa Raku -> macOS -> JS was happening fast enough that for an ultra simple Canvas draw command 22:24
i'd extremely quickly end up sending two JS commands before the first one ended (and then crash)
for 99% of things, I think that's probably far, far faster than we ever need to worry about :) 22:28
I'm thinking of this potentially as an alternative to native GUIs -- much as I like them, sometimes, a quick and dirty HTML page can be enough
I don't yet the two way communication from the webpage. I'll need to figure out a way to insert a Raku object that can call back to macOS world 22:30
Xliff Huh. 22:31
So more like Raku (moar) -> macOS -> WebKit (js) ? 22:32
22:33 librasteve joined
guifa yeah, basically, macOS as intermediary 22:33
goal being that it should be mostly simple to repeat this on *nix and Windows
Xliff So you want to get an object from one side to the other? 22:34
guifa Yeah. It's straightforward to do as long as I force the communication to be stringy
and I'm very okay with that as a restriction 22:35
At least initially
Xliff RakuAST string rep across the wire, maybe?
guifa I'm honestly not sure how much I can do -- it seems like with WebKit absent doing some much deeper digging I can only do text-based calls 22:36
basically the equivalent of typing in something in the debug console of a webpage
22:38 librasteve left
guifa I'll see if I can get it to an ultra basic simple but useable state.this week. Sadly got lots of homework to do (anyone huge into quantum wanna help? lol) 22:42
SmokeMachine guita, you could override ClassHOW’s add_method to add your method instead of the method the user added… 22:58
On your trait you mark the method with a role and you add a add_method candidate that receives that role… 23:00
23:09 librasteve joined
guifa ooh 23:09
that latter one might be the most efficient
I did want to play with ClassHOW at some point too so it'd be
window Foo { ... } instead of class Foo { ... }
23:12 vasko4 left 23:13 vasko4 joined, librasteve left
SmokeMachine 👍 23:14
23:27 librasteve joined 23:32 librasteve left
SmokeMachine guifa: glot.io/snippets/h8tnx81clw 23:33
guifa !!! 23:40
SmokeMachine++
SmokeMachine guifa: and I agree with Xliff , brilliant talk… and thanks for mentioning Red! :) 23:45
Good night everyone 23:47