- Improvement of tracing performance: factor ~4.
- Consistent interface for tracing and presentation.
-
Introduce
Debugger::Trace
withTrace::Node
s andvariable_versions
field to maintain all data produced by tracing in one entity. -
In
Trace::Present.call
, you need to pass a block with options for customization instead of passing:node_options
. Further on, the per-node customization is now keyed byTrace::Node
instance and not a Stack element anymore. -
In
render_method
, remove:tree
keyword argument, use:debugger_trace
. -
The
render_method
is called with keyword arguments, only. The first positional argumentdebugger_nodes
is now:debugger_trace
.output = Dev::Trace::Present.( stack, node_options: { stack.to_a[0] => {label: "Create"} } )
is now
Dev::Trace::Present.(stack) do |trace_nodes:, **| { node_options: { trace_nodes[0] => {label: "Create"} } } end
Node.build_for_stack
is now called inTrace::Present
and produces a list ofTrace::Node
instances that are containers for matching before and after snapshots.- Add
Node::Incomplete
nodes that have nosnapshot_after
as they represent a part of the flow that was canceled.
- Deprecate
:captured_node
keyword argument in normalizer steps and rename it to:trace_node
. - Remove the concept of
:runtime_path
and:compile_path
. You can always compute paths after or during the debug rendering yourself. However, we simply don't need it for IDE or wtf?.
- Rename
:output_data_collector
and:input_data_collector
to:after_snapshooter
and:before_snapshooter
as they both produce instances ofSnapshot
. The return signature has changed, the snapshooters return two values now: the data object and an object representing the variable versioning.
- Introduce the concept of
Snapshot
which can be a moment in time before or after a step. TheSnapshot::Before
andSnapshot::After
(renamed fromCaptured::Input
andCaptured::Output
) are created during the tracing and after tracing associated to a specificTrace::Node
. - Add
Snapshot::Ctx
andSnapshot::Versions
which is a new, faster way of capturing variables. Instead of always callingctx.inspect
for every trace step, only variables that have changed are snapshooted using the (configurable):value_snapshooter
. This improves#wtf?
performance up to factor 10.
- The
:render_method
callable can now return output along with additional returned values. - Pass the top-level
:activity
into the:render_method
. - In
#wtf?
, only complete the stack when an exception occurred. wtf?
now returns all original return values plus the computed output from:render_method
, followed by an arbitrary object from the rendering code.
- Move
Introspect::Graph
over fromtrailblazer-activity
. It's a data structure very specific to rendering, which is not a part of pure runtime behavior. - Use
Introspect.Nodes
API instead ofTaskMap
. - Remove
:task_maps_per_activity
inDebugger
as we don't need to cache anymore. - Require
trailblazer-activity-dsl-linear-1.2.0
. - Remove
Render::Circuit
as this is part oftrailblazer-activity
now.
Trace.capture_args
andcapture_return
no longer use anyGraph
logic. This is moved toTrace::Present
instead to reduce complexity at crunch time.- Removed the
:focus_on
option for#wtf?
. This is now solved through the debugger. Trace.default_input_collector
anddefault_output_collector
now receive the original taskWrap/pipeline-args[wrap_ctx, original_args]
.- In
Trace::Present.call
it's now possible to provide labels to thedefault_renderer
using the:label
option. Circuit.render
now accepts segments/path.- Fixed a bug in
Trace::Present
where the traced top activity would show up as a node, which was wrong. - Rename
Trace::Entity
toTrace::Captured
. - Removed
:position
keyword inTrace::Renderer
and friends. - Changed
Trace::Stack
from a nested datastructure to a linearCaptured
stack.
- Add
Debugger::Node
as an interface and datastructure between tracing (Stack
andCaptured
) andPresent
, the latter now having access toDebugger::Node
, only. - Add
Debugger::Normalizer
, which computes default values forDebugger::Node
at present-time.
- Use
trailblazer-activity-dsl-linear-1.0.0
.
- Fixing release, and allow using beta versions.
- Use
trailblazer-activity-dsl-linear
>= 1.0.0.beta1. This allows using this gem for testing beta versions.
- Use
trailblazer-activity-dsl-linear
>= 1.0.
- Remove
representable
dependency. - Moved all editor-specific code to the
pro
gem (client.rb
andgenerate.rb
).
- Upgrade trb-activity, trb-activity-dsl-linear and representable versions.
- Ruby 3.0 support. :sunset:
- Ruby 2.7 support
- Add
Arrow.target_lane
field in theGenerate
component.
- Remove Declarative warning correctly
- Fix
Dev.wtf
circuit interface definition
- Revert declarative warning changes
- Allow focusing on selected variables for all steps in wtf
- Fix declarative deprecation warning
- Revert Hash#compact usage to support Rubies <= 2.4
- Allow injecting custom data collector in Trace API, to collect custom input/output ctx of task nodes.
- Allow focusing on specfic steps and ctx variables in Dev.wtf?
- Allow custom inspection while tracing using Inspector definations
- Make Generate::Pipeline an activity for better customization/extendability.
Render.strip
is now a class method.- Added the
.type
field to thedata
field inGenerate
.
- Fix
Introspect
references.
- Move
Activity::Trace
andActivity::Present
fromactivity
todeveloper
. - Remove global configurations and use
flow_options
to override defaults inwtf?
.
- Remove ID extraction logic from
Generate
, this is done on the server-side. - Print
wtf
trace in all cases (with or without exception) - Allow color configuration in
wtf
trace
- Introduce
:query
option forClient.import
. - In
Generate
, addedElement.parent
field. - No more magic is applied when extracting the ID/semantic. We just use the plain string.
- Allow injecting
:parser
intoGenerate.transform_from_hash
.
- Add
Developer.railway
.
- Add
Developer.render
shortcut toRender::Circuit
.
- Initial release into an unsuspecting world.