- New upstream release 0.142
Deprecations
- Tilde expansion is deprecated due to inconsistent and bug-prone behavior
Bug fixes
- Prevent expansion of tildes that are not the very first character (e.g.
"./~foo")
- Prevent unintentional tilde expansion during internal path processing
- Escape non-tilde glob characters before tilde expansion
- Fixed spew/edit to a long filename approaching the filesystem length limit
- Internal calls to 'print' are checked for possible errors
- Internal read calls are checked for errors
Changes
- Path stringification now adds "./" in front of paths starting with literal
tilde so they will round-trip; FREEZE updated to use this stringification
rule as well
- 'move' now uses File::Copy::move internally instead of the built-in
'rename', allowing it to work across filesystems; it also returns an object
for the moved location, allowing chaining
- edit_lines_raw now uses a buffered raw I/O layer
- edit_lines_utf8 now prefers PerlIO::utf8_strict, if available
- lines_utf8 now consistently uses a buffered I/O layer
- open*_utf8 now prefers PerlIO::utf8_strict, if available
- slurp_utf8 now consistently uses an unbuffered I/O layer
Documented
- Changed all raw/UTF-8 layer descriptions in method documentation to match
the code
- Fixed SYNOPSIS syntax
- Documented how to disable TMPDIR when making temp files/dirs
Testing
- Add additional tilde stringification testing
- Fixed tilde expansion tests on Windows
- Skip a problematic test case on Cygwin
- New upstream release 0.128
- Added 'mkdir' to replace 'mkpath', but returning the path object for
chaining
- The 'mkpath' method is deprecated in favor of 'mkdir'
- Added 'has_same_bytes' to efficiently compare the contents of two files
- Edited SYNOPSIS in the POD
- New upstream release 0.122
- Adds 'size' and 'size_human' methods; the latter gives 'ls -lh' style
output, with options to choose base2 or base10 forms
- New upstream release 0.120
- The 'tempdir' and 'tempfile' methods may be called on a Path::Tiny object
representing a directory, in which case the directory will be used as the
container for the temporary object (as if the 'DIR' argument were used)
- New upstream release 0.118
- Skip symlink tests on Windows by actually testing symlinks, as Perl 5.33.5
adds notional support but it's not possible without elevated privileges
- New upstream release 0.106
- The PERL_PATH_TINY_NO_FLOCK environment variable has been added to allow
users to disable file locking (and any associated warnings)
- Detection of unsupported 'flock' is no longer BSD-specific; this allows
detecting and warning, for example, with the Luster filesystem on Linux
- Improve reliability and diagnostics of tests run via 'do'
- New upstream release 0.104
- The 'absolute' method now always returns an absolute path, even if a user
provided a relative path for the base path; the old, odd behavior was
documented, but people often don't read docs so the new behavior avoids
surprises
- Added 'cached_temp' method
- New upstream release 0.100
- Fixed tests for eventual removal of '.' from @INC in Perl
- Fixed filehandle mode doc typo
- Fixed doc typo in relative() that mentioned rel2abs instead of abs2rel
- New upstream release 0.094
- Path::Tiny will prefer PerlIO::utf8_strict over encoding(UTF-8) if
available and Unicode::UTF8 is not installed
- The 'touch' method can now set the current time on files that aren't owned,
as long as they are writeable
- Improved consistency of symlink support inspection; now always looks at
$Config{d_symlink}
- Skips impossible test on 'msys' platform.
- BR: perl-generators where possible
- Drop redundant Group: tag
- New upstream release 0.088
- Fixed bugs in relative symlink resolution for realpath, spew and edit_lines
- Symlink resolution will detect circular loops and throw an error
- New upstream release 0.082
- The relative() method no longer uses File::Spec's buggy rel2abs method;
the new Path::Tiny algorithm should be comparable and passes File::Spec
rel2abs test cases, except that it correctly accounts for symlinks
- Added 'edit' and 'edit_lines' plus _utf8 and _raw variants; this is
similar to perl's -i flag (though without backups)
- Fixed lines_utf8() with chomping for repeated empty lines
- Fixed lines_utf8+chomp and relative() bugs on Windows
- Documented that subclassing is not supported
- New upstream release 0.075
- Tilde expansion on Windows was resulting in backslashes; now they are
correctly normalized to forward slashes
- Typos fixed
- Fixed spewing to a symlink that crosses a filesystem boundary
- Add Test::MockRandom to META as a recommended test prerequisite
- New upstream release 0.070
- The 'copy' method now returns the object for the copied file
- The 'visit' method only dereferences the callback return value for scalar
refs, avoiding some common bugs
- New upstream release 0.065
- Added 'assert' method
- Added 'visit' method
- Added support for a negative count for 'lines' to get the last lines of a
file
- Fixed tilde expansion if path has spaces
- Make realpath non-fatal if the parent path exists and only the final path
component does not (was fatal on Windows and some Unixes)
- Removed rendundant locking on tempfile use for spewing
- Work around File::Temp bugs on older ActiveState Windows Perls
https://bugs.activestate.com/show_bug.cgi?id=104767
- Fixed SYNOPSIS example
- New upstream release 0.058
- Added a 'sibling' method as a more efficient form of calling
$path->parent->child(...).
- Documentation for every method annotated with the version number of the
last API change
- New upstream release 0.057
- On AIX, reads that default to locking would fail without write permissions,
because locking needs write permissions; the fix is only to lock reads if
write permissions exist, otherwise locking is skipped
- New upstream release 0.056
- Fixed problem throwing errors from 'remove'
- The 'digest' method now takes a 'chunk_size' option to avoid slurping files
entirely into memory
- The 'dirname' method is deprecated due to exposing File::Spec
inconsistencies
- Use %license
- New upstream release 0.054
- The 'is_file' method now does -e && ! -d and not -f because -f is often
more restrictive than people intend or expect
- Added 'chmod' method with symbolic chmod support ("a=r,u+rx")
- The 'basename' method now takes a list of suffixes to remove before
returning the name
- Added FREEZE/THAW/TO_JSON serialization helpers
- When constructing a Path::Tiny object from another, the original is
returned unless it's a temp dir/file, which significantly speeds up calling
path($path) if $path is already a Path::Tiny object
- Constructing any path - e.g. with child() - with undef or zero-length
parts throws an error instead of constructing an invalid path
- New upstream release 0.049
- Added 'subsumes' method
- The 'chomp' option for 'lines' will remove any end-of-line sequences fully
instead of just chomping the last character
- Fixed locking test on AIX
- Revised locking tests for portability again: locks are now tested from a
separate process
- The 'flock' package will no longer indexed by PAUSE
- Hides warnings and fixes possible fatal errors from pure-perl Cwd,
particularly on MSWin32
- Generates filename for atomic writes independent of thread-ID, which fixes
crashing bug on Win32 when fork() is called
- New upstream release 0.044
- Fixed child path construction against the root path
- Fixed path construction when a relative volume is provided as the first
argument on Windows; e.g. path("C:", "lib") must be like path("C:lib"),
not path("C:/lib")
- On AIX, shared locking is replaced by exclusive locking on a R/W
filehandle, as locking read handles is not supported
- New upstream release 0.043
- Calling 'absolute' on Windows will add the volume if it is missing (e.g.
"/foo" will become "C:/foo"); this matches the behavior of
File::Spec->rel2abs
- Fixed t/00-report-prereqs.t for use with older versions of
CPAN::Meta::Requirements
- New upstream release 0.042
- When 'realpath' can't be resolved (because intermediate directories don't
exist), the exception now explains the error clearly instead of complaining
about path() needing a defined, positive-length argument
- On Windows, fixed resolution of relative paths with a volume, e.g. "C:foo"
is now correctly translated into getdcwd on "C:" plus "foo"
- New upstream release 0.040
- The 'filehandle' method now offers an option to return locked handles
based on the file mode
- The 'filehandle' method now respects default encoding set by the caller's
open pragma
- New upstream release 0.037
- No longer lists 'threads' as a prerequisite; if you have a threaded perl,
you have it and if you've not, Path::Tiny doesn't care
- Fixed for v5.8
- New upstream release 0.034
- Exceptions are now Path::Tiny::Error objects, not autodie exceptions; this
removes the last dependency on autodie, which allows us to support Perls as
far back as v5.8.1
- BSD/NFS flock fix was not backwards compatible before v5.14; this fixes it
harder
- Lowered ExtUtils::MakeMaker configure_requires version to 6.17
- New upstream release 0.033
- Perl on BSD may not support locking on an NFS filesystem: if this is
detected, Path::Tiny warns and continues in an unsafe mode (the 'flock'
warning category may be fatalized to die instead)
- Added 'iterator' example showing defaults