Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/301618.301665acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article
Free access

A theory of type qualifiers

Published: 01 May 1999 Publication History

Abstract

We describe a framework for adding type qualifiers to a language. Type qualifiers encode a simple but highly useful form of subtyping. Our framework extends standard type rules to model the flow of qualifiers through a program, where each qualifier or set of qualifiers comes with additional rules that capture its semantics. Our framework allows types to be polymorphic in the type qualifiers. We present a const-inference system for C as an example application of the framework. We show that for a set of real C programs, many more consts can be used than are actually present in the original code.

References

[1]
Martin Abadi, Anindya Banerjee, Nevin Heintze, and Jon G. Riecke. A Core Calculus of Dependency. In Proceedings of the ~6th Annual A CM SIGPLAN. SIGACT Symposium on Principles of Programming Languages, pages 147-160, San Antonio, Texas, January 1999.
[2]
Martin Abadi and Luca Cardelli. A Theory of Objects. Springer, 1996.
[3]
Alexander Aiken, Manuel Fahndrich, Jeffrey S. Foster, and Zhendong Su. A Toolkit for Constructing Type- and Constraint-Based Program Analyses. In Proceedings of the second International Workshop on Types in Compilation, Kyoto, Japan, March 1998.
[4]
Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison Wesley, 1988.
[5]
Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. Mc- Graw Hill, 1990.
[6]
David L. Detlefs. An overview of the Extended Static Checking system. In Proceedings of the First Workshop on Formal Methods in Software Practice, pages 1-9, January 1996.
[7]
Dirk Dussart, Fritz Henglein, and Christian Mossin. Polymorphic Recursion and Subtype Qualifications: Polymorphic Binding-Time Analysis in Polynomial Time. In Static Analysis, Second International Symposium, number 983 in Lecture Notes in Computer Science, pages 118-135, Glasgow, Scotland, September 1995. Springer-Verlag.
[8]
Jonathan Eifrig, Scott Smith, and Valery Trifonov. Type Inference for Recursively Constrained Types and its Application to OOP. In Mathematical Foundations of Programming Semantics, Eleventh Annual Conference, volume 1 of Electronic Notes in Theoretical Computer Science. Elsevier, 1995.
[9]
David Evans. Static Detection of Dynamic Memory Errors. in Proceedings of the 1996 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 44-53, Philadelphia, Pennsylvania, May 1996.
[10]
Fritz Henglein. Efficient Type Inference for Higher- Order Binding-Time Analysis. In J. Hughes, editor, FPCA '91 Conference on Functional Programming Languages and Computer Architecture, volume 523 of Lecture Notes in Computer Science, pages 448-472, Cambridge, MA, August 1991. Springer-Verlag.
[11]
Fritz Henglein and jakob Rehof. The Complexity of Subtype Entailment for Simple Types. In Proceedings, Twelfth Annual IEEE Symposium on Logic in Computer Science, pages 352-361, Warsaw, Poland, July 1997.
[12]
Proceedings of the third A CM SIGPLAN International Conference on Functional Programming, Baltimore, Maryland, September 1998.
[13]
Mark P. Jones. A theory of qualified types. In Bernd Krieg-Brficker, editor, 4th European Symposium on Programming, number 582 in Lecture Notes in Computer Science, pages 287-306, Rennes, France, February 1992. Springer-Verlag.
[14]
Richard Kieburtz. Taming Effects with Monadic Typing. In ICFP'98 {ICF98}, pages 51-62.
[15]
Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language. Prentice Hall, 2nd edition, 1988.
[16]
Ntis Klarlund and Michael I. Schwartzback. Graph Types. In Proceedings of the 20th Annual A CM SiGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 196-205, Charleston, South Carolina, January 1993.
[17]
John M. Lucassen and David K. Gifford. Polymorphic Effect Systems. In Proceedings of the 15th Annual A CM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 47-57, San Diego, California, January 1988.
[18]
K. Rustan M. Leino and Greg Nelson. An Extended Static Checker for Modula-3. In Compiler Construction: 7th International Conference, volume 1383 of Lecture Notes in Computer Science, pages 302-305, April 1998.
[19]
Steve Maguire. Writing Solid Code. Microsoft Press, 1993.
[20]
Robin Milner. A Theory of Type Polymorphism in Programming. Journal of Computer and System Sciences, 17:348-375, 1978.
[21]
John C. Mitchell. Type inference with simple subtypes. Journal of Functional Programming, 1(3):245- 285, July 1991.
[22]
David R. Musser, Atul Saint, and Alexander Stepanov. STL Tutorial and Reference Guide. Addison-Wesley Publishing Company, 1996.
[23]
Peter Orba~k and Jens Palsberg. Trust in the )~-calculus. Journal of Functional Programming, 3(2):75-85, 1997.
[24]
Martin Odersky, Martin Sulzmann, and Martin Wehr. Type Inference with Constrained Types. In Benjamin Pierce, editor, Proceedings of the 4th International Workshop on Foundations of Object-Oriented Languages, January 1997.
[25]
Pure Atria. Purify: Fast detection of memory leaks and access errors.
[26]
Jakob Rehof. Personal communication, January 1999.
[27]
Kirsten Lackner Solberg. Annotated Type Systems for Program Analysis. PhD thesis, Aarhus University, Denmark, Computer Science Department, November 1995.
[28]
Mads Tofte and Jean-Pierre Talpin. Implementstion of the Typed Call-by-Value,Calculus using a Stack of Regions. In Proceedings of the 21st Annual A CM SIGPLAN-SIGA CT Symposium on Principles of Programming Languages, pages 188-201, Portland, Oregon, January 1994.
[29]
Dennis Volpano and Geoffrey Smith. A Type-Based Approach to Program Security. In Michel Bidoit and Max Danchet, editors, Theory and Practice of Software Development, 7th International Joint Conference, volume 1214 of Lecture Notes in Computer Science, pages 607-621, Lille, France, April 1997. Springer-Verlag.
[30]
Philip Wadler. The Marriage of Effects and Monads. In ICFP'98 {ICF98}, pages 63-74.
[31]
Andrew K. Wright and Matthias Felleisen. A Syntactic Approach to Type Soundness. Information and Computation, 115(1):38-94, 1994.
[32]
Andrew K. Wright. Simple Imperative Polymorphism. In Lisp and Symbolic Computation 8, volume 4, pages 343-356, 1995.
[33]
K. Yelick, L. Semenzato, G. Pike, C. Miyamoto, B. Liblit, A. Krishnamurthy, P. Hilfinger, S. Graham, D. Gay, P. Colella, and A. Aiken. Titanium: A High- Performance Java Dialect. In ACM 1998 Workshop on Java for High-Performance Network Computing, February 1998.

