aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2019-01-07 13:59:08 -0800
committerDaniel Mueller <deso@posteo.net>2019-01-07 13:59:08 -0800
commit9a951f64992af28458da15590ca99456b3d36cbc (patch)
treea5272fde422279355ffccc51cb2c0e19c097e62b
parent790e84091e10d52d2dd33aab7400b5d6345200a7 (diff)
downloadnitrocli-9a951f64992af28458da15590ca99456b3d36cbc.tar.gz
nitrocli-9a951f64992af28458da15590ca99456b3d36cbc.tar.bz2
Switch to using the system allocator
In the past we have already taken a couple of steps to reduce the size of the final binary, arguing that binary size is the metric of most relevance for the program at hand: - the memory footprint is close to irrelevant because the program does not stay resident in memory for long - execution speed is likely dominated by communication with the Nitrokey itself, which is a slow I/O device With that in mind, this change decreases the binary size further by swapping the default allocator we use (typically jemalloc) with the system allocator (which is malloc based on Unix systems). Given that we are by no means allocation sensitive, there is no point in wasting binary size on something that adds no value. This change decreases the binary size by another 324 KiB (for an already stripped release mode binary).
-rw-r--r--nitrocli/CHANGELOG.md5
-rw-r--r--nitrocli/src/main.rs8
2 files changed, 13 insertions, 0 deletions
diff --git a/nitrocli/CHANGELOG.md b/nitrocli/CHANGELOG.md
index 396e966..77841dd 100644
--- a/nitrocli/CHANGELOG.md
+++ b/nitrocli/CHANGELOG.md
@@ -1,3 +1,8 @@
+Unreleased
+----------
+- Further decrease binary size by using system allocator
+
+
0.2.2
-----
- Added the `-v`/`--verbose` option to control libnitrokey log level
diff --git a/nitrocli/src/main.rs b/nitrocli/src/main.rs
index 9a4216a..8d5953b 100644
--- a/nitrocli/src/main.rs
+++ b/nitrocli/src/main.rs
@@ -80,6 +80,7 @@ mod pinentry;
#[cfg(test)]
mod tests;
+use std::alloc;
use std::env;
use std::ffi;
use std::io;
@@ -88,6 +89,13 @@ use std::result;
use crate::error::Error;
+// Switch from the default allocator (typically jemalloc) to the system
+// allocator (malloc based on Unix systems). Our application is by no
+// means allocation intensive and the default allocator is typically
+// much larger in size, causing binary bloat.
+#[global_allocator]
+static A: alloc::System = alloc::System;
+
type Result<T> = result::Result<T, Error>;
const NITROCLI_ADMIN_PIN: &str = "NITROCLI_ADMIN_PIN";