Jannuary 2005 - RAIL V0.5.7 release
What can you do with RAIL (html)
All the
source code is available for download in this site. There are also several
examples that explain how to use RAIL.
Please if
you are insterested in experimenting with this package, please *do* send us
an email to
|
Runtime Assembly Instrumentation Library
|
This
project plans to implement an API that allows CLR assemblies to be
manipulated and instrumented before they are loaded and executed.
In the CLR, the AppDomain class and the ResolveEventHandler event handler
already provide an excellent mechanism for dynamically loading assemblies
into an application domain under the control of the programmer. At the same
time, the reflection capabilities of the CLR are extremely powerful. Not only
it is possible to query the existing types at runtime, but is also possible
to define new assemblies in memory and use Reflection.Emit to generate MSIL
on-the-fly. Our plan is to fill the gap between these two concepts. The idea
is to have an API that allows the programmer to intercept the class
resolution process, examining and manipulating the code that exists in an
assembly, before the code is actually defined on the virtual machine. This
API will be called RAIL: Runtime Assembly Instrumentation Library.
By using RAIL it will be possible to specify specific transformations that
must be done at an assembly before it is loaded and executed. These
transformations will be specified using a high-level API, abstracting the
programmer from the low-level details of MSIL and the assembly binary format.
For instance, it will be possible to substitute the references to a class for
references to another class, change the name and usage of constants and
variables, examine and change existing methods, and so on.
|
The Dependable Systems Group focuses on
research on Fault Tolerance Techniques, with special emphasis on fault
injection and error detection methods, and on Distributed and Parallel
Systems, including MPI and mobile agents.
The DSG
is part of CISUC
and is hosted at the
Department of
Computer Science at the University of Coimbra.
|