Skip to content

Oxidise#51

Merged
Tom-Willemsen merged 13 commits intomainfrom
oxidise
Mar 30, 2026
Merged

Oxidise#51
Tom-Willemsen merged 13 commits intomainfrom
oxidise

Conversation

@rerpha
Copy link
Copy Markdown
Collaborator

@rerpha rerpha commented Mar 24, 2026

Convert saluki to rust.

Changes to note:

  • listen and consume have been merged, as they were quite similar anyway. README and --help should clarify how to use consume (which is aliased to listen for muscle memory's sake!)
  • play has not been carried over as I ran out of time to be able to call this personal development. rewrite play in rust #50 exists to add it when we need to use it again.
  • howl is a bit faster than python, though I haven't tried the "cheat" way of only constructing one set of det values but sending them x times a frame.
  • have added a dockerfile so you don't actually need rust installed to use saluki.
  • I haven't gone mad with unit tests as again I've run out of time (I know I know TDD and so on...)

also note that the CI is currently failing at the time of writing but only because one of the apt mirrors seems to be 404ing? working now

I may also need a hand benchmarking howl plz @Tom-Willemsen

@rerpha rerpha marked this pull request as ready for review March 25, 2026 15:04
@rerpha rerpha requested a review from Tom-Willemsen March 25, 2026 15:04
Copy link
Copy Markdown
Member

@Tom-Willemsen Tom-Willemsen left a comment

Choose a reason for hiding this comment

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

I'll give this a more thorough functional test tomorrow...

src/howl.rs Outdated
fbb.finished_data()
}

#[allow(clippy::too_many_arguments)]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I know this is pretty much exactly how I'd written it in the python too, with a zillion arguments, but I think the more extensible approach is to pull all of the "howl config" arguments into a HowlConfig struct, instantiated once in main, and passed through as &HowlConfig to anywhere that needs it.

This avoids multiple methods all taking a similar huge list of arguments.

Copy link
Copy Markdown
Collaborator Author

@rerpha rerpha Mar 30, 2026

Choose a reason for hiding this comment

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

do you think it'd make sense to have

A) one struct for the entire howl command's arguments
B) one struct for common args ie. an EventMessageConfig which is used from main -> howl -> produce_messages -> generate_fake_events? It seems inefficient to pass all of the args given to howl to every func down the chain?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I was thinking both, but you could combine both approaches by including a EventMessageConfig within a HowlConfig struct

@rerpha rerpha requested a review from Tom-Willemsen March 30, 2026 14:58
@Tom-Willemsen Tom-Willemsen merged commit 68083a0 into main Mar 30, 2026
3 checks passed
@Tom-Willemsen Tom-Willemsen deleted the oxidise branch March 30, 2026 17:48
@Tom-Willemsen Tom-Willemsen mentioned this pull request Mar 30, 2026
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants