SPVM 0.9663 is released
Tags: perl, spvm, cpan, language
Published: 2022-11-29 00:06:03

<a href="https://metacpan.org/pod/SPVM">SPVM</a> 0.9663 is released.

## New Features and Enhancement

<a href="https://github.com/yuki-kimoto/SPVM/blob/master/Changes">Changes</a>

```
0.9663 2022-11-29
  [Changes]
    * Add the following file to the MANIFEST.SKIP that is generated by the spvmdist command.
      
      ^cpanm$
    * The version of the module file that is generated by the spvmdist command is not outputted
      when the --only-lib-files option is specified.
  [New Features]
    * Added the follwoing opitonal arguments to the push method in the StringBuffer class.
      
      [Before]
      method push : void ($string : string);
      
      [After]
      method push : void ($string : string, $offset = 0 : int, $length = -1 : int);
      
      And added the some exceptions. See the doc.

        Adds a C<$string> from the C<$offset> to the position proceeded by the C<$length> after the end of the string in the string buffer.

        Exceptions:

        The C<$string> must be defined.

        The C<$offset> must be greater than or equal to 0.

        The C<$offset> + C<$length> must be less than or equal to the length of the C<$string>.
    * Added the follwoing method to the Hash class.
      method clone : Hash ();
      method to_array : object[] ($sort = 0 : int);
      method delete_or_default_byte : int ($key : string, $default : int);
      method delete_or_default_short : int ($key : string, $default : int);
      method delete_or_default_int : int ($key : string, $default : int);
      method delete_or_default_long : long ($key : string, $default : long);
      method delete_or_default_float : float ($key : string, $default : float);
      method delete_or_default_double : double ($key : string, $default : double);
      method delete_or_default_string : string ($key : string, $default : string);
      method delete_or_default : object ($key : string, $default : object);


    * Added the Cloneable interface to tha Hash class.
      
  [Imcompatible New Features]
    * The octal escape character \000 and \o{} is added.
      \000 got to be interpreted \o{00} instead of "\0" . "00"
    * The \0 becomes the feature of the octal escape character.
  [Internal Non-Affecting Changes]
    * Fixed the bug that MyTest::compile_ok and MyTest::compile_not_ok can't create the multi-level directory.
  [Compilation And Runtime Error Message Improvement]
    * Notation of class names, method names, field names, and class variable names in compilation and runtime error messages has been unified.
      The \"%s\" class.
      The \"%s\" method.
      The \"%s\" instance method.
      The \"%s\" class method.
      The \"%s\" field.
      The \"%s\" class variable.
  [Exception Error Message Improvement]
    * The notation of the arguments in the exception messages is unified.
      The $foo
  [Bug Fix]
    * Fixed the bug that the interface of the parent class is not recognized.
    * Fiexd the bug that The checking of the required method doesn't see the super class
      https://github.com/yuki-kimoto/SPVM/issues/246
    * Fixed the bug that when searching field doesn't found in the super class, eternal loop occur.
      https://github.com/yuki-kimoto/SPVM/issues/249
    * The bug that original exception is overwriten by destructor exception
      https://github.com/yuki-kimoto/SPVM/issues/253
    * Fixed the bug that Windows I/O binary mode in spvmcc command.
  [Incompatible Bug Fix]
    * Fixed the bug that Format->sprintf "%p" output differs Linux and Windows.  "0x" is added to the output on Windows.
  [New Features]
    * The method can have the more optional arguments than the arguments of the interface method.
    * Added the following methods to the Fn class.

      static method sizeof_native_int : int ();
      static method sizeof_native_pointer : int ();
      static method init_string : void ($string : mutable string, $ascii_code = 0 : int, $offset = 0 : int, $length = -1 : int);
      
  [Imcompatible Changes]
    * The field in the "foo" class with the same name as the "MyClass\" field in the parent class cannot be defined.
  [Exception Message Improvement]
    Improve the following message.
    [Before]
      (An exception thrown in the DESTROY method is converted to a warning)%s\n
    [After]
      [The following exception is coverted to a warning because it is thrown in the DESTROY method]\n%s\n
```