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

[table flipping] Rewrite everything in Rust - keep the name though #76

Open
blefaudeux opened this issue Jan 26, 2025 · 2 comments
Open
Assignees

Comments

@blefaudeux
Copy link
Contributor

Looks like some stability issues cannot be completely nailed, stack too big and not everything is in scope. The current end to end stack covers
python, go (interfaced with gopy) and C for some lower level libraries (like libvips)

Salient issues are that

  • speed is lower from the python side post golang 1.18, hard to address without diving deep in gopy
  • govips doesn´t expose the whole libvips interface, and while all vips calls can error out and these are caught, vips can hard crash on some images when trying long enough

It is possible to remove the libvips dependency and stick to pure Go on the image processing side, but we become CPU bound in this case.

Moving to Rust -and sticking to Rust native code- could remove one layer in this stack (no more C give or take), and benefit from more compile time guarantees

@blefaudeux blefaudeux self-assigned this Jan 26, 2025
@blefaudeux
Copy link
Contributor Author

a proof of concept is on the ben/rust branch, running already without the python integration, currently bulletproofing an initial skeletton

@blefaudeux
Copy link
Contributor Author

feels familiar https://slavomirj.medium.com/why-vips-and-go-its-not-a-good-match-for-production-environment-ddb2b1c34951

proof of concept running in Rust, doing 70% of the existing go code, looks like it's a more reasonable future

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant