Domain specific optimizations for Plug-ins systems

Plug-ins are a powerful tool to create easily expandable systems, but it usually deteriorates the performance of the whole system. A good compromise is the system cannot be expanded at any time in its work, but only as its launch. This opens up possibilities for applying optimizations on the entire system and plug-ins to reduce the influence of the weak connectivity of its modules. Optimizations like merging plug-in modules to the base program, automatically mark the classes as sealed, and the de-virtualization methods are just examples of how you can achieve better performance without losing the flexibility of the system. The results from optimizations may be cached to avoid performing these hard analyzes and transformations at each program launch. This approach allows optimizations to be performed only when we add or remove plug-ins to the system.

Building SolidOpt Multimodel Graph

SolidOpt (www.solidopt.org) provides toolchain helpful for various code transformations like compilation, decompilation and optimization. The project has various of intermediary source code representations such as .NET IL, control flow graphs, call graphs, three address code, abstract syntax tree and etc. There are various transformations between the representations. For example control flow graph to .NET IL, control flow graph to three address code and so on.

Automatic Differentiation of IL (ADIL)

We intend to implement an Automatic Differentiation of .NET IL methods using the existing SolidOpt infrastructure. The realization of such an algorithm should not be difficult due to the existing representations: CFG and TAC. A decompilation of IL into these intermediate code models (representations) already exists in the SolidOpt framework and this simplifies the task.

The implementation of AD at IL level makes the project relatively different from other existing AD implementations. Unlike the other existing systems that are based on SCT (Source Code Transform), in our case the dependence on the programming language is minimized. There is no need to use the OO (Operator Overload) approach, which distinguishes our project from almost all known .NET (and not only) implementations.

Building SolidOpt Static Single-Assignment Code Model On Top of The Existing Three Address Code

SolidOpt (www.solidopt.org) provides toolchain helpful for various code transformations like compilation, decompilation and optimization. The project has various of intermediary source code representations such as .NET IL, control flow graphs, call graphs, three address code, abstract syntax tree and etc.

Building a cache system

Objectives

To build a system (caching system), reducing unnecessary calculations and disk accesses done by SolidOpt.

Description

Usually, places of storage resources have unequal access time. Access to some storages is slower, but they have many other advantages such as security. For example, access to resources stored on the computer file system is much faster than access to a resource on the Internet. However, the file system resource is uncertain, because it can be modified more freely.