Comments (5)
Ah, commit 3d4430b / issue #113.
Wouldn't you consider this a backwards incompatible change? I'd be pretty nervous if two rust programs could miscommunicate url hashes (e.g. via network or via serialisation) just because they have a single patch version difference in a dependency.
from rust-url.
I don’t know, are hash values significant? I’ve always thought of them as only meaningful for comparison with each other within one execution of a program and had not considered they could be relied on in anything serialized. Are they guaranteed to be the same on architectures? (Bit depth, endianness, etc.)
from rust-url.
Interesting question.
Scenario: a bunch of website-hitting applications (let's say they're all written in rust) which contact a central caching server before actually making their requests. You need to choose a suitable cache key.
My personal expectation would be that using a hash would be acceptable, since that's what hashmaps do. I'd (unthinkingly) expect this to work consistently for all minor/patch variations on library versions, and across different architectures.
However, reading the documentation of the Hash
trait gives no hints about whether this is expected or not. Perhaps this is something to raise on rust internals. Thoughts?
from rust-url.
I've made my peace with this change after some discussion on rust internals - https://internals.rust-lang.org/t/stability-of-hash-values/2241.
It seems like my understanding of 'hash' is different to the popular one, so I'll see if I can improve the documentation of the hash trait to better spell it out for people like me.
from rust-url.
The serialization of URLs should be much more stable (since it affect interoperability and has a spec) so I’d recommend basing your hashing on that rather than the built-in Hash
trait.
To avoid allocating a serialized string, you could have a specialized std::fmt::Write
implementation that does the hashing.
from rust-url.
Related Issues (20)
- Mark Origin::unicode_serialization as deprecated?
- Is it possible to force the %-encoding of `+`? HOT 1
- Release new version of `data-url` HOT 1
- idna::punycode::encode_str() wrong conversion ? HOT 2
- Add parameter spaceAsPlus to ByteSerialize
- Incorrect parsing of Windows drive letter quirk
- Invalid IPv4 but parsing success HOT 1
- URL http:www.google.com is passed as validated HOT 1
- Host should implement deserialize to parse strings
- JOIN functionality not working HOT 4
- URL validity change between 2.2 and 2.3. HOT 2
- Documentation for IDNA configuration options should explain use cases
- Feature request: add parser boolean option to leave relative paths in the URL.
- Neither punycode::encode_str nor Config::...::to_ascii return expected results for single Unicode char and "EXAMPLE" HOT 3
- `Url::from_file_path()` incorrect handling of backslash on linux
- `=` is not being escaped as query value HOT 2
- [DataUrl] Unable to parse application/json;utf8 containing # HOT 1
- Feature request: provide separate struct for URL which is can-be-base
- Error: 🚫 Building project failed: error[E0583]: file not found for module `origin`serde, interproc... HOT 2
- Poping a path segment removes slash separator HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-url.