Logs: liberachat/#haskell
| 2025-10-23 16:35:46 | → | Googulator27 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) |
| 2025-10-23 16:39:23 | → | Zemy_ joins (~Zemy@mobile-107-80-206-40.mycingular.net) |
| 2025-10-23 16:40:21 | → | Pozyomka joins (~pyon@user/pyon) |
| 2025-10-23 16:40:45 | → | Core9574 joins (~Zemy@2600:100c:b0a1:2d3a:2c76:e6ff:fe8d:547c) |
| 2025-10-23 16:40:58 | × | Zemy quits (~Zemy@2600:100c:b0a1:2d3a:e430:6dff:fedb:39b4) (Read error: Connection reset by peer) |
| 2025-10-23 16:43:38 | × | Zemy_ quits (~Zemy@mobile-107-80-206-40.mycingular.net) (Ping timeout: 248 seconds) |
| 2025-10-23 16:44:38 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-23 16:48:26 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 248 seconds) |
| 2025-10-23 16:49:12 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-10-23 16:50:25 | → | gustrb joins (~gustrb@191.243.134.87) |
| 2025-10-23 16:50:36 | × | Pozyomka quits (~pyon@user/pyon) (Ping timeout: 256 seconds) |
| 2025-10-23 16:51:27 | × | YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
| 2025-10-23 16:51:58 | → | Zemy joins (~Zemy@72.178.108.235) |
| 2025-10-23 16:52:43 | → | YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:3c4e:fa7a:e07a:5a51) |
| 2025-10-23 16:54:18 | × | Core9574 quits (~Zemy@2600:100c:b0a1:2d3a:2c76:e6ff:fe8d:547c) (Ping timeout: 256 seconds) |
| 2025-10-23 16:56:31 | → | humasect_ joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-10-23 16:57:20 | → | Pozyomka joins (~pyon@user/pyon) |
| 2025-10-23 16:58:16 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 256 seconds) |
| 2025-10-23 17:00:02 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-23 17:01:24 | humasect_ | is now known as numberella |
| 2025-10-23 17:04:13 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 264 seconds) |
| 2025-10-23 17:04:25 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-10-23 17:05:16 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 2025-10-23 17:06:46 | × | Pozyomka quits (~pyon@user/pyon) (Ping timeout: 256 seconds) |
| 2025-10-23 17:11:28 | → | gustrb joins (~gustrb@191.243.134.87) |
| 2025-10-23 17:13:33 | × | itaipu quits (~itaipu@168.121.97.28) (Ping timeout: 256 seconds) |
| 2025-10-23 17:15:42 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-23 17:16:53 | → | Pozyomka joins (~pyon@user/pyon) |
| 2025-10-23 17:19:13 | × | APic quits (apic@apic.name) (Ping timeout: 264 seconds) |
| 2025-10-23 17:20:56 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-10-23 17:24:53 | → | Tuplanolla joins (~Tuplanoll@91-159-187-167.elisa-laajakaista.fi) |
| 2025-10-23 17:25:27 | <chromoblob> | so. i want to develop Linux apps in Haskell. if i use GHC, how do i distribute my app (e.g. what are dependencies)? |
| 2025-10-23 17:27:07 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 2025-10-23 17:30:50 | → | APic joins (~apic@apic.name) |
| 2025-10-23 17:31:09 | <haskellbridge> | <Morj> It's about the same as C++: there are multiple options. If a distro packages your program, they choose one for you |
| 2025-10-23 17:31:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-23 17:31:48 | <haskellbridge> | <Morj> For example, arch linux has a policy of dynamically linking even the haskell deps themselves. While I distribute either nix derivations, or completely statically linked binaries |
| 2025-10-23 17:32:31 | <chromoblob> | ok, i want to have a fully static binary. how to? |
| 2025-10-23 17:33:43 | <EvanR> | that's been the default in ghc for a long time |
| 2025-10-23 17:34:04 | <EvanR> | build your haskell program and check the linkage of the resulting binary |
| 2025-10-23 17:34:23 | <chromoblob> | okay, thanks |
| 2025-10-23 17:35:39 | <chromoblob> | i don't have Linux at the moment. does it even not depend on libc? |
| 2025-10-23 17:35:51 | <haskellbridge> | <Morj> That still links libc and gmp afaik, no? |
| 2025-10-23 17:36:35 | <haskellbridge> | <Morj> To statically link system libraries themselves it was somewhat more involved, and I've lost an example >_> |
| 2025-10-23 17:36:44 | <EvanR> | yeah it does |
| 2025-10-23 17:36:47 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-10-23 17:37:03 | <EvanR> | though I'm not sure the wisdom of attempting to static link your own libc |
| 2025-10-23 17:37:23 | <EvanR> | in the case of gmp you could avoid it by using the haskell version of the Integer implementation |
| 2025-10-23 17:37:25 | <chromoblob> | philosophical reasons... |
| 2025-10-23 17:37:45 | <EvanR> | the compiled libc is usually highly dependent on the OS |
| 2025-10-23 17:38:04 | <EvanR> | it's the mediator between normal C code and the kernel |
| 2025-10-23 17:38:10 | AlexNoo_ | is now known as AlexNoo |
| 2025-10-23 17:38:21 | <haskellbridge> | <Morj> If you're just targeting linux and don't dlopen, you can linux musl and be happy, no? |
| 2025-10-23 17:38:27 | <chromoblob> | i thought Linux had a standard ABI |
| 2025-10-23 17:38:39 | <EvanR> | yes if you cross your fingers correctly |
| 2025-10-23 17:38:53 | <chromoblob> | omg... |
| 2025-10-23 17:38:53 | × | gustrb quits (~gustrb@191.243.134.87) (Quit: gustrb) |
| 2025-10-23 17:38:57 | <EvanR> | binary distribution on linux is a hope and pray |
| 2025-10-23 17:39:05 | <haskellbridge> | <Morj> Linux has a stable abi. The problem is your deps |
| 2025-10-23 17:39:23 | <EvanR> | C standard library is also a stable API |
| 2025-10-23 17:39:28 | <EvanR> | but here we are |
| 2025-10-23 17:39:42 | <chromoblob> | note, A*B*I |
| 2025-10-23 17:39:47 | <haskellbridge> | <Morj> Yeah, except for little unstable parts that someone will surely get their little library fingers in =) |
| 2025-10-23 17:39:56 | <EvanR> | you traded "philosophical problems" for actual problems |
| 2025-10-23 17:40:21 | <haskellbridge> | <Morj> In theory if everyone was a good citizen, you could dynamically link to glibc and have no problems |
| 2025-10-23 17:40:38 | <haskellbridge> | <Morj> I think on BSDs they do just that, except it's another libc |
| 2025-10-23 17:40:41 | <EvanR> | that's usually how I've seen it done |
| 2025-10-23 17:40:45 | <chromoblob> | no, glibc is not Linux, it is GNU |
| 2025-10-23 17:41:07 | <chromoblob> | if only Linux shipped a standard libc... |
| 2025-10-23 17:41:29 | <haskellbridge> | <Morj> As I say, the syscalls are incredibly stable. You won't see a breakage in /them/ |
| 2025-10-23 17:41:31 | <EvanR> | there's a reason there's a standard API, so it should work with any implementation |
| 2025-10-23 17:42:13 | <EvanR> | alternative libc implementations seem to be about memory usage, but you're on some random persons linux with a spinning cube desktop |
| 2025-10-23 17:42:43 | <haskellbridge> | <Morj> If you write from scratch targeting linux without libc, you can fear no breakage. Unfortunately, you 1) usually don't have enough time for that, 2) want to integrate with the system, and some integrations require using shared libraries. One example of that is DNS resolution |
| 2025-10-23 17:42:58 | <EvanR> | and it's a pain in the ass |
| 2025-10-23 17:43:10 | <EvanR> | it's the ultimate form of "never use dependencies" |
| 2025-10-23 17:43:26 | <haskellbridge> | <Morj> Go world went with rewriting the world, and it sort-of works for them. They produce completely static binaries, and it's very convenient to use |
| 2025-10-23 17:43:59 | <EvanR> | they can just recompile if things change |
| 2025-10-23 17:44:08 | <EvanR> | and redistribute |
| 2025-10-23 17:44:20 | <haskellbridge> | <Morj> Anyway, to the original question of statically linking: I don't have a complete answer, but look into the docs of ghc options «-static -optl-static -staticlib» |
| 2025-10-23 17:47:18 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-23 17:51:44 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 2025-10-23 17:51:44 | × | deptype_ quits (~deptype@124.123.188.12) (Remote host closed the connection) |
| 2025-10-23 17:51:55 | <EvanR> | I'm also linked against the vdso |
| 2025-10-23 17:52:13 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2025-10-23 18:01:20 | × | williu5 quits (~williu5@user/williu5) (Quit: WeeChat 4.1.1) |
| 2025-10-23 18:02:56 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-23 18:04:47 | → | ft joins (~ft@p4fc2aaeb.dip0.t-ipconnect.de) |
| 2025-10-23 18:09:25 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-10-23 18:10:51 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 2025-10-23 18:11:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-23 18:11:51 | → | lill joins (~lill@bras-base-gmlyon2002w-grc-37-74-12-9-150.dsl.bell.ca) |
| 2025-10-23 18:15:58 | × | Googulator27 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-23 18:16:13 | → | Googulator27 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) |
| 2025-10-23 18:16:28 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-10-23 18:17:45 | × | tromp quits (~textual@2001:1c00:3487:1b00:cd8f:ea15:2cfa:e4a8) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2025-10-23 18:17:58 | → | LainIwakura joins (~LainIwaku@user/LainIwakura) |
| 2025-10-23 18:18:16 | × | lill quits (~lill@bras-base-gmlyon2002w-grc-37-74-12-9-150.dsl.bell.ca) (Quit: leaving) |
| 2025-10-23 18:19:07 | → | lill joins (~lill@bras-base-gmlyon2002w-grc-37-74-12-9-150.dsl.bell.ca) |
| 2025-10-23 18:21:38 | × | arandombit quits (~arandombi@user/arandombit) (Remote host closed the connection) |
| 2025-10-23 18:24:16 | → | arandombit joins (~arandombi@user/arandombit) |
All times are in UTC.