Apr 14, 6-7 PM (22)
Apr 14, 7-8 PM (14)
Apr 14, 8-9 PM (10)
Apr 14, 9-10 PM (11)
Apr 14, 10-11 PM (24)
Apr 14, 11-12 AM (24)
Apr 15, 12-1 AM (3)
Apr 15, 1-2 AM (9)
Apr 15, 2-3 AM (8)
Apr 15, 3-4 AM (1)
Apr 15, 4-5 AM (1)
Apr 15, 5-6 AM (32)
Apr 15, 6-7 AM (7)
Apr 15, 7-8 AM (25)
Apr 15, 8-9 AM (49)
Apr 15, 9-10 AM (40)
Apr 15, 10-11 AM (127)
Apr 15, 11-12 PM (53)
Apr 15, 12-1 PM (60)
Apr 15, 1-2 PM (43)
Apr 15, 2-3 PM (45)
Apr 15, 3-4 PM (29)
Apr 15, 4-5 PM (44)
Apr 15, 5-6 PM (21)
Apr 15, 6-7 PM (33)
Apr 15, 7-8 PM (15)
Apr 15, 8-9 PM (17)
Apr 15, 9-10 PM (5)
Apr 15, 10-11 PM (20)
Apr 15, 11-12 AM (16)
Apr 16, 12-1 AM (12)
Apr 16, 1-2 AM (6)
Apr 16, 2-3 AM (7)
Apr 16, 3-4 AM (3)
Apr 16, 4-5 AM (4)
Apr 16, 5-6 AM (8)
Apr 16, 6-7 AM (33)
Apr 16, 7-8 AM (32)
Apr 16, 8-9 AM (31)
Apr 16, 9-10 AM (27)
Apr 16, 10-11 AM (50)
Apr 16, 11-12 PM (56)
Apr 16, 12-1 PM (58)
Apr 16, 1-2 PM (30)
Apr 16, 2-3 PM (40)
Apr 16, 3-4 PM (46)
Apr 16, 4-5 PM (47)
Apr 16, 5-6 PM (56)
Apr 16, 6-7 PM (17)
Apr 16, 7-8 PM (68)
Apr 16, 8-9 PM (38)
Apr 16, 9-10 PM (11)
Apr 16, 10-11 PM (23)
Apr 16, 11-12 AM (23)
Apr 17, 12-1 AM (12)
Apr 17, 1-2 AM (8)
Apr 17, 2-3 AM (3)
Apr 17, 3-4 AM (4)
Apr 17, 4-5 AM (3)
Apr 17, 5-6 AM (9)
Apr 17, 6-7 AM (26)
Apr 17, 7-8 AM (96)
Apr 17, 8-9 AM (70)
Apr 17, 9-10 AM (53)
Apr 17, 10-11 AM (41)
Apr 17, 11-12 PM (58)
Apr 17, 12-1 PM (64)
Apr 17, 1-2 PM (39)
Apr 17, 2-3 PM (46)
Apr 17, 3-4 PM (36)
Apr 17, 4-5 PM (13)
Apr 17, 5-6 PM (10)
Apr 17, 6-7 PM (25)
Apr 17, 7-8 PM (22)
Apr 17, 8-9 PM (3)
Apr 17, 9-10 PM (16)
Apr 17, 10-11 PM (24)
Apr 17, 11-12 AM (16)
Apr 18, 12-1 AM (2)
Apr 18, 1-2 AM (2)
Apr 18, 2-3 AM (6)
Apr 18, 3-4 AM (1)
Apr 18, 4-5 AM (2)
Apr 18, 5-6 AM (2)
Apr 18, 6-7 AM (1)
Apr 18, 7-8 AM (2)
Apr 18, 8-9 AM (4)
Apr 18, 9-10 AM (4)
Apr 18, 10-11 AM (1)
Apr 18, 11-12 PM (6)
Apr 18, 12-1 PM (7)
Apr 18, 1-2 PM (8)
Apr 18, 2-3 PM (9)
Apr 18, 3-4 PM (0)
Apr 18, 4-5 PM (2)
Apr 18, 5-6 PM (6)
Apr 18, 6-7 PM (2)
Apr 18, 7-8 PM (2)
Apr 18, 8-9 PM (4)
Apr 18, 9-10 PM (9)
Apr 18, 10-11 PM (21)
Apr 18, 11-12 AM (23)
Apr 19, 12-1 AM (1)
Apr 19, 1-2 AM (4)
Apr 19, 2-3 AM (1)
Apr 19, 3-4 AM (0)
Apr 19, 4-5 AM (0)
Apr 19, 5-6 AM (2)
Apr 19, 6-7 AM (0)
Apr 19, 7-8 AM (2)
Apr 19, 8-9 AM (1)
Apr 19, 9-10 AM (1)
Apr 19, 10-11 AM (4)
Apr 19, 11-12 PM (7)
Apr 19, 12-1 PM (6)
Apr 19, 1-2 PM (8)
Apr 19, 2-3 PM (22)
Apr 19, 3-4 PM (7)
Apr 19, 4-5 PM (4)
Apr 19, 5-6 PM (3)
Apr 19, 6-7 PM (8)
Apr 19, 7-8 PM (3)
Apr 19, 8-9 PM (8)
Apr 19, 9-10 PM (6)
Apr 19, 10-11 PM (25)
Apr 19, 11-12 AM (23)
Apr 20, 12-1 AM (4)
Apr 20, 1-2 AM (5)
Apr 20, 2-3 AM (2)
Apr 20, 3-4 AM (7)
Apr 20, 4-5 AM (1)
Apr 20, 5-6 AM (6)
Apr 20, 6-7 AM (11)
Apr 20, 7-8 AM (29)
Apr 20, 8-9 AM (42)
Apr 20, 9-10 AM (37)
Apr 20, 10-11 AM (95)
Apr 20, 11-12 PM (42)
Apr 20, 12-1 PM (39)
Apr 20, 1-2 PM (53)
Apr 20, 2-3 PM (68)
Apr 20, 3-4 PM (47)
Apr 20, 4-5 PM (40)
Apr 20, 5-6 PM (31)
Apr 20, 6-7 PM (24)
Apr 20, 7-8 PM (10)
Apr 20, 8-9 PM (7)
Apr 20, 9-10 PM (16)
Apr 20, 10-11 PM (28)
Apr 20, 11-12 AM (18)
Apr 21, 12-1 AM (24)
Apr 21, 1-2 AM (5)
Apr 21, 2-3 AM (13)
Apr 21, 3-4 AM (4)
Apr 21, 4-5 AM (3)
Apr 21, 5-6 AM (8)
Apr 21, 6-7 AM (15)
Apr 21, 7-8 AM (44)
Apr 21, 8-9 AM (119)
Apr 21, 9-10 AM (36)
Apr 21, 10-11 AM (35)
Apr 21, 11-12 PM (97)
Apr 21, 12-1 PM (57)
Apr 21, 1-2 PM (71)
Apr 21, 2-3 PM (60)
Apr 21, 3-4 PM (31)
Apr 21, 4-5 PM (26)
Apr 21, 5-6 PM (22)
Apr 21, 6-7 PM (0)
3,830 commits this week Apr 14, 2026 - Apr 21, 2026
Update nixpkgs-unstable and nixpkgs-2511, fix deprecation warnings (#2494)
* Update nixpkgs-unstable and nixpkgs-2511, fix deprecation warnings

Update nixpkgs-unstable and nixpkgs-2511 pins and fix the resulting
evaluation warnings for deprecated package names. Uses
backwards-compatible fallback patterns so older nixpkgs still works:

- Replace xorg.* references with (pkgs.newName or pkgs.xorg.oldName)
- Add xorgCompat set in pkgconf-nixpkgs-map.nix to map deprecated
  xorg attribute names to their new top-level equivalents
- Update renamed packages (enchant2, unixODBC, goocanvas, etc.)
  using a prefer helper that selects the new name when available

* Patch hp2ps for GCC 15 compatibility (GHC 9.6–9.8)

GHC 9.6.x and 9.8.x utils/hp2ps/Utilities.c uses K&R-style
extern declarations for malloc/realloc without including <stdlib.h>.
GCC 15 treats these as zero-argument functions, causing build failure.

* Remove deprecated 'pie' hardening flag for musl builds

nixpkgs 26.05 removed 'pie' from the hardening system entirely -- PIE
is now enabled by default in compilers. Any mention of 'pie' in either
hardeningEnable or hardeningDisable triggers a deprecation warning:

  "The 'pie' hardening flag has been removed in favor of enabling PIE
   by default in compilers and should no longer be used."

This causes ~68 warnings per evaluation for projects with musl
cross-compilation, which is every haskell.nix project using
crossPlatforms with musl64 or aarch64-multiplatform-musl.

Remove the two places where 'pie' was added to hardeningDisable:
- builder/comp-builder.nix: every Haskell component on musl
- compiler/ghc/default.nix: GHC itself on musl targets

* Make pie hardening removal backwards compatible

Only disable pie for musl when the toolchain still has it as a
default hardening flag (nixpkgs <= 25.05). On newer nixpkgs where
pie was removed from the hardening system, skip it to avoid the
deprecation warning.

* Add wine 11.0 patch for LdrAddDllDirectory device paths

Wine 11.0 renamed DOS_PATHNAME_TYPE to RTL_PATH_TYPE and changed
the enum values (DEVICE_PATH -> RtlPathTypeLocalDevice). Add a
new patch variant for wine >= 11.0 that uses the new API names.

* Drop removed 'static' argument from zlib override in android overlay

The 'static' parameter was removed from zlib in nixpkgs-unstable.
Setting 'shared = false' is sufficient to get a static-only build
and works across all nixpkgs versions.

* Fix emnm path for emscripten 4.0+ in GHCJS builds

Emscripten 4.0+ moved emnm from share/emscripten/emnm to
share/emscripten/tools/emnm.py. Use builtins.pathExists to
select the correct path for backwards compatibility.

* Fix musl cross-compilation for libffi, gmp and ncurses

- libffi, gmp: disable doCheck when cross-compiling since test
  binaries can't execute on the build host
- ncurses: disable broken symlink check when cross-compiling to
  avoid case-sensitive symlink target mismatch

* Disable terminfo for cross-compilation, fix ncurses handling

Hadrian builds terminfo unconditionally for stage0, passing the same
--with-curses-libraries to both stage0 (host compiler) and stage1
(target compiler). Before GHC 9.15 (which has MR 13932), this cannot
work when the host and target have different ncurses (e.g. glibc vs
musl), because the host compiler can't link against target static libs.

Matching nixpkgs common-hadrian.nix:
- Disable enableTerminfo when platform configs differ (cross builds)
  for GHC < 9.15
- Gate --with-curses-libraries on enableTerminfo so it's not passed
  in cross builds (avoiding the stage0 ABI mismatch)
- Keep ncurses in libDeps unconditionally (not gated on enableTerminfo)
  since hadrian builds terminfo for stage0 regardless, and
  depsTargetTarget needs target ncurses for stage1

* Extend hp2ps stdlib patch to all affected GHC versions

The K&R-style extern void* malloc() in utils/hp2ps/Utilities.c
is present in all GHC versions from 8.10.7 through 9.12.3.
It was fixed with a proper prototype in 9.10.2 and fully fixed
with #include <stdlib.h> in 9.10.3 and 9.12.4+.

* Fix Wine for 11.0+: use lib.getExe and wine64Packages

Wine 11.0 removed the wine64 binary, unifying it into wine.
Use wine64Packages.minimal (for 64-bit support) and lib.getExe
to pick the correct binary name via meta.mainProgram.
Also patch wine64Packages.minimal with the same fixes as
winePackages.minimal.

* Skip lit max-time.py self-test in wasm LLVM build

Test hangs in the nix build sandbox: a Python multiprocessing.Pool
deadlock (`_help_stuff_finish` acquires `inqueue._rlock` without
releasing) combined with a leaked signal mask that leaves SIGTERM
blocked in the worker means `pool.terminate()` can't kill it.
nix-shell builds complete fine; only nix-build hangs.

---------

Co-authored-by: Mateusz Galazyn <[email protected]>
Require an offered EB's size to match the target in choosePeerTx
Add 'targetBytesSize :: BytesSize' parameter to 'choosePeerTx' and
replace the 'not $ Map.null txOffsets'' guard with a check that an
arbitrary entry in 'txOffsets'' claims the same size, per
@nfrisby's review.

An honest peer wouldn't offer EbClosures for EBs that assign
different sizes to the same tx, so every entry in 'txOffsets'' has
the same size and a single-entry check is representative. For an
adversarial peer it's inevitable that they could send a different
amount of bytes than requested, so the accuracy of
'requestedBytesSize' and 'requestedBytesSizePerPeer' is not
particularly important or achievable — the single-entry check is
sufficient.

Addresses @nfrisby's review comment.