11 Dec 2024 |
KFears (annoying) | So like, to be clear, the reasons I've listed are not speculation, they are known reasons. The speculation reasons I won't delve into | 07:31:03 |
uep | agreed on the whole; some counterpoints that are not disagreements per se:
- git is a reasonable distribution format when you want to download incremental updates; it's debatable whether that's 'a vcs feature' or not; if it is it's really the most basic one.
- code downloads re-fetch a lot of unchanged data, and so are not really 'easier on the wire' in aggregate
- sometimes you recompress for disk writes to a compressing filesystem (e.g. zfs)
zip doesn't address point 2 either, fwiw
| 07:39:07 |
K900 | FWIW Cargo also bought into the whole "git is good for incremental updates" thing | 07:39:54 |
uep | yeah, didn't go well in the long run | 07:40:12 |
K900 | And then had to rework everything because the first checkout time became so bad | 07:40:14 |
KFears (annoying) | Yeah... | 07:40:24 |
K900 | Though I'm still kind of disappointed they went the API route and not a prebaked index with deltas route | 07:40:51 |
uep | they did something like that for a while | 07:41:15 |
olivia | the crates.io index is at least very unusual compared to the kinds of things people are normally downloading from github for nix purposes | 07:42:02 |
K900 | They just did git and force pushed it a bunch | 07:42:12 |
uep | every so often the 'publication' git repo would get rewritten somehow but eventually that didn't scale well either | 07:42:18 |
K900 | Which still had all the git issues | 07:42:19 |
KFears (annoying) | So to really address your counterpoints, we need like benchmarks and data because yeah, git deltas aren't necessarily better than re-downloading a complete zip archive | 07:42:51 |
Emma [it/its] | Cant you incrementally pull with a depth=1 git clone? | 07:43:04 |
KFears (annoying) | And I don't think there are any industry-standard diff formats other than git | 07:43:09 |
uep | i didn't say it was good, just that it was reasonable... and the main issue is point2 | 07:43:29 |
uep | * i didn't say it was good, just that it was reasonable... and my main issue is point2 | 07:43:37 |
K900 | In reply to @emma:rory.gay Cant you incrementally pull with a depth=1 git clone? Not well | 07:43:38 |
Grimmauld | Hey, quick question! How (if at all) does tail recursion optimisation work in lix? It seems folds are well-optonized for example (I can sum a list of it's going from 0 to multiple billions basically instantly), but implementing tail recursion just in nix (without relying on some fold builtin quickly hits recursion limits. | 07:43:41 |
K900 | It still requires fetching pretty much all the object metadata | 07:43:52 |
K900 | In reply to @grimmauld:grimmauld.de Hey, quick question! How (if at all) does tail recursion optimisation work in lix? It seems folds are well-optonized for example (I can sum a list of it's going from 0 to multiple billions basically instantly), but implementing tail recursion just in nix (without relying on some fold builtin quickly hits recursion limits. It isn't | 07:44:07 |
Emma [it/its] | Git doesnt use its own diff format though, it just pushes the new version of files | 07:44:28 |
Grimmauld | :/ | 07:44:23 |
Emma [it/its] | Unless youre talking about the packed format | 07:44:32 |
K900 | builtins stuff is native code so it's special | 07:44:40 |
Grimmauld | Any plans to ever do tail recursion optimisation? | 07:44:50 |
K900 | I don't think anyone has anything concrete | 07:45:28 |
K900 | And I also don't think TCO is going to be the bottleneck for, uh, just about anything sane | 07:45:44 |
Grimmauld | Would be kinda dumb if nix were the literal only functional lang without it XD | 07:45:52 |
piegames | It almost guaranteed is not, and, so what? | 07:46:37 |