Rather than loading the raw approximate decompile code into SQLite, you'll likely get better results using Ghidra directly with tool calls through an MCP adapter. This is especially important when the analysis tracing fails, like with some complex indirect jump patterns with vtables. Xrefs and pattern searches are of course natively supported, and you can load in memory snapshots.
A simple "/goal analyze this codebase, assign names for each function, and creates named structs for parameters." works well, even with quite weak agents. Remember, parsing through heaps of text is their forte!
This setup also works for more exotic non-x86 architectures with more dynamic code loading, like PS2, N64, etc.
"Honesty" is what crossed the threshold for me. It's pretty weird to spend 12 years on something and not bother to write the thousand word history yourself.
Reverse engineering and decompilation is not currently blocked by the models, leading to the proliferation of LLM-assisted decomps/recomps. If you ask it to find bugs you're more likely to get a refusal, but simply pointing an LLM at a Ghidra MCP server and telling it to trace program flow, rename functions, or answer questions behaves like normal.
I agree on active devices, and most of the ecosystem is similarly frustrating to deal with.
And why rely on someone else's software for this in 2026? I vibecoded a Rust+Starlark zigbee hub software that uses a few MB of RAM on my router and can directly dispatch HTTP for alerting, as well as exposing prometheus metrics. Zigbee2MQTT apparently wants several hundred MB of RAM.
For passive monitoring, I have six water leak sensors and two temperature/humidity sensors.
The crucial thing is that I can fix it if it breaks. I can debug the low level network packets, support whatever hardware I want, and not have to rely on someone else's cloud ecosystem.
Wine-style PS5 emulation has advanced far enough that I would bet money on there being a pirated GTA6 PC release based on the PS5 version available within six months.
Given how women initiate most divorces, it's probably best to set it up so they are the proposing side.
But this isn't raw Gale-Shapley-- the participants aren't ranking all hundreds/thousands of others. In particular, the preference matrix is based on identical mutual compatibility scores, so there's a unique stable solution (not multiple stable ones!), and there's no "side" that benefits, since the solution is identical no matter who does the "proposing".
If stats from dating websites are to be believed, all women tend to flock on all the same tiny percentage of men and ignore the rest. If women initiate, I’m afraid you will see only a few men getting any pairing. Men are likely to be less picky as we see in the wild.
> If stats from dating websites are to be believed, all women tend to flock on all the same tiny percentage of men and ignore the rest
This is absolutely not an accidental phenomenon, this is the optimal outcome for dating apps, because that's the only way to prevent women from finding what they are looking for too quickly (and then leaving the app).
I have been in the space for several years - believe me:
NO dating executive thinks like "women leaving too early because they found what they searched". This sentence does not exist in any of the teams.
Instead, they fear that women are leaving too early because of traffic they bought and that they have a bad experience and leaving, so they are no more a magnet to other males to swiper their credit card for a new subscription.
> If stats from dating websites are to be believed, all women tend to flock on all the same tiny percentage of men and ignore the rest.
These are on platforms where you have profile pics and jobs, front and center on your profile, and the algorithm learns from your preferences based on that. The questions on this platform seem to suggest that the algorithm matches based on anything but that, so perhaps we have different, more open-minded outcomes on what a good partner for someone is like rather than who the ideal man/woman is like.
In the UK male plus joint is roughly the same as female.
You also need to take the reasons into account as well as why. There are multiple reasons for this. The better off partner has more to lose from divorce, women tend to get custody of children, they might have different feelings of obligation to keep a marriage going (I cannot extrapolate this to other men, but I felt an obligation not to file for divorce until I had exhausted all other possibilities), social pressures and responses are different, etc.
If the goal is successful relationships, then probably?
If I have 10/10 love for Halle Berry, and she has 4/10 love for my Jeff-Bezos-looking ass, it's the 4/10 that's going to dictate whether we live happily ever after. So our mutual compatibility is probably well below 10/10.
I don't think you can measure love at all, and certainly not guess it based on some info you can type into your phone, so that's rules out before we even get started.
It creates multiple versions of functions referencing SIMD and lifts the dispatch switching cost to their callers.
> The AST rewrite creates multiple specialized copies of functions, variables, and types that mention simd types, where simd types are replaced with references to size-specialized types in simd/internal/bridge. Each of these bridge types is defined as an archsimd type, but with a restricted set of methods. The specialized functions, variables, and types acquire a suffix of the form @simdNNN, where NNN is either a vector length (128, 256, or 512) or 0, indicating emulation. Functions that mention simd internally, but not in their signature, are converted to wrappers that switch on the SIMD level detected at program start, and call the appropriate specialized version of that function. Specialized functions call other specialized functions directly without dispatch overhead (and perhaps with inlining). This rewrite strategy was chosen as a compromise between code duplication and SIMD performance; the overhead is hoisted as high as necessary to avoid dispatch within SIMD computations, but not higher. If SIMD dispatch appears “too low” in a computation, a gratuitous mention of a simd type will move it upwards, as in this example:
Binary size only scales for the simd-touching platforms, with scaling depending on platform. Each platform gets emulation+number-of-variants. Emulation is there as an option, primarily for testing (do you trust us? I don't trust us). So wasm is 2x, amd64 is 4x, arm64 is currently 2x but should be 4x in the near future. ppc64 ought to be 2x, maybe 3x, don't know their variants story. Loong64 will be 3x. But only the SIMD-touching stuff is replicated, and N-1 copies of the replicated code are never executed by a given program execution.
SVE and RVV, because they are "scalable", may end up with a larger amount of replication.
Go uses fixed-size stack frames, so spill space is fixed size, etc. We could "just" fix this limitation, or we could generate multiple sizes for what actually exists in the wild, with a masked implementation for longer. So, SVE would end up with 0 (emulation), 128, 256, and 512-masked, plus (as arm64) would also have NEON and NEON-noclmul (Raspberry Pi). I'm not sure what sizes exist for RVV.
This is a solid improvement over Needle 2, which I tried using for a tool-calling interface to a Runescape database site. Unfortunately it's still not quite capable enough for my target compared to FunctionGemma.
Thanks for testing Needle out! I'd be very interested in hearing more about the finetuning setup to see how we can make both the library's finetuning setup and the model better.
A simple "/goal analyze this codebase, assign names for each function, and creates named structs for parameters." works well, even with quite weak agents. Remember, parsing through heaps of text is their forte!
This setup also works for more exotic non-x86 architectures with more dynamic code loading, like PS2, N64, etc.
reply