0.249 2025-09-16
  [Requirement Changes]
    * Require SPVM 0.990089.
  [Document and Internal Changes]
    * Remove "object of" from arguments.
  [Incompatible Changes]
    * Rename Match#captures method to cap method, and Match#captures returns an array that has captured elements.
    * Regex::Replacer anon method require $match always.
    
  [Bug Fix]
    * Fix the bug that Match#captures_length returns wrong value.
  [Internal Changes]
    * Improve the logic of constructors.
    
0.248 2025-06-17
  [Requirement Changes]
    * Require SPVM 0.990068.
  [Bug Fix]
    * Fix a bug that match_string used dangling pointer.
0.247 2025-01-31
  [Incompatible Changes]
    * Change the defintion of Regex#match method.
      
      [Before]
      method match : Regex::Match ($string : string, $offset : int = 0, $length : int = -1);
      
      [After]
      method match : Regex::Match ($string_or_buffer : object of string|StringBuffer, $offset_ref : int* = undef, $length : int = -1)
   
    * Remove Regex#match_forward method in favor of match method.
    * Remove Regex#buffer_match method in favor of match method.
    * Remove Regex#buffer_match_forward method in favor of match method.
    * Change the definitions of Regex#replace method.
     
      [Before]
      method replace  : string ($string : string, $replace : object of string|Regex::Replacer, $offset : int = 0, $length : int = -1, $options : object[] = undef)
      
      [After]
      method replace : Regex::ReplaceInfo ($string_ref_or_buffer : object of string[]|StringBuffer, $replace : object of string|Regex::Replacer, $offset_ref : int* = undef, $length : int = -1, $options : object[] = undef)

    * Change the definitions of Regex#replace_g method.
     
      [Before]
      method replace_g  : string ($string : string, $replace : object of string|Regex::Replacer, $offset : int = 0, $length : int = -1, $options : object[] = undef)
      
      [After]
      method replace_g  : Regex::ReplaceInfo ($string_ref_or_buffer : object of string[]|StringBuffer, $replace : object of string|Regex::Replacer, $offset_ref : int* = undef, $length : int = -1, $options : object[] = undef)

    * Remove Regex#replace_common method in favor of replace method.
    * Remove Regex#buffer_replace_common method in favor of replace method.
    * Remove Regex#buffer_replace method in favor of replace method.
    * Remove Regex#buffer_replace_g method in favor of replace_g method.
  [Exception Changes]
    * Add an excetpion to Regex#new method.
    
      The regex pattern $pattern must be defined. Otherwise an exception is thrown.
    
0.246 2025-01-24
  [New Features]
    * Add Re class.
  [Requirement Changes]
    * Require SPVM 0.990042.
  [Bug Fix]
    * Fix a bug that if $offset_ref argument of Regex#match_foward method is undef, segfault occurs.
  [Incompatible Changes]
    * Remove Regex#match_start field.
    * Remove Regex#match_length field.
    * Remove Regex#replaced_count field.
    * Remove Regex#captures field.
    * Remove Regex#cap1 to cap20 methods.
    * Rename Regex::Re2 to Regex::RE2.
  [Internal Changes]
    * Add undocumented Regex#match_v2 method. This will replace match method in the future.
    * Add undocumented Regex#match_v2_g method. This will replace match_g method in the future.
    * Add undocumented Regex#replace_v2 method. This will replace replace method in the future.
    * Add undocumented Regex#replace_v2_g method. This will replace replace_g method in the future.
    
0.245 2025-01-17
  [Changes]
    * Load Resource::RE2 class.
    * Add version_from Regex to all classes except for Regex class.
  [Requirement Changes]
    * Require SPVM 0.990038.
0.244 2023-12-26
  [Bug Fix]
    * Fix the bug that FILE_NAME in native source file does not have the file scope.
0.243001 2023-10-27
  [Bug Fix]
    * Remove using env->get_ref_count native API.
    
