The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.9697 - 2023-03-23

  • New Features
    • Added the following Native APIs.
      • =head2 get_elem_string
        • void* (*get_elem_string)(SPVM_ENV* env, SPVM_VALUE* stack, void* array, int32_t index);
      • The same as L</"get_elem_object">.
      • =head2 set_elem_string
        • void (*set_elem_string)(SPVM_ENV* env, SPVM_VALUE* stack, void* array, int32_t index, void* string);
      • The same as L</"set_elem_object">.
  • Incompatible Changes
    • Changed the following native API implementation. This breaks binary compatibility.
      • =head2 new_muldim_array_raw
      • void* (*new_muldim_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t basic_type_id, int32_t element_dimension, int32_t length); -Creates a new multi dimension array by specifying the basic type ID, the type dimension of the element, and the array length. The basic type ID must be the correct basic type ID got bu C<get_basic_type_id> function. the type dimension of the element must be less than or equals to 255.
      • void* (*new_muldim_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t basic_type_id, int32_t type_dimension, int32_t length);
      • +Creates a new multi-dimensional array by specifying the basic type ID and the type dimension, and the array length. The basic type ID must be the correct basic type ID got bu C<get_basic_type_id> function. the type dimension of the element must be less than or equals to C<255>.
        • =head2 new_muldim_array
      • void* (*new_muldim_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t basic_type_id, int32_t element_dimension, int32_t length);
      • void* (*new_muldim_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t basic_type_id, int32_t type_dimension, int32_t length);
    • Removed the undocumented string_object_to_string and string_object_to_bin methods in the SPVM::ExchangeAPI method and added a private _xs_to_bin method to SPVM::BlessedObject::String.
    • Removed the undocumented array_length method in the SPVM::ExchangeAPI method and added a private _xs_length method to SPVM::BlessedObject::Array
    • Renamed the undocumented api method in the SPVM::BlessedObject method to __api.
    • Removed the undocumented array_to_elems method in the SPVM::ExchangeAPI method and added a private _xs_to_elems method to SPVM::BlessedObject::Array
    • Removed the undocumented array_to_bin method in the SPVM::ExchangeAPI method and added a private _xs_to_bin method to SPVM::BlessedObject::Array
    • Removed the undocumented array_set method in the SPVM::ExchangeAPI method and added a private _xs_set method to SPVM::BlessedObject::Array
    • Removed the undocumented array_get method in the SPVM::ExchangeAPI method and added a private _xs_get method to SPVM::BlessedObject::Array
  • Document Improvement
    • Improved the doc of the SPVM::BlessedObject::String.
    • Improved the doc of the SPVM::BlessedObject::Class.
    • Improved the doc of the SPVM::BlessedObject::Array.
    • Improved the doc of ExchangeAPI.
  • Test Improvement
    • Improved the tests of the SPVM::BlessedObject::String.
    • Improved the tests of the SPVM::BlessedObject::Class.
    • Improved the tests of the SPVM::BlessedObject::Array.
    • Improved the tests of ExchangeAPI.
  • Exception Message Improvement
    • Improved the exception messages of the SPVM::BlessedObject::String.
    • Improved the exception messages of the SPVM::BlessedObject::Class.
    • Improved the exception messages of the SPVM::BlessedObject::Array.
  • Bug Fix
    • Fixed the range checking bug of the set and get methods in the SPVM::BlessedObject::Array.
    • Fixed the bug that the set method in the SPVM::BlessedObject::Array can be set non-assignable element.

Documentation

SPVM compiler to create exe file
Generating SPVM Distribution

Modules

SPVM Language
Address
Array Utilities
SPVM object
Bool object
Build SPVM program
SPVM Builder Public APIs
Compiler and Linker of Native Sources
Link Information
Configurations of Compile and Link of Native Sources
Configurations of creating excutable files.
Create a Executable File
Library Information
Link Information
Object file information
Resourceurations of Compile and Link of Native Sources
Build Utilities
Public APIs of the utility of SPVM Builder
Byte Class
Dynamic byte Array
Interface Type to Clone Object
Interface Type for the Callback to Clone a Object
Command Line Information
Interface Type for Object Comparation Callback
Interface Type for double Comparation Callback
Interface Type for float Comparation Callback
Interface Type for int Comparation Callback
Interface Type for long Comparation Callback
Interface Type for String Comparation Callback
Compiler
double Complex Type
float Complex Type
SPVM Performance Benchmark
SPVM Exchange API
SPVM Language Specification
SPVM Language Specification
SPVM Standard Modules
SPVM Native APIs
SPVM Allocator Native APIs
SPVM Compiler Native APIs
SPVM Precompile Native APIs
SPVM Runtime Native APIs
SPVM String Buffer Native APIs
How to write the native module
How to write the resource module
SPVM Performance Tutorial
Double Class
Dynamic double Array
Execution Environment
Interface Type for Object Equality Checking Callback
a callback implementation of EqualityChecker to check if the memory addresses of the two objects are equal.
Error
Not Supported Error
System Error
SPVM Exchange API
Float Class
Dynamic float Array
SPVM Starndard Functions
Format Utilities
Hash Data Structure
Hash entry
Int Class
Dynamic int Array
Dynamic Object Array
Long Class
Dynamic long Array
Point
Point 3D
Runtime
Executing Handler at End of Scope
Handler of Scope::Guard
Short Class
Dynamic short Array
Sorting Functions
Call Stack
String Buffer
Dynamic string array
A Interface Type to Stringify a Object
Interface Type for Stringing Callback
Time Manipulation
struct tm in C language

Provides

in lib/SPVM/Builder/Compiler.pm
in lib/SPVM/Builder/Env.pm
in lib/SPVM/Builder/Runtime.pm
in lib/SPVM/Builder/Stack.pm
in lib/SPVM/Builder/Compiler/Util.pm
in lib/SPVM/Dist.pm
in lib/SPVM/Global.pm

Examples