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

Changes for version 0.9701 - 2023-04-03

  • Version Number Fix
    • This release is 0.9701.
  • Incompatible Changes
    • Renamed the global_before_compile field in the SPVM::Builder::Config::Exe to before_each_compile
  • New Features and Deprecation
    • Add the add_ccflag in the SPVM::Builder::Config class. the add_ccflags method is deprecated. Add the add_include_dir in the SPVM::Builder::Config class. the add_include_dirs method is deprecated. Add the add_ldflag in the SPVM::Builder::Config class. the add_ldflags method is deprecated. Add the add_lib_dir in the SPVM::Builder::Config class. the add_lib_dirs method is deprecated. Add the add_lib in the SPVM::Builder::Config class. the add_libs method is deprecated. Add the add_static_lib in the SPVM::Builder::Config class. the add_static_libs method is deprecated. Add the add_source_file in the SPVM::Builder::Config class. the add_source_files method is deprecated.
  • Bug Fix
    • Fixed the bug that Makefile.PL that is generated by the spvmdist command doesn't output MIT license meta information.
  • Incompatible Changes
    • Removed the deprecated new_pointer_raw, new_pointer, new_pointer_by_name Native API are removed.
    • Removed the unused object_type_category_offset Native API is removed.
    • Changed the ID of Native APIs. This breaks binary compatibility. This maybe the last ID changes(0 - 204) of Native APIs.
      • Before
        • 0 class_vars_heap 1 object_header_size 2 object_weaken_backref_head_offset 3 object_ref_count_offset 4 object_basic_type_id_offset 5 object_type_dimension_offset 6 reserved6 7 object_flag_offset 8 object_length_offset 9 api 10 allocator 11 new_env_raw 12 free_env_raw 13 isa 14 elem_isa 15 runtime 16 reserved16 17 reserved17 18 reserved18 19 reserved19 20 get_basic_type_id 21 get_field_id 22 get_field_offset 23 get_class_var_id 24 get_class_method_id 25 get_instance_method_id 26 new_object_raw 27 new_object 28 new_byte_array_raw 29 new_byte_array 30 new_short_array_raw 31 new_short_array 32 new_int_array_raw 33 new_int_array 34 new_long_array_raw 35 new_long_array 36 new_float_array_raw 37 new_float_array 38 new_double_array_raw 39 new_double_array 40 new_object_array_raw 41 new_object_array 42 new_muldim_array_raw 43 new_muldim_array 44 new_mulnum_array_raw 45 new_mulnum_array 46 new_string_nolen_raw 47 new_string_nolen 48 new_string_raw 49 new_string 50 reserved50 51 reserved51 52 concat_raw 53 concat 54 new_stack_trace_raw 55 new_stack_trace 56 length 57 get_elems_byte 58 get_elems_short 59 get_elems_int 60 get_elems_long 61 get_elems_float 62 get_elems_double 63 get_elem_object 64 set_elem_object 65 get_field_byte 66 get_field_short 67 get_field_int 68 get_field_long 69 get_field_float 70 get_field_double 71 get_field_object 72 set_field_byte 73 set_field_short 74 set_field_int 75 set_field_long 76 set_field_float 77 set_field_double 78 set_field_object 79 get_class_var_byte 80 get_class_var_short 81 get_class_var_int 82 get_class_var_long 83 get_class_var_float 84 get_class_var_double 85 get_class_var_object 86 set_class_var_byte 87 set_class_var_short 88 set_class_var_int 89 set_class_var_long 90 set_class_var_float 91 set_class_var_double 92 set_class_var_object 93 get_pointer 94 set_pointer 95 call_method 96 get_exception 97 set_exception 98 get_ref_count 99 inc_ref_count 100 dec_ref_count 101 enter_scope 102 push_mortal 103 leave_scope 104 remove_mortal 105 is_type 106 is_object_array 107 get_object_basic_type_id 108 get_object_type_dimension 109 weaken 110 isweak 111 unweaken 112 alloc_memory_block_zero 113 free_memory_block 114 get_memory_blocks_count 115 get_type_name_raw 116 get_type_name 117 new_env 118 free_env 119 memory_blocks_count 120 get_chars 121 die 122 new_object_by_name 123 reserved123 124 set_field_byte_by_name 125 set_field_short_by_name 126 set_field_int_by_name 127 set_field_long_by_name 128 set_field_float_by_name 129 set_field_double_by_name 130 set_field_object_by_name 131 get_field_byte_by_name 132 get_field_short_by_name 133 get_field_int_by_name 134 get_field_long_by_name 135 get_field_float_by_name 136 get_field_double_by_name 137 get_field_object_by_name 138 set_class_var_byte_by_name 139 set_class_var_short_by_name 140 set_class_var_int_by_name 141 set_class_var_long_by_name 142 set_class_var_float_by_name 143 set_class_var_double_by_name 144 set_class_var_object_by_name 145 get_class_var_byte_by_name 146 get_class_var_short_by_name 147 get_class_var_int_by_name 148 get_class_var_long_by_name 149 get_class_var_float_by_name 150 get_class_var_double_by_name 151 get_class_var_object_by_name 152 call_class_method_by_name 153 call_instance_method_by_name 154 get_field_string_chars_by_name 155 free_env_prepared 156 dump_raw 157 dump 158 reserved158 159 reserved159 160 get_instance_method_id_static 161 get_bool_object_value 162 cleanup_global_vars 163 make_read_only 164 is_read_only 165 is_array 166 is_string 167 is_numeric_array 168 is_mulnum_array 169 get_elem_size 170 new_array_proto_raw 171 new_array_proto 172 copy_raw 173 copy 174 shorten 175 has_interface 176 reserved176 177 reserved177 178 reserved178 179 print 180 print_stderr 181 init_env, 182 call_init_blocks 183 get_class_id 184 new_stack 185 free_stack 186 reserved186 187 new_memory_env 188 free_memory_env 189 get_memory_blocks_count_env 190 new_memory_stack 191 free_memory_stack 192 get_memory_blocks_count_stack 193 set_command_info_program_name 194 set_command_info_argv 195 get_class_id_by_name 196 strerror 197 new_string_array 198 get_args_stack_length 199 set_args_stack_length 200 dumpc 201 new_pointer_object_raw 202 new_pointer_object 203 new_pointer_object_by_name 204 get_elem_string 205 set_elem_string 206 reserved206 207 reserved207 208 is_class 209 is_pointer_class 210 reserved201 211 reserved211 212 reserved212 213 reserved213 214 reserved214 215 reserved215 216 reserved216 217 reserved217 218 reserved218 219 reserved219 220 reserved220 221 reserved221 222 reserved222 223 reserved223 224 reserved224 225 strerror_string 226 get_basic_type_id_by_name 227 get_field_id_static 228 get_args_stack_length 229 call_instance_method_static_by_name 230 get_method_id 231 strerror_nolen 232 strerror_string_nolen 233 get_compile_type_name_raw 234 get_compile_type_name 235 set_command_info_base_time
      • After
        • 0 class_vars_heap 1 object_header_size 2 object_weaken_backref_head_offset 3 object_ref_count_offset 4 object_basic_type_id_offset 5 object_type_dimension_offset 6 object_flag_offset 7 object_length_offset 8 api 9 allocator
        • 10 new_env_raw 11 free_env_raw 12 isa 13 elem_isa 14 runtime 15 get_basic_type_id 16 get_field_id 17 get_field_offset 18 get_class_var_id 19 get_class_method_id 20 get_instance_method_id 21 new_object_raw 22 new_object 23 new_byte_array_raw 24 new_byte_array 25 new_short_array_raw 26 new_short_array 27 new_int_array_raw 28 new_int_array 29 new_long_array_raw 30 new_long_array 31 new_float_array_raw 32 new_float_array 33 new_double_array_raw 34 new_double_array 35 new_object_array_raw 36 new_object_array 37 new_muldim_array_raw 38 new_muldim_array 39 new_mulnum_array_raw 40 new_mulnum_array 41 new_string_nolen_raw 42 new_string_nolen 43 new_string_raw 44 new_string 45 concat_raw 46 concat 47 new_stack_trace_raw 48 new_stack_trace 49 length 50 get_elems_byte 51 get_elems_short 52 get_elems_int 53 get_elems_long 54 get_elems_float 55 get_elems_double 56 get_elem_object 57 set_elem_object 58 get_field_byte 59 get_field_short 60 get_field_int 61 get_field_long 62 get_field_float 63 get_field_double 64 get_field_object 65 set_field_byte 66 set_field_short 67 set_field_int 68 set_field_long 69 set_field_float 70 set_field_double 71 set_field_object 72 get_class_var_byte 73 get_class_var_short 74 get_class_var_int 75 get_class_var_long 76 get_class_var_float 77 get_class_var_double 78 get_class_var_object 79 set_class_var_byte 80 set_class_var_short 81 set_class_var_int 82 set_class_var_long 83 set_class_var_float 84 set_class_var_double 85 set_class_var_object 86 get_pointer 87 set_pointer 88 call_method 89 get_exception 90 set_exception 91 get_ref_count 92 inc_ref_count 93 dec_ref_count 94 enter_scope 95 push_mortal 96 leave_scope 97 remove_mortal 98 is_type 99 is_object_array
        • 100 get_object_basic_type_id 101 get_object_type_dimension 102 weaken 103 isweak 104 unweaken 105 alloc_memory_block_zero 106 free_memory_block 107 get_memory_blocks_count 108 get_type_name_raw 109 get_type_name 110 new_env 111 free_env 112 memory_blocks_count 113 get_chars 114 die 115 new_object_by_name 116 set_field_byte_by_name 117 set_field_short_by_name 118 set_field_int_by_name 119 set_field_long_by_name 120 set_field_float_by_name 121 set_field_double_by_name 122 set_field_object_by_name 123 get_field_byte_by_name 124 get_field_short_by_name 125 get_field_int_by_name 126 get_field_long_by_name 127 get_field_float_by_name 128 get_field_double_by_name 129 get_field_object_by_name 130 set_class_var_byte_by_name 131 set_class_var_short_by_name 132 set_class_var_int_by_name 133 set_class_var_long_by_name 134 set_class_var_float_by_name 135 set_class_var_double_by_name 136 set_class_var_object_by_name 137 get_class_var_byte_by_name 138 get_class_var_short_by_name 139 get_class_var_int_by_name 140 get_class_var_long_by_name 141 get_class_var_float_by_name 142 get_class_var_double_by_name 143 get_class_var_object_by_name 144 call_class_method_by_name 145 call_instance_method_by_name 146 get_field_string_chars_by_name 147 free_env_prepared 148 dump_raw 149 dump 150 get_instance_method_id_static 151 get_bool_object_value 152 cleanup_global_vars 153 make_read_only 154 is_read_only 155 is_array 156 is_string 157 is_numeric_array 158 is_mulnum_array 159 get_elem_size 160 new_array_proto_raw 161 new_array_proto 162 copy_raw 163 copy 164 shorten 165 has_interface 166 print 167 print_stderr 168 init_env 169 call_init_blocks 170 get_class_id 171 new_stack 172 free_stack 173 new_memory_env 174 free_memory_env 175 get_memory_blocks_count_env 176 new_memory_stack 177 free_memory_stack 178 get_memory_blocks_count_stack 179 set_command_info_program_name 180 set_command_info_argv 181 get_class_id_by_name 182 strerror 183 new_string_array 184 get_args_stack_length 185 set_args_stack_length 186 dumpc 187 new_pointer_object_raw 188 new_pointer_object 189 new_pointer_object_by_name 190 get_elem_string 191 set_elem_string 192 is_class 193 is_pointer_class 194 strerror_string 195 get_basic_type_id_by_name 196 get_field_id_static 197 items 198 call_instance_method_static_by_name 199 get_method_id 200 strerror_nolen 201 strerror_string_nolen 202 get_compile_type_name_raw 203 get_compile_type_name 204 set_command_info_base_time
    • Changed the ID of Runtime Native APIs. This breaks binary compatibility. This maybe the last ID changes(0 - 83) of Runtime Native APIs.
      • Before
        • 0 new_object 1 free_object 2 reserved2 3 get_opcodes 4 get_opcodes_length 5 get_runtime_codes 6 get_runtime_codes_length 7 get_classes_length 8 get_constant_string_id 9 get_constant_string_value 10 get_name 11 get_basic_type_id_by_name 12 get_basic_type_name_id 13 get_basic_type_class_id 14 get_basic_type_category 15 get_type_basic_type_id 16 get_type_dimension 17 get_type_stack_length 18 get_type_is_object 19 get_type_is_ref 20 get_class_id_by_name 21 get_class_name_id 22 get_class_module_rel_file_id 23 get_class_module_dir_id 24 get_class_is_anon 25 get_class_fields_base_id 26 get_class_fields_length 27 get_class_methods_base_id 28 get_class_methods_length 29 get_class_class_vars_base_id 30 get_class_class_vars_length 31 get_class_anon_methods_base_id 32 get_class_anon_methods_length 33 get_class_var_id_by_index 34 get_class_var_id_by_name 35 get_class_var_name_id 36 reserved36 37 get_class_var_class_id 38 get_field_id_by_index 39 get_field_id_by_name 40 get_field_name_id 41 get_field_type_id 42 reserved42 43 get_field_class_id 44 get_method_id_by_index 45 get_method_id_by_name 46 get_method_name_id 47 reserved47 48 get_method_return_type_id 49 get_method_class_id 50 get_method_is_class_method 51 get_method_is_anon 52 get_method_is_native 53 get_method_is_precompile 54 get_method_call_stack_byte_vars_length 55 get_method_call_stack_short_vars_length 56 get_method_call_stack_int_vars_length 57 get_method_call_stack_long_vars_length 58 get_method_call_stack_float_vars_length 59 get_method_call_stack_double_vars_length 60 get_method_call_stack_object_vars_length 61 get_method_call_stack_ref_vars_length 62 get_method_mortal_stack_length 63 get_method_opcodes_base_id 64 get_method_opcodes_length 65 get_method_args_base_id 66 get_method_args_length 67 get_arg_type_id 68 get_anon_method_method_id 69 get_native_method_address 70 set_native_method_address 71 get_precompile_method_address 72 set_precompile_method_address 73 object_header_size 74 object_weaken_backref_head_offset 75 object_ref_count_offset 76 object_basic_type_id_offset 77 object_type_dimension_offset 78 object_flag_offset 79 object_length_offset 80 get_allocator 81 build 82 get_class_parent_class_id 83 get_method_required_args_length 84 get_class_is_pointer 85 get_method_is_enum 86 get_type_flag 87 is_object_type
      • After
        • 0 new_object 1 free_object 2 get_opcodes 3 get_opcodes_length 4 get_runtime_codes 5 get_runtime_codes_length 6 get_classes_length 7 get_constant_string_id 8 get_constant_string_value 9 get_name 10 get_basic_type_id_by_name 11 get_basic_type_name_id 12 get_basic_type_class_id 13 get_basic_type_category 14 get_type_basic_type_id 15 get_type_dimension 16 get_type_stack_length 17 get_type_is_object 18 get_type_is_ref 19 get_class_id_by_name 20 get_class_name_id 21 get_class_module_rel_file_id 22 get_class_module_dir_id 23 get_class_is_anon 24 get_class_fields_base_id 25 get_class_fields_length 26 get_class_methods_base_id 27 get_class_methods_length 28 get_class_class_vars_base_id 29 get_class_class_vars_length 30 get_class_anon_methods_base_id 31 get_class_anon_methods_length 32 get_class_var_id_by_index 33 get_class_var_id_by_name 34 get_class_var_name_id 35 get_class_var_class_id 36 get_field_id_by_index 37 get_field_id_by_name 38 get_field_name_id 39 get_field_type_id 40 get_field_class_id 41 get_method_id_by_index 42 get_method_id_by_name 43 get_method_name_id 44 get_method_return_type_id 45 get_method_class_id 46 get_method_is_class_method 47 get_method_is_anon 48 get_method_is_native 49 get_method_is_precompile 50 get_method_call_stack_byte_vars_length 51 get_method_call_stack_short_vars_length 52 get_method_call_stack_int_vars_length 53 get_method_call_stack_long_vars_length 54 get_method_call_stack_float_vars_length 55 get_method_call_stack_double_vars_length 56 get_method_call_stack_object_vars_length 57 get_method_call_stack_ref_vars_length 58 get_method_mortal_stack_length 59 get_method_opcodes_base_id 60 get_method_opcodes_length 61 get_method_args_base_id 62 get_method_args_length 63 get_arg_type_id 64 get_anon_method_method_id 65 get_native_method_address 66 set_native_method_address 67 get_precompile_method_address 68 set_precompile_method_address 69 object_header_size 70 object_weaken_backref_head_offset 71 object_ref_count_offset 72 object_basic_type_id_offset 73 object_type_dimension_offset 74 object_flag_offset 75 object_length_offset 76 get_allocator 77 build 78 get_class_parent_class_id 79 get_method_required_args_length 80 get_class_is_pointer 81 get_method_is_enum 82 get_type_flag 83 is_object_type

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
SPVM Builder Compiler
SPVM Compiler Utilities
Configurations of Compile and Link of Native Sources
Configurations of creating excutable files.
SPVM Builder Environment
Creating Executable File
Library Information
Link Information
Object file information
Resourceurations of Compile and Link of Native Sources
SPVM Builder Runtime
SPVM Builder Stack
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
SPVM Global Instance for Perl Interpreter
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/Dist.pm

Examples