Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
obi1kenobi
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
6 ms
·
31.
▲
by
obi1kenobi
3y ago
I'm the author. Among other things, it's a distance problem -- WiFi can go through walls when the router is right there. But distance attenuates the signal as distance squared, and in this case we're talking about hundred+ ya
32.
▲
by
obi1kenobi
3y ago
The work you cited is very impressive and very welcome. But you seem to be implying that `std::unordered_map` is the default choice one would use, which in my experience is not accurate -- it is well-known to have serious perf shortcomings,
33.
▲
by
obi1kenobi
3y ago
Two problems I see here, based on the research I've done in high-performance graph algorithms: - It's hard to find a "good-enough" graph implementation. The best hashtable is only a handful of percent better than the bui
34.
▲
by
obi1kenobi
3y ago
As someone who did a lot of work with graphs, "why don't programming languages have a built-in graph data type?" is a question I’ve been asked a million times. I'm thrilled I'll be able to point folks to a much more
35.
▲
by
obi1kenobi
3y ago
Trustfall queries are also how the Rust semver linter `cargo-semver-checks` works. It's cool to see more projects putting it the engine to good use! I'm the Trustfall maintainer, happy to answer questions about the query engine or
36.
▲
by
obi1kenobi
3y ago
Thank you! I love mentoring people, and it was a privilege to work with these particularly talented and hard-working undergrads.
37.
▲
by
obi1kenobi
3y ago
I'm curious too! And I also agree that semver in _most_ languages is a mess. I'm sure someone could build a semver-checker for Python or JS or Java or whatever, and I'd even be willing to help them and walk them through how c
38.
▲
by
obi1kenobi
3y ago
> Isn't it the same release-verification legwork either way? No, as it turns out it very much is not even close to the same amount of legwork. > I read this as I don't think your attempt at a re-statement is accurate to the
39.
▲
by
obi1kenobi
3y ago
As a co-author of the post, I wouldn't agree with that summary. If semver suggests a release isn't breaking, in Rust it overwhelmingly isn't breaking. Around 3% of the time, assuming you use every obscure bit of public API
40.
▲
by
obi1kenobi
3y ago
cargo-semver-checks checks almost entirely only major.minor versioning issues. Rust's flavor of semver doesn't impose or demand any particular rules about what is a minor and what is a patch version. So I'm a bit confused abo
41.
▲
by
obi1kenobi
3y ago
All those rules are derived from a much smaller set of rules that are easier to understand. In Rust, those rules are more or less "breaking changes require a major version, unless the breaking change could have been avoided by the call
42.
▲
by
obi1kenobi
3y ago
Speaking for myself in Rust, I blindly update everything and fix what's broken. My projects tend to have substantial test suites, so if the compiler thinks it's fine and the tests think it's fine, it's probably fine. S
43.
▲
by
obi1kenobi
3y ago
Of course! `cargo-semver-checks` is not a replacement for testing. It's exactly the kind of tool you describe: > Knowing that something is _definitely_ a breaking change because an API was removed or modified in an incompatible way
44.
▲
by
obi1kenobi
3y ago
If you'd like to dig deeper, here are some links: - cargo-semver-checks: https://github.com/obi1kenobi/cargo-semver-checks - Trustfall query engine, which powers cargo-semver-checks: https://github.com&
45.
▲
by
obi1kenobi
3y ago
Post co-author + `cargo-semver-checks` maintainer here, AMA. What we did: 1. Scan Rust's most popular 1000 crates with `cargo-semver-checks` 2. Triage & verify 3000+ semver violations 3. Build better tooling instead of blaming huma
46.
▲
by
obi1kenobi
3y ago
In Rust, this is often done by using optional features, and usually features named like `unstable-<something>`. They are a form of conditional compilation: people that don't opt in don't see that code, and people that do opt
47.
▲
Instrumenting Axum Projects
(determinate.systems)
3 points
by
obi1kenobi
3y ago
|
0 comments
48.
▲
Suno Chirp: AI music with vocals
(suno-ai.notion.site)
21 points
by
obi1kenobi
3y ago
|
0 comments
49.
▲
by
obi1kenobi
3y ago
Interestingly, even though it's a breaking change, breaking inference is explicitly defined to not be a semver-major change in Rust: https://predr.ag/blog/some-rust-breaking-changes-do-not-requ...
50.
▲
by
obi1kenobi
3y ago
Both can be true at the same time, and I believe that to be the case. The issue in Rust isn't that semver isn't doing the right thing for us. It's that every so often (maybe as rarely as 2-3 times per year for the entire Rus
51.
▲
by
obi1kenobi
3y ago
cargo-semver-checks is not dependent on whether code paths are used, because it doesn't analyze from the "use" side. It analyzes from the "what API is exposed" side. You can think of cargo-semver-checks as an automa
52.
▲
by
obi1kenobi
3y ago
Tool and study coauthor here. The "more than 1 in 6" ratio is purely in the top 1000 most-downloaded crates on crates.io, which are the only ones we tested. I'm glad to hear of your positive experience with semver. Unfortunat
53.
▲
by
obi1kenobi
3y ago
cargo-breaking is cool! I only learned of it well after I had published cargo-semver-checks, but your logo is awesome and the tool was definitely a good idea, obviously. If you ever feel like doing more work in the space, I'd love to w
54.
▲
by
obi1kenobi
3y ago
xD
55.
▲
by
obi1kenobi
3y ago
Author here. The same overall approach should work for Python and most other languages as well! If you or anyone else is interested in building such a tool, ping me and I'd be happy to help you get started.
56.
▲
by
obi1kenobi
3y ago
Thank you!
57.
▲
by
obi1kenobi
3y ago
Exactly right. Most accidental semver violations aren't noticed by anyone, let alone most people. But every so often, an accidental semver violation causes ecosystem-wide breakage and lots of pain for both maintainers and users. The go
58.
▲
by
obi1kenobi
3y ago
cargo-semver-checks is in the process of being merged into cargo itself, which would make the default publishing process into essentially exactly what you describe! Running `cargo publish` would check for semver issues and alert if it finds
59.
▲
by
obi1kenobi
3y ago
Nice summary! I'd also add that part of the public interface you're on the hook for is never explicitly written down in the source code, and is instead derived automatically by the compiler based on a set of rules. There are exc
60.
▲
by
obi1kenobi
3y ago
Tool author here! I wrote a blog post that explains the motivation for building cargo-semver-checks here: https://predr.ag/blog/toward-fearless-cargo-update/ TL;DR: Semver is particularly tricky in Rust and can be
More ›