0.243 2023-08-12
  [Performance Improvement]
    * The performance of the replace method is improved, because the string is not copied repeatedly.
  [New Features]
    * The following methods are added to the Regex class.
    
      method buffer_match : Regex::Match ($string_buffer : StringBuffer, $offset : int = 0, $length : int = -1);
      
      method buffer_match_forward : Regex::Match ($string_buffer : StringBuffer, $offset_ref : int*, $length : int = -1);
      
      method buffer_replace  : void ($string_buffer : StringBuffer, $replace : object of string|Regex::Replacer, $offset : int = 0, $length : int = -1, $options : object[] = undef);
      
      method buffer_replace_g  : string ($string_buffer : StringBuffer, $replace : object of string|Regex::Replacer, $offset : int = 0, $length : int = -1, $options : object[] = undef);
      
      method buffer_replace_common : void ($string_buffer : StringBuffer, $replace : object of string|Regex::Replacer, $offset_ref : int*, $length : int = -1, $options : object[] = undef);

0.242002 2023-08-09
  [Prerequirement Changes]
    * SPVM 0.989033+ is required.

0.242001 2023-05-29
  [Prerequirement Changes]
    * SPVM 0.986+ is required.
0.242 2023-05-26
  [New Features]
    * The match field is added to the Regex::ReplaceInfo class.
0.241002 2023-05-08
  [Prerequirement Changes]
    * SPVM 0.973+ is required.
0.241001 2023-05-05
  * Nothing to changed. This is the relese because the pause indexer failed.
0.241 2023-05-04
  [Prerequirement Changes]
    * SPVM 0.971012+ is required.

  [New Features]
    * The Regex::Match class is added.
    * The Regex::ReplaceInfo class is added.
    * The version string can be got.
  [Changes]
    * The definition of the following methods in the Regex::Replacer interface are changed.
    
    [Before]
    required method : string ($re : Regex);
    
    [After]
    required method : string ($re : Regex, $match = undef : Regex::Match);
    
  [Incompatible Changes]
    * The definition of the following methods in the Regex class are changed.
      
      [Before]
      method match_forward : int ($string : string, $offset : int*, $length = -1 : int);
      
      [After]
      method match_forward : Regex::Match ($string : string, $offset : int*, $length = -1 : int);
  [Deprecation]
    * The following fields in the Regex class are deprecated. These will be removed. Use a Regex::Match or Regex::ReplaceInfo object instead.
    
      has captures : ro string[];
      has match_start : ro int;
      has match_length : ro int;
      has replaced_count : ro int;
    
0.23 2023-04-05
  [Exception Message Improvement]
    * Exception messages are improved.
  [Document Improvement]
    * Documents are improved.
  [License Change]
    * The license is changed to MIT License.
0.22 2023-03-31
  [Internal Compatible Changes]
    * Use new_pointer_ojbect_by_name instead of the deprecated new_pointer_by_name Native API.
0.21 2023-03-19
  [Internal Compatible Changes]
    * Use pointer instead of pointer_t
    * Use SPVM::ExchangeAPI method instead of SPVM functions.
0.20 2023-03-01
  [Prerequirement Changes]
    * SPVM::Resource::RE2 0.01 is required.
    * SPVM::Unicode is no more required.
    * SPVM::Resource::Re2::V2022_06_01 is no more required.
0.19 2023-02-08
  [Prerequirement Changes]
    * SPVM 0.9691+ is needed.
0.18 2023-01-30
  [New Features]
    * Added the split method in the Regex class.
    
    method split : string[] ($string : string, $limit = 0 : int);
    
0.17 2022-12-26
  [Bug Fix]
    * Fixed unexpetedly replacement bug. This reason maybe memory, but I don't understand the detail of the reason.
    
    {
      my $path = "/..";
      $path = Regex->new("^/\.\.$")->replace($path, "/");
      unless ($path eq "/") {
        return 0;
      }
    }

  [Performance Degration]
    * For the above bug fix, performance degration occurs. This will be fixed in the future.
    
0.16 2022-12-26
  [Prerequirement Bug Fix]
    * Fixed prerequirement in Makefile.PL because 'SPVM::Resource::Re2::V2022_06_01 is needed when "perl Makefile.PL" is executed.
