A lightweight and interactive back-in-time debugger for Squeak to trace and retrace past method invocations and state changes. Powered by SimulationStudio.
See examples for range queries on the class side of TDBRangeRetracingSimulator.
Breaking changes:
All messages sent to proxies will be executed isolated from the rest of the image from now. Any side effects are only visible by sending further messages to the result or by using a common #in: block.
Overview of technical changes to the engine:
Extract read/write-related logic from single simulators to TDBMemorySimulator and add generalized hooks for state control
Add isolation mechanism to memory simulator
Add TDBRangeRetracingSimulator for vectorized/forkable execution of range queires and push down conventional retracing from TDBRetracingSimulator to TDBPointRetracingSimulator
Add TDBMemorySlice as the data structure for internal retracing vectors and the result of range queries
Add TDBRangeProxy and TDBRetracingFrayOut error for accessingly parts of range queries results transparently
Add retracing and retracing support for BitBlt (9fcb943)
Add new benchmarks using BenchmarkRunner and smoke-test them on CI
The PR implements range retracing queries for #20.
New protocols:
TDBCursor >> #object:collect:
,TDBMemory >> #object:[atTimes:]collect:
,TDBMemory >> #object:atTimes:(instVar|field)At:getCurrentifAbsent:
TDBCursor >> #contextAtTime:
TDBRangeRetracingSimulator
.Breaking changes:
#in:
block.Overview of technical changes to the engine:
TDBMemorySimulator
and add generalized hooks for state controlTDBRangeRetracingSimulator
for vectorized/forkable execution of range queires and push down conventional retracing fromTDBRetracingSimulator
toTDBPointRetracingSimulator
TDBMemorySlice
as the data structure for internal retracing vectors and the result of range queriesTDBRangeProxy
andTDBRetracingFrayOut
error for accessingly parts of range queries results transparentlyFind more details in 1cdb827 and fdd5478.