!djTaTBQyWEPRQxrPTb:nixos.org

Nixpkgs Architecture Team

231 Members
https://github.com/nixpkgs-architecture, weekly public meetings on Wednesday 15:00-16:00 UTC at https://meet.jit.si/nixpkgs-architecture53 Servers

Load older messages


SenderMessageTime
29 Jul 2022
@infinisil:matrix.orginfinisil * Bash in that sense is terrible because it's just a string, you can't inspect that at all. The phases add some level of static inspection on top of it, but it's not great or well specified 18:20:37
@infinisil:matrix.orginfinisilisomorphic stdenv?18:20:46
@profpatsch:augsburg.oneprofpatsch(isomorphic in the sense of isomorphic javascript)18:20:47
@infinisil:matrix.orginfinisil(that doesn't help!)18:21:02
@profpatsch:augsburg.oneprofpatschjavascript that you write once and can transparently run on the server or client, with the same semantics18:21:10
@infinisil:matrix.orginfinisilAhh18:21:20
@profpatsch:augsburg.oneprofpatschso i.e. you would have a DSL and on the client it modifies the DOM, on the server it pre-renders the UI and sends the HTML18:21:38
@profpatsch:augsburg.oneprofpatschThis but for a nix stdenv dsl which could either be interpreted at build time or at evaluation time. idk if I’m making sense :P18:22:24
@profpatsch:augsburg.oneprofpatschinb4 nixpkgs compilation phase18:22:48
@infinisil:matrix.orginfinisil I kind of get it, though actually getting what it means in practice is tricky 18:22:56
@profpatsch:augsburg.oneprofpatschBut this is very far-removed from practice yeah18:23:04
@profpatsch:augsburg.oneprofpatschnot even sure one would even want something like htis18:23:23
@infinisil:matrix.orginfinisil I guess it goes into using Nix as a make replacement 18:23:32
@infinisil:matrix.orginfinisilcc Maak18:23:40
@profpatsch:augsburg.oneprofpatschsomething like that18:23:40
@profpatsch:augsburg.oneprofpatschOr like Ur/web, where you write one (typed) function in one language, but parts of it get executed in the database, parts on the server, and parts in the UI18:24:43
@profpatsch:augsburg.oneprofpatschAnd it’s more-or-less transparent to the user18:24:55
@profpatsch:augsburg.oneprofpatschlike what if you could define declarative derivations down to the file-action, but then it would compile parts of the definition to a builder18:25:52
@infinisil:matrix.orginfinisilYeah18:26:13
@profpatsch:augsburg.oneprofpatschbuilding execline argv lists is already something like that18:26:27
@infinisil:matrix.orginfinisilUltimately it's specifying what happens at runtime with Nix 🤔18:27:16
@profpatsch:augsburg.oneprofpatschyeah, maybe even without noticing the border if you don’t want to18:27:45
@profpatsch:augsburg.oneprofpatschmaybe the border moves around flexibly in the background :P18:28:28
@yorik.sar:matrix.orgyorik.sarWe could so defer generation of builders from Nix by serializing not yet applied functions and creating derivations for builders.20:32:15
@yorik.sar:matrix.orgyorik.sar * (null) 20:32:27
30 Jul 2022
@hsngrmpf:matrix.orgDavHau
In reply to @kevincox:matrix.org
This strikes me as likely to add far more complexity than value.
In what way would that add complexity? I think having clean interfaces between phases is a necessary step towards sanity. That would allow us to have real modularity of builds, where we can have reasonable assumptions about what will happen during a build, vs right now, for most users everything is a huge black box which is hard to debug. I'm also not worried about runtime performance. With the current bash based model, CPU cycles are wasted initializing an unnecessary amount of processes for simple operations like symlinking etc. If proper interfaces allowed us to implement build phases in the language that suits best for that phase, we will gain a lot of efficiency. Even if we have to run an extra process per phase the performance might be orders of magnitude better.
09:41:58
@qyliss:fairydust.spaceAlyssa RossProcesses are not created equal09:43:15
@qyliss:fairydust.spaceAlyssa Ross(not disagreeing, just want to point out)09:43:26
@qyliss:fairydust.spaceAlyssa Rossfork+exec overhead is trivial compared to e.g. interpreter startup time for most languages09:43:38
@qyliss:fairydust.spaceAlyssa Ross so (just as an example) I'd expect you could run many lns before Python has started up 09:44:16

Show newer messages


Back to Room ListRoom Version: 9