Revision history for Perl extension Hustle::Table

v0.8.0 2026-04-07
  [improvements]
    - Reduce cache/hash lookups


v0.8.0 2025-10-28
  [changes]
    - regular expression matchers are now expected as strings, not a RegExp
    - Internally converted to RegExp as required
    - Code matchers now need an explicit 'code' type specified
    - Updated tests to match new restrictions
    - Adding items to the table now must only be performed with add method

  [fixes]
    - POD now more accurately documents current usage and API

v0.7.3 2025-09-09
  [fixes]
    - ensure stringification of array contents is joined with an empty string 
    - local set $" to the empty string before template/eval executed

v0.7.2 2025-08-08
  [improvements]
    - remove output array allocation when a cache hit is made. Only allocate on new outputs

v0.7.1 2025-07-29
  [fixes]
    - Updated to use Template::Plex v0.9.0
    - Fixed memory leak when generating dispatcher

v0.7.0 2025-01-11
  [improvements]
    - Now will return multiple matches not just first match
    - Dispatcher will process a list in a single call
    - Will return the default entry only when nothing else matches
    - Significant performance improvements with cached regexp matching
    - Cache is cleared when reusing with multiple calls to prepare_dispatcher

v0.6.1 2023-08-26
  [improvements]
    - Removed use Carp
    - Removed use version
    - Replaced use constant and use enum with use constant::more

v0.6.0  2023-06-07
  [improvements]
    - Regular expressions from non core regexp engines are now processed as a
      regexp directly. Previously these would not be detected, and assumed a
      string to then be compiled into a core regexp
    - Added github actions to repo
  [tests]
    - Added test for regexp matching with a no capture groups
    - Added test for regexp matching with a capture group not capturing
    
  [fixes]
    - captures are now copied into a new array and not a shared array across the table.
    - captures are now returned as per the documentation for regexps with no
      captured items (i.e ref to empty array, instead of undef)
    - Turn off 'not numeric' warnings in main table code to remove noise when
      testing a string input against a numeric matcher

  [pod]
    - Typo fixes.
    - Add a section on new non core Regexp improvements


0.5.5 	Wed 17 Aug 2022 15:14:43 AEST
	- Added subroutine matching type. A CODE ref can be used to match the input.
	  Called with the input as the first argument and a reference to the entry value
	  as the second element

	- Fixed bug where default matcher could not be updated with hash or array via
	  the add method. An exuberant croak test/call prevented the adding of
	  an entry when the matcher was 'undef'. An undef matcher actually
	  represents the default matcher (match any). Prior to this fix only
	  explicit set_default method would update default matcher.

	- Fixed documentation around required elements when adding via array
	  ref should take 3 elements. Was listed as 6

	- Reduced scope creation for more performance improvements
	

0.5.4 	Thu 28 Jul 2022 21:40:32 AEST
	- Performance improvements
		- Dispatcher no longer returns an ref to an empty array
		  with non regex matcher types.
		- Removed superfluous scope creation in dispatcher
		- Moved my variable out of dispatcher sub
		
	- Improved dispatch matching performance
		- 1.70x approx for static exact matches
		- 1.15x approx for regex matches


0.5.2   Wed 22 Jun 2022 07:42:37 AEST
	- Compatibility update for Template::Plex v0.4.2

0.5.1   Sat  2 Apr 2022 21:01:36 AEST
	- Bump min perl version to 5.26 for @{^CAPTURE} variable
	- Fixed issue where a cached entry did not return captures
	- Default matcher type is updated to undef to allow cached matcher to do regex match
	- Cleaned up tests

0.5.0 	Thu 31 Mar 2022 20:15:33 AEST
	- Major rewrite
	- Simplified and restricted scope
	- Table entry stores any scalar value, not just code references
	- Regex, begin, end, exact and numeric matchers
	- Dispatcher returns matching table entry and regex captures
	- Caching always enabled. External management by user application


0.4.1   Mon  7 Mar 2022 17:27:52 AEST
	- Remove debugging output which should not have been active
	- Remove more unused code

0.4.0   Sat  5 Mar 2022 10:29:11 AEST
	- Removed usages of given/when and replaced with if/else/and in generated code
	- Matching is now always performed via a regex.
	- Uncached "online" dispatcher gained a 10-20% performance boost
	- Using Template::Plex template to make the code more readable
	- Removed unused code

0.3.0	Fri 10 Sep 2021 11:54:43 AEST
	- First argument to dispatched code ref is table entry not string being matched (< v0.2.3) 
	- Updated test to utilise new first argument
	- Spelling fixes
	
0.2.3	Tue  3 Aug 2021 15:19:45 AEST
	- Added simple two element entry add
	- Constructor can take default handler directly
	- Spelling fixes
	
0.2.2 
	- Fix error in existing test script
	- Added more comprehensive tests
	- Check for valid cache (hash ref) when adding entry
	- Check for defined matcher when adding entry
	- Allow adding a 'flattened' entry (4 element)

0.2.1	Wed 23 Jun 2021 15:42:57 AEST
	- Attempting to fix Tester errors.
	- Updated min perl version => 5.24
	- Added missing dep common::sense

0.2	Tue 22 Jun 2021 21:32:35 AEST
	- Spelling correction
	- Documentation formatting and fixes
	- Removal of unused exporting code
	- Adding missing dependencies on enum in Makefile.PL
	- Added MYMETA to distribution

0.1 	Tue 22 Jun 2021 13:13:05 AEST
	- First release almost ready for CPAN


