All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.3.0 - 2022-05-10
- #85 - Implement
putnil
. - #90 - Implement
opt_eq
. - #91 - Implement
newarray
. - #93 - Implement
opt_mod
. - #94 - Implement
duparray
. - #96 - Implement
opt_not
. - #101 - Implement
concatarray
. - #98 - Implement
swap
. - #106 - Implement
newhash
. - #103 - Implement
duphash
. - #117 - Implement
opt_ge
. - #113 - Implement
jump
. - #117 - Implement
opt_gt
. - #117 - Implement
opt_le
. - #117 - Implement
opt_lt
. - #118 - Implement
opt_str_freeze
. - #120 - Implement
opt_aref_with
. - #122 - Implement
branchnil
. - #124 - Implement
branchif
. - #127 - Add
--dump=insns
and-e
options toexe/yarv
.
- #123 - Handle leading arguments to method calls and fix local argument indices.
- #127 - Better disasm formatting, and switch all of the instructions to use
#to_s
instead of#pretty_print
. - #127 - Additionally track call data flags.
- #130 - Improve formatting on the website.
0.2.0 - 2022-05-09
- #19 - Add arm64 platform to Gemfile.lock for M1 macs.
- #20 - Configure Ruby Spec to run on GH Actions. Allowing it to fail for now since we're nowhere near passing, but it is running on every PR so we can see progress.
- #24 - Implement
opt_str_uminus
. - #26 - Implement
opt_minus
. - #30 - Implement
putstring
. - #34 - Implement
getglobal
. - #39 - Implement
setglobal
anddup
. - #42 - Implement
opt_and
. - #46 - Implement
opt_getinlinecache
,opt_setinlinecache
, andgetconstant
. - #49 - Implement
opt_empty_p
. - #51 - Implement
pop
. - #54 - Implement
opt_div
. - #57 - Implement
opt_or
. - #58 - Implement
opt_nil_p
. - #59 - Implement
opt_aref
. - #60 - Implement
branchunless
. Also change the compilation process to append instructions instead of mapping everything so that we can track instruction index to jump properly. Additionally,YARV::ExecutionContext
now has knowledge of which instruction sequence is currently being executed. - #61 - Implement
definemethod
. This also changes the way we dispatch methods. Now in order to properly hook into our method definitions (including any monkey-patching), you need to callcontext.call_method
. That way it will check for any redefined methods as well as hooking into the parent runtime to run the methods. - #67 - Implement
opt_length
. - #69 - Implement
putobject_INT2FIX_0_
. - #72 - Implement
opt_succ
. - #76 - Format the project with Syntax Tree. Add a check to CI that will run
rake syntax_tree:check
to verify everything is formatted. In order to run the format command locally, runrake syntax_tree:format
. - #80 - Implement
getlocal_WC_0
andsetlocal_WC_0
. Additionally begin tracking locals on the frame. - #83 - Implement
putobject_INT2FIX_1_
.
- #27 - Split up the test files and run the tests through
rake
. - #30 - An execution context is now passed around to the different instructions instead of just a stack. This is going to allow saving much more information between instructions and allow jumping between instructions by manipulating the
program_counter
field. - #62 - Change all of the instructions from calling
execute
to callingcall
. This should make it easier to prototype missing instructions as you can use a lambda without having to build out a whole class. - #63 - Run the spec GitHub action in Ruby 3.1.
- #70 - Fix the value passed into mspec for
__FILE__
.
- #83 - Remove the top-level
YARV.emulate
method in favor ofYARV.compile(...).eval
.
0.1.0 - 2022-05-09
- 🎉 Initial release! 🎉