Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rust roadmap #8426

Open
reidlai opened this issue Feb 28, 2024 · 2 comments
Open

Rust roadmap #8426

reidlai opened this issue Feb 28, 2024 · 2 comments
Labels
kind/Feature question Further information is requested valuestream/Meltano

Comments

@reidlai
Copy link

reidlai commented Feb 28, 2024

Feature scope

CLI (options, error messages, logging, etc.)

Description

Is there any roadmap for using rust to build tap, target, transform and map?

@edgarrmondragon
Copy link
Collaborator

Hey @reidlai!

Nothing as concrete as a roadmap but some folks in the community and myself have done interesting PoCs for Rust-based connectors.

See for example:

In the first example, there's even a toy target published to PyPI thanks to Maturin1 so it's something you could already add to Meltano! (Taking a personal note to add an example of that to the README).

That said, the main takeaways from those PoCs are:

  1. IO is slightly more performant, perhaps in large part because we're deserializing into an struct. The singer-sdk is surely leaving some performance on the table in that regard. See feat: Faster JSON dumps in format_message with msgspec sdk#1784.
  2. Rust and Python are miles apart in terms of beginner friendliness, so it's unclear how much the community could participate in creating novel connectors.
  3. The point above makes me think that one interesting approach would be to write the most demanded targets and mappers in Rust with CLIs published to PyPI.

I'm curious what you think of that, and whether you have expectations of what part Rust would play in Meltano plugins.

Footnotes

  1. Build and publish crates with pyo3, rust-cpython, cffi and uniffi bindings as well as rust binaries as python packages with minimal configuration. https://github.com/pyo3/maturin.

@edgarrmondragon edgarrmondragon added the question Further information is requested label Feb 28, 2024
@reidlai
Copy link
Author

reidlai commented Mar 29, 2024

Actually python is not efficient compared with rust. I know that I can use rust to create tap and target using rust...but I can foresee if we can use rust to build custom mapping and transformation, meltano can run very fast without GC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/Feature question Further information is requested valuestream/Meltano
Projects
None yet
Development

No branches or pull requests

2 participants