Patchwork D11446: rust: Update the memmap2 crate to version 0.4.0

login
register
mail settings
Submitter phabricator
Date Sept. 17, 2021, 6:58 a.m.
Message ID <differential-rev-PHID-DREV-44t2wd4pcgl6tx74lle6-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/49762/
State Superseded
Headers show

Comments

phabricator - Sept. 17, 2021, 6:58 a.m.
SimonSapin created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This version:
  
  - Optionally implements the `StableDeref` trait, removing the need for a wrapper type doing that
  - Adds support for mapping empty files, which can routinely happen for dirstate-v2 data files. This was a cause of some failing tests when running with `run-tests.py --rhg --extra-config-opt rhg.status=1`

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11446

AFFECTED FILES
  rust/Cargo.lock
  rust/hg-core/Cargo.toml
  rust/hg-core/src/repo.rs

CHANGE DETAILS




To: SimonSapin, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/rust/hg-core/src/repo.rs b/rust/hg-core/src/repo.rs
--- a/rust/hg-core/src/repo.rs
+++ b/rust/hg-core/src/repo.rs
@@ -290,7 +290,7 @@ 
                 .mmap_open(docket.data_filename())
                 .io_not_found_as_none()?
             {
-                OwningDirstateMap::new_empty(MmapWrapper(data_mmap))
+                OwningDirstateMap::new_empty(data_mmap)
             } else {
                 OwningDirstateMap::new_empty(Vec::new())
             };
@@ -407,16 +407,3 @@ 
         Ok(RefMut::map(borrowed, |option| option.as_mut().unwrap()))
     }
 }
-
-// TODO: remove this when https://github.com/RazrFalcon/memmap2-rs/pull/22 is on crates.io
-struct MmapWrapper(memmap2::Mmap);
-
-impl std::ops::Deref for MmapWrapper {
-    type Target = [u8];
-
-    fn deref(&self) -> &[u8] {
-        self.0.deref()
-    }
-}
-
-unsafe impl stable_deref_trait::StableDeref for MmapWrapper {}
diff --git a/rust/hg-core/Cargo.toml b/rust/hg-core/Cargo.toml
--- a/rust/hg-core/Cargo.toml
+++ b/rust/hg-core/Cargo.toml
@@ -29,7 +29,7 @@ 
 crossbeam-channel = "0.4"
 micro-timer = "0.3.0"
 log = "0.4.8"
-memmap2 = "0.3.1"
+memmap2 = {version = "0.4", features = ["stable_deref_trait"]}
 zstd = "0.5.3"
 format-bytes = "0.2.2"
 
diff --git a/rust/Cargo.lock b/rust/Cargo.lock
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@ -1,5 +1,7 @@ 
 # This file is automatically @generated by Cargo.
 # It is not intended for manual editing.
+version = 3
+
 [[package]]
 name = "adler"
 version = "0.2.3"
@@ -511,11 +513,12 @@ 
 
 [[package]]
 name = "memmap2"
-version = "0.3.1"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357"
+checksum = "de5d3112c080d58ce560081baeaab7e1e864ca21795ddbf533d5b1842bb1ecf8"
 dependencies = [
  "libc",
+ "stable_deref_trait",
 ]
 
 [[package]]