|
00:27
Sgeo joined
|
|||
| apogee_ntv | Notcurses::Native done! Wow that was pain. | 01:17 | |
|
01:53
kylese left,
hulk joined
01:59
kybr joined
|
|||
| kybr | m: <0 1 2 3 4>.Set (-) <1 2 3>.Set | 01:59 | |
| evalable6 | WARNINGS for /tmp/7ZDFvQH2Ht: Useless use of "(-)" in expression ".Set (-) <1 2 3>.Set" in sink context (line 1) |
||
| kybr | m: say <0 1 2 3 4>.Set (-) <1 2 3>.Set | 02:03 | |
| evalable6 | Set(0 4) | ||
| kybr | m: say (^5).List.Set (-) <1 2 3>.Set | ||
| evalable6 | Set(0 1 2 3 4) | ||
| kybr | m: say (^5).List.Set == <0 1 2 3 4>.Set | 02:04 | |
| evalable6 | True | ||
| kybr | what am i missing? why do the first two m: above have different answers? | 02:05 | |
| apogee_ntv | Selkie now builds with no C compile chain on MacOS/Linux/Windows. Need glibc 2.35 for that to work on Linux. | ||
| (or higher) | 02:07 | ||
| kybr | m: <0 1 2 3 4>.Set.pick.WHAT | 02:09 | |
| evalable6 | |||
| kybr | m: say <0 1 2 3 4>.Set.pick.WHAT | 02:10 | |
| evalable6 | (IntStr) | ||
| kybr | m: say (^5).List.Set.pick.WHAT | ||
| evalable6 | (Int) | ||
|
02:15
hulk left,
kylese joined
02:47
orangebot joined
03:07
lichtkind__ joined
03:10
lichtkind_ left
03:18
orangebot left
|
|||
| apogee_ntv | And Vips::Native done. | 03:18 | |
|
03:24
apogee_ntv left
03:26
vasko4535586 left
03:27
apogee_ntv joined
03:32
vasko4535586 joined
04:07
topnep left
04:08
sibl joined,
topnep joined
05:14
Aedil left
05:18
Aedil joined
06:12
topnep left
06:13
topnep joined
06:26
kybr left
06:30
soverysour joined,
soverysour left,
soverysour joined,
abraxxa joined
06:56
sibl left,
sibl joined
07:00
Sgeo left
07:20
soverysour left
|
|||
| patrickb | apogee_ntv: Do you have knowledge of how native library dependencies work on Windows? | 07:24 | |
| If so I'd like to have a chat. | |||
| apogee_ntv | patrickb: Some idea yes, I dont use Win but I build for it often | 07:36 | |
|
07:45
sibl left,
sibl joined
|
|||
| patrickb | I've been pondering building a binaries store on top of vcpkg. | 07:46 | |
| The vcpkg guys say, that it's a pretty bad idea. I'm still in the phase of gathering understanding of the problem domain. | 07:47 | ||
| irclogs.raku.org/moarvm/2026-04-04.html#20:57 | 07:48 | ||
| This is my latest set of questions I'm wondering about. | |||
| Libraries can depend on each other, so they form a graph. One can't have colliding symbols in a process. Is there a way to separate symbols in libraries I load? If so, then the issue of colliding symbols is not so big anymore. | 07:51 | ||
| I've never heard of this issue in the context of native call yet. But I' kinda expect the issue to show up whenever I use multiple non trivial native call libraries on Windows, because each lib is usually provided with all dependencies included, so collisions should happen often. | 07:52 | ||
|
07:56
soverysour joined
|
|||
| patrickb | The answer to these questions influences how a vcpkg binary sore would be structured. | 07:56 | |
| The answer to these questions influences how a vcpkg binary sore would be structured. | |||
| Should the graph of all libraries (and their dependencies) be free of duplicates? Are multiple versions of the same dependency prohibited in the graph? | 07:58 | ||
|
08:00
soverysour left
08:05
soverysour joined
08:12
dakkar joined
08:14
librasteve_ joined
08:16
soverysour left
|
|||
| lizmat | m: dd <1 2 3>, (1,2,3) | 08:18 | |
| evalable6 | (IntStr.new(1, "1"), IntStr.new(2, "2"), IntStr.new(3, "3")) (1, 2, 3) |
||
| lizmat | kybr ^^ that's what you're missing | ||
|
08:20
soverysour joined
|
|||
| librasteve_ | kybr: I guess you have answered your own question on the behaviour of Set compare (which uses .WHICH to do the compare, like the `===` value identity operator | 08:20 | |
| tellable6 | librasteve_, I'll pass your message to kybr | ||
| librasteve_ | oh and that angle bracket number literals `<>` make lovely Allomorphs like IntStr | 08:22 | |
| disbot2 | <librasteve> ah - seems that I was too late ;-) | 08:23 | |
|
08:38
sp1983_ joined
08:47
sibl left
09:03
soverysour left
09:06
soverysour joined
09:13
sibl joined
|
|||
| apogee_ntv | patrickb: I've been mostly building on msys2 to be honest, the compile chain is much nicer to run. | 09:26 | |
| If you look at the GitHub Actions for Notcurses::Nativecall, the build process is absolutely cursed. | 09:27 | ||
| But it works. | |||
| Notcurses::Native | |||
|
09:31
Guest66 joined,
Guest66 left
|
|||
| apogee_ntv | For your question about symbol collision, you have the general broad strokes right yes but there's a lot of nuance. Each DLL has its own namespace, so if you have i.e. two SSL dlls exporting 'do_ssl_handshake', the loader won't confuse those because in one place you're calling GetProcAddress('openssl', 'do_ssl_handshake') and in the other you're calling GetProcAddress('libressl', 'do_ssl_handshake'). | 09:33 | |
| Geth | CCR/main: 900bc7574a | (Elizabeth Mattijsen)++ | 2 files Collect and conserve Tom Browder's own blog |
09:35 | |
|
09:35
sibl left
09:36
sibl joined
|
|||
| apogee_ntv | The issue comes when you try to load 2 DLLs with the same name on the same search path. You can avoid it by making sure your DLLs have different names and are called by name (i.e. 'openssl-2.0.0.dll' and 'openssl-2.1.3.dll' will not have namespace collisions) or you can create per module sibling directory (Windows DLLs automatically look for siblings in same folder so i.e. you'd have | 09:39 | |
| %PATH%\GTK-Simple\lib and %PATH\OpenSSL\lib each with their own openssl.dll and they wont collide). | |||
| If you look at Notcurses::Native and Vips::Native build process this is how I solve it, using sibling detection. | |||
| The way Linux solves this is via .so.6.2.1 vs .so.6.6.7 naming convention, the same underlying problem exists but there are stronger standard practices. dlopen is actually worse in some ways because you can flatten symbol imports with RTLD_GLOBAL as an aside. | 09:43 | ||
| Hope that helps. | 09:45 | ||
| (if you use MSYS2, it uses linux-style naming convention which also helps for disambiguation) | 09:47 | ||
|
09:47
sp1983_ left
09:48
sp1983_ joined
10:05
sibl left
|
|||