Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/curegit/session-csharp
Session-typed concurrent and distributed programming for .NET
https://github.com/curegit/session-csharp
concurrent-programming inter-process-communication session-types
Last synced: about 5 hours ago
JSON representation
Session-typed concurrent and distributed programming for .NET
- Host: GitHub
- URL: https://github.com/curegit/session-csharp
- Owner: curegit
- Created: 2019-01-22T14:27:58.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-11-28T15:16:11.000Z (12 months ago)
- Last Synced: 2023-11-28T16:52:42.814Z (12 months ago)
- Topics: concurrent-programming, inter-process-communication, session-types
- Language: C#
- Homepage: https://doi.org/10.48550/arXiv.2004.01325
- Size: 266 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SessionC#
*Session-typed concurrent and distributed programming for .NET*
**Fluent Session Programming in C#** (PLACES 2020) [[Paper](https://doi.org/10.48550/arXiv.2004.01325)] - Shunsuke Kimura, Keigo Imai
We propose **SessionC#**, a lightweight session typed library for safe concurrent/distributed programming.
The key features are (1) the improved fluent interface which enables writing communication in chained method calls, by exploiting C#'s `out` variables, and (2) amalgamation of session delegation with `async`/`await`, which materialises session cancellation in a limited form, which we call session intervention.
We show the effectiveness of our proposal via a Bitcoin miner application.## Code
The lightweight version, which includes only types, protocol combinators, and the endpoint API is summarized based on the paper, is available in the [SessionCSharpLight](./SessionCSharpLight/) directory.
## Requirements
Developed using the .NET SDK 8, supports a variety of operating systems, including Windows, macOS, and Linux.
## Examples
- [Tak calculation](./SessionCSharpExamples/TaraiProtocol/Program.cs)
- [A Travel Agency](./SessionCSharpExamples/TravelAgency/Program.cs)## Applications
- [A Bitcoin miner](./SessionCSharpApplications/BitcoinNonceCalculator/Program.cs)
- [A parallel http downloader](./SessionCSharpApplications/ParallelHttpDownloader/Program.cs)
- [Parallel polygon clipping](./SessionCSharpApplications/PolygonClippingPipeline/Program.cs)## Citation
```bibtex
@article{sessioncs,
title={Fluent Session Programming in C#},
volume={314},
ISSN={2075-2180},
url={http://dx.doi.org/10.4204/EPTCS.314.6},
DOI={10.4204/eptcs.314.6},
journal={Electronic Proceedings in Theoretical Computer Science},
publisher={Open Publishing Association},
author={Kimura, Shunsuke and Imai, Keigo},
year={2020},
month=apr, pages={61–75}
}
```