Changes for version 0.989023 - 2023-07-12

  • New Features
    • The following native APIs were added.
      • void* (*get_class_var_string)(void* env, void* stack, void* class_var);
      • void (*set_class_var_string)(void* env, void* stack, void* class_var, void* value);
      • void* (*get_class_var_string_by_name)(void* env, void* stack, const void* basic_type_name, const void* class_var_name, int32_t** error_id, const void* func_name, const void* file, int32_t line);
      • void (*set_class_var_string_by_name)(void* env, void* stack, const void* basic_type_name, const void* class_var_name, void* value, int32_t** error_id, const void* func_name, const void* file, int32_t line);
      • void* (*get_field_string)(void* env, void* stack, void* object, void* field);
      • void (*set_field_string)(void* env, void* stack, void* object, void* field, void* value);
      • void* (*get_field_string_by_name)(void* env, void* stack, void* object, const void* field_name, int32_t** error_id, const void* func_name, const void* file, int32_t line);
      • void (*set_field_string_by_name)(void* env, void* stack, void* object, const void* field_name, void* value, int32_t** error_id, const void* func_name, const void* file, int32_t line);
    • The following methods were added to the Env class.
      • method get_exception : string (); method set_exception : void ($exception : string);
  • Incompatibe Changes
    • The Native API IDs were reordered.
      • 0 runtime 1 api 2 new_env 3 free_env 4 call_init_methods 5 set_command_info_program_name 6 set_command_info_argv 7 set_command_info_base_time 8 destroy_class_vars 9 items 10 get_object_basic_type 11 get_object_basic_type_id 12 get_object_basic_type_name 13 get_object_type_dimension 14 get_basic_type 15 get_basic_type_by_name 16 get_basic_type_by_id 17 get_basic_type_id 18 get_basic_type_id_by_name 19 get_class_var 20 get_class_var_byte 21 get_class_var_short 22 get_class_var_int 23 get_class_var_long 24 get_class_var_float 25 get_class_var_double 26 get_class_var_object 27 get_class_var_string 28 set_class_var_byte 29 set_class_var_short 30 set_class_var_int 31 set_class_var_long 32 set_class_var_float 33 set_class_var_double 34 set_class_var_object 35 set_class_var_string 36 get_class_var_object_address 37 get_class_var_byte_by_name 38 get_class_var_short_by_name 39 get_class_var_int_by_name 40 get_class_var_long_by_name 41 get_class_var_float_by_name 42 get_class_var_double_by_name 43 get_class_var_object_by_name 44 get_class_var_string_by_name 45 set_class_var_byte_by_name 46 set_class_var_short_by_name 47 set_class_var_int_by_name 48 set_class_var_long_by_name 49 set_class_var_float_by_name 50 set_class_var_double_by_name 51 set_class_var_object_by_name 52 set_class_var_string_by_name 53 get_field 54 get_field_static 55 get_field_byte 56 get_field_short 57 get_field_int 58 get_field_long 59 get_field_float 60 get_field_double 61 get_field_object 62 get_field_string 63 set_field_byte 64 set_field_short 65 set_field_int 66 set_field_long 67 set_field_float 68 set_field_double 69 set_field_object 70 set_field_string 71 get_field_byte_by_name 72 get_field_short_by_name 73 get_field_int_by_name 74 get_field_long_by_name 75 get_field_float_by_name 76 get_field_double_by_name 77 get_field_object_by_name 78 get_field_string_by_name 79 set_field_byte_by_name 80 set_field_short_by_name 81 set_field_int_by_name 82 set_field_long_by_name 83 set_field_float_by_name 84 set_field_double_by_name 85 set_field_object_by_name 86 set_field_string_by_name 87 get_field_string_chars_by_name 88 get_method 89 get_class_method 90 get_instance_method_static 91 get_instance_method 92 call_method_no_mortal 93 call_method 94 call_class_method_by_name 95 call_instance_method_static_by_name 96 call_instance_method_by_name 97 new_object_no_mortal 98 new_object 99 new_object_by_name 100 new_pointer_object_no_mortal 101 new_pointer_object 102 new_pointer_object_by_name 103 get_pointer 104 set_pointer 105 new_string_nolen_no_mortal 106 new_string_nolen 107 new_string_no_mortal 108 new_string 109 new_byte_array_no_mortal 110 new_byte_array 111 new_short_array_no_mortal 112 new_short_array 113 new_int_array_no_mortal 114 new_int_array 115 new_long_array_no_mortal 116 new_long_array 117 new_float_array_no_mortal 118 new_float_array 119 new_double_array_no_mortal 120 new_double_array 121 new_object_array_no_mortal 122 new_object_array 123 new_object_array_by_name 124 new_string_array 125 new_muldim_array_no_mortal 126 new_muldim_array 127 new_muldim_array_by_name 128 new_mulnum_array_no_mortal 129 new_mulnum_array 130 new_mulnum_array_by_name 131 new_array_proto_no_mortal 132 new_array_proto 133 length 134 get_elems_byte 135 get_elems_short 136 get_elems_int 137 get_elems_long 138 get_elems_float 139 get_elems_double 140 get_elem_object 141 get_elem_string 142 set_elem_object 143 set_elem_string 144 get_chars 145 get_bool_object_value 146 concat_no_mortal 147 concat 148 shorten 149 make_read_only 150 is_read_only 151 print 152 print_stderr 153 dump_no_mortal 154 dump 155 dumpc 156 copy_no_mortal 157 copy 158 get_spvm_version_string 159 get_spvm_version_number 160 get_version_string 161 get_version_number 162 die 163 get_exception 164 set_exception 165 new_stack_trace_no_mortal 166 new_stack_trace 167 is_string 168 is_class 169 is_pointer_class 170 is_array 171 is_object_array 172 is_numeric_array 173 is_mulnum_array 174 isa 175 isa_by_name 176 is_type 177 is_type_by_name 178 elem_isa 179 get_elem_size 180 get_type_name_no_mortal 181 get_type_name 182 get_compile_type_name_no_mortal 183 get_compile_type_name 184 enter_scope 185 leave_scope 186 push_mortal 187 remove_mortal 188 weaken 189 isweak 190 unweaken 191 strerror_string 192 strerror_string_nolen 193 strerror 194 strerror_nolen 195 allocator 196 new_memory_env 197 free_memory_env 198 get_memory_blocks_count_env 199 new_memory_stack 200 free_memory_stack 201 get_memory_blocks_count_stack 202 new_stack 203 free_stack 204 get_ref_count 205 inc_ref_count 206 dec_ref_count
    • The following native APIs were removed.
      • int32_t (*has_interface)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, void* interface_basic_type);
      • int32_t (*has_interface_by_name)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* basic_type_name);
      • void* (*alloc_memory_block_zero)(SPVM_ENV* env, size_t size);
      • void (*free_memory_block)(SPVM_ENV* env, void* block);
      • int32_t (*get_memory_blocks_count)(SPVM_ENV* env);
      • void* memory_blocks_count;
    • The following native APIs were renamed.
      • int32_t (*call_init_blocks)(SPVM_ENV* env, SPVM_VALUE* stack);
      • int32_t (*call_init_methods)(SPVM_ENV* env, SPVM_VALUE* stack);
      • void (*cleanup_global_vars)(SPVM_ENV* env, SPVM_VALUE* stack);
      • void (*destroy_class_vars)(SPVM_ENV* env, SPVM_VALUE* stack);
      • void* (*new_object_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type);
      • void* (*new_object_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type);
      • void* (*new_byte_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_byte_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_short_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_short_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_int_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_int_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_long_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_long_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_float_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_float_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_double_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_double_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t length);
      • void* (*new_object_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type, int32_t length);
      • void* (*new_object_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type, int32_t length);
      • void* (*new_muldim_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type, int32_t element_dimension, int32_t length);
      • void* (*new_muldim_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type, int32_t element_dimension, int32_t length);
      • void* (*new_mulnum_array_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type, int32_t length);
      • void* (*new_mulnum_array_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type, int32_t length);
      • void* (*new_string_nolen_raw)(SPVM_ENV* env, SPVM_VALUE* stack, const char* bytes);
      • void* (*new_string_nolen_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, const char* bytes);
      • void* (*new_string_raw)(SPVM_ENV* env, SPVM_VALUE* stack, const char* bytes, int32_t length);
      • void* (*new_string_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, const char* bytes, int32_t length);
      • void* (*concat_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* string1, void* string2);
      • void* (*concat_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* string1, void* string2);
      • void* (*new_stack_trace_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* exception, void* method, int32_t line);
      • void* (*new_stack_trace_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* exception, void* method, int32_t line);
      • int32_t (*call_method_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* method, int32_t items);
      • int32_t (*call_method_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* method, int32_t items);
      • void* (*get_type_name_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* object);
      • void* (*get_type_name_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* object);
      • void* (*dump_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* object);
      • void* (*dump_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* object);
      • void* (*new_array_proto_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* array, int32_t length);
      • void* (*new_array_proto_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* array, int32_t length);
      • void* (*copy_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* object);
      • void* (*copy_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* object);
      • void* (*new_pointer_object_raw)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type, void* pointer);
      • void* (*new_pointer_object_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, void* basic_type, void* pointer);
      • void* (*get_compile_type_name_raw)(SPVM_ENV* env, SPVM_VALUE* stack, const char* basic_type_name, int32_t dimension, int32_t flag);
      • void* (*get_compile_type_name_no_mortal)(SPVM_ENV* env, SPVM_VALUE* stack, const char* basic_type_name, int32_t dimension, int32_t flag);
    • The following methods in the Env class were renamed.
      • method build_stack : Stack ();
      • method new_stack : Stack ();

Documentation

Generating Excutable File
Generating SPVM Distribution

Modules

SPVM Language
Address
Array Utilities
SPVM object
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
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
Allocator Native APIs
Basic Type Native APIs
Class Variable Native APIs
SPVM Compiler Native APIs
Module File Native APIs
String Buffer Native APIs
Document of Native Module
How to write the resource class
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
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