Introduce a new keyword, state, for state variables.
[p5sagit/p5-mst-13.2.git] / ext / Time / HiRes / Changes
index 7b64ee1..0489123 100644 (file)
 Revision history for Perl extension Time::HiRes.
 
-1.59
+1.87   [2006-02-13]
+       - [rt.cpan.org #17442] 'make test' frequently fails under
+         Cygwin Perl v5.8.8, reported and patched by J. R. Hedden
+         (two race condition bugs in the END block in the case the
+          main process dies before the timer process, unearthed
+          by a bug in Cygwin ualarm)
+
+1.86   [2005-12-17]
+       - HiRes.t:s/ok 32/ok 33/, from Dominic Dunlop
+       - tighten up the clock() test marginally by requiring non-negative
+       - clock_nanosleep() and clock() doc tweaks
+
+1.85   [2005-12-16]
+       - the interface to clock_nanosleep() is more natural
+         when it is like (hires) time() (instead of like nanosleep),
+         and the .xs implementation of clock_nanosleep() in 1.84
+         was broken anyway
+       - the semantics of clock() are not quite so silly as I thought,
+         but still somewhat odd, documented as such
+       - additional enhancements to the clock() documentation
+       - add test for clock_nanosleep() (I cannot test this
+         since none of my systems have the function)
+       - add test for clock()
+
+1.84   [2005-12-16]
+       - add clock() which returns the processor time in
+         (floating point) seconds since an arbitrary era
+       - add clock_nanosleep() which suspends the current
+         thread until either absolute time or for relative time
+       - [rt.cpan.org #16486] printf missing value in HiRes.t
+       - add constants CLOCKS_PER_SEC, CLOCK_SOFTTIME, TIMER_ABSTIME
+       - tiny typo fixes
+
+1.83   [2005-11-19]
+       - has_symbol() was wrong since e.g. ITIMER_VIRTUAL is exported
+         via @EXPORT_OK even when it is not available.  This is heinous.
+         @EXPORT_OK should be determined at Makefile.PL time.
+       - be more lenient is testing clock_gettime(): allow more slop,
+         and retry up to three times, sleeping a random nap between
+         the retries
+       - human months are one-based (noticed by Anton Berezin)
+
+1.82   [2005-10-06]
+       - CLOCK_REALTIME is an enum value (of the clockid_t enum)
+         in HP-UX (and might be so elsewhere, too), debugged by
+         H. Merijn Brand
+       - include const-c.inc as late as possible (from Randy Kobes,
+         [rt.cpan.org #15552] to avoid undefined usleep() on Win32
+
+1.81   [2005-11-05]
+       - try to be more robust and consistent in the detection of
+          CLOCK_REALTIME and ITIMER_VIRTUAL in HiRes.t: the proper
+         way is
+
+               sub has_symbol {
+                   my $symbol = shift;
+                   eval 'import Time::HiRes qw($symbol)';
+                   return 0 unless $@ eq '';
+                   return exists ${"Time::HiRes::$symbol"};
+               }
+
+         and then use
+
+               &FOO_BAR
+
+         in the test.  All these moves are needed because
+
+         1) one cannot directly do eval 'Time::HiRes::FOO_BAR'
+            because FOO_BAR might have a true value of zero
+            (or in the general case an empty string or even undef)
+
+         2) In case FOO_BAR is not available in this platform,
+            &FOO_BAR avoids the bareword warning
+
+       - wait more (1.5 seconds instead of 0.1) for the CLOCK_REALTIME test
+         but expect the 'customary' slop of 0.20 instead of 0.25
+       - fixed inside a comment HAS_POLL -> TIME_HIRES_NANOSLEEP
+       - at the end of HiRest.t tell how close we were to termination
+
+1.80   [2005-11-04]
+       - Gisle noticed a mistake (using HAS_NANOSLEEP) in 1.79
+
+1.79   [2005-11-03]
+       - try nanosleep for emulating usleep -- may help in some weird
+         embedded realtime places which have nanosleep but neither usleep
+         nor select nor poll (doesn't have to be weird embedded realtime
+         place, though -- in many places usleep is nanosleep anyway)
+       - try poll for emulating usleep -- this may help some obscure/old
+         SVR4 places that have neither usleep nor select
+       - a redundant test guard in HiRes.t
+
+1.78   [2005-11-03]
+       - ITIMER_VIRTUAL detection in HiRes.t had problems (that we cannot
+         in the general case fail already at 'use' phase is suboptimal)
+       - fixes to the documentation of clock_gettime() and clock_getres()
+
+1.77   [2005-11-03]
+       - add support for the POSIX clock_gettime() and clock_getres(),
+         if available, either as library calls or as syscalls
+       - be more defensive about missing functionality: break out
+         early (during 'use') if no e.g. clock_getres() is available,
+         and protect our back by trapping those cases also in HiRes.xs
+       - the test added in 1.76 could cause an endless loop e.g. in Solaris,
+         due to mixing of sleep() and alarm() (bad programmer, no cookie!)
+
+1.76   [2005-10-22]
+       - testing for nanosleep had wrong logic which caused nanosleep
+         to become undefined for e.g. Mac OS X
+       - added a test for a core dump that was introduced by Perl 5.8.0
+         safe signals and was fixed for the time of 5.8.1 (one report of
+         the core dump was [perl #20920]), the test skipped pre-5.8.1.
+       - *cough* s/unanosleep/nanosleep/g; *cough*
+
+1.75   [2005-10-18]
+       - installation patch from Gisle Aas: in Perls 5.8.x and later
+         use MakeMaker INSTALLDIRS value of 'perl' instead of 'site'.
+
+1.74   [2005-09-19]
+       - [cpan #14608] Solaris 8 perl 5.005_03 File::Spec module does not have method rel2abs
+         (the workaround is not to use rel2abs, should not be necessary)
+       - [cpan #14642] U2time wrongly exported on the C API
+         (patch supplied by the reporter, SALVA@cpan.org)
+       - add release dates to Changes
+
+1.73   [2005-08-16]
+       - Time::HiRes::nanosleep support for Solaris [PATCH]
+         (POSIX::uname() not available if building with core perl,
+          from Gisle Aas, via perl5-porters, perl change #25295)
+
+1.72   [2005-07-01]
+       - going back to the 1.68 loader setup (using DynaLoader)
+         since too many weird things starting breaking
+       - fix a typo in José Auguste-Etienne's name
+
+1.71   [2005-06-28]
+       - a thinko in the nanosleep() detection
+       - move more changes stuff from the README to Changes
+       - add -w to the Makefile.PL
+
+1.70   [2005-06-26]
+       - oops in 1.69 about @ISA (not affecting anything but silly)
+       - add copyright 2005 to HiRes.pm
+       - add copyright and license to HiRes.xs
+       - add copyrights 2003, 2004, 2005 to README
+
+1.69   [2005-06-25]
+       - actually run a test for nanosleep
+         (if there is no $Config{d_nanosleep}) since e.g. in AIX 4.2
+         it seems that one can link in nanosleep() but then calling
+         it fails instantly and sets errno to ENOSYS (Not implemented).
+         This may be fixable in the AIX case by figuring out the right
+         (realtime POSIX?) libs and whatnot, but in the general case
+         running a real test case is better.  (Of course, this change
+         will no doubt run into portability problems because of the
+         execution step...)  Note that because of hysterical raisins
+         most Perls do NOT have $Config{d_nanosleep} (scanning for
+         it by Configure would in many platforms require linking in
+         things like -lrt, which would in many platforms be a bad idea
+         for Perl itself).
+         (from José Auguste-Etienne)
+       - support XSLoader also since it's much faster
+         (from Alexey Tourbin)
+       - add SEE ALSO (BSD::Resource and Time::TAI64)
+
+1.68   [2005-05-14]
+       - somehow 1.67 had a lot of doubled lines (a major cut-and-paste
+         error suspected), but miraculously it still worked since the
+         doubling took place below the __END__ token
+       - undef Pause() before defining it to avoid redefinition warnings
+         during compilation in case perl.h had already defined Pause()
+         (part of perl change #24271)
+       - minor doc tweaks
+
+1.67   [2005-05-04]
+       - (internal) don't ignore the return value of gettimeofday()
+       - (external) return undef or an empty if the C gettimeofday() fails
+         (affects Time::HiRes gettimeofday() and the hires time())
+
+1.66   [2004-12-19]
+       - add nanosleep()
+       - fix the 'hierachy' typo in Makefile.PL [rt.cpan.org #8492]
+       - should now build in Solaris [rt.cpan.org #7165] (since 1.64)
+       - should now build in Cygwin [rt.cpan.org #7535] (since 1.64)
+       - close also [rt.cpan.org #5933] "Time::HiRes::time does not
+         pick up time adjustments like ntp" since ever reproducing it
+         (and therefore verifying a possible fix) in the same environment 
+         has become rather unlikely
+
+1.65   [2004-09-18]
+       - one should not mix u?alarm and sleep (the tests modified
+         by 1.65, #12 and #13, hung in Solaris), now we just busy
+         loop executing an empty block
+       - in the documentation underline the unspecificity of mixing
+         sleeps and alarms
+       - small spelling fixes
+
+1.64   [2004-09-16]
+       - regenerate ppport.h with Devel::PPPort 3.03,
+         now the MY_CXT_CLONE is defined in ppport.h,
+         we no more need to do that.
+
+       - the test #12 would often hang in sigsuspend() (at least that's
+         where Mac OS X' ktrace shows it hanging).  With the sleep()s
+         changed to sleep(1)s, the tests still pass but no hang after
+         a few hundred repeats.
+
+1.63   [2004-09-01]
+       - Win32 and any ithread build: ppport.h didn't define
+         MY_CXT_CLONE, which seems to be a Time-HiRes-ism.
+
+1.62   [2004-08-31]
+       - Skip testing if under PERL_CORE and Time::HiRes has not
+         been Configured (from Marcus Holland-Moritz, core change
+         #23246)
+       - Use ppport.h generated by Devel::PPPort 3.01,
+         allowing cutting away our own portability code.
+       - Don't use $ENV{PERL_CORE} for < 5.6.0.
+       - Don't use "for my $i" for <= 5.003.
+       - Don't use Pause() for <= 5.003.
+       - Can't use newSVpvf for <= 5.003.
+       (most of the changes from Marcus)
+
+1.61   [2004-08-21]
+       - Win32: reset reading from the performance counters every
+         five minutes to better track wall clock time (thanks to
+         PC timers being often quite bad), should help long-running
+         programs.
+
+1.60   [2004-08-15]
+       - Win32: Patch from Steve Hay
+         [PATCH] Re: [perl #30755] [Win32] Different results from Time::HiRes::gettimeofdayunder the debugger
+         to [perl #30755] reported by Nigel Sandever
+
+       - Cygwin: Use the Win32 recalibration code also in Cygwin if the
+         <w32api/windows.h> APIs are available.  Cygwin testing by
+         Yitzchak Scott-Thoennes.
+
+       - Solaris: use -lposix4 to get nanosleep for Solaris 2.6,
+         after that keep using -lrt, patch from Alan Burlison,
+         bug reported in [cpan #7165]
+
+1.59   [2004-04-08]
        - Change the Win32 recalibration limit to 0.5 seconds and tweak
          the documentation to blather less about the gory details of the
          Win32 implementation and more about the complications in general
          of meddling with the system clock.
 
-1.58
+1.58   [2004-04-08]
        - Document the 1.57 change better.
 
-1.57
+1.57   [2004-07-04]
        - Win32/Cygwin/MinGW: if the performance counter drifts by more
          than two seconds from the system clock (due to ntp adjustments,
          for example), recalibrate our internal counter: from Jan Dubois,
          based on [cpan #5933] by Jerry D. Hedden.
 
-1.56
+1.56   [2004-29-02]
        - Give a clearer message if the tests timeout (perl change #22253)
        - Don't use /tmp or its moral equivalents (perl bug #15036,
          perl change #22258)
 
-1.55
-       - Windows: ming32 patch from Mike Pomraning (use Perl's Const64()
+1.55   [2004-01-14]
+       - Windows: mingw32 patch from Mike Pomraning (use Perl's Const64()
          instead of VC-specific i64 suffix)
 
-1.54
+1.54   [2003-12-31]
        - Solaris: like Tru64 (dec_osf) also Solaris need -lrt for nanosleep
 
-1.53
+1.53   [2003-12-30]
        - Windows: higher resolution time() by using the Windows
          performance counter API, from Jan Dubois and Anton Shcherbinin.
          The exact new higher resolution depends on the hardware,
          but it should be quite a bit better than using the basic
          Windows timers.
 
-1.52
+1.52   [2003-10-28]
        - In AIX (v?) with perl 5.6.1 the HiRes.t can hang after
          the subtest 18.  No known analysis nor fix, but added
          an alarm (that requires fork() and alarm()) to the test.
 
-1.51
+1.51   [2003-09-22]
        - doc tweaks from mjd (perl change #20456)
        - NCR MP-RAS hints file added (svr4.pl) (perl change #21249)
 
-1.50
+1.50   [2003-08-02]
        - add a message (for non-core builds) to Makefile.PL about
          the LC_ALL=C workaround
        - &Time::HiRes::d_nanosleep was broken (perl change #20131)
@@ -53,47 +294,47 @@ Revision history for Perl extension Time::HiRes.
        - MPE/iX tweak (perl change #20042)
        - do not use HAS_NANOSLEEP (perl change #19898)
 
-1.49
+1.49   [2003-06-23]
        - UVuf for non-IVSIZE platforms (from Keiichiro Nagano)
        - OS/2 can always mix subsecond sleeps with signals
          (part of perl change #19789)
 
-1.48
+1.48   [2003-06-04]
        - workaround for buggy gcc 2.95.3 in openbsd/sparc64
          (perl change #19592)
 
-1.47
+1.47   [2003-05-03]
        - do not use -lrt in Linux (from March Lehmann, perl change #19449)
                - unnecessary (nanosleep is in libc anyway)
                - harmful (-lrt slows down execution)
                - incompatible (with many distributions' pthreads)
 
-1.46
+1.46   [2003-04-25]
        - do not create files in blib directories under core
          (perl change #19160, from rgs)
        - detypo s/VTLARM/VTARLM/ (perl change #19328, from mjd)
 
-1.45
+1.45   [2003-04-01]
        - guarantee that $xdefine in HiRes.t is always defined
          (perl change #19109, from IlyaZ)
        - a cleaner way to detect PERL_CORE (perl change #19111,
          from IlyaZ)
 
-1.44
+1.44   [2003-03-30]
        - add hints/irix.pl to turn off overly POSIX flags that
          cause hide struct timespec to be hidden (and compilation
          to fail) (bleadperl change #19085)
        - documentation tweaks
 
-1.43
+1.43   [2003-03-11]
        - add c:/temp to the list of temp directories to probe
          so that cygwin (and win*?) builds are happy.  This was
          needed at least in my cygwin 1.3.20/w2k setup.
 
-1.42
+1.42   [2003-01-07]
        - modernize the constants code (from Nicholas Clark)
 
-1.41
+1.41   [2003-01-03]
        - At some point the ability to figure our the correct incdir
          for EXTERN.h (either a core perl build, or an installed perl)
          had broken (which lead into all test compiles failing with
@@ -103,7 +344,7 @@ Revision history for Perl extension Time::HiRes.
          Now stole a trick from the Encode that sets $ENV{PERL_CORE}
          right, and both styles of build should work again.
 
-1.40
+1.40   [2003-01-03]
        - Nicholas Clark noticed that the my_catdir() emulation function
          was broken (which means that we didn't really work for Perls
          5.002 and 5.003)
@@ -111,16 +352,16 @@ Revision history for Perl extension Time::HiRes.
          and strict clean
        - tightened up the Makefile.PL output, less whitespace
 
-1.39
+1.39   [2003-10-20]
        - fix from Craig Berry for better building in VMS with PERL_CORE
 
-1.38
+1.38   [2003-10-13]
        - no functional changes
        - move lib/Time/HiRes.pm as Hires.pm
        - libraries scanning was slightly broken (always scanned
          for a library even when $Config{libs} already had it)
 
-1.37
+1.37   [2003-09-23]
        - Ray Zimmerman ran into a race condition in Mac OS X.
          A 0.01-second alarm fired before the test expected.
          The test first slept indefinitely (blocking for signals)
@@ -131,7 +372,7 @@ Revision history for Perl extension Time::HiRes.
          environment variable VERBOSE to a true value to see the
          details (the probing command and the possible errors)
 
-1.36
+1.36   [2003-09-12]
        - do not clear MAN3PODS in Makefile.PL (Radoslaw Zielinski)
        - INSTALLDIRS => 'perl' missing which means that Time::HiRes
          cannot be upgraded from CPAN to override the 5.8.0 version
@@ -141,19 +382,19 @@ Revision history for Perl extension Time::HiRes.
          if $ENV{PERL_CORE} (Hugo van der Sanden)
        - add documentation about the restart of select() under alarm()
 
-1.35
+1.35   [2003-08-24]
        - small documentation tweaks
 
 
-1.34
+1.34   [2003-08-22]
        - better VMS operation (Craig Berry)
 
-1.33
+1.33   [2003-08-20]
        - our time machine is accelerating: now works with Perl 5.004_01
          (tried with 5.003_07 and 5.002 but I get segmentation faults
           from running the Makefile.PL with those in Tru64 4.0D)
 
-1.32
+1.32   [2003-08-20]
        - backward compatibility (pre-5.6.0) tweaks:
          - no XSLoader in 5.00503, use DynaLoader instead
          - no SvPV_nolen, either
@@ -168,7 +409,7 @@ Revision history for Perl extension Time::HiRes.
          (since older Perl do not have them in %Config, and even
           5.8.0 does not probe for nanosleep)
 
-1.31
+1.31   [2003-08-19]
        - backward compatibility (pre-5.6.1) tweaks:
          - define NV if no NVTYPE
          - define IVdf if needed (note: the Devel::PPPort
@@ -176,22 +417,35 @@ Revision history for Perl extension Time::HiRes.
            the IVSIZE might not be defined)
          - define NVgf if needed
          - grab the typemap from 5.8.0 for the NV stuff
-1.30
+
+       1.31 and 1.32 add more backward compatibility (now all the way
+       back to Perl 5.00404), and using nanosleep() (if available) for
+       subsecond sleeps.
+
+1.30   [2003-08-16]
 
        - release 1.29_02 as 1.30
 
-1.29_02
+       1.30 adds all the changes made during the Perl 5.6->5.7->5.8
+       development cycle.  Most notably portability across platforms has been
+       enhanced, and the interval timers (setitimer, getitimer) have been
+       added.  Note that the version of Time::HiRes that is included in Perl
+       5.8.0 calls itself 1.20_00, but it is equivalent to this Time::HiRes
+       version.  Note also that in 1.30 Wegscheid turns over the maintenance
+       to Jarkko Hietaniemi.
+
+1.29_02        [2003-08-16]
 
        - fix a silly unclosed comment typo in HiRes.xs
        - document and export REALTIME_REALPROF (Solaris)
 
-1.29_01
+1.29_01        [2003-08-16]
 
        - only getitimer(ITIMER_REAL) available in Cygwin and Win32
          (need to patch this also in Perl 5.[89])
        - remove CVS revision log from HiRes.xs
 
-1.29_00
+1.29_00        [2003-08-14]
 
        The following numbered patches refer to the Perl 5.7 changes,
        you can browse them at http://public.activestate.com/cgi-bin/perlbrowse
@@ -206,7 +460,7 @@ Revision history for Perl extension Time::HiRes.
        - 13422: XS segfault, from Marc Lehmann
        - 13378: whether select() gets restarted on signals, depends
        - 13354: timing constraints, again, from Andy Dougherty
-       - 13278: can't do subecond alarms with ualarm;
+       - 13278: can't do subsecond alarms with ualarm;
                 break out early if alarms do not seem to be working
        - 13266: test relaxation (cygwin gets lower hires
                 times than lores ones)
@@ -285,6 +539,10 @@ Revision history for Perl extension Time::HiRes.
        - hopefully correct "-lc" fix for SCO.
        - add PPD stuff
 
+       1.20 adds a platform neutral set of C accessible routines if you are
+       running 5.005+.  All other changes are packaging changes and build
+       fixes(?) for statically linked Perl, SCO, and VMS.
+
 1.19  Tue Sep 29 22:30 1998
        - put VMS gettimeofday() in. Patch is from Sebastian Bazley
          <seb@stian.demon.co.uk>
@@ -296,6 +554,8 @@ Revision history for Perl extension Time::HiRes.
        - fix Makefile.PL (more) so that detection of gettimeofday is
          more correct.
 
+       1.19 has better VMS support.
+
 1.18  Mon Jul 6 22:40 1998
        - add usleep() for Win32.
        - fix Makefile.PL to fix reported HP/UX feature where unresolved
@@ -303,6 +563,9 @@ Revision history for Perl extension Time::HiRes.
          x bit set). Thanks to David Kozinn for report and explanation.
          Problems with the fix are mine :)
 
+       1.18 has limited Win32 support (no ualarm). Added usleep for Win32.
+       Probably buggy. I'm sure I'll hear.
+
 1.17  Wed Jul 1 20:10 1998
        - fix setitimer calls so microseconds is not more than 1000000.
          Hp/UX 9 doesn't like that. Provided by Roland B Robert, PhD.
@@ -314,6 +577,22 @@ Revision history for Perl extension Time::HiRes.
 1.16  Wed Nov 12 21:05 1997
        - add missing EXTEND in new gettimeofday scalar code.
 
+       1.16+ should be closer to building out of the box on Linux. Thanks
+       to Gisle Aas for patches, and the ualarm equivalent using setitimer.
+
+       If your underlying operating system doesn't implement ualarm(), then
+       a fake using setitimer() will be made.  If the OS is missing usleep(),
+       a fake one using select() will be made. If a fake can't be made for
+       either ualarm() or usleep(), then the corresponding Perl function will
+       not be available.  If the OS is missing gettimeofday(), you will get
+       unresolved externals, either at link- or run-time.
+
+       This is an improvement; the package used to not even build if
+       you were missing any of these bits. Roderick Schertler
+
+       <roderick@argon.org> did all the conditional compilation stuff,
+       look at HiRes.pm and the test suites; it's good educational reading.
+
 1.15  Mon Nov 10 21:30 1997
        - HiRes.pm: update pod. Provided by Gisle Aas.
        - HiRes.xs: if gettimeofday() called in scalar context, do
@@ -352,7 +631,7 @@ Revision history for Perl extension Time::HiRes.
              - fix EXPORT_FAIL. 
          This work was all done by Roderick Schertler
          <roderick@argon.org>. If you run Linux or
-         one of the other ualarm-less platoforms, and you like this 
+         one of the other ualarm-less platforms, and you like this 
          module, let Roderick know; without him, it still wouldn't 
          be working on those boxes...
        - Makefile.PL: figure out what routines the OS has and