Changes for version 0.990034 - 2024-01-01
- Changes
- Changes the order of file of MANIFEST.skip and .gitignore generated by spvmdist.
- Allow right operand of == operater undef in the case that the left operand is reference type.
- Allow right operand of != operater undef in the case that the left operand is reference type.
- Bug Fix
- Fix a bug that Format->strpinf("%s", "") does not work well.
- Changes
- Format->strpinf("%s", undef) is treaded as Format->strpinf("%s", "");
- Compilation Error Messages Improvement
- Improve a compilation error massage.
- Before
- The types other than the numeric type and the object type cannnot be used in the optional argument.
- After
- The optional argument %s is not allowed. The type must be a numeric type, an object type, or a numeric reference type.
- Before
- Improve a compilation error massage.
- Before
- Arguments after optional arguments must be optional arguments.
- After
- Optional arguments must be placed at the end of the arguments.
- Before
- New Features
- Allow optional argument in numeric reference type.
- method foo ($ref : int* = undef);
- Allow optional argument in multi-numeric reference type.
- method foo ($ref : Complex_2d* = undef);
- Allow numeric comparison operator a referene type == undef
- Allow numeric comparison operator a referene type != undef
- Allow optional argument in numeric reference type.
- Incompatible Changes
- undef can assign to a reference type. This means you must check the reference is NULL in native classes.
- undef can cast to a reference type. This means you must check the reference is NULL in native classes.
- Internal Changes
- SPVM_IMPLEMENT_GET_DEREF_BYTE changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_DEREF_SHORT changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_DEREF_INT changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_DEREF_LONG changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_DEREF_FLOAT changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_DEREF_DOUBLE changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_DEREF_BYTE changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_DEREF_SHORT changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_DEREF_INT changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_DEREF_LONG changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_DEREF_FLOAT changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_DEREF_DOUBLE changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_BYTE changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_SHORT changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_INT changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_LONG changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_FLOAT changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_DOUBLE changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_BYTE changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_SHORT changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_INT changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_LONG changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_FLOAT changes from macro function to inline function.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_DOUBLE changes from macro function to inline function.
- SPVM_IMPLEMENT_GET_DEREF_BYTE throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_DEREF_SHORT throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_DEREF_INT throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_DEREF_LONG throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_DEREF_FLOAT throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_DEREF_DOUBLE throws an exception when input is undef.
- SPVM_IMPLEMENT_SET_DEREF_BYTE throws an exception when output is undef.
- SPVM_IMPLEMENT_SET_DEREF_SHORT throws an exception when output is undef.
- SPVM_IMPLEMENT_SET_DEREF_INT throws an exception when output is undef.
- SPVM_IMPLEMENT_SET_DEREF_LONG throws an exception when output is undef.
- SPVM_IMPLEMENT_SET_DEREF_FLOAT throws an exception when output is undef.
- SPVM_IMPLEMENT_SET_DEREF_DOUBLE throws an exception when output is undef.
- SPVM_IMPLEMENT_DEREF_MULNUM_BYTE throws an exception when input is undef.
- SPVM_IMPLEMENT_DEREF_MULNUM_SHORT throws an exception when input is undef.
- SPVM_IMPLEMENT_DEREF_MULNUM_INT throws an exception when input is undef.
- SPVM_IMPLEMENT_DEREF_MULNUM_LONG throws an exception when input is undef.
- SPVM_IMPLEMENT_DEREF_MULNUM_FLOAT throws an exception when input is undef.
- SPVM_IMPLEMENT_DEREF_MULNUM_DOUBLE throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_BYTE throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_SHORT throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_INT throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_LONG throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_FLOAT throws an exception when input is undef.
- SPVM_IMPLEMENT_GET_MULNUM_FIELD_DEREF_DOUBLE throws an exception when input is undef.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_BYTE throws an exception when input is undef.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_SHORT throws an exception when input is undef.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_INT throws an exception when input is undef.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_LONG throws an exception when input is undef.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_FLOAT throws an exception when input is undef.
- SPVM_IMPLEMENT_SET_MULNUM_FIELD_DEREF_DOUBLE throws an exception when input is undef.
- Add SPVM_OPCODE_C_ID_MOVE_REF_UNDEF opcode.
- Rename SPVM_OPCODE_C_ID_IS_UNDEF to SPVM_OPCODE_C_ID_IS_UNDEF_OBJECT.
- Rename SPVM_OPCODE_C_ID_IS_NOT_UNDEF to SPVM_OPCODE_C_ID_IS_NOT_UNDEF_OBJECT.
- Add SPVM_OPCODE_C_ID_IS_UNDEF_REF.
- Add SPVM_OPCODE_C_ID_IS_NOT_UNDEF_REF.
- Improve a compilation error massage.
Documentation
Executing SPVM programs
Generating Excutable File
Generating SPVM Distribution
Modules
The SPVM Language
Address
Array Utilities
SPVM object
SPVM Array
SPVM Class
SPVM string
A Boolean value as An Object
Build Dynamic Libraries for SPVM Distribution
Builder APIs
Compilation and Link of Native Class
Compiler Information
Config for Compiling and Linking Native Classes
Excutable File Config
Config Information
Config Builder
Creating Executable File
Library Information for A Linker
Linker Information
Basic Type Native APIs
Class File Native APIs
Compiler Native APIs
Runtime Environment
Method Native APIs
Runtime
Runtime Stack
Object File Information
Resource
Builder Utilities
Builder Utility APIs
A byte Value as An Object
Dynamic byte Arrays
Callback interface
A Callback for The grep Method
A Callback for The map Method
A Callback for The map_expand Method
Interface Type to Clone Object
Interface Type for the Callback to Clone a Object
Command Line Information
Comparable Interface
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
double Complex Type
float Complex Type
SPVM Documents
Environment Variables
SPVM Language Specification
Classes in the SPVM Language
Exception Handling in the SPVM Language
Garbage Collection in the SPVM Language
Operators in the SPVM Language
Statements in the SPVM Language
Syntax Parsing in the SPVM Language
System Setting in the SPVM Language
Tokenization in the SPVM Language
Types in the SPVM Language
SPVM Standard Modules
Native APIs
Allocator Native APIs
Argument Native APIs
Basic Type Native APIs
Class File Native APIs
Class Variable Native APIs
Compiler Native APIs
Field Native APIs
Internal Native APIs
Method Native APIs
Mutex Native APIs
Runtime Native APIs
String Buffer Native APIs
Type Native APIs
Native Classes
Resource
A double value as An Object
Dynamic double Arrays
EqualityCheckable Interface
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
Compilation Errors
Not Supported Error
System Error
Invalid UTF8 Errors
SPVM Exchange API
Class Object
Error Code
A float value as An Object
Dynamic float Arrays
SPVM Starndard Functions
For Only Resource Tests
Format Utilities
SPVM Global Instance
Hash (Associative Array)
Hash entry
Immutable byte Array
Immutable double Array
Immutable float Array
Immutable int Array
Immutable long Array
Immutable short Array
Immutable string array
An int value as An Object
Dynamic int Arrays
Dynamic Object Array
A long value as An Object
Dynamic long Arrays
Getting the current native environment, stack, runtime, compiler.
Native APIs
Information of Arguments
Information of Basic Types
Information of Class Files
Information of Class Variables
Native::Compiler
Constant Values in Native APIs
Runtime Environment
Information of Fields
Information of Methods
Method Call
Native::Runtime
Call Native::Stack
Pack and Unpack Operations
A Specifier for a pack/unpack Template.
Point
Point 3D
Executing Callback at End of Scope
A short Value as An Object
Dynamic short Arrays
Sorting Functions
String Buffers
Dynamic string array
A Interface Type to Stringify a Object
Interface Type for Stringing Callback
Mutex
Provides
in lib/SPVM/Dist.pm
Examples
- 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