Skip to content

Latest commit

 

History

History
90 lines (71 loc) · 6.38 KB

CHANGELOG.md

File metadata and controls

90 lines (71 loc) · 6.38 KB

Changelog

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

Added

  • #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 to exe/yarv.

Changed

  • #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

Added

  • #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 and dup.
  • #42 - Implement opt_and.
  • #46 - Implement opt_getinlinecache, opt_setinlinecache, and getconstant.
  • #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 call context.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, run rake syntax_tree:format.
  • #80 - Implement getlocal_WC_0 and setlocal_WC_0. Additionally begin tracking locals on the frame.
  • #83 - Implement putobject_INT2FIX_1_.

Changed

  • #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 calling call. 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__.

Removed

  • #83 - Remove the top-level YARV.emulate method in favor of YARV.compile(...).eval.

0.1.0 - 2022-05-09

Added

  • 🎉 Initial release! 🎉