Changes for version 0.9506 - 2021-02-22

  • CHANGE
    • Add no_symbol_cache_flag, set_no_symbol_cache_flag, get_no_symbol_cache_flag native APIs
    • Precompile and native method of SPVM core become reentrant if no_symbol_cache_flag is set.
    • Fix precompile exception bugs when symbols is not found.
    • Add print, print_stderr native APIs.
    • env is not managed by SPVM memory allocator because env must exist before the compiler is created.
    • Add the following native APIs for the compilation of SPVM SPVM_ENV* (*new_env_raw)(SPVM_ENV* env); void (*free_env_raw)(SPVM_ENV* env); int32_t (*init_env)(SPVM_ENV* env); void (*call_init_blocks)(SPVM_ENV* env); void (*cleanup_global_vars)(SPVM_ENV* env); void* (*new_compiler)(SPVM_ENV* env); void (*compiler_free)(SPVM_ENV* env, void* compiler); void (*compiler_set_start_line)(SPVM_ENV* env, void* compiler, int32_t start_line); int32_t (*compiler_get_start_line)(SPVM_ENV* env, void* compiler); void (*compiler_set_start_file)(SPVM_ENV* env, void* compiler, const char* start_file); const char* (*compiler_get_start_file)(SPVM_ENV* env, void* compiler); void (*compiler_add_module_dir)(SPVM_ENV* env, void* compiler, const char* module_dir); int32_t (*compiler_get_module_dirs_length )(SPVM_ENV* env, void* compiler); const char* (*compiler_get_module_dir )(SPVM_ENV* env, void* compiler, int32_t module_dir_id); int32_t (*compiler_compile_spvm)(SPVM_ENV* env, void* compiler, const char* class_name); int32_t (*compiler_get_error_messages_length)(SPVM_ENV* env, void* compiler); const char* (*compiler_get_error_message)(SPVM_ENV* env, void* compiler, int32_t index); int32_t (*compiler_get_class_id)(SPVM_ENV* env, void* compiler, const char* class_name); int32_t (*compiler_get_classes_length)(SPVM_ENV* env, void* compiler); const char* (*compiler_get_class_name)(SPVM_ENV* env, void* compiler, int32_t class_id); int32_t (*compiler_is_anon_class)(SPVM_ENV* env, void* compiler, int32_t class_id); int32_t (*compiler_get_methods_length)(SPVM_ENV* env, void* compiler, int32_t class_id); int32_t (*compiler_get_method_id)(SPVM_ENV* env, void* compiler, int32_t class_id, int32_t method_index_of_class); int32_t (*compiler_get_method_id_by_name)(SPVM_ENV* env, void* compiler, const char* class_name, const char* method_name); const char* (*compiler_get_method_name)(SPVM_ENV* env, void* compiler, int32_t method_id); const char* (*compiler_get_method_signature)(SPVM_ENV* env, void* compiler, int32_t method_id); int32_t (*compiler_is_anon_method)(SPVM_ENV* env, void* compiler, int32_t method_id); int32_t (*compiler_is_init_block_method)(SPVM_ENV* env, void* compiler, int32_t method_id); int32_t (*compiler_is_native_method)(SPVM_ENV* env, void* compiler, int32_t method_id); int32_t (*compiler_is_precompile_method)(SPVM_ENV* env, void* compiler, int32_t method_id); void* (*compiler_get_native_method_address)(SPVM_ENV* env, void* compiler, int32_t method_id); void* (*compiler_get_precompile_method_address)(SPVM_ENV* env, void* compiler, int32_t method_id); void (*compiler_set_native_method_address)(SPVM_ENV* env, void* compiler, int32_t method_id, void* address); void (*compiler_set_precompile_method_address)(SPVM_ENV* env, void* compiler, int32_t method_id, void* address);
  • BUG FIX
    • Fix the line and the position of character in case that a compilation error occurs and some space character exists.
    • Fix caching bug that the change of SPVM::Builder::Exe can't be detected.

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 in SPVM | 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 in SPVM | Byte object
ByteList in SPVM | 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
Complex_2d in SPVM | double complex type
Complex_2f in SPVM | float complex type
SPVM Performance Benchmark
SPVM Exchange API
SPVM Language Specification
SPVM Standard Modules
SPVM Native APIs
SPVM Performance Tutorial
Double in SPVM | Double object
DoubleList in SPVM | Dynamic double array
A Callback Type to Check the Object Equality
EqualityChecker::SameObject in SPVM | a callback implementation of EqualityChecker to check if the memory addresses of the two objects are equal.
SPVM Exchange API
Float in SPVM | Float object
FloatList in SPVM | Dynamic float array
SPVM Starndard Functions
Hash in SPVM | Hash Data Structure
Hash::Entry in SPVM | Hash entry
Int in SPVM | Int object
IntList in SPVM | Dynamic int array
List in SPVM | Dynamic object array
Long in SPVM | Long object
LongList in SPVM | Dynamic long array
Regex in SPVM | Regular expression
Regex::Pattern in SPVM | Regular expression pattern
Regex::Replacer in SPVM | a callback type for the regex replacement
Short in SPVM | Short object
ShortList in SPVM | Dynamic short array
StringBuffer in SPVM | String buffer
StringList in SPVM | Dynamic string array
A Interface Type to Stringify a Object
A Callback Yype to Stringify a Object
Time in SPVM | Time manipulation
Time::Info in SPVM | Time information
SPVM Unicode Utilities.

Provides

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

Examples