romgrk / node-gtk

GTK+ bindings for NodeJS (via GObject introspection)
MIT License
493 stars 41 forks source link

Fix introspected (u)int64 types to use BigInt #323

Open peat-psuwit opened 2 years ago

peat-psuwit commented 2 years ago

Currently, we're unable to precisely represent a value bigger than Number.MAX_SAFE_INTEGER = 2 ** 53.

const gi = require('node-gtk')
const Gst = gi.require('Gst', '1.0')

console.log(Gst.CLOCK_TIME_NONE)
// Should print: 18446744073709551615
// Currently print: 18446744073709552000

Gjs also has this issue [1], so I'm filing this bug to bring awareness to this problem.

Note that on the argument side, it's simple: just accept both Number and BigInt (see #322).

[1] https://gitlab.gnome.org/GNOME/gjs/-/issues/271

romgrk commented 2 years ago

Closed by #322

peat-psuwit commented 2 years ago

Err... Sorry, should have been more clear. This issue is about getting big uint64 value from introspected object/call. The PR (#322), however, only solve passing BigInt as an argument to introspected call. (It doesn't even have support for setting BigInt to a property.)

Please re-open this issue.