Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
dc6dd14
Enhance Cargo.toml with additional keywords and categories for improv…
metaphorics Jul 14, 2025
7b37411
chore: Update Cargo.toml to bump package version to 0.7.4
metaphorics Jul 14, 2025
9e47ec6
feat(rustyasn): Complete build script integration for ASN.1 schema co…
metaphorics Jul 14, 2025
19cf4e7
feat(rustyasn): Complete integration layer with rustyfix core traits
metaphorics Jul 14, 2025
3fd62e7
fix(rustyasn): Fix build script feature flag handling
metaphorics Jul 14, 2025
045bb2e
fix(rustyasn): PER encoding returns error instead of DER fallback
metaphorics Jul 14, 2025
02c4fda
Replace .unwrap() with descriptive .expect() calls throughout rustyasn
metaphorics Jul 14, 2025
bc9cd6f
fix: Reduce workspace categories to crates.io limit of 5
metaphorics Jul 14, 2025
0a99ca8
fix: Remove unsupported PER/APER/UPER encoding rules from public API
metaphorics Jul 14, 2025
5ad13db
fix: Update Clippy configuration for cognitive complexity and add mis…
metaphorics Jul 14, 2025
7669cab
Fix field tag casting from u32 to u16 which truncated large field num…
metaphorics Jul 14, 2025
7380e88
fix: Remove unnecessary field tag casting in message.rs
metaphorics Jul 14, 2025
d4a8723
fix: Return EncodeError instead of DecodeError for UTF-8 validation i…
metaphorics Jul 14, 2025
5c96881
fix: Remove .expect() and panic! calls from benchmarks
metaphorics Jul 14, 2025
7d16b04
fix: Use field iteration instead of hardcoded tags in encoder
metaphorics Jul 14, 2025
5c0731e
fix: Implement type-aware field validation in schema map_field_type
metaphorics Jul 14, 2025
0663d26
feat: Replace FixMessage string-only fields with typed ASN.1 CHOICE f…
metaphorics Jul 14, 2025
6cf94fc
docs: Remove PER encoding references from documentation
metaphorics Jul 14, 2025
720faa1
docs: Fix README start_message documentation mismatch
metaphorics Jul 14, 2025
16e3d1b
fix: Rename sender_company_id method to sender_comp_id for consistency
metaphorics Jul 14, 2025
40eac95
fix: Multiple high-priority improvements to rustyasn crate
metaphorics Jul 14, 2025
19e3465
fix: Add length validation against max_message_size to prevent DoS at…
metaphorics Jul 14, 2025
754955f
fix: Improve ASN.1 decoder robustness and performance
metaphorics Jul 14, 2025
ba07de2
fix: Improve date validation using chrono for correctness
metaphorics Jul 14, 2025
ecefd98
feat: Implement dictionary-driven schema architecture for rustyasn
metaphorics Jul 14, 2025
bcea160
fix: Extract sending_time from FixMessage fields during conversion
metaphorics Jul 14, 2025
5794e4a
fix: Remove redundant get_field calls in get_int and get_uint methods
metaphorics Jul 14, 2025
1867bf5
fix: Add overflow protection for unsigned to signed integer conversion
metaphorics Jul 14, 2025
c660dff
fix: Correct byte slice to Vec conversion in message field setting
metaphorics Jul 14, 2025
c13791a
feat: Implement repeating groups in group() and group_opt() methods
metaphorics Jul 14, 2025
bbfeab1
docs: Improve documentation and fix examples in rustyasn crate
metaphorics Jul 14, 2025
d38c3d4
feat: Major ASN.1 crate improvements across all areas
metaphorics Jul 14, 2025
43808e9
feat: Complete remaining high-priority ASN.1 improvements
metaphorics Jul 14, 2025
1a29455
fix: Critical bug fixes and improvements from AI code review
metaphorics Jul 14, 2025
a44a439
fix: Improve integer type consistency and add missing newlines
metaphorics Jul 14, 2025
d41e674
feat: Add const fn & const generics optimizations for better performance
metaphorics Jul 14, 2025
0e9b0f1
fix: Resolve clippy warnings across rustyasn crate
metaphorics Jul 14, 2025
833983e
fix: Update test_repeating_group_parsing to expect Err for unimplemen…
metaphorics Jul 14, 2025
67556c2
docs: Update TODO.md with latest ASN.1 support and AI review completion
metaphorics Jul 14, 2025
23f751c
fix: Apply pre-commit hook fixes for clippy and formatting
metaphorics Jul 14, 2025
fcac56f
Fix compilation errors and replace serde_json with simd-json
metaphorics Jul 14, 2025
d159fb1
Update TODO.md - All AI code review tasks completed
metaphorics Jul 14, 2025
6c0aa24
Update documentation and CI configuration
metaphorics Jul 14, 2025
e84382b
Update TODO.md: Mark all pending AI code review tasks as resolved
metaphorics Jul 14, 2025
c87bd7d
Fix ASN.1 parser to handle module definitions properly
metaphorics Jul 14, 2025
2ae63f0
Remove commented-out println statements in build.rs for ASN.1 generat…
metaphorics Jul 14, 2025
2f0ef78
Refactor Cargo.toml: Simplify keywords list for clarity
metaphorics Jul 14, 2025
51ca6a8
Update Cargo.toml dependencies and versions for improved compatibility
metaphorics Jul 17, 2025
5bbcff5
Fix rustyasn workspace integration issues
metaphorics Jul 17, 2025
e0a86a4
Fix rustyasn compilation errors and improve code quality
metaphorics Jul 17, 2025
a6b3ce1
Update TODO.md
metaphorics Jul 17, 2025
8783f57
Address AI code review feedback for rustyasn crate
metaphorics Jul 17, 2025
ea29d49
Fix remaining clippy panic errors in test modules
metaphorics Jul 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clippy.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cognitive-complexity-threshold = 15
cognitive-complexity-threshold = 20

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The cognitive complexity threshold has been increased from 15 to 20. While this can be necessary sometimes, it might also indicate that some functions are becoming too complex and should be refactored. For instance, generate_field_value_enums in crates/rustyasn/build.rs is quite complex. It might be better to break down such functions into smaller, more manageable pieces rather than increasing the threshold. This will improve long-term maintainability.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Increasing the cognitive complexity threshold from 15 to 20 can hide functions that are becoming overly complex. It's often better to refactor such functions to reduce their complexity rather than relaxing the lint. Could you provide some context on which function(s) necessitated this change? It might be an opportunity for a beneficial refactoring.


