boxxy
reverie
boxxy | reverie | |
---|---|---|
10 | 4 | |
1,224 | 538 | |
- | 14.5% | |
8.5 | 7.9 | |
5 days ago | 29 days ago | |
Rust | Rust | |
MIT License | GNU General Public License v3.0 or later |
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.
boxxy
-
What is the most useful project you've ever worked on?
I made a tool to control where Linux applications put their files via bind mounts and environment variables: https://github.com/queer/boxxy
I've heard that it's made it as far as university HPC clusters to help control iffy code written by students; I'm glad I managed to make that stuff a bit easier for the people operating them.
-
Show HN: peckish, a CLI/Rust library for Linux package manipulation
This is a tool I’ve been working on for the last ~6 months. It was born out of frustration trying to package boxxy[1] for different distros.
This was originally to be presented at RustConf 2023 in a few days, under the talk “Repackage the World!,” but unfortunately my health took a sudden turn for the worse and I’m no longer able to give the talk.
peckish IS NOT a replacement for distro-specific packaging tools, and its packages WILL NOT be compliant with every distribution’s standards for packages.
peckish IS:
- a way to make a quick-and-dirty packages for distributing a program
- a CLI/library for manipulating the contents of Linux packages
The core abstraction is an in-memory filesystem behind an async std::fs-like facade[2], allowing packages to be manipulated with more-intuitive random-access I/O instead of putting up with (nested) streaming archive formats. This facade also is used for ex. enabling easier archive manipulation[3], a library for copying between facade implementations[4], and more. This bets that most packages will never be larger than memory, which in my testing is a safe bet even with Docker images as inputs.
Sorry for adding more YAML to the world :P
[1] https://github.com/queer/boxxy
[2] https://github.com/queer/floppy-disk
[3] https://github.com/queer/flop
[4] https://github.com/queer/disk-drive
-
Temporary symlink in shell - "named process substitution" - rename a file without creating a copy/symlink on the disk?
boxxy
-
Is there a way to prepend a command for every slurm job submitted?
I am not sure if you know boxxy: it is a handy tool that uses linux userspace namespaces to wrap requests for a file to a proper (configurable) location.
-
Use the XDG Base Directory Specification
macOS + systemd? If on Linux this tool allows you to move config dir and file locations transparently. Pretty neat. https://github.com/queer/boxxy
- Show HN: boxxy – Control where Linux programs put files, without symlinks
reverie
- Reverie – A user space system-call interception framework for Linux
-
strace feels like magic — let’s fix that (with Rust)
By the way Facebook has a nice library/system for creating neat observability tools using a small amount of rust: https://github.com/facebookexperimental/reverie.
-
Show HN: boxxy – Control where Linux programs put files, without symlinks
For a structured approach to ptrace/syscall rewriting, you could try FB's reverie. I worked on and used it during an internship a few years back; it's pretty amazing at what it does.
https://github.com/facebookexperimental/reverie
-
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.
What are some alternatives?
xdg-ninja - A shell script which checks your $HOME for unwanted files and directories.
dettrace - A determinizing tracer using Ptrace
platformdirs - A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
Electron - :electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS
dotfiles - Dotfiles
sapling - A Scalable, User-Friendly Source Control System.
neovim - Vim-fork focused on extensibility and usability
hermit - Hermit launches linux x86_64 programs in a special, hermetically isolated sandbox to control their execution. Hermit translates normal, nondeterministic behavior, into deterministic, repeatable behavior. This can be used for various applications, including replay-debugging, reproducible artifacts, chaos mode concurrency testing and bug analysis.
spank-private-tmp - Slurm spank plugin to give each job private /tmp (and/or other dirs)
directories-rs - a mid-level library that provides config/cache/data paths, following the respective conventions on Linux, macOS and Windows
Cargo - The Rust package manager