Revision history for Params-Get

0.16	Fri Aug  7 09:51:33 AM EDT 2026
	[ Bug fixes ]
	- Don't rely on PVS (GitHub#5)
	  I have not been able to reproduce this, so I do not know if this fix works

	[ Enhancements ]
	- Remove provably redundant "$default &&" pre-check in the positional-names
	    guard: ref(X) eq "ARRAY" implies X is always truthy, so the conjunction's
	    left operand can never flip the branch (deductive reduction R1)
	- Collapse five one-arg dispatch arms to two via De Morgan boolean reduction:
	    SCALAR (deref) pulled left as fast guard; plain scalar/ARRAY/CODE/blessed
	    merged into one disjunction (reduction R2)
	- Update PSEUDOCODE POD to document the formal premises behind both reductions
	- Cache ref($default) in $default_ref to avoid 2-3 redundant ref() calls per
	    invocation when $default is an ARRAY ref or a plain string
	- Replace named intermediate hash (my %rc = ...; \%rc) with direct anonymous
	    hashref ({ @{$args} }) in the even-length named-pairs path: ~9% faster

	[ Tests ]
	- Add t/lib/TestHelper.pm: shared $USAGE_RE and $DEFAULT_CROAK_RE constants,
	    eliminating five identical per-file Readonly definitions
	- Fix greedy qr/latitude.*must be/ to non-greedy with /x in t/integration.t
	- Use \Q->\E instead of bare -> in regex literals in t/extended_tests.t
	- Add t/cgi_security.t: 32-subtest penetration test suite covering command
	    injection, path traversal, XSS, CRLF header injection, SQL injection
	    passthrough, STDIN isolation, duplicate-key attack vector, hostile $default
	    values, resource exhaustion, global-state integrity, and taint propagation

0.15	Tue Jun 30 10:17:42 EDT 2026
	[ Bug fixes ]
	- Ensure Makefile.PL has the latest META_MERGE format
	- Replace Devel::Confess::longmess (internal API) with Carp::confess
	- Remove Devel::Confess dependency: it installed process-wide %SIG handlers
	    as a library side-effect and read taintable env vars under -T
	- Fix caller variable mutation: REF-unwrap now works on a copy, not the
	    @_ alias, so the caller's variable is never silently modified
	- Fix array-slice syntax @{$_[0]}[0] -> $_[0]->[0]

	[ New features ]
	- $default may now be an arrayref of positional key names:
	    get_params([qw(name age)], 'Alice', 30) -> { name => 'Alice', age => 30 }

	[ Tests ]
	- Add t/locales.t: verify error messages are locale-independent
	- Add arrayref-default coverage to t/get_params.t

	[ Code quality ]
	- Modernise Exporter: use parent 'Exporter' replaces @ISA manipulation
	- Add Readonly sentinels for ref-type strings
	- Remove dead commented-out code and FIXME blocks
	- Expand POD: LIMITATIONS, MESSAGES table, FORMAL SPECIFICATION, PSEUDOCODE

0.14	Tue May 19 21:40:21 EDT 2026
	Document the default argument
	Sanity check $default
	Bug fixed where named-parameter extraction was mishandling hashref arguments in certain calling conventions,
		where the default was the key to the wanted hash value

0.13	Mon Aug  4 16:59:56 EDT 2025
	Back out 0.12, too much breakage

0.12	Mon Aug  4 14:34:29 EDT 2025
	Params::Get::get_params('list', []) now returns empty array

0.11	Mon Jul 28 07:41:24 EDT 2025
	get_params(undef, undef) now returns undef

0.10	Fri Jul 25 11:37:24 EDT 2025
	Improved handling of:
		in main:
			routine('countries' => []);
		in routine():
			$params = Params::Get::get_params('countries', \@);

0.09	Wed Jul 23 13:46:12 EDT 2025
	Improved handling of:
		in main:
			routine('country' => 'US');
		in routine():
			$params = Params::Get::get_params('country', \@);

0.08	Thu May 29 14:05:49 EDT 2025
	Check number of parameters before the quick return
	Use Devel::Confess to give a full stacktrace
	Handle get_params('foo', {}), and get_params('foo' => {});

0.07	Fri May 23 07:07:13 EDT 2025
	Fix dependancy. I added Params::Get rather than Scalar::Utils (RT#165760)

0.06	Thu May 22 16:51:58 EDT 2025
	Allow the default to be a CODE ref

0.05	Thu May 22 13:35:12 EDT 2025
	Handle the model of a mandatory parameter followed by a hash ref of options
	Go some way to fixing problems using \@_ rather than @_

0.04	Mon Apr 28 16:50:23 EDT 2025
	Fix when there's only one argument which is a ref to an array

0.03	Thu Apr 24 10:17:51 EDT 2025
	Allow a ref to an array to be past to reduce size of the stack

0.02	Mon Mar 24 07:43:54 EDT 2025
	Fewer tests in the code

0.01	Thu Feb 27 12:16:57 EST 2025
        First draft