Cited By

View all
  • (2024)Oxidizing OCaml with Modal Memory ManagementProceedings of the ACM on Programming Languages10.1145/36746428:ICFP(485-514)Online publication date: 15-Aug-2024
  • (2024)Qualifying System F<:: Some Terms and Conditions May ApplyProceedings of the ACM on Programming Languages10.1145/36498328:OOPSLA1(583-612)Online publication date: 29-Apr-2024
  • (2023)Inference of Resource Management SpecificationsProceedings of the ACM on Programming Languages10.1145/36228587:OOPSLA2(1705-1728)Online publication date: 16-Oct-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '99: Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
May 1999
304 pages
ISBN:1581130945
DOI:10.1145/301618
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 May 1999

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

PLDI99

Acceptance Rates

PLDI '99 Paper Acceptance Rate 26 of 130 submissions, 20%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)353
  • Downloads (Last 6 weeks)45
Reflects downloads up to 14 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Oxidizing OCaml with Modal Memory ManagementProceedings of the ACM on Programming Languages10.1145/36746428:ICFP(485-514)Online publication date: 15-Aug-2024
  • (2024)Qualifying System F<:: Some Terms and Conditions May ApplyProceedings of the ACM on Programming Languages10.1145/36498328:OOPSLA1(583-612)Online publication date: 29-Apr-2024
  • (2023)Inference of Resource Management SpecificationsProceedings of the ACM on Programming Languages10.1145/36228587:OOPSLA2(1705-1728)Online publication date: 16-Oct-2023
  • (2023)Simple Reference Immutability for System F<:Proceedings of the ACM on Programming Languages10.1145/36228287:OOPSLA2(857-881)Online publication date: 16-Oct-2023
  • (2023)AtomiS: Data-Centric Synchronization Made PracticalProceedings of the ACM on Programming Languages10.1145/36228017:OOPSLA2(116-145)Online publication date: 16-Oct-2023
  • (2023)Practical Inference of Nullability TypesProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616326(1395-1406)Online publication date: 30-Nov-2023
  • (2023)On the Relationship between Code Verifiability and UnderstandabilityProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616242(211-223)Online publication date: 30-Nov-2023
  • (2023)Pluggable Type Inference for Free2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE)10.1109/ASE56229.2023.00186(1542-1554)Online publication date: 11-Sep-2023
  • (2023)Error Localization for Sequential Effect SystemsStatic Analysis10.1007/978-3-031-44245-2_16(343-370)Online publication date: 22-Oct-2023
  • (2021)Lightweight verification via specialized typecheckersProceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3468264.3473105(1635-1639)Online publication date: 20-Aug-2021
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media