PaulHowarth/Blog/2026-04-06

Monday 6th April 2026

Local Packages

  • Updated perl-ExtUtils-ParseXS to 3.63:

    • Allow 'length(foo)' to work with any 'foo' type that has 'SvPV_nolen()' or similar in its typemap, not just that it maps to T_PV

    • Use static, not STATIC

    • Rewrite perlxs.pod

    • Finish refactoring to use an Abstract Syntax Tree (AST) internally
    • Improve warning and error messages
    • Improve test coverage
    • Reorganise t/

  • Updated perl-Net-Daemon to 0.52:

  • Bug fixes:
    • Fix dead $RegExpLock that was never acquired in ithreads mode; the lock variable existed but was never actually locked before regexp compilation, leaving ithreads unprotected; also fix share() call to pass explicit ref for runtime-loaded prototype (GH#33)

    • Fix ithreads auto-detection to gate on Perl 5.10+ and exclude Windows; on Perl 5.8.x threads::shared is never loaded, making lock() a no-op; on Windows, DuplicateHandle() corrupts Winsock sockets - WSADuplicateSocket() is required instead (GH#19, GH#30, GH#50)

    • Correct $eventId hash key typo in Log.pm that prevented event IDs from being logged (GH#36)

    • Fix Done() call in test server Loop method - was called without arguments, preventing proper server shutdown (GH#38)

    • Clean up stale test artifacts (log, ndtest.cnt) (GH#40)

    • Harden ReadConfigFile against $@ contamination and $! errors (GH#44)

    • Skip pidfile write when pidfile option is not set, preventing spurious empty pidfile creation (GH#45)

    • Close cloned listening socket in ithreads handler threads; Perl ithreads dup every open handle into new threads; on Windows closing these at thread exit invalidated the parent's handle; also re-add Windows skip with root-cause documentation (GH#19, GH#30, GH#46)

    • Address CPAN testers failures in t/reap.t and t/fork.t (GH#48)

    • Skip ithread-detach.t on Perl < 5.10 (GH#49)

    • Verify privilege drop succeeded in Bind(); assigning to $>/$) silently fails without permission - the daemon would continue running as root (GH#51)

    • Use POSIX::setuid/setgid for permanent privilege drop in Bind(); the previous $< = ($> = $user) left saved-set-user-ID as root, allowing a compromised process to regain privileges (GH#55)

  • Improvements:
    • Modernize open() calls to 3-arg form with lexical filehandles throughout the codebase (GH#41)

  • Maintenance:
    • Fix POD typos and remove outdated alpha warning (GH#37)

    • Fix stale --mode=threads references and config example syntax in documentation (GH#39)

    • Update ancient FSF address in Net::Daemon::Test copyright (GH#34, GH#35)

    • Convert server tests from raw TAP to Test::More (GH#42)

    • Convert ithreads tests to Test::More and fix Test.pm fd leak (GH#43)

    • Convert remaining tests (loop.t, loop-child.t, unix_clients.t, forkm.t) to Test::More (GH#47)

  • Updated perl-Pod-Simple to 3.48:

    • Add sections to manpage URLs (GH#193)

    • Better fallback when no HTML::Entities (GH#189)

    • Don't call each on an anonymous hash (GH#191)

    • Fix encoding of Unicode URL fragments (GH#194)


Recent