Understanding how an application behaves at runtime requires adequate tools. However, MessageTally, the standard Smalltalk code profiler, is very limited in the kind of analyzis it can carry out. Spy (a profiler framework) is an attempt that has been made in the past, however Spy suffers from poor design, typically forcing profilers to contain a heavy dose of duplicate code.
In this project, we plan to produce Gadget, a portable, open and flexible profiling platform. Hapao , Kai  and Rizel  will be migrated from Spy to Gadget.
Gadget will not only provide features to measure code coverage, time consumption, snapshot comparison, but will provide tools to monitor memory consumption.
All these features will provide to Pharo developers the tools to create domain specific profilers and reuse the features of different implemented profilers in Gadget.
In this project the student will:
- define and implement a profiler metamodel.
- migrate three profilers from Spy to Gadget.
- define a memory profiler to easily spot high memory consumption.
Benefits to the Student
The student will (i) address performance problems; maintainability, design and evolution issues. (ii) get a better understanding of the executing environment of Pharo; (iii) learn reflection and dynamic analysis basics;; (iv) understand the Smalltalk community better.
Benefits to the Community
- Have a new open-source profiler framework with a smooth implementation
of the feedback and experience from the community.
- Allow the community to develop new profilers on top of Gadgetwhich are
easier to implement and maintain.
- A powerful memory profiler tool for finding memory leaks and optimizing the memory usage of smalltalk programs.