Open xhyrom opened 1 year ago
Is there a list or is anyone able to make a list of packages that are not yet resolved or implemented? This issue thread is becoming too large to keep track of which packages are still outstanding.
That exists in the top comment on this issue, but it probably deserves to be the most prominent part instead of the list of functions. I'll move it to the top.
@190n if you could add msgpackr to the list as well please, although will be ok once Array::New is done I expect. Really appreciate all your efforts on this.
Right, thanks for the reminder.
@190n thoughts on also adding re2
to the list (given that issue https://github.com/oven-sh/bun/issues/12560 was marked as a duplicate of this one)?
@190n also node-pty
, following these comments:
how much time could it take to support the "gl" module?
@190n if you could add msgpackr to the list as well please, although will be ok once Array::New is done I expect. Really appreciate all your efforts on this.
For anyone else who's confused by this - technically msgpackr
does support Bun, it's just the "native acceleration" feature that msgpackr
has that won't work.
@190n if you could add msgpackr to the list as well please, although will be ok once Array::New is done I expect. Really appreciate all your efforts on this.
For anyone else who's confused by this - technically
msgpackr
does support Bun, it's just the "native acceleration" feature thatmsgpackr
has that won't work.
so there's been investigation by @190n back in July when we first found this, and you can find more in #12754 with their findings. One of the great things with msgpackr is the native acceleration, and that needs v8::Array::New
One of the great things with msgpackr is the native acceleration, and that needs v8::Array::New
As an update on that, I'm not sure if we'll be able to support their specific use of v8::Array::New
, because they're using it by casting an array of NAPI values into an array of V8 values. That only works if NAPI values are V8 values, which is true in Node but not Bun. So while we can get v8::Array::New
working for packages using the V8 API normally, for msgpackr specifically I think the solution would be more along the lines of finding out why they detect us as Node and stopping that from happening. So ideally their native acceleration can still work in Bun but it should be using exclusively NAPI functions instead of mixing NAPI and V8.
Same issue for @newrelic/native-metrics and symbol lookup
There is also missing symbols for unix-gram
(v8::Integer::New(v8::Isolate*, int)
at least).
Affected packages
better-sqlite3
node-canvas@v2
(node-canvas v3 is supported)midi
libxmljs
bignum
zeromq
node-libcurl
bson-ext
heapdump
@datadog/native-metrics
tiny-secp256k1
tree-sitter-c-sharp
chacha-native
@sentry/profiling-node
pdfjs-dist
gl
leveldown
/pouchdb
sleep
cpu-features
odbc
msgpackr
re2
node-pty
i2c
Functions implemented
v8::Isolate::GetCurrent()
v8::Isolate::TryGetCurrent()
v8::Isolate::GetCurrentContext()
v8::Number::New(v8::Isolate*, double)
v8::Number::Value() const
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const
v8::api_internal::ToLocalEmpty()
v8::String::Length() const
v8::External::New(v8::Isolate*, void*)
v8::External::Value() const
v8::Object::New(v8::Isolate*)
v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)
v8::Object::SetInternalField(int, v8::Local<v8::Data>)
v8::Object::SlowGetInternalField(int)
v8::HandleScope::HandleScope(v8::Isolate*)
v8::HandleScope::~HandleScope()
v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v8::Signature>, int, v8::ConstructorBehavior, v8::SideEffectType, v8::CFunction const*, unsigned short, unsigned short, unsigned short)
(only when all parameters pastdata
are their default values)v8::ObjectTemplate::NewInstance(v8::Local<v8::Context>)
v8::ObjectTemplate::SetInternalFieldCount(int)
v8::ObjectTemplate::InternalFieldCount() const
v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)
(only when no FunctionTemplate is provided)v8::EscapableHandleScopeBase::EscapeSlot(unsigned long*)
v8::EscapableHandleScopeBase::EscapableHandleScopeBase(v8::Isolate*)
node_module_register
v8::Function::SetName(v8::Local<v8::String>)
v8::Value::IsBoolean() const
v8::Boolean::Value() const
v8::Value::FullIsTrue() const
v8::Value::FullIsFalse() const
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::EscapableHandleScope::~EscapableHandleScope()
v8::Value::IsObject() const
v8::Value::IsNumber() const
v8::Value::IsUint32() const
v8::Value::Uint32Value(v8::Local<v8::Context>) const
v8::Value::IsUndefined() const
v8::Value::IsNull() const
v8::Value::IsNullOrUndefined() const
v8::Value::IsTrue() const
v8::Value::IsFalse() const
v8::Value::IsString() const
v8::Boolean::New(v8::Isolate*, bool)
v8::Object::GetInternalField(int)
node::AddEnvironmentCleanupHook(v8::Isolate*, void (*)(void*), void*)
node::RemoveEnvironmentCleanupHook(v8::Isolate*, void (*)(void*), void*)
v8::HandleScope::CreateHandle(v8::internal::Isolate*, unsigned long)
v8::internal::IsolateFromNeverReadOnlySpaceObject(unsigned long)
v8::Array::New(v8::Isolate*, v8::Local<v8::Value>*, unsigned long)
v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
Major areas of unimplemented functionality
bun install
fixes (need to pass node-gyp the right version)What version of Bun is running?
0.8.0+ad326b77342dd3d8585a30b7da803d32f9c11fe2
What platform is your computer?
Linux 6.4.10-artix1-1 x86_64 unknown
What steps can reproduce the bug?
What is the expected behavior?
Run as normally
What do you see instead?
Additional information
Related thread: 1144181146809270332 Message: https://discord.com/channels/876711213126520882/1144181146809270332/1144184224006557747
All versions are affected