Our Canonical JSON implementation precedes some standardization efforts, and our float representation differs from [the most polished one](https://github.com/gibson042/canonicaljson-spec) (only one with proper spec, tests suite, and reference implementation in Go). We are looking into replacing our JavaScript and Python implementations with a single one in Rust. We could take advantage of this rewrite to align our implementation with a specification, instead of having our own (matrix.org also has a different one, etc.). If no float has ever been published among the Remote Settings data, then we're good. If there are floats (or were recently), then we should investigate with data authors if their data could hit one of the divergences (namely scientific notation with exponents), and/or if there is a migration path. But for now, if we forbid them (ie. server returns HTTP 400), then we make sure that the problem does not get worse. Floats can be transported in strings anyways.
Bug 1659419 Comment 0 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
Our Canonical JSON implementation precedes some standardization efforts, and our float representation differs from [the most polished one](https://github.com/gibson042/canonicaljson-spec) (the only one with proper spec, tests suite, and reference implementation in Go). We are looking into replacing our JavaScript and Python implementations with a single one in Rust. We could take advantage of this rewrite to align our implementation with a specification, instead of having our own (matrix.org also has a different one, etc.). If no float has ever been published among the Remote Settings data, then we're good. If there are floats (or were recently), then we should investigate with data authors if their data could hit one of the divergences (namely scientific notation with exponents), and/or if there is a migration path. But for now, if we forbid them (ie. server returns HTTP 400), then we make sure that the problem does not get worse. For new use-cases, floats can be transported as string (or integer + denominator)