Architectural considerations for a new generation of protocols
SIGCOMM '90 Proceedings of the ACM symposium on Communications architectures & protocols
A dynamic network architecture
ACM Transactions on Computer Systems (TOCS)
The structuring of systems using upcalls
Proceedings of the tenth ACM symposium on Operating systems principles
Note on Conditional Compilation in Standard ML
Note on Conditional Compilation in Standard ML
Set-based analysis of ML programs
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
A structured TCP in standard ML.
SIGCOMM '94 Proceedings of the conference on Communications architectures, protocols and applications
Optimizing ML with run-time code generation
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Research in programming languages for composability, safety, and performance
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Generational stack collection and profile-driven pretenuring
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Very concurrent mark-&-sweep garbage collection without fine-grain synchronization
Proceedings of the 1st international symposium on Memory management
Typed cross-module compilation
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Transparent modules with fully syntatic signatures
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
The Fox Project: a language-structured approach to networking software
Crossroads - Special issue on networks
Packet types: abstract specification of network protocol messages
Proceedings of the conference on Applications, Technologies, Architectures, and Protocols for Computer Communication
Modular verification of collaboration-based software designs
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
A Network Protocol Stack in Standard ML
Higher-Order and Symbolic Computation
Type-Safe linking with recursive DLLs and shared libraries
ACM Transactions on Programming Languages and Systems (TOPLAS)
Safe-for-Space Threads in Standard ML
Higher-Order and Symbolic Computation
The Influence of Software Module Systems on Modular Verification
Proceedings of the 9th International SPIN Workshop on Model Checking of Software
A Mixin-Based, Semantics-Based Approach to Reusing Domain-Specific Programming Languages
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Sharing in Typed Module Assembly Language
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Higher-order architectural connectors
ACM Transactions on Software Engineering and Methodology (TOSEM)
Distributed communication in ML
Journal of Functional Programming
Optimizing ML with run-time code generation
ACM SIGPLAN Notices - Best of PLDI 1979-1999
TIL: a type-directed, optimizing compiler for ML
ACM SIGPLAN Notices - Best of PLDI 1979-1999
ML Module Mania: A Type-Safe, Separately Compiled, Extensible Interpreter
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
Advanced programming languages such as Standard ML have rarely been used for systems programming tasks such as operating systems and network communications. In order to understand more fully the requirements of systems programming, we have implemented a suite of industry-standard network communication protocols in a completely type-safe extension of Standard ML. While the implementation has only recently become operational, we already observe acceptable communications throughput. We make careful use of the Standard ML modules system, with the core component of the implementation being a signature which is generic to all communications protocols. This generic protocol is then specialized for specific protocols, and these are implemented by functors parameterized by generic protocols. This leads naturally to a layered system structure and also provides an important and useful “mix-and-match” capability in composing protocols into complex networking systems.We have found the advanced features of Standard ML, in particular the modules system, static typing, and higher-order functions, to be extremely useful in building complex communications systems. The type compatibility of the various components of a system is guaranteed by the compiler. Furthermore, we find it significant that most of the information needed to understand the structure and interactions in our code can be obtained from a study of the signatures alone. Perhaps most important is that we have been able to use the expressive power of Standard ML modules to give concrete expression to previously ad hoc system-structuring concepts developed by other researchers in the field of network communications. For language designers and implementors, our experience has also pointed out specific areas for further work that may lead to advanced languages that are useful for systems programming.