[[package]]
name = "bitflags"
-version = "1.3.2"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
[[package]]
name = "blake2"
"winapi 0.3.9",
]
+[[package]]
+name = "clipboard-win"
+version = "4.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3db8340083d28acb43451166543b98c838299b7e0863621be53a338adceea0ed"
+dependencies = [
+ "error-code",
+ "str-buf",
+ "winapi 0.3.9",
+]
+
[[package]]
name = "cloudabi"
version = "0.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
+[[package]]
+name = "endian-type"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
+
+[[package]]
+name = "error-code"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5115567ac25674e0043e472be13d14e537f37ea8aa4bdc4aef0c89add1db1ff"
+dependencies = [
+ "libc",
+ "str-buf",
+]
+
+[[package]]
+name = "fd-lock"
+version = "3.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfc110fe50727d46a428eed832df40affe9bf74d077cac1bf3f2718e823f14c5"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "windows-sys",
+]
+
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-[[package]]
-name = "fs2"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
-dependencies = [
- "libc",
- "winapi 0.3.9",
-]
-
[[package]]
name = "fuchsia-cprng"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
+[[package]]
+name = "memoffset"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
+dependencies = [
+ "autocfg 1.0.1",
+]
+
[[package]]
name = "mio"
version = "0.6.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+[[package]]
+name = "nibble_vec"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
+dependencies = [
+ "smallvec",
+]
+
[[package]]
name = "nix"
version = "0.15.0"
[[package]]
name = "nix"
-version = "0.19.1"
+version = "0.22.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2"
+checksum = "d3bb9a13fa32bc5aeb64150cd3f32d6cf4c748f8f8a417cce5d2eb976a8370ba"
dependencies = [
"bitflags",
"cc",
"cfg-if 1.0.0",
"libc",
+ "memoffset",
]
[[package]]
"proc-macro2 1.0.32",
]
+[[package]]
+name = "radix_trie"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
+dependencies = [
+ "endian-type",
+ "nibble_vec",
+]
+
[[package]]
name = "rand"
version = "0.6.5"
[[package]]
name = "rustyline"
-version = "7.1.0"
+version = "9.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8227301bfc717136f0ecbd3d064ba8199e44497a0bdd46bb01ede4387cfd2cec"
+checksum = "790487c3881a63489ae77126f57048b42d62d3b2bafbf37453ea19eedb6340d6"
dependencies = [
"bitflags",
"cfg-if 1.0.0",
+ "clipboard-win",
"dirs-next",
- "fs2",
+ "fd-lock",
"libc",
"log",
"memchr",
- "nix 0.19.1",
+ "nix 0.22.2",
+ "radix_trie",
"scopeguard",
+ "smallvec",
"unicode-segmentation",
"unicode-width",
"utf8parse",
[[package]]
name = "security-framework"
-version = "2.4.2"
+version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87"
+checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467"
dependencies = [
"bitflags",
"core-foundation",
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+[[package]]
+name = "str-buf"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d44a3643b4ff9caf57abcee9c2c621d6c03d9135e0d8b589bd9afb5992cb176a"
+
[[package]]
name = "string_cache"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+[[package]]
+name = "windows-sys"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82ca39602d5cbfa692c4b67e3bcbb2751477355141c1ed434c94da4186836ff6"
+dependencies = [
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52695a41e536859d5308cc613b4a022261a274390b25bd29dfff4bf08505f3c2"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f54725ac23affef038fecb177de6c9bf065787c2f432f79e3c373da92f3e1d8a"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d5158a43cc43623c0729d1ad6647e62fa384a3d135fd15108d37c683461f64"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc31f409f565611535130cfe7ee8e6655d3fa99c1c61013981e491921b5ce954"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f2b8c7cbd3bfdddd9ab98769f9746a7fad1bca236554cd032b78d768bc0e89f"
+
[[package]]
name = "ws2_32-sys"
version = "0.2.1"
phf = { version = "0.9", features = ["macros"] }
ref_thread_local = "0.0.0"
rug = { version = "1.12.0", optional = true }
-rustyline = "7.0.0"
+rustyline = "9.0.0"
ring = "0.16.13"
ripemd160 = "0.8.0"
sha3 = "0.8.2"
unsafe fn drop_slab_in_place(value: &mut AllocSlab) {
match value.header.tag() {
ArenaHeaderTag::Integer => {
- ptr::drop_in_place(value.payload_offset() as *mut Integer);
+ ptr::drop_in_place(value.payload_offset::<Integer>());
}
ArenaHeaderTag::Rational => {
- ptr::drop_in_place(value.payload_offset() as *mut Rational);
+ ptr::drop_in_place(value.payload_offset::<Rational>());
}
ArenaHeaderTag::InputFileStream => {
- ptr::drop_in_place(value.payload_offset() as *mut InputFileStream);
+ ptr::drop_in_place(value.payload_offset::<InputFileStream>());
}
ArenaHeaderTag::OutputFileStream => {
- ptr::drop_in_place(value.payload_offset() as *mut OutputFileStream);
+ ptr::drop_in_place(value.payload_offset::<OutputFileStream>());
}
ArenaHeaderTag::NamedTcpStream => {
- ptr::drop_in_place(value.payload_offset() as *mut NamedTcpStream);
+ ptr::drop_in_place(value.payload_offset::<NamedTcpStream>());
}
ArenaHeaderTag::NamedTlsStream => {
- ptr::drop_in_place(value.payload_offset() as *mut NamedTlsStream);
+ ptr::drop_in_place(value.payload_offset::<NamedTlsStream>());
}
- // ArenaHeaderTag::PausedPrologStream => {
- // // idea: PausedPrologStream with only the buffer of unread characters.
- // // no stream to be wrapped, no nuttin'.
- // ptr::drop_in_place(value.payload_offset() as *mut PausedPrologStream);
- // }
ArenaHeaderTag::ReadlineStream => {
- ptr::drop_in_place(value.payload_offset() as *mut ReadlineStream);
+ ptr::drop_in_place(value.payload_offset::<ReadlineStream>());
}
ArenaHeaderTag::StaticStringStream => {
- ptr::drop_in_place(value.payload_offset() as *mut StaticStringStream);
+ ptr::drop_in_place(value.payload_offset::<StaticStringStream>());
}
ArenaHeaderTag::ByteStream => {
- ptr::drop_in_place(value.payload_offset() as *mut ByteStream);
+ ptr::drop_in_place(value.payload_offset::<ByteStream>());
}
ArenaHeaderTag::OssifiedOpDir => {
- ptr::drop_in_place(
- mem::transmute::<_, *mut OssifiedOpDir>(value.payload_offset())
- );
+ ptr::drop_in_place(value.payload_offset::<OssifiedOpDir>());
}
ArenaHeaderTag::LiveLoadState | ArenaHeaderTag::InactiveLoadState => {
- ptr::drop_in_place(
- mem::transmute::<_, *mut LiveLoadState>(value.payload_offset())
- );
+ ptr::drop_in_place(value.payload_offset::<LiveLoadState>());
}
ArenaHeaderTag::Dropped => {
}
ArenaHeaderTag::TcpListener => {
- ptr::drop_in_place(value.payload_offset() as *mut TcpListener);
+ ptr::drop_in_place(value.payload_offset::<TcpListener>());
}
ArenaHeaderTag::F64 | ArenaHeaderTag::StandardOutputStream |
ArenaHeaderTag::StandardErrorStream | ArenaHeaderTag::NullStream => {
self.header.size() as usize + mem::size_of::<AllocSlab>()
}
- fn payload_offset(&self) -> *const u8 {
+ fn payload_offset<T>(&self) -> *mut T {
let mut ptr = (self as *const AllocSlab) as usize;
ptr += mem::size_of::<AllocSlab>();
- ptr as *const u8
+ ptr as *mut T
}
}
}
}
-/*
-#[derive(Debug)]
-pub struct NullStream {}
-*/
-
#[derive(Debug)]
pub struct StandardOutputStream {}
};
}
-/*
-pub mod testing {
- use super::PausedPrologStream;
-
- impl PausedPrologStream {
- #[allow(dead_code)]
- pub fn write_test_input(&mut self, string: &str) {
- self.bytes.extend(string.as_bytes().iter().rev());
- }
- }
-}
-*/
-/*
-impl ArenaAllocated for PausedPrologStream {
- type PtrToAllocated = TypedArenaPtr<PausedPrologStream>;
-
- #[inline]
- fn tag() -> ArenaHeaderTag {
- ArenaHeaderTag::PausedPrologStream
- }
-
- #[inline]
- fn size(&self) -> usize {
- mem::size_of::<PausedPrologStream>()
- }
-
- #[inline]
- fn copy_to_arena(self, dst: *mut Self) -> Self::PtrToAllocated {
- unsafe {
- ptr::write(dst, self);
- TypedArenaPtr::new(dst as *mut Self)
- }
- }
-}
-
-#[derive(Debug)]
-pub struct PausedPrologStream {
- bytes: Vec<u8>,
- paused_stream: Stream,
-}
-
-impl PausedPrologStream {
- #[inline]
- pub fn new() -> Self {
- PausedPrologStream {
- bytes: vec![],
- paused_stream: Stream::Null(StreamOptions::default()),
- }
- }
-}
-
-impl Read for PausedPrologStream {
- #[inline]
- fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
- self.paused_stream.read(buf)
- }
-}
-*/
-
arena_allocated_impl_for_stream!(CharReader<ByteStream>, ByteStream);
arena_allocated_impl_for_stream!(CharReader<InputFileStream>, InputFileStream);
arena_allocated_impl_for_stream!(OutputFileStream, OutputFileStream);
}
}
- /*
- fn unpause_stream(&mut self) {
- let stream_inst = match self {
- Stream::PausedProlog(paused) if paused.bytes.is_empty() => {
- mem::replace(&mut paused.paused_stream, Stream::Null(StreamOptions::default()))
- }
- _ => {
- return;
- }
- };
-
- *self = stream_inst;
- }
- */
-
#[inline]
pub(crate) fn add_lines_read(&mut self, incr_num_lines_read: usize) {
match self {