Skip to content

Commit 1d34b5a

Browse files
committed
feat: rkyv and iterators
1 parent d2b3865 commit 1d34b5a

58 files changed

Lines changed: 5018 additions & 1849 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.toml

Lines changed: 145 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ logging_off = [
3939
no_inline = []
4040
las = ["dep:las"]
4141
profile_v5 = ["dep:kiddo_v5", "dep:rand", "dep:rand_chacha"]
42+
result_collection_stats = []
4243
serde = [
4344
"dep:serde",
4445
"serde/derive",
@@ -47,15 +48,12 @@ serde = [
4748
]
4849
simd = []
4950
simulator = []
50-
rkyv_08 = ["dep:rkyv_08"]
51+
rkyv_08 = ["dep:rkyv_08", "dep:ptr_meta", "dep:bytecheck"]
5152
small_n_result_collectors = ["dep:smallvec"]
5253
test_utils = ["dep:rand", "dep:rand_chacha", "dep:rayon", "dep:fixed"]
5354
tracing = ["dep:tracing", "dep:tracing-subscriber"]
5455
unreliable_select_nth_unstable = []
5556

56-
[target.'cfg(any(target_arch = "x86_64", target_arch = "aarch64"))'.dependencies]
57-
generator = "0.8.4"
58-
5957
[dependencies]
6058
aligned-vec = "0.6.1"
6159
array-init = "2.1.0"
@@ -123,6 +121,14 @@ package = "rkyv"
123121
version = "0.8.9"
124122
optional = true
125123

124+
[dependencies.ptr_meta]
125+
version = "0.3"
126+
optional = true
127+
128+
[dependencies.bytecheck]
129+
version = "0.8"
130+
optional = true
131+
126132
[dependencies.serde]
127133
version = "1"
128134
optional = true
@@ -413,6 +419,131 @@ required-features = ["test_utils"]
413419
#path = "examples/serde.rs"
414420
#required-features = ["csv", "serde"]
415421

422+
[[example]]
423+
name = "build-float-doctest-tree-rkyv_08"
424+
path = "examples/build-float-doctest-tree-rkyv_08.rs"
425+
required-features = ["rkyv_08"]
426+
427+
[[example]]
428+
name = "build-immutable-doctest-tree-rkyv_08"
429+
path = "examples/build-immutable-doctest-tree-rkyv_08.rs"
430+
required-features = ["rkyv_08"]
431+
432+
[[example]]
433+
name = "float-rkyv_08-serialize"
434+
path = "examples/float-rkyv_08-serialize.rs"
435+
required-features = ["rkyv_08"]
436+
437+
[[example]]
438+
name = "float-rkyv_08-deserialize"
439+
path = "examples/float-rkyv_08-deserialize.rs"
440+
required-features = ["rkyv_08"]
441+
442+
[[example]]
443+
name = "immutable-rkyv_08-serialize"
444+
path = "examples/immutable-rkyv_08-serialize.rs"
445+
required-features = ["rkyv_08"]
446+
447+
[[example]]
448+
name = "immutable-rkyv_08-deserialize"
449+
path = "examples/immutable-rkyv_08-deserialize.rs"
450+
required-features = ["rkyv_08"]
451+
452+
[[example]]
453+
name = "immutable-large-eytz-build-and-serialize-f32"
454+
path = "examples/immutable-large-eytz-build-and-serialize-f32.rs"
455+
required-features = ["rkyv_08"]
456+
457+
[[example]]
458+
name = "immutable-large-donnelly-build-and-serialize-d4-f32"
459+
path = "examples/immutable-large-donnelly-build-and-serialize-d4-f32.rs"
460+
required-features = ["rkyv_08"]
461+
462+
[[example]]
463+
name = "immutable-large-ann-eytz-build-and-serialize"
464+
path = "examples/immutable-large-ann-eytz-build-and-serialize.rs"
465+
required-features = ["rkyv_08"]
466+
467+
[[example]]
468+
name = "immutable-large-ann-donnelly-build-and-serialize"
469+
path = "examples/immutable-large-ann-donnelly-build-and-serialize.rs"
470+
required-features = ["rkyv_08"]
471+
472+
[[example]]
473+
name = "immutable-large-eytz-deserialize-and-traverse-f32"
474+
path = "examples/immutable-large-eytz-deserialize-and-traverse-f32.rs"
475+
required-features = ["rkyv_08"]
476+
477+
[[example]]
478+
name = "immutable-large-eytz-deserialize-and-traverse-f32-pf"
479+
path = "examples/immutable-large-eytz-deserialize-and-traverse-f32-pf.rs"
480+
required-features = ["rkyv_08"]
481+
482+
[[example]]
483+
name = "immutable-large-eytz-deserialize-and-traverse-f32-pf-far"
484+
path = "examples/immutable-large-eytz-deserialize-and-traverse-f32-pf-far.rs"
485+
required-features = ["rkyv_08"]
486+
487+
[[example]]
488+
name = "immutable-large-eytz-simulate-traverse-f32"
489+
path = "examples/immutable-large-eytz-simulate-traverse-f32.rs"
490+
required-features = ["rkyv_08"]
491+
492+
[[example]]
493+
name = "immutable-large-eytz-simulate-traverse-f64"
494+
path = "examples/immutable-large-eytz-simulate-traverse-f64.rs"
495+
required-features = ["rkyv_08"]
496+
497+
[[example]]
498+
name = "immutable-large-ann-eytzinger-deserialize-and-query"
499+
path = "examples/immutable-large-ann-eytzinger-deserialize-and-query.rs"
500+
required-features = ["rkyv_08"]
501+
502+
[[example]]
503+
name = "immutable-large-donnelly-deserialize-and-traverse-f32-rolled"
504+
path = "examples/immutable-large-donnelly-deserialize-and-traverse-f32-rolled.rs"
505+
required-features = ["rkyv_08"]
506+
507+
[[example]]
508+
name = "immutable-large-donnelly-deserialize-and-traverse-f32-unrolled"
509+
path = "examples/immutable-large-donnelly-deserialize-and-traverse-f32-unrolled.rs"
510+
required-features = ["rkyv_08"]
511+
512+
[[example]]
513+
name = "immutable-large-donnelly-deserialize-and-traverse-f32-unrolled-pf"
514+
path = "examples/immutable-large-donnelly-deserialize-and-traverse-f32-unrolled-pf.rs"
515+
required-features = ["rkyv_08"]
516+
517+
[[example]]
518+
name = "immutable-large-donnelly-simulate-traverse-f32"
519+
path = "examples/immutable-large-donnelly-simulate-traverse-f32.rs"
520+
required-features = ["rkyv_08"]
521+
522+
[[example]]
523+
name = "immutable-large-donnelly-simulate-traverse-f32-unrolled"
524+
path = "examples/immutable-large-donnelly-simulate-traverse-f32-unrolled.rs"
525+
required-features = ["rkyv_08"]
526+
527+
[[example]]
528+
name = "immutable-large-donnelly-simulate-traverse-f64"
529+
path = "examples/immutable-large-donnelly-simulate-traverse-f64.rs"
530+
required-features = ["rkyv_08"]
531+
532+
[[example]]
533+
name = "immutable-large-donnelly-swpre-simulate-traverse-f64"
534+
path = "examples/immutable-large-donnelly-swpre-simulate-traverse-f64.rs"
535+
required-features = ["rkyv_08"]
536+
537+
[[example]]
538+
name = "immutable-large-ann-donnelly-deserialize-and-query"
539+
path = "examples/immutable-large-ann-donnelly-deserialize-and-query.rs"
540+
required-features = ["rkyv_08"]
541+
542+
[[example]]
543+
name = "immutable-large-ann-donnelly-swpre-deserialize-and-query"
544+
path = "examples/immutable-large-ann-donnelly-swpre-deserialize-and-query.rs"
545+
required-features = ["rkyv_08"]
546+
416547
[[bin]]
417548
name = "fuzz-case-repro"
418549
path = "src/bin/fuzz-case-repro.rs"
@@ -443,6 +574,16 @@ name = "repro_donnelly_block3_exact_divergence"
443574
path = "src/bin/repro_donnelly_block3_exact_divergence.rs"
444575
required-features = ["simd", "test_utils"]
445576

577+
[[bin]]
578+
name = "profile_v6_result_collection_stats"
579+
path = "src/bin/profile_v6_result_collection_stats.rs"
580+
required-features = ["rkyv_08", "simd", "test_utils", "result_collection_stats"]
581+
582+
[[bin]]
583+
name = "build_v6_profile_archives"
584+
path = "src/bin/build_v6_profile_archives.rs"
585+
required-features = ["rkyv_08", "simd", "test_utils"]
586+
446587
[[test]]
447588
name = "donnelly_simd_regressions"
448589
path = "tests/donnelly_simd_regressions.rs"
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
1-
// This example builds /examples/float-doctest-tree-rkyv_08.rkyv, which is needed
2-
// if you want to run the float ArchivedTree doctests
1+
// This example builds /examples/float-doctest-tree-rkyv_08.rkyv for ArchivedKdTree doctests.
32
use std::error::Error;
43
use std::fs::File;
54
use std::io::Write;
65

6+
use kiddo::kd_tree::leaf_strategies::VecOfArenas;
7+
use kiddo::kd_tree::KdTree;
8+
use kiddo::stem_strategies::EytzingerPf;
79
use rkyv_08::{rancor::Error as RkyvError, to_bytes};
810

9-
use kiddo::KdTree;
11+
type Tree = KdTree<f64, u32, EytzingerPf<3, 8>, VecOfArenas<f64, u32, 3, 256>, 3, 256>;
1012

1113
fn main() -> Result<(), Box<dyn Error>> {
12-
// build and serialize small tree for ArchivedKdTree doctests
13-
let mut tree: KdTree<f64, 3> = KdTree::new();
14-
tree.add(&[1.0, 2.0, 5.0], 100);
15-
tree.add(&[2.0, 3.0, 6.0], 101);
14+
let points: Vec<[f64; 3]> = vec![[1.0, 2.0, 5.0], [2.0, 3.0, 6.0]];
15+
let tree: Tree = KdTree::new_from_slice(&points);
1616

1717
let buf = to_bytes::<RkyvError>(&tree)?;
18-
1918
let mut file = File::create("./examples/float-doctest-tree-rkyv_08.rkyv")?;
20-
file.write_all(&buf)
21-
.expect("Could not write serialized rkyv to file");
19+
file.write_all(&buf)?;
2220

2321
Ok(())
2422
}
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
use kiddo::immutable::float::kdtree::ImmutableKdTree;
2-
use kiddo::Eytzinger;
3-
use rkyv_08::{rancor::Error as RkyvError, to_bytes};
41
use std::error::Error;
52
use std::fs::File;
63
use std::io::Write;
74

5+
use kiddo::kd_tree::leaf_strategies::VecOfArenas;
6+
use kiddo::kd_tree::KdTree;
7+
use kiddo::stem_strategies::EytzingerPf;
8+
use rkyv_08::{rancor::Error as RkyvError, to_bytes};
9+
10+
type Tree = KdTree<f64, u32, EytzingerPf<3, 8>, VecOfArenas<f64, u32, 3, 256>, 3, 256>;
11+
812
fn main() -> Result<(), Box<dyn Error>> {
9-
// build and serialize small tree for ArchivedImmutableKdTree doctests
10-
let content: Vec<[f64; 3]> = vec![[1.0, 2.0, 5.0], [2.0, 3.0, 6.0]];
11-
let tree: ImmutableKdTree<f64, u32, Eytzinger<3>, 3, 256> =
12-
ImmutableKdTree::new_from_slice(&content);
13+
let points: Vec<[f64; 3]> = vec![[1.0, 2.0, 5.0], [2.0, 3.0, 6.0]];
14+
let tree: Tree = KdTree::new_from_slice(&points);
1315

1416
let buf = to_bytes::<RkyvError>(&tree)?;
15-
1617
let mut file = File::create("./examples/immutable-doctest-tree_rkyv08.rkyv")?;
17-
file.write_all(&buf)
18-
.expect("Could not write serialized rkyv to file");
18+
file.write_all(&buf)?;
1919

2020
Ok(())
2121
}

0 commit comments

Comments
 (0)