1[package]
2name = "exr"
3description = "Read and write OpenEXR files without any unsafe code"
4keywords = ["exr", "openexr", "file", "binary", "io"]
5categories = ["encoding", "filesystem", "graphics", "multimedia"]
6
7version = "1.72.0"
8edition = "2018"
9authors = ["johannesvollmer <johannes596@t-online.de>"]
10
11repository = "https://github.com/johannesvollmer/exrs"
12readme = "README.md"
13license = "BSD-3-Clause"
14exclude = [ "specification/*", "specification/**", "tests/images/*", "tests/images/**" ]
15rust-version = "1.61.0"
16
17[badges]
18maintenance = { status = "actively-developed" }
19
20[lib]
21path = "src/lib.rs"
22test = true
23doctest = true
24bench = true
25doc = true
26plugin = false
27proc-macro = false
28
29[dependencies]
30lebe = "^0.5.2" # generic binary serialization
31half = "2.1.0" # 16 bit float pixel data type
32bit_field = "^0.10.1" # exr file version bit flags
33miniz_oxide = "^0.7.1" # zip compression for pxr24
34smallvec = "^1.7.0" # make cache-friendly allocations TODO profile if smallvec is really an improvement!
35rayon-core = "^1.11.0" # threading for parallel compression TODO make this an optional feature?
36flume = { version = "^0.11.0", default-features = false } # crossbeam, but less unsafe code TODO make this an optional feature?
37zune-inflate = { version = "^0.2.3", default-features = false, features = ["zlib"] } # zip decompression, faster than miniz_oxide
38
39[dev-dependencies]
40image = { version = "0.24.3", default-features = false, features = ["png"] } # used to convert one exr to some pngs
41
42bencher = "0.1.5"
43walkdir = "2.3.2" # automatically test things for all files in a directory
44rand = "0.8.5" # used for fuzz testing
45rayon = "1.5.3" # run tests for many files in parallel
46
47
48[[bench]]
49name = "read"
50harness = false
51
52[[bench]]
53name = "profiling"
54harness = false
55
56[[bench]]
57name = "write"
58harness = false
59
60[[bench]]
61name = "pixel_format_conversion"
62harness = false
63
64
65# recommended release settings for max runtime performance
66[profile.release]
67opt-level = 3
68lto = true
69debug = false
70debug-assertions = false
71codegen-units = 1
72
73# test with fast runtime speed and slow build speed
74[profile.dev]
75incremental = true
76opt-level = 3
77debug-assertions = true
78overflow-checks = true
79debug = true
80lto = true
81
82# test with fast runtime speed and moderate build speed
83[profile.test]
84incremental = true
85opt-level = 3
86debug-assertions = true
87overflow-checks = true
88debug = true
89lto = true
90
91# bench with fastest runtime speed
92[profile.bench]
93opt-level = 3
94debug-assertions = false
95overflow-checks = false
96lto = true
97debug = true
98codegen-units = 1
99