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.
Files changed (87) hide show
  1. {refix_cli-0.1.0 → refix_cli-0.1.1}/Cargo.lock +6 -6
  2. {refix_cli-0.1.0 → refix_cli-0.1.1}/PKG-INFO +8 -14
  3. refix_cli-0.1.1/README.md +18 -0
  4. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/CHANGELOG.md +6 -0
  5. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/Cargo.toml +1 -1
  6. refix_cli-0.1.1/crates/refix-cli/README.md +19 -0
  7. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/CHANGELOG.md +6 -0
  8. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/Cargo.toml +1 -1
  9. refix_cli-0.1.1/crates/refix-codegen/README.md +38 -0
  10. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/lib.rs +1 -3
  11. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/CHANGELOG.md +6 -0
  12. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/Cargo.toml +1 -1
  13. refix_cli-0.1.1/crates/refix-dictionary/README.md +44 -0
  14. refix_cli-0.1.1/crates/refix-dictionary/src/lib.rs +9 -0
  15. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/CHANGELOG.md +6 -0
  16. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/Cargo.toml +1 -1
  17. refix_cli-0.1.1/crates/refix-message/README.md +31 -0
  18. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/lib.rs +2 -0
  19. refix_cli-0.1.0/README.md +0 -24
  20. refix_cli-0.1.0/crates/refix-cli/README.md +0 -58
  21. refix_cli-0.1.0/crates/refix-codegen/README.md +0 -58
  22. refix_cli-0.1.0/crates/refix-dictionary/README.md +0 -58
  23. refix_cli-0.1.0/crates/refix-dictionary/src/lib.rs +0 -11
  24. refix_cli-0.1.0/crates/refix-message/README.md +0 -58
  25. {refix_cli-0.1.0 → refix_cli-0.1.1}/Cargo.toml +0 -0
  26. {refix_cli-0.1.0 → refix_cli-0.1.1}/LICENSE-APACHE +0 -0
  27. {refix_cli-0.1.0 → refix_cli-0.1.1}/LICENSE-MIT +0 -0
  28. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/LICENSE-APACHE +0 -0
  29. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/LICENSE-MIT +0 -0
  30. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/src/main.rs +0 -0
  31. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-cli/tests/codegen.rs +0 -0
  32. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/LICENSE-APACHE +0 -0
  33. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/LICENSE-MIT +0 -0
  34. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/case_converter.rs +0 -0
  35. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/envelope.rs +0 -0
  36. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/generated.rs +0 -0
  37. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/groups.rs +0 -0
  38. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/literal.rs +0 -0
  39. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/namespace/error.rs +0 -0
  40. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/namespace.rs +0 -0
  41. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/naming.rs +0 -0
  42. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/enums.rs +0 -0
  43. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/error.rs +0 -0
  44. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/groups.rs +0 -0
  45. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/layout.rs +0 -0
  46. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/messages.rs +0 -0
  47. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/names.rs +0 -0
  48. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/naming.rs +0 -0
  49. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python/views.rs +0 -0
  50. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/python.rs +0 -0
  51. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/enums.rs +0 -0
  52. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/error.rs +0 -0
  53. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/groups.rs +0 -0
  54. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/layout.rs +0 -0
  55. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/messages.rs +0 -0
  56. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/names.rs +0 -0
  57. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/naming.rs +0 -0
  58. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust/views.rs +0 -0
  59. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/rust.rs +0 -0
  60. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/test_utils.rs +0 -0
  61. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/src/warning.rs +0 -0
  62. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/tests/data/toy.xml +0 -0
  63. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/tests/data/toy_generated.rs +0 -0
  64. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/tests/generated.rs +0 -0
  65. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-codegen/tests/python_generated.rs +0 -0
  66. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/LICENSE-APACHE +0 -0
  67. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/LICENSE-MIT +0 -0
  68. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/dictionary/error.rs +0 -0
  69. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/dictionary/resolver.rs +0 -0
  70. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/dictionary.rs +0 -0
  71. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/quickfix.rs +0 -0
  72. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/src/spec.rs +0 -0
  73. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-dictionary/tests/quickfix_fixtures.rs +0 -0
  74. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/LICENSE-APACHE +0 -0
  75. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/LICENSE-MIT +0 -0
  76. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/framing.rs +0 -0
  77. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/group/error.rs +0 -0
  78. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/group.rs +0 -0
  79. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/length_tags.rs +0 -0
  80. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/message.rs +0 -0
  81. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/multiple_values.rs +0 -0
  82. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/stream.rs +0 -0
  83. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/tag.rs +0 -0
  84. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/test_utils.rs +0 -0
  85. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/tokenizer.rs +0 -0
  86. {refix_cli-0.1.0 → refix_cli-0.1.1}/crates/refix-message/src/value.rs +0 -0
  87. {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.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.0"
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.0"
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.0"
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.1"
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.1"
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.0
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
- It generates typed Rust and Python messages from a QuickFIX-format
23
- dictionary.
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
- 4.4 messages are published ready-made as `refix-fix44`.
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
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "refix-cli"
3
3
  description = "Command-line tools for the ReFIX engine"
4
- version = "0.1.0"
4
+ version = "0.1.1"
5
5
  authors.workspace = true
6
6
  edition.workspace = true
7
7
  license.workspace = true
@@ -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
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "refix-codegen"
3
3
  description = "Typed message code generator for the ReFIX engine"
4
- version = "0.1.0"
4
+ version = "0.1.1"
5
5
  authors.workspace = true
6
6
  edition.workspace = true
7
7
  license.workspace = true
@@ -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
- //! Generates typed message wrappers from a [`refix_dictionary::Dictionary`].
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
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "refix-dictionary"
3
3
  description = "FIX dictionary model and frontends for the ReFIX engine"
4
- version = "0.1.0"
4
+ version = "0.1.1"
5
5
  authors.workspace = true
6
6
  edition.workspace = true
7
7
  license.workspace = true
@@ -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.
@@ -0,0 +1,9 @@
1
+ #![doc = include_str!("../README.md")]
2
+
3
+ pub mod dictionary;
4
+ pub mod quickfix;
5
+ mod spec;
6
+
7
+ pub use dictionary::Dictionary;
8
+ pub use refix_message::Tag;
9
+ pub use spec::*;
@@ -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
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "refix-message"
3
3
  description = "Framing, tokenisation and raw message representation for the ReFIX engine"
4
- version = "0.3.1"
4
+ version = "0.3.2"
5
5
  authors.workspace = true
6
6
  edition.workspace = true
7
7
  license.workspace = true
@@ -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.
@@ -1,3 +1,5 @@
1
+ #![doc = include_str!("../README.md")]
2
+
1
3
  pub mod framing;
2
4
  pub mod group;
3
5
  mod length_tags;
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
- [![codecov](https://codecov.io/gh/refixhq/refix/graph/badge.svg?token=S738KU2U1K)](https://codecov.io/gh/refixhq/refix)
8
- [![CI](https://github.com/refixhq/refix/actions/workflows/ci.yml/badge.svg)](https://github.com/refixhq/refix/actions/workflows/ci.yml)
9
- [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT)
10
- [![License: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](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
- [![codecov](https://codecov.io/gh/refixhq/refix/graph/badge.svg?token=S738KU2U1K)](https://codecov.io/gh/refixhq/refix)
8
- [![CI](https://github.com/refixhq/refix/actions/workflows/ci.yml/badge.svg)](https://github.com/refixhq/refix/actions/workflows/ci.yml)
9
- [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT)
10
- [![License: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](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
- [![codecov](https://codecov.io/gh/refixhq/refix/graph/badge.svg?token=S738KU2U1K)](https://codecov.io/gh/refixhq/refix)
8
- [![CI](https://github.com/refixhq/refix/actions/workflows/ci.yml/badge.svg)](https://github.com/refixhq/refix/actions/workflows/ci.yml)
9
- [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT)
10
- [![License: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](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
- [![codecov](https://codecov.io/gh/refixhq/refix/graph/badge.svg?token=S738KU2U1K)](https://codecov.io/gh/refixhq/refix)
8
- [![CI](https://github.com/refixhq/refix/actions/workflows/ci.yml/badge.svg)](https://github.com/refixhq/refix/actions/workflows/ci.yml)
9
- [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT)
10
- [![License: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](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