!OqhvaDMJdKYUicLDiE:nixos.org

Nixpkgs Stdenv

220 Members
71 Servers

Load older messages


SenderMessageTime
24 May 2025
@rosscomputerguy:matrix.orgTristan RossRedacted or Malformed Event02:30:50
@rosscomputerguy:matrix.orgTristan RossRedacted or Malformed Event02:31:22
@rosscomputerguy:matrix.orgTristan RossRedacted or Malformed Event02:31:44
@sigmasquadron:matrix.orgSigmaSquadron joined the room.02:38:34
@uep:matrix.orguep joined the room.03:34:59
@rosscomputerguy:matrix.orgTristan RossRedacted or Malformed Event03:38:20
@uep:matrix.orguepwat03:38:45
@rosscomputerguy:matrix.orgTristan RossRedacted or Malformed Event03:38:52
@ss:someonex.netSomeoneSerge (back on matrix)
In reply to @emilazy:matrix.org
since foo.dev is to be consumed on buildPlatform
We select .dev for buildInputs too, and use it to propagate lib and static which are for hostPlatform
09:27:25
@emilazy:matrix.orgemilyright. (I think we're agreeing?)09:27:54
@rosscomputerguy:matrix.orgTristan Ross
In reply to @rosscomputerguy:matrix.org
https://github.com/NixOS/nixpkgs/pull/410056 is ready. ARM trusted firmware works and with an easy patch, Firefox works.
Ok now that mjolnir isn't removing my every single message, I can link the patch which moves Firefox to using cross stdenvs. https://gist.github.com/RossComputerGuy/525eb9f31ecee52c40338bd0af8cb513
13:18:21
@reckenrode:matrix.orgRandy EckenrodeI’d be curious whether that works with building Wine (particularly on Darwin without the hook).14:01:30
@emilazy:matrix.orgemilyhow much cheaper is instantiating a cross stdenv to instantiating an entire Nixpkgs?14:04:50
@reckenrode:matrix.orgRandy EckenrodeNot sure about DXVK. That’s written as a derivation for Windows. dxvk_2 even supports native builds on Linux and FreeBSD, so I wouldn’t want to break that.14:04:53
@emilazy:matrix.orgemily I thought most of the expense was precisely in evaluating stdenv and all its dependencies 14:05:00
@reckenrode:matrix.orgRandy Eckenrode NIX_SHOW_STATS=1 can be used to compare eval performance with and without. 14:06:09
@reckenrode:matrix.orgRandy Eckenrode * NIX_SHOW_STATS=1 can be used to compare eval performance with and without the change. 14:11:54
@rosscomputerguy:matrix.orgTristan Ross
In reply to @emilazy:matrix.org
how much cheaper is instantiating a cross stdenv to instantiating an entire Nixpkgs?
I'm guessing a decent amount since pkgs* comes through stage.nix and to get there, the config has to be evaluated. Since you're creating a new nixpkgs instance, you're evaluating that twice. Once for the root and again for the new instance. It also has to evaluate the native stage again and then inject the cross stages. So I'd say there's a good amount but I haven't gotten down to checking exactly how much yet.
17:54:16
@rosscomputerguy:matrix.orgTristan Ross
In reply to @reckenrode:matrix.org
I’d be curious whether that works with building Wine (particularly on Darwin without the hook).
Theoretically, it should
17:55:25
@rosscomputerguy:matrix.orgTristan RossWe have this at least https://github.com/NixOS/nixpkgs/actions/runs/15222517519?pr=41005617:56:12
@rosscomputerguy:matrix.orgTristan RossI'm curious what eval performance would look like with moving absolutely everything over. Though, I don't want to move too much in this PR.17:57:16
@reckenrode:matrix.orgRandy EckenrodeOnly 1%?17:59:21
@rosscomputerguy:matrix.orgTristan Ross Would be hard to say if that's truly the performance impact 18:00:28
@rosscomputerguy:matrix.orgTristan RossBest thing is to compare the variants stdenv with the cross stdenv that matches along and see how the evaluation compares.18:00:58
25 May 2025
@rosscomputerguy:matrix.orgTristan Ross So I have a comparison between pkgsMusl.stdenv and crossStdenv.configs.aarch64-unknown-linux-musl 01:37:56
@rosscomputerguy:matrix.orgTristan Ross

crossStdenv.configs.aarch64-unknown-linux-musl

{
  "cpuTime": 0.43762001395225525,
  "envs": {
    "bytes": 5428488,
    "elements": 369695,
    "number": 308866
  },
  "gc": {
    "cycles": 1,
    "heapSize": 402915328,
    "totalBytes": 79396896
  },
  "list": {
    "bytes": 717400,
    "concats": 4609,
    "elements": 89675
  },
  "nrAvoided": 294217,
  "nrExprs": 135112,
  "nrFunctionCalls": 295668,
  "nrLookups": 152167,
  "nrOpUpdateValuesCopied": 2227726,
  "nrOpUpdates": 12343,
  "nrPrimOpCalls": 114176,
  "nrThunks": 263414,
  "sets": {
    "bytes": 42449136,
    "elements": 2626304,
    "number": 26767
  },
  "sizes": {
    "Attr": 16,
    "Bindings": 16,
    "Env": 8,
    "Value": 24
  },
  "symbols": {
    "bytes": 321885,
    "number": 32150
  },
  "time": {
    "cpu": 0.43762001395225525,
    "gc": 0.043000000000000003,
    "gcFraction": 0.09825876017793679
  },
  "values": {
    "bytes": 20363664,
    "number": 848486
  }
}

pkgsMusl.stdenv

{
  "cpuTime": 0.5026220083236694,
  "envs": {
    "bytes": 4656672,
    "elements": 324861,
    "number": 257223
  },
  "gc": {
    "cycles": 1,
    "heapSize": 402915328,
    "totalBytes": 125050816
  },
  "list": {
    "bytes": 601264,
    "concats": 4389,
    "elements": 75158
  },
  "nrAvoided": 262676,
  "nrExprs": 131023,
  "nrFunctionCalls": 242926,
  "nrLookups": 125858,
  "nrOpUpdateValuesCopied": 3930750,
  "nrOpUpdates": 13551,
  "nrPrimOpCalls": 104327,
  "nrThunks": 322854,
  "sets": {
    "bytes": 73163712,
    "elements": 4542912,
    "number": 29820
  },
  "sizes": {
    "Attr": 16,
    "Bindings": 16,
    "Env": 8,
    "Value": 24
  },
  "symbols": {
    "bytes": 320546,
    "number": 32025
  },
  "time": {
    "cpu": 0.5026220083236694,
    "gc": 0.07200000000000001,
    "gcFraction": 0.14324880090335151
  },
  "values": {
    "bytes": 32448624,
    "number": 1352026
  }
}
01:38:49
@emilazy:matrix.orgemilylooks still expensive enough that we'd want to avoid it wherever possible?02:29:09
@emilazy:matrix.orgemilyit's not clear to me if Firefox could just use an unwrapped compiler though02:29:22
@rosscomputerguy:matrix.orgTristan Ross

crossStdenv.predicated.useLLVM.configs.aarch64-unknown-linux-gnu

{
  "cpuTime": 0.8687459826469421,
  "envs": {
    "bytes": 12327288,
    "elements": 839812,
    "number": 701099
  },
  "gc": {
    "cycles": 1,
    "heapSize": 402915328,
    "totalBytes": 124386272
  },
  "list": {
    "bytes": 1597240,
    "concats": 14954,
    "elements": 199655
  },
  "nrAvoided": 651102,
  "nrExprs": 190283,
  "nrFunctionCalls": 673020,
  "nrLookups": 340854,
  "nrOpUpdateValuesCopied": 2985262,
  "nrOpUpdates": 30307,
  "nrPrimOpCalls": 244291,
  "nrThunks": 553576,
  "sets": {
    "bytes": 58833760,
    "elements": 3619956,
    "number": 57154
  },
  "sizes": {
    "Attr": 16,
    "Bindings": 16,
    "Env": 8,
    "Value": 24
  },
  "symbols": {
    "bytes": 445341,
    "number": 42001
  },
  "time": {
    "cpu": 0.8687459826469421,
    "gc": 0.061,
    "gcFraction": 0.07021615203806976
  },
  "values": {
    "bytes": 31742712,
    "number": 1322613
  }
}

pkgsLLVM.stdenv

{
  "cpuTime": 1.1511069536209106,
  "envs": {
    "bytes": 10916216,
    "elements": 771025,
    "number": 593502
  },
  "gc": {
    "cycles": 1,
    "heapSize": 402915328,
    "totalBytes": 258382960
  },
  "list": {
    "bytes": 3100896,
    "concats": 16000,
    "elements": 387612
  },
  "nrAvoided": 624277,
  "nrExprs": 189716,
  "nrFunctionCalls": 558370,
  "nrLookups": 220405,
  "nrOpUpdateValuesCopied": 7006441,
  "nrOpUpdates": 39748,
  "nrPrimOpCalls": 191955,
  "nrThunks": 873127,
  "sets": {
    "bytes": 148522576,
    "elements": 9080341,
    "number": 202320
  },
  "sizes": {
    "Attr": 16,
    "Bindings": 16,
    "Env": 8,
    "Value": 24
  },
  "symbols": {
    "bytes": 444992,
    "number": 41976
  },
  "time": {
    "cpu": 1.1511069536209106,
    "gc": 0.202,
    "gcFraction": 0.17548325927889744
  },
  "values": {
    "bytes": 66434280,
    "number": 2768095
  }
}
02:33:13
@rosscomputerguy:matrix.orgTristan RossYeah, ideally no cross when possible.02:33:26

Show newer messages


Back to Room ListRoom Version: 9