We introduce a new lambda calculus with futures, Lambda(fut), that models the operational semantics of concurrent statically typed functional programming languages with mixed eager and lazy threads such as Alice ML, a concurrent extension of Standard ML. Lambda(fut) is a minimalist extension of the call-by-value lambda-calculus that is sufficiently expressive to define and combine a variety of standard concurrency abstractions, such as channels, semaphores, and ports. Despite its minimality, the basic machinery of Lambda(fut) is sufficiently powerful to support explicit recursion and call-by-need evaluation. We present a static type system for Lambda(fut) and distinguish a fragment of Lambda(fut) that we prove to be uniformly confluent. This result confirms our intuition that reference cells are the sole source of indeterminism.
This site will show how to write the concurrency section of A Tour of Go in Haskell. A Tour of Go is a famous tutorial of Go. Haskell has concurrency features similar to Go: lightweight thread, channel, etc.. So it should be interesting to compare equivalent concurrent programs in Haskell and Go.
Akka is the platform for the next generation event-driven, scalable and fault-tolerant architectures on the JVM
We believe that writing correct concurrent, fault-tolerant and scalable applications is too hard. Most of the time it's because we are using the wrong tools and the wrong level of abstraction.
Akka is here to change that.
Using the Actor Model together with Software Transactional Memory we raise the abstraction level and provides a better platform to build correct concurrent and scalable applications.
For fault-tolerance we adopt the "Let it crash" / "Embrace failure" model which have been used with great success in the telecom industry to build applications that self-heals, systems that never stop.
Actors also provides the abstraction for transparent distribution and the basis for truly scalable and fault-tolerant applications.
Akka is Open Source and available under the Apache 2 License.
The process of writing large parallel programs is complicated by the need to specify both the parallel behaviour of the program and the algorithm that is to be used to compute its result.
MINA is a simple yet full-featured network application framework which provides:
* Unified API for various transport types:
o TCP/IP & UDP/IP via Java NIO
o Serial communication (RS232) via RXTX
o In-VM pipe communication
o You can implement your own!
* Filter interface as an extension point; similar to Servlet filters
* Low-level and high-level API:
o Low-level: uses ByteBuffers
o High-level: uses user-defined message objects and codecs
* Highly customizable thread model:
o Single thread
o One thread pool
o More than one thread pools (i.e. SEDA)
* Out-of-the-box SSL · TLS · StartTLS support using Java 5 SSLEngine
* Overload shielding & traffic throttling
* Unit testability using mock objects
* JMX managability
* Stream-based I/O support via StreamIoHandler
* Integration with well known containers such as PicoContainer and Spring
* Smooth migration from Netty, an ancestor of Apache MINA.
We have designed, implemented, and evaluated AtomCaml, an extension to Objective Caml that provides a synchronization primitive for atomic (transactional) execution of code. A first-class primitive function of type (unit->'a)->'a evaluates its argument (which may call other functions, even external C functions) as though no other thread has interleaved execution. Our design ensures fair scheduling and obstruction-freedom. Our implementation extends the Objective Caml bytecode compiler and run-time system to support atomicity. A logging-and-rollback approach lets us undo uncompleted atomic blocks upon thread pre-emption, and retry them when the thread is rescheduled. The mostly functional nature of the Caml language and the Objective Caml implementation's commitment to a uniprocessor execution model (i.e., threads are interleaved, not executed simultaneously) allow particularly efficient logging.
R. Utterback, K. Agrawal, J. Fineman, und I. Lee. Proceedings of the 28th ACM Symposium on Parallelism in Algorithms and Architectures, Seite 83--94. ACM, (2016)
A. Matveev, N. Shavit, P. Felber, und P. Marlier. Proceedings of the 25th Symposium on Operating Systems Principles, Seite 168--183. New York, NY, USA, ACM, (2015)
H. Sun, D. Bonetta, F. Schiavio, und W. Binder. Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization, Seite 61--72. IEEE Press, (2019)
M. Frigo, P. Halpern, C. Leiserson, und S. Lewin-Berlin. Proceedings of the twenty-first annual symposium on Parallelism in algorithms and architectures, Seite 79--90. New York, NY, USA, ACM, (2009)
M. Nielsen, V. Sassone, und G. Winskel. A Decade of Concurrency, Reflections and Perspectives, REX School/Symposium, Seite 425--476. London, UK, Springer-Verlag, (1994)
B. Morandi, S. Bauer, und B. Meyer. Advanced Lectures on Software Engineering, LASER Summer School 2007/2008, Volume 6029 von Lecture Notes in Computer Science, Seite 41-90. Springer, (2008)
B. Claudel, Q. Sabah, und J. Stefani. Formal Techniques for Distributed Objects, Components, and Systems, Volume 9039 von Lecture Notes in Computer Science, Springer, (2015)
J. Bezivin. OOPSLA '87: Conference proceedings on Object-oriented programming systems, languages and applications, Seite 394--405. New York, NY, USA, ACM, (1987)
J. Zhou, X. Xiao, und C. Zhang. Proceedings of the 34th International Conference on Software Engineering, Seite 892--902. Piscataway, NJ, USA, IEEE Press, (2012)
J. De Koster, S. Marr, und T. D'Hondt. Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming, Seite 317--318. ACM, (Februar 2012)(Poster).
J. De Koster, S. Marr, T. D'Hondt, und T. Van Cutsem. Proceedings of AGERE! 2013, 3rd International Workshop on Programming based on Actors, Agents, and Decentralized Control, Seite 61--68. (27.10.2013)
B. Daloze, C. Seaton, D. Bonetta, und H. Mössenböck. Proceedings of the 10th International Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems, (2015)
M. Herlihy. PODC '06: Proceedings of the twenty-fifth annual ACM symposium on Principles of distributed computing, Seite 1--2. New York, NY, USA, ACM, (2006)
J. Protze, M. Schulz, D. Ahn, und M. Müller. Proceedings of the 27th International Symposium on High-Performance Parallel and Distributed Computing, Seite 144--155. ACM, (2018)
H. Schippers, T. Van Cutsem, S. Marr, M. Haupt, und R. Hirschfeld. Proceedings of the Fourth Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), Seite 4--9. ACM, (06.07.2009)
J. Swalens, S. Marr, J. De Koster, und T. Van Cutsem. Proceedings of the Workshop on Programming Language Approaches to Concurrency and communication-cEntric Software (PLACES), Volume 155 von PLACES '14, Seite 54--60. (April 2014)
S. Marr, E. Gonzalez Boix, und H. Mössenböck. Proceedings of the 9th Arbeitstagung Programmiersprachen, Volume 1559 von ATPS'16, Seite 91--95. CEUR-WS, (25.02.2016)
J. Swalens, J. De Koster, und W. De Meuter. 30th European Conference on Object-Oriented Programming (ECOOP 2016), Volume 56 von Leibniz International Proceedings in Informatics (LIPIcs), Seite 23:1--23:28. Dagstuhl, Germany, Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik, (2016)
S. Tasharofi, R. Karmani, S. Lauterburg, A. Legay, D. Marinov, und G. Agha. Formal Techniques for Distributed Systems: Joint 14th IFIP WG 6.1 International Conference, FMOODS 2012 and 32nd IFIP WG 6.1 International Conference, FORTE 2012, Stockholm, Sweden, June 13-16, 2012. Proceedings, Seite 219--234. Springer, (2012)
T. Tu, X. Liu, L. Song, und Y. Zhang. Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS \textquotesingle19, ACM, (2019)
S. Tasiran, A. Sezgin, und S. Quadeer. Design and Validation of Concurrent Systems, 09361, Dagstuhl, Germany, Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, Germany, (2010)
B. Demsky, und P. Lam. Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, Seite 395--404. New York, NY, USA, ACM, (2010)
C. Ritson, und J. Simpson. Communicating Process Architectures 2008, Volume 66 von Concurrent Systems Engineering Series, Seite 293--307. Amsterdam, The Netherlands, IOS Press, (September 2008)
S. Abramsky. Electronic Notes in Theoretical Computer Science, (2006)Proceedings of the Workshop "Essays on Algebraic Process Calculi" (APC 25)Proceedings of the Workshop "Essays on Algebraic Process Calculi" (APC 25).
S. Marr, M. De Wael, M. Haupt, und T. D'Hondt. Proceedings of the 5th Workshop on Virtual Machines and Intermediate Languages, Seite 341--348. ACM, (Oktober 2011)
S. Tasharofi, P. Dinges, und R. Johnson. ECOOP 2013 – Object-Oriented Programming, Volume 7920 von Lecture Notes in Computer Science, Seite 302-326. Springer Berlin Heidelberg, (2013)
R. von Behren, J. Condit, und E. Brewer. Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9, Seite 4. Berkeley, CA, USA, USENIX Association, (2003)