0.0327 2018-04-21
  - fix jit link subroutine name bug
  - only print warning message when SPVM_TEST_ENABLE_WARNINGS is defined
  - double, float string convertion more portable
  - fix windows long constant bug
  - fix windows jit dll file overwritten bug
0.0326 2018-04-20
  - forbidden function call from Perl. All subroutine become method or class method
  - rename Std::Arrays to Std::Array::Util
  - rename Std::Array::Util copy_of_xxx to copy_xxxs
  - rename Std::Array::Util equals_xxx to eq_xxxs
  - fix windows source file reading bug
  - inline source code must be in .inline instead of .native
  - fix temporary directory bug
  - add build directory cleanup logic
0.0325 2018-04-13
  - remove template feature
  - rename Math to Std::Math
  - rename Arrays to Std::Arrays
  - rename Number::Util to Std::Number::Util
  - add some Std::Math functions
  - remove absolute call subroutine syntax
    method is only instance method or class method
  - rename CORE to Std
  - need use Std to use print, warn and time
  - use must be in package block
0.0324 2018-04-07
  - implement string convertion
  - implement isa
  - implement string comparison operator
  - fix (term) is not allowed bug
0.0323 2018-04-06
  - fix file empty bug
0.0322 2018-04-04
  - allow numeric type to String convertion
  - remove string concat operator automatical type convertion
  - licence become MIT licence
0.0321 2018-04-02
  - rename Integer package to Int package
  - add Number::Util and move many number util funtions of Byte, Short, Int, Long, Float, Double to Number::Util
  - SPVM all C source file is compiled by -std=c99 option by default
0.0320 2018-03-29
  - add private and public descriptor
  - add private field
  - add private package
  - fix check cast bug
0.0319 2018-03-29
  - add interface descriptor to package declaration
  - fix bug that empty package parsing fail
  - add Object interface
  - add subroutine argument convertion
  - implement interface method call
  - implement check cast
0.0318 2018-03-20
  - field become public by default
  - remove set, get keyword
  - new become public by default
  - add self keyword to represent invocant
  - many module methods become class method
    Byte, Short, Integer, Long, Float, Double, Math
0.0317 2018-03-15
  - support escape character \0
  - cleanup leave scope logic
  - numeric variable become local variable in jitcode
0.0316 2018-03-10
  - remove runtime constant_pool
0.0315 2018-03-08
  - add JIT descripter
  - fix manifest not to contain SPVM-* files
0.0314 2018-03-01
  - remove build_shared_lib.pl script
  - fix jit subroutine not called bug
0.0313 2018-02-26
  - fix shared lib dependency bug
  - sub descripter position is changed
    before: sub sin : native double ($x : double);
    after : native sub sin : double ($x : double);
  - fix windows dll not loading bug
0.0312 2018-02-23
  - fix bug that last statement can't do leave scope logic
0.0311 2018-02-21
  - shared library building temporaly directory is cleaned up in the scope
  - cleanup shared library loading
  - fix exception stack trace subroutine name
  - fix all warnings
0.0310 2018-02-16
  - enum value must be int type
  - remove byte literal b
  - remove short literal s
  - add automatically type convertion to + operator
  - add automatically type convertion to - operator
  - add automatically type convertion to * operator
  - add automatically type convertion to / operator
  - add automatically type convertion to % operator
  - add automatically type convertion to unary -
  - fix unary + bug
  - add automatically type convertion to unary +
  - add automatically type convertion to == operator
  - add automatically type convertion to != operator
  - add automatically type convertion to > operator
  - add automatically type convertion to >= operator
  - add automatically type convertion to < operator
  - add automatically type convertion to <= operator
  - add automatically type convertion to array index
  - add automatically type convertion to lengh of new array
  - add automatically type convertion to ~ operator
  - add automatically type convertion to & operator
  - add automatically type convertion to | operator
  - add automatically type convertion to ^ operator
  - add automatically type convertion to << operator
  - add automatically type convertion to >> operator
  - add automatically type convertion to >>> operator
  - limit <<, >>, >>> right value
  - fix increment, decrelement assignment bug
  - implement float, double increment
  - add automatically type convertion to == operator
0.0309 2018-02-10
  - jit code is called from virtual machine
  - separate tests to succeed tests at less memory environment
0.0308 2018-02-05
  - implement Perl compatible GC system correctory
  - fix eval block stack bug
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