Changes for version 0.002.2

  • Security
    • Printed messages and levels show control characters (except tab and newline) as \xNN, so fixture text cannot send terminal control sequences. The stored message is unchanged; see COMMON PITFALLS
    • Values repeated in errors and warnings show Unicode bidi controls as \x{NNNN}
    • Printing a character string that is not valid UTF-8 no longer dies or warns: each bad part is shown as U+FFFD
  • Bug Fixes
    • carp, croak, get_params, validate_strict, qv and Readonly were callable as logger methods, so $logger->croak('x') died and $logger->carp('x') warned. They now go to AUTOLOAD like any other unknown method
    • like() and unlike() no longer warn on Perl 5.42 for a pattern that is not valid UTF-8; they croak with the same reason everywhere
    • A failing like(), unlike(), has_level() or empty() inside a subtest is reported at the caller's line, not inside Test::Builder
    • Logging no longer dies or warns on hostile arguments: tied values whose FETCH dies, references blessed into ARRAY or HASH, text that is not valid UTF-8 or holds a surrogate, and arguments such as substr($s, 10). Each argument is read exactly once, in order
    • i18n() no longer dies on a template or gender object whose overloaded "" dies
    • Rendering deeply nested data is linear: a hash nested 80,000 deep took 11 seconds to log
    • An invalid argument containing "validate_strict:" is reported in full instead of being cut at those words
    • With -Duselongdouble, a too-big integer placeholder such as %{v}d of 1e19 is shown as written (1e+19). Fixes GitHub#3
  • Packaging
    • autodie and IPC::System::Simple are no longer needed
    • Log::Abstraction is recommended for testing, not required
    • The META licence is gpl_2, matching LICENSE and the POD
  • Documentation
    • The API SPECIFICATION domains cover encodings, fake array and hash references, nesting depth, unreadable arguments and the edges of plural forms and gender
    • STATE DIAGRAM lists _emit on a logger; the _emit POD says the message is stored before _emit is called
    • COMMON PITFALLS explains that how a number is "shown as written" depends on how perl was built

Documentation

Modules

Capture log output in tests and assert on it