Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Performance and evaluation of LISP systems
Performance and evaluation of LISP systems
On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Embedding continuations in procedural objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theoretical Computer Science
Theoretical Computer Science - International Joint Conference on Theory and Practice of Software Development, P
Communications of the ACM
Encapsulation constructs in systems programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
A single cached copy data coherence scheme for multiprocessor systems
ACM SIGARCH Computer Architecture News
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
Deciding ML typability is complete for deterministic exponential time
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
How to make destructive updates less destructive
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Design and implementation of Kyoto Common Lisp
Journal of Information Processing
Copying and Swapping: Influences on the Design of Reusable Software Components
IEEE Transactions on Software Engineering
Is there a use for linear logic?
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Islands: aliasing protection in object-oriented languages
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Janus: a step towards distributed constraint programming
Proceedings of the 1990 North American conference on Logic programming
Proving memory management invariants for a language based on linear logic
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
The Hermes language in outline form
ACM SIGPLAN Notices
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Stop-and-copy and one-bit reference counting
Information Processing Letters
Equal rights for functional objects or, the more things change, the more they are the same
ACM SIGPLAN OOPS Messenger
ACM SIGPLAN Notices
The Boyer benchmark meets linear logic
ACM SIGPLAN Lisp Pointers
Linear logic and permutation stacks—the Forth shall be first
ACM SIGARCH Computer Architecture News - Special issue: panel sessions of the 1991 workshop on multithreaded computers
Sparse polynomials and linear logic
ACM SIGSAM Bulletin
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
A semantic model of reference counting and its abstraction (detailed summary)
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Monitors: an operating system structuring concept
Communications of the ACM
A method for overlapping and erasure of lists
Communications of the ACM
Reference Manual for the ADA Programming Language
Reference Manual for the ADA Programming Language
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Evaluation of Parallel Copying Garbage Collection on a Shared-Memory Multiprocessor
IEEE Transactions on Parallel and Distributed Systems
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Engines build process abstractions
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Some practical methods for rapid combinator reduction
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Reification: Reflection without metaphysics
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Continuation-based multiprocessing
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
The incremental garbage collection of processes
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
Programming without pointer variables
Proceedings of the 1976 conference on Data : Abstraction, definition and structure
Rabbit: A Compiler for Scheme
Containment defines a class of recursive data structures
ACM SIGPLAN Notices
The NIL distributed systems programming language: a status report
ACM SIGPLAN Notices
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Promises: limited specifications for analysis and manipulation
Proceedings of the 20th international conference on Software engineering
Fine-Grained Multithreading with Process Calculi
IEEE Transactions on Computers - Special issue on the parallel architecture and compilation techniques conference
Ownership, encapsulation and the disjointness of type and effect
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Capabilities for Sharing: A Generalisation of Uniqueness and Read-Only
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Simple Ownership Types for Object Containment
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Change Detection for Aggregate Objects with Aliasing
ASWEC '97 Proceedings of the Australian Software Engineering Conference
Automated Support for Program Refactoring using Invariants
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Connecting effects and uniqueness with adoption
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Simplifying reasoning about objects with Tako
Proceedings of the 2006 conference on Specification and verification of component-based systems
Modular session types for distributed object-oriented programming
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PHALANX: parallel checking of expressive heap assertions
Proceedings of the 2010 international symposium on Memory management
Permission-based programming languages (NIER track)
Proceedings of the 33rd International Conference on Software Engineering
QVM: An Efficient Runtime for Detecting Defects in Deployed Systems
ACM Transactions on Software Engineering and Methodology (TOSEM)
Verification of snapshotable trees using access permissions and typestate
TOOLS'12 Proceedings of the 50th international conference on Objects, Models, Components, Patterns
Notions of aliasing and ownership
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
Programming languages should have 'use-once' variables in addition to the usual 'multiple-use' variables. 'Use-once' variables are bound to linear (unshared, unaliased, or singly-referenced) objects. Linear objects are cheap to access and manage, because they require no synchronization or tracing garbage collection. Linear objects can elegantly and efficiently solve otherwise difficult problems of functional/mostly-functional systems---e.g., in-place updating and the efficient initialization of functional objects. Use-once variables are ideal for directly manipulating resources which are inherently linear such as freelists and 'engine ticks' in reflective languages.A 'use-once' variable must be dynamically referenced exactly once within its scope. Unreferenced use-once variables must be explicitly killed, and multiply-referenced use-once variables must be explicitly copied; this duplication and deletion is subject to the constraint that some linear datatypes do not support duplication and deletion methods. Use-once variables are bound only to linear objects, which may reference other linear or non-linear objects. Non-linear objects can reference other non-linear objects, but can reference a linear object only in a way that ensures mutual exclusion.Although implementations have long had implicit use-once variables and linear objects, most languages do not provide the programmer any help for their utilization. For example, use-once variables allow for the safe/controlled use of reified language implementation objects like single-use continuations.Linear objects and use-once variables map elegantly into dataflow models of concurrent computation, and the graphical representations of dataflow models make an appealing visual linear programming language.