PaulHowarth/Blog/2026-04

Paul's Blog Entries for April 2026

Wednesday 1st April 2026

Local Packages

  • Rebuilt dovecot (2.4) for lua 5.5 in Rawhide

  • Rebuilt perl-Compress-Raw-Lzma (2.221) against xz 5.8.3 in Rawhide

  • Updated perl-Mail-SPF to 3.20260331:

    • Do not check for multiple CNAMEs if the included domain is a macro

Thursday 2nd April 2026

Fedora Project

  • Updated bluefish to 2.4.1 in Rawhide:

    • Bluefish 2.4.1 is a minor maintenance release with a few notable changes
    • The experimental "side by side" feature that was introduced in 2.4.0 is no longer experimental and is fully stable now
    • A new feature is that Bluefish will automatically adjust the text colours for people that use a dark desktop theme
    • Translations for Ελληνικά (Greek) and தமிழ் (Tamiḻ) have been completely renewed
    • A critical bug and a regression in the split view function has been fixed
    • The windows build has some minor improvements
    • Several translations are updated
  • Updated perl-Business-ISBN-Data to 20260331.001 in Rawhide:

    • Data update for 2026-03-31
  • Updated perl-IO-Tty to 1.25 in Rawhide:

  • Bug Fixes:
    • Fix IO::Pty DESTROY force-closing the slave pty: the DESTROY method (added in 1.21) explicitly closed the cached slave handle, breaking consumers like IPC::Run that hold a reference to the slave via $pty->slave() and expect it to survive master destruction; now just deletes the internal reference and lets Perl's refcounting handle fd closure correctly (GH#62, GH#64)

  • Maintenance:
    • Simplify version variables to a single source of truth: extract version from Tty.pm in Makefile.PL using MM->parse_version() instead of hard-coding it, use VERSION_FROM in WriteMakefile, and remove $XS_VERSION from Tty.pm (GH#61)

  • Updated perl-IPC-Run to 20260401.0 in Rawhide:

  • Bug fixes:
    • Require IO::Pty 1.25, which fixes stale pty slave fd after close_terminal in child, replacing defensive workarounds (GH#240, GH#241)

    • Close Win32IO socket/pipe handles explicitly in _cleanup to prevent handle leaks (GH#237, GH#246)

    • Handle $SIG{PIPE} set to 'DEFAULT' in _select_loop instead of crashing (GH#242, GH#244)

    • Handle $SIG{CHLD} set to '' or 'DEFAULT' in _select_loop (GH#262)

    • Fix PTYS typo in adopt() and missing TIMERS init in harness constructor (GH#260)

    • Handle PTY allocation failure gracefully in start() instead of dying with an unhelpful error (GH#267)

    • Correct Timer.pm POD typos, _parse_time error message, and remove redundant parse call (GH#251)

    • Prevent noexec probe from leaking TAP output in search_path_cache.t (GH#247)

  • Improvements:
    • Correct broken POD links and code examples in documentation (GH#252)

  • Maintenance:
    • Update GitHub URLs from toddr/IPC-Run to cpan-authors/IPC-Run (GH#263)

    • Replace GPL v2 full text with standard "same terms as Perl" license (GH#268)

    • Add AI policy document (GH#248)

    • Use File::Spec->devnull in autoflush.t for portability (GH#250)

    • Skip search_path_cache.t on noexec temp filesystems (GH#247)

    • Remove dead code from Run.pm (GH#266)

  • Updated perl-YAML-Syck to 1.43 in Rawhide:

  • Bug Fixes:
    • Fix: Prevent resource leaks on croak/early-return paths in Dump (GH#161)

    • Fix: Prevent output SV leaks on croak in Dump/DumpFile callers (GH#163)

    • Fix: Load() in list context returns empty list for empty/undef input; also applies to LoadBytes and LoadUTF8 (GH#164, GH#165)

    • Fix: DumpCode serializes prototype string instead of code body (GH#168)

    • Fix: Memory leak in !perl/scalar Load - newRV_inc should be newRV_noinc (GH#170)

    • Fix: Add pTHX_ to SAVEDESTRUCTOR_X callback for threaded Perl (GH#175, GH#176)

    • Fix: Add TODO guard for eval_pv leak on Perl < 5.14 (GH#179, GH#180)

    • Fix: Negative hex and octal values parsed as 0 with ImplicitTyping (GH#183)

    • Fix: Negative int#base60 values produce unsigned wraparound (GH#185)

  • Improvements:
    • Modernize META_MERGE for CPANTS compliance (GH#162)

    • Fix hash table size handling and remove compile warnings in syck_st (GH#174)

  • Maintenance:
    • Restore TODO guard for Dump code leak test on Perl < 5.26 (GH#167)

    • Resolve 2010 TODO in perl_json_postprocess with test coverage (GH#166)

    • CI: Upgrade actions to resolve Node.js 20 deprecation warnings (GH#177)

Local Packages

  • Updated bluefish to 2.4.1 as per the Fedora version

  • Updated perl-IO-Tty to 1.25 as per the Fedora version

  • Updated perl-IPC-Run to 20260401.0 as per the Fedora version

  • Updated perl-YAML-Syck to 1.43 as per the Fedora version

Friday 3rd April 2026

Fedora Project

  • Updated perl-Business-ISBN-Data to 20260403.001 in Rawhide:

    • Data update for 2026-04-03
  • Updated perl-IO-Tty to 1.26 in Rawhide:

  • Bug Fixes:
    • Fix strlcpy detection on DragonFly BSD to avoid static/non-static declaration conflict; added __DragonFly__ guard to the function test (paralleling __FreeBSD__) and added a belt-and-suspenders check for perl's own HAS_STRLCPY in Tty.xs (GH#67)

  • Maintenance:
    • Add 5-minute timeout to all CI test steps to prevent hung tests from consuming CI resources indefinitely (GH#66)

  • Updated perl-IPC-Run to 20260402.0 in Rawhide:

  • Bug fixes:
    • Detect undefined command in arrayref at harness parse time instead of deferring to start() (GH#164, GH#271, GH#272)

    • pipe_writer dropped input when data is the string "0" due to redundant boolean test on input buffer (GH#264)

    • Callback filter evaluates return in list context to distinguish empty return from the string "0", preventing infinite loop on Win32 (GH#264)

    • Skip pty output assertions on BSD/Darwin due to known pty drain timing issues on short-lived children (GH#240, GH#274)

    • Implement proper Windows command-line parsing per Microsoft C/C++ rules, fixing argument parsing failures with single-quoted strings containing whitespace (GH#273)

  • Maintenance:
    • Add shebang to eg/synopsis_scripting (GH#275)

  • Updated perl-YAML-Syck to 1.44 in Rawhide:

    • Fix: Positive hex and octal values parsed as 0 with ImplicitTyping (GH#187)

    • Fix: Resolve uintptr_t redefinition error on Win64 MinGW (GH#186)

Local Packages

  • Updated perl-IO-Tty to 1.26 as per the Fedora version

  • Updated perl-IPC-Run to 20260402.0 as per the Fedora version

  • Updated perl-YAML-Syck to 1.44 as per the Fedora version

Sunday 5th April 2026

Fedora Project

  • Updated perl-IO-Tty to 1.27 in Rawhide:

    • Fix build on OpenBSD by including termios.h to detect openpty reliably and setting _BSD_SOURCE to find strlcpy in includes (GH#68)

  • Updated perl-Module-Metadata to 1.000039 in Rawhide:

    • Adds recognition of attributes in "class" declarations (GH#39)

  • Updated perl-Perl-PrereqScanner-NotQuiteLite to 0.9918 in Rawhide:

    • Support builtin, experimental, native class and Feature::Compat::Class

Local Packages

  • Updated curl (rc) to new upstream release candidate 8.20.0~rc1

  • Updated perl-IO-Tty to 1.27 as per the Fedora version

  • Updated perl-Module-Metadata to 1.000039 as per the Fedora version

  • Updated perl-Mouse to 2.6.2:

    • Fix the conversion from floating point number to string with quadmath Perl (GH#126)

  • Updated perl-Perl-PrereqScanner-NotQuiteLite to 0.9918 as per the Fedora version

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)


Previous Month: March 2026

Recent