1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! Range oriented data sources for iris.
//!
//! A decoder declares the byte ranges it needs and the host serves them. That inversion is what lets
//! the same decoder run against a local file, a page cache, and an object store.
//!
//! What exists so far is [`Window`], the sliding file view the host maps ranges through. The
//! `RangeSource` trait it will sit behind, and the object store implementation of it, belong to a
//! later milestone. See `docs/ROADMAP.md`.
//!
//! # Unsafe code
//!
//! This is the one crate in the workspace that has any. Reserving address space and mapping a file
//! into part of it is not expressible without it, and the alternative to writing it here is writing
//! it in the crate that runs the sandbox, which is the last place it should be. Every other crate
//! carries `#![forbid(unsafe_code)]` and keeps it.
//!
//! All of it is in [`window`] and its platform modules, every block carries a comment saying why it
//! is sound, and the stress test in `tests/window.rs` runs thousands of remap cycles on all four
//! supported platforms on every change.
pub use ;
/// Asks the operating system whether an address range can be read, without reading it.
///
/// This exists for the tests that hold an address across a window slide, where the property being
/// checked is that the address stopped being readable and the obvious way to check it ends the
/// process. It is behind a feature because it is a question about a mapping rather than about a data
/// source, and nothing that uses this crate for its actual purpose should need to ask it.
/// The version of this crate, as reported by build metadata.
pub const VERSION: &str = env!;