disallowed-names = [
"bool",
Expand Down
2 changes: 1 addition & 1 deletion .cursorrules
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
- **Maintain disciplined scope** - Execute only ordered tasks; avoid scope creep that can introduce instability
- **Auto commit and push after each individual task is done.**
- **NEVER use --no-verify when committing. Instead, fix the issues properly instead of bypassing the pre-commit hooks.**
- **Always look for @docs/external-libraries/ when implementing APIs or designing exchange abstractions.**
- **Always look for @docs/external-libraries/ and @docs/fix-specs/ when implementing APIs or designing exchange abstractions.**
- **Periodically renew `TODO.md` for saving current progress and updating the pending tasks.**

---
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Rust CI

on:
push:
pull_request:

env:
CARGO_TERM_COLOR: always

jobs:
build:
name: Build & Test # Consider renaming to "Check" if only cargo check is run
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
# No specific components needed if only cargo check is run,
# but keeping rustfmt and clippy doesn't hurt for future use.
with:
components: clippy, rustfmt

- name: Cache Cargo dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/

key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-packages

- name: Run Cargo Check
run: cargo check --all-targets --all-features --workspace

- name: Check formatting
run: cargo fmt --all -- --check

- name: Run Clippy
run: cargo clippy --all-targets --all-features --workspace
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ repos:
- id: cargo-clippy
name: Cargo Clippy
language: system
entry: cargo clippy --all-targets --all-features --workspace --fix --allow-dirty --
entry: cargo clippy --all-targets --all-features --workspace --fix --allow-dirty
files: \.rs$
pass_filenames: false # Always run, regardless of changed files

Expand All @@ -27,4 +27,4 @@ repos:
language: system
entry: cargo fmt --all
files: \.rs$
pass_filenames: false # Always run, regardless of changed files
pass_filenames: false # Always run, regardless of changed files
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
- **Maintain disciplined scope** - Execute only ordered tasks; avoid scope creep that can introduce instability
- **Auto commit and push after each individual task is done.**
- **NEVER use --no-verify when committing. Instead, fix the issues properly instead of bypassing the pre-commit hooks.**
- **Always look for @docs/external-libraries/ when implementing APIs or designing exchange abstractions.**
- **Always look for @docs/external-libraries/ and @docs/fix-specs/ when implementing APIs or designing exchange abstractions.**
- **Periodically renew `TODO.md` for saving current progress and updating the pending tasks.**

---
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
- **Maintain disciplined scope** - Execute only ordered tasks; avoid scope creep that can introduce instability
- **Auto commit and push after each individual task is done.**
- **NEVER use --no-verify when committing. Instead, fix the issues properly instead of bypassing the pre-commit hooks.**
- **Always look for @docs/external-libraries/ when implementing APIs or designing exchange abstractions.**
- **Always look for @docs/external-libraries/ and @docs/fix-specs/ when implementing APIs or designing exchange abstractions.**

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Consider adding a trailing slash to the @docs/external-libraries/ and @docs/fix-specs/ paths for clarity and consistency.

- **Periodically renew `TODO.md` for saving current progress and updating the pending tasks.**

---
Expand Down
14 changes: 10 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,22 @@ members = [
resolver = "2"

[workspace.package]
authors = ["cognitive-glitch", "Team Rusty Trading", "Filippo Neysofu Costa"]
version = "0.7.3"
authors = ["cognitive-glitch", "Rusty Trading Team", "Filippo Neysofu Costa"]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Consider standardizing the team name to either "Rusty Trading Team" or "Team Rusty Trading" for consistency across the project.

version = "0.7.4"
edition = "2024"
homepage = "https://github.com/rusty-trading/rusty-fix-engine"
repository = "https://github.com/rusty-trading/rusty-fix-engine"
description = "FIX & FAST (FIX Adapted for STreaming) in pure Rust"
publish = true
readme = "README.md"
keywords = ["fix", "fast", "protocol", "finance", "fintech"]
categories = ["network-programming", "parser-implementations", "encoding"]
keywords = ["fix", "fix-protocol", "fast", "trading", "hft"]
categories = [
"network-programming",
"parser-implementations",
"encoding",
"finance",
"development-tools",
]
license = "Apache-2.0"

# Workspace-wide linting configuration
Expand Down
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

</div>

RustyFix is a free and open source FIX engine implementation forked from [FerrumFIX](https://github.com/ferrumfix/ferrumfix) in Rust. Please note that it's currently under heavy development and wildly unstable, so all interested parties should refrain from using it in production prior to its 1.0 release. Performance and full adherence to the FIX protocol are nevertheless core goals of the project which, if anything, might serve as a useful foundation for others' work.
RustyFix is a free and open source FIX engine implementation forked from [FerrumFIX](https://github.com/ferrumfix/ferrumfix) in Rust. Please note that it's currently under heavy development and wildly unstable, so all interested parties should refrain from using it in production prior to its 1.0 release.

- [RustyFix](#rustyfix)
- [About](#about)
Expand All @@ -16,8 +16,6 @@ RustyFix provides parsing, validation, error recovery, and (de)serialization for

![FIX Technical Standard stack](https://github.com/rusty-engine/rustyfix/raw/main/docs/FIX-Technical-Standard-Stack.png)

The above illustration succintly describes the full scope of FIX and it serves as a reference point for all modern FIX implementations. RustyFix aims with total compliance... *eventually*. Engineering efforts are initially focused on core features e.g. tag-value encoding and FIX 4.4.

RustyFix enforces strict separation of concerns according to the OSI model, as reasonably allowed by the FIX specification.

- Layer 4 (Transport Layer): `rustyfixs`.
Expand All @@ -41,7 +39,7 @@ You don't have to understand the whole tech stack to use a single layer; in fact
- [x] Simple Binary Encoding (SBE). [Working on validations]
- [x] Google Protocol Buffers (GPB). [Working on validations]
- [X] JavaScript Object Notation (JSON).
- [ ] Abstract Syntax Notation (ASN.1).
- [x] Abstract Syntax Notation (ASN.1). [Working on validations]
- [x] FIX Adapted for STreaming (FAST).

## Legal
Expand Down
Loading
Loading