Version 0.016 - 2025-12-27
- New append_console_line(prompt => $txt) feature resolves race condition
between printing prompt and disabling echo
- New Crypt::SecretBuffer::ConsoleState utility class lets users disable
TTY echo more flexibly
- Fix bug where ->sysread was actually calling the ->read implementation
- Fix Win32 compatibility (compile errors in 0.013 - 0.015)
- Fix TTY tests on BSD (race condition in append_console_line)
Version 0.015 - 2025-12-22
- Fix 5.8 and C89 compatibility
Version 0.014 - 2025-12-22
- Fix MULTIPLICITY (ithreads) support
Version 0.013 - 2025-12-21
- New method $span->cmp($other) is like memcmp but on Unicode codepoints
- Span objects now also have overloaded cmp, stringify, and boolean cast
- New PEM parser class
Version 0.012 - 2025-12-19
- String patterns passed to scanning functions (scan, index, rindex, and
various methods of Span) can now be perl unicode strings, or SecretBuffer
objects, or Span objects (with their own encoding) and matches will be
compared codepoint by codepoint.
- Added BASE64 encoding
- New exportable memcmp function, and method of SecretBuffer and Span objects
- Exceptions in unmask_to and unmask_secrets_to now pass through to caller
more correctly.
- SecretBuffer overloads 'cmp' with the new memcmp function, so you can now
compare buffers directly with cmp, lt, gt, eq and so on.
(Span objects do not, yet, to avoid the complicated question of how best to
compare mismatched encodings)
- Fix debug-build-perl asertion failure in Span->copy_to when copying from
buffer of capacity=0
Version 0.011 - 2025-12-02
- Fix bug in parsing strings of '$encoding' parameters that could return
an uninitialized value for an invalid encoding.
- Fix compatibility of tests for Win32 and Cygwin
Version 0.010 - 2025-11-22
- Fix bug where substr with replacement that shrinks the buffer would leave
un-wiped bytes at the end of the string.
- Fix compile error on BSD, possibly others
- New methods: splice, append
- substr, splice, append, and assign now all have special cases for assigning
a Span of a buffer.
- New C API functions:
- secret_buffer_SvPVbyte
- secret_buffer_splice
- secret_buffer_splice_sv
- Removed the short-lived secret_buffer_assign_sv from the previous release
since secret_buffer_splice_sv provides a more powerful way to do it.
- C API is now exported as package variables for simpler conditional use of
the API, such as
get_sv("Crypt::SecretBuffer::C_API::void secret_buffer_wipe(char *, size_t)",0);
- Standardized signatures of exported functions in these variables
- Removed the macros
SECRET_BUFFER_DECLARE_FUNCTION_POINTERS,
SECRET_BUFFER_DEFINE_FUNCTION_POINTERS, and
SECRET_BUFFER_DEFINE_FUNCTION_POINTERS
because I'm pretty sure they'll never get used, and so now SecretBuffer.h
doesn't need to include SecretBufferManualLinkage.h and the user can just
copy SecretBuffer.h as-is from the git repo.
Version 0.008 - 2025-11-17
- New Span objects assist with parsing secrets.
- New INI object for parsing common INI-like formats.
- SecretBuffer now has 'rindex' and 'scan' methods, and 'index' allows the
pattern to be a Regexp-ref as long as it is only a single character class.
- New SecretBuffer methods load_file and save_file.
- New C API functions:
- secret_buffer_charset_from_regexpref
- secret_buffer_charset_test_byte
- secret_buffer_charset_test_codepoint
- secret_buffer_parse_init
- secret_buffer_match
- secret_buffer_match_charset
- secret_buffer_match_bytestr
- secret_buffer_sizeof_transcode
- secret_buffer_transcode
- secret_buffer_assign_sv
Version 0.007 - 2025-10-31
- New API unmask_secrets_to and ->unmask_to
- Documented ways to use SecretBuffer without depending on it
Version 0.006 - 2025-09-09
- Fix bug checking errno for EAGAIN after failed _append_random
- Fix Makefile.PL feature tests for required lib linker flags
- Fix Win32 compat when wincrypt.h isn't required/available
Version 0.005 - 2025-06-05
- Fix bug in index() that fails to search on final char of buffer
- Improved OS feature detection, which should fix many build failures
- Fix 5.8 compat
- More unit tests
- Document security policy
Version 0.004 - 2025-06-05
- Add "Inline with => Crypt::SecretBuffer" support
- Tooling now provides C API from the XS shared lib as native exported symbols
- Fix failing assertion in substr()
Version 0.003 - 2025-05-23
- Make attribute accessor for stringify_mask
Also allows stringify_mask to be specified in the constructor
Version 0.002 - 2025-05-23
- Fix 5.8 compatibility
- Fix exports & documentation
Version 0.001 - 2025-05-23
- Initial version, working on Linux, FreeBSD, and MSWin32