0.15 2022-12-23
  [Prerequirement Changes]
    * SPVM 0.9670+ is needed.
    * SPVM::Resource::Re2::V2022_06_01 0.06+ is needed.
  [Build Process Improvement]
    * Added --meta and --no-build-spvm-modules options to Makefile.PL.
    * Sync Makefile.PL to the one that is generated the latest spvmdist command.
    * Added AUTHOR and meta information to Makefile.PL.
0.14 2022-10-01
  [Prerequirement Changes]
    * SPVM::Regex needs SPVM 0.9661+.
  [Test Improvement]
    * Added the test of \b.
  [Document Improvement]
    * Added the hedding "Contributors" and "Author".
    * Added Ryunosuke Murakami to the contributors.
0.13 2022-09-01
  [Bug Fix]
    * Fix the bug that replace_common don't work well in global replacement.
  
0.12 2022-08-18
  [New Features]
    * The match method of the Regex class can receive the offset and the length.
      [Before]
      method match : int ($string : string)
      
      [After]
      method match : int ($string : string, $offset = 0 : int, $length = -1 : int)
  [Document Fix]
    * Fix many document mistakes.
  [Bug Fix]
    * Fix the bug that the replace offset is over the length of the string. This maybe raises some moery leak.
  [Requirement Changes]
    * Need SPVM 0.9643+.
  [Incompatible Changes]
    * The definitions of the following methods of the Regex class.
      [Before]
      method match_offset : int ($string : string, $offset : int*);
      method replace_g_offset  : string ($string : string, $offset_ref : int*, $replace : string)
      [After]
      method match_forward : int ($string : string, $offset : int*);
      method replace_g_forward  : string ($string : string, $replace :object of string|Regex::Replacer, $offset_ref : int*)
   * The following methods of the Regex class are removed.
      method replace_cb_offset  : string ($string : string, $offset_ref : int*, $replace_cb : Regex::Replacer)
      method replace_g_cb_offset  : string ($string : string, $offset_ref : int*, $replace_cb : Regex::Replacer)
      method replace_offset  : string ($string : string, $offset_ref : int*, $replace : string)
   * Remove the following methods of the Regex
      method replace_g_forward  : string ($string : string, $replace :object of string|Regex::Replacer, $offset_ref : int*);
   * The definitions of the following methods of the Regex class.
     [Before]
     method replace_common : string ($string : string, $replace : object, $options : object[], $offset_ref : int*) {
     [After]
     method replace_common : string ($string : string, $replace : object, $offset_ref : int*, $options : object[]) {
   * The definitions of the following methods of the Regex class.
      [Before]
      static method new : Regex ($pattern_and_flags : string[]...)
      {After]
      static method new : Regex ($pattern : string, $flags = undef : string)
   * The definitions of the following methods of the Regex class.
     [Before]
     method replace  : string ($string : string, $replace : object of string|Regex::Replacer)
     method replace_g  : string ($string : string, $replace : object of string|Regex::Replacer)
     precompile method replace_common : string ($string : string, $replace : object, $offset_ref : int*, $options = undef : object[])
     [After]
     method replace  : string ($string : string, $replace : object of string|Regex::Replacer, $offset = 0 : int, $length = -1 : int, $options = undef : object[])
     method replace_g  : string ($string : string, $replace : object of string|Regex::Replacer, $offset = 0 : int, $length = -1 : int, $options = undef : object[])
     precompile method replace_common : string ($string : string, $replace : object, $offset_ref : int*, $length = -1 : int, $options = undef : object[])

  [Changes]
    * The definitions of the following methods of the Regex class.
      [Before]
      method replace_common : string ($string : string, $replace : object, $offset_ref : int*, $options : object[]) {
      [After]
      method replace_common : string ($string : string, $replace : object, $offset_ref : int*, $options = undef : object[]) {
  
0.11 2022-08-08
  [Text Fix]
    * Fix tests for SPVM upgrading.
0.10 2022-08-01
  [Internal Ineffective Changes]
    * Use get_field_object_by_name_v2 in SPVM/Regex.cpp
    * Use set_field_object_by_name_v2 in SPVM/Regex.cpp
  [Pre Requirement Changes]
    * SPVM 0.9632 is needed.
0.09 2022-08-01
  [Internal Changes]
    * Remove unused SPVM::Pattern class
  [Test Fix]
    * Add unexpectedly removed tests.
    * Add URL escape test.
0.08 2022-07-22
  [Bug Fix]
    * Fix the bug that RE2 object is not released in the destructor.
    * Fix the bug that RE2 object is leaked when the compilation error occurs.
0.07  2022-07-15
  [Document Fix]
    * Fix document of cap1 to cap20 simple mistake.
    
0.06  2022-07-15
  [Incompatible Changes]
    * Regex 0.06 binds Google Re2.
    * Change the field and method definitions
      [Before]
      has captures : ro string[];
      has match_start : ro int;
      has match_length : ro int;
      has replace_count : ro int;
      has before_is_hyphen : byte;
      has before_is_open_bracket : byte;
      native static method re2_test : void ();
      static method new : Regex ($re_str_and_options : string[]...)
      static method new_with_options : Regex ($re_str : string, $option_chars : string)
      method match : int ($target : string, $target_base_index : int)
      method replace  : string ($target : string, $target_offset : int, $replace : string)
      method replace_cb  : string ($target : string, $target_offset : int, $replace_cb : Regex::Replacer)
      method replace_all  : string ($target : string, $target_offset : int, $replace : string)
      method replace_all_cb  : string ($target : string, $target_offset : int, $replace_cb : Regex::Replacer)
      method cap1 : string ()
      method cap2 : string ()
      method cap3 : string ()
      method cap4 : string ()
      method cap5 : string ()
      method cap6 : string ()
      method cap7 : string ()
      method cap8 : string ()
      method cap9 : string ()
      method cap10 : string ()
      
      [After]
      has captures : ro string[];
      has match_start : ro int;
      has match_length : ro int;
      has replaced_count : ro int;
      static method new : Regex ($pattern_and_flags : string[]...)
      method match : int ($string : string)
      method match_offset : int ($string : string, $offset : int*);
      method cap1 : string ()
      method cap2 : string ()
      method cap3 : string ()
      method cap4 : string ()
      method cap5 : string ()
      method cap6 : string ()
      method cap7 : string ()
      method cap8 : string ()
      method cap9 : string ()
      method cap10 : string ()
      method cap11 : string ()
      method cap12 : string ()
      method cap13 : string ()
      method cap14 : string ()
      method cap15 : string ()
      method cap16 : string ()
      method cap17 : string ()
      method cap18 : string ()
      method cap19 : string ()
      method cap20 : string ()
      method replace  : string ($string : string, $replace_string : string)
      method replace_cb  : string ($string : string, $replace_cb : Regex::Replacer)
      method replace_g  : string ($string : string, $replace_string : string)
      method replace_g_cb  : string ($string : string, $replace_cb : Regex::Replacer)
      method replace_offset  : string ($string : string, $offset_ref : int*, $replace : string)
      method replace_cb_offset  : string ($string : string, $offset_ref : int*, $replace_cb : Regex::Replacer)
      method replace_g_offset  : string ($string : string, $offset_ref : int*, $replace : string)
      method replace_g_cb_offset  : string ($string : string, $offset_ref : int*, $replace_cb : Regex::Replacer)
      
  [Changes]
    * Need SPVM::Resource::Re2::V2022_06_01 0.05.
    * Need SPVM 0.9615.
0.05  2022-06-23
  * Catch up with SPVM 0.9612.

0.04  2022-06-22
  * Catch up with SPVM::Unicode 0.03.

0.03  2022-06-21
  * Fix some bugs
0.02  2022-06-13

  - Catch up with latest SPVM.
  - Add SPVM::Unicode to Makefile.PL
  
0.01  2022-06-07

  - First development release
