SPVM 0.9667 is released
Tags: per, spvm, programming, beginners
Published: 2022-12-16 22:49:25

<a href="https://metacpan.org/pod/SPVM">SPVM</a> 0.9667 is released.

## New Features and Enhancement

<a href="https://github.com/yuki-kimoto/SPVM/blob/master/Changes">Changes</a>

```
0.9667 2022-12-17
  [New Features]
    * Added the following native API.
    
      int32_t (*get_field_id_static)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* field_name);
  [Changes]
    * Getting and setting field in precompiled modules use env->get_field_id_static instead of env->get_field_id.
  [Incompatible Changes]
    * Renamed the following runtime native APIs
      -  void* object_header_byte_size;
      +  void* object_header_size;
    
    * Renamed the following native APIs
      -  void* object_header_byte_size;
      +  void* object_header_size;
      
      -  int32_t (*get_elem_byte_size)(SPVM_ENV* env, SPVM_VALUE* stack, void* array);
      +  int32_t (*get_elem_size)(SPVM_ENV* env, SPVM_VALUE* stack, void* array);
    * Changed the definitions of the following native APIs.
      -  int32_t (*get_basic_type_id)(SPVM_ENV* env, const char* basic_type_name);
      -  int32_t (*get_field_id)(SPVM_ENV* env, void* object, const char* field_name);
      -  int32_t (*get_field_offset)(SPVM_ENV* env, int32_t field_id);
      -  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);

      +  int32_t (*get_basic_type_id)(SPVM_ENV* env, SPVM_VALUE* stack, const char* basic_type_name);
      +  int32_t (*get_field_id)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* field_name);
      +  int32_t (*get_field_offset)(SPVM_ENV* env, SPVM_VALUE* stack, int32_t field_id);
      +  int32_t (*get_class_var_id)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* class_var_name);
      +  int32_t (*get_class_method_id)(SPVM_ENV* env, SPVM_VALUE* stack, const char* class_name, const char* method_name);
      +  int32_t (*get_instance_method_id)(SPVM_ENV* env, SPVM_VALUE* stack, void* object, const char* method_name);
  [Runtime Exception Message Improvement]
    * Improved exception messages.
      [After]
      "The %s field is not found"
      "The %s class method in the %s class is not found"
      "The object must be defined"
      "The type dimension of the object must be equal to 0"
      "The %s instance method is not found in the %s class or its super class"
      "The %s class is not loaded"
      "The type dimension of the object must be equal to 0"
      "The %s field is not found in the %s class or its super class"
      "The %s class variable in the %s class is not found"
```

## For Programming Beginners

### What Is SPVM?

SPVM is a static typed programming language that can be installed from Perl/CPAN.

### How potential dose SPVM have?

Growth is expected in the fields of Bio Tech, AI/ML, Apple/iPhone/iPad Apps, Google/Android Apps, IoT Device, Connected Car, Smart Device, Smart Home, etc.

This is because SPVM can produce an executable file that supports cross platforms and make easy to calculate arrays and bind C/C++