Changes for version 0.989021 - 2023-07-11
- New Features
- The argument native API was added.
- The class native variable API was added.
- The field native API was added.
- The method native API was added.
- The basic type native API was added.
- The following method were added to the Env class.
- static method new : Env ($runtime : Runtime = undef);
- The following native APIs were added. void* (*get_runtime)(SPVM_ENV* env, SPVM_VALUE* stack); void (*set_runtime)(SPVM_ENV* env, SPVM_VALUE* stack, void* runtime);
- Document Changes
- SPVM::Document::NativeClass was renamed to SPVM::Document::NativeModule.
- Incompatibe Changes
- Native API IDs of the runtime native APIs were reordered.
- 0 new_instance 1 free_instance 2 object_header_size 3 object_ref_count_offset 4 object_length_offset 5 get_basic_type_by_id 6 get_basic_type_by_name 7 get_basic_types_length 8 is_object_type 9 can_assign 10 build_precompile_module_source 11 build_precompile_method_source
- The following runtime native APIs were removed.
- const char* (*get_method_name)(void* runtime, void* method);
- int32_t (*get_method_is_class_method)(void* runtime, void* method);
- int32_t (*get_method_is_anon)(void* runtime, void* method);
- int32_t (*get_method_is_native)(void* runtime, void* method);
- int32_t (*get_method_is_precompile)(void* runtime, void* method);
- int32_t (*get_method_byte_vars_width)(void* runtime, void* method);
- int32_t (*get_method_short_vars_width)(void* runtime, void* method);
- int32_t (*get_method_int_vars_width)(void* runtime, void* method);
- int32_t (*get_method_long_vars_width)(void* runtime, void* method);
- int32_t (*get_method_float_vars_width)(void* runtime, void* method);
- int32_t (*get_method_double_vars_width)(void* runtime, void* method);
- int32_t (*get_method_object_vars_width)(void* runtime, void* method);
- int32_t (*get_method_ref_vars_width)(void* runtime, void* method);
- int32_t (*get_method_mortal_stack_length)(void* runtime, void* method);
- int32_t (*get_method_opcodes_length)(void* runtime, void* method);
- int32_t (*get_method_args_length)(void* runtime, void* method);
- int32_t (*get_method_required_args_length)(void* runtime, void* method);
- int32_t (*get_method_is_enum)(void* runtime, void* method);
- void* (*get_method_return_basic_type)(void* runtime, void* method);
- int32_t (*get_method_return_type_dimension)(void* runtime, void* method);
- int32_t (*get_method_return_type_flag)(void* runtime, void* method);
- void* (*get_method_current_basic_type)(void* runtime, void* method);
- void* (*get_method_by_index)(void* runtime, void* basic_type, int32_t method_index);
- void* (*get_method_by_name)(void* runtime, void* basic_type, const char* method_name);
- void* (*get_method_by_name)(void* runtime, void* basic_type, const char* method_name);
- int32_t (*get_method_index)(void* runtime, void* method);
- void* (*get_native_method_address)(void* runtime, void* method);
- void (*set_native_method_address)(void* runtime, void* method, void* address);
- void* (*get_precompile_method_address)(SPVM_ENV*, void* method);
- void (*set_precompile_method_address)(void* runtime, void* method, void* address);
- const char* (*get_field_name)(void* runtime, void* field);
- void* (*get_field_basic_type)(void* runtime, void* field);
- int32_t (*get_field_type_dimension)(void* runtime, void* field);
- int32_t (*get_field_type_flag)(void* runtime, void* field);
- void* (*get_field_current_basic_type)(void* runtime, void* field);
- void* (*get_field_by_index)(void* runtime, void* basic_type, int32_t field_index);
- void* (*get_field_by_name)(void* runtime, void* basic_type, const char* field_name);
- int32_t (*get_field_index)(void* runtime, void* field);
- int32_t (*get_field_offset)(void* runtime, void* field);
- void* (*get_class_var_by_index)(void* runtime, void* basic_type, int32_t class_var_index);
- const char* (*get_class_var_name)(void* runtime, void* class_var);
- void* (*get_class_var_basic_type)(void* runtime, void* class_var);
- int32_t (*get_class_var_type_dimension)(void* runtime, void* class_var);
- int32_t (*get_class_var_type_flag)(void* runtime, void* class_var);
- void* (*get_class_var_current_basic_type)(void* runtime, void* class_var);
- void* (*get_class_var_by_name)(void* runtime, void* basic_type, const char* class_var_name);
- int32_t (*get_class_var_index)(void* runtime, void* class_var);
- void* (*get_class_var_current_basic_type)(void* runtime, void* class_var);
- void* (*get_class_var_by_name)(void* runtime, void* basic_type, const char* class_var_name);
- int32_t (*get_class_var_index)(void* runtime, void* class_var);
- void* (*get_arg_basic_type)(void* runtime, void* arg);
- int32_t (*get_arg_type_dimension)(void* runtime, void* arg);
- int32_t (*get_arg_type_flag)(void* runtime, void* arg);
- void* (*get_arg_by_index)(void* runtime, void* method, int32_t arg_index);
- void* (*get_basic_type_anon_basic_type)(void* runtime, void* basic_type, int32_t anon_basic_type_index);
- const char* (*get_basic_type_module_rel_file)(void* runtime, void* basic_type);
- const char* (*get_basic_type_module_dir)(void* runtime, void* basic_type);
- int32_t (*get_basic_type_is_anon)(void* runtime, void* basic_type);
- int32_t (*get_basic_type_fields_length)(void* runtime, void* basic_type);
- int32_t (*get_basic_type_methods_length)(void* runtime, void* basic_type);
- int32_t (*get_basic_type_class_vars_length)(void* runtime, void* basic_type);
- void* (*get_basic_type_parent)(void* runtime, void* basic_type);
- const char* (*get_basic_type_version_string)(void* runtime, void* basic_type);
- int32_t (*get_basic_type_class_vars_length)(void* runtime, void* basic_type);
- void* (*get_basic_type_parent)(void* runtime, void* basic_type);
- const char* (*get_basic_type_version_string)(void* runtime, void* basic_type);
- int32_t (*get_basic_type_class_vars_length)(void* runtime, void* basic_type);
- void* (*get_basic_type_parent)(void* runtime, void* basic_type);
- const char* (*get_basic_type_version_string)(void* runtime, void* basic_type);
- int32_t (*get_basic_type_id)(void* runtime, void* basic_type);
- The following runtime native APIs were renamed.
- void* (*get_field)(void* runtime, void* basic_type, int32_t field_index);
- void* (*get_field_by_index)(void* runtime, void* basic_type, int32_t field_index);
- void* (*get_class_var)(void* runtime, void* basic_type, int32_t class_var_index);
- void* (*get_class_var_by_index)(void* runtime, void* basic_type, int32_t class_var_index);
- void* (*get_method)(void* runtime, void* basic_type, int32_t method_index);
- void* (*get_method_by_index)(void* runtime, void* basic_type, int32_t method_index);
- void* (*get_arg)(void* runtime, void* method, int32_t arg_index);
- void* (*get_arg_by_index)(void* runtime, void* method, int32_t arg_index);
- The spvm_native.c was removed.
- The methods in the Runtime class were removed.
- method build_env : Env ();
- The following structures in Native API were renamed.
- -struct spvm_env_compiler; -typedef struct spvm_env_compiler SPVM_ENV_COMPILER; +struct spvm_api_compiler; +typedef struct spvm_api_compiler SPVM_API_COMPILER;
- -struct spvm_env_module_file; -typedef struct spvm_env_module_file SPVM_ENV_MODULE_FILE; +struct spvm_api_module_file; +typedef struct spvm_api_module_file SPVM_API_MODULE_FILE;
- -struct spvm_env_runtime; -typedef struct spvm_env_runtime SPVM_ENV_RUNTIME; +struct spvm_api_runtime; +typedef struct spvm_api_runtime SPVM_API_RUNTIME;
- -struct spvm_env_string_buffer; -typedef struct spvm_env_string_buffer SPVM_ENV_STRING_BUFFER; +struct spvm_api_string_buffer; +typedef struct spvm_api_string_buffer SPVM_API_STRING_BUFFER;
- -struct spvm_env_allocator; -typedef struct spvm_env_allocator SPVM_ENV_ALLOCATOR; +struct spvm_api_allocator; +typedef struct spvm_api_allocator SPVM_API_ALLOCATOR;
- The following native API were removed.
- void (*free_env_prepared)(SPVM_ENV* env);
- void (*free_env)(SPVM_ENV* env);
- SPVM_ENV* (*new_env)(SPVM_ENV* env);
- The following native API were renamed.
- SPVM_ENV* (*new_env_raw)();
- void (*free_env_raw)(SPVM_ENV* env);
- SPVM_ENV* (*new_env)();
- void (*free_env)(SPVM_ENV* env);
- -SPVM_ENV* SPVM_NATIVE_new_env_raw(void); +SPVM_ENV* SPVM_NATIVE_new_env(void);
- The following native module file API were removed.
- SPVM_API_MODULE_FILE* (*new_env)(void);
- Native API IDs of the runtime native APIs were reordered.
Modules
SPVM Language
Address
Array Utilities
SPVM object
SPVM Array
SPVM Class
SPVM string
Bool object
Build Dynamic Libraries for SPVM Distribution
Defining Public Functions of SPVM::Builder
Compilation and Link of Native Module
Compilation Information
SPVM Builder Compiler
Configurations of creating excutable files.
SPVM Builder Environment
Creating Executable File
Library Information
Link Information
Object File Information
Resource
SPVM Builder Runtime
SPVM Builder Stack
Builder Utilities
Defining Public Functions of SPVM::Builder::Util
The byte Object
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 Exchange API
SPVM Language Specification
SPVM Language Specification
SPVM Standard Modules
SPVM Native APIs
SPVM Allocator Native APIs
Argument Native APIs
Basic Type Native APIs
Class Variable Native APIs
SPVM Compiler Native APIs
Field Native APIs
Method Native APIs
SPVM Module File Native APIs
Runtime Native APIs
SPVM String Buffer Native APIs
(Moved)
Document of Native Module
How to write the resource class
Moved
The double Object
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
Class Object
Error Code
The float Object
Dynamic float Array
SPVM Starndard Functions
Format Utilities
SPVM Global Instance for Perl Interpreter
Hash Data Structure
Hash entry
Immutable byte Array
Immutable double Array
Immutable float Array
Immutable int Array
Immutable long Array
Immutable short Array
Immutable string array
The int Object
Dynamic int Array
Dynamic Object Array
The long Object
Dynamic long Array
Point
Point 3D
Runtime
Executing Handler at End of Scope
Handler of Scope::Guard
The 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 (Removed)
struct tm in C language (Removed)
Provides
in lib/SPVM/Dist.pm
Examples
- examples/doc/tutorial/basic/lib/SPVM/MyMath.spvm
- examples/doc/tutorial/basic/sum.pl
- examples/doc/tutorial/precompile/lib/SPVM/MyMath.spvm
- examples/doc/tutorial/precompile/sum_precompile.pl
- examples/native/bind_clib/bind_clib.pl
- examples/native/bind_clib/lib/SPVM/BindCLib.c
- examples/native/bind_clib/lib/SPVM/BindCLib.config
- examples/native/bind_clib/lib/SPVM/BindCLib.native/include/bind_clib.h
- examples/native/bind_clib/lib/SPVM/BindCLib.native/src/bind_clib.c
- examples/native/bind_clib/lib/SPVM/BindCLib.spvm
- examples/native/cuda_add/cuda_add.pl
- examples/native/cuda_add/lib/SPVM/MyAdd.config
- examples/native/cuda_add/lib/SPVM/MyAdd.cu
- examples/native/cuda_add/lib/SPVM/MyAdd.native/include/cuda_array_culc.h
- examples/native/cuda_add/lib/SPVM/MyAdd.native/src/cuda_array_culc.cu
- examples/native/cuda_add/lib/SPVM/MyAdd.spvm
- examples/native/eigen/README
- examples/native/gsl/lib/SPVM/MyGSL.c
- examples/native/gsl/lib/SPVM/MyGSL.config
- examples/native/gsl/lib/SPVM/MyGSL.spvm
- examples/native/gsl/mygsl.pl
- examples/native/opencv/resize/lib/SPVM/MyOpenCVResize.config
- examples/native/opencv/resize/lib/SPVM/MyOpenCVResize.cpp
- examples/native/opencv/resize/lib/SPVM/MyOpenCVResize.spvm
- examples/native/opencv/resize/linux-pengin-output.png
- examples/native/opencv/resize/linux-pengin.png
- examples/native/opencv/resize/opencv_resize.pl
- examples/native/openmp/lib/SPVM/MyOpenMP.c
- examples/native/openmp/lib/SPVM/MyOpenMP.config
- examples/native/openmp/lib/SPVM/MyOpenMP.spvm
- examples/native/openmp/openmp.pl
- examples/native/zlib/lib/SPVM/MyZlib.c
- examples/native/zlib/lib/SPVM/MyZlib.config
- examples/native/zlib/lib/SPVM/MyZlib.spvm
- examples/native/zlib/zlib.pl
- examples/spvmcc/basic/README.txt
- examples/spvmcc/basic/SPVM/MyApp.spvm
- examples/spvmcc/basic/myapp