Rand Stats

MoarVM::Bytecode

zef:lizmat
Revision history for MoarVM::Bytecode

0.0.16  2024-04-29T13:08:31+02:00
    - Add :highlight argument to MoarVM::Bytecode::Frame.hexdump
    - Change --opcode argument in "bcinfo" to --opcodes to allow
      specification of multiple comma-separated opcodes
    - Helper script "bcinfo" will now highlight opcodes where
      possible

0.0.15  2024-04-28T20:20:10+02:00
    - Add helper script "bceval"
    - Add MoarVM::Op.not-inlineable method
    - Add MoarVM::Bytecode::Frame.inlineable method

0.0.14  2024-04-28T17:47:00+02:00
    - Make sure that cu-dependencies contain actual
      CompUnit::PrecompilationDependency::File objects
    - Add :instantiate named argument to "files" method
    - Use new "Format" capability to speed up gists
    - Add Strings.bytes and Frames.bytes methods
    - Bump dependency on List::Agnostic
    - Added helper script "bcinfo"

0.0.13  2024-04-26T22:52:31+02:00
    - Rename "bytecode-offset" and "bytecode-length" methods
      on MoarVM::Bytecode class to "opcodes-offset" and
      "opcodes-length" respectively to prevent confusion
    - Rename "bytecode" method on MoarVM::Bytecode::Frame and
      MoarVM::Bytecode to "opcodes" to prevent confusion
    - Make MoarVM::Bytecode and MoarVM::Bytecode::Frame Iterable,
      producing the opcodes when iterated over
    - Add MoarVM::Bytecode::Frame.de-compile method that produces
      a string with all opcodes de-compiled
    - Add the "M" attribute to MoarVM::Bytecode::Frame, to hook
      the frame back to the actual bytecode object it lives in
    - Removed "callsites" attribute from MoarVM::Bytecode::Frame:
      it is now being handled by "M"

0.0.12  2024-04-26T15:58:56+02:00
    - Add "csites" helper script to introspect callsites
    - Add MoarVM::Bytecode.op method that will also attempt to
      look up any extension opcodes that may be defined in that
      bytecode
    - Give MoarVM::Bytecode::ExtensionOp the same API as
      MoarVM::Op, so they can be used transparently
    - Allow support for reading module precomp files, as
      opposed to just pure MoarVM bytecode files
    - Add "cu-dependencies" attribute that lists any compunit
      dependencies in module precomp files.
    - Fix various issues in decompilation and hexdump

0.0.11  2024-04-24T21:54:18+02:00
    - Add "sheap" helper script for string heap introspection
    - Removed dependency on HexDump::Tiny, and replaced that by a
      local, simplified way of showing a hexdump
    - Added a MoarVM::Bytecode::Callsite.gist method
    - Fixed issue in Callsite processing: flattened named args don't
      have an index into the string heap
    - Fixed issue opcode processing with rl() and wl() arguments

0.0.10  2024-04-24T13:32:46+02:00
    - Removed the "bytecode-offset" and "bytecode-length" attributes
      from the "Frame" class, and replaced these by a single "bytecode"
      attribute that will lazily produce a C with the actual
      bytecode of the frame
    - Rename the MoarVM::Op.attributes method to "adverbs" to more
      closely match the wording used in MoarVM
    - Pre-compile all possible MoarVM::Op objects, as they're all
      singletons
    - Replace the MoarVM::Op.reify-all method by "all-ops" method, as
      all possible objects have already been reified
    - Add MoarVM::Op "all-adverbs" method, which returns a list of
      all possible adverbs
    - Make MoarVM::Op.bytes smarter, as some ops have a variable size
      depending on the actual instance in the bytecode
    - Add "opinfo" helper script for interactive op lookup

0.0.9  2024-04-21T20:10:38+02:00
    - Make sure all classes have at least a rudimentary "gist" method
    - Add "Op" class to obtain bytecode operation information, including
      a helper script "makeOPS.raku" to cull that information from the
      MoarVM oplist

0.0.8  2024-04-18T22:56:28+02:00
    - Only add "Statement" objects if the bytecode offset is different
    - Provide basic "gist" support

0.0.7  2024-04-18T13:16:30+02:00
    - Rename "annotation-offset" and "annotation-length" methods on
      the "Bytecode" object to "annotation-data-offset" and
      "annotation-data-offset" to avoid confusion with similarly
      named methods on the "Frame" object
    - Reformat documentation a bit
    - Document method "uint16"
    - Add utility methods "uint16s" and "uints32" and document
      them
    - Remove attribute "name" from "Frame" class to be replaced by
      a lazily mixed in role method "name" if the object actually
      has a name
    - Add lazily mixed in role method "filename" to "Frame" objects
      if the object actually has a filename
    - Add class "Statement" to capture information about a statement:
      For now this will only "offset" and "line" methods
    - Add method "statements" to "Frame" class, containing the
      "Statement" objects of the frame.
    - Remove "annotation-offset" and "annotation-entries" methods
      from the "Frame" object

0.0.6  2024-04-17T21:31:28+02:00
    - Add "Callsite" and "Argument" classes and a first stab at
      documenting them
    - Add "callsites" method, a list of "Callsite" objects

0.0.5  2024-04-17T12:22:35+02:00
    - Add "Frames" class to provide a lazy positional interface to
      frame information
    - Make frame reification lazy and abstract this into a "Frames"
      object
    - Add "reify-all" method to "Frames" object to reify all "Frame"
      objects that haven't been reified before, in a hypered way

0.0.4  2024-04-16T20:24:22+02:00
    - Simplify internal representation of "sc-dependencies"
    - Move documentation to separate file for convenience
    - Add level 7 bytecode documentation from MoarVM repo for reference
    - Add "str" utility method
    - Add "ExtensionOp", "Frame", "Local" and "Lexical" classes and a
      first stab at documenting them
    - Add instance method "extension-ops", a list of "ExtensionOp"
      objects
    - Add instance method "frames" returning a "Frame" object for
      each frame

0.0.3  2024-04-15T18:44:58+02:00
    - Add instance method "sc-dependencies" providing a positional
      interface to the Serialization Context dependencies

0.0.2  2024-04-15T13:24:25+02:00
    - Replace class method "blib" by more general "rootdir"
    - Add class method "files" to produce all bytecode files of a
      Rakudo installation
    - Add dependency on "paths"
    - The "setting" method now searches for the bytecode file, to
      enable proper CI testing, which has a weird file layout

0.0.1  2024-04-14T22:14:30+02:00
    - Initial version