- Regression vs 4.0.7:
onMessagecallbacks are now invoked vianapi_make_callbackinstead of plainnapi_call_function. This restores the behaviour of the old NaN implementation, which callednode::MakeCallback(and therefore ran a microtask checkpoint and fired async hooks after each callback). Without this, adapters that queue work via Promises orsetImmediateinsideonMessagecould not keep up with incoming frames, producing "evaluation overloaded" warnings and "bad frame" errors (reported against ioBroker.e3oncan). - Exceptions thrown by
onMessageoronStoppedcallbacks are now forwarded to Node.js vianapi_fatal_exception(matching the oldNan::FatalExceptionbehaviour) instead of being silently dropped with the JS exception left pending, which could corrupt subsequent frame objects.
- Migrated native addon from
nantonode-addon-api(N-API). The binary is now ABI-stable across Node.js major versions: a module compiled for Node.js 20 loads unchanged on Node.js 22 and 24 without recompilation. This resolves a common issue where upgrading Node.js silently broke downstream packages (e.g. ioBroker adapters) until a manual rebuild was performed. The JavaScript API is unchanged.
Dockerfile.build-testfor verifying compilation on Linux without a physical CAN interface.
- Bump brace-expansion from 1.1.11 to 1.1.12.
- Upgrade NAN.
errboolean type tocan.d.tsMessage.