Type Safety of Generics for the .NET Common Language Runtime

  • Nicu G. Fruja
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3924)


The Microsoft .NET Common Language Runtime (CLR) offers support for generic types and methods. We develop a mathematical specification for the generics design through a type system and a model for the semantics of a subset of bytecode instructions with generics. We formalize the type-consistency checks performed for the subset by the CLR bytecode verifier. We then prove that adding support for generics maintains the type safety of the CLR.


Generic Parameter Operational Semantic Generic Argument Variance Array Constraint Type 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Microsoft .NET Framework 2.0,
  2. 2.
    Börger, E., Stärk, R.F.: Abstract State Machines – A Method for High-Level System Design and Analysis. Springer–Verlag, Heidelberg (2003)CrossRefMATHGoogle Scholar
  3. 3.
    Cook, W.R.: A Proposal for Making Eiffel Type-Safe. Comput. J. 32(4), 305–311 (1989)CrossRefGoogle Scholar
  4. 4.
    Common Language Infrastructure (CLI) – Standard ECMA-335 (2002)Google Scholar
  5. 5.
    Fruja, N.G.: The Soundness of the .NET CLR Bytecode Verifier (submitted)Google Scholar
  6. 6.
    Fruja, N.G.: A Modular Design for the.NET CLR Architecture. In: Beauquier, A.S.D., Börger, E. (eds.) 12th International Workshop on Abstract State Machines, ASM 2005, Paris, France, pp. 175–199 (March 2005)Google Scholar
  7. 7.
    Fruja, N.G., Börger, E.: Analysis of the.NET CLR Exception Handling. In: Skala, V., Nienaltowski, P. (eds.) 3rd International Conference on.NET Technologies,NET 2005, Pilsen, Czech Republic, pp. 65–75 (June 2005)Google Scholar
  8. 8.
    Howard, M., Bezault, É., Meyer, B., Colnet, D., Stapf, E., Arnout, K., Keller, M.: Type-safe covariance: Competent compilers can catch all catcalls (April 2003), Draft at
  9. 9.
    Igarashi, A., Pierce, B.C., Wadler, P.: Featherweight Java: a Minimal Core Calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23(3), 396–450 (2001)CrossRefGoogle Scholar
  10. 10.
    Jeffrey, A.: Generic Java type inference is unsound. The Types Forum (2001)Google Scholar
  11. 11.
    Kennedy, A., Syme, D.: Design and Implementation of Generics for the.NET Common Language Runtime. In: ACM SIGPLAN 2001 Conf. on Programming Language Design and Implementation, PLDI 2001, Snowbird, Utah, United States, pp. 1–12 (May 2001)Google Scholar
  12. 12.
    Viroli, M., Natali, A.: Parametric Polymorphism in Java: an Approach to Translation based on Reflective Features. SIGPLAN Not 35(10), 146–165 (2000)CrossRefGoogle Scholar
  13. 13.
    Yu, D., Kennedy, A., Syme, D.: Formalization of Generics for the.NET Common Language Runtime. In: 31st ACM Symposium on Principles of Programming Languages, POPL 2004, Venice, Italy, pp. 39–51 (January 2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Nicu G. Fruja
    • 1
  1. 1.Computer Science DepartmentETH ZürichSwitzerland

Personalised recommendations