Revision history for File-Raw
0.11 2026-05-05
- Win32 portability fix: the FilePlugin struct fields read/write/
record/stream have been renamed to read_fn/write_fn/record_fn/stream_fn.
0.10 2026-05-03
- BREAKING: the global read/write hook system is gone. Removed
register_read_hook, register_write_hook, clear_hooks,
has_hooks, register_line_callback, list_line_callbacks and the
whole include/file_hooks*.h C API (file_register_hook_c,
file_run_hooks, FileHookContext, etc.). Downstream modules that
registered hooks must port to the new plugin API.
- Replacement: a named-plugin system. Callers opt in per call via
a trailing key/value tail: File::Raw::slurp($p, plugin => 'csv', sep => ';');
- register_plugin / unregister_plugin / list_plugins (Perl) and
file_register_plugin / file_unregister_plugin / file_lookup_plugin
plus dispatch helpers in include/file_plugin.h (C). Plugins
implement any subset of read / write / record / stream phases.
- Predicate registry survives, repackaged as a built-in 'predicate'
plugin. New names: register_predicate / list_predicates. The
legacy 2-arg sugar grep_lines($p, 'is_blank') keeps working.
- `plugin =>` accepts an arrayref of plugin names in addition to a scalar string.
READ unwraps left to right; WRITE applies right to left:
- Change to use ExtUtils::Depends to help linking header.
0.09 2026-04-25
- Fix build on Solaris/SunOS: drop GNU-only -Wl,--export-dynamic
and -Wl,-soname flags, native ld already exports by default
- Fix build on Windows/Cygwin: t/xs/file_api_test no longer
tries to link against Raw.dll (no import library shipped);
extract hook impl into include/file_hooks_impl.h, included
privately by the test extension on those platforms
- Skip cross-DLL hook subtests in t/012 on Windows/Cygwin where
each DLL has its own hook state
- Fix Perl_custom_op_register fallback in xop_compat.h for
pre-5.14 Perls
0.08 2026-04-09
- Fix more compilation issues on Cygwin: replace static XS() with XS_INTERNAL()
in file_api_test.c
0.07 2026-04-08
- Add file_join, file_mkpath, file_rm_rf to import mechanism
- file_join: platform-aware path joining (uses \ on Windows, / on POSIX)
- file_mkpath: recursive directory creation in C
- file_rm_rf: recursive directory removal in C
- Support selective import of variadic functions
(use File::Raw qw(join mkpath rm_rf))
- Fix variadic function import to install into caller's package
- Fix 1-arg and 2-arg custom op call checkers to enforce scalar
context on args (fixes file_slurp/file_spew with function call
return values as path)
0.06 2026-04-08
- Fix compilation on Cygwin: replace static XS() with XS_INTERNAL()
to avoid conflict with dllexport requiring external linkage
- Fix unused variable warning in xs_map_lines
- Document the XS API
0.05 2026-04-07
- Fix is_executable tests on Win32: use .bat extension instead of
chmod +x on .sh files, since Windows determines executability by
file extension (.exe, .bat, .cmd, .com)
0.04 2026-04-06
- Fix custom op construction to use OP_NULL then convert to OP_CUSTOM,
avoiding newUNOP/newBINOP assertion failures on -DDEBUGGING Perls
- Fix Perl_xs_boot_epilog for Perl < 5.22 (use XSRETURN_YES fallback)
- Replace struct stat with Stat_t for Windows MULTIPLICITY builds
- Add dTHX to helper functions for PERL_NO_GET_CONTEXT compatibility
- Fix 3-arg open() calls for Windows (PerlLIO_open only takes 2 args)
0.03 2026-04-05
- Fix xop_class registration for custom ops to prevent assertion
failures on debug builds of Perl 5.14-5.21 (CPAN Testers failures)
- Fix XOP compatibility macros for pre-5.14 Perl versions
- Switch to Dynaloader so we can link back to 5.10
0.02 2025-05-23
- Initial CPAN release
0.01 Date/time
First version, released on an unsuspecting world.