Changelogs » Libfaketime



released 2019-01-20

- fix a deadlock on python 3.7+


released 2018-10-28

- offset-aware datetimes now properly fake the timezone as well: `\49 <>`__


released 2018-10-07

- decorated classes can access the fake_time object with ``self._faked_time``: `\47 <>`__


released 2018-06-16

- **backwards incompatible**: the monotonic clock is no longer mocked: `\45 <>`__
- ensure TZ is set to a valid timezone: `\46 <>`__


- Julien Gilli added an option to disable monotonic time faking
- Azat Khuzhin added support for COARSE clocks
- Preliminary support for CLOCK_BOOTTIME (Linux)
- Fixed compilation on macOS (High) Sierra and various compiler warnings
- Support for select() call added by Hitoshi Harada (umitanuki)
- Updated documentation


- fixed crashes that happened when other LD_PRELOAD libraries were used
- fixed passing through of return values when using the faketime wrapper
- fixed compile-time issues with CLOCK_MONOTONIC_RAW on some platforms
- rbalint added Filter commands: FAKETIME_ONLY_CMDS and
FAKETIME_SKIP_CMDS control which (sub-)processes libfaketime
is applied to.


- ryandesign at MacPorts provided a Portfile for MacPorts and
fixed various build issues on OSX.
- Balint Reczey added support for nanosecond resolution, saving
timestamps to files, speeding up and slowing down per-process
support for system calls such as sleep() and alarm().
- Applied a patch by Gerardo Malazdrewicz and Toni G to restore
compatibility with newer versions of glibc.
- Balint Reczey added an option to use the same global clock setting
for all libfaketime-spawned processes.
- Balint Reczey has rewritten the faketime wrapper shell script in C
and refactored libfaketime.
- Balint Reczey added support for advancing the time with each time-
related system call ("deterministic time").
- Added "timeprivacy" wrapper by adrelanos; it ensures that programs
are started with unique timestamps.
- Code and documentation cleanup by Tomi Ollila.
- Reworked Makefiles for more flexible installation, including fixes
by Lukas Fleischner, Daniel Kahm Gillmor, and Hugues Andreux.
- Fixed license issues as pointed out by Paul Wouters.
- Mac OS X support has been improved for OS X 10.7 and 10.8; due to
changes to the underlying libraries on OS X, libfaketime 0.9.5 will
no longer work with OS X < 10.6; use libfaketime 0.9(.1) for older
OS X installations.
- Don Fong has contributed a new framework for functional tests.
Petr Salinger ensured its compatibility with GNU/kFreeBSD.


- Added support for "limited faking".
You can optionally specify when libfaketime starts to fake the
returned timestamps and when it shall stop doing so. For example,
a program can be started regularly, and after 5 minutes run-time
it will be sent two years into the future. Those limiting
start and stop times can be specified in seconds or as the
number of any time-related function calls within the program.
- Added a feature to spawn an external process after x seconds
or y time-related system calls. This can, for example, be used
to execute an arbitrary shell script x seconds after a program
has been started.


- Added a MacOS port.
Thanks to Daria Phoebe Brashear!
- Added a functional test framework that aids in automatically
determining whether libfaketime works properly on the current
machine. Thanks to Don Fong!


- Changed directory layout and Makefile structure.
Thanks to Lukas Fleischer!


- Added support for fstatat() and fstatat64() which were introduced in
Linux kernel 2.6.16 and used in recent coreutils.
Thanks to Daniel Kahn Gillmor for the report!
This can be disabled by passing -DNO_ATFILE in the Makefile.
- Added a simple wrapper shell script and a man page for it. Makes it
easier to run commands under faked system times. It assumes that the
libraries will be copied to /usr/lib/faketime during installation,
please adjust this path if necessary. The "install" target in the
Makefile has been adapted accordingly.
- Added support for fractional time offsets, such as FAKETIME="+1,5h".
Please note that either , or . has to be used as a delimiter
depending on your locale. Thanks to Karl Chen!
- Added support for speeding the clock up or slowing it down. For
example, FAKETIME="+5d x2,0" will set the faked time 5 days into
the future and make the clock run twice as fast for the specified
program. Slowing it down can be done e.g. by using FAKETIME="+0 x0,5".
Again, the delimiter to use for the fraction depends on your locale.
Thanks to Karl Chen!


Main version 0.7 contributions by David North, TDI:
- Added ability to 'start clock at' a specific time.
- Added pthread synchronization support
- Added a 2 second delay to timetest.c so one can observe if the
clock is relative or absolute
- Added example of 'start clock at'
- Added ability to disable the FAKE_STAT functionality at library-start
in the case that the library was compiled -DFAKE_STAT, and added another
test case for demonstrating this
- Repaired a bug w.r.t. strptime/mktime wherein 'isdst' was uninitialized
which led to pseudorandom +/- 1 hour results being returned in 'start at'
or absolute time modes

Other enhancements:
- Fixed missing interceptions to libc-internal functions and added notes
about a workaround for running Java programs with faked times in the
future (they worked properly, but often locked up at exiting). Thanks to
Jamie Cameron of Google for in-depth analysis and prototype solution!


released 2018-05-19

- fix a bug causing incorrect times after unpatching under python 3.6+: `\43 <>`__
- fix compilation under gcc8: `\44 <>`__


released 2018-01-19

- fix usage as a class decorator : `\41 <>`__


- Performance enhancements by means of caching the data read
e.g. from $HOME/.faketimerc for 10 seconds.
- Several file timestamp related system calls such as fstat() will be
intercepted now. See the README file on how to turn this off if you
do not need it. Thanks to Philipp Hachtmann!
- A system-wide /etc/faketimerc file will now be used if no FAKETIME
environment variable has been set and no $HOME/.faketimerc is present.
Thanks to David Burley, Jacob Moorman, and Wayne Davison of
SourceForge, Inc.!
- Added trivial Makefile targets clean/distclean/install
- Changed Makefile target test to run new script
- Added new test cases to timetest.c


released 2017-09-10

- alias fake_time for freeze_time: `\31 <>`__
- add tz_offset parameter: `\36 <>`__


released 2017-07-16

- allow contextlib2 as an alternative to contextdecorator: `\30 <>`__


released 2017-07-07

- add macOS Sierra compatibility: `\29 <>`__


released 2016-06-30

- fix only_main_thread=False: `\24 <>`__


released 2016-05-02

- fix deadlocks from uuid.uuid1 when faking time: `\14 <>`__
- remove contextdecorator dependency on python3: `\15 <>`__


- Allow "y" for years of offset specification. Thanks to Bas ten Berge!


released 2016-04-02

- freezegun's tick() is now supported; see `their docs <>`__ for usage.


- Support for FAKETIME_FMT environment variable. Thanks to Moreno Baricevic!


released 2016-03-04

- invoking ``libfaketime`` from the command line will now print the necessary environment to avoid a re-exec.


released 2016-03-01

- python 3 support


- Intercept clock_gettime(). Thanks to Andreas Thienemann!


released 2015-09-11

- prevent distribution of test directory:


- Fixed segfault when calling time(NULL). Thanks to Andres Ojamaa!
- Added additional sanity checks.


released 2015-06-23

- add global start/stop callbacks


released 2015-03-28

- initial packaged release