[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.technology.imp] Some news on pdb.values and a description

Dear all,

This is to let you know that we have started to use the pdb.values plugin quite extensively and it seems to be rather stable and well tested now. It was designed to allow different fact producers and fact consumers to cooperate and to provide a shared run-time environment for fact analysis.

Pdb.values is a part of the IMP analysis feature providing:
* A generic API for representing, computing with and (de)serializing facts about source code
* Arbitrarily nestable symbolic representations based on the concept of n-ary relations, sets, and algebraic data-types.
* A type system that enforces and uses immutability to prevent programming errors while leaving a lot of room for generic algorithms and reuse.
* Currently three implementations of the API (which is designed using the AbstractFactory design pattern):
- a reference implementation
- a "shared" implementation, which implements maximal sharing to safe memory
- a "fast" implementation, which is treally fast without using too much memory
* A fast streamable binary serialization format
* alpha quality (!) bridges to (de)serialize ATerms and XML


Apart from the ATerm and XML connectivity the API is well tested. We use it as a run-time for the Rascal DSL for source code analysis and transformation, which is currently under development.

The future for pdb.values:
- more usage/testing as the run-time for Rascal
- some more API for querying relations (probably)
- better integration with IMP via the PDB analysis factory (scheduling analyses and retrieving analysis results for use in language specific IDE tools)
- better integration with Eclipse's visualizaton capabilities to support browsing of complex fact extraction and analysis results. This is mainly to support debugging IDE features. See the imp.pdb.ui project.
- more implementations of the API that specialize in specific use cases, and API adapters to existing sources of information such as the JDT.


Cheers,

Jurgen Vinju (designer and reference implementation)
Arnold Lankamp (shared and fast implementations)
Bob Fuhrer (designer)