Changes for version 0.990137 - 2026-02-26
- New Features
- Add after_link_cbs field and add_after_link_cb method in SPVM::Builder::Config to support callbacks after linking.
- Add clear_system_settings method to SPVM::Builder::Config to clear default environment settings.
- SPVM::Builder::Config: Add warn_ccflags, language_ccflags, compiler_ccflags, runtime_ccflags, ld_ccflags, warn_ldflags and debug_ldflags fields.
- SPVM::Builder::Config: Add build_option method.
- SPVM::Builder::Config: Add long_option_sep field.
- SPVM::Builder::Config: Add lib_dir_option_name field and refactor library directory option generation using build_option.
- Add dynamic_lib_ext, static_lib_ext and exe_ext fields to SPVM::Builder::Config.
- Add lib_prefix field to SPVM::Builder::Config.
- Add lib_option_suffix field to SPVM::Builder::Config.
- Incompatible Change
- SPVM::Builder::Config: Remove mingw_ccflags field for backward compatibility and move its Windows settings to runtime_ccflags.
- SPVM::Builder::Config: Remove new_gnu99 and new_gnu11 method, because Enforce C99 as the default C language standard for the entire SPVM ecosystem to improve portability and fix the actual standard from GNU99 to C99. Add a note for Linux users: If some functions like lstat are not found when using the C99 standard, insert the following code at the beginning of the C source file:
- #ifdef __linux__ /* Enable X/Open System Interfaces (SUSv4) functions and POSIX.1-2008 standard functions */ #define _XOPEN_SOURCE 700
- /* Enable BSD and System V extensions */ #define _DEFAULT_SOURCE
- #endif
- #ifdef __linux__ /* Enable X/Open System Interfaces (SUSv4) functions and POSIX.1-2008 standard functions */ #define _XOPEN_SOURCE 700
- Drop support for 32-bit architectures. SPVM now strictly requires a 64-bit environment (pointer size of 8 bytes).
- Reasons: 1. To fully comply with the C99 floating-point specifications and ensure consistent results (avoiding non-deterministic behavior caused by x87 80-bit internal precision on 32-bit x86).
- 2. To support efficient coroutine (goroutine-like) stack management. A 64-bit virtual address space is essential for allocating and optimizing stack sizes for a large number of coroutines using mmap.
- Changes
- SPVM::Builder::Config: Add option_sep field to support different separators for the -std option and update documentation.
- Update spvmdist to use the new_c99 method by default in the generated native class configuration files to enforce the C99 standard for new modules.
Documentation
Executing SPVM programs
Generating Excutable File
Class Dependencies Analyzer
Generating SPVM Distribution
A tool to list non-core CPAN dependencies recursively.
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 Builder
Utility for Analyzing Class Dependencies
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
Script Information
Builder Utilities
Builder Utility APIs
A byte Value as An Object
Dynamic byte Arrays
Callback interface
A Callback Interface for grep Method
A Callback Interface for grep_byte Method
A Callback Interface for grep_double Method
A Callback Interface for grep_float Method
A Callback Interface for grep_int Method
A Callback Interface for grep_long Method
A Callback Interface for grep_short Method
A Callback for The map Method
A Callback for The map_expand Method
Information about a Caller
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
Countable Interface
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
SPVM Archive
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
Field Not Specified Errors
Method Call Not Permitted Error
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
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
List with O(1) deque
SPVM information
Executing Callback at End of Scope
A short Value as An Object
Dynamic short Arrays
Sorting Functions
String Buffers
Dynamic string array
Stringable Interface
Interface Type for Stringing Callback
Mutex
Provides
in lib/SPVM/Builder/Config/Exe/MSVC.pm
in lib/SPVM/Builder/SPVMArchive.pm
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