Changes for version 0.9510_01 - 2021-04-14

  • CHANGE
    • Support cast from class muldim array to interface muldim array
    • Support cast from class muldim array to callback muldim array
    • Add postfix type cast syntax
      • $num->(string)
      • This is same as
      • (string)$num;
    • Improve field access error message.
    • Move compiler native APIs from env->compier_xxx to env->api->compiler->xxx. // Compiler API void* compiler_api = env->api->compiler;
      • // New compiler void* compiler = compiler_api->new_compiler();
      • // Compile SPVM int32_t status = compiler_api->compile_spvm(compiler, "MyClass");
      • // Free compiler compiler_api->free_compiler(compiler);
    • Move the following native APIs to env->api->runtime->xxx.
      • get_precompile_method_address set_native_method_address set_precompile_method_address get_method_id_without_signature get_method_id_without_signature get_constant_string_value
      • // Runtime API void* runtime_api = env->api->runtime;
      • // New runtime void* runtime = runtime_api->new_runtime();
      • // Free runtime runtime_api->free_runtime(runtime);
    • Add SPVM::Document::NativeAPI::Compiler document.
    • Add SPVM::Document::NativeAPI::Runtime document.
    • Improve English syntax of error messages.
  • BUG FIX
    • Fix the bug that dump weaken objects.
    • Fix the bug of isweak operator compile checking.
  • NON BACKWORD COMPATIBLE CHANGES
    • Internally used Native APIs object_type_category_offset become always NULL.
    • Remove native APIs from env->compier_xxx. This APIs is moved to compiler native APIs.
    • Remove the following native APIs get_precompile_method_address set_native_method_address set_precompile_method_address get_method_id_without_signature get_method_id_without_signature get_constant_string_value
    • Native API "is_object_array" ID becomes 186
    • Remove the following compiler APIs. int32_t (*get_methods_length)(void* compiler, int32_t class_id); int32_t (*get_method_id)(void* compiler, int32_t class_id, int32_t method_index_of_class); int32_t (*get_method_id_by_name)(void* compiler, const char* class_name, const char* method_name); const char* (*get_method_name)(void* compiler, int32_t method_id); const char* (*get_method_signature)(void* compiler, int32_t method_id); int32_t (*is_anon_method)(void* compiler, int32_t method_id); int32_t (*is_init_block_method)(void* compiler, int32_t method_id); int32_t (*is_native_method)(void* compiler, int32_t method_id); int32_t (*is_precompile_method)(void* compiler, int32_t method_id); const char* (*get_class_module_file)(void* compiler, int32_t class_id); int32_t (*get_class_id)(void* compiler, const char* class_name); int32_t (*get_classes_length)(void* compiler); const char* (*get_class_name)(void* compiler, int32_t class_id); int32_t (*is_anon_class)(void* compiler, int32_t class_id); int32_t (*get_method_class_id)(void* compiler, int32_t method_id);
    • Reorder compiler native APIs.

Documentation

SPVM compiler to create exe file
The Command to Generate SPVM Native Modules

Modules

Static Perl Virtual Machine. Fast Calculation, Fast Array Operation, and Easy C/C++ Binding.
Blessed object base class
Array based blessed object
Class based blessed object
String based blessed object
Bool object
Build SPVM program
SPVM Builder Public APIs
Compiler and Linker of Native Sources
Configurations of Compile and Link of Native Sources
Configurations of creating excutable files.
Create a Executable File
Object file information
Object file information
Build Utilities
Public APIs of the utility of SPVM Builder
Byte object
Dynamic Byte Array
A Interface Type to Clone a Object
A Callback Type to Clone a Object
A Callback Type for byte Comparation
A Callback Type for double Comparation
A Callback Type for float Comparation
A Callback Type for int Comparation
A Callback Type for long Comparation
A Callback Type for Object Comparation
A Callback Type for short Comparation
A Callback Type for string Comparation
double complex type
float complex type
SPVM Performance Benchmark
SPVM Exchange API
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
SPVM Performance Tutorial
Double object
Dynamic double array
A Callback Type to Check the Object Equality
a callback implementation of EqualityChecker to check if the memory addresses of the two objects are equal.
SPVM Exchange API
Float object
Dynamic float array
SPVM Starndard Functions
Hash Data Structure
Hash entry
Int object
Dynamic int array
Dynamic object array
Long object
Dynamic long array
Regular expression
Regular expression pattern
a callback type for the regex replacement
Short object
Dynamic short array
String buffer
Dynamic string array
A Interface Type to Stringify a Object
A Callback Yype to Stringify a Object
Time manipulation
Time information
SPVM Unicode Utilities.

Provides

in lib/SPVM/Builder/Generator/Lib.pm

Examples