Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Studio version 2 #123

Open
lukego opened this issue Jan 28, 2019 · 0 comments
Open

Studio version 2 #123

lukego opened this issue Jan 28, 2019 · 0 comments

Comments

@lukego
Copy link
Contributor

lukego commented Jan 28, 2019

I have started porting Studio onto the latest release of the GToolkit graphical inspector framework. See raptorjit/raptorjit#227. The new GToolkit is a much improved rewrite and it offers opportunities to do some things better.

The big one is to unify the user-interface, the manual, and the test suite into one living document (a collection of notebooks for individual topics and applications.) This should make Studio much easier to get started with, to master and to maintain. This will also make Studio more extensible because users can create their own notebooks and copy-paste useful snippets e.g. for downloading objects from their CI servers etc.

Screenshot preview:

screen shot 2019-01-28 at 10 17 04

There are a few changes that seem natural to make while adopting the new framework...

Using Smalltalk code snippets to drive the UI instead of Nix expressions. Nix will be driven by Smalltalk code, not directly by the user. This way we can take advantage of GToolkit's native support for editing Smalltalk snippets with error detection, syntax coloring, completion, etc. This also removes one indirection: the Smalltalk code will know in advance what objects the Nix code is building rather than having to infer that using the .studio/product-info.yaml metadata.

Rethinking the object model for the existing RaptorJIT inspection code. Have we chosen the right set of objects? Should we refactor into a more logical structure? There seem to be some aspects worth improving e.g. to make Profiles into first-class objects that can be sliced and diced. Have a uniform way to look at the profile of a whole process; one VMProfile dataset; one set of traces with a common root; one trace.

Rethinking individual views. Are we over-using "table-trees"? Is there a better way to present IR code in the new GToolkit? It has nice features such as text listings with inline expandable objects. It is also not backwards-compatible with the graphics framework that the existing visualizations are based on (Roassal2). So it seems at least worth rethinking any view that requires major porting effort to preserve.

I'll push a preview branch when I have a chance. Just now I don't have much integrated beyond what you can see in the screenshot above but a lot of existing functionality should be easy to port.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant