0.0307 2018-02-01
- fix print function bug that print line break.
- remove say relative functions. say, say_xxx, say_xxx_err
- remove print relative functions. print_xxx, print_xxx_err
- rename print_err to warn
- sub definition is changed. sub NAME : RETURN_TYPE ($arg1 : ARG_TYPE1, ...) { }
0.0306 2018-01-23
- remove SPVM::Debug
- croak stack trace is on by default
0.0305 2018-01-20
- fix MANIFEST
- improve exception logic
0.0304 2018-01-18
- add jit code in test(jit-spvm.t)
0.0303 2018-01-03
- fix reference count bug in loop
- support array initialization in any place.
new int[] { 1, 2, 3} is used in any place.
- add temporary JIT code for preparation for JIT compile
- fix assign excecution order
- fix type inference bug
0.0302 2017-12-07
- add eval block stack max length
- fix next statement bug
- operation code become flexible 1 byte to fixed 64 byte for preparation of JIT compile
0.0301 2017-11-20
- support relative name subroutine call
sum(0, 1);
At first, current package is searched, next core function
- rename std package to CORE package
- package variable must be start upper case
- lexical variable must be start lower case
- support relative name package variable
0.03 2017-11-17
- SPVM VM change Stack Based VM to Register Based VM
This change slow down performance temporary
- fix bug that my variable type can't be detected.
- fix my var scope bug
- fix negate operator bug
- add complement operator ~
but, this is prepared for JIT compile
0.0284 2017-10-30
- simplify SPVM internal to implement JIT compile
0.0283 2017-10-23
- cleanup SPVM modules
- implement get_type_id correctory
- change array init syntax
before: my $values : int[] = [1, 2, 3];
after : my $values = new int[] {1, 2, 3};
0.0282 2017-10-23
- support package variable
0.0281 2017-10-19
- remove SPVM::new_object
- remove SPVM::Object::Package::set
- remove SPVM::Object::Package::get
- can call method directory from SPVM object
my $object = SPVM::TestCase::new();
$object->set_x_byte($BYTE_MAX);
$object->set_x_short($SHORT_MAX);
- remove Package->name syntax because Perl subroutine call correspoing to SPVM subroutine call completely
- remove relative name subroutine call because future keyword adding don't break backward compatible
- fix method call bug
- add getter and setter syntax
set x, y;
get x, y;
- field become private
- new keyword become private
0.0280 2017-10-13
- add String type again
- add Native API new_string
- add Native API get_string_length
- add Native API get_string_chars
0.0279 2017-10-12
- fix catch exception bug that runtime exception can't be cached
0.0278 2017-10-11
- throw exception when get array length of undef value
- SPVM::new_xxx_array return undef if argument is undef
- allow SPVM::call_sub undef argument
- add std::say_err ($value : byte[]) : native void;
- add std::say_err_byte ($value : byte) : native void;
- add std::say_err_short ($value : short) : native void;
- add std::say_err_int ($value : int) : native void;
- add std::say_err_long ($value : long) : native void;
- add std::say_err_float ($value : float) : native void;
- add std::say_err_double ($value : double) : native void;
- add std::print_err ($value : byte[]) : native void;
- add std::print_err_byte ($value : byte) : native void;
- add std::print_err_short ($value : short) : native void;
- add std::print_err_int ($value : int) : native void;
- add std::print_err_long ($value : long) : native void;
- add std::print_err_float ($value : float) : native void;
- add std::print_err_double ($value : double) : native void;
- add std::time()
- add Array::equals_byte()
- add Array::equals_short()
- add Array::equals_int()
- add Array::equals_long()
- add Array::equals_float()
- add Array::equals_double()
0.0277 2017-10-10
- allow resorved word for subroutine name
- add Arrays package
- add Arrays::copy_of_byte
- add Arrays::copy_of_short
- add Arrays::copy_of_int
- add Arrays::copy_of_long
- add Arrays::copy_of_float
- add Arrays::copy_of_double
- fix native subroutine exception bugs
- array initialization allow all terms, and need type declaration
0.0276 2017-10-05
- rename back to_array to get_elements
0.0275 2017-10-04
- fix Math.spvm loading bug
0.0274 2017-10-04
- add package name check
- fix enum call bug
0.0273 2017-10-03
- support octal literal
- support binary literal
0.0272 2017-09-27
- add Math::tan function
- add Math::asin function
- add Math::acos function
- add Math::atan function
- add Math::to_radians function
- add Byte package
- add Short package
- add Integer package
- add Long package
- add Float package
- add Double package
- fix call native long function bug
- change byte constatant specifier b to y
124b -> 124y
- a, b, c, d, e, f become hex character.
0.0271 2017-09-23
- add Math::cos function
- add Math::sin function
0.0270 2017-09-22
- fix 0 length string bug
0.0269 2017-09-21
- add SPVM::Object::Array::Short::set_data()
- add SPVM::Object::Array::Int::set_data()
- add SPVM::Object::Array::Long::set_data()
- add SPVM::Object::Array::Float::set_data()
- add SPVM::Object::Array::Double::set_data()
- add SPVM::Object::Array::Short::to_data()
- add SPVM::Object::Array::Int::to_data()
- add SPVM::Object::Array::Long::to_data()
- add SPVM::Object::Array::Float::to_data()
- add SPVM::Object::Array::Double::to_data()
- add SPVM::new_short_array_data()
- add SPVM::new_int_array_data()
- add SPVM::new_long_array_data()
- add SPVM::new_float_array_data()
- add SPVM::new_double_array_data()
- add SPVM::Object::Array::Byte::set_elements_range()
- add SPVM::Object::Array::Short::set_elements_range()
- add SPVM::Object::Array::Int::set_elements_range()
- add SPVM::Object::Array::Long::set_elements_range()
- add SPVM::Object::Array::Float::set_elements_range()
- add SPVM::Object::Array::Double::set_elements_range()
- add SPVM::Object::Array::Byte::set_data_range()
- add SPVM::Object::Array::Short::set_data_range()
- add SPVM::Object::Array::Int::set_data_range()
- add SPVM::Object::Array::Long::set_data_range()
- add SPVM::Object::Array::Float::set_data_range()
- add SPVM::Object::Array::Double::set_data_range()
- add SPVM::Object::Array::Byte::to_array_range()
- add SPVM::Object::Array::Short::to_array_range()
- add SPVM::Object::Array::Int::to_array_range()
- add SPVM::Object::Array::Long::to_array_range()
- add SPVM::Object::Array::Float::to_array_range()
- add SPVM::Object::Array::Double::to_array_range()
- add SPVM::Object::Array::Byte::to_data_range()
- add SPVM::Object::Array::Short::to_data_range()
- add SPVM::Object::Array::Int::to_data_range()
- add SPVM::Object::Array::Long::to_data_range()
- add SPVM::Object::Array::Float::to_data_range()
- add SPVM::Object::Array::Double::to_data_range()
0.0268 2017-09-19
- remove string type. SPVM string become byte[].
- SPVM::new_string_bytes renamed to SPVM::new_byte_array_data and return SPVM::Array::Byte object
- SPVM::new_string renamed to SPVM::new_byte_array_string and return SPVM::Array::Byte object
- rename get_elements to to_array
- rename get_string to to_string
- rename get_data to to_data
0.0267 2017-09-18
- add .= operator
0.0266 2017-09-16
- fix bug that empty string is not used
- rename SPVM::new_string_raw to SPVM::new_string_bytes
- implement . operator to concat string
- renmae println to say
0.0265 2017-09-13
- fix clang duplicate symbol bug
0.0264 2017-09-12
- rename Inline to Extension
0.0263 2017-09-12
- add native INC config
- add native LIBS config
- add special assign syntax
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=
>>>=
- fix CBuilder config bug
0.0262 2017-09-12
- fix make dependency
0.0261 2017-09-11
- remove inline syntax
__INLINE__
__NATIVE__
- add new runtime compile syntax
Foo.spvm
Foo.native/Foo.c
Foo.native/Foo.config
0.0260 2017-09-08
- fix windows dll bugs
0.0259 2017-09-06
- add Math module
- add Math::sin function
- add Math->PI constant
- add Math->E constant
0.0258 2017-09-06
- fix temporary inline file name.
- support inline native config
__CONFIG__
- support inline config following options
CC
CCFLAGS
LD
LDDLFLAGS
OPTIMIZE
0.0257 2017-09-05
- improve inline native source error message
- inline source is separated each
0.0256 2017-09-04
- CBuilder output become quite.
- Fix some Windows compile error
0.0255 2017-09-04
- detect automatically inline native function
- remove SPVM::Inline
0.0254 2017-09-02
- Support inline native function. implement SPVM::Inline
0.0253 2017-09-01
- fix exception bugs
0.0252 2017-08-30
- allow enum last camma
- allow term last camma
- allow args last camma
- allow descripter last camma
- forbidden double comma
0.0251 2017-08-30
- fix bug that if package is not exists, compile is ok.
- implement destructor
sub DESTROY ($self : Foo) : void {
}
0.0250 2017-08-29
- cleanup runtime
- cleanup api
- fix exception some bug
0.0249 2017-08-25
- string can't convert to byte[]
- byte[] can't convert to string
- allow $string->[0] to get byte value
- improve get_sub_id, get_type_id, get_field_id performance
0.0248 2017-08-19
- support xs.dll dynamiclin library
- fix __END__ not used bug
0.0247 2017-08-19
- Sorry, rename back stdout to std
SPVM only have std package by default and automatically loaded without use std;
- support dynamic link library
0.0246 2017-08-17
- array element is initialized by zero.
0.0245 2017-08-16
- fix get object byte field bug
- fix set object byte field bug
- fix bug that compiler can't load source file over 0xFF bytes
0.0244 2017-08-15
- implement weak reference to resolve recursive reference
weaken $obj->{foo};
- Field become have any object
0.0243 2017-08-12
- add SPVM::new_object_array_len function
- add SPVM::Array::Object::set function
- add SPVM::Array::Object::get function
0.0242 2017-08-11
- array malloc length + 1. and last value is 0. This is for C level string API.
- add debug mode.
use SPVM::Debug;
0.0241 2017-08-08
- fix void subroutine bug that if return value is not exists, runtime error occur.
0.0240 2017-08-07
- fix number literal bug that hex number e and E is floating point specifier
- add byte and short number literal syntax
123b
123s
- hex number only allow A, B, C, D, E, F because f is used to specify the number is floating point
and b is used to specify the number is byte
- fix array float store and load bug
- support underline in number literal
123_123
0xFF_FF
0.0239 2017-08-05
- cleanup enum internal logic
- fix clang compiler error
- fix all warnings
0.0238 2017-08-04
- Support nested switch statement
0.0237 2017-08-03
- improve SPVM call_sub performance
0.0236 2017-08-01
- add __END__
- SPVM exception can be cached from Perl's eval { ... }
- fix one character string bug.
0.0235 2017-07-31
- fix default return value
- imporve exception message
0.0234 2017-07-29
- rename malloc to new. you can also define new function for object initialization.
my $obj = new Foo;
my $obj = Foo::new(3);
package Foo {
sub new($var1 : int) {
# ...
return new Foo;
}
}
- object's fields are initialized by zero.
0.0233 2017-07-28
- support package template.
- support over 4G memory allocation
0.0232 2017-07-26
- add len keyword to get array length
reason is that
foo(@$nums) looks like passing array itself, not array length.
you can use len keyword for readability.
foo(len $nums);
- Fix bug that error occur when near small base_object_max_byte_size_use_memory_pool is malloced
0.0231 2017-07-25
- Fix clang compile error
0.0230 2017-07-25
- Fix POSIX function import bug
- Package name must be start with upper case. Lowercase is reserved for core package.
- Add SPVM/stdout.pm as Perl module
0.0229 2017-07-25
- support array initialization
my $nums = [1, 2, 3];
- fix memory breaking bug when object is assigned from freelist
0.0228 2017-07-22
- fix enum constant bug
- support float enum
- support double enum
0.0227 2017-07-21
- fix tests bug
0.0226 2017-07-20
- fix float convertion bugs
- fix convert double to short bug
- fix floating number which don't have point(for example, 346638529e+38) parsing bug.
- rename std package to stdout
- fix enum default type. Correct type is int.
- fix enum { FOO = 1 } syntax.
0.0225 2017-07-19
- add SPVM::Array::Byte::get_elements method
- add SPVM::Array::Short::get_elements method
- add SPVM::Array::Int::get_elements method
- add SPVM::Array::Long::get_elements method
- add SPVM::Array::Float::get_elements method
- add SPVM::Array::Double::get_elements method
0.0224 2017-07-19
- fix memory leak bugs. fix reference count.
0.0223 2017-07-18
- fix hash segmentation fault bug when many hash is created.
0.0222 2017-07-18
- add SPVM::Object::set
- add SPVM::Object::get
- rename SPVM::byte_array to SPVM::new_byte_array
- rename SPVM::short_array to SPVM::new_short_array
- rename SPVM::int_array to SPVM::new_int_array
- rename SPVM::long_array to SPVM::new_long_array
- rename SPVM::float_array to SPVM::new_float_array
- rename SPVM::double_array to SPVM::new_double_array
- rename SPVM::string_raw to SPVM::new_string_raw
- rename SPVM::string to SPVM::new_string
- rename SPVM::object to SPVM::new_object
0.0221 2017-07-15
- fix && not working bug
- fix || not working bug
- fix ! not working bug
0.0220 2017-07-14
- Support array return type in SPVM::call_sub
0.0219 2017-07-13
- Support constant floating point E expression
0.5E3
0.5e3
0.5E+3
0.5e+3
0.5E-3
0.5e-3
- add SPVM::string function
- add SPVM::string_raw function
0.0218 2017-07-13
- Fix float culcuration bugs
- add SPVM::byte_array, SPVM::short_array, SPVM::long_array, SPVM::float_array, SPVM::double_array function
to create SPVM array object.
0.0217 2017-07-12
- Support SPVM::int_array([1, 2, 3]) function
This values can be passed to SPVM function.
0.0216 2017-07-12
- Fix constant sign is not initialized bug
0.0215 2017-07-11
- Support while (my $var = 3) { ... }
- Support long min constant -9223372036854775808
- Fix array malloc bug
0.0214 2017-07-11
- Fix for statement segmentaion fault bug
- VAR = TERM return VAR. For example, allow the syntax "if (my $error = $@) { ... }
- Fix if condition (byte, short, long, float) bugs.
0.0213 2017-07-10
- Fix MANIFEST
0.0212 2017-07-10
- Fix hex literal bug. 0xFFFFFFFFFFFFFFFFL is OK.
- Fix bit shift bugs. <<, >>, >>> work well now.
0.0211 2017-07-08
- Fix if statement condition not working bugs
- try { } catch () { } syntax is replaced with eval { }; if ($@) { ... } syntax.
0.0210 2017-07-08
- Fix reference count bugs
0.0209 2017-07-07
- len $nums is replaced with @$nums
- $nums[0] is replaced with $nums->[0]
- $obj{x} is replaced with $obj->{x}
0.0208 2017-07-06
- add die logic when 32 bit Perl
- add several SPVM internal functions
0.0207 2017-06-30
- Fix amd64 segfault bug.
0.0206 2017-06-20
- Argument and return value become normal SV which have IV or NV.
# Example
my $total = SPVM::MyModule2::foo(3, 5);
print $total . "\n";
0.0205 2017-06-29
- Only support 64 bit Perl.
In 32 bit Perl, 64 bit integer is not supported. This means that Perl can not express 64 bit integers on source code.
0.0204 2017-06-28
- add env interface. This is similar as JAVA JNI
0.0203 2017-06-26
- build SPVM using same CCFLAG as Perl itself
0.0202 2017-06-25
- use same CCFLAG in Makefile.PL
0.0201 2017-06-20
- fix memset 0 bug
0.02 2017-06-20
- improve XS type convertion logic
0.01 2017-06-17(DEVELOPMENT RELEASE
- Fisrt development release