| Oct | NOV | Dec |
| 01 | ||
| 2019 | 2020 | 2021 |
COLLECTED BY
Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
History is littered with hundreds of conflicts over the future of a community, group, location or business that were "resolved" when one of the parties stepped ahead and destroyed what was there. With the original point of contention destroyed, the debates would fall to the wayside. Archive Team believes that by duplicated condemned data, the conversation and debate can continue, as well as the richness and insight gained by keeping the materials. Our projects have ranged in size from a single volunteer downloading the data to a small-but-critical site, to over 100 volunteers stepping forward to acquire terabytes of user-created data to save for future generations.
The main site for Archive Team is at archiveteam.org and contains up to the date information on various projects, manifestos, plans and walkthroughs.
This collection contains the output of many Archive Team projects, both ongoing and completed. Thanks to the generous providing of disk space by the Internet Archive, multi-terabyte datasets can be made available, as well as in use by the Wayback Machine, providing a path back to lost websites and work.
Our collection has grown to the point of having sub-collections for the type of data we acquire. If you are seeking to browse the contents of these collections, the Wayback Machine is the best first stop. Otherwise, you are free to dig into the stacks to see what you may find.
The Archive Team Panic Downloads are full pulldowns of currently extant websites, meant to serve as emergency backups for needed sites that are in danger of closing, or which will be missed dearly if suddenly lost due to hard drive crashes or server failures.
Collection: Archive Team: URLs
|
This PR makes |
Make RawFd implement the RawFd traits
Loading status checks…
82f5928
|
r? @dtolnay (rust_highfive has picked a reviewer for you, use r? to override) |
fix typos
Loading status checks…
acc136c
Contributor
|
I would generally assume that it is safe to take ownership of file descriptor returned from IntoRawFd. With changes here it would be unsafe, since RawFd is just an integer. |
spend another CI build to delete a double newline
Loading status checks…
3fe279f
Contributor
Author
|
@tmiasko That assumption would be wrong and any code which relies on it for safety is unsound, because |
|
Thanks for correction. I thought that trait was unsafe to implement. It is quite disappointing that it is otherwise. The search results from grep.app reveals that pretty much every single use of IntoRawFd as input bound is unsound, e.g., in wastime, nix, wayland-rs, duct.rs ... |
try again to appease tidy
Loading status checks…
35b30e2
Contributor
Author
|
Glanced at some of those APIs in crates I already had a copy of on my system, and I expect that using these API with invalid RawFds would lead to program bugs, but not undefined behavior. It seems pretty uncommon to rely on on fd validity for soundness. |
|
Note that |
|
It would be nice if it were an opaque type rather than an alias, but I don't think that could be changed backwards-compatibly. |
|
Even a transparent newtype would have been fine, but alas. |
|
I agree that it's unfortunate that we made The footgunniness is a consequence of that decision we have already made and stabilized; hobbling the API because of it is just leaving us in a worst-of-all-worlds situation where we have a footgunny API that is incomplete. The previous PR and reversion in 2017 seems to have happened with basically no discussion. Going to FCP to get a discussion. @rfcbot fcp merge |
|
@rfcbot fcp merge (with team tags) |
|
Team member @withoutboats has proposed to merge this. The next step is review by the rest of the tagged team members: No concerns currently listed. Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for info about what commands tagged team members can give me. |
|
It looks like the contract of
It means you could start doing this: fn take_fd(object: impl IntoRawFd) {
letfd= object.into_raw_fd();
// I'm now responsible for closing fd so I'd better do that
}letfd= object.as_raw_fd();
take_fd(fd);
// Probably going to get an `io::Error` here
object.do_something_else();
But as we've pointed out that these traits are totally safe and |
|
If people would rather I remove the impl of
The current API correctly understands that there is no guarantee that any method of getting a But normally even doing something very wrong with an fd will "just" result in an program error, not unsoundness. A double close is not a double free, a read on a random FD is not a wild pointer dereference. They are very bad and can even in the worst case lead to terrible outcomes like irretrievable data loss, security vulnerabilities, and so on. But we do not guarantee that they will never occur in safe code the same way we do with memory vulnerabilities. The best API makes this unlikely to occur. I think even with RawFd as a type alias, we've done a pretty good job because its very rare that users actually interact with RawFd, and they hopefully know to do so with care.
Mainly I have low-level APIs that need to take a |
|
Leaving the |
|
There was another attempt in #43254, again closed for the effect on |
|
I think we should seriously consider deprecating #[repr(transparent)]
pub struct UnixFd(pub raw::c_int); // or even just `Fd` |
I also think this is a good idea to explore, but its gonna be a pretty big transition. Not sure if there's enough energy for it. |
|
|
|
Makes sense to me. The footgun is weird, but I buy @withoutboats' argument: adding these impls doesn't make the footgun worse. A newtype might have been a better approach, but I don't know that it's enough of a value add to follow through on that at this point. At the very least, these impls improve the status quo and don't really make it any harder to pursue a newtype strategy later if we deemed it worth it. |
|
I would like to get feedback from @dtolnay before we merge this, since he participated in previous discussions and may have had concerns about these impls |
|
I think this is fine. @rfcbot reviewed
I notice another thing we would want but can't do is |
|
@bors r+ |
|
|
|
|
2ad6187
into
rust-lang:master
Successfully merging this pull request may close these issues.
None yet
13 participants Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. ●© 2020 GitHub, Inc. ●Terms ●Privacy ● ●Security ●Status ●Help ●Contact GitHub ●Pricing ●API ●Training ●Blog ●About You can’t perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.