refix-cli 0.1.0__tar.gz → 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {refix_cli-0.1.0 → refix_cli-0.1.1}/Cargo.lock +6 -6
- {refix_cli-0.1.0 → refix_cli-0.1.1}/PKG-INFO +8 -14
- refix_cli-0.1.1/README.md +18 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/CHANGELOG.md +6 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/Cargo.toml +1 -1
- refix_cli-0.1.1/crates/refix-cli/README.md +19 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/CHANGELOG.md +6 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/Cargo.toml +1 -1
- refix_cli-0.1.1/crates/refix-codegen/README.md +38 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/lib.rs +1 -3
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/CHANGELOG.md +6 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/Cargo.toml +1 -1
- refix_cli-0.1.1/crates/refix-dictionary/README.md +44 -0
- refix_cli-0.1.1/crates/refix-dictionary/src/lib.rs +9 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/CHANGELOG.md +6 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/Cargo.toml +1 -1
- refix_cli-0.1.1/crates/refix-message/README.md +31 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/lib.rs +2 -0
- refix_cli-0.1.0/README.md +0 -24
- refix_cli-0.1.0/crates/refix-cli/README.md +0 -58
- refix_cli-0.1.0/crates/refix-codegen/README.md +0 -58
- refix_cli-0.1.0/crates/refix-dictionary/README.md +0 -58
- refix_cli-0.1.0/crates/refix-dictionary/src/lib.rs +0 -11
- refix_cli-0.1.0/crates/refix-message/README.md +0 -58
- {refix_cli-0.1.0 → refix_cli-0.1.1}/Cargo.toml +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/LICENSE-APACHE +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/LICENSE-MIT +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/LICENSE-APACHE +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/LICENSE-MIT +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/src/main.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/tests/codegen.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/LICENSE-APACHE +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/LICENSE-MIT +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/case_converter.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/envelope.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/generated.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/groups.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/literal.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/namespace/error.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/namespace.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/naming.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/enums.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/error.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/groups.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/layout.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/messages.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/names.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/naming.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/views.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/enums.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/error.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/groups.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/layout.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/messages.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/names.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/naming.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/views.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/test_utils.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/warning.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/tests/data/toy.xml +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/tests/data/toy_generated.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/tests/generated.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/tests/python_generated.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/LICENSE-APACHE +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/LICENSE-MIT +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/dictionary/error.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/dictionary/resolver.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/dictionary.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/quickfix.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/spec.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/tests/quickfix_fixtures.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/LICENSE-APACHE +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/LICENSE-MIT +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/framing.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/group/error.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/group.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/length_tags.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/message.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/multiple_values.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/stream.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/tag.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/test_utils.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/tokenizer.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/value.rs +0 -0
- {refix_cli-0.1.0 → refix_cli-0.1.1}/pyproject.toml +0 -0
|
@@ -223,14 +223,14 @@ dependencies = [
|
|
|
223
223
|
|
|
224
224
|
[[package]]
|
|
225
225
|
name = "refix"
|
|
226
|
-
version = "0.1.
|
|
226
|
+
version = "0.1.2"
|
|
227
227
|
dependencies = [
|
|
228
228
|
"refix-message",
|
|
229
229
|
]
|
|
230
230
|
|
|
231
231
|
[[package]]
|
|
232
232
|
name = "refix-cli"
|
|
233
|
-
version = "0.1.
|
|
233
|
+
version = "0.1.1"
|
|
234
234
|
dependencies = [
|
|
235
235
|
"clap",
|
|
236
236
|
"refix-codegen",
|
|
@@ -239,7 +239,7 @@ dependencies = [
|
|
|
239
239
|
|
|
240
240
|
[[package]]
|
|
241
241
|
name = "refix-codegen"
|
|
242
|
-
version = "0.1.
|
|
242
|
+
version = "0.1.1"
|
|
243
243
|
dependencies = [
|
|
244
244
|
"bytes",
|
|
245
245
|
"refix-dictionary",
|
|
@@ -248,7 +248,7 @@ dependencies = [
|
|
|
248
248
|
|
|
249
249
|
[[package]]
|
|
250
250
|
name = "refix-dictionary"
|
|
251
|
-
version = "0.1.
|
|
251
|
+
version = "0.1.1"
|
|
252
252
|
dependencies = [
|
|
253
253
|
"refix-message",
|
|
254
254
|
"roxmltree",
|
|
@@ -256,7 +256,7 @@ dependencies = [
|
|
|
256
256
|
|
|
257
257
|
[[package]]
|
|
258
258
|
name = "refix-engine"
|
|
259
|
-
version = "0.2.
|
|
259
|
+
version = "0.2.2"
|
|
260
260
|
dependencies = [
|
|
261
261
|
"bytes",
|
|
262
262
|
"pyo3",
|
|
@@ -273,7 +273,7 @@ dependencies = [
|
|
|
273
273
|
|
|
274
274
|
[[package]]
|
|
275
275
|
name = "refix-message"
|
|
276
|
-
version = "0.3.
|
|
276
|
+
version = "0.3.2"
|
|
277
277
|
dependencies = [
|
|
278
278
|
"bytes",
|
|
279
279
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: refix-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Classifier: Development Status :: 2 - Pre-Alpha
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
@@ -18,26 +18,20 @@ Project-URL: Repository, https://github.com/refixhq/refix
|
|
|
18
18
|
|
|
19
19
|
# refix-cli
|
|
20
20
|
|
|
21
|
-
The `refix` command-line tool for [ReFIX](https://github.com/refixhq/refix).
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
The `refix` command-line tool for [ReFIX](https://github.com/refixhq/refix). It generates typed Rust and Python messages
|
|
22
|
+
from a QuickFIX-format dictionary.
|
|
23
|
+
|
|
24
|
+
> ReFIX is in early development, and APIs change between 0.x releases.
|
|
24
25
|
|
|
25
26
|
```sh
|
|
26
27
|
uv tool install refix-cli
|
|
27
28
|
refix codegen FIX44.xml --python fix44.py --rust fix44.rs
|
|
28
29
|
```
|
|
29
30
|
|
|
30
|
-
The generated Python module needs `refix-engine` at runtime. The stock FIX
|
|
31
|
-
|
|
31
|
+
The generated Python module needs `refix-engine` at runtime. The stock FIX 4.4 messages are published ready-made as
|
|
32
|
+
`refix-fix44`.
|
|
32
33
|
|
|
33
34
|
## License
|
|
34
35
|
|
|
35
|
-
Licensed under either of
|
|
36
|
-
|
|
37
|
-
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
38
|
-
https://www.apache.org/licenses/LICENSE-2.0)
|
|
39
|
-
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
40
|
-
https://opensource.org/licenses/MIT)
|
|
41
|
-
|
|
42
|
-
at your option.
|
|
36
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
|
43
37
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# refix-cli
|
|
2
|
+
|
|
3
|
+
The `refix` command-line tool for [ReFIX](https://github.com/refixhq/refix). It generates typed Rust and Python messages
|
|
4
|
+
from a QuickFIX-format dictionary.
|
|
5
|
+
|
|
6
|
+
> ReFIX is in early development, and APIs change between 0.x releases.
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
uv tool install refix-cli
|
|
10
|
+
refix codegen FIX44.xml --python fix44.py --rust fix44.rs
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The generated Python module needs `refix-engine` at runtime. The stock FIX 4.4 messages are published ready-made as
|
|
14
|
+
`refix-fix44`.
|
|
15
|
+
|
|
16
|
+
## License
|
|
17
|
+
|
|
18
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.1](https://github.com/refixhq/refix/compare/refix-cli-v0.1.0...refix-cli-v0.1.1) - 2026-10-10
|
|
11
|
+
|
|
12
|
+
### Other
|
|
13
|
+
|
|
14
|
+
- give each package its own README ([#87](https://github.com/refixhq/refix/pull/87))
|
|
15
|
+
|
|
10
16
|
## [0.1.0](https://github.com/refixhq/refix/releases/tag/refix-cli-v0.1.0) - 2026-10-10
|
|
11
17
|
|
|
12
18
|
### Added
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# refix-cli
|
|
2
|
+
|
|
3
|
+
The `refix` command-line tool for [ReFIX](https://github.com/refixhq/refix). It generates typed Rust and Python messages
|
|
4
|
+
from a QuickFIX-format dictionary.
|
|
5
|
+
|
|
6
|
+
> ReFIX is in early development, and APIs change between 0.x releases.
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
cargo install refix-cli
|
|
10
|
+
refix codegen FIX44.xml --rust fix44.rs --python fix44.py
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Without a Rust toolchain, `uv tool install refix-cli` installs a prebuilt binary. The generated Rust module depends on
|
|
14
|
+
`refix-message`, and the Python module on `refix-engine`. The stock FIX 4.4 messages are published ready-made as
|
|
15
|
+
`refix-fix44`.
|
|
16
|
+
|
|
17
|
+
## License
|
|
18
|
+
|
|
19
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.1](https://github.com/refixhq/refix/compare/refix-codegen-v0.1.0...refix-codegen-v0.1.1) - 2026-10-10
|
|
11
|
+
|
|
12
|
+
### Other
|
|
13
|
+
|
|
14
|
+
- give each package its own README ([#87](https://github.com/refixhq/refix/pull/87))
|
|
15
|
+
|
|
10
16
|
## [0.1.0](https://github.com/refixhq/refix/releases/tag/refix-codegen-v0.1.0) - 2026-10-10
|
|
11
17
|
|
|
12
18
|
### Added
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# refix-codegen
|
|
2
|
+
|
|
3
|
+
Generates typed FIX messages for [ReFIX](https://github.com/refixhq/refix), in Rust and Python, from a `Dictionary` read
|
|
4
|
+
by `refix-dictionary`.
|
|
5
|
+
|
|
6
|
+
> ReFIX is in early development, and APIs change between 0.x releases.
|
|
7
|
+
|
|
8
|
+
```rust
|
|
9
|
+
use refix_codegen::rust;
|
|
10
|
+
use refix_dictionary::quickfix;
|
|
11
|
+
|
|
12
|
+
fn main() {
|
|
13
|
+
let xml = "
|
|
14
|
+
<fix major='4' minor='4'>
|
|
15
|
+
<messages>
|
|
16
|
+
<message name='TestRequest' msgtype='1' msgcat='admin'>
|
|
17
|
+
<field name='TestReqID' required='Y'/>
|
|
18
|
+
</message>
|
|
19
|
+
</messages>
|
|
20
|
+
<fields>
|
|
21
|
+
<field number='112' name='TestReqID' type='STRING'/>
|
|
22
|
+
</fields>
|
|
23
|
+
</fix>";
|
|
24
|
+
let parsed = quickfix::parse(xml).unwrap();
|
|
25
|
+
let generated = rust::generate(&parsed.dictionary, "TestRequest.xml").unwrap();
|
|
26
|
+
for warning in &generated.warnings {
|
|
27
|
+
eprintln!("warning: {warning}");
|
|
28
|
+
}
|
|
29
|
+
print!("{}", generated.code);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The source name goes in the generated file's header. Rust output depends on `refix-message`, and `python::generate`
|
|
34
|
+
emits a module for `refix-engine` the same way. `refix-cli` runs both from the command line.
|
|
35
|
+
|
|
36
|
+
## License
|
|
37
|
+
|
|
38
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
//! Emits Rust source as plain strings; generated output is checked in and
|
|
3
|
-
//! kept fresh by tests that regenerate and compare.
|
|
1
|
+
#![doc = include_str!("../README.md")]
|
|
4
2
|
|
|
5
3
|
mod case_converter;
|
|
6
4
|
mod envelope;
|
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.1](https://github.com/refixhq/refix/compare/refix-dictionary-v0.1.0...refix-dictionary-v0.1.1) - 2026-10-10
|
|
11
|
+
|
|
12
|
+
### Other
|
|
13
|
+
|
|
14
|
+
- give each package its own README ([#87](https://github.com/refixhq/refix/pull/87))
|
|
15
|
+
|
|
10
16
|
## [0.1.0](https://github.com/refixhq/refix/releases/tag/refix-dictionary-v0.1.0) - 2026-10-10
|
|
11
17
|
|
|
12
18
|
### Added
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# refix-dictionary
|
|
2
|
+
|
|
3
|
+
The FIX dictionary model for [ReFIX](https://github.com/refixhq/refix), and a parser for QuickFIX XML dictionaries.
|
|
4
|
+
A `Dictionary` is resolved, so every reference in it is valid.
|
|
5
|
+
|
|
6
|
+
> ReFIX is in early development, and APIs change between 0.x releases.
|
|
7
|
+
|
|
8
|
+
```rust
|
|
9
|
+
use refix_dictionary::dictionary::Member;
|
|
10
|
+
use refix_dictionary::quickfix;
|
|
11
|
+
|
|
12
|
+
fn main() {
|
|
13
|
+
let xml = "
|
|
14
|
+
<fix major='4' minor='4'>
|
|
15
|
+
<messages>
|
|
16
|
+
<message name='TestRequest' msgtype='1' msgcat='admin'>
|
|
17
|
+
<field name='TestReqID' required='Y'/>
|
|
18
|
+
</message>
|
|
19
|
+
</messages>
|
|
20
|
+
<fields>
|
|
21
|
+
<field number='112' name='TestReqID' type='STRING'/>
|
|
22
|
+
</fields>
|
|
23
|
+
</fix>";
|
|
24
|
+
let parsed = quickfix::parse(xml).unwrap();
|
|
25
|
+
for warning in &parsed.warnings {
|
|
26
|
+
println!("warning: {warning}");
|
|
27
|
+
}
|
|
28
|
+
for message in parsed.dictionary.messages() {
|
|
29
|
+
println!("{} (35={})", message.name(), message.msg_type());
|
|
30
|
+
for member in message.members() {
|
|
31
|
+
if let Member::Field { field, .. } = member {
|
|
32
|
+
println!(" {}", field.name);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Components are expanded in place, so a message lists every field and group it can hold. `refix-codegen` generates typed
|
|
40
|
+
messages from a `Dictionary`, and `refix-cli` runs it from the command line.
|
|
41
|
+
|
|
42
|
+
## License
|
|
43
|
+
|
|
44
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.3.2](https://github.com/refixhq/refix/compare/refix-message-v0.3.1...refix-message-v0.3.2) - 2026-10-10
|
|
11
|
+
|
|
12
|
+
### Other
|
|
13
|
+
|
|
14
|
+
- give each package its own README ([#87](https://github.com/refixhq/refix/pull/87))
|
|
15
|
+
|
|
10
16
|
## [0.3.1](https://github.com/refixhq/refix/compare/refix-message-v0.3.0...refix-message-v0.3.1) - 2026-10-10
|
|
11
17
|
|
|
12
18
|
### Fixed
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# refix-message
|
|
2
|
+
|
|
3
|
+
Framing, tokenising and raw FIX messages for [ReFIX](https://github.com/refixhq/refix). A `RawMessage` indexes a frame's
|
|
4
|
+
fields and reads them on demand, without copying.
|
|
5
|
+
|
|
6
|
+
> ReFIX is in early development, and APIs change between 0.x releases.
|
|
7
|
+
|
|
8
|
+
```rust
|
|
9
|
+
use refix_message::stream::Outcome;
|
|
10
|
+
use refix_message::{MessageStream, Tag, Tokenizer};
|
|
11
|
+
|
|
12
|
+
fn main() {
|
|
13
|
+
let log = b"2026-10-10 09:30:00 IN 8=FIX.4.4\x019=5\x0135=0\x0110=163\x01\n";
|
|
14
|
+
let mut stream = MessageStream::new(Tokenizer::default());
|
|
15
|
+
stream.feed(log);
|
|
16
|
+
loop {
|
|
17
|
+
match stream.next_message() {
|
|
18
|
+
Outcome::Message(message) => println!("{:?}", message.get_str(Tag(35))),
|
|
19
|
+
Outcome::Garbled { bytes, .. } => println!("skipped {} bytes", bytes.len()),
|
|
20
|
+
Outcome::Incomplete => break,
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`Tokenizer::tokenize` reads a single frame. Typed messages are generated on top of it: `refix-fix44` for FIX 4.4, or
|
|
27
|
+
`refix-cli` for your own dictionary.
|
|
28
|
+
|
|
29
|
+
## License
|
|
30
|
+
|
|
31
|
+
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
|
refix_cli-0.1.0/README.md
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# refix-cli
|
|
2
|
-
|
|
3
|
-
The `refix` command-line tool for [ReFIX](https://github.com/refixhq/refix).
|
|
4
|
-
It generates typed Rust and Python messages from a QuickFIX-format
|
|
5
|
-
dictionary.
|
|
6
|
-
|
|
7
|
-
```sh
|
|
8
|
-
uv tool install refix-cli
|
|
9
|
-
refix codegen FIX44.xml --python fix44.py --rust fix44.rs
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
The generated Python module needs `refix-engine` at runtime. The stock FIX
|
|
13
|
-
4.4 messages are published ready-made as `refix-fix44`.
|
|
14
|
-
|
|
15
|
-
## License
|
|
16
|
-
|
|
17
|
-
Licensed under either of
|
|
18
|
-
|
|
19
|
-
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
20
|
-
https://www.apache.org/licenses/LICENSE-2.0)
|
|
21
|
-
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
22
|
-
https://opensource.org/licenses/MIT)
|
|
23
|
-
|
|
24
|
-
at your option.
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# ReFIX
|
|
4
|
-
|
|
5
|
-
[![crates-badge]](https://crates.io/crates/refix)
|
|
6
|
-
[![docs-badge]](https://docs.rs/refix)
|
|
7
|
-
[](https://codecov.io/gh/refixhq/refix)
|
|
8
|
-
[](https://github.com/refixhq/refix/actions/workflows/ci.yml)
|
|
9
|
-
[](LICENSE-MIT)
|
|
10
|
-
[](LICENSE-APACHE)
|
|
11
|
-
|
|
12
|
-
**ReFIX is a FIX engine written in pure Rust with first-party bindings for Python.**
|
|
13
|
-
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
> [!WARNING]
|
|
17
|
-
> Development on ReFIX has just started. In its current state, the project
|
|
18
|
-
> isn't useful, but make sure to check back later to monitor progress.
|
|
19
|
-
|
|
20
|
-
## Why ReFIX?
|
|
21
|
-
|
|
22
|
-
I previously built [HotFIX](https://github.com/Validus-Risk-Management/hotfix)
|
|
23
|
-
(also in pure Rust) with a very specific objective:
|
|
24
|
-
a robust FIX engine for buy-side use cases supporting FIX 4.4. HotFIX is feature complete, and if you need an engine
|
|
25
|
-
now, I recommend you check it out to see if it fits your use case.
|
|
26
|
-
|
|
27
|
-
ReFIX has different goals - to build high-quality building blocks with first-class support for both Python and Rust. The
|
|
28
|
-
aim is still a functional engine working end-to-end, but the design philosophy is different.
|
|
29
|
-
|
|
30
|
-
I've written a
|
|
31
|
-
[longer blog post](https://davidsteiner.dev/writing/refix-a-new-fix-engine)
|
|
32
|
-
on my motivations for ReFIX.
|
|
33
|
-
|
|
34
|
-
## Near-term goals
|
|
35
|
-
|
|
36
|
-
The first milestone is a message layer which natively supports Python, with fully typed messages and minimal compromises
|
|
37
|
-
on performance in either language.
|
|
38
|
-
|
|
39
|
-
## License
|
|
40
|
-
|
|
41
|
-
Licensed under either of
|
|
42
|
-
|
|
43
|
-
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
44
|
-
https://www.apache.org/licenses/LICENSE-2.0)
|
|
45
|
-
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
46
|
-
https://opensource.org/licenses/MIT)
|
|
47
|
-
|
|
48
|
-
at your option.
|
|
49
|
-
|
|
50
|
-
### Contribution
|
|
51
|
-
|
|
52
|
-
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as
|
|
53
|
-
defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[crates-badge]: https://img.shields.io/crates/v/refix.svg
|
|
57
|
-
|
|
58
|
-
[docs-badge]: https://docs.rs/refix/badge.svg
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# ReFIX
|
|
4
|
-
|
|
5
|
-
[![crates-badge]](https://crates.io/crates/refix)
|
|
6
|
-
[![docs-badge]](https://docs.rs/refix)
|
|
7
|
-
[](https://codecov.io/gh/refixhq/refix)
|
|
8
|
-
[](https://github.com/refixhq/refix/actions/workflows/ci.yml)
|
|
9
|
-
[](LICENSE-MIT)
|
|
10
|
-
[](LICENSE-APACHE)
|
|
11
|
-
|
|
12
|
-
**ReFIX is a FIX engine written in pure Rust with first-party bindings for Python.**
|
|
13
|
-
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
> [!WARNING]
|
|
17
|
-
> Development on ReFIX has just started. In its current state, the project
|
|
18
|
-
> isn't useful, but make sure to check back later to monitor progress.
|
|
19
|
-
|
|
20
|
-
## Why ReFIX?
|
|
21
|
-
|
|
22
|
-
I previously built [HotFIX](https://github.com/Validus-Risk-Management/hotfix)
|
|
23
|
-
(also in pure Rust) with a very specific objective:
|
|
24
|
-
a robust FIX engine for buy-side use cases supporting FIX 4.4. HotFIX is feature complete, and if you need an engine
|
|
25
|
-
now, I recommend you check it out to see if it fits your use case.
|
|
26
|
-
|
|
27
|
-
ReFIX has different goals - to build high-quality building blocks with first-class support for both Python and Rust. The
|
|
28
|
-
aim is still a functional engine working end-to-end, but the design philosophy is different.
|
|
29
|
-
|
|
30
|
-
I've written a
|
|
31
|
-
[longer blog post](https://davidsteiner.dev/writing/refix-a-new-fix-engine)
|
|
32
|
-
on my motivations for ReFIX.
|
|
33
|
-
|
|
34
|
-
## Near-term goals
|
|
35
|
-
|
|
36
|
-
The first milestone is a message layer which natively supports Python, with fully typed messages and minimal compromises
|
|
37
|
-
on performance in either language.
|
|
38
|
-
|
|
39
|
-
## License
|
|
40
|
-
|
|
41
|
-
Licensed under either of
|
|
42
|
-
|
|
43
|
-
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
44
|
-
https://www.apache.org/licenses/LICENSE-2.0)
|
|
45
|
-
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
46
|
-
https://opensource.org/licenses/MIT)
|
|
47
|
-
|
|
48
|
-
at your option.
|
|
49
|
-
|
|
50
|
-
### Contribution
|
|
51
|
-
|
|
52
|
-
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as
|
|
53
|
-
defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[crates-badge]: https://img.shields.io/crates/v/refix.svg
|
|
57
|
-
|
|
58
|
-
[docs-badge]: https://docs.rs/refix/badge.svg
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# ReFIX
|
|
4
|
-
|
|
5
|
-
[![crates-badge]](https://crates.io/crates/refix)
|
|
6
|
-
[![docs-badge]](https://docs.rs/refix)
|
|
7
|
-
[](https://codecov.io/gh/refixhq/refix)
|
|
8
|
-
[](https://github.com/refixhq/refix/actions/workflows/ci.yml)
|
|
9
|
-
[](LICENSE-MIT)
|
|
10
|
-
[](LICENSE-APACHE)
|
|
11
|
-
|
|
12
|
-
**ReFIX is a FIX engine written in pure Rust with first-party bindings for Python.**
|
|
13
|
-
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
> [!WARNING]
|
|
17
|
-
> Development on ReFIX has just started. In its current state, the project
|
|
18
|
-
> isn't useful, but make sure to check back later to monitor progress.
|
|
19
|
-
|
|
20
|
-
## Why ReFIX?
|
|
21
|
-
|
|
22
|
-
I previously built [HotFIX](https://github.com/Validus-Risk-Management/hotfix)
|
|
23
|
-
(also in pure Rust) with a very specific objective:
|
|
24
|
-
a robust FIX engine for buy-side use cases supporting FIX 4.4. HotFIX is feature complete, and if you need an engine
|
|
25
|
-
now, I recommend you check it out to see if it fits your use case.
|
|
26
|
-
|
|
27
|
-
ReFIX has different goals - to build high-quality building blocks with first-class support for both Python and Rust. The
|
|
28
|
-
aim is still a functional engine working end-to-end, but the design philosophy is different.
|
|
29
|
-
|
|
30
|
-
I've written a
|
|
31
|
-
[longer blog post](https://davidsteiner.dev/writing/refix-a-new-fix-engine)
|
|
32
|
-
on my motivations for ReFIX.
|
|
33
|
-
|
|
34
|
-
## Near-term goals
|
|
35
|
-
|
|
36
|
-
The first milestone is a message layer which natively supports Python, with fully typed messages and minimal compromises
|
|
37
|
-
on performance in either language.
|
|
38
|
-
|
|
39
|
-
## License
|
|
40
|
-
|
|
41
|
-
Licensed under either of
|
|
42
|
-
|
|
43
|
-
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
44
|
-
https://www.apache.org/licenses/LICENSE-2.0)
|
|
45
|
-
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
46
|
-
https://opensource.org/licenses/MIT)
|
|
47
|
-
|
|
48
|
-
at your option.
|
|
49
|
-
|
|
50
|
-
### Contribution
|
|
51
|
-
|
|
52
|
-
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as
|
|
53
|
-
defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[crates-badge]: https://img.shields.io/crates/v/refix.svg
|
|
57
|
-
|
|
58
|
-
[docs-badge]: https://docs.rs/refix/badge.svg
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
//! The FIX dictionary model and the frontends that parse external formats
|
|
2
|
-
//! into it. Consumers (codegen, the runtime dialect descriptor, validation)
|
|
3
|
-
//! read the model and never touch the external formats directly.
|
|
4
|
-
|
|
5
|
-
pub mod dictionary;
|
|
6
|
-
pub mod quickfix;
|
|
7
|
-
mod spec;
|
|
8
|
-
|
|
9
|
-
pub use dictionary::Dictionary;
|
|
10
|
-
pub use refix_message::Tag;
|
|
11
|
-
pub use spec::*;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# ReFIX
|
|
4
|
-
|
|
5
|
-
[![crates-badge]](https://crates.io/crates/refix)
|
|
6
|
-
[![docs-badge]](https://docs.rs/refix)
|
|
7
|
-
[](https://codecov.io/gh/refixhq/refix)
|
|
8
|
-
[](https://github.com/refixhq/refix/actions/workflows/ci.yml)
|
|
9
|
-
[](LICENSE-MIT)
|
|
10
|
-
[](LICENSE-APACHE)
|
|
11
|
-
|
|
12
|
-
**ReFIX is a FIX engine written in pure Rust with first-party bindings for Python.**
|
|
13
|
-
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
> [!WARNING]
|
|
17
|
-
> Development on ReFIX has just started. In its current state, the project
|
|
18
|
-
> isn't useful, but make sure to check back later to monitor progress.
|
|
19
|
-
|
|
20
|
-
## Why ReFIX?
|
|
21
|
-
|
|
22
|
-
I previously built [HotFIX](https://github.com/Validus-Risk-Management/hotfix)
|
|
23
|
-
(also in pure Rust) with a very specific objective:
|
|
24
|
-
a robust FIX engine for buy-side use cases supporting FIX 4.4. HotFIX is feature complete, and if you need an engine
|
|
25
|
-
now, I recommend you check it out to see if it fits your use case.
|
|
26
|
-
|
|
27
|
-
ReFIX has different goals - to build high-quality building blocks with first-class support for both Python and Rust. The
|
|
28
|
-
aim is still a functional engine working end-to-end, but the design philosophy is different.
|
|
29
|
-
|
|
30
|
-
I've written a
|
|
31
|
-
[longer blog post](https://davidsteiner.dev/writing/refix-a-new-fix-engine)
|
|
32
|
-
on my motivations for ReFIX.
|
|
33
|
-
|
|
34
|
-
## Near-term goals
|
|
35
|
-
|
|
36
|
-
The first milestone is a message layer which natively supports Python, with fully typed messages and minimal compromises
|
|
37
|
-
on performance in either language.
|
|
38
|
-
|
|
39
|
-
## License
|
|
40
|
-
|
|
41
|
-
Licensed under either of
|
|
42
|
-
|
|
43
|
-
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
44
|
-
https://www.apache.org/licenses/LICENSE-2.0)
|
|
45
|
-
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
46
|
-
https://opensource.org/licenses/MIT)
|
|
47
|
-
|
|
48
|
-
at your option.
|
|
49
|
-
|
|
50
|
-
### Contribution
|
|
51
|
-
|
|
52
|
-
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as
|
|
53
|
-
defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[crates-badge]: https://img.shields.io/crates/v/refix.svg
|
|
57
|
-
|
|
58
|
-
[docs-badge]: https://docs.rs/refix/badge.svg
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|