-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Brings initial Rust support to john #5204
Comments
I have mixed feelings about this. On one hand, I think Rust is a good language and a good fit for future projects like ours (not without drawbacks, though). On the other hand, I think it'll actually hurt our existing project if we start adding a little bit of Rust (and a dependency on it for building the corresponding functionality). We would have the drawbacks mostly without the advantages. So for this existing project, maybe if there's ever existing non-trivial third-party code in Rust that we want to reuse. For example, someone external to our project develops and maintains a complex candidate passwords generator in Rust, and it's so good we want to have it, then I wouldn't object to us adding it as an optional feature (with optional build-time dependency on Rust). Just for the good noise and bad flames in the community, probably no, but I'm happy to hear you @claudioandre-br are learning Rust and practicing with integrating its usage in our tree. Those skills are going to be useful, whether for this project or elsewhere. I wish I had the time to learn Rust now, too. |
Potentially.
And so on. Drawbacks and improvements are expected, as always. As one example, if you really want to play with A quick quest: does anyone remember anything in the |
For tiny things like this, I think it's actually preferable to stay with sometimes out-of-date but reviewed and tested by us, than to have easy auto-updates. Such micro-dependencies remind me of what I read about the JavaScript/npm world, where it got crazy, and where a security compromise of a trivial package could quickly propagate to lots of large and important projects. So yes:
For these, we should be copying their code. Since they'd be so performance critical for us, chances are we'd also customize e.g. for our expected input lengths or for not knowing the length in advance. (One advantage of our current trivial hash functions e.g. such as in |
As a side note:
|
We don't need this change nor even discussion currently. We have plenty of real issues and goals. Closing. We can always revisit/reopen if and when needed. |
Having support for formats as loadable modules, it would be more convenient to have optional stuff like a few not-so-common formats sitting aside with whatever external dependencies they have. Rust can produce such loadable module for sure, e.g. for sqlite3. Currently Rust cannot be bootstrapped with a C compiler. It is a huge drawback for some users. But there is a work-in-progress GCC Front-End for Rust. Rust on Linux requires kernel >= 3.2 since release 1.64.0 in 2022. In some cases this requirement might be soften. Anyway it would add worries on old systems. I dislike external package managers for regular usage. Roughly for me, a package can be shipped through Debian or together with john (and I expect it to be reviewed). But I use (I mentioned I tried Rust's procedural macros seem very promising for john in my opinion: it might be possible to implement transformations on code that I do or plan to do in john-devkit. It might provide abstractions in code that cannot afford run-time abstractions. (I don't know or use Rust.) |
If merged, one should:
struct fmt_main fmt_rust
as usualrust
is installed;Done or doing:
valid()
that was developed in rust and configure/make are detecting if 'rust' is present.Why:
[1] at the top of the C file:
The text was updated successfully, but these errors were encountered: