P
shuttle
P | shuttle | |
---|---|---|
8 | 4 | |
2,919 | 573 | |
0.9% | 3.5% | |
8.3 | 6.9 | |
5 days ago | about 1 month ago | |
C# | Rust | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
P
- Property-based testing in practice [pdf]
-
Gem adds support for creating state machines for attributes on any Ruby class
I worked on a state machine framework in another language, and have definitely have found less terse to be pretty good. Typing a few extra characters isn't that bad, especially if it makes some awful bit of evented code easier for someone to understand.
Of the things available open source, I think P-lang is pretty cool: https://github.com/p-org/P/blob/master/Tutorial/1_ClientServ...
-
The Actor Model and the Chess Clock
Your proposed syntax reminded me of https://p-org.github.io/P/
-
The TLA+ Video Course
I’ve gotten a lot of good about TLA+ and the more recent the P language has been really promising lately. It’s got a good pedigree and is being increasingly used as AWS as well.
- P Language
-
Learn TLA+
I tried to use TLA+ but what annoys me the most is the disconnection between the actual implementation and its code. I think the P language has a much better future just because it can generate code that works: https://github.com/p-org/P
-
Let's build a distributed Postgres proof of concept
It is tough.
My approach when learning new protocols like Raft or Paxos is to implement them in Pluscal (TLA+'s higher-level language) or P (https://github.com/p-org/P). I've found that helps separate the protocol-level concerns from the implementation-level concerns (sockets? wire format?) in a way that reduces the difficulty of learning the protocol.
shuttle
-
FoundationDB: A Distributed Key-Value Store
This is what we did for our KV store at S3: https://www.amazon.science/publications/using-lightweight-fo...
Using https://github.com/awslabs/shuttle which works on our real Rust code.
-
P Language
They've also developed a library that plugs into their actual Rust code to verify it (rather than writing a secondary model in TLA+ or P, it's easier to verify the actual system source code).
See https://github.com/awslabs/shuttle and a whitepaper at https://www.amazon.science/publications/using-lightweight-fo...
Disclaimer: used to work at AWS and had some involvement in this stuff
-
Best tool to find deadlocks (in async code)
loom and shuttle can help you narrow down the problem.
-
Eliminating Data Races in Firefox
Loom is really awesome, though it is focused on exhaustive testing, so not suitable for code that has a lot of possible interleavings (e.g. due to a ton of threads, or a large body of code).
There is a new project out of AWS called Shuttle [1] which is like Loom, but it does random exploration instead of exhaustive exploration, which enables massively distributed testing of really complicated stuff.
[1] https://github.com/awslabs/shuttle
What are some alternatives?
Hybridizer - Examples of C# code compiled to GPU by hybridizer
loom - Concurrency permutation testing tool for Rust.
Testura.Code - Testura.Code is a wrapper around the Roslyn API and used for generation, saving and compiling C# code. It provides methods and helpers to generate classes, methods, statements and expressions.
hyhac - A HyperDex Haskell Client
Mond - A scripting language for .NET Core
tigris - Tigris is an Open Source Serverless NoSQL Database and Search Platform.
PeachPie - PeachPie - the PHP compiler and runtime for .NET and .NET Core
foundationdb - FoundationDB - the open source, distributed, transactional key-value store
Iron python - Implementation of the Python programming language for .NET Framework; built on top of the Dynamic Language Runtime (DLR).
refound - a RethinkDB implementation backed by FoundationDB
Amplifier.NET - Amplifier allows .NET developers to easily run complex applications with intensive mathematical computation on Intel CPU/GPU, NVIDIA, AMD without writing any additional C kernel code. Write your function in .NET and Amplifier will take care of running it on your favorite hardware.
Servo - Servo, the embeddable, independent, memory-safe, modular, parallel web rendering engine