-
-
02 Aug 2022 22:35:53 UTC
- Browse (raw)
- Changes
- How to Contribute
- Repository
- Issues (12)
- Testers (200 / 0 / 1)
- Kwalitee
Bus factor: 1- 81.55% Coverage
- License: perl_5
- Activity
24 month- Tools
- Download (883.52KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- ExtUtils::CBuilder
- Time::Piece
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
Changes for version 0.9633 - 2022-08-03
- New Features
- Add optional argument feature.
- Add the following native APIs. The length of the arguments can be got in the native module. int32_t (*get_args_stack_length)(SPVM_ENV* env, SPVM_VALUE* stack); void (*set_args_stack_length)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t args_length);
- Add the following runtime native APIs. int32_t (*get_method_required_args_length)(void* runtime, int32_t method_id);
- Improve Exception Messages
- Improve exception messages in native APIs.
- Incompatible Changes
- All the implementations, the fields, the arguments, native APIs, documents about the concept of "signature" are removed.
- The definitions of the following native APIs are changed.
- Before
- int32_t (*get_field_id)(SPVM_ENV* env, const char* class_name, const char* field_name, const char* signature); int32_t (*get_class_var_id)(SPVM_ENV* env, const char* class_name, const char* class_var_name, const char* signature); int32_t (*get_class_method_id)(SPVM_ENV* env, const char* class_name, const char* method_name, const char* signature); int32_t (*get_instance_method_id)(SPVM_ENV* env, void* object, const char* method_name, const char* signature); void (*set_field_object_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* class_name, const char* field_name, const char* signature, void* value, int32_t* error, const char* file, int32_t line); void* (*get_field_object_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* class_name, const char* field_name, const char* signature, int32_t* error, const char* file, int32_t line); void (*set_class_var_object_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* class_var_name, const char* signature, void* value, int32_t* error, const char* file, int32_t line); void* (*get_class_var_object_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* class_var_name, const char* signature, int32_t* error, const char* file, int32_t line); int32_t (*call_class_method_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* method_name, const char* signature, const char* file, int32_t line); int32_t (*call_instance_method_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* method_name, const char* signature, const char* file, int32_t line); int32_t (*get_instance_method_id_static)(SPVM_ENV* env, const char* class_name, const char* method_name, const char* signature); int32_t (*get_instance_method_id_super)(SPVM_ENV* env, void* object, const char* method_name, const char* signature);
- Before
- After
- int32_t (*get_field_id)(SPVM_ENV* env, const char* class_name, const char* field_name); int32_t (*get_class_var_id)(SPVM_ENV* env, const char* class_name, const char* class_var_name); int32_t (*get_class_method_id)(SPVM_ENV* env, const char* class_name, const char* method_name); int32_t (*get_instance_method_id)(SPVM_ENV* env, void* object, const char* method_name); void (*set_field_object_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* class_name, const char* field_name, void* value, int32_t* error, const char* file, int32_t line); void* (*get_field_object_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* class_name, const char* field_name, int32_t* error, const char* file, int32_t line); void (*set_class_var_object_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* class_var_name, void* value, int32_t* error, const char* file, int32_t line); void* (*get_class_var_object_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* class_var_name, int32_t* error, const char* file, int32_t line); int32_t (*call_class_method_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* method_name, const char* file, int32_t line); int32_t (*call_instance_method_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* method_name, const char* file, int32_t line); int32_t (*get_instance_method_id_static)(SPVM_ENV* env, const char* class_name, const char* method_name); int32_t (*get_instance_method_id_super)(SPVM_ENV* env, void* object, const char* method_name);
- The definitions of the following runtime native APIs are removed. int32_t (*get_class_var_signature_id)(void* runtime, int32_t class_var_id); int32_t (*get_field_signature_id)(void* runtime, int32_t field_id); int32_t (*get_method_signature_id)(void* runtime, int32_t method_id);
- The precompiled methods don't use get_field_id_cache, get_class_var_id_cache, get_method_id_cache.
- The definitions of the following runtime native APIs are changed.
- Before
- int32_t (*get_type_width)(void* runtime, int32_t type_id);
- After
- int32_t (*get_type_stack_length)(void* runtime, int32_t type_id);
- Before
- The definitions of the following native APIs are changed.
- Before
- int32_t (*call_spvm_method)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t method_id, int32_t args_stack_length); int32_t (*call_class_method_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* method_name, const char* file, int32_t line); int32_t (*call_instance_method_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* method_name, const char* file, int32_t line); int32_t (*call_class_method)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t method_id); int32_t (*call_instance_method)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t method_id);
- After
- int32_t (*call_spvm_method)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t method_id, int32_t args_stack_length); int32_t (*call_class_method_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* method_name, int32_t args_stack_length, const char* file, int32_t line); int32_t (*call_instance_method_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* method_name, int32_t args_stack_length, const char* file, int32_t line); int32_t (*call_class_method)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t method_id, int32_t args_stack_length); int32_t (*call_instance_method)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t method_id, int32_t args_stack_length);
- Before
- The definitions of the following native APIs are removed. int32_t (*get_method_id_cache)(SPVM_ENV* env, const char* method_cache_name, int32_t method_cache_name_length); int32_t (*get_field_id_cache)(SPVM_ENV* env, const char* field_cache_name, int32_t field_cache_name_length); int32_t (*get_class_var_id_cache)(SPVM_ENV* env, const char* class_var_cache_name, int32_t class_var_cache_name_length);
- Internal Ineffective Changes
- Rename the opcode SPVM_OPCODE_C_ID_CALL_INSTANCE_METHOD_BY_SIGNATURE to SPVM_OPCODE_C_ID_CALL_INSTANCE_METHOD_BY_NAME.
- Remove signature_id fields in spvm_runtime_class_var, spvm_runtime_field, spvm_runtime_method.
- Add args_length field to spvm_call_method.h.
- Rename width of spvm_runtime_type to stack_length.
- Rename width of spvm_type to stack_length.
- Rename SPVM_TYPE_get_width to SPVM_TYPE_get_stack_length.
Modules
SPVM LanguageArray UtilitiesBlessed object base classArray based blessed objectClass based blessed objectString based blessed objectBool objectBuild SPVM programSPVM Builder Public APIsCompiler and Linker of Native SourcesLink InformationConfigurations of Compile and Link of Native SourcesConfigurations of creating excutable files.Create a Executable FileLibrary InformationLink InformationObject file informationResourceurations of Compile and Link of Native SourcesBuild UtilitiesPublic APIs of the utility of SPVM BuilderByte objectDynamic byte ArrayA Interface Type to Clone a ObjectInterface Type for the Callback to Clone a ObjectCommand Line InformationInterface Type for Object Comparation CallbackInterface Type for byte Comparation CallbackInterface Type for double Comparation CallbackInterface Type for float Comparation CallbackInterface Type for int Comparation CallbackInterface Type for long Comparation CallbackInterface Type for short Comparation CallbackInterface Type for String Comparation Callbackdouble Complex Typefloat Complex Type$class_name is a SPVM moduleSPVM Performance BenchmarkSPVM Exchange APISPVM Language SpecificationSPVM Standard ModulesSPVM Native APIsSPVM Allocator Native APIsSPVM Compiler Native APIsSPVM Precompile Native APIsSPVM Runtime Native APIsSPVM String Buffer Native APIsHow to write the native moduleHow to write the resource moduleSPVM Performance Tutorialcomplex tutorial.Double objectDynamic double ArrayInterface Type for Object Equality Checking Callbacka callback implementation of EqualityChecker to check if the memory addresses of the two objects are equal.ErrorSystem ErrorSPVM Exchange APIFloat objectDynamic float ArraySPVM Starndard FunctionsFormat UtilitiesHash Data StructureHash entryInt objectDynamic int ArrayDynamic Object ArrayLong objectDynamic long ArrayPointPoint 3DShort objectDynamic short ArraySorting FunctionsString BufferDynamic string arrayA Interface Type to Stringify a ObjectInterface Type for Stringing CallbackTime ManipulationTime informationExamples
- 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
Module Install Instructions
To install SPVM, copy and paste the appropriate command in to your terminal.
cpanm SPVM
perl -MCPAN -e shell install SPVM
For more information on module installation, please visit the detailed CPAN module installation guide.