File tree Expand file tree Collapse file tree 5 files changed +47
-5
lines changed Expand file tree Collapse file tree 5 files changed +47
-5
lines changed Original file line number Diff line number Diff line change 50
50
51
51
- name : Test libmimalloc-sys crate bindings (no secure)
52
52
run : cargo run -p libmimalloc-sys-test
53
+
54
+ - name : Build (extended)
55
+ run : cargo build --features extended
56
+
57
+ - name : Test (extended)
58
+ run : cargo test --features extended
59
+
60
+ - name : Test libmimalloc-sys crate bindings (extended)
61
+ run : cargo run --features extended -p libmimalloc-sys-test
53
62
54
63
lint :
55
64
name : Rustfmt / Clippy
Original file line number Diff line number Diff line change @@ -31,3 +31,4 @@ debug = ["libmimalloc-sys/debug"]
31
31
debug_in_debug = [" libmimalloc-sys/debug_in_debug" ]
32
32
local_dynamic_tls = [" libmimalloc-sys/local_dynamic_tls" ]
33
33
no_thp = [" libmimalloc-sys/no_thp" ]
34
+ extended = [" libmimalloc-sys/extended" ]
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ fn main() {
9
9
10
10
let target_os = env:: var ( "CARGO_CFG_TARGET_OS" ) . expect ( "target_os not defined!" ) ;
11
11
let target_family = env:: var ( "CARGO_CFG_TARGET_FAMILY" ) . expect ( "target_family not defined!" ) ;
12
+ let target_arch = env:: var ( "CARGO_CFG_TARGET_ARCH" ) . expect ( "target_arch not defined!" ) ;
12
13
13
14
if env:: var_os ( "CARGO_FEATURE_OVERRIDE" ) . is_some ( ) {
14
15
// Overriding malloc is only available on windows in shared mode, but we
@@ -53,4 +54,9 @@ fn main() {
53
54
}
54
55
55
56
build. compile ( "mimalloc" ) ;
57
+
58
+ // on armv6 we need to link with libatomic
59
+ if target_os == "linux" && target_arch == "arm" {
60
+ println ! ( "cargo:rustc-link-lib=dylib=atomic" ) ;
61
+ }
56
62
}
Original file line number Diff line number Diff line change
1
+ use crate :: MiMalloc ;
2
+
3
+ impl MiMalloc {
4
+ /// Get the mimalloc version.
5
+ ///
6
+ /// For mimalloc version 1.8.6, this will return 186.
7
+ pub fn version ( & self ) -> u32 {
8
+ unsafe { ffi:: mi_version ( ) as u32 }
9
+ }
10
+ }
11
+
12
+ #[ cfg( test) ]
13
+ mod test {
14
+ use super :: * ;
15
+
16
+ #[ test]
17
+ fn it_gets_version ( ) {
18
+ let version = MiMalloc . version ( ) ;
19
+ assert ! ( version != 0 ) ;
20
+ }
21
+ }
Original file line number Diff line number Diff line change 13
13
//! static GLOBAL: MiMalloc = MiMalloc;
14
14
//! ```
15
15
//!
16
- //! ## Usage without secure mode
17
- //! By default this library builds mimalloc in secure mode. This means that
18
- //! heap allocations are encrypted, but this results in a 3% increase in overhead.
16
+ //! ## Usage with secure mode
17
+ //! Using secure mode adds guard pages,
18
+ //! randomized allocation, encrypted free lists, etc. The performance penalty is usually
19
+ //! around 10% according to [mimalloc's](https://github.com/microsoft/mimalloc)
20
+ //! own benchmarks.
19
21
//!
20
- //! To disable secure mode, in `Cargo.toml`:
22
+ //! To enable secure mode, put in `Cargo.toml`:
21
23
//! ```rust,ignore
22
24
//! [dependencies]
23
- //! mimalloc = { version = "*", default- features = false }
25
+ //! mimalloc = { version = "*", features = ["secure"] }
24
26
//! ```
25
27
26
28
extern crate libmimalloc_sys as ffi;
27
29
30
+ #[ cfg( feature = "extended" ) ]
31
+ mod extended;
32
+
28
33
use core:: alloc:: { GlobalAlloc , Layout } ;
29
34
use core:: ffi:: c_void;
30
35
use ffi:: * ;
You can’t perform that action at this time.
0 commit comments