Revision history for Perl extension UV

2.002 2026-01-28
    - Allow `UV::Poll` to operate on any blessed IO::Handle instance, not
      just those who package name begins "IO::Socket"

2.001 2026-01-06
    - Don't assert that `$loop->backend_timeout` is nonzero initially
      (fixes GH#40)
    - Slight modernizations:
       - `use v5.14` in every file
       - Use Perl v5.14-style `package NAME VERSION` syntax instead of
         explicit assignments to `our $VERSION`
    - Misc small fixes to Pod documentation

2.000 2021-07-28
    - Also add repository bugtracker URL to META files
    - Document the `$callback` argument to `$loop->getnameinfo()`
    - Add a TODO section to the documentation, outlining remaining libuv
      functionallity that could still be handled, but isn't currently

1.912 2021-07-25
    - Documentation adjustment preparing for 2.000 release
    - Misc small internal fixes to Build.PL and git metadata
    - Bugfix the github CI workflows
    - Add repository metadata to META files
    - Regenerated README.md
    - Back-compat to perl 5.14; declare minimum required perl version

1.911 2021-07-16
    - Fix an `#if` that should have been an `#ifdef`
    - Fix skip message in t/12-udp-open.t

1.910 2021-07-16
    - Don't attempt to support UV::TCP->open or UV::UDP->open on Windows,
      because we'd need WSA_FLAG_OVERLAPPED but Perl doesn't set it on sockets
      it creates (related to #38).

1.909 2021-05-26
    - Avoid use-after-free bug when ->close'ing newly listened client
      connections
    - Account for different errno value on MSWin32 in unit test

1.908 2021-05-18
    - Don't attempt to unlink $path at END time if the entire test was skipped
    - A better implementation of pipepair for testing that might work on
      MSWin32

1.907 2021-04-09
    - Various small fixes from @Corion to improve unit testing on MSWin32

1.906 2021-03-25
    - Don't worry about `AI_V4MAPPED` on systems which don't provide it
    - Removed now-dead `cpanfile`

1.905 TRIAL 2021-03-23
    - Various blind stabbings-in-the-dark that might be MSWin32 bugfixes
       + Export SIG* constants because libuv emulates a few
       + Handle CRLF linefeeds in Process tests
       + Maybe we need to _MAKE_SOCK() when calling uv_tcp_open() and
         uv_udp_open()
       + Skip some AF_UNIX tests that won't work there
    - Return hrtime() as an NV on platforms without 64bit int (thanks ilmari)

1.904 TRIAL 2021-03-19
    - Use cmp_ok() on unreliably-failing timer test so when it fails we at
      least get a log of the numbers
    - No need for _cleanup_loop() in unit tests
    - Remove UV::Loop->walk and related code because it isn't implemented
      and can't easily be made to work

1.903 TRIAL 2021-01-19
    - Switch build system to Module::Build::Using::PkgConfig to see if the
      late-alien handling there works better for users to install

1.902     2021-01-19
    - Adjust Makefile.PL for better pkg-config or Alien handling

1.900, 1.901
    - Totally rewritten XS logic by Paul "LeoNerd" Evans

1.000009  2019-02-07
    - Improve the way we create constants. (xenu: pr/27)
    - Update the build to use @Starter v3
    - Automate version numbers using DZil rather than incrementing by hand
    - Generate GitHub Flavored Markdown for the README now
    - Expand testing to more versions of Perl

1.000008  2018-04-21
    - Fix bug in call to Newx(). (Jim Keenan: issues/24)
    - Update UV::Loop documentation to better cover the close method.
    - No longer need Devel::GlobalDestruction.
    - First real release.

1.000007  2018-04-20 (TRIAL)
    - Fixed typo in test suite
    - Added in Test::CleanNamespaces
    - Consolidate down to one BOOT block
    - Fix a bug when removing structs from objects
    - Add some debug statements when built with PERL_UV_DEBUG environment var
      set
    - Loop destructor should just call ->close()
    - Simplify the loop singleton


1.000006  2018-04-16 (TRIAL)
    - Removed is_closing()
    - Removed is_active()
    - Removed loop_configure()
    - Removed loop_alive()
    - Removed reference to UV::Poll->new_socket() as that's all done in the
      standard ->new() constructor now.
    - Updated documentation for the Handle classes to better indicate their
      use.
    - Removed extra library detection for windows as this is now done in
      Alien::libuv
    - Bumped the requirement of Alien::libuv to 1.000
    - Removed some bad Poll tests
    - Add try/catch block for all Handle start methods
    - Removed Moo requirements

1.000005  2018-01-28 (TRIAL)
    - Update 02-loop-alive.t to more closely resemble libuv's
    - Remove lib/p5uv_handles.h (no longer needed)
    - Remove lib/p5uv_loops.h (no longer needed)
    - Ensure all Handle objects call ->_destruct() on destruction rather than
      just calling close.
    - Provide the current "closed" state of the handle to its destructor to
      assist with knowing when to free safely.
    - Rename Loop->_destroy() to Loop->_destruct() to be consistent
    - Make Loop->_destroy() use p5uv_destroy_loop() to free properly
    - A few changes at the suggestion of Devel::PPPort
    - Added a few more tests to ensure we can export things correctly
    - Added a UV::check() function. A convenience wrapper to UV::Check->new
    - Added a UV::idle() function. A convenience wrapper to UV::Idle->new
    - Added a UV::poll() function. A convenience wrapper to UV::Poll->new
    - Added a UV::prepare() function. A convenience wrapper to UV::Prepare->new
    - Reworked the tests to exercise the above convenience wrappers
    - Removed a few superfluous 'use' statements

1.000004  2018-01-25 (TRIAL)
    - Require at least ExtUtils::MakeMaker v7.12 for XSMULTI
    - Move all *.[ch] into lib with the module using XSMULTI (mohawk)
    - Redesign everything
    - Now using XS::Object::Magic to hide the C structs within our Perl objects
    - Now using Moo
    - Doing more of the work in Perl-land
    - Pretty much a complete-rewrite from v1.000003

1.000003  2017-10-26 (TRIAL)
    - Don't store Loop stashes globally (thread safety)
    - Moved constant declarations / some de-dupe efforts (Thanks Paul Evans)
    - Added Perl context to all functions that call the Perl API
    - Separated loop and handle functions from the XS interface

1.000002  2017-09-24 (TRIAL)
    - Don't store Handle stashes globally for Handle types (thread safety)
    - Simplified the typemap
    - Removed UV::default_loop from UV.xs and added to UV.pm instead
    - Renamed some macros to make more sense.
    - Removed unused macros
    - Default value for SIGPROF as it doesn't exist in Windows (useful in *nix)

1.000001  2017-08-17 (TRIAL)
    - Update some prereqs
    - Remove use of SO_REUSEPORT in the tests. We store the port already.
    - Made 05-poll-closesocket.t a windows-only test

1.000000_01 2017-08-12 (TRIAL)
    - ****** MAJOR, BREAKING CHANGES AHEAD ******
    - Migrated to Dist::Zilla
    - Moved the version of libuv from 0.x to 1.x
    - Dropped the included src of libuv
    - Dropped the libuv license since we no longer include their source
    - Use Alien::libuv for ensuring we have a libuv to build against
    - Completely rewrote the software due to massive changes between 0.x - 1.x
    - Added Math::Int64 for proper uint64_t support
    - Reworked the UV::loop into a new UV::Loop area
    - Added the ability to get non-default loops

0.24      2013-03-29
    - fixed a packaging issue

0.23      2013-03-29T
    - libuv updated to 0.10.2 (first officially versioned release of libuv)
    - supported following new functions:
      uv_version_string, uv_stop, uv_tcp_open, uv_udp_open, uv_interface_addresses

0.22      2012-10-12
    - added a dirty (hopefully temporary) hack to make libuv with -fPIC.

0.21      2012-10-10
    - added a Makefile.PL treak avoiding segmentation fault. (ref RT #115206)

0.2       2012-10-05
    - added UV::loop namespace and UV::default_loop() to get default_loop,
      it contains active_handles information.
    - added uv_walk
    - added deps/ to ignoring list for CPAN indexer

0.12      2012-10-01
    - added CAUTION section in doc ;)

0.1       2012-09-30
    - initial version
