Skip to content

Commit b48211e

Browse files
committed
[Cargo] Swap bincode -> postcard
The bincode library is no longer maintained, so swapping to postcard.
1 parent 9d45015 commit b48211e

8 files changed

Lines changed: 190 additions & 94 deletions

File tree

‎Cargo.lock‎

Lines changed: 154 additions & 57 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,15 @@ include = [
2020
]
2121

2222
[dependencies]
23-
bincode = { version = "2.0.1", features = ["serde", "std"]}
2423
clap = { version = "4.5.36", features = ["std", "derive"] }
2524
colored_json = "5.0.0"
2625
directories = "6.0.0"
26+
ignore = "0.4"
2727
indicatif = "0.18.0"
2828
itertools = "0.14.0"
29+
miette = { version = "7.6.0", features = ["fancy", "serde"] }
30+
postcard = { version = "1.1.3", features = ["use-std"]}
31+
rayon = "1.11.0"
2932
regex = "1.11.1"
3033
serde = { version = "1.0.219", features = ["derive"] }
3134
serde_json = "1.0.140"
@@ -38,9 +41,6 @@ tree-sitter-cpp = "0.23.4"
3841
tree-sitter-rust-orchard = "0.12.0"
3942
tree-sitter-java = "0.23.5"
4043
tree-sitter-python = "0.25.0"
41-
ignore = "0.4"
42-
rayon = "1.11.0"
43-
miette = { version = "7.6.0", features = ["fancy", "serde"] }
4444

4545
[build-dependencies]
4646
cc="*"

‎examples/animals.rs‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#[macro_use]
22
extern crate log;
33

