Comments (3)
Addendum: I just want to mention that this is particularly relevant in cases where nanosecond timestamps or integral numeric IDs are being stored in json. Nanosecond timestamps allow a bit of fuzzyness (if the timestamp is off by a microsecond, that's often not the end of the world), but 64-bit integral IDs need to match exactly
from glaze.
Yeah number parsing is going to change soonish (likely sometime next week). This will get fixed. Right now I would expect values between -2^53 to 2^53 would work properly since those should all be exactly representable. Values were originally parsed in as floating point numbers because we wanted to allow stuff like 1.7e10 which is handled by default in float parsers but typically not int parsers. We could quickfix this by parsing them as the proper type but it would break scientific notation and we are changing number parsing anyways.
I'm chilling in barbados right now but I'll fix this when I get back provided someone else doesn't get to it first. This is quite a big issue since as you pointed out 64bit hashes are broken when represent ed as ints as it's common for them to exceed the bounds of exactly representable ints in 64bit floating point numbers.
from glaze.
Fixed in 6e7cab3
from glaze.
Related Issues (20)
- Using an enum class as a template parameter will silently break reflection HOT 2
- Unable to read variant when default initialized to different variant index HOT 1
- How do you read [] JSON with your lib HOT 3
- Glaze will not link under arm 32 bit gcc. HOT 3
- Raw binary support HOT 10
- Build failure when including Windows.h header HOT 1
- Column-wise csv doesn't produce proper output when one of the fields is empty HOT 2
- Fail to generate perfect hash for reading when there are one or more unicode keys in struct HOT 7
- Support for file_include and hostname_include when using reflection HOT 1
- `write_json` seems to be broken in release v2.0.0 HOT 6
- Add validation mechanisms for writing JSON. Validate against a specification. HOT 1
- Reflection broken for write_json with const objects since 2.0.0 HOT 2
- Handle carriage return '\r' in CSV new lines
- Thoughts on untagged binary format HOT 4
- Compression helpers for BEVE and parallel compression
- Compilation error when setting read options HOT 2
- `write` fails for a specfic case using `std::variant` HOT 1
- Add end of buffer checks for invalid binary HOT 1
- call to consteval function 'glz::get_name<&ProjectSettings::identity>' is not a constant expression HOT 3
- cmake doesn't look for eigen HOT 3
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 glaze.