dettrace
sapling
dettrace | sapling | |
---|---|---|
2 | 43 | |
29 | 5,828 | |
- | 1.1% | |
2.6 | 10.0 | |
over 3 years ago | about 9 hours ago | |
C++ | Rust | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 only |
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.
dettrace
-
Deterministic Linux for Controlled Testing and Software Bug-Finding
Note that this is a follow-on project from the earlier Dettrace system, which was applied mainly to reproducible builds (as in the academic paper, https://dl.acm.org/doi/10.1145/3373376.3378519, and presented to the Debian Reproducible Builds summit):
- https://github.com/dettrace/dettrace
And one cool part of it is this Rust program instrumentation layer:
- https://github.com/facebookexperimental/reverie
It's good for building OS-emulator style projects or tracing tools.
-
Shadow Simlulator – run real applications over a simulated Internet topology
We've started looking into eBPF a bit - IIUC eBPF by itself doesn't give us the ability to service or arbitrarily manipulate the traced process's syscalls.
We have recently learned of an interesting technique that dettrace [1] uses of combining seccomp with an eBPF filter and ptrace. Instead of generating a ptrace-stop for every syscall (as we do now, using PTRACE_SYSEMU), they use a seccomp policy with an eBPF filter, s.t. a ptrace-stop is only generated for syscalls that violate the policy, allowing them to emulate the result of those syscalls. syscalls that don't violate the policy are allowed to execute natively, saving a lot of overhead.
[1]: https://github.com/dettrace/dettrace
This works great for them since they want to emulate a relatively small subset of syscalls. In our case we want to emulate most syscalls, so it's not as clear-cut of a win. We have found though that if we use an LD_PRELOAD'd shim in the target process to intercept syscalls and then service them via IPC, that's substantially faster than catching them with ptrace. That runs back into the problems with LD_PRELOAD in general of there being various ways of missing syscalls. but, we may be able to use that technique along with ptrace+seccomp+ebpf to intercept any syscalls that we'd otherwise miss. The seccomp technique would allow us to exempt the syscalls that our shim itself is making to do the IPC.
sapling
- Monorepos: Please Don't (2019)
-
Twenty Years Is Nothing
I am personally surprised that TFA didn't mention either jj or Sapling [0] given its emphasis on how both Git and svn were both made to be backwards compatible!
[0] https://github.com/facebook/sapling
-
Jj init – getting serious about replacing Git with Jujutsu
Lots to digest here! I have been keeping an eye on Pijul so it is cool to see some of its features implemented in jj. Sapling[0], similarly, is a new VCS tool out there which can work with a git repo. It also has anonymous branches, no staging area, supports stacked commits and can track the history of a commit over time. I've been using a similar workflow to the article's author: git with a UI to handle commits of hunks of a file to group related changes. My working branch often has unrelated changes that get tossed from branch to branch as I am able to commit. I haven't figured out where these new tools fit into my workflow yet, but I am glad there's new options that will help making working on a project more flexible and organized.
[0]: https://sapling-scm.com
- Sapling – A VCS from Meta
- Sapling: A Scalable, User-Friendly Source Control System
-
Ask HN: Can we do better than Git for version control?
yep both extended it and have versions that can work against GitHub/git servers.
sapling scm from meta has I think the best cli and VS code UX https://sapling-scm.com/
jj from google is also mercurial derived with very similar cli features like histedit and has support for deferring conflict resolution https://github.com/martinvonz/jj
- Your GitHub pull request workflow is slowing you down
- Sapling – A Scalable, User-Friendly Source Control System
- Mononoke
What are some alternatives?
mininet - Emulator for rapid prototyping of Software Defined Networks
go-git - A highly extensible Git implementation in pure Go.
shadow - Shadow is a discrete-event network simulator that directly executes real application code, enabling you to simulate distributed systems with thousands of network-connected processes in realistic and scalable private network experiments using your laptop, desktop, or server running Linux.
nextjs-template - A bit personalized version of the `with-typescript-eslint-jest` template.
core - Common Open Research Emulator
FTC-for-VS-Code - A VS Code extension for accessing FTC snippets, debugger, and Android cmdline tools from a button
shadow-plugin-tor - A Shadow plug-in that runs the Tor anonymity software
buck2-prelude - Prelude for the Buck2 project
imunes - Integrated Multiprotocol Network Emulator/Simulator
reactide - Reactide is the first dedicated IDE for React web application development.
reverie - An ergonomic and safe syscall interception framework for Linux.
dulwich - Pure-Python Git implementation