4-
54
#[derive(Debug)]
65
enum Animal {
76
Sheep,

‎src/code_source.rs‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ pub(crate) struct CodeSource {
1111
}
1212

1313
impl CodeSource {
14-
pub(crate) fn new<I>(path: &Path, info: SourceFileInfo, mut input: I) -> Result<CodeSource, LogError>
14+
pub(crate) fn new<I>(
15+
path: &Path,
16+
info: SourceFileInfo,
17+
mut input: I,
18+
) -> Result<CodeSource, LogError>
1519
where
1620
I: io::Read,
1721
{

‎src/lib.rs‎

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ pub use progress::WorkInfo;
7272
use source_query::QueryResult;
7373
pub use source_ref::{CallSite, SourceRef};
7474

75-
7675
#[derive(Error, Debug, Diagnostic, Clone, Default)]
7776
pub enum LogError {
7877
#[default]
@@ -184,7 +183,7 @@ pub(crate) enum Revision {
184183

185184
#[derive(Serialize, Deserialize, Debug)]
186185
pub(crate) enum CacheEntryFormat {
187-
Bincode,
186+
Postcard,
188187
}
189188

190189
/// Header for an entry in the cache. Currently, this is more of interest to humans than machines.
@@ -325,12 +324,12 @@ impl LogMatcher {
325324
}
326325
})?;
327326
// XXX check that the path matches?
328-
let mut decoded_root: SourceTree =
329-
bincode::serde::decode_from_std_read(&mut reader, bincode::config::standard())
330-
.map_err(|err| LogError::FailedToReadCache {
331-
path: path.to_owned(),
332-
source: Arc::new(err),
333-
})?;
327+
let mut scratch = [0u8; 1024];
328+
let (mut decoded_root, _) = postcard::from_io::<SourceTree, _>((&mut reader, &mut scratch))
329+
.map_err(|err| LogError::FailedToReadCache {
330+
path: path.to_owned(),
331+
source: Arc::new(err),
332+
})?;
334333
for sif in decoded_root.files_with_statements.values_mut() {
335334
sif.try_creating_matcher();
336335
sif.to_lookup_pair().into_iter().for_each(|(name, sid)| {
@@ -413,7 +412,7 @@ impl LogMatcher {
413412
let header = CacheEntryHeader {
414413
schema: CacheEntrySchema::V1,
415414
revision: Revision::Current,
416-
format: CacheEntryFormat::Bincode,
415+
format: CacheEntryFormat::Postcard,
417416
path: root_path.to_string_lossy().to_string(),
418417
timestamp: SystemTime::now()
419418
.duration_since(UNIX_EPOCH)
@@ -423,8 +422,7 @@ impl LogMatcher {
423422
serde_json::to_writer(&file, &header).map_err(to_write_cache_error)?;
424423
file.write_all("\n".as_bytes())
425424
.map_err(to_write_cache_error)?;
426-
bincode::serde::encode_into_std_write(root, &mut file, bincode::config::standard())
427-
.map_err(to_write_cache_error)?;
425+
postcard::to_io(root, &mut file).map_err(to_write_cache_error)?;
428426
total_size = total_size.saturating_add(file.stream_position().unwrap_or(0));
429427
file.into_temp_path()
430428
};
@@ -584,8 +582,7 @@ impl LogMatcher {
584582
.iter()
585583
.flat_map(|path| coll.files_with_statements.get(path))
586584
.flat_map(|stmts| {
587-
let file_matches =
588-
stmts.matcher.as_ref()?.matches(body);
585+
let file_matches = stmts.matcher.as_ref()?.matches(body);
589586
match file_matches.iter().next() {
590587
None => None,
591588
Some(index) => stmts.log_statements.get(index),
@@ -598,8 +595,7 @@ impl LogMatcher {
598595
.values()
599596
.filter(|stmts| stmts.path.contains(filename))
600597
.flat_map(|stmts| {
601-
let file_matches =
602-
stmts.matcher.as_ref()?.matches(body);
598+
let file_matches = stmts.matcher.as_ref()?.matches(body);
603599
match file_matches.iter().next() {
604600
None => None,
605601
Some(index) => stmts.log_statements.get(index),
@@ -611,11 +607,7 @@ impl LogMatcher {
611607
coll.files_with_statements
612608
.par_iter()
613609
.flat_map(|src_ref_coll| {
614-
let file_matches = src_ref_coll
615-
.1
616-
.matcher
617-
.as_ref()?
618-
.matches(log_ref.body());
610+
let file_matches = src_ref_coll.1.matcher.as_ref()?.matches(log_ref.body());
619611
match file_matches.iter().next() {
620612
None => None,
621613
Some(index) => src_ref_coll.1.log_statements.get(index),

‎src/main.rs‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ use clap::Parser as ClapParser;
22
use colored_json::{ColoredFormatter, CompactFormatter, Styler};
33
use indicatif::{ProgressBar, ProgressStyle};
44
use log2src::{
5-
Cache, LogError, LogFormat, LogMapping, LogMatcher, LogRef, LogRefBuilder, ProgressTracker, ProgressUpdate, set_tracker_once,
5+
set_tracker_once, Cache, LogError, LogFormat, LogMapping, LogMatcher, LogRef, LogRefBuilder,
6+
ProgressTracker, ProgressUpdate,
67
};
78
use miette::{IntoDiagnostic, MietteHandlerOpts, Report};
89
use serde::Serialize;
910
use std::io::{stdout, BufRead, BufReader};
10-
use std::sync::Arc;
1111
use std::sync::atomic::Ordering;
12+
use std::sync::Arc;
1213
use std::thread::sleep;
1314
use std::time::Duration;
1415
use std::{env, fs, io, path::PathBuf};
@@ -212,7 +213,11 @@ fn main() -> miette::Result<()> {
212213

213214
let args = Cli::parse();
214215
let mut tracker = ProgressTracker::new();
215-
let listener = if args.verbose { Some(tracker.subscribe()) } else { None };
216+
let listener = if args.verbose {
217+
Some(tracker.subscribe())
218+
} else {
219+
None
220+
};
216221
let tracker = Arc::new(tracker);
217222
set_tracker_once(Arc::clone(&tracker));
218223

‎src/progress.rs‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ pub fn set_tracker_once(tracker: Arc<ProgressTracker>) {
2727
}
2828

2929
pub(crate) fn current_global_progress_tracker() -> Arc<ProgressTracker> {
30-
GLOBAL_PROGRESS_TRACKER
31-
.get()
32-
.cloned()
33-
.unwrap_or_default()
30+
GLOBAL_PROGRESS_TRACKER.get().cloned().unwrap_or_default()
3431
}
3532

3633
pub struct WorkInfo {

‎tests/snapshots/test_java__basic_slf4j-3.snap‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ info:
1010
- "-f"
1111
- "^(?<timestamp>\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}) (?<thread>\\d+) (?<body>.*)$"
1212
env:
13+
APPDATA: /var/folders/hq/4yhdz_bx6ygfyxl54gnpygc80000gn/T/.tmpF9O5Dv
1314
COLS: "1000"
14-
HOME: /var/folders/gq/s3t7n95d19g3w41nsw0m0n240000gn/T/.tmpzzq9Js
15-
USERPROFILE: /var/folders/gq/s3t7n95d19g3w41nsw0m0n240000gn/T/.tmpzzq9Js
16-
XDG_CONFIG_HOME: /var/folders/gq/s3t7n95d19g3w41nsw0m0n240000gn/T/.tmpzzq9Js
15+
HOME: /var/folders/hq/4yhdz_bx6ygfyxl54gnpygc80000gn/T/.tmpF9O5Dv
16+
LOCALAPPDATA: /var/folders/hq/4yhdz_bx6ygfyxl54gnpygc80000gn/T/.tmpF9O5Dv
17+
USERPROFILE: /var/folders/hq/4yhdz_bx6ygfyxl54gnpygc80000gn/T/.tmpF9O5Dv
18+
XDG_CONFIG_HOME: /var/folders/hq/4yhdz_bx6ygfyxl54gnpygc80000gn/T/.tmpF9O5Dv
1719
---
1820
success: true
1921
exit_code: 0
@@ -23,4 +25,4 @@ exit_code: 0
2325

2426
----- stderr -----
2527
⚠ failed to read cache file "cache.XXX"
26-
╰─▶ Io { inner: Error { kind: UnexpectedEof, message: "failed to fill whole buffer" }, additional: 39 }
28+
╰─▶ Hit the end of buffer, expected more data

0 commit comments

Comments
 (0)