[Vm-dev] Squeak Inspectors

Eliot Miranda eliot.miranda at gmail.com
Sat Nov 30 21:03:03 UTC 2019

Hi All,

    Clément and I were talking earlier today (about issues around the
solving of issue 444) and later on we talked a it about UI.  It has been a
goal of Tudor Girba to have a VMMaker that uses the Glamorous Toolkit for
richer inspection facilities, a project than makes sense to me too.  But it
is one I have failed to contribute to because of issues I have with Pharo.
However, richer inspection could be implemented in Squeak too, without
taking on the task of porting GT to Squeak (a worth-while project I
encourage anyone interested to consider).

So what would be required to do something slick in Squeak?  I'm hacking up
a few ideas right now but there are some things I'd like, and I'm not sure
of how to get them, hence my sending the message here and cc'ing Marcel.

One thing is handling double click in text so that it triggers not a
selection, but some semantic action.  I'm imagining a three column
inspector where on the left are the inst vars of a VM object, such as the
interpreter.  In the next column is a default display of the selected inst
var, for example, the output of the print: routine, which for the
specialObjectsArray looks like this:

16r2FAF998: a(n) Array
   16r734500 nil   16r734510 false   16r734520 true   16rD09B20 a Global
#Processor -> 16r00745CD8
   16rB01D20 class Bitmap  16r124FCB8 class SmallInteger   16rB02140 class
ByteString   16rB01C00 class Array
   16rB4D228 a SmalltalkImage  16r106E708 class BoxedFloat64   16rB05380
class Context   16r734500 nil
   16rB04BA0 class Point   16rAFF358 class LargePositiveInteger   16r780B30
a DisplayScreen   16rB00018 class Message
   16rB01F00 class CompiledMethod   16r2000B8 a Semaphore   16rB02440 class
Semaphore   16rAFF4D8 class Character
   16r93F0A8 #doesNotUnderstand:   16r93F0C8 #cannotReturn:   16r734500 nil
 16r241C998 an Array
   16r734500 nil   16r93F0E0 #mustBeBoolean   16rB01FC0 class ByteArray
 16r116E800 class Process
  16r2FB10B8 an Array  16r1365050 a Semaphore   16r100048 a Semaphore
16r734500 nil
   16r734500 nil   16r734500 nil   16r980DF8 #cannotInterpret:   16r734500
   16rB192C0 class BlockClosure   16r734500 nil   16r100068 an Array
16r734500 nil
  16r10AB350 a LinkedList   16r759080 a Semaphore   16rAFF2F8 class
LargeNegativeInteger  16r2F82230 class ExternalAddress
  16r2F820E8 class ExternalStructure  16r2F82D00 class ExternalData
 16r2F88508 class ExternalFunction  16r2F82950 class ExternalLibrary
   16r9B2090 #aboutToReturn:through:   16r9CB820 #run:with:in:  16r10BBBD0
#attemptToAssign:withIndex:  16r2FB10C8 an Array
  16r2F4DF88 class Alien  16r10BBD20 #invokeCallbackContext:  16r2F51228
class UnsafeAlien   16r734500 nil
   16r734500 nil   16rCE3570 #unusedBytecode  16r10BBBA0
#conditionalBranchCounterTrippedOn:  16r10BAB98 #classTrapFor:

Then in the third column would be a sub-inspector, so that if one
double-clicked in an oops in the above display, that would be displayed in
the third column.  Ideally the inspectors would cascade like they do in
GT.  But for the moment I'd be happy with anything that doesn't require
copy/pasting oops (the hex numbers above) into dialog boxes to print
further info in the transcript window in a simulation.

So Marcel (& others who are interested), at the most basic level, how would
one add a double-click action to our current Inspector framework to enable
that kind of interaction?

How would one build a cascading Inspector as per GT?

And as impetus, this UI will help us develop the VM faster, and that will
get you, in time, a faster VM.
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20191130/95077430/attachment.html>

More information about the Vm-dev mailing list