1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// -------------------------------------------------------------------------------------------------
// Copyright (C) 2015-2026 Nautech Systems Pty Ltd. All rights reserved.
// https://nautechsystems.io
//
// Licensed under the GNU Lesser General Public License Version 3.0 (the "License");
// You may not use this file except in compliance with the License.
// You may obtain a copy of the License at https://www.gnu.org/licenses/lgpl-3.0.en.html
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// -------------------------------------------------------------------------------------------------
//! Data serialization and format conversion for [NautilusTrader](https://nautilustrader.io).
//!
//! The `nautilus-serialization` crate provides data serialization capabilities for converting
//! trading data between different formats including Apache Arrow and Cap'n Proto.
//! This enables efficient data storage, retrieval, and interoperability across different systems:
//!
//! - **Apache Arrow integration**: Schema definitions and encoding/decoding for market data types.
//! - **Parquet file operations**: High-performance columnar storage for historical data analysis.
//! - **Record batch processing**: Efficient batch operations for time-series data.
//! - **Schema management**: Type-safe schema definitions with metadata preservation.
//! - **Cross-format conversion**: Data interchange between Arrow, Cap'n Proto, and native types.
//! - **Cap'n Proto serialization**: Zero-copy, schema-based serialization for efficient data interchange (requires `capnp` feature).
//! - **SBE decode utilities**: Zero-copy cursor and shared decode errors for SBE parsers (requires `sbe` feature).
//!
//! # NautilusTrader
//!
//! [NautilusTrader](https://nautilustrader.io) is an open-source, production-grade, Rust-native
//! engine for multi-asset, multi-venue trading systems.
//!
//! The system spans research, deterministic simulation, and live execution within a single
//! event-driven architecture, providing research-to-live semantic parity.
//!
//! # Feature Flags
//!
//! This crate provides feature flags to control source code inclusion during compilation,
//! depending on the intended use case, i.e. whether to provide Python bindings
//! for the [nautilus_trader](https://pypi.org/project/nautilus_trader) Python package,
//! or as part of a Rust only build.
//!
//! - `arrow`: Enables Apache Arrow schema definitions and RecordBatch encoding/decoding.
//! - `python`: Enables Python bindings from [PyO3](https://pyo3.rs).
//! - `high-precision`: Enables [high-precision mode](https://nautilustrader.io/docs/nightly/getting_started/installation#precision-mode) to use 128-bit value types.
//! - `extension-module`: Builds the crate as a Python extension module.
//! - `capnp`: Enables [Cap'n Proto](https://capnproto.org/) serialization support.
//! - `sbe`: Enables generic SBE (Simple Binary Encoding) decode utilities.
/// Re-export custom data registration for use by persistence and tests.
pub use ensure_custom_data_registered;
/// Re-export MsgPack serialization helpers for consumers expecting to configure codecs via this crate.
pub use msgpack;
include_capnp_module!;
include_capnp_module!;
include_capnp_module!;
include_capnp_module!;
include_capnp_module!;
include_capnp_module!;
include_capnp_module!;
include_capnp_module!;
include_capnp_module!;
include_capnp_module!;